python-2.5.2/win32/Lib/lib-tk/tkCommonDialog.py
changeset 0 ae805ac0140d
equal deleted inserted replaced
-1:000000000000 0:ae805ac0140d
       
     1 # base class for tk common dialogues
       
     2 #
       
     3 # this module provides a base class for accessing the common
       
     4 # dialogues available in Tk 4.2 and newer.  use tkFileDialog,
       
     5 # tkColorChooser, and tkMessageBox to access the individual
       
     6 # dialogs.
       
     7 #
       
     8 # written by Fredrik Lundh, May 1997
       
     9 #
       
    10 
       
    11 from Tkinter import *
       
    12 
       
    13 class Dialog:
       
    14 
       
    15     command  = None
       
    16 
       
    17     def __init__(self, master=None, **options):
       
    18 
       
    19         # FIXME: should this be placed on the module level instead?
       
    20         if TkVersion < 4.2:
       
    21             raise TclError, "this module requires Tk 4.2 or newer"
       
    22 
       
    23         self.master  = master
       
    24         self.options = options
       
    25         if not master and options.get('parent'):
       
    26             self.master = options['parent']
       
    27 
       
    28     def _fixoptions(self):
       
    29         pass # hook
       
    30 
       
    31     def _fixresult(self, widget, result):
       
    32         return result # hook
       
    33 
       
    34     def show(self, **options):
       
    35 
       
    36         # update instance options
       
    37         for k, v in options.items():
       
    38             self.options[k] = v
       
    39 
       
    40         self._fixoptions()
       
    41 
       
    42         # we need a dummy widget to properly process the options
       
    43         # (at least as long as we use Tkinter 1.63)
       
    44         w = Frame(self.master)
       
    45 
       
    46         try:
       
    47 
       
    48             s = w.tk.call(self.command, *w._options(self.options))
       
    49 
       
    50             s = self._fixresult(w, s)
       
    51 
       
    52         finally:
       
    53 
       
    54             try:
       
    55                 # get rid of the widget
       
    56                 w.destroy()
       
    57             except:
       
    58                 pass
       
    59 
       
    60         return s