callback funktionen der Comboboxen geben auch den neuen Wert mit, der vom Nutzer gewählt wurde

This commit is contained in:
2024-01-25 13:39:38 +01:00
parent 3543200e5c
commit beec42adce
2 changed files with 56 additions and 40 deletions
+29 -9
View File
@@ -59,7 +59,7 @@ class Controller():
# merkt sich die Nutzereingaben, bzw. Daten für die GUI
def set_gui_dict(self, data:dict):
"""merken der Eingaben des Nutzers der GUI """
for k,v in data:
for k,v in data.items():
self.set_gui_data(k,v)
def set_gui_data(self, key, value):
"""merken der Eingaben des Nutzers der GUI """
@@ -70,9 +70,13 @@ class Controller():
def get_all_gui_data(self):
return self.model.get_all_gui_data()
def callback(self, key):
if self.logic:
self.logic.callback(key)
def callback(self, key, value):
if not self.logic:
return
model_values = self.logic.callback(key, value)
if model_values:
self.set_gui_dict(model_values)
self.refresh_gui()
class GuiLogic():
"""
@@ -108,7 +112,7 @@ class GuiLogic():
'cb_zurücksetzen'
]
def callback(self, key):
def callback(self, key, value):
if key not in self.callbacks:
raise Exception("this callback does not exist "+key)
if key == 'cb_pdm_kategorie_neu':
@@ -148,7 +152,7 @@ class GuiLogic():
elif key == 'cb_werkstoffdiskrepanz':
pass
elif key == 'cb_werkstofftyp_neu':
self.werkstofftyp()
return self.werkstofftyp(value)
elif key == 'cb_material_neu':
pass
elif key == 'cb_oberflaeche_neu':
@@ -163,9 +167,25 @@ class GuiLogic():
pass
else:
raise Exception("this callback does not exist "+key)
def werkstofftyp(self):
wnamen = self.config.Werkstoffe.get_werkstoff_namen()
pass
def werkstofftyp(self, selected_werkstoff):
"""bekommt Aluminium, Stahl etc. und setzt dann die anderen Felder der Oberfläche"""
wnamen = self.config.Werkstoffe.get_werkstoffe_of_name(selected_werkstoff)
onamen = self.config.Oberfläche.get_oberfläche_of_type(selected_werkstoff)
farben = self.config.Farben.get_oberfläche_of_type(selected_werkstoff)
# setze die Inhalte der abhängigen Comboboxen neu und den Wert im Modell
ret = {
# das Feld selbst mit dem Selektierten beschreiben
'werkstofftyp_neu': selected_werkstoff,
# die neuen Inhalte der comboboxen setzen
'cb_material_neu': wnamen,
'cb_oberflaeche_neu': onamen,
# der angezeigte Wert der Combos sollte anfangs dem ersten der Liste entsprechen
'material_neu': wnamen[0],
'oberflaeche_neu': onamen[0],
'farbe_neu': farben[0],
}
return ret