Update for release.
[python/dscho.git] / Lib / lib-tk / tkCommonDialog.py
blob5d460ce5cfc2d55d184faea556b17349a37079ed
2 # Instant Python
3 # $Id$
5 # base class for tk common dialogues
7 # this module provides a base class for accessing the common
8 # dialogues available in Tk 4.2 and newer. use tkFileDialog,
9 # tkColorChooser, and tkMessageBox to access the individual
10 # dialogs.
12 # written by Fredrik Lundh, May 1997
15 from Tkinter import *
17 class Dialog:
19 command = None
21 def __init__(self, master=None, **options):
23 # FIXME: should this be placed on the module level instead?
24 if TkVersion < 4.2:
25 raise TclError, "this module requires Tk 4.2 or newer"
27 self.master = master
28 self.options = options
29 if not master and options.get('parent'):
30 self.master = options['parent']
32 def _fixoptions(self):
33 pass # hook
35 def _fixresult(self, widget, result):
36 return result # hook
38 def show(self, **options):
40 # update instance options
41 for k, v in options.items():
42 self.options[k] = v
44 self._fixoptions()
46 # we need a dummy widget to properly process the options
47 # (at least as long as we use Tkinter 1.63)
48 w = Frame(self.master)
50 try:
52 s = apply(w.tk.call, (self.command,) + w._options(self.options))
54 s = self._fixresult(w, s)
56 finally:
58 try:
59 # get rid of the widget
60 w.destroy()
61 except:
62 pass
64 return s