mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	 b81cf9d61c
			
		
	
	
		b81cf9d61c
		
	
	
	
	
		
			
			- Use Universal Headers as input - Change addpack calls to not depend on Guido's disklayout - Checkge testprograms to use new names for some functions
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # 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...
 |