101 lines
4.0 KiB
Python
101 lines
4.0 KiB
Python
|
|
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)
|