from glob import iglob from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QCheckBox, QComboBox, QDoubleSpinBox, QLineEdit, QPlainTextEdit, QPushButton, QRadioButton, QSpinBox) from ui.crud import (Cell, Combo_Box_Cell_Widget, Crud, Json_External_Dialog_Editor_Cell_Widget) from ui.dialog import Dialog from ui.leak_step_editor import Leak_Step_Editor from ui.vision_step_editor import Vision_Step_Editor from ui.widget import Widget class Step_Spec_JEDECW(QPushButton, Cell): def __init__(self, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None): self.editors = { "vision": Vision_Step_Editor(), "leak": Leak_Step_Editor(), } self.editor = None self.editor_type = None self.dialog = Dialog() self.dialog.setAttribute(Qt.WA_DeleteOnClose, on=False) super().__init__(u"\u238B modifica") print(readonly, autocomplete, field_name, field_alias, field, row_number, crud) super(QPushButton).__init__(self, readonly=readonly, autocomplete=autocomplete, field_name=field_name, field_alias=field_alias, field=field, row_number=row_number, crud=crud) print(self.readonly, self.autocomplete, self.field_name, self.field_alias, self.field, self.row_number, self.crud) print("readonly, autocomplete, field_name, field_alias, field, row_number, crud") raise Exception() self.crud.modified.connect(self.update_editor) self.dialog.setWindowTitle(self.field_alias) self.clicked.connect(self.dialog.show) def update_editor(self): print(self.editor, self.row_number, self.crud) self.editor_type = self.crud.db_tw.cellWidget(self.row_number, self.crud.select_index["type"])._parse() print(self.editor_type) self.editor = self.editors[self.editor_type] self.dialog.setCentralWidget(self.editor) def set_readonly(self, readonly): for editor in self.editors.values(): editor.set_readonly(readonly) def do_autocomplete(self, autocomplete): self.update_editor() for editor_type, editor in self.editors.items(): if autocomplete is None: editor.do_autocomplete(None) elif editor_type in autocomplete: editor.do_autocomplete(autocomplete[editor_type]) def connect_modified(self): for editor in self.editors.values(): editor.connect_modified(self.check_modified) def render(self, data, field_name=None, row_number=None, crud=None): self.editor.render(data, field_name=field_name, row_number=row_number, crud=crud) def parse(self, row_number=None, crud=None): return self.editor.parse(row_number=row_number, crud=crud) class Steps_Management(Widget): def __init__(self): super().__init__() crud_aliases = { "id": "Id", "name": "Fase di test", "type": "Tipo", "spec": "Specifica", "description": "Desccrizione", "archived": "Archiviata", } self.crud = Crud( "steps", display_name="GESTIONE FASI DI TEST", readonly=["id"], select=list(crud_aliases.keys()), fields_aliases=crud_aliases, autocomplete={ "type": [ "leak", "vision", ], "spec": { "vision": { # "recipe": iglob("*.ini", root_dir="./config/vision/recipes/"), # only in python3.10 "recipe": list(iglob("./config/vision/recipes/*.ini")), }, }, "archived": False, }, widget_classes={ "type": Combo_Box_Cell_Widget, "spec": Step_Spec_JEDECW, }, ) self.layout().addWidget(self.crud, 0, 0, -1, -1)