Patch #473002: Update Demo/tix tixwidgets.py et al.
diff --git a/Demo/tix/samples/DirList.py b/Demo/tix/samples/DirList.py
new file mode 100755
index 0000000..3064768
--- /dev/null
+++ b/Demo/tix/samples/DirList.py
@@ -0,0 +1,142 @@
+# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
+#
+#	$Id$
+#
+# Tix Demostration Program
+#
+# This sample program is structured in such a way so that it can be
+# executed from the Tix demo program "widget": it must have a
+# procedure called "RunSample". It should also have the "if" statment
+# at the end of this file so that it can be run as a standalone
+# program using tixwish.
+
+# This file demonstrates the use of the tixDirList widget -- you can
+# use it for the user to select a directory. For example, an installation
+# program can use the tixDirList widget to ask the user to select the
+# installation directory for an application.
+#
+
+import Tix, os, copy
+from Tkconstants import *
+
+TCL_DONT_WAIT		= 1<<1
+TCL_WINDOW_EVENTS	= 1<<2
+TCL_FILE_EVENTS		= 1<<3
+TCL_TIMER_EVENTS	= 1<<4
+TCL_IDLE_EVENTS		= 1<<5
+TCL_ALL_EVENTS		= 0
+
+def RunSample (root):
+    global dirlist
+    dirlist = DemoDirList(root)
+    dirlist.mainloop()
+    dirlist.destroy()
+    
+class DemoDirList:
+    def __init__(self, w):
+        self.root = w
+        self.exit = -1
+        
+        z = w.winfo_toplevel()
+        z.wm_title('Tix.DirList Widget Demo')
+        
+        # Create the tixDirList and the tixLabelEntry widgets on the on the top
+        # of the dialog box
+
+        # bg = root.tk.eval('tix option get bg')
+        # adding bg=bg crashes Windows pythonw tk8.3.3 Python 2.1.0
+
+        top = Tix.Frame( w, relief=RAISED, bd=1)
+
+        # Create the DirList widget. By default it will show the current
+        # directory
+        #
+        #
+        top.dir = Tix.DirList(top)
+        top.dir.hlist['width'] = 40
+        
+        # When the user presses the ".." button, the selected directory
+        # is "transferred" into the entry widget
+        #
+        top.btn = Tix.Button(top, text = "  >>  ", pady = 0)
+
+        # We use a LabelEntry to hold the installation directory. The user
+        # can choose from the DirList widget, or he can type in the directory 
+        # manually
+        #
+        top.ent = Tix.LabelEntry(top, label="Installation Directory:",
+                                  labelside = 'top',
+                                  options = '''
+                                  entry.width 40
+                                  label.anchor w
+                                  ''')
+        
+        font = self.root.tk.eval('tix option get fixed_font')
+        # font = self.root.master.tix_option_get('fixed_font')
+        top.ent.entry['font'] = font
+
+        self.dlist_dir = copy.copy(os.curdir)
+        # This should work setting the entry's textvariable
+        top.ent.entry['textvariable'] = self.dlist_dir
+        top.btn['command'] = lambda dir=top.dir, ent=top.ent, self=self: \
+                             self.copy_name(dir,ent)
+
+        # top.ent.entry.insert(0,'tix'+`self`)
+        top.ent.entry.bind('<Return>', lambda self=self: self.okcmd () )
+
+        top.pack( expand='yes', fill='both', side=TOP)
+        top.dir.pack( expand=1, fill=BOTH, padx=4, pady=4, side=LEFT)
+        top.btn.pack( anchor='s', padx=4, pady=4, side=LEFT)
+        top.ent.pack( expand=1, fill=X, anchor='s', padx=4, pady=4, side=LEFT)
+
+        # Use a ButtonBox to hold the buttons.
+        #
+        box = Tix.ButtonBox (w, orientation='horizontal')
+        box.add ('ok', text='Ok', underline=0, width=6,
+                     command = lambda self=self: self.okcmd () )
+        box.add ('cancel', text='Cancel', underline=0, width=6,
+                     command = lambda self=self: self.quitcmd () )
+
+        box.pack( anchor='s', fill='x', side=BOTTOM)
+        z.wm_protocol("WM_DELETE_WINDOW", lambda self=self: self.quitcmd())
+
+    def copy_name (self, dir, ent):
+        # This should work as it is the entry's textvariable
+        self.dlist_dir = dir.cget('value')
+        # but it isn't so I'll do it manually
+        ent.entry.delete(0,'end')
+        ent.entry.insert(0, self.dlist_dir)
+
+    def okcmd (self):
+        # tixDemo:Status "You have selected the directory" + $self.dlist_dir
+
+        self.quitcmd()
+
+    def quitcmd (self):
+        # self.root.destroy()
+        self.exit = 0
+
+    def mainloop(self):
+        while self.exit < 0:
+            self.root.tk.dooneevent(TCL_ALL_EVENTS)
+        # self.root.tk.dooneevent(TCL_DONT_WAIT)
+
+    def destroy (self):
+        self.root.destroy()
+
+# This "if" statement makes it possible to run this script file inside or
+# outside of the main demo program "widget".
+#
+if __name__== '__main__' :
+    import tkMessageBox, traceback
+
+    try:
+        root=Tix.Tk()
+        RunSample(root)
+    except:
+        t, v, tb = sys.exc_info()
+        text = "Error running the demo script:\n"
+        for line in traceback.format_exception(t,v,tb):
+            text = text + line + '\n'
+            d = tkMessageBox.showerror ( 'Tix Demo Error', text)
+
diff --git a/Demo/tix/samples/DirTree.py b/Demo/tix/samples/DirTree.py
new file mode 100755
index 0000000..7bf813c
--- /dev/null
+++ b/Demo/tix/samples/DirTree.py
@@ -0,0 +1,108 @@
+# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
+#
+#	$Id$
+#
+# Tix Demostration Program
+#
+# This sample program is structured in such a way so that it can be
+# executed from the Tix demo program "widget": it must have a
+# procedure called "RunSample". It should also have the "if" statment
+# at the end of this file so that it can be run as a standalone
+# program using tixwish.
+
+# This file demonstrates the use of the tixDirTree widget -- you can
+# use it for the user to select a directory. For example, an installation
+# program can use the tixDirTree widget to ask the user to select the
+# installation directory for an application.
+#
+
+import Tix, os, copy
+from Tkconstants import *
+
+def RunSample (w):
+    DemoDirTree(w)
+
+class DemoDirTree:
+    def __init__(self, w):
+        self.root = w
+        
+        z = w.winfo_toplevel()
+        z.wm_title('Tix.DirTree Widget Demo')
+        
+        # Create the tixDirTree and the tixLabelEntry widgets on the on the top
+        # of the dialog box
+
+        # bg = root.tk.eval('tix option get bg')
+        # adding bg=bg crashes Windows pythonw tk8.3.3 Python 2.1.0
+
+        top = Tix.Frame( w, relief=RAISED, bd=1)
+
+        # Create the DirTree widget. By default it will show the current
+        # directory
+        #
+        #
+        top.dir = Tix.DirTree(top)
+        top.dir.hlist['width'] = 40
+        
+        # When the user presses the ".." button, the selected directory
+        # is "transferred" into the entry widget
+        #
+        top.btn = Tix.Button(top, text = "  >>  ", pady = 0)
+
+        # We use a LabelEntry to hold the installation directory. The user
+        # can choose from the DirTree widget, or he can type in the directory 
+        # manually
+        #
+        top.ent = Tix.LabelEntry(top, label="Installation Directory:",
+                                  labelside = 'top',
+                                  options = '''
+                                  entry.width 40
+                                  label.anchor w
+                                  ''')
+
+        self.dlist_dir = copy.copy(os.curdir)
+        top.ent.entry['textvariable'] = self.dlist_dir
+        top.btn['command'] = lambda dir=top.dir, ent=top.ent, self=self: \
+                             self.copy_name(dir,ent)
+
+        top.ent.entry.bind('<Return>', lambda self=self: self.okcmd () )
+
+        top.pack( expand='yes', fill='both', side=TOP)
+        top.dir.pack( expand=1, fill=BOTH, padx=4, pady=4, side=LEFT)
+        top.btn.pack( anchor='s', padx=4, pady=4, side=LEFT)
+        top.ent.pack( expand=1, fill=X, anchor='s', padx=4, pady=4, side=LEFT)
+
+        # Use a ButtonBox to hold the buttons.
+        #
+        box = Tix.ButtonBox (w, orientation='horizontal')
+        box.add ('ok', text='Ok', underline=0, width=6,
+                     command = lambda self=self: self.okcmd () )
+        box.add ('cancel', text='Cancel', underline=0, width=6,
+                     command = lambda self=self: self.quitcmd () )
+
+        box.pack( anchor='s', fill='x', side=BOTTOM)
+
+    def copy_name (self, dir, ent):
+        # This should work as it is the entry's textvariable
+        self.dlist_dir = dir.cget('value')
+        # but it isn't so I'll do it manually
+        ent.entry.delete(0,'end')
+        ent.entry.insert(0, self.dlist_dir)
+
+    def okcmd (self):
+        # tixDemo:Status "You have selected the directory" + $self.dlist_dir
+
+        self.quitcmd()
+
+    def quitcmd (self):
+        self.root.destroy()
+
+# This "if" statement makes it possible to run this script file inside or
+# outside of the main demo program "widget".
+#
+if __name__== '__main__' :
+    root=Tix.Tk()
+    RunSample(root)
+    root.mainloop()
+    root.destroy()
+
diff --git a/Demo/tix/samples/SHList1.py b/Demo/tix/samples/SHList1.py
index 5122bbc..f4294ee 100755
--- a/Demo/tix/samples/SHList1.py
+++ b/Demo/tix/samples/SHList1.py
@@ -1,4 +1,4 @@
-#!/usr/local/bin/python
+# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
 # 
 # $Id$
 #
