diff --git a/lib/controller.py b/lib/controller.py index 63e3454..d1a1b76 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -1,7 +1,7 @@ +import os """ Contains the logic for the MVC of CreoMigrate Gui """ - # Infos und Fehlermeldungen die ausgelöst werden können messages = { "rüstcode_infos": 'Bitte Rüstcode auswählen!', @@ -72,9 +72,12 @@ gui_data_keys = [ "zusatzinfos_auto_text", "zusatzinfos_bendef_text", # Felder der Comboboxen. benannt wie deren callbacks + "cb_pdm_kategorie_neu", + "cb_halbzeug_neu", + "cb_halbzeugoberflaeche", + "cb_halbzeugfarbe", "cb_lebenszyklus_status_neu", "cb_3Dmodel_neu", - "cb_pdm_kategorie_neu", "cb_halbzeugOhneSaege_neu", "cb_ruestcode_neu", "cb_fertigungsart_neu", @@ -83,20 +86,18 @@ gui_data_keys = [ "cb_kalkulationsart_neu", "cb_beschaffungsart_neu", "cb_mengeneinheit_neu", - "cb_halbzeug_neu", "cb_dispogruppe_neu", "cb_dispolaufgruppe_neu", "cb_hersteller_neu", "cb_werkstofftyp_neu", "cb_material_neu", "cb_oberflaeche_neu", - "cb_farbe_neu", - # Buttons - "cb_suche_asm", + "cb_farbe_neu", + # buttons "cb_speichern", "cb_migrieren", "cb_zurücksetzen", - ] +] class Controller(): @@ -109,6 +110,25 @@ class Controller(): self.set_model(model) self.set_view(view) self.logic = None + self.env = None + + def set_env(self, env): + self.environment = env + + def get_env(self, env_path): + if self.environment == None: + raise Exception("No environment set") + if env_path == "lib": + ret = self.environment.lib_dir + elif env_path == "data": + ret = self.environment.data_dir + elif env_path == "out": + ret = self.environment.out_dir + elif env_path == "cfg": + ret = self.environment.cfg_dir + else: + raise Exception("this path is not defined "+env_path) + return ret def add_logic(self, logic): self.logic = logic @@ -264,11 +284,34 @@ class GuiLogic(): if k in self.excel_to_gui and v is not None: ret[self.excel_to_gui[k]] = v - # Spezial: Befüllung von Änderungstext mit dem Author, falls vorhanden + # Spezial: Befüllung von Änderungstext mit dem Author, falls in der .csv vorhanden if "Indexerfasser" in data and "Aenderungstext" in data: ret["aenderungstext_sivas"] = '{aenderungstext} (von {author})'.format(aenderungstext=data["Aenderungstext"], author=data["Indexerfasser"]) + # Indexerfasser wird nicht in der gui verwaltet. Deshalb Modifikation aus den Rohdaten + + # set defaults from given logic + r1 = self.callback("cb_neuaufbau", None) + ret.update(r1) + r2 = self.callback("cb_aus_halbzeug_neu", None) + ret.update(r2) + + # add entry dependencies + dep = self.entry_dependencies(ret) + ret.update(dep) return ret + def entry_dependencies(self, data): + ret = dict() + + halbzeugoberflaeche = data["halbzeugoberflaeche_neu"] + if data["aus_halbzeug_neu"] == True: + if halbzeugoberflaeche == "eloxieren" or halbzeugoberflaeche == "lackieren" or halbzeugoberflaeche == "pulverbeschichten": + pass + else: + ret["halbzeugoberflaeche_neu"] = '' + else: + ret["halbzeugoberflaeche_neu"] = '' + return ret def callback(self, key, value): """gibt ein dict zurück, welches neu im Modell gesetzt wird""" @@ -277,9 +320,9 @@ class GuiLogic(): if key == 'cb_pdm_kategorie_neu': pass elif key == 'cb_neuaufbau': - pass + return self.neuaufbau(value) elif key == 'cb_aus_halbzeug_neu': - pass + return self.aus_halbzeug_neu(value) elif key == 'cb_lebenszyklus_status_neu': pass elif key == 'cb_3Dmodel_neu': @@ -317,7 +360,7 @@ class GuiLogic(): elif key == 'cb_oberflaeche_neu': pass elif key == 'cb_farbe_neu': - self.farbe(value) + return self.farbe(value) elif key == 'cb_speichern': pass elif key == 'cb_migrieren': @@ -329,6 +372,22 @@ class GuiLogic(): else: raise Exception("this callback does not exist "+key) + def neuaufbau(self, trueOrfalse): + ret = dict() + pdm_kat = self.model.get_gui_data("pdm_kategorie_neu") + if pdm_kat != "Einzelteil" or pdm_kat != "Kaufteil": + ret["neuaufbau"] = False + return ret + + def aus_halbzeug_neu(self, trueOrfalse): + ret = dict() + pdm_kat = self.model.get_gui_data("pdm_kategorie_neu") + if pdm_kat == "Einzelteil": + pass + else: + ret["aus_halbzeug_neu"] = False + return ret + def werkstofftyp(self, selected_werkstoff): """bekommt Aluminium, Stahl etc. und setzt dann die anderen Felder der Oberfläche"""