[Python-checkins] CVS: python/dist/src/Lib/lib-tk Tix.py,1.4,1.5

Martin v. L?wis loewis@users.sourceforge.net
Fri, 02 Nov 2001 15:48:22 -0800


Update of /cvsroot/python/python/dist/src/Lib/lib-tk
In directory usw-pr-cvs1:/tmp/cvs-serv15298/Lib/lib-tk

Modified Files:
	Tix.py 
Log Message:
Patch #471120: Improved doc strings and new wrappers.


Index: Tix.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/lib-tk/Tix.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** Tix.py	2001/10/09 11:50:55	1.4
--- Tix.py	2001/11/02 23:48:20	1.5
***************
*** 1,10 ****
  #
  # $Id$
  #
! # Tix.py -- Tix widget wrappers, part of PyTix.
  #
  #       - Sudhir Shenoy (sshenoy@gol.com), Dec. 1995.
! #         based on an idea (and a little code !!) of Jean-Marc Lugrin
! #                                               (lugrin@ms.com)
  #
  # NOTE: In order to minimize changes to Tkinter.py, some of the code here
--- 1,12 ----
+ # -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
  #
  # $Id$
  #
! # Tix.py -- Tix widget wrappers.
  #
+ #	For Tix, see http://tix.sourceforge.net
+ #
  #       - Sudhir Shenoy (sshenoy@gol.com), Dec. 1995.
! #         based on an idea of Jean-Marc Lugrin (lugrin@ms.com)
  #
  # NOTE: In order to minimize changes to Tkinter.py, some of the code here
***************
*** 52,69 ****
  #          liable to break.
  import Tkinter, os
! class Tk(Tkinter.Tk):
      """Toplevel widget of Tix which represents mostly the main window
      of an application. It has an associated Tcl interpreter."""
!     def __init__(self, screenName=None, baseName=None, className='Tk'):
          Tkinter.Tk.__init__(self, screenName, baseName, className)
          tixlib = os.environ.get('TIX_LIBRARY')
          if tixlib is not None:
              self.tk.eval('global auto_path; lappend auto_path {%s}' % tixlib)
              self.tk.eval('global tcl_pkgPath; lappend tcl_pkgPath {%s}' % tixlib)
          # Load Tix - this should work dynamically or statically
!        # If it's static, lib/tix8.1/pkgIndex.tcl should have 'load {} Tix'
!        # If it's dynamic, it should have 'load libtix8.1.8.2.so Tix'
          self.tk.eval('package require Tix')
  
  # The Tix 'tixForm' geometry manager
  class Form:
--- 54,212 ----
  #          liable to break.
  import Tkinter, os
