cpython/Mac/Lib/test/tmenu.py

61 lines
1.3 KiB
Python
Raw Normal View History

# 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()