Skip to content

Commit d697e32

Browse files
committed
Property editor added to tabular view.
1 parent 93fb893 commit d697e32

File tree

1 file changed

+28
-10
lines changed

1 file changed

+28
-10
lines changed

Tools/graphMLVis/visualize_graphML.py

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def tabularize():
3030
# load xml data
3131
tree = ET.parse(dVars.graphml_path)
3232
root = tree.getroot()
33+
ET.register_namespace('',"http://graphml.graphdrawing.org/xmlns")
3334

3435
# get the column headers
3536
data_types = []
@@ -57,7 +58,12 @@ def tabularize():
5758
x_scrollbar.pack(side="bottom", fill="x")
5859

5960
# treeview
60-
treeview = Treeview(tFrame, show="headings", columns=data_types, yscrollcommand=y_scrollbar.set, xscrollcommand=x_scrollbar.set, height=60)
61+
treeview = Treeview(tFrame,
62+
show="headings",
63+
columns=data_types,
64+
yscrollcommand=y_scrollbar.set,
65+
xscrollcommand=x_scrollbar.set,
66+
height=60)
6167
treeview.pack(fill="both")
6268

6369
# scrollbar configs
@@ -68,7 +74,7 @@ def tabularize():
6874
for col_name in data_types:
6975
treeview.heading(col_name, text=col_name)
7076
data_values = []
71-
for type in data_types:
77+
for data_type in data_types:
7278
data_values.append('N/A')
7379
# insert nodes and set node values
7480
for node in root.findall('.//{http://graphml.graphdrawing.org/xmlns}node'):
@@ -80,21 +86,34 @@ def tabularize():
8086
treeview.set(item=treeview.get_children()[-1], column=data.get('key'), value=data.text)
8187

8288
# create entries for each data_type other than the node's id
83-
entries = []
89+
entries = {}
8490
for data_type in data_types:
8591
if data_type != "id":
8692
label = Label(editFrame, text=f"{data_type}")
8793
label.pack()
8894
entry = Entry(editFrame, width=40)
8995
entry.pack(padx=5)
90-
entries.append(entry)
96+
entries[data_type] = entry
9197

9298
# save entries to the treeview
9399
def save_entries():
94100
if treeview.selection()[0] is not None:
95-
for entry in entries:
96-
# index + 1 to avoid the id column
97-
treeview.set(item=treeview.selection()[0], column=entries.index(entry)+1, value=entry.get())
101+
selected_item = treeview.selection()[0]
102+
item_data = treeview.item(selected_item, 'values')
103+
target_id = item_data[0]
104+
target_node = root.find(f'.//{{http://graphml.graphdrawing.org/xmlns}}node[@id="{target_id}"]')
105+
for data_type in data_types:
106+
data = target_node.find(f'.//{{http://graphml.graphdrawing.org/xmlns}}data[@key="{data_type}"]')
107+
if data is not None:
108+
data.text = entries.get(data_type).get()
109+
treeview.set(item=treeview.selection()[0],
110+
column=data_types.index(data_type),
111+
value=entries.get(data_type).get())
112+
tree.write(dVars.graphml_path,
113+
xml_declaration=True,
114+
encoding='utf-8',
115+
method='xml')
116+
98117

99118
# submit button for saving entries
100119
submit = Button(editFrame, text="Submit", command=save_entries)
@@ -105,9 +124,8 @@ def on_treeview_select(event):
105124
selected_item = treeview.selection()[0]
106125
item_data = treeview.item(selected_item, 'values')
107126
for entry in entries:
108-
entry.delete(0, END)
109-
# index + 1 to avoid the id column
110-
entry.insert(0, item_data[entries.index(entry)+1])
127+
entries.get(entry).delete(0, END)
128+
entries.get(entry).insert(0, item_data[data_types.index(entry)])
111129

112130
treeview.bind('<<TreeviewSelect>>', on_treeview_select)
113131

0 commit comments

Comments
 (0)