diff --git a/lib/CreoMigrateGui.py b/lib/CreoMigrateGui.py index 52f4303..0699b42 100644 --- a/lib/CreoMigrateGui.py +++ b/lib/CreoMigrateGui.py @@ -7,70 +7,6 @@ from tkinter import ttk #logger = logging.getLogger(__name__) -red_ids = ( '400102274', '400102275', '400102190', '400102198', - '400102161', '400102277', '400102163', '400102278', - '400102282', '400102284', '400102195', 'MA0000008', - 'MA0000004', '929055170', '400102267', '400102235', - '400102236', 'MA0000006', '400102237', '400102238', - '400102239', '400102268', '829416159', '924031058', - '924031081', '822064091', '822066199', '822066200') - -parent_children_mapping = {'400102196': ['400102125', '400102126', '400102130', - '400102161', '400102163', '400102165', - '400102166', '400102167', '400102168', - '400102190', '400102195', '400102198', - '400102246', '400102247', '400102267', - '400102272', '400102274', '400102275', - '400102277', '400102278', '400102282', - '400102284', '400102417', '720002003', - '721001034', '821114025', '822064091', - '822066085', '822996075', '829416061', - '829516004', '911021113', '911021181', - '911021259', '911091054', '911091096', - '911091097', '911251013', '912011009', - '919050006', '924031058', - '924031081'], - '400102282': ['822066026', '822066089', '919010052'], - '400102195': [ '822066075', '822066216', - '822066154', '822066101', '822064090', - '822066196', '400102129', '822066217', - '822066160', '822066215', '913041045', - '913011009', '911011057', '822064035', - '925011006', '911091041', '913051040', - '911021112', '911021166', '825006003', - '912041005', '911011014', '911011009', - '911021144', '911021001', '913011016', - '929055170', '913011010', '911021035', - '829416065', '712000151', - '712000100'], - '822066075': ['822066157', '822066162', '911261023'], - '822066162': [ '822064013'], - '822066196': ['MA0000008'], - '822066160': ['MA0000004'], - '822064035': ['822066065'], - '822064093': ['822066204', '822066205', '822066206', '822066207', '822066208'], - '822066220': ['924031033'], - '822064091': ['822066212', '822064093', '822066220', - '822066200', '912011010', '911021156', - '822066201', '911071027', '913011109', - '911011070', '913011001', '710005021', - '919010055', '720000008', '720000007'], - '400102267': ['400102235', '829416159', '829416077', - '829416079', '911021260', '911021147', - '911251014'], - '400102235': ['400102236', '400102237', '400102238', - '400102239', '400102268', '911021143', - '911021054', '911021055'], - '400102236': ['MA0000006'], - '829416159': ['829416089'], - '400102130': ['400102142'], - '821116004': ['822026004'], - '400102168': ['821116001'], - '821114025': ['911081007', '821116053'], - '400102167': ['821116004']} - - - class TreeView(): def __init__(self, frame): @@ -134,13 +70,22 @@ class TreeView(): class RightFramePDM(): def __init__(self, frame, controller): self.controller = controller + self.frame = frame + self.build_gui() + + def build_gui(self): + frame = 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) + 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 # Neuaufbau @@ -150,7 +95,6 @@ class RightFramePDM(): self.neuaufbau = None neuaufbau_checkbutton = ttk.Checkbutton(frame, text='ja', - command=self.var_changed("neuaufbau"), variable=self.neuaufbau, onvalue=True, offvalue=False) @@ -160,37 +104,56 @@ class RightFramePDM(): # 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) + 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 - halbzeug_label = ttk.Label(frame, text="Halbzeug:") + # 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) - 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 var_changed(self, whichvar): - if whichvar == "neuaufbau": - b = self.neuaufbau - elif whichvar == "aus_halbzeug_sivas": - b = self.aus_halbzeug_sivas - elif whichvar == "aus_halbzeug_sivas": - b = self.aus_halbzeug_neu + # Zusatzinformationen + zusatzinfos_label = ttk.Label(frame, text="Zusatzinformationen:") + zusatzinfos_label.grid(column=col_left, row=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 + + def get_data(self): + return { + "pdm_kategorie_neu": self.pdm_category.get(), + "neuaufbau": self.neuaufbau, + "lebenszyklusstatus_neu": self.lebenszyklus_status_neu.get(), + "aus_halbzeug_neu": self.aus_halbzeug_neu, + "zusatzinfos_txt_neu": self.zusatzinfos_text.get(), + } + + def to_model(self): + data = self.get_data() + self.controller.set_data(data) + def from_model(self): + data = self.controller.get_data() + self.aus_halbzeug_neu = data["aus_halbzeug_neu"] + self.neuaufbau = data["neuaufbau"] + self.zusatzinfos_text.set(data["neuaufbau"]) + def combo_callbacks(self, event): + """ handle the changed event """ + # TODO falls nötig + pass @@ -217,6 +180,9 @@ class App(): style = ttk.Style(self.root) style.theme_use('classic') + current_id = self.controller.get_current_asm_id() + self.controller.get_parent_children() + self.controller.get_red_ids() self.tv = TreeView(left_frame) self.tv.create(parent_children_mapping, red_ids) gridhdl = self.tv.get_handle() @@ -319,12 +285,51 @@ if __name__ == "__main__": class CadItem(): """ This item contains all data for writing all necessary data to the solid edg cad file + """ - def __init__(self, uid): + # diese Daten bilden dann die Impfdaten + data_keys = [ "Author", "Teilenummer", "StartRevision", + "Bezeichnung1", "Bezeichnung2", "Bezeichnung4", "KategorieNE", + "BeschaffungsartNE", "TOS-Gruppe_ERP", "Dispogruppe", + "Dispolaufgruppe", "WerkstofftypNE", "WerkstoffNE", + "Oberflaechenbehandlung", "Farbe", "KalkulationsartNE", + "RuestcodeAusw", "Fertigungsart", "Allgemeintoleranz", + "HalbzeugInternAngabe", "Halbzeug", "HalbzeugOhneSaegeliste", + "EinheitNE", "FOS-GruppeNE", "Hersteller", "HerstellerTeilenummer", + "Serien-Status", "Kantennorm", "Oberflaechennorm", "Massnorm", + "Tolerierungsnorm", "TOS-Gruppe", "TOS_Schoenenberger_Produkt", + "TOS_Automation", "TOS_Maschinenelement", + "TOS_Schoenenberger_Komponenten", "TOS_Pneumatik", "TOS_Konfig", + "TOS_ILS", "TOS_MAS", "TOS_Spinnereikomponente", + "TOS_Betriebsmittel", "TOS_Geruest", "TOS_FremdTransport", + "TOS_MAS_Konfig", "TOS_Schaltschrank", "TOS_Schalt_Einbau", + "TOS_Dezentral", "TOS_Automation_Sensorik", "TOS_Kabel", + "TOS_Installation", "TOS_Automation_Sonstiges", + "TOS_Verbindungselement", "TOS_Lager", "TOS_Kraft_Drehmoment", + "TOS_Sicherungselement", "TOS_Bedienungselement", "TOS_ILS_2", + "TOS_ILS_Foerderer", "TOS_MAS_Fahrstecke", "TOS_Trolley", + "TOS_Trolley_Projekte", "TOS_Trolley_Omniflo", + "TOS_Trolley_Spinnerei", "TOS_Trolley_ILS", "Änderungsbeschreibung", + "Freigabevermerk", "ZusaetzlicheInformationen"] + + def __init__(self, asm_id): """ is initalized with its unique id""" - self.id = uid + self.set_asm_id(asm_id) self.red_ids = {} self.parent_children_mapping = {} + self.data = {} + self.gui_data = {} + + def set_asm_id(self, asm_id): + self.asm_id = asm_id + def get_current_asm_id(self): + return self.asm_id + + def get_current_part_id(self): + return self.prt_id + def set_part_id(self, prt_id): + self.prt_id = prt_id + def set_parent_children(self, parent_children_mapping): """ contains all id relations below, data of subassemblies etc. in @@ -341,6 +346,18 @@ if __name__ == "__main__": def get_red_ids(self): return self.red_ids + def set_data(self, data:dict): + for k,v in data: + self.set_data(k,v) + def set_data(self, key, val): + if key not in self.data_keys: + raise Exception("this data can not be set") + else: + self.data[key] = val + + def get_data(self, key): + return self.data[key] + def load(): pass def save(): @@ -386,15 +403,24 @@ if __name__ == "__main__": def __init__(self, model): self.model = model + def get_current_asm_id(self): + self.model.get_current_asm_id() + def set_current_asm_id(self, asm_id): + self.model.set_current_asm_id(asm_id) + def set_red_ids(self, red_ids): - self.red_ids = red_ids + self.model.set_red_ids(red_ids) def get_red_ids(self): - return self.red_ids + return self.model.get_red_ids() def set_parent_children(self, parent_children_mapping): - self.parent_children_mapping = parent_children_mapping + self.model.set_parent_children(parent_children_mapping) def get_parent_children(self): - return self.parent_children_mapping + return self.model.get_parent_children() + def set_data(self, key, value): + self.model.set_data(key, value) + + #logging.basicConfig(level=logging.DEBUG)