diff --git a/lib/CreoMigrateGui.py b/lib/CreoMigrateGui.py index 1cfa723..5032811 100644 --- a/lib/CreoMigrateGui.py +++ b/lib/CreoMigrateGui.py @@ -11,6 +11,7 @@ from caditem import CadItem class TreeView(): def __init__(self, frame, controller): + self.controller = controller # a treeview # hier Anzahl der sichtbaren Zeilen des Baums angeben: self.tree = ttk.Treeview(frame, height=40) @@ -58,7 +59,10 @@ class TreeView(): def item_selected(self, event): """callback if an item in the tree has been selected """ - id = self.tree.selection()[0] + cid = self.tree.selection()[0] + # trage es + self.controller.set_gui_data('teilenummer', cid) + self.controller.update_view() # for selected_item in self.tree.selection(): # item = self.tree.item(selected_item) # record = item['values'] @@ -68,45 +72,51 @@ class TreeView(): return self.tree class RightFrameLabels(): - def __init__(self, frame, controller): + def __init__(self, frame, controller, nrow=0): self.controller = controller self.frame = frame self.build_gui() self.data_from_model() + self.set_start_rwo(nrow) + + def get_rows(self): + return self.rownum + def set_start_rwo(self, nrow): + if nrow < 0: + raise Exception("this row can not be set") + self.rownum = nrow def build_gui(self): frame = self.frame - rownum = 0 + self.rownum = 0 col_left = 0 # Feld, SIVAS-Werte, Überschriebene Werte feld_label = ttk.Label(frame, text="Feld" ) - feld_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) + feld_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) Sivas_label = ttk.Label(frame, text="SIVAS-Werte" ) - Sivas_label.grid(column=col_left+1, row=rownum, sticky=tk.W, padx=5, pady=5) + Sivas_label.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=5, pady=5) transwritten_label = ttk.Label(frame, text="Überschriebene Werte" ) - transwritten_label.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) + transwritten_label.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) feld_label.configure(font=("Helvetica", 16)) Sivas_label.configure(font=("Helvetica",16)) transwritten_label.configure(font=("Helvetica",16)) - rownum += 1 + self.rownum += 1 separator = ttk.Separator(frame, orient='horizontal') - separator.grid(column=col_left, columnspan=3, row=rownum, sticky=tk.EW, padx=5, pady=5) - rownum += 1 + separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=5, pady=5) + self.rownum += 1 # Teilenummer teilenummer_label = ttk.Label(frame, text="Teilenummer:") - teilenummer_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) + teilenummer_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) self.teilenummer_text = tk.StringVar() teilenummer_entry = ttk.Entry(frame, textvariable=self.teilenummer_text) - teilenummer_entry.grid(column=col_left+1, row=rownum, sticky=tk.W, padx=5, pady=5) - rownum += 1 + teilenummer_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=5, pady=5) + self.rownum += 1 separator2 = ttk.Separator(frame, orient='horizontal') - separator2.grid(column=col_left, columnspan=3, row=rownum, sticky=tk.EW, padx=5, pady=5) - rownum += 1 - - return rownum + separator2.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=5, pady=5) + self.rownum += 1 def get_data(self): @@ -116,7 +126,7 @@ class RightFrameLabels(): def data_to_model(self): data = self.get_data() - self.controller.set_gui_data(data) + self.controller.set_gui_dict(data) def data_from_model(self): data = self.controller.get_all_gui_data() @@ -124,30 +134,38 @@ class RightFrameLabels(): self.teilenummer_text.set(data["teilenummer"]) class RightFramePDM(): - def __init__(self, frame, controller): + def __init__(self, frame, controller, nrow=0): self.controller = controller self.frame = frame self.build_gui() self.data_from_model() + self.set_start_rwo(nrow) + def get_rows(self): + return self.rownum + def set_start_rwo(self, nrow): + if nrow < 0: + raise Exception("this row can not be set") + self.rownum = nrow + def build_gui(self): frame = self.frame - rownum = 4 + self.rownum = 4 col_left = 0 # pdmkategorie pdmkategorie_label = ttk.Label(frame, text="PDM-Kategorie:" ) - pdmkategorie_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) + pdmkategorie_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) self.pdm_category = tk.StringVar() pdmkategorie_combo = ttk.Combobox(frame, textvariable=self.pdm_category) pdmkategorie_combo['values'] = ["Baugruppe", "Einzelteil", "Kaufteil", "NichtSivas", "Normteil", "Schweissbaugruppe"] pdmkategorie_combo['state'] = 'readonly' pdmkategorie_combo.bind('<>', self.combo_callbacks) # falls nötig - pdmkategorie_combo.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) - rownum += 1 + pdmkategorie_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) + self.rownum += 1 # Neuaufbau neuaufbau_label = ttk.Label(frame, text="Neuaufbau:") - neuaufbau_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) + neuaufbau_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) self.neuaufbau = None neuaufbau_checkbutton = ttk.Checkbutton(frame, @@ -155,40 +173,39 @@ class RightFramePDM(): variable=self.neuaufbau, onvalue="True", offvalue="False") - neuaufbau_checkbutton.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) - rownum += 1 + neuaufbau_checkbutton.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) + self.rownum += 1 # Lebenszyklusstatus lebenszyklusstatus_label = ttk.Label(frame, text="Lebenszyklusstatus:") - lebenszyklusstatus_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) + lebenszyklusstatus_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) self.lebenszyklus_status_neu = tk.StringVar() lebenszyklusstatus_combo = ttk.Combobox(frame, textvariable=self.lebenszyklus_status_neu) lebenszyklusstatus_combo['values'] = ["Serie", "Prototyp"] lebenszyklusstatus_combo['state'] = 'readonly' lebenszyklusstatus_combo.bind('<>', self.combo_callbacks) - lebenszyklusstatus_combo.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) - rownum += 1 + lebenszyklusstatus_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) + self.rownum += 1 # aus Halbzeug halbzeug_label = ttk.Label(frame, text="aus Halbzeug:") - halbzeug_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) + halbzeug_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) self.aus_halbzeug_neu = None aushalbzeug_checkbuttonr = ttk.Checkbutton(frame, text='neu', variable=self.aus_halbzeug_neu, onvalue="True", offvalue="False") - aushalbzeug_checkbuttonr.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) - rownum += 1 + aushalbzeug_checkbuttonr.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) + self.rownum += 1 # Zusatzinformationen zusatzinfos_label = ttk.Label(frame, text="Zusatzinformationen:") - zusatzinfos_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) + zusatzinfos_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) self.zusatzinfos_text = tk.StringVar() zusatzinfos_entry = ttk.Entry(frame, textvariable=self.zusatzinfos_text) - zusatzinfos_entry.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) - rownum += 1 - return rownum + zusatzinfos_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) + self.rownum += 1 def get_data(self): return { @@ -201,7 +218,10 @@ class RightFramePDM(): def data_to_model(self): data = self.get_data() - self.controller.set_gui_data(data) + self.controller.set_gui_dict(data) + + def data_to_model(self, key, value): + self.controller.set_gui_data(key, value) def data_from_model(self): data = self.controller.get_all_gui_data() @@ -253,8 +273,16 @@ class App(): gridhdl = self.tv.get_handle() gridhdl.grid(row=0, column=0, sticky=tk.NSEW) - self.rf0 = RightFrameLabels(right_frame, controller) - self.rf1 = RightFramePDM(right_frame, controller) + self.rf0 = RightFrameLabels(right_frame, controller, 0) + nrows = self.rf0.get_rows() + self.rf1 = RightFramePDM(right_frame, controller, nrows) + nrows = self.rf1.get_rows() + #self.rf2 = RightFramePDM(right_frame, controller, nrows) + # TODO usw. + + def update_view(self): + self.rf0.update_view() + self.rf1.update_view() def mainloop(self): diff --git a/lib/caditem.py b/lib/caditem.py index 7fc4433..8543b8e 100644 --- a/lib/caditem.py +++ b/lib/caditem.py @@ -1,3 +1,4 @@ +import json class CadItem(): """ This item contains all data for writing all necessary data to the solid edg cad file @@ -27,9 +28,19 @@ class CadItem(): "TOS_Trolley_Projekte", "TOS_Trolley_Omniflo", "TOS_Trolley_Spinnerei", "TOS_Trolley_ILS", "Änderungsbeschreibung", "Freigabevermerk", "ZusaetzlicheInformationen"] - gui_data_keys = [ "pdm_kategorie_neu", "neuaufbau", - "lebenszyklus_status_neu", "aus_halbzeug_neu", - "zusatzinfos_txt_neu"] + gui_data_keys = [ "teilenummer", + "pdm_kategorie_neu", + "neuaufbau", + "lebenszyklus_status_neu", + "aus_halbzeug_neu", + "zusatzinfos_txt_neu", + "bezeichnung_sivas", "bezeichnung_neu", + "beschaffungsart_sivas","beschaffungsart_neu" + "mengeneinheit_sivas","mengeneinheit_neu" + "halbzeug_sivas","halbzeug_neu", + "tos_gruppe_sivas","tos_gruppe_neu" + # TODO siehe Layout Entwurf svg + ] def __init__(self, asm_id): """ is initalized with its unique id""" @@ -48,6 +59,7 @@ class CadItem(): return self.prt_id def set_part_id(self, prt_id): self.prt_id = prt_id + self.gui_data["teilenummer"] = prt_id def set_parent_children(self, parent_children_mapping): @@ -100,8 +112,15 @@ class CadItem(): return self.gui_data def load(): - pass + #try: + # with open('data.json', 'r') as f: + # self.model.todos = json.load(f) + #except Exception: + # pass + pass def save(): + #with open('data.json', 'w') as f: + # data = json.dump(self.model.data, f) pass class CadItemRepository: diff --git a/lib/controller.py b/lib/controller.py index 98ccf14..b22ccc4 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -9,6 +9,9 @@ class Controller(): def __init__(self, model): self.model = model + def update_view(self): + pass + def get_current_asm_id(self): self.model.get_current_asm_id() def set_current_asm_id(self, asm_id): diff --git a/lib/test_gui.py b/lib/test_gui.py index f1b1c0e..669cd95 100644 --- a/lib/test_gui.py +++ b/lib/test_gui.py @@ -69,6 +69,7 @@ parent_children_mapping = {'400102196': ['400102125', '400102126', '400102130', model = CadItem("400102196") +model.set_part_id("400102142") gui_data = { "pdm_kategorie_neu":"Einzelteil", "neuaufbau" :"False",