In CreoMigrate (GUI-Applikation) können nun auch Teilenummern ohne Stückliste migriert werden. Hierfür wurde in Methode 'get_csv_files_of_asm' von 'controller.py' ein Aufruf der Methode 'extend_asm_bom' aus der Klasse 'SivasBOM' in 'manage_configs.py' ergänzt. Innerhalb der Methode wird die angegebene Teilenummer aus dem Eingabefeld in der GUI, d.h. die Hauptnummer in die Stücklistendaten aufgenommen - standardmäßig ist sie nicht enthalten. Als Oberbaugruppe dieser Nummer wird dabei die fiktive Baugruppe 'None' definiert. Durch diese Ergänzung in den Stücklistendaten wird eine Teilenummer ohne Stückliste also selbst zu einem Bestandteil der fiktiven Baugruppe 'None'. Somit wird also wie bisher nur mit Baugruppen gearbeitet, wodurch die Grundlogik zur Erstellung des Treeviews im Programm gleich bleibt. Lediglich die Vorgehensweise, wenn parent = 'None' gilt musste in den Treeview-Methoden angepasst werden. Im Zuge dessen wurde auch die Methode '_has_childs' der Treeview-Klasse in 'gui.py' angepasst, um sie effizienter zu machen. Konkret wird nun nicht mehr jedes mal durch das parent_children_mapping-dict gelooped werden, um herauszufinden, ob die angegebene Nummer enthalten ist. Da alle Nummern, die als Key in genanntem Dict vorliegen immer Kinder haben muss stattdessen nur geprüft werden, ob die Nummer als Key vorliegt.
This commit is contained in:
+12
-13
@@ -55,10 +55,7 @@ class AllFrames():
|
||||
class TreeView():
|
||||
def __init__(self, frame, nrow=0):
|
||||
# a treeview
|
||||
# hier Anzahl der sichtbaren Zeilen des Baums angeben:
|
||||
self.tree = ttk.Treeview(frame, height=65)
|
||||
# TODO hier anstatt root die Statistik rein schreiben.
|
||||
#self.tree.heading('#0', text='root', anchor=tk.W)
|
||||
self.tree = ttk.Treeview(frame, height=65) # 'height' steuert Anzahl der sichtbaren Zeilen im Baum
|
||||
self.tree.grid(row=nrow, column=0, sticky=tk.NSEW)
|
||||
|
||||
# add a scrollbar
|
||||
@@ -75,7 +72,9 @@ class TreeView():
|
||||
done_items = set()
|
||||
undone_items = set()
|
||||
for parent,children in parent_children_mapping.items():
|
||||
if parent in red_ids:
|
||||
if parent is None:
|
||||
pass
|
||||
elif parent in red_ids:
|
||||
undone_items.add(parent)
|
||||
else:
|
||||
done_items.add(parent)
|
||||
@@ -108,18 +107,16 @@ class TreeView():
|
||||
self.tree.delete(c)
|
||||
|
||||
def _has_childs(self, sid, parent_children_mapping):
|
||||
'''gibt zurück ob sid ein ein Zwischenknoten eines Baume ist, also kein Blatt hat'''
|
||||
for parent,children in parent_children_mapping.items():
|
||||
if sid == parent:
|
||||
return True
|
||||
return False
|
||||
'''gibt zurück ob sivas-id ein Zwischenknoten eines Baume ist, also kein Blatt hat'''
|
||||
return True if sid in parent_children_mapping else False
|
||||
|
||||
def create(self, parent_children_mapping, red_ids, orange_ids):
|
||||
pool = dict()
|
||||
self.set_heading_text(parent_children_mapping, red_ids)
|
||||
for parent, children in parent_children_mapping.items():
|
||||
# parent erzeugen, falls es diese nicht schon gibt (check der pool ids)
|
||||
if parent not in pool:
|
||||
if parent is None:
|
||||
parent_id = None
|
||||
elif parent not in pool:
|
||||
if parent not in red_ids: rowtags = ('good')
|
||||
elif parent in orange_ids: rowtags = ('orange')
|
||||
else: rowtags = ('missing')
|
||||
@@ -148,7 +145,9 @@ class TreeView():
|
||||
child_id = self.tree.insert('', tk.END, text=child, tags=rowtags, open=True)
|
||||
pool[child] = child_id # hier werden die keys - sivas Nummern auch überschrieben
|
||||
self.trid2sivasId[child_id] = child # merken der eindeutigen Zuordnung für den späteren Doppelklick
|
||||
self.tree.move(child_id, parent_id, 'end')
|
||||
|
||||
if parent_id is not None:
|
||||
self.tree.move(child_id, parent_id, 'end')
|
||||
|
||||
# https://www.askpython.com/python-modules/tkinter/tkinter-colors
|
||||
#self.tree.tag_configure('good', background='LawnGreen')
|
||||
|
||||
Reference in New Issue
Block a user