summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2002-03-17 18:19:13 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2002-03-17 18:19:13 (GMT)
commit8ec03e0528d93c6b7cc9cf07d2f24e541661ba70 (patch)
tree0a35cc3a6464e7d4c5b03e260978a1e107ac7449
parent42ab61eeabe45359f46a8378e572e5c73a8adb36 (diff)
downloadcpython-8ec03e0528d93c6b7cc9cf07d2f24e541661ba70.zip
cpython-8ec03e0528d93c6b7cc9cf07d2f24e541661ba70.tar.gz
cpython-8ec03e0528d93c6b7cc9cf07d2f24e541661ba70.tar.bz2
Patch #485959: Various changes to Tix demos.
-rwxr-xr-xDemo/tix/samples/Balloon.py67
-rwxr-xr-xDemo/tix/samples/BtnBox.py4
-rwxr-xr-xDemo/tix/samples/CmpImg.py4
-rwxr-xr-xDemo/tix/samples/ComboBox.py12
-rwxr-xr-xDemo/tix/samples/Control.py134
-rwxr-xr-xDemo/tix/samples/DirList.py18
-rwxr-xr-xDemo/tix/samples/DirTree.py30
-rwxr-xr-xDemo/tix/samples/NoteBook.py4
-rwxr-xr-xDemo/tix/samples/OptMenu.py6
-rwxr-xr-xDemo/tix/samples/PopMenu.py9
-rwxr-xr-xDemo/tix/samples/SHList1.py192
-rwxr-xr-xDemo/tix/samples/SHList2.py210
-rwxr-xr-xDemo/tix/samples/Tree.py4
-rw-r--r--Demo/tix/tixwidgets.py9
14 files changed, 401 insertions, 302 deletions
diff --git a/Demo/tix/samples/Balloon.py b/Demo/tix/samples/Balloon.py
index df90660..825ae6a 100755
--- a/Demo/tix/samples/Balloon.py
+++ b/Demo/tix/samples/Balloon.py
@@ -1,11 +1,11 @@
-#!/usr/local/bin/python
-#
+# -*-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 "tixwidgets": it must have a
+# executed from the Tix demo program "tixwidgets.py": 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.
@@ -17,29 +17,52 @@
import Tix
-def RunSample(w):
- status = Tix.Label(w, width=40, relief=Tix.SUNKEN, bd=1)
- status.pack(side=Tix.BOTTOM, fill=Tix.Y, padx=2, pady=1)
+TCL_ALL_EVENTS = 0
+
+def RunSample (root):
+ balloon = DemoBalloon(root)
+ balloon.mainloop()
+ balloon.destroy()
+
+class DemoBalloon:
+ def __init__(self, w):
+ self.root = w
+ self.exit = -1
+
+ z = w.winfo_toplevel()
+ z.wm_protocol("WM_DELETE_WINDOW", lambda self=self: self.quitcmd())
+
+ status = Tix.Label(w, width=40, relief=Tix.SUNKEN, bd=1)
+ status.pack(side=Tix.BOTTOM, fill=Tix.Y, padx=2, pady=1)
- # Create two mysterious widgets that need balloon help
- button1 = Tix.Button(w, text='Something Unexpected',
- command=lambda w=w: w.destroy())
- button2 = Tix.Button(w, text='Something Else Unexpected')
- button2['command'] = lambda w=button2: w.destroy()
- button1.pack(side=Tix.TOP, expand=1)
- button2.pack(side=Tix.TOP, expand=1)
+ # Create two mysterious widgets that need balloon help
+ button1 = Tix.Button(w, text='Something Unexpected',
+ command=self.quitcmd)
+ button2 = Tix.Button(w, text='Something Else Unexpected')
+ button2['command'] = lambda w=button2: w.destroy()
+ button1.pack(side=Tix.TOP, expand=1)
+ button2.pack(side=Tix.TOP, expand=1)
- # Create the balloon widget and associate it with the widgets that we want
- # to provide tips for:
- b = Tix.Balloon(w, statusbar=status)
+ # Create the balloon widget and associate it with the widgets that we want
+ # to provide tips for:
+ b = Tix.Balloon(w, statusbar=status)
- b.bind_widget(button1, balloonmsg='Close Window',
- statusmsg='Press this button to close this window')
- b.bind_widget(button2, balloonmsg='Self-destruct button',
- statusmsg='Press this button and it will destroy itself')
+ b.bind_widget(button1, balloonmsg='Close Window',
+ statusmsg='Press this button to close this window')
+ b.bind_widget(button2, balloonmsg='Self-destruct button',
+ statusmsg='Press this button and it will destroy itself')
+
+ def quitcmd (self):
+ self.exit = 0
+
+ def mainloop(self):
+ foundEvent = 1
+ while self.exit < 0 and foundEvent > 0:
+ foundEvent = self.root.tk.dooneevent(TCL_ALL_EVENTS)
+
+ def destroy (self):
+ self.root.destroy()
if __name__ == '__main__':
root = Tix.Tk()
-
RunSample(root)
- root.mainloop()
diff --git a/Demo/tix/samples/BtnBox.py b/Demo/tix/samples/BtnBox.py
index f21cc15..57d02df 100755
--- a/Demo/tix/samples/BtnBox.py
+++ b/Demo/tix/samples/BtnBox.py
@@ -1,11 +1,11 @@
-#!/usr/local/bin/python
+# -*-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 "tixwidgets": it must have a
+# executed from the Tix demo program "tixwidgets.py": 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.
diff --git a/Demo/tix/samples/CmpImg.py b/Demo/tix/samples/CmpImg.py
index 4e03bc1..4e08df7 100755
--- a/Demo/tix/samples/CmpImg.py
+++ b/Demo/tix/samples/CmpImg.py
@@ -1,11 +1,11 @@
-#!/usr/local/bin/python
+# -*-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 "tixwidgets": it must have a
+# executed from the Tix demo program "tixwidgets.py": 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.
diff --git a/Demo/tix/samples/ComboBox.py b/Demo/tix/samples/ComboBox.py
index 84b1b30..afecea4 100755
--- a/Demo/tix/samples/ComboBox.py
+++ b/Demo/tix/samples/ComboBox.py
@@ -1,11 +1,11 @@
-#!/usr/local/bin/python
+# -*-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 "tixwidgets": it must have a
+# executed from the Tix demo program "tixwidgets.py": 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.
@@ -85,13 +85,15 @@ def RunSample(w):
top.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1)
def select_month(event=None):
- print "Month =", demo_month.get()
+ # tixDemo:Status "Month = %s" % demo_month.get()
+ pass
def select_year(event=None):
- print "Year =", demo_year.get()
+ # tixDemo:Status "Year = %s" % demo_year.get()
+ pass
def ok_command(w):
- print "Month =", demo_month.get(), ", Year=", demo_year.get()
+ # tixDemo:Status "Month = %s, Year= %s" % (demo_month.get(), demo_year.get())
w.destroy()
if __name__ == '__main__':
diff --git a/Demo/tix/samples/Control.py b/Demo/tix/samples/Control.py
index 4b31ced..e85ee84 100755
--- a/Demo/tix/samples/Control.py
+++ b/Demo/tix/samples/Control.py
@@ -1,11 +1,11 @@
-#!/usr/local/bin/python
-#
+# -*-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 "tixwidgets": it must have a
+# executed from the Tix demo program "tixwidgets.py": 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.
@@ -17,57 +17,82 @@
# This example program uses three Control widgets. One lets you select
# integer values; one lets you select floating point values and the last
# one lets you select a few names.
-#
+
import Tix
-def RunSample(w):
- global demo_maker, demo_thrust, demo_num_engines
-
- demo_maker = Tix.StringVar()
- demo_thrust = Tix.DoubleVar()
- demo_num_engines = Tix.IntVar()
- demo_maker.set('P&W')
- demo_thrust.set(20000.0)
- demo_num_engines.set(2)
-
- top = Tix.Frame(w, bd=1, relief=Tix.RAISED)
-
- # $w.top.a allows only integer values
- #
- # [Hint] The -options switch sets the options of the subwidgets.
- # [Hint] We set the label.width subwidget option of the Controls to
- # be 16 so that their labels appear to be aligned.
- #
- a = Tix.Control(top, label='Number of Engines: ', integer=1,
- variable=demo_num_engines, min=1, max=4,
- options='entry.width 10 label.width 20 label.anchor e')
-
- b = Tix.Control(top, label='Thrust: ', integer=0,
- min='10000.0', max='60000.0', step=500,
- variable=demo_thrust,
- options='entry.width 10 label.width 20 label.anchor e')
-
- c = Tix.Control(top, label='Engine Maker: ', value='P&W',
- variable=demo_maker,
- options='entry.width 10 label.width 20 label.anchor e')
-
- # We can't define these in the init because the widget 'c' doesn't
- # exist yet and we need to reference it
- c['incrcmd'] = lambda w=c: adjust_maker(w, 1)
- c['decrcmd'] = lambda w=c: adjust_maker(w, -1)
- c['validatecmd'] = lambda w=c: validate_maker(w)
-
- a.pack(side=Tix.TOP, anchor=Tix.W)
- b.pack(side=Tix.TOP, anchor=Tix.W)
- c.pack(side=Tix.TOP, anchor=Tix.W)
-
- box = Tix.ButtonBox(w, orientation=Tix.HORIZONTAL)
- box.add('ok', text='Ok', underline=0, width=6,
- command=lambda w=w: ok_command(w))
- box.add('cancel', text='Cancel', underline=0, width=6,
- command=lambda w=w: w.destroy())
- box.pack(side=Tix.BOTTOM, fill=Tix.X)
- top.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1)
+TCL_ALL_EVENTS = 0
+
+def RunSample (root):
+ control = DemoControl(root)
+ control.mainloop()
+ control.destroy()
+
+class DemoControl:
+ def __init__(self, w):
+ self.root = w
+ self.exit = -1
+
+ global demo_maker, demo_thrust, demo_num_engines
+
+ demo_maker = Tix.StringVar()
+ demo_thrust = Tix.DoubleVar()
+ demo_num_engines = Tix.IntVar()
+ demo_maker.set('P&W')
+ demo_thrust.set(20000.0)
+ demo_num_engines.set(2)
+
+ top = Tix.Frame(w, bd=1, relief=Tix.RAISED)
+
+ # $w.top.a allows only integer values
+ #
+ # [Hint] The -options switch sets the options of the subwidgets.
+ # [Hint] We set the label.width subwidget option of the Controls to
+ # be 16 so that their labels appear to be aligned.
+ #
+ a = Tix.Control(top, label='Number of Engines: ', integer=1,
+ variable=demo_num_engines, min=1, max=4,
+ options='entry.width 10 label.width 20 label.anchor e')
+
+ b = Tix.Control(top, label='Thrust: ', integer=0,
+ min='10000.0', max='60000.0', step=500,
+ variable=demo_thrust,
+ options='entry.width 10 label.width 20 label.anchor e')
+
+ c = Tix.Control(top, label='Engine Maker: ', value='P&W',
+ variable=demo_maker,
+ options='entry.width 10 label.width 20 label.anchor e')
+
+ # We can't define these in the init because the widget 'c' doesn't
+ # exist yet and we need to reference it
+ c['incrcmd'] = lambda w=c: adjust_maker(w, 1)
+ c['decrcmd'] = lambda w=c: adjust_maker(w, -1)
+ c['validatecmd'] = lambda w=c: validate_maker(w)
+
+ a.pack(side=Tix.TOP, anchor=Tix.W)
+ b.pack(side=Tix.TOP, anchor=Tix.W)
+ c.pack(side=Tix.TOP, anchor=Tix.W)
+
+ box = Tix.ButtonBox(w, orientation=Tix.HORIZONTAL)
+ box.add('ok', text='Ok', underline=0, width=6,
+ command=self.okcmd)
+ box.add('cancel', text='Cancel', underline=0, width=6,
+ command=self.quitcmd)
+ box.pack(side=Tix.BOTTOM, fill=Tix.X)
+ top.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1)
+
+ def okcmd (self):
+ # tixDemo:Status "Selected %d of %s engines each of thrust %d", (demo_num_engines.get(), demo_maker.get(), demo_thrust.get())
+ self.quitcmd()
+
+ def quitcmd (self):
+ self.exit = 0
+
+ def mainloop(self):
+ while self.exit < 0:
+ self.root.tk.dooneevent(TCL_ALL_EVENTS)
+
+ def destroy (self):
+ self.root.destroy()
maker_list = ['P&W', 'GE', 'Rolls Royce']
@@ -92,11 +117,6 @@ def validate_maker(w):
# Works here though. Why ? Beats me.
return maker_list[i]
-def ok_command(w):
- print "Selected", demo_num_engines.get(), "of", demo_maker.get(), " engines each of thrust", demo_thrust.get()
- w.destroy()
-
if __name__ == '__main__':
root = Tix.Tk()
RunSample(root)
- root.mainloop()
diff --git a/Demo/tix/samples/DirList.py b/Demo/tix/samples/DirList.py
index 3064768..b2aad33 100755
--- a/Demo/tix/samples/DirList.py
+++ b/Demo/tix/samples/DirList.py
@@ -5,7 +5,7 @@
# 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
+# executed from the Tix demo program "tixwidgets.py": 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.
@@ -19,15 +19,9 @@
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()
@@ -38,7 +32,7 @@ class DemoDirList:
self.exit = -1
z = w.winfo_toplevel()
- z.wm_title('Tix.DirList Widget Demo')
+ z.wm_protocol("WM_DELETE_WINDOW", lambda self=self: self.quitcmd())
# Create the tixDirList and the tixLabelEntry widgets on the on the top
# of the dialog box
@@ -98,7 +92,6 @@ class DemoDirList:
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
@@ -108,24 +101,21 @@ class DemoDirList:
ent.entry.insert(0, self.dlist_dir)
def okcmd (self):
- # tixDemo:Status "You have selected the directory" + $self.dlist_dir
-
+ # 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".
+# outside of the main demo program "tixwidgets.py".
#
if __name__== '__main__' :
import tkMessageBox, traceback
diff --git a/Demo/tix/samples/DirTree.py b/Demo/tix/samples/DirTree.py
index 7bf813c..d007a2b 100755
--- a/Demo/tix/samples/DirTree.py
+++ b/Demo/tix/samples/DirTree.py
@@ -5,7 +5,7 @@
# 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
+# executed from the Tix demo program "tixwidgets.py": 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.
@@ -19,16 +19,21 @@
import Tix, os, copy
from Tkconstants import *
-def RunSample (w):
- DemoDirTree(w)
+TCL_ALL_EVENTS = 0
+
+def RunSample (root):
+ dirtree = DemoDirTree(root)
+ dirtree.mainloop()
+ dirtree.destroy()
class DemoDirTree:
def __init__(self, w):
self.root = w
+ self.exit = -1
z = w.winfo_toplevel()
- z.wm_title('Tix.DirTree Widget Demo')
-
+ z.wm_protocol("WM_DELETE_WINDOW", lambda self=self: self.quitcmd())
+
# Create the tixDirTree and the tixLabelEntry widgets on the on the top
# of the dialog box
@@ -90,19 +95,24 @@ class DemoDirTree:
ent.entry.insert(0, self.dlist_dir)
def okcmd (self):
- # tixDemo:Status "You have selected the directory" + $self.dlist_dir
-
+ # tixDemo:Status "You have selected the directory" + self.dlist_dir
self.quitcmd()
def quitcmd (self):
+ # tixDemo:Status "You have selected the directory" + self.dlist_dir
+ self.exit = 0
+
+ def mainloop(self):
+ while self.exit < 0:
+ self.root.tk.dooneevent(TCL_ALL_EVENTS)
+
+ 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".
+# outside of the main demo program "tixwidgets.py".
#
if __name__== '__main__' :
root=Tix.Tk()
RunSample(root)
- root.mainloop()
- root.destroy()
diff --git a/Demo/tix/samples/NoteBook.py b/Demo/tix/samples/NoteBook.py
index 993dcc6..abf3bfd 100755
--- a/Demo/tix/samples/NoteBook.py
+++ b/Demo/tix/samples/NoteBook.py
@@ -1,11 +1,11 @@
-#!/usr/local/bin/python
+# -*-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 "tixwidgets": it must have a
+# executed from the Tix demo program "tixwidgets.py": 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.
diff --git a/Demo/tix/samples/OptMenu.py b/Demo/tix/samples/OptMenu.py
index 2d05938..ecb0c86 100755
--- a/Demo/tix/samples/OptMenu.py
+++ b/Demo/tix/samples/OptMenu.py
@@ -1,11 +1,11 @@
-#!/usr/local/bin/python
+# -*-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 "tixwidgets": it must have a
+# executed from the Tix demo program "tixwidgets.py": 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.
@@ -59,7 +59,7 @@ def RunSample(w):
top.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1)
def ok_command(w):
- print "Convert file from", demo_opt_from.get(), " to", demo_opt_to.get()
+ # tixDemo:Status "Convert file from %s to %s" % ( demo_opt_from.get(), demo_opt_to.get())
w.destroy()
if __name__ == '__main__':
diff --git a/Demo/tix/samples/PopMenu.py b/Demo/tix/samples/PopMenu.py
index c2301cf..602eafd 100755
--- a/Demo/tix/samples/PopMenu.py
+++ b/Demo/tix/samples/PopMenu.py
@@ -1,10 +1,11 @@
-# Tix Demostration Program
-#
-# $Id$
+# -*-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
+# executed from the Tix demo program "tixwidgets.py": 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.
diff --git a/Demo/tix/samples/SHList1.py b/Demo/tix/samples/SHList1.py
index f4294ee..0114dc8 100755
--- a/Demo/tix/samples/SHList1.py
+++ b/Demo/tix/samples/SHList1.py
@@ -5,7 +5,7 @@
# Tix Demostration Program
#
# This sample program is structured in such a way so that it can be
-# executed from the Tix demo program "tixwidgets": it must have a
+# executed from the Tix demo program "tixwidgets.py": 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.
@@ -15,94 +15,118 @@
import Tix
-def RunSample (w) :
-
- # We create the frame and the ScrolledHList widget
- # at the top of the dialog box
- #
- top = Tix.Frame( w, relief=Tix.RAISED, bd=1)
-
- # Put a simple hierachy into the HList (two levels). Use colors and
- # separator widgets (frames) to make the list look fancy
- #
- top.a = Tix.ScrolledHList(top)
- top.a.pack( expand=1, fill=Tix.BOTH, padx=10, pady=10, side=Tix.TOP)
-
-
- # This is our little relational database
- #
- bosses = [
- ('jeff', 'Jeff Waxman'),
- ('john', 'John Lee'),
- ('peter', 'Peter Kenson')
- ]
-
- employees = [
- ('alex', 'john', 'Alex Kellman'),
- ('alan', 'john', 'Alan Adams'),
- ('andy', 'peter', 'Andreas Crawford'),
- ('doug', 'jeff', 'Douglas Bloom'),
- ('jon', 'peter', 'Jon Baraki'),
- ('chris', 'jeff', 'Chris Geoffrey'),
- ('chuck', 'jeff', 'Chuck McLean')
- ]
-
- hlist=top.a.hlist
-
- # Let configure the appearance of the HList subwidget
- #
- hlist.config( separator='.', width=25, drawbranch=0, indent=10)
-
- count=0
- for boss,name in bosses :
- if count :
- f=Tix.Frame(hlist, name='sep%d' % count, height=2, width=150,
- bd=2, relief=Tix.SUNKEN )
-
- hlist.add_child( itemtype=Tix.WINDOW,
- window=f, state=Tix.DISABLED )
-
- hlist.add(boss, itemtype=Tix.TEXT, text=name)
- count = count+1
-
-
- for person,boss,name in employees :
- # '.' is the separator character we chose above
- #
- key= boss + '.' + person
- # ^^^^ ^^^^^^
- # parent entryPath / child's name
-
- hlist.add( key, text=name )
-
- # [Hint] Make sure the keys (e.g. 'boss.person') you choose
- # are unique names. If you cannot be sure of this (because of
- # the structure of your database, e.g.) you can use the
- # "add_child" command instead:
- #
- # hlist.addchild( boss, text=name)
- # ^^^^
- # parent entryPath
-
+TCL_ALL_EVENTS = 0
- # Use a ButtonBox to hold the buttons.
- #
- box= Tix.ButtonBox(top, orientation=Tix.HORIZONTAL )
- box.add( 'ok', text='Ok', underline=0, width=6,
- command = lambda w=w: w.quit() )
-
- box.add( 'cancel', text='Cancel', underline=0, width=6,
- command = lambda w=w: w.quit() )
-
- box.pack( side=Tix.BOTTOM, fill=Tix.X)
- top.pack( side=Tix.TOP, fill=Tix.BOTH, expand=1 )
+def RunSample (root):
+ shlist = DemoSHList(root)
+ shlist.mainloop()
+ shlist.destroy()
+
+class DemoSHList:
+ def __init__(self, w):
+ self.root = w
+ self.exit = -1
+
+ z = w.winfo_toplevel()
+ z.wm_protocol("WM_DELETE_WINDOW", lambda self=self: self.quitcmd())
+
+ # We create the frame and the ScrolledHList widget
+ # at the top of the dialog box
+ #
+ top = Tix.Frame( w, relief=Tix.RAISED, bd=1)
+
+ # Put a simple hierachy into the HList (two levels). Use colors and
+ # separator widgets (frames) to make the list look fancy
+ #
+ top.a = Tix.ScrolledHList(top)
+ top.a.pack( expand=1, fill=Tix.BOTH, padx=10, pady=10, side=Tix.TOP)
+
+ # This is our little relational database
+ #
+ bosses = [
+ ('jeff', 'Jeff Waxman'),
+ ('john', 'John Lee'),
+ ('peter', 'Peter Kenson')
+ ]
+
+ employees = [
+ ('alex', 'john', 'Alex Kellman'),
+ ('alan', 'john', 'Alan Adams'),
+ ('andy', 'peter', 'Andreas Crawford'),
+ ('doug', 'jeff', 'Douglas Bloom'),
+ ('jon', 'peter', 'Jon Baraki'),
+ ('chris', 'jeff', 'Chris Geoffrey'),
+ ('chuck', 'jeff', 'Chuck McLean')
+ ]
+
+ hlist=top.a.hlist
+
+ # Let configure the appearance of the HList subwidget
+ #
+ hlist.config( separator='.', width=25, drawbranch=0, indent=10)
+
+ count=0
+ for boss,name in bosses :
+ if count :
+ f=Tix.Frame(hlist, name='sep%d' % count, height=2, width=150,
+ bd=2, relief=Tix.SUNKEN )
+
+ hlist.add_child( itemtype=Tix.WINDOW,
+ window=f, state=Tix.DISABLED )
+
+ hlist.add(boss, itemtype=Tix.TEXT, text=name)
+ count = count+1
+
+
+ for person,boss,name in employees :
+ # '.' is the separator character we chose above
+ #
+ key= boss + '.' + person
+ # ^^^^ ^^^^^^
+ # parent entryPath / child's name
+
+ hlist.add( key, text=name )
+
+ # [Hint] Make sure the keys (e.g. 'boss.person') you choose
+ # are unique names. If you cannot be sure of this (because of
+ # the structure of your database, e.g.) you can use the
+ # "add_child" command instead:
+ #
+ # hlist.addchild( boss, text=name)
+ # ^^^^
+ # parent entryPath
+
+
+ # Use a ButtonBox to hold the buttons.
+ #
+ box= Tix.ButtonBox(top, orientation=Tix.HORIZONTAL )
+ box.add( 'ok', text='Ok', underline=0, width=6,
+ command = self.okcmd)
+
+ box.add( 'cancel', text='Cancel', underline=0, width=6,
+ command = self.quitcmd)
+
+ box.pack( side=Tix.BOTTOM, fill=Tix.X)
+ top.pack( side=Tix.TOP, fill=Tix.BOTH, expand=1 )
+
+ def okcmd (self):
+ self.quitcmd()
+
+ def quitcmd (self):
+ self.exit = 0
+
+ def mainloop(self):
+ while self.exit < 0:
+ self.root.tk.dooneevent(TCL_ALL_EVENTS)
+
+ 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".
+# outside of the main demo program "tixwidgets.py".
#
if __name__== '__main__' :
root=Tix.Tk()
RunSample(root)
- root.mainloop()
- root.destroy()
+
diff --git a/Demo/tix/samples/SHList2.py b/Demo/tix/samples/SHList2.py
index db24511..e82d1e5 100755
--- a/Demo/tix/samples/SHList2.py
+++ b/Demo/tix/samples/SHList2.py
@@ -5,7 +5,7 @@
# Tix Demostration Program
#
# This sample program is structured in such a way so that it can be
-# executed from the PyTix demo program "tixwidget": it must have a
+# executed from the Tix demo program "tixwidget": 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.
@@ -18,128 +18,152 @@
import Tix
-def RunSample (w) :
+TCL_ALL_EVENTS = 0
- # We create the frame and the ScrolledHList widget
- # at the top of the dialog box
- #
- top = Tix.Frame( w, relief=Tix.RAISED, bd=1)
-
- # Put a simple hierachy into the HList (two levels). Use colors and
- # separator widgets (frames) to make the list look fancy
- #
- top.a = Tix.ScrolledHList(top, options='hlist.columns 3 hlist.header 1' )
+def RunSample (root):
+ shlist = DemoSHList(root)
+ shlist.mainloop()
+ shlist.destroy()
+
+class DemoSHList:
+ def __init__(self, w):
+ self.root = w
+ self.exit = -1
+
+ z = w.winfo_toplevel()
+ z.wm_protocol("WM_DELETE_WINDOW", lambda self=self: self.quitcmd())
+
+ # We create the frame and the ScrolledHList widget
+ # at the top of the dialog box
+ #
+ top = Tix.Frame( w, relief=Tix.RAISED, bd=1)
+
+ # Put a simple hierachy into the HList (two levels). Use colors and
+ # separator widgets (frames) to make the list look fancy
+ #
+ top.a = Tix.ScrolledHList(top, options='hlist.columns 3 hlist.header 1' )
+ top.a.pack( expand=1, fill=Tix.BOTH, padx=10, pady=10, side=Tix.TOP)
+
+ hlist=top.a.hlist
+
+ # Create the title for the HList widget
+ # >> Notice that we have set the hlist.header subwidget option to true
+ # so that the header is displayed
+ #
+
+ boldfont=hlist.tk.call('tix','option','get','bold_font')
+
+ # First some styles for the headers
+ style={}
+ style['header'] = Tix.DisplayStyle(Tix.TEXT, refwindow=hlist,
+ anchor=Tix.CENTER, padx=8, pady=2, font = boldfont )
+
+ hlist.header_create(0, itemtype=Tix.TEXT, text='Name',
+ style=style['header'])
+ hlist.header_create(1, itemtype=Tix.TEXT, text='Position',
+ style=style['header'])
- top.a.pack( expand=1, fill=Tix.BOTH, padx=10, pady=10, side=Tix.TOP)
+ # Notice that we use 3 columns in the hlist widget. This way when the user
+ # expands the windows wide, the right side of the header doesn't look
+ # chopped off. The following line ensures that the 3 column header is
+ # not shown unless the hlist window is wider than its contents.
+ #
+ hlist.column_width(2,0)
- hlist=top.a.hlist
+ # This is our little relational database
+ #
+ boss = ('doe', 'John Doe', 'Director')
- # Create the title for the HList widget
- # >> Notice that we have set the hlist.header subwidget option to true
- # so that the header is displayed
- #
+ managers = [
+ ('jeff', 'Jeff Waxman', 'Manager'),
+ ('john', 'John Lee', 'Manager'),
+ ('peter', 'Peter Kenson', 'Manager')
+ ]
- boldfont=hlist.tk.call('tix','option','get','bold_font')
+ employees = [
+ ('alex', 'john', 'Alex Kellman', 'Clerk'),
+ ('alan', 'john', 'Alan Adams', 'Clerk'),
+ ('andy', 'peter', 'Andreas Crawford', 'Salesman'),
+ ('doug', 'jeff', 'Douglas Bloom', 'Clerk'),
+ ('jon', 'peter', 'Jon Baraki', 'Salesman'),
+ ('chris', 'jeff', 'Chris Geoffrey', 'Clerk'),
+ ('chuck', 'jeff', 'Chuck McLean', 'Cleaner')
+ ]
- # First some styles for the headers
- style={}
- style['header'] = Tix.DisplayStyle(Tix.TEXT, refwindow=top,
- anchor=Tix.CENTER, padx=8, pady=2, font = boldfont )
+ style['mgr_name'] = Tix.DisplayStyle(Tix.TEXT, refwindow=hlist)
- hlist.header_create(0, itemtype=Tix.TEXT, text='Name',
- style=style['header'])
- hlist.header_create(1, itemtype=Tix.TEXT, text='Position',
- style=style['header'])
+ style['mgr_posn'] = Tix.DisplayStyle(Tix.TEXT, padx=8, refwindow=hlist)
- # Notice that we use 3 columns in the hlist widget. This way when the user
- # expands the windows wide, the right side of the header doesn't look
- # chopped off. The following line ensures that the 3 column header is
- # not shown unless the hlist window is wider than its contents.
- #
- hlist.column_width(2,0)
+ style['empl_name'] = Tix.DisplayStyle(Tix.TEXT, refwindow=hlist)
- # This is our little relational database
- #
- boss = ('doe', 'John Doe', 'Director')
+ style['empl_posn'] = Tix.DisplayStyle(Tix.TEXT, padx=8, refwindow=hlist)
- managers = [
- ('jeff', 'Jeff Waxman', 'Manager'),
- ('john', 'John Lee', 'Manager'),
- ('peter', 'Peter Kenson', 'Manager')
- ]
+ # Let configure the appearance of the HList subwidget
+ #
+ hlist.config(separator='.', width=25, drawbranch=0, indent=10)
+ hlist.column_width(0, chars=20)
- employees = [
- ('alex', 'john', 'Alex Kellman', 'Clerk'),
- ('alan', 'john', 'Alan Adams', 'Clerk'),
- ('andy', 'peter', 'Andreas Crawford', 'Salesman'),
- ('doug', 'jeff', 'Douglas Bloom', 'Clerk'),
- ('jon', 'peter', 'Jon Baraki', 'Salesman'),
- ('chris', 'jeff', 'Chris Geoffrey', 'Clerk'),
- ('chuck', 'jeff', 'Chuck McLean', 'Cleaner')
- ]
+ # Create the boss
+ #
+ hlist.add ('.', itemtype=Tix.TEXT, text=boss[1],
+ style=style['mgr_name'])
+ hlist.item_create('.', 1, itemtype=Tix.TEXT, text=boss[2],
+ style=style['mgr_posn'])
- style['mgr_name'] = Tix.DisplayStyle(Tix.TEXT, refwindow=top)
+ # Create the managers
+ #
- style['mgr_posn'] = Tix.DisplayStyle(Tix.TEXT, padx=8, refwindow=top)
+ for key,name,posn in managers :
+ e= '.'+ key
+ hlist.add(e, itemtype=Tix.TEXT, text=name,
+ style=style['mgr_name'])
+ hlist.item_create(e, 1, itemtype=Tix.TEXT, text=posn,
+ style=style['mgr_posn'])
- style['empl_name'] = Tix.DisplayStyle(Tix.TEXT, refwindow=top)
- style['empl_posn'] = Tix.DisplayStyle(Tix.TEXT, padx=8, refwindow=top)
+ for key,mgr,name,posn in employees :
+ # "." is the separator character we chose above
- # Let configure the appearance of the HList subwidget
- #
- hlist.config(separator='.', width=25, drawbranch=0, indent=10)
- hlist.column_width(0, chars=20)
+ entrypath = '.' + mgr + '.' + key
- # Create the boss
- #
- hlist.add ('.', itemtype=Tix.TEXT, text=boss[1],
- style=style['mgr_name'])
- hlist.item_create('.', 1, itemtype=Tix.TEXT, text=boss[2],
- style=style['mgr_posn'])
+ # ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
+ # parent entryPath / child's name
- # Create the managers
- #
+ hlist.add(entrypath, text=name, style=style['empl_name'])
+ hlist.item_create(entrypath, 1, itemtype=Tix.TEXT,
+ text = posn, style = style['empl_posn'] )
- for key,name,posn in managers :
- e= '.'+ key
- hlist.add(e, itemtype=Tix.TEXT, text=name,
- style=style['mgr_name'])
- hlist.item_create(e, 1, itemtype=Tix.TEXT, text=posn,
- style=style['mgr_posn'])
+ # Use a ButtonBox to hold the buttons.
+ #
+ box= Tix.ButtonBox(top, orientation=Tix.HORIZONTAL )
+ box.add( 'ok', text='Ok', underline=0, width=6,
+ command = self.okcmd )
- for key,mgr,name,posn in employees :
- # "." is the separator character we chose above
+ box.add( 'cancel', text='Cancel', underline=0, width=6,
+ command = self.quitcmd )
- entrypath = '.' + mgr + '.' + key
+ box.pack( side=Tix.BOTTOM, fill=Tix.X)
+ top.pack( side=Tix.TOP, fill=Tix.BOTH, expand=1 )
- # ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
- # parent entryPath / child's name
+ def okcmd (self):
+ self.quitcmd()
- hlist.add(entrypath, text=name, style=style['empl_name'])
- hlist.item_create(entrypath, 1, itemtype=Tix.TEXT,
- text = posn, style = style['empl_posn'] )
-
+ def quitcmd (self):
+ self.exit = 0
- # Use a ButtonBox to hold the buttons.
- #
- box= Tix.ButtonBox(top, orientation=Tix.HORIZONTAL )
- box.add( 'ok', text='Ok', underline=0, width=6,
- command = lambda w=w: w.quit() )
+ def mainloop(self):
+ while self.exit < 0:
+ self.root.tk.dooneevent(TCL_ALL_EVENTS)
- box.add( 'cancel', text='Cancel', underline=0, width=6,
- command = lambda w=w: w.quit() )
-
- box.pack( side=Tix.BOTTOM, fill=Tix.X)
- top.pack( side=Tix.TOP, fill=Tix.BOTH, expand=1 )
+ 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".
+# outside of the main demo program "tixwidgets.py".
#
if __name__== '__main__' :
root=Tix.Tk()
RunSample(root)
- root.mainloop()
- root.destroy()
+
diff --git a/Demo/tix/samples/Tree.py b/Demo/tix/samples/Tree.py
index b0520fb..2fdd7c7 100755
--- a/Demo/tix/samples/Tree.py
+++ b/Demo/tix/samples/Tree.py
@@ -1,11 +1,11 @@
-#!/usr/local/bin/python
+# -*-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 "tixwidgets": it must have a
+# executed from the Tix demo program "tixwidgets.py": 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.
diff --git a/Demo/tix/tixwidgets.py b/Demo/tix/tixwidgets.py
index 6e570d7..f0cf4d9 100644
--- a/Demo/tix/tixwidgets.py
+++ b/Demo/tix/tixwidgets.py
@@ -154,7 +154,8 @@ class Demo:
text += line + '\n'
try: tkMessageBox.showerror ('Error', text)
except: pass
- tkinspect_quit (1)
+ self.exit = 1
+ raise SystemExit, 1
def destroy (self):
self.root.destroy()
@@ -420,9 +421,13 @@ def MkFileEnt(w):
ent.pack(side=Tix.TOP, fill=Tix.X, padx=3, pady=3)
def MkFileBox(w):
+ """The FileSelectBox is a Motif-style box with various enhancements.
+ For example, you can adjust the size of the two listboxes
+ and your past selections are recorded.
+ """
msg = Tix.Message(w,
relief=Tix.FLAT, width=240, anchor=Tix.N,
- text='The TixFileSelectBox is a Motif-style box with various enhancements. For example, you can adjust the size of the two listboxes and your past selections are recorded.')
+ text='The Tix FileSelectBox is a Motif-style box with various enhancements. For example, you can adjust the size of the two listboxes and your past selections are recorded.')
box = Tix.FileSelectBox(w)
msg.pack(side=Tix.TOP, expand=1, fill=Tix.BOTH, padx=3, pady=3)
box.pack(side=Tix.TOP, fill=Tix.X, padx=3, pady=3)