From 55ed82cca570bcae383dfd7840362d7f831d0c0d Mon Sep 17 00:00:00 2001 From: mistangl Date: Thu, 25 Jan 2024 18:38:21 +0100 Subject: [PATCH] =?UTF-8?q?logik=20hat=20erste=20Funktionen=20f=C3=BCr=20V?= =?UTF-8?q?erhalten=20bekommen=20f=C3=BCr=20Oberfl=C3=A4che=20Farbe.=20Abf?= =?UTF-8?q?rage=20des=20Status=20des=20Modells=20m=C3=B6glich?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/controller.py | 151 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 140 insertions(+), 11 deletions(-) diff --git a/lib/controller.py b/lib/controller.py index 1022116..bc3687e 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -2,6 +2,72 @@ Contains the logic for the MVC of CreoMigrate Gui """ +fehler = { + "werkstoff_typ": 'Werkstoffvorschlag nicht möglich, da Material nicht in Mappingdatei "Materialübersetzung.json" enthalten ist. Bitte nachpflegen' + } + +gui_data_keys = [ + "asm_id", + "teilenummer", + "datenbank", + "pdm_kategorie_neu", + "neuaufbau", + "aus_halbzeug_neu", + "halbzeugnummer_neu", + "halbzeuglaenge_neu", + "halbzeugoberflaeche_neu", + "lebenszyklus_status_neu", + "bezeichnung1_sivas", "bezeichnung1_neu", + "bezeichnung2_sivas", "bezeichnung2_neu", + "halbzeugOhneSaege_sivas", "halbzeugOhneSaege_neu", + "ruestcode_sivas", "ruestcode_neu", + "fertigungsart_sivas", "fertigungsart_neu", + "allgemeintoleranz_sivas", "allgemeintoleranz_neu", + "fosGruppe_sivas", "fosGruppe_neu", + "kalkulationsart_sivas", "kalkulationsart_neu", + "beschaffungsart_sivas", "beschaffungsart_neu", + "mengeneinheit_sivas", "mengeneinheit_neu", + "halbzeug_sivas", "halbzeug_neu", + "tosgruppe_sivas", "tosgruppe_neu", + "dispogruppe_sivas", "dispogruppe_neu", + "dispolaufgruppe_sivas","dispolaufgruppe_neu", + "hersteller_sivas", "hersteller_neu", + "ersatzfuer_sivas", "ersatzfuer_neu", + "ersetztdurch_sivas", "ersetztdurch_neu", + "herstteilenr_sivas", "herstteilenr_neu", + "werkstoffdiskr_sivas", + "werkstofftyp_sivas", "werkstofftyp_neu", + "material_sivas", "material_neu", + "oberflaeche_neu", + "farbe_neu", + "version_sivas", "version_neu", + "aenderungsindex_sivas", "aenderungsindex_neu", + "aenderungstext_sivas", "aenderungstext_neu", + "freigabevermerk_sivas", "freigabevermerk_neu", + "zusatzinfos_auto_text", + "zusatzinfos_bendef_text", + # Felder der Comboboxen. benannt wie deren callbacks + "cb_lebenszyklus_status_neu", + "cb_3Dmodel_neu", + "cb_pdm_kategorie_neu", + "cb_halbzeugOhneSaege_neu", + "cb_ruestcode_neu", + "cb_fertigungsart_neu", + "cb_allgemeintoleranz_neu", + "cb_fosGruppe_neu", + "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", + ] + class Controller(): """ Class for manipulating the model and returning data for the view @@ -32,6 +98,12 @@ class Controller(): def set_current_asm_id(self, asm_id): self.model.set_current_asm_id(asm_id) + def set_current_item_id(self, cid): + self.set_gui_data('teilenummer', cid) + self.refresh_gui() + self.model.sivas_data_from_csv(cid) + + def set_red_ids(self, red_ids): self.model.set_red_ids(red_ids) def get_red_ids(self): @@ -82,7 +154,11 @@ class GuiLogic(): """ Class for business logic. implementing the dependencies between different user inputs """ - def __init__(self, configs): + def __init__(self, model, configs): + # das Modell soll hier nur verwendet werden um aktuell Zustände abzufragen! + # alles weitere zum Setzen von Daten etc. muss über den Controller laufen, also zurück gegeben werden. + self.model = model + # hier holt man die Daten der Configs self.config = configs self.callbacks = [ 'cb_pdm_kategorie_neu', @@ -113,6 +189,7 @@ class GuiLogic(): ] def callback(self, key, value): + """gibt ein dict zurück, welches neu im Modell gesetzt wird""" if key not in self.callbacks: raise Exception("this callback does not exist "+key) if key == 'cb_pdm_kategorie_neu': @@ -158,7 +235,7 @@ class GuiLogic(): elif key == 'cb_oberflaeche_neu': pass elif key == 'cb_farbe_neu': - pass + self.farbe(value) elif key == 'cb_speichern': pass elif key == 'cb_migrieren': @@ -170,20 +247,72 @@ class GuiLogic(): 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) + + # Logik, die steuert, welcher Defaultwert gilt: + + # In den nachfolgenden Fällen darf kein Defaultwert eingetragen + # werden (selbst wenn in from_siv.csv ein Wert in der Spalte + # "Werkstoff" eingetragen sein sollte): + # PDM-Kategorie == "Baugruppe" + # PDM-Kategorie == "Schweissbaugruppe" + # PDM-Kategorie == "Einzelteil" und Aus Halbzeug == True (Haken gesetzt) + + # Gilt PDM-Kategorie == "Kaufteil" soll der Defaultwert "siehe + # Hersteller" eingetragen werden + + # Gilt PDM-Kategorie == "Einzelteil" und Aus Halbzeug == False (kein + # Haken), dann wird der Defaultwert wie folgt bestimmt: + ret = dict() + # das Feld selbst mit dem Selektierten beschreiben + ret['werkstofftyp_neu']= selected_werkstoff + + pdm_kat = self.model.get_gui_data("pdm_kategorie_neu") + aus_halbzeug = self.model.get_gui_data("aus_halbzeug_neu") + + if pdm_kat == 'Einzelteil' and aus_halbzeug is False: + wnamen = self.config.Werkstoffe.get_werkstoffe_of_name(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, + # der angezeigte Wert der Combos sollte anfangs dem ersten der Liste entsprechen + 'material_neu': wnamen[0], + } + return ret + + def oberfläche(self, selected): + + ret = dict() + # das Feld selbst mit dem Selektierten beschreiben + ret['oberflaeche_neu']= selected + + pdm_kat = self.model.get_gui_data("pdm_kategorie_neu") + aus_halbzeug = self.model.get_gui_data("aus_halbzeug_neu") + + if pdm_kat == 'Einzelteil' and aus_halbzeug is False: + onamen = self.config.Oberfläche.get_oberfläche_of_type(selected) + # setze die Inhalte der abhängigen Comboboxen neu und den Wert im Modell + ret = { + # die neuen Inhalte der comboboxen setzen + 'cb_oberflaeche_neu': onamen, + # der angezeigte Wert der Combos sollte anfangs dem ersten der Liste entsprechen + 'oberflaeche_neu': onamen[0], + } + return ret + + def farbe(self, selected): + farben_alle = self.config.Farben.get_farbauswahl() + farben_elox = self.config.Farben.get_farben_eloxieren() # 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, + 'farbe_neu': selected, # die neuen Inhalte der comboboxen setzen - 'cb_material_neu': wnamen, - 'cb_oberflaeche_neu': onamen, + 'cb_farben': farben_alle, # der angezeigte Wert der Combos sollte anfangs dem ersten der Liste entsprechen - 'material_neu': wnamen[0], - 'oberflaeche_neu': onamen[0], - 'farbe_neu': farben[0], + 'farbe_neu': farben_alle[0], } return ret