Added support for the help menu. Application.gethelpmenu() will return

it.

Also fixed menu IDs to be signed in do_menudispatch. this is an incompatible
change, but I don't think it'll hurt anyone.
This commit is contained in:
Jack Jansen 2002-08-29 22:04:15 +00:00
parent 983258ed7e
commit f21b7063d3
1 changed files with 35 additions and 0 deletions

View File

@ -13,6 +13,7 @@ from Carbon.Dlg import *
from Carbon.Dialogs import * from Carbon.Dialogs import *
from Carbon.Evt import * from Carbon.Evt import *
from Carbon.Events import * from Carbon.Events import *
from Carbon.Help import *
from Carbon.Menu import * from Carbon.Menu import *
from Carbon.Menus import * from Carbon.Menus import *
from Carbon.Qd import * from Carbon.Qd import *
@ -111,6 +112,7 @@ class Application:
self.menubar = None self.menubar = None
else: else:
self.makemenubar() self.makemenubar()
self._helpmenu = None
def __del__(self): def __del__(self):
if self._doing_asyncevents: if self._doing_asyncevents:
@ -125,6 +127,11 @@ class Application:
def makeusermenus(self): def makeusermenus(self):
self.filemenu = m = Menu(self.menubar, "File") self.filemenu = m = Menu(self.menubar, "File")
self._quititem = MenuItem(m, "Quit", "Q", self._quit) self._quititem = MenuItem(m, "Quit", "Q", self._quit)
def gethelpmenu(self):
if self._helpmenu == None:
self._helpmenu = HelpMenu(self.menubar)
return self._helpmenu
def _quit(self, *args): def _quit(self, *args):
self.quitting = 1 self.quitting = 1
@ -297,6 +304,8 @@ class Application:
(what, message, when, where, modifiers) = event (what, message, when, where, modifiers) = event
result = MenuSelect(where) result = MenuSelect(where)
id = (result>>16) & 0xffff # Hi word id = (result>>16) & 0xffff # Hi word
if id >= 0x8000:
id = -65536 + id
item = result & 0xffff # Lo word item = result & 0xffff # Lo word
self.do_rawmenu(id, item, window, event) self.do_rawmenu(id, item, window, event)
@ -715,6 +724,18 @@ class AppleMenu(Menu):
elif MacOS.runtimemodel == 'ppc': elif MacOS.runtimemodel == 'ppc':
name = self.menu.GetMenuItemText(item) name = self.menu.GetMenuItemText(item)
OpenDeskAcc(name) OpenDeskAcc(name)
class HelpMenu(Menu):
def __init__(self, bar):
# Note we don't call Menu.__init__, we do the necessary things by hand
self.bar = bar
self.menu, index = HMGetHelpMenu()
self.id = self.menu.GetMenuID()
bar.menus[self.id] = self
# The next line caters for the entries the system already handles for us
self.items = [None]*(index-1)
self._parent = None
class Window: class Window:
"""A single window belonging to an application""" """A single window belonging to an application"""
@ -1066,6 +1087,9 @@ class TestApp(Application):
self.opt2 = CheckItem(mm, "Being hit on the head lessons", (kMenuOptionModifier, "A")) self.opt2 = CheckItem(mm, "Being hit on the head lessons", (kMenuOptionModifier, "A"))
self.opt3 = CheckItem(mm, "Complaints", (kMenuOptionModifier|kMenuNoCommandModifier, "A")) self.opt3 = CheckItem(mm, "Complaints", (kMenuOptionModifier|kMenuNoCommandModifier, "A"))
Separator(m) Separator(m)
self.itemeh = MenuItem(m, "Enable Help", None, self.enablehelp)
self.itemdbg = MenuItem(m, "Debug", None, self.debug)
Separator(m)
self.quititem = MenuItem(m, "Quit", "Q", self.quit) self.quititem = MenuItem(m, "Quit", "Q", self.quit)
def save(self, *args): def save(self, *args):
@ -1073,6 +1097,17 @@ class TestApp(Application):
def quit(self, *args): def quit(self, *args):
raise self raise self
def enablehelp(self, *args):
hm = self.gethelpmenu()
self.nohelpitem = MenuItem(hm, "There isn't any", None, self.nohelp)
def nohelp(self, *args):
print "I told you there isn't any!"
def debug(self, *args):
import pdb
pdb.set_trace()
def test(): def test():