Calling Application._quit() is now preferred over raising self.

This commit is contained in:
Jack Jansen 1996-09-17 12:39:12 +00:00
parent 4cb945454a
commit ef5cd05c3d
11 changed files with 14 additions and 20 deletions

View file

@ -47,7 +47,7 @@ class PICTbrowse(FrameWork.Application):
self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit) self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit)
def quit(self, *args): def quit(self, *args):
raise self self._quit()
def showPICT(self, resid): def showPICT(self, resid):
w = PICTwindow(self) w = PICTwindow(self)

View file

@ -51,7 +51,7 @@ class PICTbrowse(FrameWork.Application):
self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit) self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit)
def quit(self, *args): def quit(self, *args):
raise self self._quit()
def showPICT(self, resid): def showPICT(self, resid):
w = PICTwindow(self) w = PICTwindow(self)

View file

@ -30,11 +30,6 @@ This file contains two classes, <code>MiniApplication</code> and <code>AEServer<
MiniApplication is a tiny replacement for <code>FrameWork.Application</code>, MiniApplication is a tiny replacement for <code>FrameWork.Application</code>,
suitable if your application does not need windows and such. suitable if your application does not need windows and such.
<blockquote>Actually, Framework.Application has a problem for AE Servers,
due to the way it expects to be quit through an exception, and raising an exception
while inside an Apple Event handler is a very bad idea. This will be fixed.
</blockquote>
AEServer is a bit of glue that does part of the appleevent decoding for you. You AEServer is a bit of glue that does part of the appleevent decoding for you. You
call <code>installaehandler</code> passing it the class and id (4-char strings) call <code>installaehandler</code> passing it the class and id (4-char strings)
of the event you have a handler for and the handler callback routine. When the of the event you have a handler for and the handler callback routine. When the
@ -45,7 +40,7 @@ suites provide. <p>
You can test AEServer by double-clicking it. It will react to the standard You can test AEServer by double-clicking it. It will react to the standard
run/open/print/quit OSA commands. If it is running as a normal python script and you run/open/print/quit OSA commands. If it is running as a normal python script and you
drag a file onto the interpreter the script will tell you what event is got. <p> drag a file onto the interpreter the script will tell you what event it got. <p>
<h2>A Minimal CGI script</h2> <h2>A Minimal CGI script</h2>

View file

@ -85,8 +85,8 @@ Next comes the definition of our main class,
menu bar and the main event loop and event dispatching. In the menu bar and the main event loop and event dispatching. In the
<CODE>__init__</CODE> routine we first let the base class initialize <CODE>__init__</CODE> routine we first let the base class initialize
itself, then we create our modeless dialog and finally we jump into itself, then we create our modeless dialog and finally we jump into
the main loop. The main loop continues until <CODE>self</CODE> is the main loop. The main loop continues until we call <CODE>self._quit</CODE>,
raised, which we will do when the user selects "quit". When we create which we will do when the user selects "quit". When we create
the instance of <CODE>MyDialog</CODE> (which inherits the instance of <CODE>MyDialog</CODE> (which inherits
<CODE>DialogWindow</CODE>, which inherits <CODE>Window</CODE>) we pass <CODE>DialogWindow</CODE>, which inherits <CODE>Window</CODE>) we pass
a reference to the application object, this reference is used to tell a reference to the application object, this reference is used to tell
@ -97,8 +97,8 @@ clicks. <p>
The <CODE>makeusermenus()</CODE> method (which is called sometime The <CODE>makeusermenus()</CODE> method (which is called sometime
during the Application <CODE>__init__</CODE> routine) creates a File during the Application <CODE>__init__</CODE> routine) creates a File
menu with a Quit command (shortcut command-Q), which will callback to menu with a Quit command (shortcut command-Q), which will callback to
our quit() method. <CODE>Quit()</CODE>, in turn, raises 'self' which our quit() method. <CODE>Quit()</CODE>, in turn, calls <CODE>_quit</CODE> which
causes the mainloop to terminate. <p> causes the mainloop to terminate at a convenient time. <p>
Application provides a standard about box, but we override this by Application provides a standard about box, but we override this by
providing our own <CODE>do_about()</CODE> method which shows an about providing our own <CODE>do_about()</CODE> method which shows an about

View file

@ -51,7 +51,7 @@ class InterslipControl(FrameWork.Application):
self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit) self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit)
def quit(self, *args): def quit(self, *args):
raise self self._quit()
def do_about(self, *args): def do_about(self, *args):
f = Dlg.GetNewDialog(ID_ABOUT, -1) f = Dlg.GetNewDialog(ID_ABOUT, -1)

View file

@ -81,7 +81,7 @@ class imgbrowse(FrameWork.Application):
self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit) self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit)
def quit(self, *args): def quit(self, *args):
raise self self._quit()
def opendoc(self, *args): def opendoc(self, *args):
fss, ok = macfs.StandardGetFile() # Any file type fss, ok = macfs.StandardGetFile() # Any file type

View file

@ -108,8 +108,7 @@ lines. <p>
Oh yes: the <code>quit</code> callback does a little magic too. It closes all windows, and only if this Oh yes: the <code>quit</code> callback does a little magic too. It closes all windows, and only if this
succeeds it actually quits. This gives the user a chance to cancel the operation if some files are unsaved. succeeds it actually quits. This gives the user a chance to cancel the operation if some files are unsaved.
Quitting itself is also a bit strange: you raise <code>self</code> to break out of the main loop. This bit <p>
of idiom was invented by Guido, so blame him:-). <p>
Lastly, there is the <code>idle</code> method, called by the Application base class when no event Lastly, there is the <code>idle</code> method, called by the Application base class when no event
is available. It is forwarded to the active window, so it can blink the text caret. <p> is available. It is forwarded to the active window, so it can blink the text caret. <p>

View file

@ -295,7 +295,7 @@ class Ped(Application):
w.close() w.close()
if self._windows: if self._windows:
return return
raise self self._quit()
# #
# Edit menu # Edit menu

View file

@ -730,7 +730,7 @@ class Wed(Application):
w.close() w.close()
if self._windows: if self._windows:
return return
raise self self._quit()
# #
# Edit menu # Edit menu

View file

@ -558,7 +558,7 @@ class Wed(Application):
w.close() w.close()
if self._windows: if self._windows:
return return
raise self self._quit()
# #
# Edit menu # Edit menu

View file

@ -368,7 +368,7 @@ class Wed(Application):
w.close() w.close()
if self._windows: if self._windows:
return return
raise self self._quit()
# #
# Edit menu # Edit menu