! 
! # Could probably add this to Tkinter.Misc
! class tixCommand:
!     """The tix command provides access to miscellaneous  elements
!     of  Tix's  internal state and the Tix application context.
!     Most of the information manipulated by this  command  per
!     tains  to  the  application  as a whole, or to a screen or
!     display, rather than to a particular window.  The  command
!     can  take  any of a number of different forms depending on
!     the option argument.
! 
!     This is a mixin class, assumed to be mixed to Tkinter.Tk
!     that supports the self.tk.call method.
!     """
!     def tix_addbitmapdir(self, directory):
!         """Tix maintains a list of directory under which which
!         the  tix_getimage  and tix_getbitmap commands will
!         search for image files. The standard bitmap  direc
!         tory is $TIX_LIBRARY/bitmaps. The addbitmapdir com
!         mand adds directory into this list. By  using  this
!         command, the  image  files  of an applications can
!         also be located using the tix_getimage or tix_getbitmap
!         command.
!         """
!         return self.tk.call('tix', 'addbitmapdir', directory)
! 
!     def tix_cget(self, option):
!         """Returns  the  current  value  of the configuration
!         option given by option. Option may be  any  of  the
!         options described in the CONFIGURATION OPTIONS section.
!         """
!         return self.tk.call('tix', 'cget', option)
! 
!     def tix_configure(self, cnf=None, **kw):
!         """Query or modify the configuration  options  of  the
!         Tix application context. If no option is specified,
!         returns a list  describing  all  of  the available
!         options  (see  Tk_ConfigureInfo  for information on
!         the format of this list).  If option  is specified
!         with  no value, then  the  command returns a list
!         describing the one named option (this list will  be
!         identical to the corresponding sublist of the value
!         returned if no option is specified).   If  one  or
!         more  option-value  pairs  are  specified, then the
!         command modifies the given option(s)  to have  the
!         given value(s); in this case the command returns an
!         empty string. Option may be  any  of  the  options
!         described in the CONFIGURATION OPTIONS section.
!         """
!         return apply(self.tk.call, ('tix', configure) +
!                       self._options(cnf,kw) )
! 
!     def tix_filedialog(self, dlgclass=None):
!         """Returns  the  file  selection  dialog  that  may be
!         shared among different modules of this application.
!         This  command  will  create a file selection dialog
!         widget when it is called the first time. This  dialog
!         will be returned by all subsequent calls to tix
!         filedialog. An  optional dlgclass  parameter  can  be
!         passed  to  specified  what  type of file selection
!         dialog widget is desired. Possible options are 'tix'
!         'FileSelectDialog' or 'tixExFileSelectDialog'.
!         """
!         if dlgclass is not None:
!             return self.tk.call('tix', 'filedialog', dlgclass)
!         else:
!             return self.tk.call('tix', 'filedialog')
! 
!     def tix_getbitmap(self, name):
!         """Locates  a bitmap file of the name name.xpm or name
!         in  one  of  the bitmap  directories   (self, see   the
!         tix_addbitmapdir  command  above).  By  using  tix_getbitmap,
!         you can advoid hard coding the pathnames of
!         the bitmap files in your application. When successful,
!         it returns the complete pathname of the bitmap
!         file,  prefixed with the character '@'.  The returned
!         value can be used to configure the  -bitmap  option
!         of the TK and Tix widgets.
!         """
!         return self.tk.call('tix', 'getbitmap', name)
! 
!     def tix_getimage(self, name):
!         """Locates an  image  file  of  the  name name.xpm,
!         name.xbm or name.ppm in one of the bitmap  directo
!         ries  (see the addbitmapdir command above). If more
!         than one file with the  same  name  (but different
!         extensions)  exist,  then  the image type is chosen
!         according to the depth of the X display: xbm images
!         are  chosen on monochrome displays and color images
!         are chosen on color displays. By using  tix  getim
!         age,  you  can  advoid hard coding the pathnames of
!         the image files in your application. When  success
!         ful,  this  command  returns  the name of the newly
!         created image, which can be used to  configure  the
!         -image option of the TK and Tix widgets.
!         """
!         return self.tk.call('tix', 'getimage', name)
! 
!     def tix_option_get(self, name):
!         """Gets  the options  manitained  by  the  Tix
!         scheme mechanism. Available options are:
! 
!             active_bg       active_fg      bg
!             bold_font       dark1_bg       dark1_fg
!             dark2_bg        dark2_fg       disabled_fg
!             fg       	    fixed_font     font
!             inactive_bg     inactive_fg    input1_bg
!             input2_bg       italic_font    light1_bg
!             light1_fg       light2_bg      light2_fg
!             menu_font       output1_bg     output2_bg
!             select_bg       select_fg      selector
!             """
!         # could use self.tk.globalgetvar('tixOption', name)
!         return self.tk.call('tix', 'option', 'get', name)
! 
!     def tix_resetoptions(self, newScheme, newFontSet, newScmPrio=None):
!         """Resets  the  scheme and fontset of the Tix application
!         to  newScheme  and  newFontSet,  respectively.
!         This  affects only those widgets created after this
!         call. Therefore, it is best to  call  the  resetop
!         tions command before the creation of any widgets in
!         a Tix application.
! 
!         The optional parameter newScmPrio can be given  to
!         reset  the  priority level of the TK options set by
!         the Tix schemes.
! 
!         Because of the way TK handles the X option database, after
!         tixwish has  started  up, it is not possible to reset the
!         color schemes and font sets using the tix config  command.
!         Instead, the tix resetoptions command must be used.
!         """
!         if newScmPrio is not None:
!             return self.tk.call('tix', 'resetoptions', newScheme, newFontSet, newScmPrio)
!         else:
!             return self.tk.call('tix', 'resetoptions', newScheme, newFontSet)
! 
! class Tk(Tkinter.Tk, tixCommand):
      """Toplevel widget of Tix which represents mostly the main window
      of an application. It has an associated Tcl interpreter."""
