remove steps table wip editor modify ok

This commit is contained in:
neo 2024-10-05 17:16:57 +02:00
parent fd632bee8e
commit 9bf55ee87f
2 changed files with 12 additions and 7 deletions

View File

@ -75,7 +75,7 @@ class Cell:
self.render(data, *args, **kwargs)
if not self.connected_modified:
# only connect after first render
# to avoid false modified signals trigghered by autocomplete
# to avoid false modified signals triggered by autocomplete
self.connect_modified()
self.connected_modified = True

View File

@ -15,6 +15,7 @@ from ui.instruction_step_editor import Instruction_Step_Editor
class Recipe_Spec_And_Step_Editor(Editor):
def __init__(self, action=None, cell_widget=None, unsupported_steps=None):
super().__init__(action=action, cell_widget=cell_widget)
self.crud = None
self.steps_map = {
"count": {
"type": "count",
@ -125,15 +126,17 @@ class Recipe_Spec_And_Step_Editor(Editor):
def render(self, data, field_name=None, row_number=None, crud=None):
super().render(data, field_name=field_name, row_number=row_number, crud=crud)
self.crud=crud
for step_name,step_def in self.steps_map.items():
if not step_def.get("hidden", False):
step_def["enable"].setChecked(data.get(step_name,{}) in (True,1,"x") )
self.steps_map[step_name]["spec"]=data["steps"].get(step_name,{})
self.render_steps()
def parse(self, action=None, row_number=None, crud=None):
ret = super().parse(row_number=row_number, crud=crud)
ret["steps"] = {}
self.save_steps()
#self.save_steps()
for step_name, step_map in self.steps_map.items():
if not step_map.get("hidden", False):
ret["steps"][step_name]=self.steps_map[step_name]["spec"]
@ -141,23 +144,25 @@ class Recipe_Spec_And_Step_Editor(Editor):
def render_steps(self):
for step_name, step_map in self.steps_map.items():
step = step_map.get("step", None)
if step is not None:
spec = step_map.get("spec", None)
if spec is not None:
editor = step_map.get("editor", None)
if editor is not None:
editor.render(step.spec)
editor.render(spec)
def reset_steps(self):
self.render_steps()
def save_steps(self):
for step_name,step_map in self.steps_map.items():
step = step_map.get("step", None)
if step is None:
if not step_map.get("hidden", False):
editor = step_map.get("editor", None)
if editor is not None:
step_dict = editor.parse()
self.steps_map[step_name]["spec"]=step_dict
else:
self.steps_map[step_name]["spec"] = {}
self.crud().set_modified()
parsed_value=self.parse()
self.cell_widget().value = parsed_value
self.reset_steps()