diff --git a/cfg/Allgemein.cfg b/cfg/Allgemein.cfg index a59589c..9bb9300 100644 --- a/cfg/Allgemein.cfg +++ b/cfg/Allgemein.cfg @@ -77,9 +77,10 @@ Eigenbau Kaufteil [Ruestcode] +Trümmerbaugruppe HZS Halbzeuge Sägeteile SRC Standard Rüstcode -Trümmerbaugruppe + [RuestcodeStandard] HZS Halbzeuge Sägeteile diff --git a/lib/caditem.py b/lib/caditem.py index 4675db9..d4cd0f0 100644 --- a/lib/caditem.py +++ b/lib/caditem.py @@ -367,7 +367,8 @@ class CadItem(DataModel): 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: + + if str(self.get_current_item_id()) == str(self.get_asm_id()): savePath = True else: savePath = False @@ -513,7 +514,7 @@ class GuiLogic(): """ ret = list() if key == 'cb_pdm_kategorie_neu': - ret = ['cb_neuaufbau', 'cb_aus_halbzeug_neu', 'cb_3Dmodel_neu', 'cb_halbzeugOhneSaege_neu'] + ret = ['cb_neuaufbau', 'cb_aus_halbzeug_neu', 'cb_3Dmodel_neu', 'cb_halbzeugOhneSaege_neu', 'cb_ruestcode_neu'] elif key == 'cb_neuaufbau': ret = [] elif key == 'cb_aus_halbzeug_neu': @@ -569,6 +570,8 @@ class GuiLogic(): ret = [] elif key == 'cb_suche_asm': ret = [] + elif key == 'cb_ladelokal_asm': + ret = [] elif key == 'cb_3dsuchen': ret = [] else: diff --git a/lib/controller.py b/lib/controller.py index 17223a0..d3c5ae4 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -83,7 +83,8 @@ class Controller(Observer): def get_csv_files_of_asm(self, asmid, uselocal): """ sich die Einzelteile als .csv und den Aufbau des Assemblies als .json holen """ - sivas_teilestamm = FetchSivasTeilestamm(asmid, self.get_env("data")) + data_dir = self.get_env("data") + sivas_teilestamm = FetchSivasTeilestamm(asmid, data_dir) # falls uselocal True, dann keine Serverabfrage, sondern mit den lokalen Daten arbeiten sivas_teilestamm.fetch_from_db(uselocal) @@ -91,7 +92,7 @@ class Controller(Observer): sivas_teilestamm.get_unmigrated_teilstamm_csvs() redids = sivas_teilestamm.get_red_ids() - sad = SivasAssemblyData(self.get_env("data"), asmid + '.json') + sad = SivasAssemblyData(data_dir, asmid + '.json') parent_children = sad.get_parent_children() self._model.set_red_ids(redids) @@ -109,12 +110,19 @@ class Controller(Observer): self._view.data_from_model() def data_from_model(self): self._view.data_from_model() + def data_from_view(self, key): + return self._view.data_from_view(key) def get_current_asm_id(self): self._model.get_asm_id() - def set_current_asm_id(self, asm_id): + def set_current_asm_id(self, asm_id, loadlocal=False): + if not asm_id.isnumeric(): + return + # TODO save current given data. In case, ask whether you should save or drop self._model.set_asm_id(asm_id) - + # hole alle Daten vom Server + self.get_csv_files_of_asm(asm_id, loadlocal) + #self._load_cid_data2model(asm_id) def set_current_item_id(self, cid): """setze eine neue Item ID """ @@ -122,9 +130,9 @@ class Controller(Observer): if not cid.isnumeric(): return # nur die red-id Daten können geladen werden. - red_ids = self._model.get_red_ids() - if not cid in red_ids: - return + # red_ids = self._model.get_red_ids() + # if not cid in red_ids: + # return # TODO save current given data. In case, ask whether you should save or drop self._model.set_current_item_id(cid) @@ -206,8 +214,13 @@ class Controller(Observer): elif key == 'cb_zurücksetzen': pass elif key == 'cb_suche_asm': - #self._model.save_to_file() - pass + # hole dir den in die gui eingetragene Nummer + current_asmid = self.data_from_view('asm_id') + self.set_current_asm_id(current_asmid) + elif key == 'cb_ladelokal_asm': + current_asmid = self.data_from_view('asm_id') + # hole dir nur die lokalen Daten. Keine Datenbankabfrage + self.set_current_asm_id(current_asmid, True) elif key == 'cb_3dsuchen': self.suche_3d() diff --git a/lib/gui.py b/lib/gui.py index d979e4a..870d6fc 100644 --- a/lib/gui.py +++ b/lib/gui.py @@ -40,15 +40,6 @@ class AllFrames(): if controller: controller.callback(key, value) - def data_to_model(self, controller): - """schreibt die Daten in das Modell""" - data = self.get_data() - controller.set_gui_dict(data) - - def data_to_model(self, controller, key, value): - """schreibt den Value unter dem key in das Modell""" - controller.set_gui_data(key, value) - class TreeView(): def __init__(self, frame, nrow=0): # a treeview @@ -146,7 +137,16 @@ class LeftFrameAsm(AllFrames): compound = tk.LEFT, command=lambda: self.callback("cb_suche_asm", self.asm_number.get()) ) - asm_search_button.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + asm_search_button.grid(column=col_left, row=self.rownum, sticky=tk.EW, padx=3, pady=3) + self.rownum += 1 + asm_loadlocal_button = ttk.Button( + frame, + text="Lade lokal", + #image=photoimage, + compound = tk.LEFT, + command=lambda: self.callback("cb_ladelokal_asm", self.asm_number.get()) + ) + asm_loadlocal_button.grid(column=col_left, row=self.rownum, sticky=tk.EW, padx=3, pady=3) self.rownum += 1 def get_data(self): @@ -1270,6 +1270,27 @@ class App(): self.rf8.data_from_model() self.rf9.data_from_model() + + def data_from_view(self, key=None): + ret = dict() + ret.update(self.lf1.get_data()) + #self.lf2.get_data() tree hat kein get_data + + ret.update(self.rf1.get_data()) + ret.update(self.rf2.get_data()) + ret.update(self.rf3.get_data()) + ret.update(self.rf4.get_data()) + ret.update(self.rf5.get_data()) + ret.update(self.rf6.get_data()) + ret.update(self.rf7.get_data()) + ret.update(self.rf8.get_data()) + ret.update(self.rf9.get_data()) + + if key: + return ret[key] + else: + return ret + def set_controller(self, controller): """ merken des Handels auf den Controller in jedem Widget""" self._controller = controller