Skip to content

Commit

Permalink
Patch #473002: Update Demo/tix tixwidgets.py et al.
Browse files Browse the repository at this point in the history
  • Loading branch information
loewis committed Nov 11, 2001
1 parent c252e63 commit 20efa68
Show file tree
Hide file tree
Showing 7 changed files with 542 additions and 154 deletions.
32 changes: 20 additions & 12 deletions Demo/tix/INSTALL.txt
Original file line number Diff line number Diff line change
@@ -1,25 +1,33 @@
$Id$

Installing PyTix
Installing Tix.py
----------------

0) To use PyTix, you need Tcl/Tk (V8.2+), Tix (V8.1+) and Python (V2.1+).
PyTix has been written and tested on a Intel Pentium running RH Linux 5.2
0) To use Tix.py, you need Tcl/Tk (V8.3.3), Tix (V8.1.1) and Python (V2.1.1).
Tix.py has been written and tested on a Intel Pentium running RH Linux 5.2
and Mandrake Linux 7.0 and Windows with the above mentioned packages.

Older versions, e.g. Tix 4.1 and Tk 8.0, might also work.

There is nothing OS-specific in PyTix itself so it should work on
There is nothing OS-specific in Tix.py itself so it should work on
any machine with Tix and Python installed. You can get Tcl and Tk
from http://dev.scriptics.com and Tix from http://tix.sourceforge.net.

1) Build and install Tcl/Tk 8.2 or 8.3. Build and install Tix 8.1 or better.
1) Build and install Tcl/Tk 8.3. Build and install Tix 8.1.
Ensure that Tix is properly installed by running tixwish and executing
the demo programs. Under Unix, use the --enable-shared configure option
for all three. We recommend tcl8.2.3 for this release of PyTix.
for all three. We recommend tcl8.3.3 for this release of Tix.py.

2) Modify Modules/Setup.dist and setup.py to change the version of the
tix library from tix4.1.8.0 to tix8.1.8.2
2a) If you have a distribution like ActiveState with a tcl subdirectory
of $PYTHONHOME, which contains the directories tcl8.3 and tk8.3,
make a directory tix8.1 as well. Recursively copy the files from
<tix>/library to $PYTHONHOME/lib/tix8.1, and copy the dynamic library
(tix8183.dll or libtix8.1.8.3.so) to the same place as the tcl dynamic
libraries ($PYTHONHOME/Dlls or lib/python-2.1/lib-dynload). In this
case you are all installed, and you can skip to the end.

2b) Modify Modules/Setup.dist and setup.py to change the version of the
tix library from tix4.1.8.0 to tix8.1.8.3
These modified files can be used for Tkinter with or without Tix.

3) The default is to build dynamically, and use the Tcl 'package require'.
Expand All @@ -44,9 +52,9 @@ _tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \
# *** Uncomment and edit for TOGL extension only:
# -DWITH_TOGL togl.c \
# *** Uncomment and edit for Tix extension only:
-DWITH_TIX -ltix8.1.8.2 \
-DWITH_TIX -ltix8.1.8.3 \
# *** Uncomment and edit to reflect your Tcl/Tk versions:
-ltk8.2 -ltcl8.2 \
-ltk8.3 -ltcl8.3 \
# *** Uncomment and edit to reflect where your X11 libraries are:
-L/usr/X11R6/lib \
# *** Or uncomment this for Solaris:
Expand All @@ -69,8 +77,8 @@ If this does not work, you may need to tell python where to find
the Tcl, Tk and Tix library files. This is done by setting the
TCL_LIBRARY, TK_LIBRARY and TIX_LIBRARY environment variables. Try this:

env TCL_LIBRARY=/usr/local/lib/tcl8.2 \
TK_LIBRARY=/usr/local/lib/tk8.2 \
env TCL_LIBRARY=/usr/local/lib/tcl8.3 \
TK_LIBRARY=/usr/local/lib/tk8.3 \
TIX_LIBRARY=/usr/local/lib/tix8.1 \
/usr/local/bin/python Demo/tix/tixwidgets.py

Expand Down
4 changes: 2 additions & 2 deletions Demo/tix/README.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
About PyTix
About Tix.py
-----------

PyTix is based on an idea of Jean-Marc Lugrin ([email protected]) who wrote
Tix.py is based on an idea of Jean-Marc Lugrin ([email protected]) who wrote
pytix (another Python-Tix marriage). Tix widgets are an attractive and
useful extension to Tk. See http://tix.sourceforge.net
for more details about Tix and how to get it.
Expand Down
142 changes: 142 additions & 0 deletions Demo/tix/samples/DirList.py
Original file line number Diff line number Diff line change
@@ -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)

108 changes: 108 additions & 0 deletions Demo/tix/samples/DirTree.py
Original file line number Diff line number Diff line change
@@ -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()

9 changes: 5 additions & 4 deletions Demo/tix/samples/SHList1.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/local/bin/python
# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
#
# $Id$
#
Expand Down Expand Up @@ -57,7 +57,7 @@ def RunSample (w) :
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 )
Expand Down Expand Up @@ -89,10 +89,10 @@ def RunSample (w) :
#
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 )
Expand All @@ -105,3 +105,4 @@ def RunSample (w) :
root=Tix.Tk()
RunSample(root)
root.mainloop()
root.destroy()
Loading

0 comments on commit 20efa68

Please sign in to comment.