# # Python GUI - Menus - PyObjC # from AppKit import NSMenu, NSMenuItem, NSOnState, \ NSCommandKeyMask, NSShiftKeyMask, NSAlternateKeyMask from GUI import export from GUI import Globals from GUI.GMenus import Menu as GMenu, MenuItem #_ns_standard_actions = { # 'undo_cmd': 'undo:', # 'redo_cmd': 'redo:', # 'cut_cmd': 'cut:', # 'copy_cmd': 'copy:', # 'paste_cmd': 'paste:', # 'clear_cmd': 'clear:', # 'select_all_cmd': 'selectAll:', #} class Menu(GMenu): def __init__(self, title, items, **kwds): #print "Menu: creating with items", items ### GMenu.__init__(self, title, items, **kwds) ns_menu = NSMenu.alloc().initWithTitle_(title) ns_menu.setAutoenablesItems_(False) ns_menu.setDelegate_(Globals.ns_application) self._ns_menu = ns_menu def _clear_platform_menu(self): ns_menu = self._ns_menu n = ns_menu.numberOfItems() while n: n -= 1 ns_menu.removeItemAtIndex_(n) def _add_separator_to_platform_menu(self): ns_item = NSMenuItem.separatorItem() self._ns_menu.addItem_(ns_item) def _add_item_to_platform_menu(self, item, name, command = None, index = None): key = item._key or "" if item._shift: key = key.upper() else: key = key.lower() ns_item = NSMenuItem.alloc() #ns_action = _ns_standard_actions.get(command, 'menuSelection:') ns_action = 'menuSelection:' ns_item.initWithTitle_action_keyEquivalent_(name, ns_action, key) ns_item.setEnabled_(item.enabled) if item.checked: ns_item.setState_(NSOnState) ns_modifiers = NSCommandKeyMask if item._option: ns_modifiers |= NSAlternateKeyMask ns_item.setKeyEquivalentModifierMask_(ns_modifiers) ns_item.setRepresentedObject_(command) if index is not None: ns_tag = index else: ns_tag = -1 ns_item.setTag_(ns_tag) self._ns_menu.addItem_(ns_item) export(Menu)