menu = {"/": []}
def add(name, where, category = ""):
if ( where == "/" and category != "" ):
if ( not category in menu["/"] ):
menu["/"].append(category)
where = category
if ( not where in menu ):
menu[where] = []
menu[where].append(name)
def printMenu(root, prefix = ""):
if ( len(menu[root]) == 1 and menu[root][0] in menu ):
printMenu(menu[root][0], prefix)
else:
for item in sorted(menu[root]):
print prefix, item
if ( item in menu ):
printMenu(item, prefix + " ")
default = "/"
add("WebPositive", default, "Internet") #added at default location
add("Mail", "Internet", "Messages") #added at user-defined location
add("MediaPlayer", default, "Multimedia")
add("Utilities", "/") #subfolder
add("Files", "Utilities") #subfolder of Utilities
add("Expander", "Files") #add to Files
print menu
printMenu("/")
Cm1lbnUgPSB7Ii8iOiBbXX0KCmRlZiBhZGQobmFtZSwgd2hlcmUsIGNhdGVnb3J5ID0gIiIpOgogICAgICAgIGlmICggd2hlcmUgPT0gIi8iIGFuZCBjYXRlZ29yeSAhPSAiIiApOgogICAgICAgICAgICAgICAgaWYgKCBub3QgY2F0ZWdvcnkgaW4gbWVudVsiLyJdICk6CiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVbIi8iXS5hcHBlbmQoY2F0ZWdvcnkpCiAgICAgICAgICAgICAgICB3aGVyZSA9IGNhdGVnb3J5CiAgICAgICAgaWYgKCBub3Qgd2hlcmUgaW4gbWVudSApOgogICAgICAgICAgICAgICAgbWVudVt3aGVyZV0gPSBbXQogICAgICAgIG1lbnVbd2hlcmVdLmFwcGVuZChuYW1lKQoKZGVmIHByaW50TWVudShyb290LCBwcmVmaXggPSAiIik6CiAgICAgICAgaWYgKCBsZW4obWVudVtyb290XSkgPT0gMSBhbmQgbWVudVtyb290XVswXSBpbiBtZW51ICk6CiAgICAgICAgICAgICAgICBwcmludE1lbnUobWVudVtyb290XVswXSwgcHJlZml4KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZvciBpdGVtIGluIHNvcnRlZChtZW51W3Jvb3RdKToKICAgICAgICAgICAgICAgICAgICBwcmludCBwcmVmaXgsIGl0ZW0KICAgICAgICAgICAgICAgICAgICBpZiAoIGl0ZW0gaW4gbWVudSApOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRNZW51KGl0ZW0sIHByZWZpeCArICIgICIpCiAgICAgICAgCmRlZmF1bHQgPSAiLyIKYWRkKCJXZWJQb3NpdGl2ZSIsIGRlZmF1bHQsICJJbnRlcm5ldCIpICNhZGRlZCBhdCBkZWZhdWx0IGxvY2F0aW9uCmFkZCgiTWFpbCIsICJJbnRlcm5ldCIsICJNZXNzYWdlcyIpICNhZGRlZCBhdCB1c2VyLWRlZmluZWQgbG9jYXRpb24KYWRkKCJNZWRpYVBsYXllciIsIGRlZmF1bHQsICJNdWx0aW1lZGlhIikKYWRkKCJVdGlsaXRpZXMiLCAiLyIpICAgI3N1YmZvbGRlcgphZGQoIkZpbGVzIiwgIlV0aWxpdGllcyIpICAgI3N1YmZvbGRlciBvZiBVdGlsaXRpZXMKYWRkKCJFeHBhbmRlciIsICJGaWxlcyIpICAgICNhZGQgdG8gRmlsZXMKCnByaW50IG1lbnUKcHJpbnRNZW51KCIvIikK
{'Files': ['Expander'], 'Multimedia': ['MediaPlayer'], 'Utilities': ['Files'], '/': ['Internet', 'Multimedia', 'Utilities'], 'Internet': ['WebPositive', 'Mail']}
Internet
Mail
WebPositive
Multimedia
MediaPlayer
Utilities
Expander