ein paar Variablen in caditem protected gemacht. Laden und Speichern der ausgefüllten Oberfläche im json file im Work Ordner implementiert

This commit is contained in:
2024-02-14 10:43:33 +01:00
parent 501c862eeb
commit e4c7ccf152
2 changed files with 42 additions and 54 deletions
+41 -33
View File
@@ -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():
<undefiniert>, 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
+1 -21
View File
@@ -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)