diff options
Diffstat (limited to 'Mac/Lib/test/tmenu.py')
-rw-r--r-- | Mac/Lib/test/tmenu.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Mac/Lib/test/tmenu.py b/Mac/Lib/test/tmenu.py new file mode 100644 index 0000000..1b156d7 --- /dev/null +++ b/Mac/Lib/test/tmenu.py @@ -0,0 +1,60 @@ +# Create hierarchical menus for some volumes. + +import os +from Menu import * + +# Since we can't (yet) list the mounted volumes, here's a list of some: +my_volumes = ['C:', 'D:', 'E:', 'F:'] + +def main(): + global oldbar + oldbar = GetMenuBar() + ClearMenuBar() + makevolmenus(my_volumes) + DrawMenuBar() + +def reset(): + oldbar.SetMenuBar() + DrawMenuBar() + +id = 1 +def nextid(): + global id + nid = id + id = id+1 + return nid + +def makevolmenus(volumes): + for vol in volumes: + makevolmenu(vol) + +def makevolmenu(vol): + menu = NewMenu(nextid(), vol) + adddirectory(menu, vol) + menu.InsertMenu(0) + +def adddirectory(menu, dir, maxdepth = 1): + print "adddirectory:", `dir`, maxdepth + files = os.listdir(dir) + item = 0 + for file in files: + item = item+1 + menu.AppendMenu('x') # add a dummy string + menu.SetItem(item, file) # set the actual text + fullname = os.path.join(dir, file) + if os.path.isdir(fullname): + menu.SetItem(item, ':' + file + ':') # append colons + if maxdepth > 0: + id = nextid() + submenu = NewMenu(id, fullname) + adddirectory(submenu, fullname, maxdepth-1) + submenu.InsertMenu(-1) + # If the 'Cmd' is 0x1B, then the 'Mark' is the submenu id + menu.SetItemMark(item, id) + menu.SetItemCmd(item, 0x1B) + if not files: + menu.AppendMenu(':') # dummy item to make it selectable + return menu + +if __name__ == '__main__': + main() |