@@ -57,7 +57,7 @@
     for boss,name in bosses :
 	if count :
 	    f=Tix.Frame(hlist, name='sep%d' % count, height=2, width=150,
-		bd=2, relief=Tix.SUNKEN, bg=hlist['bg'] )
+		bd=2, relief=Tix.SUNKEN )
 
 	    hlist.add_child( itemtype=Tix.WINDOW, 
 		window=f, state=Tix.DISABLED )
@@ -89,10 +89,10 @@
     #
     box= Tix.ButtonBox(top, orientation=Tix.HORIZONTAL )
     box.add( 'ok',  text='Ok', underline=0,  width=6,
-	command = lambda w=w:  w.destroy() )
+	command = lambda w=w:  w.quit() )
 
     box.add( 'cancel', text='Cancel', underline=0, width=6,
-	command = lambda w=w:  w.destroy() )
+	command = lambda w=w:  w.quit() )
 
     box.pack( side=Tix.BOTTOM, fill=Tix.X)
     top.pack( side=Tix.TOP,    fill=Tix.BOTH, expand=1 )
@@ -105,3 +105,4 @@
     root=Tix.Tk()
     RunSample(root)
     root.mainloop()
+    root.destroy()
diff --git a/Demo/tix/samples/SHList2.py b/Demo/tix/samples/SHList2.py
index e1a7a7c..db24511 100755
--- a/Demo/tix/samples/SHList2.py
+++ b/Demo/tix/samples/SHList2.py
@@ -1,4 +1,4 @@
-#!/usr/local/bin/python
+# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
 # 
 # $Id$
 #
