diff --git a/lib/CreoMigrateGui.py b/lib/CreoMigrateGui.py index 7194dee..1cfa723 100644 --- a/lib/CreoMigrateGui.py +++ b/lib/CreoMigrateGui.py @@ -10,7 +10,7 @@ from caditem import CadItem class TreeView(): - def __init__(self, frame): + def __init__(self, frame, controller): # a treeview # hier Anzahl der sichtbaren Zeilen des Baums angeben: self.tree = ttk.Treeview(frame, height=40) @@ -67,17 +67,72 @@ class TreeView(): def get_handle(self): return self.tree +class RightFrameLabels(): + def __init__(self, frame, controller): + self.controller = controller + self.frame = frame + self.build_gui() + self.data_from_model() + + def build_gui(self): + frame = self.frame + 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) + Sivas_label = ttk.Label(frame, text="SIVAS-Werte" ) + Sivas_label.grid(column=col_left+1, row=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) + + feld_label.configure(font=("Helvetica", 16)) + Sivas_label.configure(font=("Helvetica",16)) + transwritten_label.configure(font=("Helvetica",16)) + 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 + + # Teilenummer + teilenummer_label = ttk.Label(frame, text="Teilenummer:") + teilenummer_label.grid(column=col_left, row=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 + 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 + + + def get_data(self): + return { + "teilennummer": self.teilenummer_text.get(), + } + + def data_to_model(self): + data = self.get_data() + self.controller.set_gui_data(data) + + def data_from_model(self): + data = self.controller.get_all_gui_data() + if 'teilenummer' in data: + self.teilenummer_text.set(data["teilenummer"]) class RightFramePDM(): def __init__(self, frame, controller): self.controller = controller self.frame = frame self.build_gui() - self.from_model() + self.data_from_model() def build_gui(self): frame = self.frame - rownum = 0 + rownum = 4 col_left = 0 # pdmkategorie pdmkategorie_label = ttk.Label(frame, text="PDM-Kategorie:" ) @@ -144,11 +199,11 @@ class RightFramePDM(): "zusatzinfos_txt_neu": self.zusatzinfos_text.get(), } - def to_model(self): + def data_to_model(self): data = self.get_data() self.controller.set_gui_data(data) - def from_model(self): + def data_from_model(self): data = self.controller.get_all_gui_data() if 'pdm_kategorie_neu' in data: self.pdm_category.set(data["pdm_kategorie_neu"]) @@ -187,96 +242,25 @@ class App(): right_frame = ttk.Frame(self.root, width=650, height=800) right_frame.grid(row=0, column=1, padx=10, pady=5) - style = ttk.Style(self.root) style.theme_use('classic') current_id = self.controller.get_current_asm_id() parent_children_mapping = self.controller.get_parent_children() red_ids = self.controller.get_red_ids() - self.tv = TreeView(left_frame) + self.tv = TreeView(left_frame, controller) self.tv.create(parent_children_mapping, red_ids) 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.create_widgets(right_frame) - - - def create_widgets(self, frame): - rownum = 0 - 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_entry = ttk.Entry(frame) - pdmkategorie_entry.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) - 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) - - self.neuaufbau = None - neuaufbau_checkbutton = ttk.Checkbutton(frame, - text='ja', - command=self.var_changed("neuaufbau"), - 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 - - # Lebenszyklusstatus - lebenszyklusstatus_label = ttk.Label(frame, text="Lebenszyklusstatus:") - lebenszyklusstatus_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) - lebenszyklusstatus_entry = ttk.Entry(frame, show="*") - lebenszyklusstatus_entry.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) - rownum += 1 - - halbzeug_label = ttk.Label(frame, text="Halbzeug:") - halbzeug_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) - self.aus_halbzeug_sivas = None - aushalbzeug_checkbutton_sivas = ttk.Checkbutton(frame, - text='aus Sivas', - command=self.var_changed("aus_halbzeug_sivas"), - variable=self.aus_halbzeug_sivas, - onvalue=True, - offvalue=False) - aushalbzeug_checkbutton_sivas.grid(column=col_left+1, row=rownum, sticky=tk.W, padx=5, pady=5) - self.aus_halbzeug_neu = None - aushalbzeug_checkbuttonr = ttk.Checkbutton(frame, - text='neu', - command=self.var_changed("aus_halbzeug_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 def mainloop(self): self.root.mainloop() -# class Navbar(tk.Frame): ... -# class Toolbar(tk.Frame): ... -# class Statusbar(tk.Frame): ... -# class Main(tk.Frame): ... - -# class MainApp(tk.Frame): - # def __init__(self, parent, *args, **kwargs): - # tk.Frame.__init__(self, parent, *args, **kwargs) - # self.statusbar = Statusbar(self, ...) - # self.toolbar = Toolbar(self, ...) - # self.navbar = Navbar(self, ...) - # self.main = Main(self, ...) - - # self.statusbar.pack(side="bottom", fill="x") - # self.toolbar.pack(side="top", fill="x") - # self.navbar.pack(side="left", fill="y") - # self.main.pack(side="right", fill="both", expand=True) - if __name__ == "__main__": """ using the Model-View-Controller (MVC) Pattern diff --git a/lib/caditem.py b/lib/caditem.py index 592412b..7fc4433 100644 --- a/lib/caditem.py +++ b/lib/caditem.py @@ -27,6 +27,9 @@ 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"] def __init__(self, asm_id): """ is initalized with its unique id""" @@ -62,7 +65,8 @@ class CadItem(): def get_red_ids(self): return self.red_ids - def set_data(self, data:dict): + # Daten zum Impfen merken + def set_data_dict(self, data:dict): for k,v in data: self.set_data(k,v) def set_data(self, key, val): @@ -72,7 +76,28 @@ class CadItem(): self.data[key] = val def get_data(self, key): + """ gibt ein Datenstück zurück """ return self.data[key] + def get_all_data(self): + """ gibt alle enthaltenen Daten zurück """ + return self.data + + # Daten in der GUI + def set_gui_dict(self, data:dict): + """ setzt die Daten der GUI """ + for k,v in data.items(): + self.set_gui_data(k,v) + def set_gui_data(self, key, val): + """ merkt sich ein Datenatom für die GUI """ + if key not in self.gui_data_keys: + raise Exception("this data can not be set"+ key) + else: + self.gui_data[key] = val + + def get_gui_data(self, key): + return self.gui_data[key] + def get_all_gui_data(self): + return self.gui_data def load(): pass diff --git a/lib/controller.py b/lib/controller.py index dc128fe..98ccf14 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -23,8 +23,34 @@ class Controller(): self.model.set_parent_children(parent_children_mapping) def get_parent_children(self): return self.model.get_parent_children() + + # merkt sich die reinen Daten zum Impfen + def set_data_dict(self, data:dict): + """merken der Daten zum Impfen""" + for k,v in data: + self.set_data(k,v) def set_data(self, key, value): + """merken der Daten zum Impfen""" self.model.set_data(key, value) + def get_data(self, key): + return self.model.get_data(key) + def get_all_data(self): + return self.model.get_all_data() + + # merkt sich die Nutzereingaben, bzw. Daten für die GUI + def set_gui_dict(self, data:dict): + """merken der Eingaben des Nutzers der GUI """ + for k,v in data: + self.set_gui_data(k,v) + def set_gui_data(self, key, value): + """merken der Eingaben des Nutzers der GUI """ + self.model.set_gui_data(key, value) + + def get_gui_data(self, key): + return self.model.get_gui_data(key) + def get_all_gui_data(self): + return self.model.get_all_gui_data() + if __name__ == "__main__": pass diff --git a/lib/test_gui.py b/lib/test_gui.py index 2fe2c42..f1b1c0e 100644 --- a/lib/test_gui.py +++ b/lib/test_gui.py @@ -69,10 +69,18 @@ parent_children_mapping = {'400102196': ['400102125', '400102126', '400102130', model = CadItem("400102196") +gui_data = { + "pdm_kategorie_neu":"Einzelteil", + "neuaufbau" :"False", + "lebenszyklus_status_neu" :"Serie", + "neuaufbau" :"", + "aus_halbzeug_neu" :"True", + } +model.set_gui_dict(gui_data) +model.set_parent_children(parent_children_mapping) +model.set_red_ids(red_ids) controller = Controller(model) -controller.set_parent_children(parent_children_mapping) -controller.set_red_ids(red_ids) root = tk.Tk() app = App(root, controller)