!     def __init__(self, screenName=None, baseName=None, className='Tix'):
          Tkinter.Tk.__init__(self, screenName, baseName, className)
          tixlib = os.environ.get('TIX_LIBRARY')
+         self.tk.eval('global auto_path; lappend auto_path [file dir [info nameof]]')
          if tixlib is not None:
              self.tk.eval('global auto_path; lappend auto_path {%s}' % tixlib)
              self.tk.eval('global tcl_pkgPath; lappend tcl_pkgPath {%s}' % tixlib)
          # Load Tix - this should work dynamically or statically
!         # If it's static, lib/tix8.1/pkgIndex.tcl should have
!         #		'load {} Tix'
!         # If it's dynamic, lib/tix8.1/pkgIndex.tcl should have
!         #		'load libtix8.1.8.3.so Tix'
          self.tk.eval('package require Tix')
  
+ 
  # The Tix 'tixForm' geometry manager
  class Form:
***************
*** 109,121 ****
                         self.tk.call(
                         'tixForm', 'slaves', self._w)))
      
  
  Tkinter.Widget.__bases__ = Tkinter.Widget.__bases__ + (Form,)
  
! class TixWidget(Widget):
      """A TixWidget class is used to package all (or most) Tix widgets.
  
      Widget initialization is extended in two ways:
!            1) It is possible to give a list of options which must be part of
         the creation command (so called Tix 'static' options). These cannot be
         given as a 'config' command later.
--- 252,266 ----
                         self.tk.call(
                         'tixForm', 'slaves', self._w)))
+ 
+ 
      
  
  Tkinter.Widget.__bases__ = Tkinter.Widget.__bases__ + (Form,)
  
! class TixWidget(Tkinter.Widget):
      """A TixWidget class is used to package all (or most) Tix widgets.
  
      Widget initialization is extended in two ways:
!        1) It is possible to give a list of options which must be part of
         the creation command (so called Tix 'static' options). These cannot be
         given as a 'config' command later.
***************
*** 170,180 ****
         raise AttributeError, name
  
-     # Set a variable without calling its action routine
      def set_silent(self, value):
         self.tk.call('tixSetSilent', self._w, value)
  
-     # Return the named subwidget (which must have been created by
-     # the sub-class).
      def subwidget(self, name):
         n = self._subwidget_name(name)
         if not n:
--- 315,325 ----
         raise AttributeError, name
  
      def set_silent(self, value):
+        """Set a variable without calling its action routine"""
         self.tk.call('tixSetSilent', self._w, value)
  
      def subwidget(self, name):
+        """Return the named subwidget (which must have been created by
+        the sub-class)."""
         n = self._subwidget_name(name)
         if not n:
***************
*** 184,189 ****
         return self._nametowidget(n)
  
-     # Return all subwidgets
      def subwidgets_all(self):
         names = self._subwidget_names()
         if not names:
--- 329,334 ----
         return self._nametowidget(n)
  
      def subwidgets_all(self):
+        """Return all subwidgets."""
         names = self._subwidget_names()
         if not names:
***************
*** 199,204 ****
         return retlist
  
-     # Get a subwidget name (returns a String, not a Widget !)
      def _subwidget_name(self,name):
         try:
             return self.tk.call(self._w, 'subwidget', name)
--- 344,349 ----
         return retlist
  
      def _subwidget_name(self,name):
+        """Get a subwidget name (returns a String, not a Widget !)"""
         try:
             return self.tk.call(self._w, 'subwidget', name)
***************
*** 206,211 ****
             return None
  
-     # Return the name of all subwidgets
      def _subwidget_names(self):
         try:
             x = self.tk.call(self._w, 'subwidgets', '-all')
--- 351,356 ----
             return None
  
      def _subwidget_names(self):
+        """Return the name of all subwidgets."""
         try:
             x = self.tk.call(self._w, 'subwidgets', '-all')
***************
*** 214,219 ****
             return None
  
-     # Set configuration options for all subwidgets (and self)
      def config_all(self, option, value):
         if option == '':
             return
--- 359,364 ----
             return None
  
      def config_all(self, option, value):
+        """Set configuration options for all subwidgets (and self)."""
         if option == '':
             return
***************
*** 361,365 ****
  
  class ButtonBox(TixWidget):
!     """ButtonBox - A container for pushbuttons"""
      def __init__(self, master=None, cnf={}, **kw):
         TixWidget.__init__(self, master, 'tixButtonBox',
--- 506,512 ----
  
  class ButtonBox(TixWidget):
!     """ButtonBox - A container for pushbuttons.
!     Subwidgets are the buttons added with the add method.
!     """
      def __init__(self, master=None, cnf={}, **kw):
         TixWidget.__init__(self, master, 'tixButtonBox',
***************
*** 379,383 ****
  
  class ComboBox(TixWidget):
!     """ComboBox - an Entry field with a dropdown menu
  
      Subwidget       Class
--- 526,532 ----
  
  class ComboBox(TixWidget):
!     """ComboBox - an Entry field with a dropdown menu. The user can select a
!     choice by either typing in the entry subwdget or selecting from the
!     listbox subwidget.
  
      Subwidget       Class
***************
*** 385,391 ****
      entry       Entry
      arrow       Button
!     slistbox       ScrolledListBox
!     tick       Button }
!     cross       Button } present if created with the fancy option"""
  
      def __init__ (self, master=None, cnf={}, **kw):
--- 534,540 ----
      entry       Entry
      arrow       Button
!     slistbox    ScrolledListBox
!     tick        Button 
!     cross       Button : present if created with the fancy option"""
  
      def __init__ (self, master=None, cnf={}, **kw):
***************
*** 418,422 ****
  
  class Control(TixWidget):
!     """Control - An entry field with value change arrows.
  
      Subwidget       Class
--- 567,574 ----
  
  class Control(TixWidget):
!     """Control - An entry field with value change arrows.  The user can
!     adjust the value by pressing the two arrow buttons or by entering
!     the value directly into the entry. The new value will be checked
!     against the user-defined upper and lower limits.
  
      Subwidget       Class
***************
*** 447,451 ****
  
  class DirList(TixWidget):
!     """DirList - Directory Listing.
  
      Subwidget       Class
--- 599,605 ----
  
  class DirList(TixWidget):
!     """DirList - displays a list view of a directory, its previous
!     directories and its sub-directories. The user can choose one of
!     the directories displayed in the list or change to another directory.
  
      Subwidget       Class
***************
*** 465,469 ****
  
  class DirTree(TixWidget):
!     """DirList - Directory Listing in a hierarchical view.
  
      Subwidget       Class
--- 619,626 ----
  
  class DirTree(TixWidget):
!     """DirTree - Directory Listing in a hierarchical view.
!     Displays a tree view of a directory, its previous directories and its
!     sub-directories. The user can choose one of the directories displayed
!     in the list or change to another directory.
  
      Subwidget       Class
***************
*** 482,487 ****
--- 639,664 ----
         self.tk.call(self._w, 'chdir', dir)
  
+ class DirSelectBox(TixWidget):
+     """DirSelectBox - Motif style file select box.
+     It is generally used for
+     the user to choose a file. FileSelectBox stores the files mostly
+     recently selected into a ComboBox widget so that they can be quickly
+     selected again.
+     
+     Subwidget       Class
+     ---------       -----
+     selection       ComboBox
+     filter       ComboBox
+     dirlist       ScrolledListBox
+     filelist       ScrolledListBox"""
+ 
+     def __init__(self, master, cnf={}, **kw):
+        TixWidget.__init__(self, master, 'tixDirSelectBox', ['options'], cnf, kw)
+        self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist')
+        self.subwidget_list['dircbx'] = _dummyFileComboBox(self, 'dircbx')
+ 
  class ExFileSelectBox(TixWidget):
      """ExFileSelectBox - MS Windows style file select box.
+     It provides an convenient method for the user to select files.
  
      Subwidget       Class
***************
*** 513,518 ****
--- 690,721 ----
         self.tk.call(self._w, 'invoke')
  
+ 
+ # Should inherit from a Dialog class
+ class DirSelectDialog(TixWidget):
+     """The DirSelectDialog widget presents the directories in the file
+     system in a dialog window. The user can use this dialog window to
+     navigate through the file system to select the desired directory.
+ 
+     Subwidgets       Class
+     ----------       -----
+     dirbox       DirSelectDialog"""
+ 
+     def __init__(self, master, cnf={}, **kw):
+        TixWidget.__init__(self, master, 'tixDirSelectDialog',
+                         ['options'], cnf, kw)
+        self.subwidget_list['dirbox'] = _dummyDirSelectBox(self, 'dirbox')
+        # cancel and ok buttons are missing
+        
+     def popup(self):
+        self.tk.call(self._w, 'popup')
+ 
+     def popdown(self):
+        self.tk.call(self._w, 'popdown')
+ 
+ 
+ # Should inherit from a Dialog class
  class ExFileSelectDialog(TixWidget):
      """ExFileSelectDialog - MS Windows style file select dialog.
+     It provides an convenient method for the user to select files.
  
      Subwidgets       Class
***************
*** 533,537 ****
  class FileSelectBox(TixWidget):
      """ExFileSelectBox - Motif style file select box.
! 
      Subwidget       Class
      ---------       -----
--- 736,744 ----
  class FileSelectBox(TixWidget):
      """ExFileSelectBox - Motif style file select box.
!     It is generally used for
!     the user to choose a file. FileSelectBox stores the files mostly
!     recently selected into a ComboBox widget so that they can be quickly
!     selected again.
!     
      Subwidget       Class
      ---------       -----
***************
*** 554,557 ****
--- 761,765 ----
         self.tk.call(self._w, 'invoke')
  
+ # Should inherit from a Dialog class
  class FileSelectDialog(TixWidget):
      """FileSelectDialog - Motif style file select dialog.
***************
*** 575,579 ****
  
  class FileEntry(TixWidget):
!     """FileEntry - Entry field with button that invokes a FileSelectDialog
  
      Subwidgets       Class
--- 783,790 ----
  
  class FileEntry(TixWidget):
!     """FileEntry - Entry field with button that invokes a FileSelectDialog.
!     The user can type in the filename manually. Alternatively, the user can
!     press the button widget that sits next to the entry, which will bring
!     up a file selection dialog.
  
      Subwidgets       Class
***************
*** 596,600 ****
  
  class HList(TixWidget):
!     """HList - Hierarchy display.
  
      Subwidgets - None"""
--- 807,814 ----
  
  class HList(TixWidget):
!     """HList - Hierarchy display  widget can be used to display any data
!     that have a hierarchical structure, for example, file system directory
!     trees. The list entries are indented and connected by branch lines
!     according to their places in the hierachy.
  
      Subwidgets - None"""
***************
*** 786,790 ****
  
  class LabelEntry(TixWidget):
!     """LabelEntry - Entry field with label.
  
      Subwidgets       Class
--- 1000,1006 ----
  
  class LabelEntry(TixWidget):
!     """LabelEntry - Entry field with label. Packages an entry widget
!     and a label into one mega widget. It can beused be used to simplify
!     the creation of ``entry-form'' type of interface.
  
      Subwidgets       Class
***************
*** 800,804 ****
  
  class LabelFrame(TixWidget):
!     """LabelFrame - Labelled Frame container.
  
      Subwidgets       Class
--- 1016,1023 ----
  
  class LabelFrame(TixWidget):
!     """LabelFrame - Labelled Frame container. Packages a frame widget
!     and a label into one mega widget. To create widgets inside a
!     LabelFrame widget, one creates the new widgets relative to the
!     frame subwidget and manage them inside the frame subwidget.
  
      Subwidgets       Class
***************
*** 813,816 ****
--- 1032,1068 ----
         self.subwidget_list['frame'] = _dummyFrame(self, 'frame')
  
+ 
+ class ListNoteBook(TixWidget):
+     """A ListNoteBook widget is very similar to the TixNoteBook widget:
+     it can be used to display many windows in a limited space using a
+     notebook metaphor. The notebook is divided into a stack of pages
+     (windows). At one time only one of these pages can be shown.
+     The user can navigate through these pages by
+     choosing the name of the desired page in the hlist subwidget."""
+ 
+     def __init__(self, master, cnf={}, **kw):
+        TixWidget.__init__(self, master, 'tixDirList', ['options'], cnf, kw)
+        self.subwidget_list['hlist'] = _dummyHList(self, 'hlist')
+        self.subwidget_list['shlist'] = _dummyScrolledHList(self, 'vsb')
+ 
+ 
+     def add(self, name, cnf={}, **kw):
+        apply(self.tk.call,
+              (self._w, 'add', name) + self._options(cnf, kw))
+        self.subwidget_list[name] = TixSubWidget(self, name)
+        return self.subwidget_list[name]
+ 
+     def raise_page(self, name):              # raise is a python keyword
+        self.tk.call(self._w, 'raise', name)
+ 
+ class Meter(TixWidget):
+     """The Meter widget can be used to show the progress of a background
+     job which may take a long time to execute.
+     """
+ 
+     def __init__(self, master=None, cnf={}, **kw):
+        TixWidget.__init__(self, master, 'tixMeter',
+                         ['options'], cnf, kw)
+ 
  class NoteBook(TixWidget):
      """NoteBook - Multi-page container widget (tabbed notebook metaphor).
***************
*** 819,823 ****
      ----------       -----
      nbframe       NoteBookFrame
!     <pages>       g/p widgets added dynamically"""
  
      def __init__ (self,master=None,cnf={}, **kw):
--- 1071,1075 ----
      ----------       -----
      nbframe       NoteBookFrame
!     <pages>       page widgets added dynamically with the add method"""
  
      def __init__ (self,master=None,cnf={}, **kw):
***************
*** 857,861 ****
  
  class OptionMenu(TixWidget):
!     """OptionMenu - Option menu widget.
  
      Subwidget       Class
--- 1109,1113 ----
  
  class OptionMenu(TixWidget):
!     """OptionMenu - creates a menu button of options.
  
      Subwidget       Class
***************
*** 887,895 ****
  
  class PanedWindow(TixWidget):
!     """PanedWindow - Multi-pane container widget. Panes are resizable.
  
      Subwidgets       Class
      ----------       -----
!     <panes>       g/p widgets added dynamically"""
  
      def __init__(self, master, cnf={}, **kw):
--- 1139,1151 ----
  
  class PanedWindow(TixWidget):
!     """PanedWindow - Multi-pane container widget
!     allows the user to interactively manipulate the sizes of several
!     panes. The panes can be arranged either vertically or horizontally.The
!     user changes the sizes of the panes by dragging the resize handle
!     between two panes.
  
      Subwidgets       Class
      ----------       -----
!     <panes>       g/p widgets added dynamically with the add method."""
  
      def __init__(self, master, cnf={}, **kw):
***************
*** 911,915 ****
  
  class PopupMenu(TixWidget):
!     """PopupMenu widget.
  
      Subwidgets       Class
--- 1167,1174 ----
  
  class PopupMenu(TixWidget):
!     """PopupMenu widget can be used as a replacement of the tk_popup command.
!     The advantage of the Tix PopupMenu widget is it requires less application
!     code to manipulate.
! 
  
      Subwidgets       Class
***************
*** 933,937 ****
  
  class ResizeHandle(TixWidget):
!     """Incomplete - no documentation in Tix for this !!!"""
  
      def __init__(self, master, cnf={}, **kw):
--- 1192,1196 ----
  
  class ResizeHandle(TixWidget):
!     """Internal widget to draw resize handles on Scrolled widgets."""
  
      def __init__(self, master, cnf={}, **kw):
***************
*** 943,947 ****
  
  class ScrolledHList(TixWidget):
!     """ScrolledHList - HList with scrollbars."""
  
      def __init__(self, master, cnf={}, **kw):
