# 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...
|