# Create hierarchical menus for some volumes. import os from Menu import * import macfs import sys def main(): global oldbar my_volumes = [] while 1: fss, ok = macfs.GetDirectory() if not ok: break my_volumes.append(fss.as_pathname()) if not my_volumes: return 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.SetMenuItemText(item, file) # set the actual text fullname = os.path.join(dir, file) if os.path.isdir(fullname): menu.SetMenuItemText(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() sys.exit(1) # To allow the user to interact...