diff --git a/lib/caditem.py b/lib/caditem.py index d099f2d..911e2ca 100644 --- a/lib/caditem.py +++ b/lib/caditem.py @@ -674,6 +674,10 @@ class GuiLogic(): ret = self.cb_oberflaeche_neu(value) elif key == 'cb_farbe_neu': ret = self.cb_farbe_neu(value) + elif key == 'cb_halbzeugnummer': + ret = self.cb_halbzeugnummer(value) + elif key == 'cb_halbzeuglaenge': + ret = self.cb_halbzeuglaenge(value) else: raise Exception("this callback does not exist "+key) return ret @@ -691,7 +695,7 @@ class GuiLogic(): elif key == 'cb_neuaufbau': ret = [] elif key == 'cb_aus_halbzeug_neu': - ret = ['cb_halbzeugoberflaeche', 'cb_halbzeugfarbe', 'cb_werkstoffdiskrepanz', 'cb_werkstofftyp_neu'] + ret = ['cb_halbzeugoberflaeche', 'cb_halbzeugfarbe', 'cb_werkstoffdiskrepanz', 'cb_werkstofftyp_neu', 'cb_halbzeugnummer', 'cb_halbzeuglaenge' ] elif key == 'cb_halbzeugoberflaeche': ret = ['cb_halbzeugfarbe'] elif key == 'cb_halbzeugfarbe': @@ -800,9 +804,13 @@ class GuiLogic(): if not trueOrfalse is None: ret["aus_halbzeug_neu"] = trueOrfalse - # Abfrage zur Feld "Halbzeugnummer". Dieses ist nicht gesteuert durch eine eigene Combobox + return ret + + def cb_halbzeugnummer(self, selected): + # Abfrage zur Feld "Halbzeugnummer". Dieses ist nicht gesteuert durch eine eigene Combobox o.ä. + ret = dict() + aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu") ret["halbzeugnummer_neu"] = '' - aus_halbzeug = ret["aus_halbzeug_neu"] if aus_halbzeug == True: self.set_state('halbzeugnummer_neu', 'normal') # wenn Kind der aktuellen Teilenummer in RD_Teilenummern.csv ist, dann anzeigen @@ -815,8 +823,24 @@ class GuiLogic(): else: self.set_state('halbzeugnummer_neu', 'disabled') - return ret - + def cb_halbzeuglaenge(self, selected): + # Abfrage zur Feld "Halbzeuglänge". Dieses ist nicht gesteuert durch eine eigene Combobox o.ä. + ret = dict() + aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu") + ret["halbzeuglaenge_neu"] = '' + if aus_halbzeug == True: + self.set_state('halbzeuglaenge_neu', 'normal') + # wenn Kind der aktuellen Teilenummer in RD_Teilenummern.csv ist, dann anzeigen + current_id = self._model.get_current_item_id() + child_id = self._model.get_child_of_id(current_id) + if child_id is not None: + Teilenummern = self._config.get_ruledesigner_ids() + if child_id in Teilenummern: + ret["halbzeuglaenge_neu"] = 'Länge ? des Kindes der id='+ child_id + else: + self.set_state('halbzeuglaenge_neu', 'disabled') + + def cb_halbzeugoberflaeche(self, selected): ret = dict() aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu") @@ -827,11 +851,13 @@ class GuiLogic(): ret['cb_halbzeugoberflaeche'] = oarten else: ret['halbzeugoberflaeche_neu'] = selected + self.set_state('halbzeugoberflaeche_neu', 'normal') else: ret = { 'halbzeugoberflaeche_neu': "", 'cb_halbzeugoberflaeche': "", } + self.set_state('halbzeugoberflaeche_neu', 'disabled') return ret def cb_lebenszyklus_status_neu(self, selected): @@ -851,6 +877,7 @@ class GuiLogic(): # setze die Inhalte der abhängigen Comboboxen neu if aus_halbzeug == True: + self.set_state('cb_halbzeugfarbe', 'normal') if halbzeugoberflaeche == "eloxieren": farben_elox = self._config.Farben.get_farben_eloxieren() if selected is None: @@ -870,11 +897,15 @@ class GuiLogic(): 'halbzeugfarbe_neu': '', 'cb_halbzeugfarbe': '', } + self.set_state('cb_halbzeugfarbe', 'disabled') + else: ret = { 'halbzeugfarbe_neu': '', 'cb_halbzeugfarbe': '', } + self.set_state('cb_halbzeugfarbe', 'disabled') + return ret def cb_3Dmodel_neu(self, selected): diff --git a/lib/gui.py b/lib/gui.py index 95a14ca..1cefcf8 100644 --- a/lib/gui.py +++ b/lib/gui.py @@ -68,6 +68,8 @@ class TreeView(): #self.tree.bind('<>', self.item_selected) # Einfachklick self.tree.bind('', self.item_selected) # Doppelklick: + self.trid2sivasId = dict() + def set_controller(self, controller): self._controller = controller @@ -95,6 +97,7 @@ class TreeView(): else: rowtags = ('missing') parent_id = self.tree.insert('', tk.END, text=parent, tags=rowtags, open=True) + self.trid2sivasId[parent_id] = parent # merken für Doppelklick pool[parent] = parent_id else: parent_id = pool[parent] @@ -108,12 +111,14 @@ class TreeView(): if child not in pool: child_id = self.tree.insert('', tk.END, text=child, tags=rowtags, open=True) pool[child] = child_id + self.trid2sivasId[child_id] = child # merken für Doppelklick else: child_id = pool[child] else: # die Blätter des Baumes kann man bedenkenlos immer bauen. Diese können redundante Texte haben. child_id = self.tree.insert('', tk.END, text=child, tags=rowtags, open=True) - pool[child] = child_id + pool[child] = child_id # hier werden die keys - sivas Nummern auch überschrieben + self.trid2sivasId[child_id] = child # merken der eindeutigen Zuordnung für den späteren Doppelklick self.tree.move(child_id, parent_id, 'end') # https://www.askpython.com/python-modules/tkinter/tkinter-colors @@ -131,8 +136,9 @@ class TreeView(): def item_selected(self, event): """callback of TK if an item in the tree has been selected """ - cid = self.tree.selection()[0] + trid = self.tree.selection()[0] # trage die neue ID ins Modell ein + cid = self.trid2sivasId[trid] self._controller.set_current_item_id(cid) class LeftFrameAsm(AllFrames): @@ -519,7 +525,12 @@ class RightFrameBezeichnung(AllFrames): def set_states(self): data = self.get_controller().get_gui_states() - pass + if 'bezeichnung1_sivas' in data: + self.bezeichnung1_sivas['state'] = data["bezeichnung1_sivas"] + if 'bezeichnung1_neu' in data: + self.bezeichnung1_neu['state'] = data["bezeichnung1_neu"] + if 'bezeichnung2_sivas' in data: + self.bezeichnung2_sivas['state'] = data["bezeichnung2_sivas"] class RightFrameHalbzeugOhneS(AllFrames): def __init__(self, frame, nrow=0): @@ -695,7 +706,43 @@ class RightFrameHalbzeugOhneS(AllFrames): def set_states(self): data = self.get_controller().get_gui_states() - pass + if 'halbzeugOhneSaege_sivas' in data: + self.halbzeugOhneSaege_sivas['status'] = data["halbzeugOhneSaege_sivas"] + if 'halbzeugOhneSaege_neu' in data: + self.halbzeugOhneSaege_neu['status'] = data["halbzeugOhneSaege_neu"] + if 'ruestcode_sivas' in data: + self.ruestcode_sivas['status'] = data["ruestcode_sivas"] + if 'ruestcode_neu' in data: + self.ruestcode_neu['status'] = data["ruestcode_neu"] + if 'fertigungsart_sivas' in data: + self.fertigungsart_sivas['status'] = data["fertigungsart_sivas"] + if 'fertigungsart_neu' in data: + self.fertigungsart_neu['status'] = data["fertigungsart_neu"] + if 'allgemeintoleranz_sivas' in data: + self.allgemeintoleranz_sivas['status'] = data["allgemeintoleranz_sivas"] + if 'allgemeintoleranz_neu' in data: + self.allgemeintoleranz_neu['status'] = data["allgemeintoleranz_neu"] + if 'fosGruppe_sivas' in data: + self.fosGruppe_sivas['status'] = data["fosGruppe_sivas"] + if 'fosGruppe_neu' in data: + self.fosGruppe_neu['status'] = data["fosGruppe_neu"] + if 'kalkulationsart_sivas' in data: + self.kalkulationsart_sivas['status'] = data["kalkulationsart_sivas"] + if 'kalkulationsart_neu' in data: + self.kalkulationsart_neu['status'] = data["kalkulationsart_neu"] + # ab hier die Dropdowns der Oberfläche befüllen. + if 'cb_halbzeugOhneSaege_neu' in data: + self.halbzeugOhneSaege_neu_combo['status'] = data['cb_halbzeugOhneSaege_neu'] + if 'cb_ruestcode_neu' in data: + self.ruestcode_neu_combo['status'] = data['cb_ruestcode_neu'] + if 'cb_fertigungsart_neu' in data: + self.fertigungsart_neu_combo['status'] = data['cb_fertigungsart_neu'] + if 'cb_allgemeintoleranz_neu' in data: + self.allgemeintoleranz_neu_combo['status'] = data['cb_allgemeintoleranz_neu'] + if 'cb_fosGruppe_neu' in data: + self.fosGruppe_neu_combo['status'] = data['cb_fosGruppe_neu'] + if 'cb_kalkulationsart_neu' in data: + self.kalkulationsart_neu_combo['status'] = data['cb_kalkulationsart_neu'] class RightFrameBeschaffungsart(AllFrames): def __init__(self, frame, nrow=0): @@ -796,7 +843,25 @@ class RightFrameBeschaffungsart(AllFrames): def set_states(self): data = self.get_controller().get_gui_states() - pass + if "beschaffungsart_sivas" in data: + self.beschaffungsart_sivas['status'] = data["beschaffungsart_sivas"] + if "beschaffungsart_neu" in data: + self.beschaffungsart_neu['status'] = data["beschaffungsart_neu"] + if "mengeneinheit_sivas" in data: + self.mengeneinheit_sivas['status'] = data["mengeneinheit_sivas"] + if "mengeneinheit_neu" in data: + self.mengeneinheit_neu['status'] = data["mengeneinheit_neu"] + if "halbzeug_sivas" in data: + self.halbzeug_sivas['status'] = data["halbzeug_sivas"] + if "halbzeug_neu" in data: + self.halbzeug_neu['status'] = data["halbzeug_neu"] + # ab hier die Dropdowns der Oberfläche befüllen. + if "cb_beschaffungsart_neu" in data: + self.beschaffungsart_combo['status'] = data["cb_beschaffungsart_neu"] + if "cb_mengeneinheit_neu" in data: + self.mengeneinheit_combo['status'] = data["cb_mengeneinheit_neu"] + if "cb_halbzeug_neu" in data: + self.halbzeug_combo['status'] = data["cb_halbzeug_neu"] class RightFrameTOSGruppe(AllFrames): def __init__(self, frame, nrow=0): @@ -967,6 +1032,41 @@ class RightFrameTOSGruppe(AllFrames): def set_states(self): data = self.get_controller().get_gui_states() + if 'tosgruppe_sivas' in data: + self.tosgruppe_sivas['status'] = data["tosgruppe_sivas"] + if 'tosgruppe_neu' in data: + self.tosgruppe_neu['status'] = data["tosgruppe_neu"] + if 'dispogruppe_sivas' in data: + self.dispogruppe_sivas['status'] = data["dispogruppe_sivas"] + if 'dispogruppe_neu' in data: + self.dispogruppe_neu['status'] = data["dispogruppe_neu"] + if 'dispolaufgruppe_sivas' in data: + self.dispolaufgruppe_sivas['status'] = data["dispolaufgruppe_sivas"] + if 'dispolaufgruppe_neu' in data: + self.dispolaufgruppe_neu['status'] = data["dispolaufgruppe_neu"] + if 'ersatzfuer_sivas' in data: + self.ersatzfuer_sivas['status'] = data["ersatzfuer_sivas"] + if 'ersatzfuer_neu' in data: + self.ersatzfuer_neu['status'] = data["ersatzfuer_neu"] + if 'ersetztdurch_sivas' in data: + self.ersetztdurch_sivas['status'] = data["ersetztdurch_sivas"] + if 'ersetztdurch_neu' in data: + self.ersetztdurch_neu['status'] = data["ersetztdurch_neu"] + if 'hersteller_sivas' in data: + self.hersteller_sivas['status'] = data["hersteller_sivas"] + if 'hersteller_neu' in data: + self.hersteller_neu['status'] = data["hersteller_neu"] + if 'herstteilenr_sivas' in data: + self.herstteilenr_sivas['status'] = data["herstteilenr_sivas"] + if 'herstteilenr_neu' in data: + self.herstteilenr_neu['status'] = data["herstteilenr_neu"] + # ab hier die Dropdowns der Oberfläche befüllen. + if "cb_dispogruppe_neu" in data: + self.dispogruppe_neu_combo['values'] = data["cb_dispogruppe_neu"] + if "cb_dispolaufgruppe_neu" in data: + self.dispolaufgruppe_neu_combo['values'] = data["cb_dispolaufgruppe_neu"] + if "cb_hersteller_neu" in data: + self.hersteller_neu_combo['values'] = data["cb_hersteller_neu"] pass class RightFrameWerkstoffdiskrepanz(AllFrames): @@ -987,13 +1087,13 @@ class RightFrameWerkstoffdiskrepanz(AllFrames): werkstoffdiskr_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.werkstoffdiskr_sivas= tk.BooleanVar() - werkstoffdiskr_checkbutton = ttk.Checkbutton(frame, + self.werkstoffdiskr_checkbutton = ttk.Checkbutton(frame, #text='ja', variable=self.werkstoffdiskr_sivas, command=lambda: self.callback("cb_werkstoffdiskrepanz", self.werkstoffdiskr_sivas.get()), onvalue=True, offvalue=False) - werkstoffdiskr_checkbutton.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.werkstoffdiskr_checkbutton.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 # Werkstofftyp @@ -1066,7 +1166,7 @@ class RightFrameWerkstoffdiskrepanz(AllFrames): def data_from_model(self): data = self.get_controller().get_all_gui_data() if 'werkstoffdiskr_sivas' in data: - self.werkstoffdiskr_sivas.set((data["werkstoffdiskr_sivas"])) + self.werkstoffdiskr_sivas.set(data["werkstoffdiskr_sivas"]) if 'werkstofftyp_neu' in data: self.werkstofftyp_neu.set(data["werkstofftyp_neu"]) if 'material_sivas' in data: @@ -1089,7 +1189,27 @@ class RightFrameWerkstoffdiskrepanz(AllFrames): def set_states(self): data = self.get_controller().get_gui_states() - pass + if 'werkstoffdiskr_sivas' in data: + self.werkstoffdiskr_checkbutton['status'] = data["werkstoffdiskr_sivas"] + if 'werkstofftyp_neu' in data: + self.werkstofftyp_neu['status'] = data["werkstofftyp_neu"] + if 'material_sivas' in data: + self.material_sivas['status'] = data["material_sivas"] + if 'material_neu' in data: + self.material_neu['status'] = data["material_neu"] + if 'oberflaeche_neu' in data: + self.oberflaeche_neu['status'] = data["oberflaeche_neu"] + if 'farbe_neu' in data: + self.farbe_neu['status'] = data["farbe_neu"] + # ab hier die Dropdowns der Oberfläche befüllen. + if 'cb_werkstofftyp_neu' in data: + self.werkstofftyp_neu_combo['status'] = data["cb_werkstofftyp_neu"] + if 'cb_material_neu' in data: + self.material_neu_combo['status'] = data["cb_material_neu"] + if 'cb_oberflaeche_neu' in data: + self.oberflaeche_neu_combo['status'] = data["cb_oberflaeche_neu"] + if 'cb_farbe_neu' in data: + self.farbe_neu_combo['status'] = data["cb_farbe_neu"] class RightFrameVersion(AllFrames): def __init__(self, frame, nrow=0): @@ -1193,7 +1313,22 @@ class RightFrameVersion(AllFrames): def set_states(self): data = self.get_controller().get_gui_states() - pass + if 'version_sivas' in data: + self.version_sivas['status'] = data["version_sivas"] + if 'version_neu' in data: + self.version_neu['status'] = data["version_neu"] + if 'aenderungsindex_sivas' in data: + self.aenderungsindex_sivas['status'] = data["aenderungsindex_sivas"] + if 'aenderungsindex_neu' in data: + self.aenderungsindex_neu['status'] = data["aenderungsindex_neu"] + if 'aenderungstext_sivas' in data: + self.aenderungstext_sivas['status'] = data["aenderungstext_sivas"] + if 'aenderungstext_neu' in data: + self.aenderungstext_neu['status'] = data["freigabevermerk_neu"] + if 'freigabevermerk_sivas' in data: + self.freigabevermerk_sivas['status'] = data["freigabevermerk_neu"] + if 'freigabevermerk_neu' in data: + self.freigabevermerk_neu['status'] = data["freigabevermerk_neu"] def clear_texts(self): self.aenderungstext_sivas.delete('1.0', 'end') @@ -1258,7 +1393,10 @@ class RightFrameZusatzinfos(AllFrames): def set_states(self): data = self.get_controller().get_gui_states() - pass + if 'zusatzinfos_auto_text' in data: + self.zusatzinfos_auto_text['status'] = data["zusatzinfos_auto_text"] + if 'zusatzinfos_bendef_text' in data: + self.zusatzinfos_bendef_text['status'] = data["zusatzinfos_bendef_text"] def clear_texts(self): self.zusatzinfos_auto_text.delete('1.0', 'end')