home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / tkCommonDialog.py < prev    next >
Text File  |  2003-12-30  |  2KB  |  65 lines

  1. #
  2. # Instant Python
  3. # $Id: tkCommonDialog.py,v 1.7 2003/04/06 09:00:53 rhettinger Exp $
  4. #
  5. # base class for tk common dialogues
  6. #
  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.
  11. #
  12. # written by Fredrik Lundh, May 1997
  13. #
  14.  
  15. from Tkinter import *
  16.  
  17. class Dialog:
  18.  
  19.     command  = None
  20.  
  21.     def __init__(self, master=None, **options):
  22.  
  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"
  26.  
  27.         self.master  = master
  28.         self.options = options
  29.         if not master and options.get('parent'):
  30.             self.master = options['parent']
  31.  
  32.     def _fixoptions(self):
  33.         pass # hook
  34.  
  35.     def _fixresult(self, widget, result):
  36.         return result # hook
  37.  
  38.     def show(self, **options):
  39.  
  40.         # update instance options
  41.         for k, v in options.items():
  42.             self.options[k] = v
  43.  
  44.         self._fixoptions()
  45.  
  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)
  49.  
  50.         try:
  51.  
  52.             s = w.tk.call(self.command, *w._options(self.options))
  53.  
  54.             s = self._fixresult(w, s)
  55.  
  56.         finally:
  57.  
  58.             try:
  59.                 # get rid of the widget
  60.                 w.destroy()
  61.             except:
  62.                 pass
  63.  
  64.         return s
  65.