@@ -43,7 +43,7 @@
 
     # First some styles for the headers
     style={}
-    style['header'] = Tix.DisplayStyle(Tix.TEXT, fg='black', refwindow=top,
+    style['header'] = Tix.DisplayStyle(Tix.TEXT, refwindow=top,
 	anchor=Tix.CENTER, padx=8, pady=2, font = boldfont )
 
     hlist.header_create(0, itemtype=Tix.TEXT, text='Name',
@@ -78,17 +78,13 @@
 	('chuck', 'jeff',       'Chuck McLean',		'Cleaner')
     ]
 
-    style['mgr_name'] = Tix.DisplayStyle(Tix.TEXT, refwindow=top,
-	fg='#202060', selectforeground = '#202060', font = boldfont )
+    style['mgr_name'] = Tix.DisplayStyle(Tix.TEXT, refwindow=top)
 
-    style['mgr_posn'] = Tix.DisplayStyle(Tix.TEXT, padx=8,  refwindow=top,
-	fg='#202060', selectforeground='#202060' )
+    style['mgr_posn'] = Tix.DisplayStyle(Tix.TEXT, padx=8,  refwindow=top)
 
-    style['empl_name'] = Tix.DisplayStyle(Tix.TEXT, refwindow=top,
-	fg='#602020', selectforeground = '#602020', font = boldfont )
+    style['empl_name'] = Tix.DisplayStyle(Tix.TEXT, refwindow=top)
 
-    style['empl_posn'] = Tix.DisplayStyle(Tix.TEXT, padx=8,  refwindow=top,
-	fg='#602020', selectforeground = '#602020' )
+    style['empl_posn'] = Tix.DisplayStyle(Tix.TEXT, padx=8,  refwindow=top)
 
     # Let configure the appearance of the HList subwidget 
     #
@@ -130,10 +126,10 @@
     #
     box= Tix.ButtonBox(top, orientation=Tix.HORIZONTAL )
     box.add( 'ok',  text='Ok', underline=0,  width=6,
-	command = lambda w=w: w.destroy() )
+	command = lambda w=w: w.quit() )
 
     box.add( 'cancel', text='Cancel', underline=0, width=6,
-	command = lambda w=w: w.destroy() )
+	command = lambda w=w: w.quit() )
 
     box.pack( side=Tix.BOTTOM, fill=Tix.X)
     top.pack( side=Tix.TOP,    fill=Tix.BOTH, expand=1 )
@@ -146,3 +142,4 @@
     root=Tix.Tk()
     RunSample(root)
     root.mainloop()
+    root.destroy()