algo
This commit is contained in:
111
Importer/module_inserter.py
Normal file
111
Importer/module_inserter.py
Normal file
@@ -0,0 +1,111 @@
|
||||
import os
|
||||
import csv
|
||||
from PySide import QtGui, QtCore
|
||||
|
||||
|
||||
class SelectorDialog(QtGui.QDialog):
|
||||
def __init__(self, csv_path, title, parent=None):
|
||||
super(SelectorDialog, self).__init__(parent)
|
||||
self.setWindowTitle(title)
|
||||
self.csv_path = csv_path
|
||||
self.data = []
|
||||
self.brand_filter = ""
|
||||
self.model_filter = ""
|
||||
|
||||
# Cargar datos del CSV
|
||||
self.load_csv_data()
|
||||
|
||||
# Crear widgets
|
||||
self.create_widgets()
|
||||
self.create_layout()
|
||||
self.create_connections()
|
||||
|
||||
def load_csv_data(self):
|
||||
"""Carga los datos desde el archivo CSV"""
|
||||
if os.path.exists(self.csv_path):
|
||||
with open(self.csv_path, 'r') as f:
|
||||
reader = csv.DictReader(f, delimiter=';')
|
||||
self.data = [row for row in reader]
|
||||
|
||||
def get_unique_brands(self):
|
||||
"""Obtiene marcas únicas"""
|
||||
return list(set(row['Marca'] for row in self.data))
|
||||
|
||||
def get_models_by_brand(self, brand):
|
||||
"""Filtra modelos por marca"""
|
||||
return [row['Modelo'] for row in self.data if row['Marca'] == brand]
|
||||
|
||||
def create_widgets(self):
|
||||
self.lbl_brand = QtGui.QLabel("Marca:")
|
||||
self.cb_brand = QtGui.QComboBox()
|
||||
self.cb_brand.addItems(self.get_unique_brands())
|
||||
|
||||
self.lbl_model = QtGui.QLabel("Modelo:")
|
||||
self.cb_model = QtGui.QComboBox()
|
||||
self.update_model_combo()
|
||||
|
||||
self.btn_accept = QtGui.QPushButton("Aceptar")
|
||||
self.btn_cancel = QtGui.QPushButton("Cancelar")
|
||||
|
||||
def create_layout(self):
|
||||
layout = QtGui.QVBoxLayout()
|
||||
form_layout = QtGui.QFormLayout()
|
||||
form_layout.addRow(self.lbl_brand, self.cb_brand)
|
||||
form_layout.addRow(self.lbl_model, self.cb_model)
|
||||
|
||||
button_layout = QtGui.QHBoxLayout()
|
||||
button_layout.addWidget(self.btn_accept)
|
||||
button_layout.addWidget(self.btn_cancel)
|
||||
|
||||
layout.addLayout(form_layout)
|
||||
layout.addLayout(button_layout)
|
||||
self.setLayout(layout)
|
||||
|
||||
def create_connections(self):
|
||||
self.cb_brand.currentIndexChanged.connect(self.update_model_combo)
|
||||
self.btn_accept.clicked.connect(self.accept)
|
||||
self.btn_cancel.clicked.connect(self.reject)
|
||||
|
||||
def update_model_combo(self):
|
||||
brand = self.cb_brand.currentText()
|
||||
models = self.get_models_by_brand(brand)
|
||||
self.cb_model.clear()
|
||||
self.cb_model.addItems(models)
|
||||
|
||||
def get_selected_item(self):
|
||||
brand = self.cb_brand.currentText()
|
||||
model = self.cb_model.currentText()
|
||||
for row in self.data:
|
||||
if row['Marca'] == brand and row['Modelo'] == model:
|
||||
return row
|
||||
return None
|
||||
|
||||
|
||||
def select_modulo():
|
||||
csv_path = "/ruta/a/tu/databases/modulos.csv" # Ajusta esta ruta
|
||||
dialog = SelectorDialog(csv_path, "Seleccionar Módulo")
|
||||
if dialog.exec_():
|
||||
selected = dialog.get_selected_item()
|
||||
print("Módulo seleccionado:", selected) # Aquí puedes agregar la lógica de importación
|
||||
|
||||
|
||||
def select_inversor():
|
||||
csv_path = "/ruta/a/tu/databases/inversores.csv" # Ajusta esta ruta
|
||||
dialog = SelectorDialog(csv_path, "Seleccionar Inversor")
|
||||
if dialog.exec_():
|
||||
selected = dialog.get_selected_item()
|
||||
print("Inversor seleccionado:", selected) # Aquí puedes agregar la lógica de importación
|
||||
|
||||
|
||||
# Crear una barra de herramientas para acceder fácilmente
|
||||
toolbar = QtGui.QToolBar()
|
||||
select_modulo_action = QtGui.QAction("Seleccionar Módulo", toolbar)
|
||||
select_modulo_action.triggered.connect(select_modulo)
|
||||
toolbar.addAction(select_modulo_action)
|
||||
|
||||
select_inversor_action = QtGui.QAction("Seleccionar Inversor", toolbar)
|
||||
select_inversor_action.triggered.connect(select_inversor)
|
||||
toolbar.addAction(select_inversor_action)
|
||||
|
||||
# Agregar la barra de herramientas a FreeCAD
|
||||
Gui.addToolBar(toolbar)
|
||||
Reference in New Issue
Block a user