mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Calling Application._quit() is now preferred over raising self.
This commit is contained in:
parent
4cb945454a
commit
ef5cd05c3d
11 changed files with 14 additions and 20 deletions
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue