failed attempt at generating a menu structure from a dict
parent
4c9bdca77a
commit
14c19f3d69
98
main.py
98
main.py
|
@ -154,5 +154,103 @@ else:
|
|||
################################################################################
|
||||
|
||||
main_window = tk.Tk()
|
||||
main_window.title("IDE")
|
||||
main_window.geometry(get_configuration_value("window geometry"))
|
||||
|
||||
def not_implemented():
|
||||
warn("Not implemented!")
|
||||
|
||||
# format:
|
||||
# "":{} -> menu or submenu
|
||||
# "":function -> menu entry
|
||||
# "":None -> disabled menu entry
|
||||
# None:None -> separator
|
||||
#
|
||||
# Entries with ... at the end are supposed to open dialogs whereas entries without dots are supposed to take effect immediately
|
||||
menu_structure = {
|
||||
"IDE": {
|
||||
"Preferences...": not_implemented,
|
||||
"Quit": not_implemented
|
||||
},
|
||||
"Project": {
|
||||
"New": {
|
||||
"No known project types": None
|
||||
},
|
||||
"Open...": not_implemented,
|
||||
"Close": {
|
||||
"No open projects": None
|
||||
},
|
||||
None: None,
|
||||
"Preferences...": not_implemented,
|
||||
"Search...": not_implemented,
|
||||
"Build": not_implemented
|
||||
},
|
||||
"File": {
|
||||
"New...": not_implemented,
|
||||
"Open...": not_implemented,
|
||||
"Save": not_implemented,
|
||||
"Close": not_implemented,
|
||||
None: None,
|
||||
"Rename...": not_implemented,
|
||||
"Move...": not_implemented,
|
||||
"View in File Explorer...": not_implemented
|
||||
},
|
||||
"Edit": {
|
||||
"Cut": not_implemented,
|
||||
"Copy": not_implemented,
|
||||
"Paste": not_implemented,
|
||||
None: None,
|
||||
"Search and Replace...": not_implemented,
|
||||
None: None,
|
||||
"Format": not_implemented,
|
||||
"Indent": not_implemented,
|
||||
"Unindent": not_implemented,
|
||||
"Toggle Comment": not_implemented
|
||||
},
|
||||
"View": {
|
||||
"Zoom in": not_implemented,
|
||||
"Zoom out": not_implemented,
|
||||
"Normal Size": not_implemented
|
||||
},
|
||||
"Help": {
|
||||
"Manual...": not_implemented,
|
||||
"About IDE...": not_implemented,
|
||||
}
|
||||
}
|
||||
|
||||
menubar = None
|
||||
def build_menu(structure_dict, menu):
|
||||
for entry in structure_dict:
|
||||
if structure_dict[entry]==None:
|
||||
if entry==None:
|
||||
info("Adding separator for " + str(entry))
|
||||
menu.add_separator()
|
||||
else:
|
||||
info("Adding disabled entry for " + str(entry))
|
||||
menu.add_command(label=entry)
|
||||
menu.entryconfig(entry, state="disabled")
|
||||
if isinstance(structure_dict[entry], dict):
|
||||
info("Adding submenu for " + str(entry))
|
||||
submenu = tk.Menu(menu, tearoff=False)
|
||||
build_menu(structure_dict[entry], submenu)
|
||||
menu.add_cascade(label=entry, menu=submenu)
|
||||
if callable(structure_dict[entry]):
|
||||
info("Adding entry for "+str(entry))
|
||||
menu.add_command(label=entry, command=structure_dict[entry])
|
||||
|
||||
def rebuild_menu():
|
||||
menubar = tk.Menu(main_window)
|
||||
menubar = build_menu(menu_structure, menubar)
|
||||
main_window.config(menu=menubar)
|
||||
|
||||
rebuild_menu()
|
||||
#menubar = tk.Menu(main_window)
|
||||
#menus = {}
|
||||
#menus["Project"] = tk.Menu(menubar, tearoff=False)
|
||||
#menus["Project"].add_command(label="Open...", command=not_implemented)
|
||||
#menus["Project>Close"] = tk.Menu(menus["Project"], tearoff=False)
|
||||
#menus["Project"].add_cascade(label="Close", menu=menus["Project>Close"])
|
||||
#menubar.add_cascade(label="Project", menu=menus["Project"])
|
||||
#main_window.config(menu=menubar)
|
||||
|
||||
main_window.mainloop()
|
||||
|
|
Reference in New Issue