From 87ccabbd60b22861b4d6bc970756de320ea2716e Mon Sep 17 00:00:00 2001 From: mistangl Date: Thu, 18 Jan 2024 17:34:36 +0100 Subject: [PATCH] Hauptfenster scrollbar gemacht. Alle Button, Entries etc. des ersten Designs umgesetzt --- lib/gui.py | 859 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 780 insertions(+), 79 deletions(-) diff --git a/lib/gui.py b/lib/gui.py index 016dfa8..4d40d52 100644 --- a/lib/gui.py +++ b/lib/gui.py @@ -2,22 +2,69 @@ import tkinter as tk from tkinter import ttk from controller import Controller from caditem import CadItem -#from tkinter import messagebox +#from ttkbootstrap.constants import * +#from ttkbootstrap.scrolled import ScrolledFrame + #import logging #logger = logging.getLogger(__name__) + +def OnMouseWheel(self,event): + self.scrollbar1.yview("scroll",event.delta,"units") + return "break" + +class AllFrames(): + """ enthält alle gleichen Methoden für die Widgets in der rechte Spalte + """ + def __init__(self, nrow=0): + self.set_start_row(nrow) + self._controller = None + + def get_rows(self): + """gibt die Anzahl der von diesem Widget belegten Zeilen zurück""" + return self.rownum + + def set_start_row(self, nrow): + """setzt für diesen Frame die Anfangszeile""" + if nrow < 0: + raise Exception("this row can not be set") + self.rownum = nrow + + def set_controller(self, controller): + self._controller = controller + def get_controller(self): + return self._controller + + def callback(self, key): + """ruft den Controller und damit die Businesslogic auf, dass dieser key gerade in die Oberfläche gesetzt wurde""" + controller = self.get_controller() + if controller: + controller.callback(key) + + 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) + + def set_button_content(self, adict): + pass + class TreeView(): def __init__(self, frame, nrow=0): # a treeview # hier Anzahl der sichtbaren Zeilen des Baums angeben: - self.tree = ttk.Treeview(frame, height=40) + self.tree = ttk.Treeview(frame, height=47) # TODO hier anstatt root die Statistik rein schreiben. self.tree.heading('#0', text='root', anchor=tk.W) self.tree.grid(row=nrow, column=0, sticky=tk.NSEW) # add a scrollbar - scrollbar = ttk.Scrollbar(frame, orient=tk.VERTICAL, command=self.tree.yview) + scrollbar = ttk.Scrollbar(frame, orient='vertical', command=self.tree.yview) self.tree.configure(yscroll=scrollbar.set) scrollbar.grid(row=nrow, column=1, sticky='ns') @@ -76,47 +123,6 @@ class TreeView(): self.controller.set_gui_data('teilenummer', cid) self.controller.refresh_gui() - -class AllFrames(): - """ enthält alle gleichen Methoden für die Widgets in der rechte Spalte - """ - def __init__(self, nrow=0): - self.set_start_row(nrow) - self._controller = None - - def get_rows(self): - """gibt die Anzahl der von diesem Widget belegten Zeilen zurück""" - return self.rownum - - def set_start_row(self, nrow): - """setzt für diesen Frame die Anfangszeile""" - if nrow < 0: - raise Exception("this row can not be set") - self.rownum = nrow - - def set_controller(self, controller): - self._controller = controller - def get_controller(self): - return self._controller - - def callback(self, key): - """ruft den Controller und damit die Businesslogic auf, dass dieser key gerade in die Oberfläche gesetzt wurde""" - controller = self.get_controller() - if controller: - controller.callback(key) - - 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) - - def set_button_content(self, adict): - pass - class LeftFrameAsm(AllFrames): def __init__(self, frame, nrow=0, configs=None): AllFrames.__init__(self, nrow) @@ -129,11 +135,11 @@ class LeftFrameAsm(AllFrames): col_left = 0 # Baugruppennummer asm_label = ttk.Label(frame, text="Baugruppennummer:" ) - asm_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) + asm_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 self.asm_number = tk.StringVar() asm_entry = ttk.Entry(frame, textvariable=self.asm_number, width=9) - asm_entry.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) + asm_entry.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 def get_data(self): @@ -158,31 +164,31 @@ class RightFrameLabels(AllFrames): col_left = 0 # Feld, SIVAS-Werte, Überschriebene Werte feld_label = ttk.Label(frame, text="Feld" ) - feld_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) + feld_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) Sivas_label = ttk.Label(frame, text="SIVAS-Werte" ) - Sivas_label.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=5, pady=5) + Sivas_label.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) transwritten_label = ttk.Label(frame, text="Überschriebene Werte" ) - transwritten_label.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) + transwritten_label.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) - feld_label.configure(font=("Helvetica", 16)) - Sivas_label.configure(font=("Helvetica",16)) - transwritten_label.configure(font=("Helvetica",16)) + feld_label.configure(font=("Helvetica", 12)) + Sivas_label.configure(font=("Helvetica",12)) + transwritten_label.configure(font=("Helvetica",12)) self.rownum += 1 separator = ttk.Separator(frame, orient='horizontal') - separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=5, pady=5) + separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3) self.rownum += 1 # Teilenummer teilenummer_label = ttk.Label(frame, text="Teilenummer:") - teilenummer_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) + teilenummer_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.teilenummer_text = tk.StringVar() - teilenummer_entry = ttk.Entry(frame, textvariable=self.teilenummer_text) - teilenummer_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=5, pady=5) + teilenummer_entry = ttk.Entry(frame, textvariable=self.teilenummer_text, width=9) + teilenummer_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) teilenummer_entry.bind('<>', lambda event:self.callback("teilenummer")) self.rownum += 1 separator2 = ttk.Separator(frame, orient='horizontal') - separator2.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=5, pady=5) + separator2.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3) self.rownum += 1 @@ -196,7 +202,6 @@ class RightFrameLabels(AllFrames): if 'teilenummer' in data: self.teilenummer_text.set(data["teilenummer"]) - class RightFramePDM(AllFrames): def __init__(self, frame, nrow=0, configs=None): AllFrames.__init__(self, nrow) @@ -210,18 +215,18 @@ class RightFramePDM(AllFrames): # pdmkategorie categories = configs.Allgemein.get_options("Kategorien") #"Baugruppe", "Einzelteil", "Kaufteil", "NichtSivas", "Normteil", "Schweissbaugruppe" pdmkategorie_label = ttk.Label(frame, text="PDM-Kategorie:" ) - pdmkategorie_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) + pdmkategorie_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.pdm_category = tk.StringVar() pdmkategorie_combo = ttk.Combobox(frame, textvariable=self.pdm_category) pdmkategorie_combo['values'] = categories pdmkategorie_combo['state'] = 'readonly' pdmkategorie_combo.bind('<>', lambda event:self.callback('pdm_kategorie_neu')) - pdmkategorie_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) + pdmkategorie_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 # Neuaufbau neuaufbau_label = ttk.Label(frame, text="Neuaufbau:") - neuaufbau_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) + neuaufbau_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.neuaufbau = None neuaufbau_checkbutton = ttk.Checkbutton(frame, @@ -230,24 +235,24 @@ class RightFramePDM(AllFrames): command=lambda: self.callback("neuaufbau"), onvalue=True, offvalue=False) - neuaufbau_checkbutton.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) + neuaufbau_checkbutton.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 # Lebenszyklusstatus lstatus = configs.Allgemein.get_options("Lebenszyklus") # Serie, Prototyp lebenszyklusstatus_label = ttk.Label(frame, text="Lebenszyklusstatus:") - lebenszyklusstatus_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) + lebenszyklusstatus_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.lebenszyklus_status_neu = tk.StringVar() lebenszyklusstatus_combo = ttk.Combobox(frame, textvariable=self.lebenszyklus_status_neu) lebenszyklusstatus_combo['values'] = lstatus lebenszyklusstatus_combo['state'] = 'readonly' lebenszyklusstatus_combo.bind('<>', lambda event:self.callback('lebenszyklus_status_neu')) - lebenszyklusstatus_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) + lebenszyklusstatus_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 # aus Halbzeug halbzeug_label = ttk.Label(frame, text="aus Halbzeug:") - halbzeug_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) + halbzeug_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.aus_halbzeug_neu = None aushalbzeug_checkbuttonr = ttk.Checkbutton(frame, text='neu', @@ -255,17 +260,22 @@ class RightFramePDM(AllFrames): command=lambda: self.callback("aus_halbzeug_neu"), onvalue=True, offvalue=False) - aushalbzeug_checkbuttonr.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) + aushalbzeug_checkbuttonr.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 # Zusatzinformationen zusatzinfos_label = ttk.Label(frame, text="Zusatzinformationen:") - zusatzinfos_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) + zusatzinfos_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.zusatzinfos_text = tk.StringVar() zusatzinfos_entry = ttk.Entry(frame, textvariable=self.zusatzinfos_text) - zusatzinfos_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) + zusatzinfos_entry.grid(column=col_left+1, columnspan=2, row=self.rownum, sticky=tk.EW+tk.NS, padx=3, pady=3) self.rownum += 1 + separator = ttk.Separator(frame, orient='horizontal') + separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3) + self.rownum += 1 + + def get_data(self): return { "pdm_kategorie_neu": self.pdm_category.get(), @@ -288,7 +298,645 @@ class RightFramePDM(AllFrames): if 'zusatzinfos_text_neu' in data: self.zusatzinfos_text.set(data["zusatzinfos_text_neu"]) +class RightFrameBezeichnung(AllFrames): + def __init__(self, frame, nrow=0, configs=None): + AllFrames.__init__(self, nrow) + self.frame = frame + self.build_widgets(configs) + def build_widgets(self, configs): + frame = self.frame + self.rownum = AllFrames.get_rows(self) + col_left = 0 + + categories = configs.Allgemein.get_options("Kategorien") + + # Bezeichnung 1 + bezeichnung1_label = ttk.Label(frame, text="Bezeichnung 1:" ) + bezeichnung1_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.bezeichnung1_sivas = tk.StringVar() + bezeichnung1_entry = ttk.Entry(frame, textvariable=self.bezeichnung1_sivas) + bezeichnung1_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.bezeichnung1_neu = tk.StringVar() + bezeichnung1_neu_entry = ttk.Entry(frame, textvariable=self.bezeichnung1_neu) + bezeichnung1_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Bezeichnung 2 + bezeichnung2_label = ttk.Label(frame, text="Bezeichnung 2:" ) + bezeichnung2_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.bezeichnung2_sivas = tk.StringVar() + bezeichnung2_entry = ttk.Entry(frame, textvariable=self.bezeichnung2_sivas) + bezeichnung2_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Beschaffungsart + beschaffungsart_label = ttk.Label(frame, text="Beschaffungsart:" ) + beschaffungsart_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.beschaffungsart_sivas = tk.StringVar() + beschaffungsart_entry = ttk.Entry(frame, textvariable=self.beschaffungsart_sivas) + beschaffungsart_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.beschaffungsart_neu = tk.StringVar() + beschaffungsart_combo = ttk.Combobox(frame, textvariable=self.beschaffungsart_neu) + beschaffungsart_combo['values'] = categories + beschaffungsart_combo['state'] = 'readonly' + beschaffungsart_combo.bind('<>', lambda event:self.callback('beschaffungsart_neu')) + beschaffungsart_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Mengeneinheit + mengeneinheit_label = ttk.Label(frame, text="Mengeneinheit:" ) + mengeneinheit_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.mengeneinheit_sivas = tk.StringVar() + mengeneinheit_entry = ttk.Entry(frame, textvariable=self.mengeneinheit_sivas) + mengeneinheit_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.mengeneinheit_neu = tk.StringVar() + mengeneinheit_combo = ttk.Combobox(frame, textvariable=self.mengeneinheit_neu) + mengeneinheit_combo['values'] = categories + mengeneinheit_combo['state'] = 'readonly' + mengeneinheit_combo.bind('<>', lambda event:self.callback('mengeneinheit_neu')) + mengeneinheit_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Halbzeug + halbzeug_label = ttk.Label(frame, text="Halbzeug:" ) + halbzeug_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.halbzeug_sivas = tk.StringVar() + halbzeug_entry = ttk.Entry(frame, textvariable=self.halbzeug_sivas) + halbzeug_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.halbzeug_neu = tk.StringVar() + halbzeug_combo = ttk.Combobox(frame, textvariable=self.halbzeug_neu) + halbzeug_combo['values'] = categories + halbzeug_combo['state'] = 'readonly' + halbzeug_combo.bind('<>', lambda event:self.callback('halbzeug_neu')) + halbzeug_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + separator = ttk.Separator(frame, orient='horizontal') + separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3) + self.rownum += 1 + + + def get_data(self): + return { + "bezeichnung1_sivas": self.bezeichnung1_sivas.get(), + "bezeichnung1_neu": self.bezeichnung1_neu.get(), + "bezeichnung2_sivas": self.bezeichnung2_sivas.get(), + "bezeichnung2_neu": self.bezeichnung2_neu.get(), + "beschaffungsart_sivas": self.beschaffungsart_sivas.get(), + "beschaffungsart_neu": self.beschaffungsart_neu.get(), + "mengeneinheit_sivas": self.mengeneinheit_sivas.get(), + "mengeneinheit_neu": self.mengeneinheit_neu.get(), + "halbzeug_sivas": self.halbzeug_sivas.get(), + "halbzeug_neu": self.halbzeug_neu.get(), + } + + def data_from_model(self): + data = self.get_controller().get_all_gui_data() + if 'bezeichnung1_sivas' in data: + self.bezeichnung1_sivas.set(data["bezeichnung1_sivas"]) + if 'bezeichnung1_neu' in data: + self.bezeichnung1_neu.set(data["bezeichnung1_neu"]) + if 'bezeichnung2_sivas' in data: + self.bezeichnung2_sivas.set(data["bezeichnung2_sivas"]) + if 'bezeichnung2_neu' in data: + self.bezeichnung2_neu.set(data["bezeichnung2_neu"]) + if 'beschaffungsart_sivas' in data: + self.beschaffungsart_sivas.set(data["beschaffungsart_sivas"]) + if 'beschaffungsart_neu' in data: + self.beschaffungsart_neu.set(data["beschaffungsart_neu"]) + if 'mengeneinheit_sivas' in data: + self.mengeneinheit_sivas.set(data["mengeneinheit_sivas"]) + if 'mengeneinheit_neu' in data: + self.mengeneinheit_neu.set(data["mengeneinheit_neu"]) + if 'halbzeug_sivas' in data: + self.halbzeug_sivas.set(data["halbzeug_sivas"]) + if 'halbzeug_neu' in data: + self.halbzeug_neu.set(data["halbzeug_neu"]) + +class RightFrameTOSGruppe(AllFrames): + def __init__(self, frame, nrow=0, configs=None): + AllFrames.__init__(self, nrow) + self.frame = frame + self.build_widgets(configs) + + def build_widgets(self, configs): + frame = self.frame + self.rownum = AllFrames.get_rows(self) + col_left = 0 + + categories = configs.Allgemein.get_options("Kategorien") + + # TOS-Gruppe + tosgruppe_label = ttk.Label(frame, text="TOS-Gruppe:" ) + tosgruppe_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.tosgruppe_sivas = tk.StringVar() + tosgruppe_entry = ttk.Entry(frame, textvariable=self.tosgruppe_sivas) + tosgruppe_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.tosgruppe_neu = tk.StringVar() + tosgruppe_neu_entry = ttk.Entry(frame, textvariable=self.tosgruppe_neu) + tosgruppe_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Dispogruppe + dispogruppe_label = ttk.Label(frame, text="Dispogruppe:" ) + dispogruppe_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.dispogruppe_sivas = tk.StringVar() + dispogruppe_entry = ttk.Entry(frame, textvariable=self.dispogruppe_sivas) + dispogruppe_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.dispogruppe_neu = tk.StringVar() + dispogruppe_neu_combo = ttk.Combobox(frame, textvariable=self.dispogruppe_neu) + dispogruppe_neu_combo['values'] = categories + dispogruppe_neu_combo['state'] = 'readonly' + dispogruppe_neu_combo.bind('<>', lambda event:self.callback('dispogruppe_neu')) + dispogruppe_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Dispolaufgruppe + dispolaufgruppe_label = ttk.Label(frame, text="Dispolaufgruppe:" ) + dispolaufgruppe_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.dispolaufgruppe_sivas = tk.StringVar() + dispolaufgruppe_entry = ttk.Entry(frame, textvariable=self.dispolaufgruppe_sivas) + dispolaufgruppe_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.dispolaufgruppe_neu = tk.StringVar() + dispolaufgruppe_neu_combo = ttk.Combobox(frame, textvariable=self.dispolaufgruppe_neu) + dispolaufgruppe_neu_combo['values'] = categories + dispolaufgruppe_neu_combo['state'] = 'readonly' + dispolaufgruppe_neu_combo.bind('<>', lambda event:self.callback('dispolaufgruppe_neu')) + dispolaufgruppe_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Ersatz für + ersatzfuer_label = ttk.Label(frame, text="Ersatz für:" ) + ersatzfuer_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.ersatzfuer_sivas = tk.StringVar() + ersatzfuer_entry = ttk.Entry(frame, textvariable=self.ersatzfuer_sivas) + ersatzfuer_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.ersatzfuer_neu = tk.StringVar() + ersatzfuer_neu_entry = ttk.Entry(frame, textvariable=self.ersatzfuer_neu) + ersatzfuer_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Ersetzt durch + ersetztdurch_label = ttk.Label(frame, text="Ersetzt durch:" ) + ersetztdurch_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.ersetztdurch_sivas = tk.StringVar() + ersetztdurch_entry = ttk.Entry(frame, textvariable=self.ersetztdurch_sivas) + ersetztdurch_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.ersetztdurch_neu = tk.StringVar() + ersetztdurch_neu_entry = ttk.Entry(frame, textvariable=self.ersetztdurch_neu) + ersetztdurch_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + # Ersetzt durch + + # Hersteller + hersteller_label = ttk.Label(frame, text="Hersteller:" ) + hersteller_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.hersteller_sivas = tk.StringVar() + hersteller_entry = ttk.Entry(frame, textvariable=self.hersteller_sivas) + hersteller_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.hersteller_neu = tk.StringVar() + hersteller_neu_combo = ttk.Combobox(frame, textvariable=self.hersteller_neu) + hersteller_neu_combo['values'] = categories + hersteller_neu_combo['state'] = 'readonly' + hersteller_neu_combo.bind('<>', lambda event:self.callback('hersteller_neu')) + hersteller_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Hersteller Teilenummer + herstteilenr_label = ttk.Label(frame, text="Hersteller Teilenummer:" ) + herstteilenr_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.herstteilenr_sivas = tk.StringVar() + herstteilenr_entry = ttk.Entry(frame, textvariable=self.herstteilenr_sivas) + herstteilenr_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.herstteilenr_neu = tk.StringVar() + herstteilenr_neu_entry = ttk.Entry(frame, textvariable=self.herstteilenr_neu) + herstteilenr_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + # Ersetzt durch + + separator = ttk.Separator(frame, orient='horizontal') + separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3) + self.rownum += 1 + + + def get_data(self): + return { + "tosgruppe_neu": self.tosgruppe_neu.get(), + "tosgruppe_sivas": self.tosgruppe_sivas.get(), + "dispogruppe_neu": self.dispogruppe_neu.get(), + "dispogruppe_sivas": self.dispogruppe_sivas.get(), + "dispolaufgruppe_neu": self.dispolaufgruppe_neu.get(), + "dispolaufgruppe_sivas": self.dispolaufgruppe_sivas.get(), + "hersteller_neu": self.hersteller_neu.get(), + "hersteller_sivas": self.hersteller_sivas.get(), + "ersatzfuer_neu": self.ersatzfuer_neu.get(), + "ersatzfuer_sivas": self.ersatzfuer_sivas.get(), + "ersetztdurch_neu": self.ersetztdurch_neu.get(), + "ersetztdurch_sivas": self.ersetztdurch_sivas.get(), + "herstteilenr_sivas": self.herstteilenr_sivas.get(), + "herstteilenr_neu": self.herstteilenr_neu.get(), + } + + def data_from_model(self): + data = self.get_controller().get_all_gui_data() + if 'tosgruppe_sivas' in data: + self.tosgruppe_sivas.set(data["tosgruppe_sivas"]) + if 'tosgruppe_neu' in data: + self.tosgruppe_neu.set(data["tosgruppe_neu"]) + if 'dispogruppe_sivas' in data: + self.dispogruppe_sivas.set(data["dispogruppe_sivas"]) + if 'dispogruppe_neu' in data: + self.dispogruppe_neu.set(data["dispogruppe_neu"]) + if 'dispolaufgruppe_sivas' in data: + self.dispolaufgruppe_sivas.set(data["dispolaufgruppe_sivas"]) + if 'dispolaufgruppe_neu' in data: + self.dispolaufgruppe_neu.set(data["dispolaufgruppe_neu"]) + if 'ersatzfuer_sivas' in data: + self.ersatzfuer_sivas.set(data["ersatzfuer_sivas"]) + if 'ersatzfuer_neu' in data: + self.ersatzfuer_neu.set(data["ersatzfuer_neu"]) + if 'ersetztdurch_sivas' in data: + self.ersetztdurch_sivas.set(data["ersetztdurch_sivas"]) + if 'ersetztdurch_neu' in data: + self.ersetztdurch_neu.set(data["ersetztdurch_neu"]) + if 'hersteller_sivas' in data: + self.hersteller_sivas.set(data["hersteller_sivas"]) + if 'hersteller_neu' in data: + self.hersteller_neu.set(data["hersteller_neu"]) + if 'herstteilenr_sivas' in data: + self.herstteilenr_sivas.set(data["herstteilenr_sivas"]) + if 'herstteilenr_neu' in data: + self.herstteilenr_neu.set(data["herstteilenr_neu"]) + +class RightFrameWerkstoffdiskrepanz(AllFrames): + def __init__(self, frame, nrow=0, configs=None): + AllFrames.__init__(self, nrow) + self.frame = frame + self.build_widgets(configs) + + def build_widgets(self, configs): + frame = self.frame + self.rownum = AllFrames.get_rows(self) + col_left = 0 + + categories = configs.Allgemein.get_options("Kategorien") + + # Werkstoffdiskrepanz + werkstoffdiskr_label = ttk.Label(frame, text="Werkstoffdiskrepanz:") + werkstoffdiskr_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.werkstoffdiskrepanz= None + werkstoffdiskr_checkbutton = ttk.Checkbutton(frame, + text='ja', + variable=self.werkstoffdiskrepanz, + command=lambda: self.callback("werkstoffdiskrepanz"), + onvalue=True, + offvalue=False) + werkstoffdiskr_checkbutton.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Werkstofftyp + werkstofftyp_label = ttk.Label(frame, text="Werkstofftyp:" ) + werkstofftyp_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.werkstofftyp_neu = tk.StringVar() + werkstofftyp_neu_combo = ttk.Combobox(frame, textvariable=self.werkstofftyp_neu) + werkstofftyp_neu_combo['values'] = categories + werkstofftyp_neu_combo['state'] = 'readonly' + werkstofftyp_neu_combo.bind('<>', lambda event:self.callback('werkstofftyp_neu')) + werkstofftyp_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Material + material_label = ttk.Label(frame, text="Material:" ) + material_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.material_sivas = tk.StringVar() + material_entry = ttk.Entry(frame, textvariable=self.material_sivas) + material_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.material_neu = tk.StringVar() + material_neu_combo = ttk.Combobox(frame, textvariable=self.material_neu) + material_neu_combo['values'] = categories + material_neu_combo['state'] = 'readonly' + material_neu_combo.bind('<>', lambda event:self.callback('material_neu')) + material_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + + # Oberfläche + oberflaeche_label = ttk.Label(frame, text="Oberfläche:" ) + oberflaeche_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.oberflaeche_neu = tk.StringVar() + oberflaeche_neu_combo = ttk.Combobox(frame, textvariable=self.oberflaeche_neu) + oberflaeche_neu_combo['values'] = categories + oberflaeche_neu_combo['state'] = 'readonly' + oberflaeche_neu_combo.bind('<>', lambda event:self.callback('oberflaeche_neu')) + oberflaeche_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Farbe + farbe_label = ttk.Label(frame, text="Farbe:" ) + farbe_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.farbe_neu = tk.StringVar() + farbe_neu_combo = ttk.Combobox(frame, textvariable=self.farbe_neu) + farbe_neu_combo['values'] = categories + farbe_neu_combo['state'] = 'readonly' + farbe_neu_combo.bind('<>', lambda event:self.callback('farbe_neu')) + farbe_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + separator = ttk.Separator(frame, orient='horizontal') + separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3) + self.rownum += 1 + + def get_data(self): + return { + "werkstoffdiskr_sivas": self.werkstoffdiskrepanz, + "werkstofftyp_sivas": self.werkstofftyp_sivas.get(), + "werkstofftyp_neu": self.werkstofftyp_neu.get(), + "material_sivas": self.material_sivas.get(), + "material_neu": self.material_neu.get(), + "oberflaeche_neu": self.oberflaeche_neu.get(), + "farbe_neu": self.farbe_neu.get(), + } + + def data_from_model(self): + data = self.get_controller().get_all_gui_data() + if 'werkstoffdiskr_sivas' in data: + self.werkstoffdiskr_sivas(data["werkstoffdiskr_sivas"]) + if 'werkstofftyp_sivas' in data: + self.werkstofftyp_sivas.set(data["werkstofftyp_sivas"]) + if 'werkstofftyp_neu' in data: + self.werkstofftyp_neu.set(data["werkstofftyp_neu"]) + if 'material_sivas' in data: + self.material_sivas.set(data["material_sivas"]) + if 'material_neu' in data: + self.material_neu.set(data["material_neu"]) + if 'oberflaeche_neu' in data: + self.oberflaeche_neu.set(data["oberflaeche_neu"]) + if 'farbe_neu' in data: + self.farbe_neu.set(data["farbe_neu"]) + +class RightFrameHalbzeugOhneS(AllFrames): + def __init__(self, frame, nrow=0, configs=None): + AllFrames.__init__(self, nrow) + self.frame = frame + self.build_widgets(configs) + + def build_widgets(self, configs): + frame = self.frame + self.rownum = AllFrames.get_rows(self) + col_left = 0 + + categories = configs.Allgemein.get_options("Kategorien") + ruestcodes = configs.Allgemein.get_options("Ruestcode") + + # Halbzeug ohne Sägeliste + halbzeugOhneSaege_label = ttk.Label(frame, text="Halbzeug ohne Sägeliste:" ) + halbzeugOhneSaege_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.halbzeugOhneSaege_sivas = tk.StringVar() + halbzeugOhneSaege_entry = ttk.Entry(frame, textvariable=self.halbzeugOhneSaege_sivas) + halbzeugOhneSaege_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.halbzeugOhneSaege_neu = tk.StringVar() + halbzeugOhneSaege_neu_combo = ttk.Combobox(frame, textvariable=self.halbzeugOhneSaege_neu) + halbzeugOhneSaege_neu_combo['values'] = categories + halbzeugOhneSaege_neu_combo['state'] = 'readonly' + halbzeugOhneSaege_neu_combo.bind('<>', lambda event:self.callback('halbzeugOhneSaege_neu')) + halbzeugOhneSaege_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Rüstcode + ruestcode_label = ttk.Label(frame, text="Rüstcode:" ) + ruestcode_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.ruestcode_sivas = tk.StringVar() + ruestcode_entry = ttk.Entry(frame, textvariable=self.ruestcode_sivas) + ruestcode_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.ruestcode_neu = tk.StringVar() + ruestcode_neu_combo = ttk.Combobox(frame, textvariable=self.ruestcode_neu) + ruestcode_neu_combo['values'] = ruestcodes + ruestcode_neu_combo['state'] = 'readonly' + ruestcode_neu_combo.bind('<>', lambda event:self.callback('ruestcode_neu')) + ruestcode_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Fertigungsart + fertigungsart_label = ttk.Label(frame, text="Fertigungsart:" ) + fertigungsart_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.fertigungsart_sivas = tk.StringVar() + fertigungsart_entry = ttk.Entry(frame, textvariable=self.fertigungsart_sivas) + fertigungsart_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.fertigungsart_neu = tk.StringVar() + fertigungsart_neu_combo = ttk.Combobox(frame, textvariable=self.fertigungsart_neu) + fertigungsart_neu_combo['values'] = categories + fertigungsart_neu_combo['state'] = 'readonly' + fertigungsart_neu_combo.bind('<>', lambda event:self.callback('fertigungsart_neu')) + fertigungsart_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Allgmeintoleranz + allgemeintoleranz_label = ttk.Label(frame, text="Allgemeintoleranz:" ) + allgemeintoleranz_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.allgemeintoleranz_sivas = tk.StringVar() + allgemeintoleranz_entry = ttk.Entry(frame, textvariable=self.allgemeintoleranz_sivas) + allgemeintoleranz_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.allgemeintoleranz_neu = tk.StringVar() + allgemeintoleranz_neu_combo = ttk.Combobox(frame, textvariable=self.allgemeintoleranz_neu) + allgemeintoleranz_neu_combo['values'] = categories + allgemeintoleranz_neu_combo['state'] = 'readonly' + allgemeintoleranz_neu_combo.bind('<>', lambda event:self.callback('allgemeintoleranz_neu')) + allgemeintoleranz_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # FOS-Gruppe + fosGruppe_label = ttk.Label(frame, text="FOS-Gruppe:" ) + fosGruppe_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.fosGruppe_sivas = tk.StringVar() + fosGruppe_entry = ttk.Entry(frame, textvariable=self.fosGruppe_sivas) + fosGruppe_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.fosGruppe_neu = tk.StringVar() + fosGruppe_neu_combo = ttk.Combobox(frame, textvariable=self.fosGruppe_neu) + fosGruppe_neu_combo['values'] = categories + fosGruppe_neu_combo['state'] = 'readonly' + fosGruppe_neu_combo.bind('<>', lambda event:self.callback('fosGruppe_neu')) + fosGruppe_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Kalulationsart + kalkulationsart_label = ttk.Label(frame, text="Kalkulationsart:" ) + kalkulationsart_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.kalkulationsart_sivas = tk.StringVar() + kalkulationsart_entry = ttk.Entry(frame, textvariable=self.kalkulationsart_sivas) + kalkulationsart_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + + self.kalkulationsart_neu = tk.StringVar() + kalkulationsart_neu_combo = ttk.Combobox(frame, textvariable=self.kalkulationsart_neu) + kalkulationsart_neu_combo['values'] = categories + kalkulationsart_neu_combo['state'] = 'readonly' + kalkulationsart_neu_combo.bind('<>', lambda event:self.callback('kalkulationsart_neu')) + kalkulationsart_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + separator = ttk.Separator(frame, orient='horizontal') + separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3) + self.rownum += 1 + + def get_data(self): + return { + "halbzeugOhneSaege_sivas": self.halbzeugOhneSaege_sivas.get(), + "halbzeugOhneSaege_neu": self.halbzeugOhneSaege_neu.get(), + "ruestcode_sivas": self.ruestcode_sivas.get(), + "ruestcode_neu": self.ruestcode_neu.get(), + "fertigungsart_sivas": self.fertigungsart_sivas.get(), + "fertigungsart_neu": self.fertigungsart_neu.get(), + "allgemeintoleranz_sivas": self.allgemeintoleranz_sivas.get(), + "allgemeintoleranz_neu": self.allgemeintoleranz_neu.get(), + "fosGruppe_sivas": self.fosGruppe_sivas.get(), + "fosGruppe_neu": self.fosGruppe_neu.get(), + "kalkulationsart_sivas": self.kalkulationsart_sivas.get(), + "kalkulationsart_neu": self.kalkulationsart_neu.get(), + } + + def data_from_model(self): + data = self.get_controller().get_all_gui_data() + + if 'halbzeugOhneSaege_sivas' in data: + self.halbzeugOhneSaege_sivas.set(data["halbzeugOhneSaege_sivas"]) + if 'halbzeugOhneSaege_neu' in data: + self.halbzeugOhneSaege_neu.set(data["halbzeugOhneSaege_neu"]) + if 'ruestcode_sivas' in data: + self.ruestcode_sivas.set(data["ruestcode_sivas"]) + if 'ruestcode_neu' in data: + self.ruestcode_neu.set(data["ruestcode_neu"]) + if 'fertigungsart_sivas' in data: + self.fertigungsart_sivas.set(data["fertigungsart_sivas"]) + if 'fertigungsart_neu' in data: + self.fertigungsart_neu.set(data["fertigungsart_neu"]) + if 'allgemeintoleranz_sivas' in data: + self.allgemeintoleranz_sivas.set(data["allgemeintoleranz_sivas"]) + if 'allgemeintoleranz_neu' in data: + self.allgemeintoleranz_neu.set(data["allgemeintoleranz_neu"]) + if 'fosGruppe_sivas' in data: + self.fosGruppe_sivas.set(data["fosGruppe_sivas"]) + if 'fosGruppe_neu' in data: + self.fosGruppe_neu.set(data["fosGruppe_neu"]) + if 'kalkulationsart_sivas' in data: + self.kalkulationsart_sivas.set(data["kalkulationsart_sivas"]) + if 'kalkulationsart_neu' in data: + self.kalkulationsart_neu.set(data["kalkulationsart_neu"]) + + +class RightFrameVersion(AllFrames): + def __init__(self, frame, nrow=0, configs=None): + AllFrames.__init__(self, nrow) + self.frame = frame + self.build_widgets(configs) + + def build_widgets(self, configs): + frame = self.frame + self.rownum = AllFrames.get_rows(self) + col_left = 0 + + categories = configs.Allgemein.get_options("Kategorien") + + # Version + version_label = ttk.Label(frame, text="Version:" ) + version_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.version_sivas = tk.StringVar() + version_entry = ttk.Entry(frame, textvariable=self.version_sivas) + version_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.version_neu = tk.StringVar() + version_neu_entry = ttk.Entry(frame, textvariable=self.version_neu) + version_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + + # Änderungsindex + aenderungsindex_label = ttk.Label(frame, text="Änderungsindex:" ) + aenderungsindex_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.aenderungsindex_sivas = tk.StringVar() + aenderungsindex_entry = ttk.Entry(frame, textvariable=self.aenderungsindex_sivas) + aenderungsindex_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.aenderungsindex_neu = tk.StringVar() + aenderungsindex_neu_entry = ttk.Entry(frame, textvariable=self.aenderungsindex_neu) + aenderungsindex_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Änderungstext + aenderungstext_label = ttk.Label(frame, text="Änderungstext:" ) + aenderungstext_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.aenderungstext_sivas = tk.StringVar() + aenderungstext_entry = ttk.Entry(frame, textvariable=self.aenderungstext_sivas) + aenderungstext_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.aenderungstext_neu = tk.StringVar() + aenderungstext_neu_entry = ttk.Entry(frame, textvariable=self.aenderungstext_neu) + aenderungstext_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + # Freigabevermerk + freigabevermerk_label = ttk.Label(frame, text="Freigabevermerk:" ) + freigabevermerk_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.freigabevermerk_sivas = tk.StringVar() + freigabevermerk_entry = ttk.Entry(frame, textvariable=self.freigabevermerk_sivas) + freigabevermerk_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.freigabevermerk_neu = tk.StringVar() + freigabevermerk_neu_entry = ttk.Entry(frame, textvariable=self.freigabevermerk_neu) + freigabevermerk_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 + + separator = ttk.Separator(frame, orient='horizontal') + separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3) + self.rownum += 1 + + speichern_button = ttk.Button(frame, text="Speichern", command=lambda: self.callback("speichern")) + speichern_button.grid(column=col_left, row=self.rownum, sticky=tk.EW, padx=3, pady=3) + migrieren_button = ttk.Button(frame, text="migrieren", command=lambda: self.callback("migrieren")) + migrieren_button.grid(column=col_left+1, row=self.rownum, sticky=tk.EW, padx=3, pady=3) + zuruecksetzen_button = ttk.Button(frame, text="zurücksetzen", command=lambda: self.callback("zurücksetzen")) + zuruecksetzen_button.grid(column=col_left+2, row=self.rownum, sticky=tk.EW, padx=3, pady=3) + + def get_data(self): + return { + "version_sivas": self.version_sivas.get(), + "version_neu": self.version_neu.get(), + "aenderungsindex_sivas": self.aenderungsindex_sivas.get(), + "aenderungsindex_neu": self.aenderungsindex_neu.get(), + "aenderungstext_sivas": self.aenderungstext_sivas.get(), + "aenderungstext_neu": self.aenderungstext_neu.get(), + "freigabevermerk_sivas": self.freigabevermerk_sivas.get(), + "freigabevermerk_neu": self.freigabevermerk_neu.get(), + } + + def data_from_model(self): + data = self.get_controller().get_all_gui_data() + if 'version_sivas' in data: + self.version_sivas.set(data["version_sivas"]) + if 'version_neu' in data: + self.version_neu.set(data["version_neu"]) + if 'aenderungsindex_sivas' in data: + self.aenderungsindex_sivas.set(data["aenderungsindex_sivas"]) + if 'aenderungsindex_neu' in data: + self.aenderungsindex_neu.set(data["aenderungsindex_neu"]) + if 'aenderungstext_sivas' in data: + self.aenderungstext_sivas.set(data["aenderungstext_sivas"]) + if 'aenderungstext_neu' in data: + self.aenderungstext_neu.set(data["aenderungstext_neu"]) + if 'freigabevermerk_sivas' in data: + self.freigabevermerk_sivas.set(data["freigabevermerk_sivas"]) + if 'freigabevermerk_neu' in data: + self.freigabevermerk_neu.set(data["freigabevermerk_neu"]) class App(): def __init__(self, root, configs=None): @@ -302,20 +950,50 @@ class App(): """ # configure the grid - # die erste Spalte mit Baum sollte unbeweglich bleiben bei Vergräßerung des Fensters. + # die erste Spalte mit Baum sollte unbeweglich bleiben bei Vergrößerung des Fensters. # self.root.columnconfigure(0, weight=2) self.root.columnconfigure(1, weight=1) #self.root.geometry('800x800') - # Create left and right frames - left_frame = ttk.Frame(self.root, width=200, height=800) - left_frame.grid(row=0, column=0, padx=10, pady=5) - - 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') + style.theme_use('clam') + + # gesamtes Fenster durch Scrollbar, aber auch mit Mausrad verschieben + self.root.bind('', self.OnMouseWheel) + + container = ttk.Frame(root) + canvas = tk.Canvas(container, width=800, height=900) + # canvas = tk.Canvas(container) + self.canvas = canvas + + # baue eine globale Scrollbar ganz rechts + vscrollbar = ttk.Scrollbar(container, orient='vertical', command=canvas.yview) + + # verknüpfe Scrollbar und Canvas + canvas.bind( + '', + lambda e: canvas.configure( + scrollregion=canvas.bbox("all") + ) + ) + canvas.configure(yscrollcommand=vscrollbar.set) + + inner_frame = ttk.Frame(canvas) + canvas.create_window((0, 0), window=inner_frame, anchor="nw") + + container.pack() + canvas.pack(side="left", fill="both", expand=True) + vscrollbar.pack(side="right", fill="y") + + # einen linken und rechten Rahmen darin + # left_frame = ttk.Frame(inner_frame, width=200, height=800) + left_frame = ttk.Frame(inner_frame) + left_frame.grid(row=0, column=0, padx=10, pady=3) + + # right_frame = ttk.Frame(inner_frame, width=650, height=800) + right_frame = ttk.Frame(inner_frame) + right_frame.grid(row=0, column=1, padx=10, pady=3) + self.lf1 = LeftFrameAsm(left_frame, 0, configs) nrows = self.lf1.get_rows() @@ -325,8 +1003,16 @@ class App(): nrows = self.rf1.get_rows() self.rf2 = RightFramePDM(right_frame, nrows, configs) nrows = self.rf2.get_rows() - #self.rf2 = RightFramePDM(right_frame, nrows) - # TODO usw. + self.rf3 = RightFrameBezeichnung(right_frame, nrows, configs) + nrows = self.rf3.get_rows() + self.rf4 = RightFrameTOSGruppe(right_frame, nrows, configs) + nrows = self.rf4.get_rows() + self.rf5 = RightFrameWerkstoffdiskrepanz(right_frame, nrows, configs) + nrows = self.rf5.get_rows() + self.rf6 = RightFrameHalbzeugOhneS(right_frame, nrows, configs) + nrows = self.rf6.get_rows() + self.rf7 = RightFrameVersion(right_frame, nrows, configs) + nrows = self.rf7.get_rows() def data_from_model(self): """ methode zum Auslesen aller Daten der Oberfläche aus dem Modell @@ -336,6 +1022,11 @@ class App(): self.rf1.data_from_model() self.rf2.data_from_model() + self.rf3.data_from_model() + self.rf4.data_from_model() + self.rf5.data_from_model() + self.rf6.data_from_model() + self.rf7.data_from_model() def set_controller(self, controller): """ merken des Handels auf den Controller in jedem Widget""" @@ -343,12 +1034,22 @@ class App(): self.lf1.set_controller(controller) self.lf2.set_controller(controller) + self.rf1.set_controller(controller) self.rf2.set_controller(controller) + self.rf3.set_controller(controller) + self.rf4.set_controller(controller) + self.rf5.set_controller(controller) + self.rf6.set_controller(controller) + self.rf7.set_controller(controller) def mainloop(self): self.root.mainloop() + def OnMouseWheel(self,event): + self.canvas.yview("scroll", event.delta, "units") + return "break" + if __name__ == "__main__":