--- 1202,1206 ----
  
  class ScrolledHList(TixWidget):
!     """ScrolledHList - HList with automatic scrollbars."""
  
      def __init__(self, master, cnf={}, **kw):
***************
*** 953,957 ****
  
  class ScrolledListBox(TixWidget):
!     """ScrolledListBox - Listbox with scrollbars."""
  
      def __init__(self, master, cnf={}, **kw):
--- 1212,1216 ----
  
  class ScrolledListBox(TixWidget):
!     """ScrolledListBox - Listbox with automatic scrollbars."""
  
      def __init__(self, master, cnf={}, **kw):
***************
*** 962,966 ****
  
  class ScrolledText(TixWidget):
!     """ScrolledText - Text with scrollbars."""
  
      def __init__(self, master, cnf={}, **kw):
--- 1221,1225 ----
  
  class ScrolledText(TixWidget):
!     """ScrolledText - Text with automatic scrollbars."""
  
      def __init__(self, master, cnf={}, **kw):
***************
*** 971,975 ****
  
  class ScrolledTList(TixWidget):
!     """ScrolledTList - TList with scrollbars."""
  
      def __init__(self, master, cnf={}, **kw):
--- 1230,1234 ----
  
  class ScrolledTList(TixWidget):
!     """ScrolledTList - TList with automatic scrollbars."""
  
      def __init__(self, master, cnf={}, **kw):
***************
*** 981,985 ****
  
  class ScrolledWindow(TixWidget):
!     """ScrolledWindow - Window with scrollbars."""
  
      def __init__(self, master, cnf={}, **kw):
--- 1240,1244 ----
  
  class ScrolledWindow(TixWidget):
!     """ScrolledWindow - Window with automatic scrollbars."""
  
      def __init__(self, master, cnf={}, **kw):
***************
*** 990,996 ****
  
  class Select(TixWidget):
!     """Select - Container for buttons. Can enforce radio buttons etc.
  
!     Subwidgets are buttons added dynamically"""
  
      def __init__(self, master, cnf={}, **kw):
--- 1249,1256 ----
  
  class Select(TixWidget):
!     """Select - Container of button subwidgets. It can be used to provide
!     radio-box or check-box style of selection options for the user.
  
!     Subwidgets are buttons added dynamically using the add method."""
  
      def __init__(self, master, cnf={}, **kw):
***************
*** 1026,1030 ****
  
  class TList(TixWidget):
!     """TList - Hierarchy display.
  
      Subwidgets - None"""
--- 1286,1295 ----
  
  class TList(TixWidget):
!     """TList - Hierarchy display widget which can be
!     used to display data in a tabular format. The list entries of a TList
!     widget are similar to the entries in the Tk listbox widget. The main
!     differences are (1) the TList widget can display the list entries in a
!     two dimensional format and (2) you can use graphical images as well as
!     multiple colors and fonts for the list entries.
  
      Subwidgets - None"""
***************
*** 1112,1116 ****
  
  class Tree(TixWidget):
!     """Tree - The tixTree widget (general purpose DirList like widget)"""
  
      def __init__(self, master=None, cnf={}, **kw):
--- 1377,1383 ----
  
  class Tree(TixWidget):
!     """Tree - The tixTree widget can be used to display hierachical
!     data in a tree form. The user can adjust
!     the view of the tree by opening or closing parts of the tree."""
  
      def __init__(self, master=None, cnf={}, **kw):
***************
*** 1136,1139 ****
--- 1403,1445 ----
         self.tk.call(self._w, 'setmode', entrypath, mode)
  
