From e4c7ccf152766fd95b31c9c88566f1d5b6ef17ff Mon Sep 17 00:00:00 2001 From: mistangl Date: Wed, 14 Feb 2024 10:43:33 +0100 Subject: [PATCH] =?UTF-8?q?ein=20paar=20Variablen=20in=20caditem=20protect?= =?UTF-8?q?ed=20gemacht.=20Laden=20und=20Speichern=20der=20ausgef=C3=BCllt?= =?UTF-8?q?en=20Oberfl=C3=A4che=20im=20json=20file=20im=20Work=20Ordner=20?= =?UTF-8?q?implementiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/caditem.py | 74 ++++++++++++++++++++++++++--------------------- lib/controller.py | 22 +------------- 2 files changed, 42 insertions(+), 54 deletions(-) diff --git a/lib/caditem.py b/lib/caditem.py index 980dc11..771f4b9 100644 --- a/lib/caditem.py +++ b/lib/caditem.py @@ -178,9 +178,8 @@ class CadItem(DataModel): def get_asm_id(self): return self.get_gui_data("asm_id") - def get_current_part_id(self): - return self.get_gui_data("teilenummer") - + def get_current_item_id(self): + return self.get_gui_data('teilenummer') def set_parent_children(self, parent_children_mapping): """ contains all id relations below, data of subassemblies etc. in @@ -290,10 +289,10 @@ class CadItem(DataModel): path = os.path.join(subpath, cid + '.json') if os.path.exists(path): self.load(path) + return True return False - def from_json(self, json_str): - jsonobj = json.loads(json_str) + def from_json(self, jsonobj): if "gui_data" in jsonobj: gui_data = jsonobj["gui_data"] @@ -304,12 +303,10 @@ class CadItem(DataModel): if "parent_children_mapping" in jsonobj: parent_children_mapping = jsonobj["parent_children_mapping"] self.set_parent_children(parent_children_mapping) - else: - raise Exception("no parent_children_mapping given in string") + if "red_ids" in jsonobj: red_ids = jsonobj["red_ids"] self.set_red_ids(red_ids) - return True def to_dict(self, tree=False ): jsonobj = dict() @@ -340,11 +337,20 @@ class CadItem(DataModel): except Exception: raise Exception("guid_data, data, parent_children_mapping or red_ids not found") + def save_to_file(self): + """speichert die bisherigen Eingaben beider Spalten in eine json Datei""" + path = os.path.join(self._controller.get_env("out"), str(self.get_current_item_id()) + '.json') + if self.get_current_item_id == self.get_asm_id: + savePath = True + else: + savePath = False + # die Bauminfos und RedIds dazu werden standardmässig nicht mit gemerkt. Nur im obersten Assemblyfile + self.save(path, savePath) def save(self, path, tree=False): """saves all data of model to a json string""" with open(path, 'w') as f: - json.dump(self.to_dict(tree), f) + json.dump(self.to_dict(tree), f, indent=4, sort_keys=True) def callback(self, key, value): if self._logic == None: @@ -400,9 +406,9 @@ class GuiLogic(): 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 + self._model = model # hier holt man die Daten der Configs - self.config = configs + self._config = configs # hier sind alle Callbacks bzw. deren Comboboxen def set_gui_defaults(self): @@ -413,7 +419,7 @@ class GuiLogic(): self.call_and_set_data('cb_halbzeugoberflaeche') def call_and_set_data(self, callbackfunc): - eval('self.model.set_gui_dict(self.'+callbackfunc+'(None))') + eval('self._model.set_gui_dict(self.'+callbackfunc+'(None))') def callback(self, key, value): """gibt ein dict zurück, welches neu im Modell gesetzt wird""" @@ -468,7 +474,9 @@ class GuiLogic(): pass elif key == 'cb_farbe_neu': ret = self.cb_farbe_neu(value) + # Aktionen elif key == 'cb_speichern': + self._model.save_to_file() pass elif key == 'cb_migrieren': pass @@ -548,7 +556,7 @@ class GuiLogic(): , Baugruppe, Einzelteil, Kaufteil, Schweissbaugruppe """ ret = dict() - categories = self.config.Allgemein.get_options("Kategorien") + categories = self._config.Allgemein.get_options("Kategorien") if selected is None: ret['pdm_kategorie_neu'] = categories[0] ret['cb_pdm_kategorie_neu'] = categories @@ -558,7 +566,7 @@ class GuiLogic(): def cb_neuaufbau(self, trueOrfalse): ret = dict() - pdm_kat = self.model.get_gui_data("pdm_kategorie_neu") + pdm_kat = self._model.get_gui_data("pdm_kategorie_neu") if pdm_kat == "Einzelteil" or pdm_kat == "Kaufteil": if not trueOrfalse is None: ret["neuaufbau"] = trueOrfalse @@ -568,7 +576,7 @@ class GuiLogic(): def cb_aus_halbzeug_neu(self, trueOrfalse): ret = dict() - pdm_kat = self.model.get_gui_data("pdm_kategorie_neu") + pdm_kat = self._model.get_gui_data("pdm_kategorie_neu") # normalerweise ist der Haken nicht gesetz ret["aus_halbzeug_neu"] = False @@ -581,9 +589,9 @@ class GuiLogic(): def cb_halbzeugoberflaeche(self, selected): ret = dict() - aus_halbzeug = self.model.get_gui_data("aus_halbzeug_neu") + aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu") if aus_halbzeug == "True": - oarten = self.config.Oberfläche.get_oberflächen_behandlungen() + oarten = self._config.Oberfläche.get_oberflächen_behandlungen() if selected is None: ret['halbzeugoberflaeche_neu'] = oarten[0] ret['cb_halbzeugoberflaeche'] = oarten @@ -598,7 +606,7 @@ class GuiLogic(): def cb_lebenszyklus_status_neu(self, selected): ret = dict() - lstatus = self.config.Allgemein.get_options("Lebenszyklus") # Serie, Prototyp + lstatus = self._config.Allgemein.get_options("Lebenszyklus") # Serie, Prototyp if selected is None: ret['lebenszyklus_status_neu'] = lstatus[0] ret['cb_lebenszyklus_status_neu'] = lstatus @@ -608,8 +616,8 @@ class GuiLogic(): def cb_halbzeugfarbe(self, selected): ret = dict() - halbzeugoberflaeche = self.model.get_gui_data("halbzeugoberflaeche_neu") - aus_halbzeug = self.model.get_gui_data("aus_halbzeug_neu") + halbzeugoberflaeche = self._model.get_gui_data("halbzeugoberflaeche_neu") + aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu") # setze die Inhalte der abhängigen Comboboxen neu ret = { @@ -618,14 +626,14 @@ class GuiLogic(): } if aus_halbzeug == "True": if halbzeugoberflaeche == "eloxieren": - farben_elox = self.config.Farben.get_farben_eloxieren() + farben_elox = self._config.Farben.get_farben_eloxieren() if selected is None: ret['halbzeugfarbe_neu'] = farben_elox[0] # Default, falls nichts gewählt ist ret['cb_halbzeugfarbe'] = farben_elox # Liste in der Combobox else: ret['halbzeugfarbe_neu'] = selected # vom Nutzer ausgewählter Wert elif halbzeugoberflaeche == "lackieren" or halbzeugoberflaeche == "pulverbeschichten": - farbauswahl = self.config.Farben.get_farbauswahl() + farbauswahl = self._config.Farben.get_farbauswahl() if selected is None: ret['halbzeugfarbe_neu'] = farbauswahl[0] ret['cb_halbzeugfarbe'] = farbauswahl @@ -637,7 +645,7 @@ class GuiLogic(): def cb_3Dmodel_neu(self, selected): ret = dict() - pdm_kategorie_neu = self.model.get_gui_data("pdm_kategorie_neu") + pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu") if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe": # Defaultwert = \\ssg.local\freigaben\Abteilungen\Entwicklung\CAD\Standards\SolidEdge\Template\DIN Metric\baugruppe.asm # Dropdownwerte = keine @@ -655,8 +663,8 @@ class GuiLogic(): # state_Button = disabled pass elif pdm_kategorie_neu == "Einzelteil": - aus_halbzeug = self.model.get_gui_data("aus_halbzeug_neu") - neuaufbau = self.model.get_gui_data("neuaufbau") + aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu") + neuaufbau = self._model.get_gui_data("neuaufbau") if aus_halbzeug == "True" or neuaufbau == "True": # Defaultwert = \\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\06_3D_Vorlagen\ET_mit_Volumen.par # Dropdownwerte = keine @@ -697,11 +705,11 @@ class GuiLogic(): # # 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") + # 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) + # 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 @@ -719,11 +727,11 @@ class GuiLogic(): # # 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") + # 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) + # 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 @@ -734,8 +742,8 @@ class GuiLogic(): # return ret def cb_farbe_neu(self, selected): - farben_alle = self.config.Farben.get_farbauswahl() - farben_elox = self.config.Farben.get_farben_eloxieren() + 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 diff --git a/lib/controller.py b/lib/controller.py index c4a1c61..d61db4f 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -118,12 +118,8 @@ class Controller(Observer): # und diese in der Gui setzen set_data = self._model.csv2guidata(loaded) self._model.set_gui_defaults() - self.refresh_gui() + self.refresh_gui() - def get_current_item_id(self): - return self.get_gui_data('teilenummer') - - def set_red_ids(self, red_ids): self._model.set_red_ids(red_ids) def get_red_ids(self): @@ -175,22 +171,6 @@ class Controller(Observer): # gib dem observer Bescheid, was aufgerufen wurde self.notify(self._model, key,value) self.refresh_gui() - - # reine Aktionen - if key == 'cb_speichern': - self.save_to_file() - elif key == 'cb_migrieren': - pass - elif key == 'cb_zurücksetzen': - pass - elif key == 'cb_suche_asm': - pass - - def save_to_file(self): - """speichert die bisherigen Eingaben beider Spalten in eine json Datei""" - path = os.path.join(self.get_env("out"), str(self.get_current_item_id()) + '.json') - # die Bauminfos und RedIds dazu werden standardmässig nicht mit gemerkt. - self._model.save(path, False)