+ 
+ # Could try subclassing Tree for CheckList - would need another arg to init
+ class CheckList(TixWidget):
+     """The CheckList widget
+     displays a list of items to be selected by the user. CheckList acts
+     similarly to the Tk checkbutton or radiobutton widgets, except it is
+     capable of handling many more items than checkbuttons or radiobuttons.
+     """
+ 
+     def __init__(self, master=None, cnf={}, **kw):
+         TixWidget.__init__(self, master, 'tixCheckList',
+                            ['options'], cnf, kw)
+         self.subwidget_list['hlist'] = _dummyHList(self, 'hlist')
+         self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb')
+         self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb')
+         
+     def autosetmode(self):
+         self.tk.call(self._w, 'autosetmode')
+ 
+     def close(self, entrypath):
+         self.tk.call(self._w, 'close', entrypath)
+ 
+     def getmode(self, entrypath):
+         return self.tk.call(self._w, 'getmode', entrypath)
+ 
+     def open(self, entrypath):
+         self.tk.call(self._w, 'open', entrypath)
+ 
+     def getselection(self, mode='on'):
+         '''Mode can be on, off, default'''
+         self.tk.call(self._w, 'getselection', mode)
+ 
+     def getstatus(self, entrypath):
+         self.tk.call(self._w, 'getstatus', entrypath)
+ 
+     def setstatus(self, entrypath, mode='on'):
+         self.tk.call(self._w, 'setstatus', entrypath, mode)
+ 
+ 
  ###########################################################################
  ### The subclassing below is used to instantiate the subwidgets in each ###
***************
*** 1192,1195 ****
--- 1498,1508 ----
         TixSubWidget.__init__(self, master, name, destroy_physically)
  
+ class _dummyScrolledHList(ScrolledHList, TixSubWidget):
+     def __init__(self, master, name, destroy_physically=1):
+        TixSubWidget.__init__(self, master, name, destroy_physically)
+        self.subwidget_list['hlist'] = _dummyHList(self, 'hlist')
+        self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb')
+        self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb')
+ 
  class _dummyTList(TList, TixSubWidget):
      def __init__(self, master, name, destroy_physically=1):
***************
*** 1201,1206 ****
         self.subwidget_list['entry'] = _dummyEntry(self, 'entry')
         self.subwidget_list['arrow'] = _dummyButton(self, 'arrow')
         self.subwidget_list['slistbox'] = _dummyScrolledListBox(self,
!                                                         'slistbox')
         self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox',
                                                   destroy_physically=0)
--- 1514,1522 ----
         self.subwidget_list['entry'] = _dummyEntry(self, 'entry')
         self.subwidget_list['arrow'] = _dummyButton(self, 'arrow')
+        # I'm not sure about this destroy_physically=0 in all cases;
+        # it may depend on if -dropdown is true; I've added as a trial
         self.subwidget_list['slistbox'] = _dummyScrolledListBox(self,
!                                                         'slistbox',
!                                                         destroy_physically=0)
         self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox',
                                                   destroy_physically=0)
***************
*** 1213,1216 ****
--- 1529,1538 ----
         self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb')
  
+ class _dummyDirSelectBox(DirSelectBox, TixSubWidget):
+     def __init__(self, master, name, destroy_physically=1):
+        TixSubWidget.__init__(self, master, name, destroy_physically)
+        self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist')
+        self.subwidget_list['dircbx'] = _dummyFileComboBox(self, 'dircbx')
+ 
  class _dummyExFileSelectBox(ExFileSelectBox, TixSubWidget):
      def __init__(self, master, name, destroy_physically=1):
***************
*** 1233,1236 ****
--- 1555,1563 ----
         self.subwidget_list['selection'] = _dummyComboBox(self, 'selection')
  
+ class _dummyFileComboBox(ComboBox, TixSubWidget):
+     def __init__(self, master, name, destroy_physically=1):
+        TixSubWidget.__init__(self, master, name, destroy_physically)
+        self.subwidget_list['dircbx'] = _dummyComboBox(self, 'dircbx')
+ 
  class _dummyStdButtonBox(StdButtonBox, TixSubWidget):
      def __init__(self, master, name, destroy_physically=1):
***************
*** 1264,1266 ****
--- 1591,1603 ----
         s = s + '{{' + type + '} {' + type + ' - ' + dict[type] + '}} '
      return s
+ 
+ # Still to be done:
+ class CObjView(TixWidget):
+     """This file implements the Canvas Object View widget. This is a base
+     class of IconView. It implements automatic placement/adjustment of the
+     scrollbars according to the canvas objects inside the canvas subwidget.
+     The scrollbars are adjusted so that the canvas is just large enough
+     to see all the objects.
+     """
+     pass