Tix8.4.3/0000775000122200012240000000000010767576212012410 5ustar jeffhjeffh00000000000000Tix8.4.3/man/0000775000122200012240000000000010767576212013163 5ustar jeffhjeffh00000000000000Tix8.4.3/man/tixBalloon.n0000664000122200012240000001610407232700347015446 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixBalloon.n,v 1.1 2001/01/22 00:37:59 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixBalloon n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixBalloon \- Create and manipulate tixBalloon widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixBalloon \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBtixBalloon\fR class is derived from the \fBTixShell\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The Balloon widget supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-initwait initWait InitWait In milliseconds. Specifies how long the balloon should wait before popping up in a widget. '\"----------END '\" '\"----------BEGIN .OP \-state state State Specifies the which help message to display when the mouse pointer enters a widget associated with this balloon. Valid options are \fBboth\fR: display both the balloon message and the status bar message, \fBballoon\fR: display only the balloon message, \fBstatus\fR: display only the status bar message and \fBnone\fR: display no messages. '\"----------END '\" '\" '\"----------BEGIN .OP \-statusbar statusBar statusBar Specifies the widget to use as the status bar of this balloon. This widget must have a "-text" option. Usually a label widget is used. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBlabel\fR Class: \fBLabel\fR .fi .IP The label widget that shows the little arrow bitmap in the pop-up balloon window. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBmessage\fR Class: \fBLabel\fR .fi .IP The message widget that shows the descriptive message in the the pop-up balloon window. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixBalloon\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a Balloon widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the Balloon widget such as its cursor and relief. The Balloon widget can be used to show popped-up messages that describe the functions of the widgets in an application. A Balloon widget can be bound to a number of widgets. When the user moves the cursor inside a widget to which a Balloon widget has been bound, a small pop-up window with a descriptive message will be shown on the screen. '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixBalloon\fR command creates a new Tcl command whose name is the same as the path name of the Balloon widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the Balloon widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for Balloon widgets: .TP \fIpathName \fBbind\fR widget ?\fIoption value ... \fR? '\" Binds the Balloon widget to the \fIwidget\fR. The messages to be shown can be passed as extra arguments to this command in \fIoption value\fR pairs. Possible options: \fB\-balloonmsg\fR specifies the string to show on the pop-up balloon window; \fB\-statusmsg\fR specifies the string to show on the status bar; \fB\-msg\fR specifies a string to show on both the balloon window and the stats bar window. When used together, the \fB\-msg\fR option has a lower precedence than the \fB\-balloonmsg\fR and \fB\-statusmsg\fR options. The \fBbind\fR command can also be used to change the messages after the initial bindings were set. Example: .PP .nf button .b tixBalloon .bal # Add balloon binding .bal bind .b -msg "This is a button" ... # Change the balloon binding .bal bind .b -msg "This is a useful button" .fi '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixBalloon\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixBalloon\fR command. '\" '\" '\" .TP \fIpathName \fBunbind\fI widget\fR '\" Cancels the Balloon widget's binding with \fIwidget\fR. '\" '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP After a widget has be bound to a Balloon widget, when the user moves the cursor into this widget, the Balloon widget is activated: if the \fB\-balloonmsg\fR option of this widget is set, the balloon window pops up; if the \fB\-statusmsg\fR option of this widget is set, the message will be displayed in the status bar widget. .PP When the user moves the cursor out of the widget, the Balloon widget is de-activated: the balloon window is withdrawn and the status-bar message removed. '\" '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/html/0000775000122200012240000000000010767576212014127 5ustar jeffhjeffh00000000000000Tix8.4.3/man/html/README.txt0000664000122200012240000000072607232700165015617 0ustar jeffhjeffh00000000000000RCS $Id: README.txt,v 1.1 2001/01/22 00:36:05 ioilam Exp $ This directory contains HTML version of the Tix manual pages. All the HTML files are auto-generated, so do not edit them directly. If you need to make a change, edit the Nroff sources in the parent directory. If there are no other files in this directory except this README.txt file, you probably have a checked-out copy of the Tix CVS tree. See the file ../GNUmakefile about how to generate the HTML files. Tix8.4.3/man/html/.cvsignore0000664000122200012240000000007707232764373016133 0ustar jeffhjeffh00000000000000contents.htm TclCmd TkCmd TixCmd Keywords UserCmd TclLib TkLib Tix8.4.3/man/tixGetBoolean.n0000664000122200012240000000242607232764445016112 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixGetBoolean.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixGetBoolean n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" .SH NAME tixGetBoolean - Get the boolean value of a string. '\" '\" '\" .SH SYNOPSIS \fBtixGetBoolean\fI ?-nocomplain? string\fR .BE .SH DESCRIPTION .PP '\" '\" The command \fBtixGetBoolean\fR returns "0" if the string is a valid TCL string for the boolean value FALSE. It returns "1" if the string is a valid TCL string for the boolean value TRUE. .PP When the string is not a valid TCL boolean value and the \fB-nocomplain\fR option is specified, \fBtixGetBoolean\fR will return "0". Otherwise it will generate an error. '\" '\" '\" '\" .PP .SH KEYWORDS Tix(n) Tix8.4.3/man/tixFileEntry.n0000664000122200012240000002216407424215757015775 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixFileEntry.n,v 1.3 2002/01/25 08:48:47 idiscovery Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixFileEntry n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixFileEntry \- Create and manipulate tixFileEntry widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixFileEntry \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixFileEntry\fR class is derived from the \fBTixLabelWidget\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The FileEntry widget supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-activatecmd activateCmd ActivateCmd Specifies the command to be called when the user activates the \fBbutton\fR subwidget. This command is called before the file dialog is popped up and can be used to customize the file dialog (which may be shared by several FileEnt widget). '\"----------END '\" '\"----------BEGIN .OP \-command command Command Specifies the command to be called when the \fB\-value\fR option of the FileEntry is changed. This usually happens when the user inputs a filename into the entry subwidget and hits the key. The command will be called with one arguments -- the new value of the FileEntry widget. '\"----------END '\" '\"----------BEGIN .OP \-dialogtype dialogType DialogType Specifies which type of file selection dialog should be popped up when the user invokes the \fBbutton\fR subwidget. Currently the following values are valid: \fBtixFileSelectDialog\fR, \fBtixExFileSelectDialog\fR, \fBtk_getOpenFile\fR, \fBtk_getSaveFile\fR or \fBtk_chooseDirectory\fR. '\"----------END '\"----------BEGIN .OP \-disablecallback disableCallback DisableCallback A boolean value indicating whether callbacks should be disabled. When set to true, the TCL command specified by the \fB\-command\fR option is not executed when the \fB\-value\fR of the FileEntry widget changes. '\"----------END '\" '\"----------BEGIN .OP \-disableforeground disableForeground DisableForeground The foreground color to use for of the entry subwidget when the FileEntry widget is disabled. '\"----------END '\" '\" '\"----------BEGIN .OP \-filebitmap fileBitmap FileBitmap Specifies the bitmap to display in side the \fBbutton\fR subwidget. '\"----------END '\" '\"----------BEGIN .OP \-label label Label Specifies the string to display as the label of this FileEntry widget. '\"----------END '\" '\"----------BEGIN .OP \-labelside labelSide LabelSide Specifies where the label should be displayed relative to the entry subwidget. Valid options are: \fBtop\fR, \fBleft\fR, \fBright\fR, \fBbottom\fR, \fBnone\fR or \fBacrosstop\fR. '\"----------END '\" '\"----------BEGIN .OP \-selectmode selectMode SelectMode Specifies how the FileEntry widget should react to \fC\fR events. When set to "immediate", any user keyboard inputs will immediately change the \fB\-value\fR option. When set to "normal", the user keyboard inputs will be copied to the \fB\-value\fR option only if the\fC \fR key is pressed or the keyboard focus is changed. The use of the immediate mode is discouraged. For effective use of the FileEntry widget, one should use the normal mode together with the \fBupdate\fR widget command (see below). '\"----------END '\" '\"----------BEGIN .OP \-state state State Specifies the whether the FileEntry widget is normal or disabled. Only the values "normal" and "disabled" are recognized. '\"----------END '\"' '\"----------BEGIN .OP \-validatecmd validateCmd ValidateCmd Specifies a TCL command to be called when the -value of the FileEntry widget is about to change. This command is called with one parameter -- the new \fB\-value\fR entered by the user. This command is to validate this new value by returning a value it deems valid. '\"----------END '\" '\"----------BEGIN .OP \-value value Value Specifies the value of the FileEntry. '\"----------END '\" '\"----------BEGIN .OP \-variable variable Variable Specifies the global variable in which the value of the FileEntry should be stored. The value of the FileEntry will be automatically updated when this variable is changed. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBbutton\fR Class: \fBButton\fR .fi .IP The button subwidget next to the entry subwidget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBentry\fR Class: \fBEntry\fR .fi .IP The entry subwidget in which the user can type in a filename. '\"----------END .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixFileEntry\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a FileEntry widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the FileEntry such as its cursor and relief. .PP The FileEntry widget can be used to input a filename. 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 of the type specified by the \fB\-dialogtype\fR option. '\" '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixFileEntry\fR command creates a new Tcl command whose name is the same as the path name of the FileEntry's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the FileEntry widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for FileEntry widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixFileEntry\fR command. '\" '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixFileEntry\fR command. '\" '\" .TP \fIpathName \fBinvoke\fR '\" Forces the FileEntry widget to act as if the user has pressed the key inside the entry subwidget. '\" .TP \fIpathName \fBfiledialog\fR \fI?args?\fR '\" When no additional arguments are given, this command returns the pathname of the file dialog box associated with this FileEnt widget. When additional arguments are given, the widget command of the file dialog will be called with these arguments. '\" '\" .TP \fIpathName \fBsubwidget \fIname ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" .TP \fIpathName \fBupdate\fR '\" If the user has modified the entry using keyboard inputs, the update command will \fBupdate\fR the \fB\-value\fR of this FileEntry widget. When the FileEntry widget's \fB\-selectmode\fR option is set to "normal", one should call the \fBupdate\fR command on this widget before examining its \fB\-value\fR option. This command has no effect in if the \fB\-selectmode\fR option is set to "immediate". '\" '\" '\"---------------------------------------------------------------------- '\".SH BINDINGS '\".PP '\" '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/Makefile0000664000122200012240000000317407404554633014625 0ustar jeffhjeffh00000000000000# GNUmakefile -- # # This Makefile builds the HTML version # of the Tix man pages. You normally do not need to use this # Makefile, as all the HTML man pages are already included in # the Tix source distribution. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: Makefile,v 1.2 2001/12/09 03:25:15 idiscovery Exp $ TCLSH = tclsh MAN2HTML = ../tools/tix-man2html.tcl UPDATEIDX = ../tools/man2html-fixindex.tcl NROFF_SRCS = \ TixIntro.n compound.n pixmap.n tix.n tixBalloon.n tixButtonBox.n \ tixCheckList.n tixComboBox.n tixControl.n tixDestroy.n tixDirList.n \ tixDirSelectDialog.n tixDirTree.n tixDisplayStyle.n \ tixExFileSelectBox.n tixExFileSelectDialog.n tixFileEntry.n \ tixFileSelectBox.n tixFileSelectDialog.n tixForm.n tixGetBoolean.n \ tixGetInt.n tixGrid.n tixHList.n tixInputOnly.n \ tixLabelEntry.n tixLabelFrame.n tixListNoteBook.n \ tixMeter.n tixMwm.n tixNBFrame.n tixNoteBook.n tixOptionMenu.n \ tixPanedWindow.n tixPopupMenu.n tixScrolledHList.n tixScrolledListBox.n \ tixScrolledText.n tixScrolledWindow.n tixSelect.n tixStdButtonBox.n \ tixTList.n tixTree.n tixUtils.n tixwish.1 all: html/contents.htm html/contents.htm: ${NROFF_SRCS} ${MAN2HTML} ${UPDATEIDX} GNUmakefile ${TCLSH} ${MAN2HTML} --htmldir=html --srcdir=../.. ${TCLSH} ${UPDATEIDX} html distclean: -cd html; rm -rf *.htm *~ Keywords UserCmd -cd html; rm -rf TclCmd TclLib -cd html; rm -rf TkCmd TkLib -cd html; rm -rf TixCmd TixLib test: env TEST_ONLY=true $(MAKE) all full: env WITH_TCL_TK=true $(MAKE) all Tix8.4.3/man/tixUtils.n0000664000122200012240000000436507232764445015177 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixUtils.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH Utils n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" .SH NAME tixUtils \- Utility commands in Tix. '\" '\" '\" .SH SYNOPSIS .nf \fBtixDescendants \fIpathName\fR \fBtixDisableAll \fIpathName\fR \fBtixEnableAll \fIpathName\fR \fBtixPushGrab\fR ?\fI-global\fR? \fIwindow\fR \fBtixPopGrab\fR .fi .BE .PP .SH DESCRIPTION .PP .TP \fBtixDescendants\fR \fIpathName\fR '\" Returns a list of all the descendant widgets of \fIpathName\fR plus \fIpathName\fR itself. '\" .TP \fBtixDisableAll\fR \fIpathName\fR '\" Disables \fIpathName\fR and all its descendants. '\" '\" .TP \fBtixEnableAll\fR \fIpathName\fR '\" Enables \fIpathName\fR and all its descendants. '\" '\" .TP \fBtixPushGrab\fR ?\fI-global\fR? \fIwindow\fR '\" The \fBtixPushGrab\fR and \fBtixPopGrab\fR commands allows you to perform "cascade-grabbing". \fBtixPushGrab\fR calls the \fBgrab(n)\fR command on \fIwindow\fR and saves \fIwindow\fR on a grabbing stack. '\" .TP \fBtixPopGrab\fR '\" \fBtixPopGrab\fR pops the top-most element from the grabbing stack and release its grab. If the grabbing stack is not empty, then \fBtixPopGrab\fR will execute grab(n) on the current top-most element in the grabbing stack. '\" .SH NOTES .PP Some Tix widgets (for example, tixComboBox and tixPanedWindow) grabs the screen on certain occasions using \fBtixPushGrab\fR and \fBtixPopGrab\fR. Therefore, if you need to grab the screen when these widgets are present, you should also call \fBtixPushGrab\fR and \fBtixPopGrab\fR in place of the Tk \fBgrab\fR and \fBgrab release\fR commands. Otherwise, the behavior of these widgets may be undefined. '\" .SH KEYWORDS Tix(n), grab(n) Tix8.4.3/man/tixwish.10000664000122200012240000001534107232677717014755 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixwish.1,v 1.2 2001/01/22 00:33:19 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros .TH tixwish 1 8.0 Tix "Tix Applications" .BS '\" .SH NAME tixwish \- Windowing shell for interpreting Tix commands. '\" .SH SYNOPSIS \fBtixwish\fR ?\fIfileName arg arg ...\fR? '\" .SH OPTIONS '\" .IP "\fB\-display \fIdisplay\fR" 20 Display (and screen) on which to display window. '\" .IP "\fB\-geometry \fIgeometry\fR" 20 Initial geometry to use for window. If this option is specified, its value is stored in the \fBgeometry\fR global variable of the application's Tcl interpreter. '\" .IP "\fB\-name \fIname\fR" 20 '\" Use \fIname\fR as the title to be displayed in the window, and as the name of the interpreter for \fBsend\fR commands. '\" .IP "\fB\-sync\fR" 20 '\" Execute all X server commands synchronously, so that errors are reported immediately. This will result in much slower execution, but it is useful for debugging. .BE .SH DESCRIPTION .PP \fBTixwish\fR is a simple program consisting of the Tcl command language, the Tk toolkit, and a main program that reads commands from standard input or from a file. It creates a main window and then processes Tcl commands. '\" If \fBtixwish\fR is invoked with no arguments, or with a first argument that starts with ``\-'', then it reads Tcl commands interactively from standard input. '\" It will continue processing commands until all windows have been deleted or until end-of-file is reached on standard input. If there exists a file \fB.tixwishrc\fR in the home directory of the user, \fBtixwish\fR evaluates the file as a Tcl script just before reading the first command from standard input. '\" .PP '\" If \fBtixwish\fR is invoked with an initial \fIfileName\fR argument, then \fIfileName\fR is treated as the name of a script file. \fBTixwish\fR will evaluate the script in \fIfileName\fR (which presumably creates a user interface), then it will respond to events until all windows have been deleted. Commands will not be read from standard input. There is no automatic evaluation of \fB.tixwishrc\fR in this case, but the script file can always \fBsource\fR it if desired. .SH "OPTIONS" .PP \fBTixwish\fR automatically processes all of the command-line options described in the \fBOPTIONS\fR summary above. Any other command-line arguments besides these are passed through to the application using the \fBargc\fR and \fBargv\fR variables described later. .SH "APPLICATION NAME AND CLASS" .PP .VS The name of the application, which is used for purposes such as \fBsend\fR commands, is taken from the \fB\-name\fR option, if it is specified; otherwise it is taken from \fIfileName\fR, if it is specified, or from the command name by which \fBtixwish\fR was invoked. In the last two cases, if the name contains a ``/'' character, then only the characters after the last slash are used as the application name. .PP The class of the application, which is used for purposes such as specifying options with a \fBRESOURCE_MANAGER\fR property or .Xdefaults file, is the same as its name except that the first letter is capitalized. .VE .SH "VARIABLES" .PP \fBTixwish\fR sets the following Tcl variables: .TP 15 \fBargc\fR Contains a count of the number of \fIarg\fR arguments (0 if none), not including the options described above. .TP 15 \fBargv\fR Contains a Tcl list whose elements are the \fIarg\fR arguments (not including the options described above), in order, or an empty string if there are no \fIarg\fR arguments. .TP 15 \fBargv0\fR Contains \fIfileName\fR if it was specified. Otherwise, contains the name by which \fBtixwish\fR was invoked. .TP 15 \fBgeometry\fR If the \fB\-geometry\fR option is specified, \fBtixwish\fR copies its value into this variable. If the variable still exists after \fIfileName\fR has been evaluated, \fBtixwish\fR uses the value of the variable in a \fBwm geometry\fR command to set the main window's geometry. .TP 15 \fBtcl_interactive\fR '\" Contains 1 if \fBtixwish\fR is reading commands interactively (\fBfileName\fR was not specified and standard input is a terminal-like device), 0 otherwise. '\" .SH "X RESOURCES" '\" \fBTixwish\fR makes use of several X Resources to determine the \fBToolkit Options\fR for the Tix library. These X resources must be set using \fBRESOURCE_MANAGER\fR properties or .Xdefaults files \fBbefore\fR \fBtixwish\fR starts running. These resources must be associated with the main window of the \fBtixwish\fR application. These options include: '\" '\"----------BEGIN .LP .nf Name: \fBtixScheme\fR Class: \fBTixScheme\fR .fi .IP Specifies the color scheme to use for the Tix application. Currently only these schemes are supported: Blue, Gray, SGIGray, TixGray, and TK. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBtixFontSet\fR Class: \fBTixFontSet\fR .fi .IP Specifies the FontSet to use for the Tix application. A FontSet designates the fonts to use for different types of widgets. Currently only these FontSets are supported: 12Point, 14Point and TK. '\"----------END .PP For example, you may put these two lines in your .Xdefaults file .nf *tixwish.tixScheme: Gray *tixwish.tixFontSet: 12Point .fi .SH "SCRIPT FILES" .PP If you create a Tcl script in a file whose first line is .RS .CS \fB#!/usr/local/bin/tixwish\fR .CE .RE then you can invoke the script file directly from your shell if you mark it as executable. This assumes that \fBtixwish\fR has been installed in the default location in /usr/local/bin; if it's installed somewhere else then you'll have to modify the above line to match. Many UNIX systems do not allow the \fB#!\fR line to exceed about 30 characters in length, so be sure that the \fBtixwish\fR executable can be accessed with a short file name. .SH PROMPTS .PP When \fBtixwish\fR is invoked interactively it normally prompts for each command with ``\fB% \fR''. You can change the prompt by setting the variables \fBtcl_prompt1\fR and \fBtcl_prompt2\fR. If variable \fBtcl_prompt1\fR exists then it must consist of a Tcl script to output a prompt; instead of outputting a prompt \fBtixwish\fR will evaluate the script in \fBtcl_prompt1\fR. The variable \fBtcl_prompt2\fR is used in a similar way when a newline is typed but the current command isn't yet complete; if \fBtcl_prompt2\fR isn't set then no prompt is output for incomplete commands. .SH KEYWORDS shell, wish, Tk, toolkit Tix8.4.3/man/TixIntro.n0000664000122200012240000002014007232764164015115 0ustar jeffhjeffh00000000000000'\" '\" $Id: TixIntro.n,v 1.4 2001/01/22 07:59:48 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros .TH TixIntro n 8.0 Tix "Tix Built-In Commands" .BS '\" '\" .SH NAME TixIntro \- Introduction to the Tix library .BE '\" '\" .SH DESCRIPTION '\" Tix, which stands for Tk Interface Extension, is an extension library for Tcl/Tk. Tix adds many new widgets, image types and other commands that allows you to create compelling Tcl/Tk-based GUI applications. .PP One advantage of Tix over other Tk widget libraries is many of the Tix standard widgets are implemented in native code. This enhances performance and provides native look-and-feel for your applications. .PP This version of Tix works with Tcl/Tk version 8.0 or above. If Tix has been installed properly on your system, you can load the package into any Tk script by invoking the command .CS package require Tix .CE After this command has successfully returned, you can start using the functionalities of the Tix library. See the \fBEXAMPLES\fR section below for example scripts that use Tix. .PP If the "package require Tix" command fails, you probably need to install a new copy of Tix on your system. You can download the latest version of Tix from the web site http://tix.sourceforge.net/. .PP '\" .SH STANDARD WIDGETS Tix includes the following standard widgets which, like their counterparts in Tk, are implemented in native code to achieve high performance and native look-and-feel. .TP \fBtixGrid\fR The \fBtixGrid\fR widget displays items in a spread-sheet format. .TP \fBtixHList\fR Hierarchical listbox widget. This widget display entries in a tree-like format. .TP \fBtixInputOnly\fR A transparent window that can be used to cover another widget so as to disable mouse input. .TP \fBtixNBFrame\fR The \fBtixNBFrame\fR widget is used internally by the \fBtixNoteBook\fR widget to display choices among a set of overlapping pages. .TP \fBtixTList\fR Tabular listbox widget. This widget is similar to the built-in Tk \fBlistbox\fR widget but provides more flexibility in displaying the list entries. .SH MEGA WIDGETS Tix provides many new types of \fImega widgets\fR: these are widgets that are composed of built-in Tk widgets and the Tix standard widgets mentioned above. .TP \fBtixBalloon\fR The \fBtixBalloon\fR widget provides context-sensitive on-screen help. .TP \fBtixButtonBox\fR A convenience class for creating a box of \fBbutton\fR widgets. .TP \fBtixCheckList\fR A subclass of \fBtixTree\fR that presents single- or multiple choices to the user in a tree-like format. .TP \fBtixComboBox\fR A combination of the \fBlistbox\fR and \fBentry\fR widgets that allows the user to input an item by typing or by selecting from a list of items. .TP \fBtixControl\fR The \fBtixControl\fR widget allows the user to adjust a value using arrow buttons. .TP \fBtixDirList\fR A directory selection widget that displays the file system as a cascading list. .TP \fBtixDirSelectDialog\fR A dialog for selecting a directory. \fIThis widget is deprecated.\fR Use \fBtk_chooseDirectory\fR instead. .TP \fBtixDirTree\fR A directory selection widget that displays the file system in a tree format. .TP \fBtixExFileSelectBox\fR A widget for selecting a file. \fIThis widget is deprecated.\fR Use \fBtk_getOpenFile\fR instead. .TP \fBtixExFileSelectDialog\fR A dialog for selecting a file. \fIThis widget is deprecated.\fR Use \fBtk_getOpenFile\fR instead. .TP \fBtixFileEntry\fR A special entry widget that allows the user to choose a file by typing in its name or by selecting from a file dialog. .TP \fBtixFileSelectBox\fR A widget for selecting a file. \fIThis widget is deprecated.\fR Use \fBtk_getOpenFile\fR instead. .TP \fBtixFileSelectDialog\fR A dialog for selecting a file. \fIThis widget is deprecated.\fR Use \fBtk_getOpenFile\fR instead. .TP \fBtixLabelEntry\fR A convenience class for creating an \fBentry\fR with an associated \fBlabel\fR widget. .TP \fBtixLabelFrame\fR A labelled \fBframe\fR widget for grouping together a set of related widgets. .TP \fBtixListNoteBook\fR The \fBtixListNoteBook\fR widget allows the user to choose from a set of over-lapping pages by selecting from a list box. .TP \fBtixMeter\fR The \fBtixMeter\fR widget displays a bar graph to indicate progress. .TP \fBtixNoteBook\fR The \fBtixNoteBook\fR widget allows the user to choose from a set of over-lapping pages with a tabbed notebook metaphore. .TP \fBtixOptionMenu\fR The \fBtixOptionMenu\fR widget allows the user to choose a value from a pop-up menu. .TP \fBtixPanedWindow\fR The \fBtixPanedWindow\fR widgets allows the user to adjust the visible size of several \fBframe\fR widgets with handle bars. .TP \fBtixPopupMenu\fR The \fBtixPopupMenu\fR widget can be used to implement context-sensitive pop-up menu. .TP \fBtixScrolledHList\fR A \fBtixHList\fR widget with smart scrollbars. Like other Tix scrolled widgets, the scroll bars can be displayed on an as-needed basis. .TP \fBtixScrolledListBox\fR A Tk \fBlistbox\fR widget with smart scrollbars. .TP \fBtixScrolledText\fR A Tk \fBtext\fR widget with smart scrollbars. .TP \fBtixScrolledWindow\fR A Tk \fBframe\fR widget with smart scrollbars. .TP \fBtixSelect\fR The \fBtixSelect\fR widget uses a set of buttons to present single- or multiple selection options to the user. .TP \fBtixStdButtonBox\fR A subclass of \fBtixButtonBox\fR that provides four standard buttons (OK, Apply, Cancel Help) for Motif(TM)-like dialog boxes. .TP \fBtixTree\fR A subclass of \fBtixScrolledHList\fR that supports expanding and collapsing of entries in a hierarchical list. .SH DISPLAY ITEMS Three Tix standard widgets \fBtixGrid\fR, \fBtixHList\fR and \fBtixTList\fR support the \fIDisplay Items\fR mechanism. Display items are created by the widget command of these standard widgets. You can customize the items using \fIstyles\fR objects. .TP \fBtixDisplayStyle\fR Create style objects to customize display items. .SH IMAGE TYPES Tix provides two additional image types to the Tk \fBimage\fR framework. .TP \fBcompound\fR The \fBcompound\fR image type allows you to combine images, widgets, and text strings into a single Tk \fBimage\fR object. .TP \fBpixmap\fR The \fBpixmap\fR image type supports the XPM format. .SH OTHER COMMANDS The following Tcl command are also included in the Tix library to perform various functions. .TP \fBtixDestroy\fR Destroy Tix objects instances of classes defined by \fBtixClass\fR construct. .TP \fBtixForm\fR A geometry manager based on attachment rules. \fIThis geometry manager is deprecated\fR. Use the Tk \fBgrid\fR geometry manager instead. .TP \fBtixMwm\fR A command to communicate with the Mwm, the Motif(TM) Window Manager. Works on Unix only. .TP \fBtix\fR The \fBtix\fR command controls the Tix application context. .TP \fBtixGetBoolean\fR The \fBtixGetBoolean\fR command converts a string to a boolean value. .TP \fBtixGetInt\fR The \fBtixGetInt\fR command converts a string to a integer value. .TP \fBtixUtils\fR The \fBtixUtils\fR manual page describes some utility Tix commands. .SH EXECUTABLE PROGRAM .TP \fBtixwish\fR The \fBtixwish\fR program can be used to execute Tix-based applications. \fBtixwish\fR \fIis deprecated\fR. You shuld use the standard wish program from Tk and access Tix via the "package require Tix" command. .SH EXAMPLES The following is an example script that uses a \fBtixTree\fR widget. .PP .CS set tree [tixTree .t] pack $tree -expand yes -fill both for {set i 0} {$i < 2} {incr i} { $tree subwidget hlist add $i -itemtype imagetext \\ -text "Folder $i" -image [tix getimage folder] for {set j 0} {$j < 5} {incr j} { $tree subwidget hlist add $i.$j -itemtype imagetext \\ -text "File $i.$j" -image [tix getimage textfile] } } $tree autosetmode .CE .SH KEYWORDS '\" Tix, mega widgets Tix8.4.3/man/tix.n0000644000122200012240000002102610162662407014134 0ustar jeffhjeffh00000000000000'\" '\" $Id: tix.n,v 1.5 2004/12/24 00:38:31 hobbs Exp $ '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros .TH tix n 8.4 Tix "Tix Built-In Commands" .BS '\" .SH NAME tix \- Manipulate internal states of the Tix library '\" .SH SYNOPSIS \fBtix\fR \fIoption \fR?\fIarg arg ...\fR? '\" '\"---------------------------------------------------------------------- .SH "CONFIGURATION OPTIONS" '\" This manual page descripts the \fBtix\fR command, which manipulates the internal states of the Tix library. If you're looking for a general introduction to the Tix library, please refer to the \fBTixIntro\fR manual page. .PP The Tix application context supports the following configuration options. Usually, these options are set using the X resource database, i.e., in the user's \fB\.Xdefault\fR file. For example, to choose a different color scheme for the Tix widgets, these two lines can be added to the user's \fB\.Xdefault\fR file: .RS .CS *TixScheme: Gray *TixFontSet: 14Point .CE .RE '\" '\"----------BEGIN .OP -binding binding Binding This is an obsolete option. '\"----------END '\" '\"----------BEGIN .OP \-debug debug Debug Specifies whether the Tix widgets should run in debug mode. '\"----------END '\" '\" '\"----------BEGIN .OP \-fontset tixFontSet TixFontSet Specifies the fontset to use for the Tix widgets. Valid options are \fBWmDefault\fR, \fBTK\fR, \fBTkWin\fR, \fB12Point\fR and \fB14Point\fR. \fBTK\fR specifies that the standard TK fonts should be used. The default value is \fBWmDefault\fR. '\"----------END '\" '\"----------BEGIN .OP \-scheme tixScheme TixScheme Specifies the color scheme to use for the Tix widgets. Valid options are \fBWmDefault\fR, \fBTK\fR, \fBTkWin\fR, \fBGray\fR, \fBBlue\fR, \fBBisque\fR, \fBSGIGray\fR and \fBTixGray\fR. If you want the standard TK color scheme, you can use the value \fBTK\fR. The default value is \fBWmDefault\fR. '\"----------END '\" '\" '\"----------BEGIN .OP \-schemepriority tixSchemePriority TixSchemePriority Specifies the priority level of the TK options set by th Tix schemes. Please refer to the TK \fBoption(n)\fR manual page for a discussion of the priority level of Tix options. The default value is 79, which makes the Tix schemes at a higher priority than the settings in the .Xdefaults file. If you want to allow the Tix schemes to be overridden by the settings in the .Xdefaults file, you can set the following line in you .Xdefaults file: .CS *TixSchemePriority: 21 .CE '\"----------END '\" .BE .SH DESCRIPTION .PP The \fBtix\fR command provides access to miscellaneous elements of Tix's internal state and the Tix \fBapplication context\fR. Most of the information manipulated by this command pertains 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 \fIoption\fR argument. The legal forms are: '\" .TP \fBtix addbitmapdir\fR \fIdirectory\fR '\" Tix maintains a list of directory under which which the \fBtix getimage\fR and \fBtix getbitmap\fR commands will search for image files. The standard bitmap directory is \fB$TIX_LIBRARY/bitmaps\fR. The \fBaddbitmapdir\fR command adds \fIdirectory\fR into this list. By using this command, the image files of an applications can also be located using the \fBtix getimage\fR ot \fBtix getbitmap\fR command. '\" .TP \fBtix cget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may be any of the options described in the \fBCONFIGURATION OPTIONS\fR section. '\" .TP \fBtix configure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the Tix application context. If no \fIoption\fR is specified, returns a list describing all of the available options (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR 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. \fIOption\fR may be any of the options described in the \fBCONFIGURATION OPTIONS\fR section. '\" '\" .TP \fBtix filedialog \fR?\fIclass\fR? '\" 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 \fBtix filedialog\fR. An optional \fIclass\fR parameter can be passed to specified what type of file selection dialog widget is desired. Possible options are \fBtixFileSelectDialog\fR or \fBtixExFileSelectDialog.\fR '\" .TP \fBtix getbitmap \fIname\fR '\" Locates a bitmap file of the name \fIname\fR.xpm or \fIname\fR in one of the bitmap directories (see the \fBaddbitmapdir\fR command above). By using \fBtix getbitmap\fR, 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 \fB@\fR. The returned value can be used to configure the \fB\-bitmap\fR option of the TK and Tix widgets. '\" .TP \fBtix getimage \fIname\fR '\" Locates an image file of the name \fIname\fR.xpm, \fIname\fR.xbm or \fIname\fR.ppm in one of the bitmap directories (see the \fBaddbitmapdir\fR 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 \fBtix getimage\fR, you can advoid hard coding the pathnames of the image files in your application. When successful, this command returns the name of the newly created image, which can be used to configure the \fB\-image\fR option of the TK and Tix widgets. '\" .TP \fBtix initstyle\fR '\" Init the style defaults for Tix. Prior to Tix 8.4 this was done by simply package requiring Tix, but this call is now required to explicitly use Tix style. '\" .TP \fBtix option\fR ?\fIargs ...\fR? '\" Manipulates the options manitained by the Tix scheme mechanism. Available options are: .CS 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 .CE The arguments to the \fBtix option\fR command can take the following form(s): .RS .TP \fBtix option get\fR \fIoption\fR '\" Returns the current value of \fIoption\fR. .RE '\" '\" .TP \fBtix resetoptions\fR \fInewScheme newFontSet\fR ?\fInewScmPrio\fR? '\" '\" Resets the scheme and fontset of the Tix application to \fInewScheme\fR and \fInewFontSet\fR, respectively. This affects only those widgets created \fBafter\fR this call. Therefore, it is best to call the \fBresetoptions\fR command \fBbefore\fR the creation of any widgets in a Tix application. The optional parameter \fInewScmPrio\fR can be given to reset the priority level of the TK options set by the Tix schemes. '\" '\" .SH BUGS '\" .IP [1] In this release of Tix, the following configuration options have been disabled. Assigning values to them will cause no effect: .CS -binding -debug -fontset -scheme -schemepriority .CE In addition, the following options to the \fBtix\fR command have been disabled. Invoking the \fBtix\fR command with these options will cause no effect: .CS resetoptions .CE .IP [2] 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 \fBtix config\fR command. Instead, the \fBtix resetoptions\fR command must be used. '\" .PP The tk_setPalette command does not work very well under Tix. To use it, one must follow these steps: .RS .CS tix resetoptions TK TK tk_setPalette lightblue .CE .RE '\" .SH KEYWORDS file selection dialog Tix8.4.3/man/tixGetInt.n0000664000122200012240000000245407232764445015266 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixGetInt.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixGetInt n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" .SH NAME tixGetInt - Get the integer value of a string. '\" '\" '\" .SH SYNOPSIS \fBtixGetInt\fI ?-nocomplain? ?-trunc? string\fR .BE .SH DESCRIPTION .PP '\" '\" The command \fBtixGetInt\fR converts any number into an integer number. By default, it will round the number to the nearest integer. When the \fB-trunc\fR option is specified, the number is truncated instead of rounded. .PP When the string is not a valid TCL numerical value and the \fB-nocomplain\fR option is specified, \fBtixGetInt\fR will return "0". Otherwise it will generate an error. '\" '\" '\" '\" .PP .SH KEYWORDS Tix(n) Tix8.4.3/man/tixScrolledText.n0000664000122200012240000001252407232764445016507 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixScrolledText.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixScrolledText n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixScrolledText \- Create and manipulate Tix ScrolledText widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixScrolledText \fIpathName \fR?\fIoptions\fR? '\" '\" '\" '\"---------------------------------------------------------------------- .SO \-anchor \-background \-cursor \-relief \-borderWidth .SE '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP -height height Height Specifies the desired height for the window, in pixels. '\"----------END '\" '\"----------BEGIN .OP \-scrollbar scrollbar Scrollbar Specifies the display policy of the scrollbars. The following values are recognized: .RS '\" .TP \fBauto \fR?\fI+x\fR? ?\fI\-x\fR? ?\fI+y\fR? ?\fI\-y\fR? '\" When \fB\-scrollbar\fR is set to "\fBauto\fR", the scrollbars are shown only when needed. Additional modifiers can be used to force a scrollbar to be shown or hidden. For example, "\fBauto \-y\fR" means the horizontal scrollbar should be shown when needed but the vertical scrollbar should always be hidden; "\fBauto +x\fR" means the vertical scrollbar should be shown when needed but the horizontal scrollbar should always be shown, and so on. '\" .TP \fBboth\fR Both scrollbars are shown '\" .TP \fBnone\fR The scrollbars are never shown. '\" .TP \fBx\fR Only the horizontal scrollbar is shown; '\" .TP \fBy\fR Only the vertical scrollbar is shown. '\" .RE '\" '\"----------END '\" '\"----------BEGIN .OP -width width Width Specifies the desired width for the window, in pixels. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\" '\"----------BEGIN .LP .nf Name: \fBhsb\fR Class: \fBScrollbar\fR .fi .IP The horizontal scrollbar subwidget. '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBtext\fR Class: \fBText\fR .fi .IP The Text subwidget inside the ScrolledText widget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBvsb\fR Class: \fBScrollbar\fR .fi .IP The vertical scrollbar subwidget. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixScrolledText\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a ScrolledText widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the ScrolledText widget such as its cursor and relief. '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixScrolledText\fR command creates a new Tcl command whose name is the same as the path name of the ScrolledText widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the ScrolledText widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for ScrolledText widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixScrolledText\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixScrolledText\fR command. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no additional arguments are given, returns the pathname of the subwidget of the specified name. When no additional arguments are given, the widget command of the specified subwidget will be called with these parameters. '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixDisplayStyle.n0000664000122200012240000003366207232764445016527 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixDisplayStyle.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixDisplayStyle n 8.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixDisplayStyle \- Create style object for Tix display items. '\" .SH SYNOPSIS \fBtixDisplayStyle \fIitemType\fR ?\fI\-stylename name\fR? ?\fI\-refwindow pathName\fR? ?\fIoptions value ...\fR? '\" .BE '\" .SH DESCRIPTION '\" The Tix \fBDisplay Items\fR mechanism is devised to solve a general problem: many Tix widgets (both existing and planned ones) display many items of many types simutaneously. '\" .PP '\" For example, a hierarchical listbox widget (HList) can display items of images, plain text and subwindows in the form of a hierarchy. Another widget, the tabular listbox, (TList, currently planned and will be released in Tix 4.1) also display items of the same types, although it arranges the items in a tabular form. Yet another widget, the spreadsheet widget, also displays similar types items, but in yet another format. '\" .PP '\" In these examples, the display items in different widgets are only different in how they are arranged by the \fBhost widget\fR. In Tix, display items are clearly separated from the host widgets. The advantage is two-fold: first, the creation and configuration of display items become uniform across different host widgets. Second, new display item types can be added without the need to modify the existing host widgets. '\" .PP '\" In a way, Tix display items are similar to the items inside Tk the canvas widget. However, unlike the Tix display items, the canvas items are not independent of the canvas widget; this makes it impossible to use the canvas items inside other types of TK widgets. '\" .PP '\" The appearance of a display item is controlled by a set of \fIattributes\fR. It is observed that each the attributes usually fall into one of two categroies: "\fIindividual\fR" or "\fIcollective\fR". For example, the text items inside a HList widget may all display a different text string; however, in most cases, the text items share the same color, font and spacing. Instead of keeping a duplicated version of the same attributes inside each display item, it will be advantageous to put the collective attributes in a special object called a \fBdisplay style\fR. First, there is the space concern: a host widget may have many thousands of items; keeping dupilcated attributes will be very wasteful. Second, when it becomes necessary to change a collective attribute, such as changing all the text items' foreground color to red, it will be more efficient to change only the display style object than to modify all the text items one by one. '\" .PP '\" The attributes of the a display item are thus stored in two places: it has a set of \fBitem options\fR to store its individual attributes. Each display item is also associated with a \fIdisplay style\fR, which specifies the collective attributes of all items associated with itself. '\" .PP '\" The division between the individual and collective attributes are fixed and cannot be changed. Thus, when it becomes necessary for some items to differ in their collective attributes, two or more \fBdisplay styles\fR can be used. For example, suppose you want to display two columns of text items inside an HList widget, one column in red and the other in blue. You can create a TextStyle object called "red", which defines a red foreground, and another called "blue", which defines a blue foreground. You can then associate all text items of the first column to "red" and the second column to "blue". '\" .SH DISPLAY ITEM TYPES AND OPTIONS '\" Currently there are four types of display items: \fBtext\fR, \fBimage\fR, \fBimagetext\fR and \fBwindow\fR. (TODO: need to document the "image" item) '\" '\"---------------------------------------------------------------------- '\" ImageText '\"---------------------------------------------------------------------- .SH IMAGETEXT ITEMS '\" Display items of the type \fBimagetext\fR are used to display an image together with a text string. Imagetext items support the following options: '\" .PP \fBITEM OPTIONS\fR .PP .RS '\"----------BEGIN .OP \-bitmap bitmap Bitmap Specifies the bitmap to display in the item. '\"----------END '\" '\"----------BEGIN .OP \-image image Image Specifies the image to display in the item. When both the \fB\-bitmap\fR and \fB\-image\fR options are specified, only the image will be displayed. '\"----------END '\" '\"----------BEGIN .OP \-style imageTextStyle ImageTextStyle Specifies the display style to use for this item. Must be the name of a \fBimagetext\fR display style that has already be created by the \fBtixDisplayStyle(n)\fR command. '\"----------END '\" '\"----------BEGIN .OP \-showimage showImage ShowImage A Boolean value that specifies whether the image/bitmap should be displayed. '\"----------END '\" '\"----------BEGIN .OP \-showtext showText ShowText A Boolean value that specifies whether the text string should be displayed. '\"----------END '\" '\"----------BEGIN .OP \-text text Text Specifies the text string to display in the item. '\"----------END '\" '\"----------BEGIN .OP \-underline underline Underline Specifies the integer index of a character to underline in the text string in the item. 0 corresponds to the first character of the text displayed in the widget, 1 to the next character, and so on. '\"----------END .RE '\" .PP \fBSTYLE OPTIONS\fR '\" .PP The style information of \fBimagetext\fR items are stored in the \fBimagetext\fR display style. The following options are supported: '\" .RS '\" .PP \fBSTANDARD OPTIONS\fR '\" .PP .ta 6c .nf activeBackground activeForeground anchor background disabledBackground disabledForeground foreground font justify padX padY selectBackground selectForeground wrapLength .fi .ta 4c .PP See the \fBoptions(n)\fR manual entry for details on the standard options. .PP '\" .PP \fBSTYLE-SPECIFIC OPTIONS\fR .PP '\"----------BEGIN .LP .nf Name: \fBgap\fR Class: \fBGap\fR Switch: \fB\-gap\fR '\" .fi .IP Specifies the distance between the bitmap/image and the text string, in number of pixels. '\"----------END '\" .RE '\" '\"********************************************************************** '\" '\" text '\" '\"********************************************************************** .SH TEXT ITEMS '\" Display items of the type \fBtext\fR are used to display a text string in a widget. Text items support the following options: '\" .PP \fBITEM OPTIONS\fR .PP .RS '\"----------BEGIN .OP \-style textStyle TextStyle Specifies the display style to use for this text item. Must be the name of a \fBtext\fR display style that has already be created by the \fBtixDisplayStyle(n)\fR command. '\"----------END '\" '\"----------BEGIN .OP \-text text Text Specifies the text string to display in the item. '\"----------END '\" '\"----------BEGIN .OP \-underline underline Underline Specifies the integer index of a character to underline in the item. 0 corresponds to the first character of the text displayed in the widget, 1 to the next character, and so on. '\"----------END .RE '\" \fBSTYLE OPTIONS\fR .PP .RS .PP \fBSTANDARD OPTIONS\fR '\" .PP .ta 6c .nf activeBackground activeForeground anchor background disabledBackground disabledForeground foreground font justify padX padY selectBackground selectForeground wrapLength .fi .ta 4c .PP See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" .PP .RE '\"********************************************************************** '\" '\" Window '\" '\"********************************************************************** .SH WINDOW ITEMS '\" Display items of the type \fBwindow\fR are used to display a sub-window in a widget. \fBWindow\fR items support the following options: '\" .PP \fBITEM OPTIONS\fR .PP .RS '\"----------BEGIN .OP \-style windowStyle WindowStyle Specifies the display style to use for this window item. Must be the name of a \fBwindow\fR display style that has already be created by the \fBtixDisplayStyle(n)\fR command. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBwindow\fR Class: \fBWindow\fR Switch: \fB\-window\fR Alias: \fB\-widget\fR .fi .IP Specifies the sub-window to display in the item. '\"----------END '\" .RE '\" \fBSTYLE OPTIONS\fR .PP .RS \fBSTANDARD OPTIONS\fR '\" .PP .ta 6c .nf anchor padX padY .PP .fi .ta 4c See the \fBoptions(n)\fR manual entry for details on the standard options. '\" .PP .RE '\" '\"********************************************************************** '\" .SH CREATING DISPLAY ITEMS '\" '\" Display items do not exist on their and thus they cannot be created independently of the widgets they reside in. As a rule, display items are created by special widget commands of their "host" widgets. For example, the HList widgets has a command \fBitem\fR which can be used to create new display items. The following code creates a new imagetext item at the third column of the entry foo inside an HList widget: '\" .PP .nf tixHList .h -columns 3 .h add foo .h item create foo 2 \-itemtype imagetext \-text Hello \-image image1 .fi .PP '\" The \fBitem create\fR command of the HList widget accepts a variable number of arguments. The special argument \fB\-itemtype\fR specifies which type of display item to create. Options that are valid for this type of display items can then be specified by one or more \fIoption\-value\fR pairs. '\" .PP '\" After the display item is created, they can then be configured or destroyed using the commands provided by the host widget. For example, the HList widget has the command \fBitem configure\fR, \fBitem cget\fR and \fBitem delete\fR for accessing the display items. '\" '\"********************************************************************** '\" .SH CREATING AND MANIPULATING DISPLAY STYLES '\" '\" Display styles are created by the command \fBtixDisplayStyle\fR: '\" '\" .PP \fIitemType\fR must be one of the existing display items types such as \fBtext\fR, \fBimagetext\fR, \fBwindow\fR or any new types added by the user. Additional arguments can be given in one or more \fIoption\-value\fR pairs. \fIoption\fR can be any of the valid option for this display style or any of the following: .PP .RS '\" .TP \fB\-stylename \fIname\fR '\" Specifies a name for this style. If unspecified, then a default name will be chosen for this style. '\" .TP \fB\-refwindow \fIpathName\fR '\" Specifies a window to use for determine the default values of the display type. If unspecified, the main window will be used. Default values for the display types can be set via the options database. The following example sets the \fB\-disablebackground\fR and \fB\-disabledforeground\fR options of a \fBtext\fR display style via the option database: .CS option add *table.list*disabledForeground blue option add *table.list*disabledBackground darkgray tixDisplayStyle text -refwindow .table.list -fg red .CE '\" .PP By using the option database to set the options of the display styles, we can advoid hard-coding the option values and give the user more flexibility in customization. See option(n) for a detailed description of the option database. .RE '\" .SH STYLE COMMAND .PP The \fBtixDisplayStyle\fR command creates a new Tcl command whose name is the same as the name of the newly created display style. This command may be used to invoke various operations on the display style. It has the following general form: '\" '\" .RS .CS '\" \fIstyleName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIstyleName\fR is the name of the command. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible: '\" .TP \fIstyleName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the valid options of this display style. '\" .TP \fIstyleName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the display style. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIstyleName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR 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. \fIOption\fR may have any of the valid options of this display style. '\" .TP \fIstyleName \fBdelete\fR '\" Destroy this display style object. '\" .SH EXAMPLE '\" The following example creates two columns of data in a HList widget. The first column is in red and the second column in blue. The colors of the columns are controlled by two different \fBtext\fR styles. Also, the anchor and font of the second column is chosen so that the income data is aligned properly. '\" .PP .CS set courier {courier 14} set h [tixHList .h -columns 2]; pack $h set red [tixDisplayStyle text -fg #800000] set blue [tixDisplayStyle text -fg #000080 \\ -anchor e -font $courier] foreach n {{Joe $10,000} {Peter $20,000} {Raj $90,000}} { set entry [$h addchild {}] $h item create $entry 0 -itemtype text \\ -text [lindex $n 0] -style $red $h item create $entry 1 -itemtype text \\ -text [lindex $n 1] -style $blue } .CE .SH KEYWORDS display item, display style, imagetextTix8.4.3/man/tixScrolledListBox.n0000664000122200012240000001601007232764445017141 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixScrolledListBox.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixScrolledListBox n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixScrolledListBox \- Create and manipulate Tix ScrolledListBox widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixScrolledListBox \fIpathName \fR?\fIoptions\fR? '\" '\" '\" '\"---------------------------------------------------------------------- .SO \-anchor \-background \-cursor \-relief \-borderWidth .SE '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\"----------BEGIN .OP \-anchor anchor Anchor Specifies the alignment of the items inside the listbox subwidget. Only the values \fBw\fR and \fBe\fR are allowed. When set to \fBw\fR, the listbox is automatically aligned to the beginning of the items. When set to \fBe\fR, the listbox is automatically aligned to the end of the items. Automatically alignment only happens when the ScrolledListBox widget changes its size. '\"----------END '\" '\"----------BEGIN .OP \-browsecmd browsecmd BrowseCmd Specifies the command to be called when the user browses the elements inside the \fBlistbox\fR subwidget (see the BINDINGS section below). '\"----------END '\" '\"----------BEGIN .OP \-command command Command Specifies the command to be called when the user invokes the \fBlistbox\fR subwidget (see the BINDINGS section below). '\"----------END '\" '\"----------BEGIN .OP \-height height Height Specifies the desired height for the window, in pixels. '\"----------END '\" '\"----------BEGIN .OP \-scrollbar scrollbar Scrollbar Specifies the display policy of the scrollbars. The following values are recognized: .RS '\" .TP \fBauto \fR?\fI+x\fR? ?\fI\-x\fR? ?\fI+y\fR? ?\fI\-y\fR? '\" When \fB\-scrollbar\fR is set to "\fBauto\fR", the scrollbars are shown only when needed. Additional modifiers can be used to force a scrollbar to be shown or hidden. For example, "\fBauto \-y\fR" means the horizontal scrollbar should be shown when needed but the vertical scrollbar should always be hidden; "\fBauto +x\fR" means the vertical scrollbar should be shown when needed but the horizontal scrollbar should always be shown, and so on. '\" .TP \fBboth\fR Both scrollbars are shown '\" .TP \fBnone\fR The scrollbars are never shown. '\" .TP \fBx\fR Only the horizontal scrollbar is shown; '\" .TP \fBy\fR Only the vertical scrollbar is shown. '\" .RE '\" '\"----------END '\" '\"----------BEGIN .OP -width width Width Specifies the desired width for the window, in pixels. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\" '\"----------BEGIN .LP .nf Name: \fBhsb\fR Class: \fBScrollbar\fR .fi .IP The horizontal scrollbar subwidget. '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBlistbox\fR Class: \fBListbox\fR .fi .IP The listbox subwidget inside the ScrolledListBox widget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBvsb\fR Class: \fBScrollbar\fR .fi .IP The vertical scrollbar subwidget. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixScrolledListBox\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a ScrolledListBox widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the ScrolledListBox widget such as its cursor and relief. '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixScrolledListBox\fR command creates a new Tcl command whose name is the same as the path name of the ScrolledListBox widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the ScrolledListBox widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for ScrolledListBox widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixScrolledListBox\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixScrolledListBox\fR command. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no additional arguments are given, returns the pathname of the subwidget of the specified name. When no additional arguments are given, the widget command of the specified subwidget will be called with these parameters. '\" '\"---------------------------------------------------------------------- '\" .SH BINDINGS .PP .IP [1] '\" If the \fB\-browsecmd\fR option is set, the command which it referes to is called whenever a or a event occurrs inside the \fBlistbox\fR subwidget. '\" .PP .IP [2] '\" The command specified by the \fB\-command\fR option is invoked when a event occurrs inside the \fBlistbox\fR subwidget. '\" '\"---------------------------------------------------------------------- '\" .SH BUGS '\" The capitalization of some of the commands names in Tix 3.x has been changed in Tix 4.0. All commands that ended with \fBbox\fR have been changed to a capitalized \fBBox\fR. Hence, the command \fBtixScrolledListbox\fR in Tix 3.x has been changed to \fBtixScrolledListBox\fR in Tix 4.0 '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixLabelEntry.n0000664000122200012240000001300607232764445016130 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixLabelEntry.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixLabelEntry n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixLabelEntry \- Create and manipulate tixLabelEntry widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixLabelEntry \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixLabelEntry\fR class is derived from the \fBTixLabelWidget\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The LabelEntry widget supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-disableforeground disableForeground DisableForeground The foreground color to use for of the entry subwidget when the LabelEntry widget is disabled. '\"----------END '\" '\" '\"----------BEGIN .OP \-label label Label Specifies the string to display as the label of this LabelEntry widget. '\"----------END '\" '\"----------BEGIN .OP \-labelside labelSide LabelSide Specifies where the label should be displayed relative to the entry subwidget. Valid options are: \fBtop\fR, \fBleft\fR, \fBright\fR, \fBbottom\fR, \fBnone\fR or \fBacrosstop\fR. '\"----------END '\" '\"----------BEGIN .OP \-state state State Specifies the whether the LabelEntry widget is normal or disabled. Only the values "normal" and "disabled" are recognized. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBlabel\fR Class: \fBLabel\fR .fi .IP The label subwidget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBentry\fR Class: \fBEntry\fR .fi .IP The entry subwidget. '\"----------END .BE '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixLabelEntry\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a LabelEntry widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the LabelEntry such as its cursor and relief. .PP The LabelEntry widget packages an entry widget and a label into one mega widget. It can be used be used to simplify the creation of "entry-form" type of interface. In this kind of interface, one must create many entry widgets with label widgets next to them and describe the use of each of the entry widgets. '\" '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixLabelEntry\fR command creates a new Tcl command whose name is the same as the path name of the LabelEntry's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the LabelEntry widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for LabelEntry widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixLabelEntry\fR command. '\" '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixLabelEntry\fR command. '\" '\" '\" .TP \fIpathName \fBsubwidget \fIname ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\" '\"---------------------------------------------------------------------- '\".SH BINDINGS '\".PP '\" '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixStdButtonBox.n0000664000122200012240000001337707232764122016471 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixStdButtonBox.n,v 1.1 2001/01/22 07:59:14 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixStdButtonBox n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixStdButtonBox \- Create and manipulate Tix StdButtonBox widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixStdButtonBox \fIpathName \fR?\fIoptions\fR? '\" '\" '\" '\"---------------------------------------------------------------------- .SO \-anchor \-background \-cursor \-relief \-borderWidth .SE '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\" '\"----------BEGIN .OP -orientation orientation Orientation \fBStatic Option\fR. Specifies the orientation of the button subwidgets. Only the values "horizontal" and "vertical" are recognized. '\"----------END '\" '\"----------BEGIN .OP \-padx padx Pad Specifies the horizontal padding between two neighboring button subwidgets in the StdButtonBox widget. '\"----------END '\"----------BEGIN .OP \-padx padx Pad Specifies the vertical padding between two neighboring button subwidgets in the StdButtonBox widget. '\"----------END '\" '\"----------BEGIN .OP \-state state State Specifies the state of all the buttons inside the StdButtonBox widget. \fINote\fR: Setting this option using the \fIconfig\fR widget command will enable or disable all the buttons subwidgets. Original states of the individual buttons are \fInot\fR saved. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS .PP '\" '\"----------BEGIN .LP .nf Name: \fBok\fR Class: \fBButton\fR .fi .IP The first button subwidget. By default it displays the text string "Ok" '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBapply\fR Class: \fBButton\fR .fi .IP The second button subwidget. By default it displays the text string "Apply" '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBcancel\fR Class: \fBButton\fR .fi .IP The third button subwidget. By default it displays the text string "Cancel" '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBhelp\fR Class: \fBButton\fR .fi .IP The fourth button subwidget. By default it displays the text string "Help" '\"----------END '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixStdButtonBox\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a StdButtonBox widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the StdButtonBox such as its cursor and relief. '\" .PP The StdButtonBox widget is a group of Standard buttons for Motif-like dialog boxes. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET COMMAND" .PP '\" The \fBtixStdButtonBox\fR command creates a new Tcl command whose name is the same as the path name of the StdButtonBox's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the StdButtonBox widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for StdButtonBox widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixStdButtonBox\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixStdButtonBox\fR command. '\" '\" .TP \fIpathName \fBinvoke \fIbuttonName\fR '\" Invoke the button subwidget with the name \fIbuttonName\fR. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no additional arguments are given, returns the pathname of the subwidget of the specified name. .PP When no additional arguments are given, the widget command of the specified subwidget will be called with these parameters. '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP TixStdButtonBox widgets have no default bindings. The button subwidgets retain their default Tk bindings. '\" '\" '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n), Container Widgets Tix8.4.3/man/tixNoteBook.n0000664000122200012240000002407207232764445015614 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixNoteBook.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixNoteBook n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixNoteBook - Create and manipulate tixNoteBook widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixNoteBook \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The NoteBook widget supports all the standard options of a frame widget. See the options(n) manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-dynamicgeometry dynamicGeometry DynamicGeometry If set to false, the size of the Notebook will match the size of the largest page. If set to true, the size of the Notebook will match the size of the current page (therefore, the size may change when the user selects different pages). The default value is false. A setting of true is discouraged. '\"----------END '\" '\"----------BEGIN .OP \-ipadx ipadX Pad The amount of internal horizontal paddings around the sides of the page subwidgets. '\"----------END '\" '\"----------BEGIN .OP \-ipady ipadY Pad The amount of internal vertical paddings around the sides of the page subwidgets. '\"----------END '\" '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBnbframe\fR Class: \fBtixNoteBookFrame\fR .fi .IP The "note book frame" widget that displays ths tabs of the notebook. Most of the display options of the page tabs are controlled by this subwidget. For example, if you need to choose a different font to display the tab names of the pages, the color of the inactive tabs or the color behind the tabs, you can configure the options of the \fBnbframe\fR subwidget. See the manual page of \fBtixNoteBookFrame(n)\fR for more details. '\" '\"----------END '\" .LP In addition, all the page subwidgets created as a result of the \fBadd\fR command can be accessed by the \fBsubwidget\fR command. They are identified by the \fBpageName\fR parameter to the \fBadd\fR command. '\" '\" .BE '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixNoteBook\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a NoteBook widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the NoteBook widget such as its cursor and relief. The NoteBook widget can be used to display many windows in a limited space using a "notebook" metaphore. 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 visual "tabs" at the top of the NoteBook widget. '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixNoteBook\fR command creates a new Tcl command whose name is the same as the path name of the NoteBook widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the NoteBook widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for NoteBook widgets: '\" '\" .TP \fIpathName \fBadd\fI pageName \fR?\fIoption value ...\fR? '\" Adds a new notebook page subwidget into the NoteBook widget. Additional parameters may be supplied to configure this page subwidget. Possible options are: '\" .RS .TP \fB\-anchor\fR '\" Specifies how the information in a tab (e.g. text or a bitmap) is to be displayed in the widget. Must be one of the values \fBn\fR, \fBne\fR, \fBe\fR, \fBse\fR, \fBs\fR, \fBsw\fR, \fBw\fR, \fBnw\fR, or \fBcenter\fR. For example, nw means display the information such that its top-left corner is at the top-left corner of the widget. '\" .TP \fB\-bitmap\fR '\" Specifies a bitmap to display on the tab of this page. The bitmap is displayed only if none of the \fB-label\fR or \fB-image\fR options are specified. '\" .TP \fB\-createcmd\fR '\" Specifies a TCL command to be called the first time a page is shown on the screen. This option can be used to delay the creation of the contents of a page until necessary. Therefore, it can be used to speed up interface creation process especially when there are a large number of pages in a NoteBook widget. '\" .TP \fB\-image\fR '\" Specifies an image to display on the tab of this page. The image is displayed only if the \fB-label\fR options is not specified. '\" .TP \fB\-justify\fR '\" When there are multiple lines of text displayed in a tab, this option determines how the lines line up with each other. Must be one of left, center, or right. \fBLeft\fR means that the lines' left edges all line up, \fBcenter\fR means that the lines' centers are aligned, and \fBright\fR means that the lines' right edges line up. '\" .TP \fB\-label\fR '\" Specifies a text label string to display on the tab of this page subwidget. '\" .TP \fB\-raisecmd\fR '\" Specifies a TCL command to be called whenever this page is raised by the user. '\" .TP \fB\-state\fR '\" Specifies whether this page can be raised by the user. Must be either \fBnormal\fR or \fBdisabled\fR. '\" .TP \fB\-underline\fR '\" Specifies the integer index of a character to underline in the tab. This option is used by the default bindings to implement keyboard traversal for menu buttons and menu entries. 0 corresponds to the first character of the text displayed in the widget, 1 to the next character, and so on. '\" .TP \fB\-wraplength\fR '\" This option specifies the maximum line length of the label string on this tab. If the line length of the label string exceeds this length, it is wrapped onto the next line, so that no line is longer than the specified length. The value may be specified in any of the standard forms for screen distances. If this value is less than or equal to 0 then no wrapping is done: lines will break only at newline characters in the text. '\" '\" .RE '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR.\fIOption\fR may have any of the values accepted by the \fBtixNoteBook\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixNoteBook\fR command. '\" '\" .TP \fIpathName \fBdelete\fI pageName\fR? '\" Deletes the page identified by \fIpageName\fR. '\" .TP \fIpathName \fBpagecget\fR \fIpageName option\fR '\" Returns the current value of the configuration option given by \fIoption\fR in the page given by \fIpageName\fR. \fIOption\fR may have any of the values accepted by the \fBadd\fR widget command. '\" '\" .TP \fIpathName \fBpageconfigure\fI pageName \fR?\fIoption\fR? ?\fIvalue ...\fR? '\" '\" When no option is given, prints out the values of all options of this page. If \fIoption\fR is specified with no \fIvalue\fR, then the command returns the current value of that option. If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given page's option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may be any of options accepted by the \fBadd\fR widget command. '\" .TP \fIpathName \fBpages\fR '\" Returns a list of the names of all the pages. '\" .TP \fIpathName \fBraise \fIpageName\fR '\" Raise the page identified by \fIpageName\fR. '\" .TP \fIpathName \fBraised\fR '\" Returns the name of the currently raised page. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP .IP [1] When the user pressed the left mouse button over a notebook tab, the notebook page associated with that tab will be raised to the top of the stack of pages. '\" .PP .IP [2] The pages can also be selected using the keyboard. The user can type the \fB\fR key to cycle among the set of pages. When the focus appears on the desired page, the user can type \fB\fR or \fB\fR to select that page. Or, if the user wants to cancel the selection, he/she can type the \fB\fR key. '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixControl.n0000664000122200012240000002647307232764445015523 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixControl.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixControl n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixControl \- Create and manipulate tixControl widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixControl \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixControl\fR class is derived from the \fBTixLabelWidget\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The Control widget supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-allowempty allowEmpty AllowEmpty Specifies whether the Control widget should allow the empty string as a valid input. '\"----------END '\" '\"----------BEGIN .OP \-autorepeat autorepeat AutoRepeat Specifies whether the Control widget should have autorepeat behavior. If set to be "true", the value of the Control widget will be automatically incremented or decremented when the user holds down the mouse button over the arrow buttons. Only values "true" and "false" will be recognized. '\"----------END '\" '\" '\"----------BEGIN .OP \-command command Command Specifies the command to be called when the \fB\-value\fR option of the Control widget is changed. The command will be called with one arguments -- the new value of the Control widget. '\"----------END '\" '\" '\"----------BEGIN .OP \-decrcmd decrCmd DecrCmd Specifies a TCL command to be called when the the user presses the down-arrow button subwidget. This command is called with one parameter -- the current \fB\-value\fR of this Control widget. This command is to decrement this value by one step, according to its own definition of "decrement", and return the decremented value, which will be stored in the \fB\-value\fR of this Control widget. '\"----------END '\" '\"----------BEGIN .OP \-disablecallback disableCallback DisableCallback A boolean value indicating whether callbacks should be disabled. When set to true, the TCL command specified by the \fB\-command\fR option is not executed when the \fB\-value\fR of the Control widget changes. '\"----------END '\" '\"----------BEGIN .OP \-disableforeground disableForeground DisableForeground The foreground color to use for of the entry subwidget when the Control widget is disabled. '\"----------END '\" '\" '\"----------BEGIN .OP \-incrcmd incrCmd IncrCmd Specifies a TCL command to be called when the the user presses the up-arrow button subwidget. This command is called with one parameter -- the current \fB\-value\fR of this Control widget. This command is to increment this value by one step, according to its own definition of "increment", and return the incremented value, which will be stored in the \fB\-value\fR of this Control widget. '\"----------END '\" '\"----------BEGIN .OP \-initwait initwait Initwait Specifies how long the Control widget should wait initially before it starts to automatically increment or decrement its value in the autorepeat mode. In milliseconds. '\"----------END '\" '\"----------BEGIN .OP \-integer integer Integer A Boolean value specifying whether only integer numbers are accepted. '\"----------END '\" '\"----------BEGIN .OP \-label label Label Specifies the string to display as the label of this Control widget. '\"----------END '\" '\"----------BEGIN .OP \-labelside labelSide LabelSide Specifies where the label should be displayed relative to the entry subwidget. Valid options are: \fBtop\fR, \fBleft\fR, \fBright\fR, \fBbottom\fR, \fBnone\fR or \fBacrosstop\fR. '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBmax\fR Class: \fBMax\fR Switch: \fB\-max\fR Alias: \fB\-ulimit\fR .fi .IP Specifies the upper limit of the value of the Control widget. When set to empty string, the Control widget has no upper limit. '\"----------END '\"' '\"----------BEGIN .LP .nf Name: \fBmin\fR Class: \fBMin\fR Switch: \fB\-min\fR Alias: \fB\-llimit\fR .fi .IP Specifies the lower limit of the value of the Control widget.When set to empty string, the Control widget has no lower limit. '\"----------END '\" '\"----------BEGIN .OP \-repeatrate repeatRate RepeatRate Specifies how often the value of the Control widget should be incremented or decremented when it is in the autorepeat mode. In milliseconds. '\"----------END '\" '\"----------BEGIN .OP \-selectmode selectMode SelectMode Specifies how the Control widget should react to \fC\fR events. When set to "immediate", any user keyboard inputs will immediately change the \fB\-value\fR option. When set to "normal", the user keyboard inputs will be copied to the \fB\-value\fR option only if the\fC \fR key is pressed or the keyboard focus is changed. The use of the immediate mode is discouraged. For effective use of the Control widget, one should use the normal mode together with the \fBupdate\fR widget command (see below). '\"----------END '\" '\"----------BEGIN .OP \-state state State Specifies the whether the Control widget is normal or disabled. Only the values "normal" and "disabled" are recognized. '\"----------END '\" '\"----------BEGIN .OP \-step step Step Specifies by how much the value of the Control widget should be incremented or decrmented when the user press the arrow buttons. '\"----------END '\" '\" '\"----------BEGIN .OP \-validatecmd validateCmd ValidateCmd Specifies a TCL command to be called when the -value of the Control widget is about to change. This command is called with one parameter -- the new \fB\-value\fR entered by the user. This command is to validate this new value by returning a value it deems valid. '\"----------END '\" '\"----------BEGIN .OP \-value value Value Specifies the value of the Control widget. '\"----------END '\" '\"----------BEGIN .OP \-variable variable Variable Specifies the global variable in which the value of the Control widget should be stored. The value of the Control widget will be automatically updated when this variable is changed. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBdecr\fR Class: \fBButton\fR .fi .IP The down arrow button. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBentry\fR Class: \fBEntry\fR .fi .IP The entry that shows the value of this Control widget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBincr\fR Class: \fBButton\fR .fi .IP The up arrow button. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBlabel\fR Class: \fBLabel\fR .fi .IP The label subwidget. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixControl\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a Control widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the Control widget such as its cursor and relief. The Control widget is also known as the \fBSpinBox\fR widget. It is generally used to control a value. 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. '\" '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixControl\fR command creates a new Tcl command whose name is the same as the path name of the Control widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the Control widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for Control widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixControl\fR command. '\" '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixControl\fR command. '\" .TP \fIpathName \fBdecr\fR '\" Decrements the value of the Control widget by the step specified by the \fI\-step\fR option. '\" '\" .TP \fIpathName \fBincr\fR '\" Increments the value of the Control widget by the step specified by the \fI\-step\fR option. '\" '\" .TP \fIpathName \fBinvoke\fR '\" Causes the command specified by the \fI\-command\fR option to be invoked. '\" .TP \fIpathName \fBupdate\fR '\" If the user has modified the entry using keyboard inputs, the update command will \fBupdate\fR the \fB\-value\fR of this Control widget. When the Control widget's \fB\-selectmode\fR option is set to "normal", one should call the \fBupdate\fR command on this widget before examining its \fB\-value\fR option. This command has no effect in if the \fB\-selectmode\fR option is set to "immediate". '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP '\" When the user presses the up/down arrow buttons (or press the and arrow keys on the keyboard), the value of the tixControl widget is adjusted according to the \fB\-validatecmd\fR, \fB\-incrcmd\fR, \fB\-decrcmd\fR, \fB\-step\fR, \fB\-max\fR and \fB\-min\fR options. '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixScrolledWindow.n0000664000122200012240000001524307232764445017033 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixScrolledWindow.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixScrolledWindow n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixScrolledWindow \- Create and manipulate Tix ScrolledWindow widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixScrolledWindow \fIpathName \fR?\fIoptions\fR? '\" '\" '\" '\"---------------------------------------------------------------------- .SO \-anchor \-background \-cursor \-relief \-borderWidth .SE '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP -height height Height Specifies the desired height for the window, in pixels. '\"----------END '\" '\"----------BEGIN .OP \-scrollbar scrollbar Scrollbar Specifies the display policy of the scrollbars. The following values are recognized: .RS '\" .TP \fBauto \fR?\fI+x\fR? ?\fI\-x\fR? ?\fI+y\fR? ?\fI\-y\fR? '\" When \fB\-scrollbar\fR is set to "\fBauto\fR", the scrollbars are shown only when needed. Additional modifiers can be used to force a scrollbar to be shown or hidden. For example, "\fBauto \-y\fR" means the horizontal scrollbar should be shown when needed but the vertical scrollbar should always be hidden; "\fBauto +x\fR" means the vertical scrollbar should be shown when needed but the horizontal scrollbar should always be shown, and so on. '\" .TP \fBboth\fR Both scrollbars are shown '\" .TP \fBnone\fR The scrollbars are never shown. '\" .TP \fBx\fR Only the horizontal scrollbar is shown; '\" .TP \fBy\fR Only the vertical scrollbar is shown. '\" .RE '\" '\"----------END '\" '\"----------BEGIN .OP -width width Width Specifies the desired width for the window, in pixels. '\"----------END '\" '\"----------BEGIN .OP -xscrollincrement xScrollIncrement ScrollIncrement Specifies by how much the window should be scrolled in the horizontal direction when the user presses the arrows in the horizontal scrollbar. In Pixels. '\"----------END '\" '\"----------BEGIN .OP -yscrollincrement yScrollIncrement ScrollIncrement Specifies by how much the window should be scrolled in the vertical direction when the user presses the arrows in the horizontal scrollbar. In pixels. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\" '\"----------BEGIN .LP .nf Name: \fBhsb\fR Class: \fBScrollbar\fR .fi .IP The horizontal scrollbar subwidget. '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBwindow\fR Class: \fBFrame\fR .fi .IP The frame subwidget which is scrolled by the ScrolledWindow widget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBvsb\fR Class: \fBScrollbar\fR .fi .IP The vertical scrollbar subwidget. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixScrolledWindow\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a ScrolledWindow widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the ScrolledWindow widget such as its cursor and relief. '\" .SH CREATING WIDGETS INSIDE A SCROLLEDWINDOW WIDGET .PP '\" To create widgets inside a ScrolledWindow widget, one must create the new widgets relative to the \fBwindow\fR subwidget and manage them inside the \fBwindow\fR subwidget. An error will be generated if one tries to create widgets as immediate children of the ScrolledWindow. For example: the following is correct code, which creates new widgets inside the window subwidget: .PP .nf tixScrolledWindow .w; pack .w set f [.w subwidget window] button $f.b \-text hi \-width 40 \-height 40 pack $f.b .fi .PP The following example code is \fIincorrect\fR because it tries to create immediate children of the ScrolledWindow \fB\.w\fR: .PP .nf tixScrolledWindow .w; pack .w button .w.b \-text hi \-width 40 \-height 40 pack .w.b .fi '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixScrolledWindow\fR command creates a new Tcl command whose name is the same as the path name of the ScrolledWindow widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the ScrolledWindow widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for ScrolledWindow widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixScrolledWindow\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixScrolledWindow\fR command. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no additional arguments are given, returns the pathname of the subwidget of the specified name. When no additional arguments are given, the widget command of the specified subwidget will be called with these parameters. '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/index.html0000644000122200012240000000362710221070571015144 0ustar jeffhjeffh00000000000000 Tix Manual Index

Tix Manual Index

General Documents

  • ABOUT.html
    A brief descriptions of Tix.

  • Release Notes
    Important release notes about this version of Tix.

  • license.terms
    Licensing terms and a disclaimer of all liabilities. You should use Tix only if you agree to all of its licensing terms.

  • Roadmap.html
    Planned future changes to Tix.

Programming with Tix


Tix Home Page
Tix8.4.3/man/tixSelect.n0000664000122200012240000002410007232764445015303 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixSelect.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixSelect n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixSelect \- Create and manipulate tixSelect widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixSelect \fIpathName \fR?\fIoptions\fR? '\" '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixSelect\fR class is derived from the \fBTixLabelWidget\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The Select widget supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-allowzero allowZero AllowZero A boolean value that specifies whether the selection can be empty. When set to false, at least one button subwidget must be selected at any time. \fBNote\fR: When the Select widget is first constructed, the default selection is always empty, even if \fB\-allowzero\fR is set to \fBfalse\fR. '\"----------END '\" '\"----------BEGIN .OP \-buttontype buttonType ButtonType The type of buttons to be used as subwidgets inside the Select widget. By default, the standard Tk \fBbutton\fR widget class is used. '\"----------END '\" '\" '\"----------BEGIN .OP \-command command Command Specifies the TCL command to be executed when the \fB\-value\fR of the Select widget is changed. This command will be invoked with two arguments. The first is the name of the button subwidget that has toggled. The second is a boolean value indicating whether the button subwidget is selected. This command is executed only when the \fB\-disableCallback\fR option is set to false. '\"----------END '\" '\"----------BEGIN .OP \-disablecallback disableCallback DisableCallback A boolean value indicating whether callbacks should be disabled. When set to true, the TCL command specified by the \fB\-command\fR option is not executed when the \fB\-value\fR of the Select widget changes. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBorientation\fR Class: \fBOrientation\fR Switch: \fB\-orientation\fR Alias: \fB\-orient\fR .fi .IP Specifies the orientation of the button subwidgets. Only the values \fBhorizontal\fR and \fBvertical\fR are recognized. This is a \fIstatic option\fR and it can only be assigned during the creation of the widget. '\"----------END '\" '\"----------BEGIN .OP \-label label Label Specifies the string to display as the label of this Select widget. '\"----------END '\" '\"----------BEGIN .OP \-labelside labelSide LabelSide Specifies where the label should be displayed relative to the Select widget. Valid options are: \fBtop\fR, \fBleft\fR, \fBright\fR, \fBbottom\fR, \fBnone\fR or \fBacrosstop\fR. '\"----------END '\" '\"----------BEGIN .OP \-padx padX Pad Specifies the horizontal padding between two neighboring button subwidgets. This is a \fIstatic option\fR and it can only be assigned during the creation of the widget. '\"----------END '\" '\"----------BEGIN .OP \-padx padY Pad Specifies the vertical padding between two neighboring button subwidgets. This is a \fIstatic option\fR and it can only be assigned during the creation of the widget. '\"----------END '\" '\"----------BEGIN .OP \-radio radio Radio A boolean value that specifies whether the Select widget should act as a radio-box. When set to true, at most one button subwidget can be selected at any time. This is a \fIstatic option\fR and it can only be assigned during the creation of the widget. '\"----------END '\" '\" '\"----------BEGIN .OP \-selectedbg selectedBg SelectedBg Specifies the background color of all the selected button subwidgets. '\"----------END '\" '\"----------BEGIN .OP \-state state State Specifies the state of all the buttons inside the Select widget. Only the values \fBnormal\fR and \fBdisabled\fR are recognized. When the state is set to \fBdisabled\fR, all user actions on this Select widget are ignore. '\"----------END '\" '\" '\"----------BEGIN .OP \-validatecmd validateCmd ValidateCmd Specifies a TCL command to be called when the -value of the Select widget is about to change. This command is called with one parameter -- the new \fB\-value\fR entered by the user. This command is to validate this new value by returning a value it deems valid. '\"----------END '\" '\"----------BEGIN .OP \-value value Value The value of a Select widget is a list of the names of the button subwidgets that have been selected by the user. When you assign the value of a Select widget using the "config -value" widget command, the TCL command specified by the \fB\-command\fR option will be invoked if some button subwidgets are toggled. '\"----------END '\" '\" '\"----------BEGIN .OP \-variable variable Variable Specifies the global variable in which the value of the Select widget should be stored. The value of a Select widget is stored as a list of the names of the button subwidgets that have been selected by the user. The value of the Select widget will be automatically updated when this variable is changed. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS .PP '\" '\" '\"----------BEGIN .LP .nf Name: \fBlabel\fR Class: \fBLabel\fR .fi .IP The label subwidget. '\"----------END .PP In addition, all the button subwidgets created as a result of the \fBadd\fR widget command can be accessed by the \fBsubwidget\fR command. They are identified by the \fIbuttonName\fR parameter to the \fBadd\fR widget command. Here is an example: .PP .CS set s [tixSelect .s] pack $s $s add eat -text Eat $s add sleep -text Sleep $s subwidget eat config -fg green $s subwidget sleep config -fg red .CE '\" '\" .BE '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixSelect\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a Select widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the Select widget such as its cursor and relief. The Select widget is a container of button subwidgets. It can be used to provide radio-box or check-box style of selection options for the user. '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixSelect\fR command creates a new Tcl command whose name is the same as the path name of the Select widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the Select widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for Select widgets: '\" .TP \fIpathName \fBadd\fI buttonName \fR?\fIoption value ... \fR? '\" Adds a new button subwidget with the name \fIbuttonName\fR into the Select widget. Additional configuration options can be given to configure the new button subwidget. '\" .TP \fIpathName \fBcget \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixSelect\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixSelect\fR command. '\" '\" .TP \fIpathName \fBinvoke\fI buttonName\fR '\" Invokes the button subwidget with the name \fIbuttonName\fR. '\" '\" .TP \fIpathName \fBsubwidget\fI name ?args?\fR '\" When no options are given, returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP '\" When the user presses the left mouse button over the a button subwidget, it will be toggled and the \fB\-value\fR option of the tixSelect widget will be changed. '\" '\"---------------------------------------------------------------------- .SH EXAMPLE .PP '\" The following example creates a radio-box style iconbar for the user to choose one value among \fBeat\fR, \fBwork\fR or \fBsleep\fR. .PP .CS set s [tixSelect .s \-radio true \-allowzero false] $s add eat \-bitmap [tix getbitmap eat] $s add work \-bitmap [tix getbitmap work] $s add sleep \-bitmap [tix getbitmap sleep] .CE '\" '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n), Container Widget Tix8.4.3/man/tixDirList.n0000664000122200012240000001730607232764445015450 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixDirList.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixDirList n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixDirList \- Create and manipulate tixDirList widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixDirList \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixDirList\fR class is derived from the \fBTixScrolledHList\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" \fBTixDirList\fR supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-browsecmd browseCmd BrowseCmd Specifies a command to call whenever the user browses on a directory (usually by single-clicking on the name of the directory). The command is called with one argument, the complete pathname of the directory. '\"----------END '\" '\" '\"----------BEGIN .OP \-command command Command Specifies the command to be called when the user activates on a directory (usually by double-clicking on the name of the directory). The command is called with one argument, the complete pathname of the directory. '\"----------END '\" '\"----------BEGIN .OP \-dircmd dircmd DirCmd Specifies the TCL command to be called when a directory listing is needed for a particular directory. If this option is not specified, by default the DirList widget will attempt to read the directory as a Unix directory. On special occasions, the application programmer may want to supply a special method for reading directories: for example, when he needs to list remote directories. In this case, the \fB\-dircmd\fR option can be used. The specified command accepts two arguments: the first is the name of the directory to be listed; the second is a Boolean value indicating whether hidden sub-directories should be listed. This command returns a list of names of the sub-directories of this directory. For example: .PP .CS proc read_dir {dir show_hidden} { if {$dir == "C:\\"} { return {DOS NORTON WINDOWS} } else { return {} } } .CE '\"----------END '\" '\"----------BEGIN .OP \-disablecallback disableCallback DisableCallback A boolean value indicating whether callbacks should be disabled. When set to true, the TCL command specified by the \fB\-command\fR option is not executed when the \fB\-value\fR of the DirList widget changes. '\"----------END '\" '\"----------BEGIN '\" .OP \-showhidden showHidden ShowHidden Specifies whether hidden directories should be shown. By default, a directory name starting with a period "." is considered as a hidden directory. This rule can be overridden by supplying an alternative \fB\-dircmd\fR option. '\"----------END '\" '\"----------END '\" .OP \-root root Root '\" Specifies the name of the root directory. Usually this is \fB"/"\fR under Unix machines, but can be changed to \fB"C:\\"\fR in DOS environments. '\"----------END '\" '\"----------END '\" .OP \-rootname rootName RootNAme '\" Specifies a text string to display at the root directory. If unspecified, the text string will be the same as the string specified by \fB\-root\fR. '\"----------END '\" '\"----------END '\" .LP .nf Name: \fBvalue\fR Class: \fBValue\fR Switch: \fB\-value\fR Alias: \fB\-directory\fR .fi .IP Specifies the name of the current directory to be displayed in the DirList widget. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBhlist\fR Class: \fBTixHList\fR .fi .IP The hierarchical listbox that displays the directory listing. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBhsb\fR Class: \fBScrollbar\fR .fi .IP The horizontal scrollbar subwidget. '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBvsb\fR Class: \fBScrollbar\fR .fi .IP The vertical scrollbar subwidget. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixDirList\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a DirList widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the DirList such as its cursor and relief. The DirList widget 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. '\" '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixDirList\fR command creates a new Tcl command whose name is the same as the path name of the DirList's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the DirList widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for DirList widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixDirList\fR command. '\" .TP \fIpathName \fBchdir\fR \fIdir\fR '\" Change the current directory to \fIdir\fR. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixDirList\fR command. '\" '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP '\" The mouse and keyboard bindings of the DirList widget are the same as the bindings of the HList widget. '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/compound.n0000664000122200012240000002412207232764445015167 0ustar jeffhjeffh00000000000000'\" '\" $Id: compound.n,v 1.3 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros .TH compound n 4.0 Tix "Tix Built-In Commands" .BS .SH NAME compound \- multi-line compound image type. .SH SYNOPSIS \fBimage create compound \fR?\fIname\fR? ?\fIoptions\fR? .BE '\" .SH DESCRIPTION .PP '\" Compound image types can be used to create images that consists of multiple horizontal lines; each line is composed of a series of items (texts, bitmaps, images or spaces) arranged from left to right. Compound images are mainly used to embed complex drawings into widgets that support the \fB\-image\fR option. As shown in the EXAMPLE section below, a compound image can be used to display a bitmap and a text string simutaneously in a TK \fBbutton(n)\fR widget. '\" .SH "CREATING COMPOUND IMAGES" .PP Like all images, compound images are created using the \fBimage create\fR command. Compound images support the following \fIoptions\fR: .TP \fB\-background \fIcolor\fR '\" Specifies the background color of the compound image. This color is also used as the default background color for the bitmap items in the compound image. '\" .TP \fB\-borderwidth \fIpixels\fR '\" Specifies a non-negative value indicating the width of the 3-D border drawn around the compound image. '\" .TP \fB\-font \fIfont\fR '\" Specifies the default font for the text items in the compound image. '\" .TP \fB\-foreground \fIcolor\fR '\" Specifies the default foreground color for the bitmap and text items in the compound image. '\" .TP \fB\-padx \fIvalue\fR '\" Specifies a non-negative value indicating how much extra space to request for the compound image in the X-direction. The \fIvalue\fR may have any of the forms acceptable to \fBTk_GetPixels(3)\fR. '\" .TP \fB\-pady \fIvalue\fR '\" Specifies a non-negative value indicating how much extra space to request for the compound image in the Y-direction. .TP \fB\-relief \fIvalue\fR '\" Specifies the 3-D effect desired for the background of the compound image. Acceptable values are \fBraised\fR, \fBsunken\fR, \fBflat\fR, \fBridge\fR, and \fBgroove\fR. '\" .TP \fB\-showbackground \fIvalue\fR '\" Specifies whether the background and the 3D borders should be drawn. Must be a valid boolean value. By default the background is not drawn and the compound image appears to have a transparent background. '\" .TP \fB\-window \fIpathName\fR '\" Specifies the window in which the compound image is displayed. One compound image can be displayed in only one window. When that window is destroyed, the compound image is automatically destroyed as well. This option must be specified when calling the \fBimage create compound\fR command and cannot be changed by the \fBconfigure\fR image command. '\" .SH "IMAGE COMMAND" .PP When a compound image is created, Tk also creates a new command whose name is the same as the image. This command may be used to invoke various operations on the image. It has the following general form: .RS .CS \fIimageName option \fR?\fIarg arg ...\fR? .CE .RE \fIOption\fR and the \fIarg\fRs '\" determine the exact behavior of the command. The following commands are possible for compound images: '\" '\" .TP \fIimageName \fBadd line\fR ?\fIoption value ...\fR? '\" Creates a new line at the bottom of the compound image. Lines support the following \fIoptions\fR: .RS .TP \fB\-anchor\fR value '\" Specifies how the line should be aligned along the horizontal axis. When the values are \fBw\fR, \fBsw\fR or \fBnw\fR, the line is aligned to the left. When the values are \fBc\fR, \fBs\fR or \fBn\fR, the line is aligned to the middle. When the values are \fBe\fR, \fBse\fR or \fBne\fR, the line is aligned to the right. '\" .TP \fB\-padx \fIvalue\fR '\" Specifies a non-negative value indicating how much extra space to request for this line in the X-direction. .RE '\" .TP \fIimageName \fBadd \fIitem-type\fR ?\fIoption value ...\fR? '\" Creates a new item of the type \fIitem-type\fR at the end of the last line of the compound image. All types of items support these following common \fIoptions\fR: .RS .TP \fB-anchor\fR value '\" Specifies how the item should be aligned along the vertical axis. When the values are \fBn\fR, \fBnw\fR or \fBne\fR, the item is aligned to the top of the line. When the values are \fBc\fR, \fBw\fR or \fBe\fR, the item is aligned to the middle of the line. When the values are \fBs\fR, \fBse\fR or \fBsw\fR, the item is aligned to the bottom of the line. '\" .TP \fB\-padx \fIvalue\fR '\" Specifies a non-negative value indicating how much extra space to request for this item in the X-direction. '\" .TP \fB\-pady \fIvalue\fR '\" Specifies a non-negative value indicating how much extra space to request for this item in the Y-direction. '\" .TP \fIitem-type\fR can be any of the following: .RE '\" '\"---------------------------------------- .TP \fIimageName \fBadd bitmap\fR ?\fIoption value ...\fR? '\" Creates a new bitmap item of at the end of the last line of the compound image. Additional \fIoptions\fR accepted by the bitmap type are: '\" .RS .TP \fB\-background \fIcolor\fR '\" Specifies the background color of the bitmap item. '\" '\" .TP \fB\-bitmap \fIname\fR '\" Specifies a bitmap to display in this item, in any of the forms acceptable to \fBTk_GetBitmap(3)\fR. '\" .TP \fB\-foreground \fIcolor\fR '\" Specifies the foreground color of the bitmap item. '\" .RE '\"---------------------------------------- .TP \fIimageName \fBadd image\fR ?\fIoption value ...\fR? '\" Creates a new image item of at the end of the last line of the compound image. Additional \fIoptions\fR accepted by the image type are: '\" .RS .TP \fB\-image \fIname\fR Specifies an image to display in this item. \fIname\fR must have been created with the \fBimage create\fR command. '\" .RE '\"---------------------------------------- .TP \fIimageName \fBadd space\fR ?\fIoption value ...\fR? Creates a new space item of at the end of the last line of the compound image. Space items do not display anything. They just acts as space holders that add additional spaces between items inside a compound image. Additional \fIoptions\fR accepted by the image type are: '\" .RS .TP \fB\-width \fIvalue\fR Specifies the width of this space. The \fIvalue\fR may have any of the forms acceptable to \fBTk_GetPixels(3)\fR. '\" .TP \fB\-height \fIvalue\fR Specifies the height of this space. The \fIvalue\fR may have any of the forms acceptable to \fBTk_GetPixels(3)\fR. '\" .RE '\"---------------------------------------- .TP \fIimageName \fBadd text\fR ?\fIoption value ...\fR? Creates a new text item of at the end of the last line of the compound image. Additional \fIoptions\fR accepted by the text type are: '\" .RS .TP \fB\-background \fIcolor\fR Specifies the background color of the text item. .TP \fB\-font \fIname\fR Specifies the font to be used for this text item. .TP \fB\-foreground \fIcolor\fR '\" Specifies the foreground color of the text item. '\" .TP \fB\-justify\fR \fIvalue\fR '\" When there are multiple lines of text displayed in a text item, this option determines how the lines line up with each other. \fIvalue\fR must be one of \fBleft\fR, \fBcenter\fR, or \fBright\fR. \fBLeft\fR means that the lines' left edges all line up, \fBcenter\fR means that the lines' centers are aligned, and \fBright\fR means that the lines' right edges line up. '\" .TP \fB\-text \fIstring\fR '\" Specifies a text string to display in this text item. '\" .TP \fB\-underline\fR \fIvalue\fR '\" Specifies the integer index of a character to underline in the text item. 0 corresponds to the first character of the text displayed in the text item, 1 to the next character, and so on. '\" .TP \fB\-wraplength\fR \fIvalue\fR '\" This option specifies the maximum line length of the label string on this text item. If the line length of the label string exceeds this length, it is wrapped onto the next line, so that no line is longer than the specified length. The value may be specified in any of the standard forms for screen distances. If this value is less than or equal to 0 then no wrapping is done: lines will break only at newline characters in the text. '\" .RE '\"---------------------------------------- '\" .TP \fIimageName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBimage create compound\fR command. '\" .TP \fIimageName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? '\" Query or modify the configuration options for the image. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIimageName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR 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. \fIOption\fR may have any of the values accepted by the \fBimage create compound\fR command, except the \fB\-window\fR option '\". '\"---------------------------------------- '\" .SH EXAMPLE '\" The following example creates a compound image with a bitmap and a text string and places this image into a Tk \fBbitton(n)\fR widget. Notice that the image must be created after the creation of the window that it resides in. .PP .CS set btn [button .b] set img [image create compound -window $btn] $img add line $img add bitmap -bitmap warning $img add space -width 8 $img add text -text "Warning" -underline 0 $btn config -image $img pack $btn .CE '\" .SH KEYWORDS image(n), Tix(n) Tix8.4.3/man/tixTList.n0000664000122200012240000005104507232764445015133 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixTList.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixTList n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixTList \- Create and manipulate Tix Tabular List widgets '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixTList \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SO '\" \-background \-borderWidth \-cursor \-foreground \-font \-height \-highlightColor \-highlightThickness \-relief \-selectBackground \-selectForeground \-xScrollCommand \-yScrollCommand \-width .SE '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-browsecmd browsecmd BrowseCmd Specifies a TCL command to be executed when the user browses through the entries in the TList widget. '\"----------END '\" '\"----------BEGIN .OP \-command command Command Specifies the TCL command to be executed when the user invokes a list entry in the TList widget. Normally the user invokes a list entry by double-clicking it or pressing the Return key. '\"----------END '\" '\"----------BEGIN .OP -foreground foreground Foreground Specifies the default foreground color for the list entries. '\"----------END '\" '\"----------BEGIN .OP \-height height Height Specifies the desired height for the window in number of characters. '\"----------END '\" '\"----------BEGIN .OP \-itemtype itemType ItemType Specifies the default type of display item for this TList widget. When you call the \fBinsert\fR widget commands, display items of this type will be created if the \fB\-itemtype\fR option is not specified . '\"----------END '\" '\"----------BEGIN .OP \-orient orient Orient Specifies the order of tabularizing the list entries. When set to "\fBvertical\fR", the entries are arranged in a column, from top to bottom. If the entries cannot be contained in one column, the remaining entries will go to the next column, and so on. When set to "\fBhorizontal\fR", the entries are arranged in a row, from left to right. If the entries cannot be contained in one row, the remaining entries will go to the next row, and so on. '\"----------END '\" '\"----------BEGIN .OP \-padx padX Pad The default horizontal padding for list entries. '\"----------END '\" '\"----------BEGIN .OP \-padx padY Pad The default vertical padding for list entries. '\"----------END '\"----------BEGIN .OP \-selectbackground selectBackground SelectBackground Specifies the background color for the selected list entries. '\"----------END '\" '\"----------BEGIN .OP \-selectborderwidth selectBorderWidth BorderWidth Specifies a non-negative value indicating the width of the 3-D border to draw around selected items. The value may have any of the forms acceptable to \fBTk_GetPixels\fR. '\"----------END '\" '\"----------BEGIN .OP \-selectforeground selectForeground SelectForeground Specifies the foreground color for the selected list entries. '\"----------END '\" '\"----------BEGIN .OP \-selectmode selectMode SelectMode Specifies one of several styles for manipulating the selection. The value of the option may be arbitrary, but the default bindings expect it to be either \fBsingle\fR, \fBbrowse\fR, \fBmultiple\fR, or \fBextended\fR; the default value is \fBsingle\fR. '\"----------END '\" '\"----------BEGIN .OP \-sizecmd sizeCmd SizeCmd Specifies a TCL script to be called whenever the TList widget changes its size. This command can be useful to implement "user scroll bars when needed" features. '\"----------END '\" '\"----------BEGIN .OP \-state state State Specifies whether the TList command should react to user actions. When set to "\fBnormal\fR", the TList reacts to user actions in the normal way. When set to "\fBdisabled\fR", the TList can only be scrolled, but its entries cannot be selected or activated. '\"----------END '\" '\"----------BEGIN .OP \-width width Width Specifies the desired width for the window in characters. '\"----------END .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixTList\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a TList widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the TList widget such as its cursor and relief. '\" .PP The TList widget 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. '\" .PP Each list entry is identified by an \fBindex\fR, which can be in the following forms: .RS .TP \fInumber\fR '\" An integer that indicates the position of the entry in the list. 0 means the first position, 1 means the second position, and so on. '\" .TP \fBend\fR '\" Indicates the end of the listbox. For some commands this means just after the last entry; for other commands it means the last entry. '\" .TP \fB@\fR\fIx\fR,\fIy\fR '\" Indicates the element that covers the point in the listbox window specified by x and y (in pixel coordinates). If no element covers that point, then the closest element to that point is used. '\" .RE '\" .SH "DISPLAY ITEMS" .PP Each list entry in an TList widget is associated with a \fBdisplay item\fR. The display item determines what visual information should be displayed for this list entry. Please see the \fBtixDisplayStyle\fR manual page for a list of all display items. '\" .PP When a list entry is created by the \fBinsert\fR command, the type of its display item is determined by the \fB\-itemtype\fR option passed to these commands. If the \fB\-itemtype\fR is omitted, then by default the type specified by this TList widget's \fB\-itemtype\fR option is used. '\"---------------------------------------------------------------------- .SH "WIDGET COMMAND" .PP '\" The \fBtixTList\fR command creates a new Tcl command whose name is the same as the path name of the TList widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the TList widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for TList widgets: '\" .TP \fIpathName \fBanchor set \fIindex\fR '\" Sets the anchor to the list entry identified by \fIindex\fR. The anchor is the end of the selection that is fixed while dragging out a selection with the mouse. '\" .TP \fIpathName \fBanchor clear\fR '\" Removes the anchor, if any, from this TList widget. This only removes the surrounding highlights of the anchor entry and does not affect its selection status. '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixTList\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixTList\fR command. '\" .TP \fIpathName \fBdelete\fR \fIfrom\fR ?\fIto\fR? Deletes one or more list entries between the two entries specified by the indices \fIfrom\fR and \fIto\fR. If \fIto\fR is not specified, deletes the single entry specified by \fIfrom\fR. '\" .TP \fIpathName \fBdragsite set \fIindex\fR '\" Sets the dragsite to the list entry identified by \fIindex\fR. The dragsite is used to indicate the source of a drag-and-drop action. Currently drag-and-drop functionality has not been implemented in Tix yet. '\" .TP \fIpathName \fBdragsite clear\fR Remove the dragsite, if any, from the this TList widget. This only removes the surrounding highlights of the dragsite entry and does not affect its selection status. '\" '\" .TP \fIpathName \fBdropsite set \fIindex\fR '\" Sets the dropsite to the list entry identified by \fIindex\fR. The dropsite is used to indicate the target of a grag-and-drop action. Currently drag-and-drop functionality has not been implemented in Tix yet. '\" .TP \fIpathName \fBdropsite clear\fR '\" Remove the dropsite, if any, from the this TList widget. This only removes the surrounding highlights of the dropsite entry and does not affect its selection status. '\" .TP \fIpathName \fBentrycget\fR \fIindex option\fR '\" Returns the current value of the configuration option given by \fIoption\fR for the entry indentfied by \fIindex\fR. \fIOption\fR may have any of the values accepted by the \fBinsert\fR widget command. '\" .TP \fIpathName \fBentryconfigure\fI index \fR?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the list entry indentfied by \fIindex\fR. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIindex\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR 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. \fIOption\fR may have any of the values accepted by the \fBinsert\fR widget command. The exact set of options depends on the value of the \fB\-itemtype\fR option passed to the the \fBinsert\fR widget command when this list entry is created. '\" .TP \fIpathName \fBinsert\fI index \fR?\fIoption value ...\fR? '\" Creates a new list entry at the position indicated by \fIindex\fR. The following configuration options can be given to configure the list entry: '\" .RS '\" .TP \fB\-itemtype\fI type\fR '\" Specifies the type of display item to be display for the new list entry. \fItype\fR must be a valid display item type. Currently the available display item types are \fBimage\fR, \fBimagetext\fR, \fBtext\fR, and \fBwindow\fR. If this option is not specified, then by default the type specified by this TList widget's \fB\-itemtype\fR option is used. '\" .TP \fB\-state\fR '\" Specifies whether this entry can be selected or invoked by the user. Must be either \fBnormal\fR or \fBdisabled\fR. '\" .RE '\" The \fBinsert\fR widget command accepts additional configuration options to configure the display item associated with this list entry. The set of additional configuration options depends on the type of the display item given by the \fB\-itemtype\fR option. Please see the \fBtixDisplayStyle\fR manual page for a list of the configuration options for each of the display item types. '\" .TP \fIpathName \fBinfo \fIoption\fR \fIarg ...\fR '\" Query information about the TList widget. \fIoption\fR can be one of the following: .RS .TP \fIpathName \fBinfo anchor\fR \fIindex\fR ; Returns the index of the current anchor, if any, of the TList widget. If the anchor is not set, returns the empty string. '\" .TP \fIpathName \fBinfo dragsite\fR \fIindex\fR Returns the index of the current dragsite, if any, of the TList widget. If the dragsite is not set, returns the empty string. '\" .TP \fIpathName \fBinfo dropsite\fR \fIindex\fR Returns the index of the current dropsite, if any, of the TList widget. If the dropsite is not set, returns the empty string. '\" .TP \fIpathName \fBinfo selection\fR '\" Returns a list of selected elements in the TList widget. If no entries are selectd, returns an empty string. .RE '\" .TP \fIpathName \fBnearest \fIx y\fR '\" Given an (x,y) coordinate within the TList window, this command returns the index of the TList element nearest to that coordinate. '\" '\" .TP \fIpathName \fBsee \fIindex\fR '\" Adjust the view in the TList so that the entry given by \fIindex\fR is visible. If the entry is already visible then the command has no effect; if the entry is near one edge of the window then the TList scrolls to bring the element into view at the edge; otherwise the TList widget scrolls to center the entry. '\" .TP \fIpathName \fBselection \fIoption\fR \fIarg ...\fR '\" This command is used to adjust the selection within a TList widget. It has several forms, depending on \fIoption\fR: .RS '\" .TP \fIpathName \fBselection clear \fR?\fIfrom\fR? ?\fIto\fR? '\" When no extra arguments are given, deselects all of the list entrie(s) in this TList widget. When only \fIfrom\fR is given, only the list entry identified by \fIfrom\fR is deselected. When both \fIfrom\fR and \fIto\fR are given, deselects all of the list entrie(s) between between \fIfrom\fR and \fIto\fR, inclusive, without affecting the selection state of entries outside that range. '\" .TP \fIpathName \fBselection includes \fIindex\fR '\" Returns 1 if the list entry indicated by \fIindex\fR is currently selected; returns 0 otherwise. '\" .TP \fIpathName \fBselection set \fIfrom\fR ?\fIto\fR? '\" Selects all of the list entrie(s) between between \fIfrom\fR and \fIto\fR, inclusive, without affecting the selection state of entries outside that range. When only \fIfrom\fR is given, only the list entry identified by \fIfrom\fR is selected. .RE '\" .TP \fIpathName \fBxview \fIargs\fR This command is used to query and change the horizontal position of the information in the widget's window. It can take any of the following forms: .RS .TP \fIpathName \fBxview\fR '\" Returns a list containing two elements. Each element is a real fraction between 0 and 1; together they describe the horizontal span that is visible in the window. For example, if the first element is .2 and the second element is .6, 20% of the TList entry is off-screen to the left, the middle 40% is visible in the window, and 40% of the entry is off-screen to the right. These are the same values passed to scrollbars via the \fB\-xscrollcommand\fR option. .TP \fIpathName \fBxview\fR \fIindex\fR '\" Adjusts the view in the window so that the list entry identified by \fIindex\fR is aligned to the left edge of the window. .TP \fIpathName \fBxview moveto\fI fraction\fR '\" Adjusts the view in the window so that \fIfraction\fR of the total width of the TList is off-screen to the left. \fIfraction\fR must be a fraction between 0 and 1. '\" .TP \fIpathName \fBxview scroll \fInumber what\fR '\" This command shifts the view in the window left or right according to \fInumber\fR and \fIwhat\fR. \fINumber\fR must be an integer. \fIWhat\fR must be either \fBunits\fR or \fBpages\fR or an abbreviation of one of these. If \fIwhat\fR is \fBunits\fR, the view adjusts left or right by \fInumber\fR character units (the width of the \fB0\fR character) on the display; if it is \fBpages\fR then the view adjusts by \fInumber\fR screenfuls. If \fInumber\fR is negative then characters farther to the left become visible; if it is positive then characters farther to the right become visible. '\" .RE '\" .TP \fIpathName \fByview \fI?args\fR? '\" This command is used to query and change the vertical position of the entries in the widget's window. It can take any of the following forms: '\" .RS .TP \fIpathName \fByview\fR '\" Returns a list containing two elements, both of which are real fractions between 0 and 1. The first element gives the position of the list element at the top of the window, relative to the TList as a whole (0.5 means it is halfway through the TList, for example). The second element gives the position of the list entry just after the last one in the window, relative to the TList as a whole. These are the same values passed to scrollbars via the \fB\-yscrollcommand\fR option. '\" .TP \fIpathName \fByview\fR \fIindex\fR '\" Adjusts the view in the window so that the list entry given by \fIindex\fR is displayed at the top of the window. '\" .TP \fIpathName \fByview moveto\fI fraction\fR '\" Adjusts the view in the window so that the list entry given by \fIfraction\fR appears at the top of the window. \fIFraction\fR is a fraction between 0 and 1; 0 indicates the first entry in the TList, 0.33 indicates the entry one-third the way through the TList, and so on. .TP \fIpathName \fByview scroll \fInumber what\fR '\" This command adjust the view in the window up or down according to \fInumber\fR and \fIwhat\fR. \fINumber\fR must be an integer. \fIWhat\fR must be either \fBunits\fR or \fBpages\fR. If \fIwhat\fR is \fBunits\fR, the view adjusts up or down by \fInumber\fR lines; if it is \fBpages\fR then the view adjusts by \fInumber\fR screenfuls. If \fInumber\fR is negative then earlier entries become visible; if it is positive then later entries become visible. .RE '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP .IP [1] If the \fB\-selectmode\fR is "browse", when the user drags the mouse pointer over the list entries, the entry under the pointer will be highlighted and the \fB\-browsecmd\fR procedure will be called with one parameter, the index of the highlighted entry. Only one entry can be highlighted at a time. The \fB\-command\fR procedure will be called when the user double-clicks on a list entry. '\" .IP [2] If the \fB\-selectmode\fR is "single", the entries will only be highlighted by mouse events. When a new list entry is highlighted, the \fB\-browsecmd\fR procedure will be called with one parameter indicating the highlighted list entry. The \fB\-command\fR procedure will be called when the user double-clicks on a list entry. '\" '\" .IP [3] If the \fB\-selectmode\fR is "multiple", when the user drags the mouse pointer over the list entries, all the entries under the pointer will be highlighted. However, only a contiguous region of list entries can be selected. When the highlighted area is changed, the \fB\-browsecmd\fR procedure will be called with an undefined parameter. It is the responsibility of the \fB\-browsecmd\fR procedure to find out the exact highlighted selection in the TList. The \fB\-command\fR procedure will be called when the user double-clicks on a list entry. '\" .IP [4] '\" If the \fB\-selectmode\fR is "extended", when the user drags the mouse pointer over the list entries, all the entries under the pointer will be highlighted. The user can also make disjointed selections using . When the highlighted area is changed, the \fB\-browsecmd\fR procedure will be called with an undefined parameter. It is the responsibility of the \fB\-browsecmd\fR procedure to find out the exact highlighted selection in the TList. The \fB\-command\fR procedure will be called when the user double-clicks on a list entry. '\" '\"---------------------------------------------------------------------- .SH EXAMPLE .PP This example demonstrates how to use an TList to store a list of numbers: .PP .CS set image [tix getimage folder] set t [tixTList .t -orient vertical] $t insert end -itemtype imagetext -image $image -text one $t insert end -itemtype imagetext -image $image -text two $t insert end -itemtype imagetext -image $image -text three $t insert end -itemtype imagetext -image $image -text four $t insert end -itemtype imagetext -image $image -text five $t insert end -itemtype imagetext -image $image -text six pack $t -expand yes -fill both .CE '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n), Tabular Listbox, Display Items Tix8.4.3/man/tixComboBox.n0000664000122200012240000003417307232764445015607 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixComboBox.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixComboBox n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixComboBox - Create and manipulate tixComboBox widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixComboBox \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixComboBox\fR class is derived from the \fBTixLabelWidget\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" \fBTixComboBox\fR supports all the standard options of a frame widget. See the options(n) manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .PP .SH "WIDGET-SPECIFIC OPTIONS" '\" '\" '\" '\"----------BEGIN .OP \-anchor anchor Anchor Specifies how the string inside the entry subwidget should be aligned. Only the values "w" or "e" are allowed. When set the "w", the entry is aligned to its beginning. When set to "e", it is aligned to its end. '\"----------END '\" '\"----------BEGIN .OP \-arrowbitmap arrowBitmap ArrowBitmap Specifies the bitmap to be used in the arrow button beside the entry widget. The default is an downward arrow bitmap in the file $tix_library/bitmaps/cbxarrow '\"----------END '\" '\"----------BEGIN .OP \-browsecmd browseCmd BrowseCmd Specifies the command to be called when the user browses through the listbox. This command can be used to provide instant feedback when the user examines items in the listbox before committing a choice. '\"----------END '\" '\"----------BEGIN .OP \-command command Command Specifies the command to be called when the ComboBox is invoked or when the \fB\-value\fR of the ComboBox is changed. '\"----------END '\" '\"----------BEGIN .OP \-crossbitmap crossBitmap CrossBitmap Specifies the bitmap to be used in the "cross" button to the left of the entry widget. The default is a bitmap in the file $tix_library/bitmaps/cross '\" '\"----------END '\" '\"----------BEGIN .OP \-disablecallback disableCallback DisableCallback A boolean value indicating whether callbacks should be disabled. When set to true, the TCL command specified by the \fB\-command\fR option is not executed when the \fB\-value\fR of the ComboBox. changes. '\"----------END '\" '\"----------BEGIN .OP \-disabledforeground disabledforeground DisabledForeground Specifies the foreground color to be used when the ComboBox is disabled. '\"----------END '\" '\"----------BEGIN .OP \-dropdown dropdown Dropdown A Boolean value specifying the style of the ComboBox. When set to "true", the listbox is only displayed temporarily when the arrow button is pressed. When set to "false", the listbox is always displayed. '\" '\"----------END '\" '\"----------BEGIN .OP \-editable editable Editable Specifies whether the user is allowed to type into the entry subwidget of the ComboBox. '\"----------END '\" '\"----------BEGIN .OP \-fancy fancy Fancy A Boolean value specifying whether the cross and tick button subwidgets should be shown. '\"----------END '\" '\" '\"----------BEGIN .OP \-grab grab Grab Specifies the pointer grabbing policy when the listbox is popped up. Only values "global", "local" or "none" are allowed. By default global grab is used. However, when you are developing your application, you may want to use only local grabbing so that in the event of errors, your X display won't be locked up. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBhistoryLimit\fR Class: \fBhistoryLimit\fR Switch: \fB\-historylimit\fR Alias: \fB\-histlimit\fR .fi .IP Specifies how many previous user inputs can be stored in the history list. '\"----------END '\" '\"----------BEGIN .OP \-history history History A Boolean value specifying whether previous user inputs should be stored in the history list. '\" '\"----------END '\" '\"----------BEGIN .OP \-label label Label Specifies the string to display as the label of this ComboBox widget. '\"----------END '\" '\"----------BEGIN .OP \-labelside labelSide LabelSide Specifies where the label should be displayed relative to the entry subwidget. Valid options are: \fBtop\fR, \fBleft\fR, \fBright\fR, \fBbottom\fR, \fBnone\fR or \fBacrosstop\fR. '\"----------END '\"' '\"----------BEGIN .OP \-listcmd listCmd listCmd Specifies a TCL command to be called every time when the listbox pops up. This option allows you to fill up the listbox on-demand. This option is ignored when the listbox is not in the \fBdropdown\fR style. '\"----------END '\" '\"----------BEGIN .OP \-listwidth listWidth listWidth If set, this option controls the width of the listbox subwidget when it is popped up. The option is ignored when the listbox is not in the \fBdropdown\fR style. '\"----------END '\" '\"----------BEGIN .OP \-prunehistory prunehistory PruneHistory Specifies whether duplicated previous user inputs should be pruned from the the history list. Only Boolean values are allowed. '\"----------END '\" '\"----------BEGIN .OP \-selection selection Selection Contains the selection in the ComboBox (the string displayed in the entry subwidget). Depending on the \fB\-selectmode\fR, the selection of a ComboBox may be different than its \fB\-value\fR. '\"----------END '\" '\"----------BEGIN .OP \-selection selection Selection This option stores the temporary selection. When the user types in a text string inside the entry widget, that string is considered as a temporary input and is stored inside the \fB\-selection\fR option. The \fB\-value\fR option is updated only when the user presses the return key. '\" '\"----------BEGIN .OP \-selectmode selectMode SelectMode Specifies the how the combobox responds to the mouse button events in the listbox subwidget; can eithet be \fB"browse"\fR or \fB"immediate"\fR. The default \fB\-selectmode\fR is "browse". See the \fBBINDINGS\fR section below. '\"----------END '\"----------BEGIN .OP \-state state State Specifies the whether the ComboBox is normal or disabled. Only the values "normal" and "disabled" are recognized. '\"----------END '\" '\"----------BEGIN .OP \-tickbitmap tickBitmap tickBitmap Specifies the bitmap to be used in the "tick" button to the left of the entry widget. The default is a bitmap in the file $tix_library/bitmaps/tick '\"----------END '\" '\"----------BEGIN .OP \-validatecmd validateCmd ValidateCmd Specifies a TCL command to be called when the \fB\-value\fR of the ComboBox is about to change. This command is called with one parameter -- the new \fB\-value\fR entered by the user. This command is to validate this new value by returning a value it deems valid. '\"----------END '\" '\"----------BEGIN .OP \-value value Value Specifies the string to be displayed in the entry subwidget of the ComboBox. When queried, the returned value is the last value selected by the user. When the \fB\-value\fR option is changed as a result of the \fBconfig -value\fR widget command, the TCL command specified by the \fB\-command\fR option is called. '\"----------END '\" '\" '\" '\"----------BEGIN .OP \-variable variable Variable Specifies the global variable in which the value of the ComboBox should be stored. The value of the ComboBox will be automatically updated when this variable is changed. '\" '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\" '\"----------BEGIN .LP .nf Name: \fBarrow\fR Class: \fBButton\fR .fi .IP The down arrow button. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBcross\fR Class: \fBButton\fR .fi .IP The cross button. Available only when \fB\-fancy\fR is set. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBentry\fR Class: \fBEntry\fR .fi .IP The entry that shows the value of this \fBtixControl\fR. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBlabel\fR Class: \fBLabel\fR .fi .IP The label subwidget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBlistbox\fR Class: \fBListbox\fR .fi .IP The listbox that holds all the list entries. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBslistbox\fR Class: \fBTixScrolledListBox\fR .fi .IP The scrolled-listbox that provides the scrollbars. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBtick\fR Class: \fBButton\fR .fi .IP The tick button. Available only when \fB\-fancy\fR is set. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixComboBox\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a \fBtixComboBox\fR widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the ComboBox such as its cursor and relief. The Tix ComboBox widget is similar to the combo box control in MS Windows. The user can select a choice by either typing in the entry subwdget or selecting from the listbox subwidget. '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixComboBox\fR command creates a new Tcl command whose name is the same as the path name of the ComboBox's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the ComboBox widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for ComboBox widgets: '\" .TP \fIpathName \fBaddhistory\fI string \fR '\" Add the string to the beinning of the listbox. '\" .TP \fIpathName \fBappendhistory\fI string \fR Append the string to the end of the listbox. '\" .TP \fIpathName \fBcget\fR \fIoption\fR Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixComboBox\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixComboBox\fR command. '\" '\" .TP \fIpathName \fBflash \fIindex string\fR '\" Flashes the ComboBox. \fBflash\fR is usually called by a \fI\-command\fR procedure to acknowledge to the user that he has selected a value for the ComboBox. '\" '\" .TP \fIpathName \fBinsert \fIindex string\fR Insert the \fI string\fR into the listbox at the specified index. \fIindex\fR must be a valid listbox index. '\" '\" .TP \fIpathName \fBpick \fIindex\fR Set the (\fIindex\fR)th item in the listbox to be the current value of the ComboBox. As a result, the \fIvalue\fR of the ComboBox is changed and the TCL command sepcified by the \fI\-command\fR option will be called. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR When no options are given, returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\" '\"---------------------------------------------------------------------- .PP .SH BINDINGS .PP .IP [1] If the \fB\-selectmode\fR is "immediate", when the user enters a keystroke, clicks on an item or drags the mouse pointer in the listbox, the \fB\-value\fR of the ComboBox will be immediately set to this item and the \fB\-command\fR procedure will be called. '\" '\" .IP [2] If the \fB\-selectmode\fR is "browse", when the user enters a keystroke, clicks on an item or drags the mouse pointer in the listbox, the \fB\-selection\fR of the ComboBox will be immediately set to the new content of the entry subwidget; also the \fB\-browsecmd\fR procedure will be called. The \fB\-value\fR option will be changed only when the user invokes the ComboBox (see [3] below). If the user presses the key at any time, any new \fB\-selection\fR will be ignored and the text inside the entry subwidget will be restored to the current \fB\-value\fR of the ComboBox. '\" .IP [3] If the \fB\-dropdown\fR option is true, the user can invoke the ComboBox by releasing the left mouse button over the desired item in the listbox. If the \fB\-dropdown\fR option is false, the user can invoke the ComboBox by double-clicking over the desired item in the listbox. In both cases, the user can also invoke the listbox by pressing the or key inside the entry subwidget, or switching the input focus to another widget inside the same toplevel widget '\" '\" '\"---------------------------------------------------------------------- .PP .SH BUGS .PP Starting from Tix vetsion 4.0, the default \fB\-value\fR of the ComboBox is the empty string. If you want the ComboBox to show a string by default, you must configure its \fB\-value\fR option explicitly. '\" '\"---------------------------------------------------------------------- .PP .SH KEYWORDS Tix(n), ComboBox(n), listbox(n) Tix8.4.3/man/tixForm.n0000664000122200012240000003447507232764445015007 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixForm.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixForm n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" .SH NAME tixForm \- Geometry manager based on attachment rules '\" '\" '\" .SH SYNOPSIS \fBtixForm\fI option arg ?arg ...?\fR .BE .SH DESCRIPTION .PP '\" The \fBtixForm\fR command is used to communicate with the \fBtixForm\fR Geometry Manager, a geometry manager that arranges the geometry of the children in a parent window according to attachment rules. The \fBtixForm\fR geometry manager is very flexible and powerful; it can be used to emulate all the existing features of the Tk packer and placer geometry managers (see \fBpack(n)\fR, \fBplace(n)\fR). '\" The \fBtixForm\fR command can have any of several forms, depending on the \fIoption\fR argument: '\" .TP \fBtixForm\fI slave \fR?\fIoptions\fR? '\" If the first argument to \fBtixForm\fR is a window name (any value starting with ``.''), then the command is processed in the same way as \fBtixForm configure\fR. '\" .TP \fBtixForm check \fImaster\fR '\" This command checks whether there is circular dependency in the attachments of the master's slaves (see the section \fBCIRCULAR DEPENDENCY\fR below). It returns the Boolean value \fBTRUE\fR if it discover circular dependency and \fBFALSE\fR otherwise. '\" .TP \fBtixForm configure\fI slave \fR?\fI\-option value ...\fR? '\" Sets or adjusts the attachment values of the slave window according to the \fI\-option value\fR argument pairs. '\" .RS '\" .TP \fB\-b\fR \fIattachment\fR '\" Abbreviation for the \fB\-bottom\fR option. '\" .TP \fB\-bottom\fR \fIattachment\fR '\" Specifies an attachment for the bottom edge of the slave window. The attachment must specied according to the section \fBSPECIFYING ATTACHMENTS\fR below. '\" .TP \fB\-bottomspring\fR \fIweight\fR '\" Specifies the weight of the spring at the bottom edge of the slave window. See the section \fBUSING SPRINGS\fR below. '\" .TP \fB\-bp\fR \fIvalue\fR '\" Abbreviation for the \fB\-padbottom\fR option. '\" .TP \fB\-bs\fR \fIweight\fR '\" Abbreviation for the \fB\-bottomspring\fR option. '\" '\" .TP \fB\-fill\fR \fImaster\fR '\" Specifies the fillings when springs are used for this widget. The value must be \fBx\fR, \fBy\fR, \fBboth\fR or \fBnone\fR. '\" .TP \fB\-in\fR \fImaster\fR '\" Places the slave window into the specified master window. If the slave was originally in another master window, all attachment values with respect to the original master window are discarded. Even if the attachment values are the same as in the original master window, they need to be specified again. The \fB\-in\fR flag, when needed, must appear as the first flag after the name of the slave. Otherwise an error is generated. '\" .TP \fB\-l\fR \fIattachment\fR '\" Abbreviation for the \fB\-left\fR option. '\" .TP \fB\-left\fR \fIattachment\fR '\" Specifies an attachment for the left edge of the slave window. The attachment must specied according to the section \fBSPECIFYING ATTACHMENTS\fR below. '\" .TP \fB\-leftspring\fR \fIweight\fR '\" Specifies the weight of the spring at the left edge of the slave window. See the section \fBUSING SPRINGS\fR below. '\" .TP \fB\-lp\fR \fIvalue\fR '\" Abbreviation for the \fB\-padleft\fR option. '\" .TP \fB\-ls\fR \fIweight\fR '\" Abbreviation for the \fB\-leftspring\fR option. '\" '\" .TP \fB\-padbottom\fR \fIvalue\fR '\" Specifies the amount of external padding to leave on the bottom side of the slave. The \fIvalue\fR may have any of the forms acceptable to \fBTk_GetPixels(3)\fR. '\" '\" .TP \fB\-padleft\fR \fIvalue\fR '\" Specifies the amount of external padding to leave on the left side of the slave. '\" .TP \fB\-padright\fR \fIvalue\fR '\" Specifies the amount of external padding to leave on the right side of the slave. '\" .TP \fB\-padtop\fR \fIvalue\fR '\" Specifies the amount of external padding to leave on the top side of the slave. '\" .TP \fB\-padx\fR \fIvalue\fR '\" Specifies the amount of external padding to leave on both the left and the right sides of the slave. '\" .TP \fB\-pady\fR \fIvalue\fR '\" Specifies the amount of external padding to leave on both the top and the bottom sides of the slave. '\" '\" .TP \fB\-r\fR \fIattachment\fR '\" Abbreviation for the \fB\-right\fR option. '\" .TP \fB\-right\fR \fIattachment\fR '\" Specifies an attachment for the right edge of the slave window. The attachment must specied according to the section \fBSPECIFYING ATTACHMENTS\fR below. '\" .TP \fB\-rightspring\fR \fIweight\fR '\" Specifies the weight of the spring at the right edge of the slave window. See the section \fBUSING SPRINGS\fR below. '\" '\" .TP \fB\-rp\fR \fIvalue\fR '\" Abbreviation for the \fB\-padright\fR option. '\" .TP \fB\-rs\fR \fIweight\fR '\" Abbreviation for the \fB\-rightspring\fR option. '\" '\" .TP \fB\-t\fR \fIattachment\fR '\" Abbreviation for the \fB\-top\fR option. '\" .TP \fB\-top\fR \fIattachment\fR '\" Specifies an attachment for the top edge of the slave window. The attachment must specied according to the section \fBSPECIFYING ATTACHMENTS\fR below. '\" '\" .TP \fB\-topspring\fR \fIweight\fR '\" Specifies the weight of the spring at the top edge of the slave window. See the section \fBUSING SPRINGS\fR below. '\" '\" .TP \fB\-tp\fR \fIvalue\fR '\" Abbreviation for the \fB\-padtop\fR option. '\" .TP \fB\-ts\fR \fIweight\fR '\" Abbreviation for the \fB\-topspring\fR option. '\" .RE .TP \fBtixForm forget\fI slave \fR?\fIslave ...\fR? '\" Removes each of the slaves from its master and unmaps their windows. The slaves will no longer be managed by tixForm. All attachment values with respect to their master windows are discarded. If another slave is attached to this slave, then the attachment of the other slave will be changed to grid attachment based on its geometry. '\" .TP \fBtixForm grid \fImaster \fR?\fIx_size y_size\fR? '\" When \fIx_size\fR and \fIy_size\fR are given, this command returns the number of grids of the master window in a pair of integers of the form {\fIx_size y_size\fR}. When both \fIx_size\fR and \fIy_size\fR are given, this command changes the number of horizontal and vertical grids on the master window. '\" .TP \fBtixForm info\fI slave\fR ?\fIoption\fR? '\" Queries the attachment options of a slave window. \fIoption\fR can be any of the options accepted by the \fBtixForm configure\fR command. If \fIoption\fR is given, only the value of that option is returned. Otherwise, this command returns a list whose elements are the current configuration state of the slave given in the same \fIoption\-value\fR form that might be specified to \fBtixForm configure\fR. The first two elements in this list list are "\fB\-in\fI master\fR" where \fImaster\fR is the slave's master window. '\" .TP \fBtixForm slaves \fImaster\fR '\" Returns a list of all of the slaves for the master window. The order of the slaves in the list is the same as their order in the packing order. If master has no slaves then an empty string is returned. '\" .PP .SH SPECIFYING ATTACHMENTS '\" One can specify an attachment for each side of a slave window managed by tixForm. An attachment is specified in the the form "\-\fIside\fR {\fIanchor_point\fR \fIoffset\fR}". \-\fIside\fR can be one of \fB\-top\fR, \fB\-bottom\fR, \fB\-left\fR or \fB\-right\fR. .PP \fIOffset\fR is given in screen units (i.e. any of the forms acceptable to \fBTk_GetPixels\fR). A positive offset indicates shifting to a position to the right or bottom of an anchor point. A negative offset indicates shifting to a position to the left or top of an anchor point. .PP \fIAnchor_point\fR can be given in one of the following forms: '\" .RS .TP \fBGrid Attachment\fR '\" The master window is divided into a number of horizontal and vertical grids. By default the master window is divided into 100x100 grids; the number of grids can be adjusted by the \fBtixForm grid\fR command. A grid attachment anchor point is given by a \fB%\fR sign followed by an \fBinteger\fR value. For example, \fB%0\fR spceifies the first grid line (the top or left edge of the master window). \fB%100\fR spceifies the last grid line (the bottom or right edge of the master window). '\" .TP \fBOpposite Side Attachment\fR '\" Opposite attachment specifies an anchor point located on the \fBopposite\fR side of another slave widget, which must be managed by tixForm in the same master window. An opposite attachment anchor point is given by the name of another widget. For example, "tixForm .b \-top {.a 0}" attaches the \fBtop\fR side of the widget \fB\.b\fR to the \fBbottom\fR of the widget \fB\.a\fR. '\" .TP \fBParallel Side Attachment\fR '\" Opposite attachment specifies an anchor point located on the \fBsame\fR side of another slave widget, which must be managed by tixForm in the same master window. An parallel attachment anchor point is given by the sign \fB&\fR follwed by the name of another widget. For example, "tixForm .b \-top {&.a 0}" attaches the \fBtop\fR side of the widget \fB\.b\fR to the \fBtop\fR of the widget \fB\.a\fR, making the \fBtop\fR sides of these two widgets at the same vertical position in their parent window. '\" .TP \fBNo Attachment\fR '\" Specifies a side of the slave to be attached to nothing, indicated by the keyword \fBnone\fR. When the \fBnone\fR anchor point is given, the offser must be zero. When a side of a slave is attached to \fB{none 0}\fR, the position of this side is calculated by the position of the other side and the natural size of the slave. For example, if a the \fBleft\fR side of a widget is attached to \fB{%0 100}\fR, its \fBright\fR side attached to \fB{none 0}\fR, and the natural size of the widget is \fB50\fR pixels, the \fBright\fR side of the widget will be positioned at pixel \fB{%0 149}\fR. When both \fB\-top\fR and \fB\-bottom\fR are attached to \fBnone\fR, then by default \fB\-top\fR will be attached to \fB{%0 0}\fR. When both \fB\-left\fR and \fB\-right\fR are attached to none, then by default \fB\-left\fR will be attached to \fB{%0 0}\fR. '\" .RE .PP Shifting effects can be achieved by specifying a non-zero offset with an anchor point. In the following example, the \fBtop\fR side of widget \fB\.b\fR is attached to the \fBbottom\fR of \fB\.a\fR; hence \fB\.b\fR always appears below \fB\.a\fR. Also, the left edge of \fB\.b\fR is attached to the \fBleft\fR side of \fB\.a\fR with a 10 pixel offest. Therefore, the \fBleft\fR edge of \fB\.b\fR is always shifted 10 pixels to the right of \fB\.a\fR's \fBleft\fR edge: .PP .CS tixForm .b \-left {.a 10} \-top {.a 0} .CE .PP \fBABBREVIATIONS:\fR Certain abbreviations can be made on the attachment specifications: First an offset of zero can be omitted. Thus, the following two lines are equivalent: .PP .CS tixForm .b \-top {.a 0} \-right {%100 0} tixForm .b \-top {.a} \-right {%100} .CE .PP Also, because of the way TCL handles lists, when you omit the offset, you can also leave out the braces. So you can further simplify the above to: .PP .CS tixForm .b \-top .a \-right %100 .CE .PP In the second case, when the anchor point is omitted, the offset must be given. A default anchor point is chosen according to the value of the offset. If the anchor point is \fB0\fR or positive, the default anchor point %0 is used; thus, "tixForm \.b \-top 15" attaches the top edge of \fB\.b\fR to a position 15 pixels below the top edge of the master window. If the anchor point is "\fB-0\fR" or negative, the default anchor point \fB%100\fR is used; thus, "tixForm \.a \-right \-2" attaches the right edge of \fB\.a\fR to a position 2 pixels to the left of the master window's \fBright\fR edge. An further example below shows a command with its equivalent abbreviation. '\" .CS tixForm .b \-top {%0 10} \-bottom {%100 0} tixForm .b \-top 10 \-bottom \-0 .CE .PP .SH USING SPRINGS '\" To be written. '\" .PP .SH ALGORITHM OF TIXFORM '\" TixForm starts with any slave in the list of slaves of the master window. Then it tries to determine the position of each side of the slave. .PP If the attachment of a side of the slave is grid attachment, the position of the side is readily determined. .PP If the attachment of this side is \fBnone\fR, then tixForm tries to determine the position of the opposite side first, and then use the position of the opposite side and the natural size of the slave to determine the position of this side. .PP If the attachment is opposite or parallel widget attachments, then tixForm tries to determine the positions of the other widget first, and then use the positions of the other widget and the natural size of the slave determine the position of this side. This recursive algorithmis carried on until the positions of all slaves are determined. .PP .SH CIRCULAR DEPENDENCY .PP The algorithm of tixForm will fail if a circular dependency exists in the attachments of the slaves. For example: .PP .CS tixForm .c \-left .b tixForm .b \-right .c .CE .PP In this example, the position of the left side of \fB.b\fR depends on the right side of \fB.c\fR, which in turn depends on the left side of \fB.b\fR. .PP When a circular dependency is discovered during the execution of the tixForm algorithm, tixForm will generate a background error and the geometry of the slaves are undefined (and will be arbitrary). Notice that tixForm only executes the algorithm when the specification of the slaves' attachments is complete. Therefore, it allows intermediate states of circular dependency during the specification of the slaves' attachments. Also, unlike the Motif Form manager widget, tixForm defines circular dependency as "\fIdependency in the same dimension\fR". Therefore, the following code fragment will does not have circular dependency because the two widgets do not depend on each other in the same dimension (\fB\.b\fR depends \fB.c\fR in the horizontal dimension and \fB.c\fR depends on \fB.b\fR in the vertical dimension): .PP .CS tixForm .b \-left .c tixForm .c \-top .b .CE .PP .SH BUGS '\" .PP Springs have not been fully implemented yet. '\" .SH KEYWORDS Tix(n), Form, Geometry Management Tix8.4.3/man/tixExFileSelectBox.n0000664000122200012240000002266107232764445017063 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixExFileSelectBox.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixExFileSelectBox n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixExFileSelectBox \- Create and manipulate tixExFileSelectBox widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixExFileSelectBox \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixExFileSelectBox\fR class does not have a super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" \fBTixExFileSelectBox\fR supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-browsecmd browseCmd BrowseCmd Specifies a command to call whenever the user browses on a filename in the file listbox (usually by single-clicking on the filename). The command is called with one argument, the complete pathname of the file. '\"----------END '\" '\" '\"----------BEGIN .OP \-command command Command Specifies the command to be called when the user chooses on a filename the file listbox (usually by double-clicking on the filename). The command is called with one argument, the complete pathname of the file. '\"----------END '\" '\"----------BEGIN .OP \-dialog dialog Dialog Specifies a dialog box which contains this ExFileSelectBox widget. The dialog box must be a widget of the class TixShell or its descendant classes. \fIThis is an internal option and should not be used by application programmers.\fR '\"----------END '\"----------BEGIN .OP \-dircmd dircmd DirCmd Specifies the TCL command to be called when a file listing is needed for a particular directory. If this option is not specified, by default the ExFileSelectBox widget will attempt to read the directory as a Unix directory. On special occasions, the application programmer may want to supply a special method for reading directories: for example, when he needs to list remote files. In this case, the \fB\-dircmd\fR option can be used. The specified command accepts three arguments: the first is the name of the directory to be listed; the second is a list of file patterns, the third is a Boolean value indicating whether hidden files should be listed. This command returns a list of names of the files of this directory which match with the file patterns. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBdirectory\fR Class: \fBDirectory\fR Switch: \fB\-directory\fR Alias: \fB\-dir\fR .fi .IP Specifies the current directory whose files and sub-directories are displayed in the ExFileSelectBox. '\"----------END '\" '\"----------BEGIN .OP \-disablecallback disableCallback DisableCallback A boolean value indicating whether callbacks should be disabled. When set to true, the TCL command specified by the \fB\-command\fR option is not executed when the \fB\-value\fR of the ExFileSelectBox widget changes. '\"----------END '\" '\"----------BEGIN '\" .OP \-filetypes fileTypes FileTypes Specifies the file types that can be selected from the "List Files of Type:" ComboBox subwidget. The value of this option must be a TCL list; each item of this list must in turn be a list of two elements. The first element is a list of file patterns. The second element is a string that describe these file patterns. For example: .nf tixExFileSelectBox .box -filetypes { {{*} {All files}} {{*.txt} {Text files}} {{*.c *.h} {C source files}} } .fi '\"----------END '\" '\"----------BEGIN '\" .OP \-showhidden showHidden ShowHidden Specifies whether hidden directories should be shown. By default, a directory name starting with a period "\." is considered as a hidden directory. '\"----------END '\" '\"----------BEGIN '\" .OP \-pattern pattern Pattern Specifies whether the file pattern(s) to match with the files in the current directory. One or more file patterns can be given at the same time. For example, {*\.c *\.h} will match all files that have either the ".h" or ".c" extensions. '\"----------END '\" '\" '\"----------END '\" .LP .nf Name: \fBvalue\fR Class: \fBValue\fR Switch: \fB\-value\fR Alias: \fB\-selection\fR .fi .IP Specifies the name of the filename currently selected by the user. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBcancel\fR Class: \fBButton\fR .fi .IP The button widget with the "Cancel" label. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBdir\fR Class: \fBTixComboBox\fR .fi .IP The ComboBox subwidget under the "Directories" heading. '\"----------END '\"----------BEGIN .LP .nf Name: \fBdirlist\fR Class: \fBTixDirList\fR .fi .IP The DirList subwidget that shows the hierarchical list of directories. '\"----------END '\"----------BEGIN .LP .nf Name: \fBfile\fR Class: \fBTixComboBox\fR .fi .IP The ComboBox subwidget under the "Files" heading. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBfilelist\fR Class: \fBTixScrolledListBox\fR .fi .IP The ScrolledListBox subwidget that shows the list of filenames. '\"----------END '\"----------BEGIN .LP .nf Name: \fBhidden\fR Class: \fBCheckbutton\fR .fi .IP The checkbutton widget with the "Show Hidden Files" label. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBok\fR Class: \fBButton\fR .fi .IP The button widget with the "OK" label. '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBtypes\fR Class: \fBTixComboBox\fR .fi .IP The ComboBox subwidget under the "List Files of Type" heading. '\"----------END .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixExFileSelectBox\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a ExFileSelectBox widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the ExFileSelectBox such as its cursor and relief. The ExFileSelectBox widget is usually embedded in a tixExFileSelectDialog widget. It provides an convenient method for the user to select files. The style of the ExFileSelectBox widget is very similar to the standard file dialog in MS Windows 3.1. '\" '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixExFileSelectBox\fR command creates a new Tcl command whose name is the same as the path name of the ExFileSelectBox's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the ExFileSelectBox widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for ExFileSelectBox widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixExFileSelectBox\fR command. '\" '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixExFileSelectBox\fR command. '\" '\" .TP \fIpathName \fBfilter\fR '\" Forces the ExFileSelectBox widget to re-filter all the filenames according to the \fB\-pattern\fR option. '\" .TP \fIpathName \fBinvoke\fR '\" Forces the ExFileSelectBox widget to perform actions as if the user has pressed the "OK" button. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\" '\"---------------------------------------------------------------------- '\".SH BINDINGS '\".PP '\" '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixGrid.n0000664000122200012240000002307507232764445014763 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixGrid.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros .TH tixGrid n 4.1 Tix "Tix Built-In Commands" .BS .SH NAME tixGrid \- Create and manipulate Tix Grid widgets .SO \-background \-borderWidth \-cursor \-font \-foreground \-height \-highlightColor \-highlightThickness \-relief \-selectBackground \-selectForeground \-width \-xScrollCommand \-yScrollCommand .SE '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" .OP -editdonecmd editDoneCmd EditDoneCmd If non-empty, gives a Tcl command to be executed when the user has edited grid cell. When this command is called, it is passed with two additional parameters: \fIx\fR \fIy\fR, where (\fIx\fR,\fIy\fR) is the location of the cell that has just been edited. '\" .OP -editnotifycmd editNotifyCmd EditNotifyCmd If non-empty, gives a Tcl command to be executed when the user tries to edit a grid cell. When this command is called, it is passed with two additional parameters: \fIx\fR \fIy\fR, where (\fIx\fR,\fIy\fR,) is the location of the cell. This command should return a boolean value: \fBtrue\fR indicates that the cells is editable and \fBfalse\fR otherwise. '\" .OP -formatcmd formatCmd FormatCmd If non-empty, gives a Tcl command to be executed when the grid cells need to be formatted on the screen. Normally, this command calls the \fBformat\fR widget command (see below). When this command is called, it is passed with five additional parameters: \fItype\fR \fIx1\fR \fIy1\fR \fIx2\fR \fIy2\fR. \fItype\fR gives the logical type of the region in the grid. It may be one of the following. \fBx-region\fR: the horizontal margin; \fBy-region\fR: the vertical margin; \fBs-region\fR, the area where the the horizontal and vertical margins are joined; \fBmain\fR: all the cells that do not fall into the above three types. \fIx1\fR \fIy1\fR \fIx2\fR \fIy2\fR gives the extent of the region that needs formatting. '\" .OP -leftmargin leftMargin LeftMargin In the number of cells, gives the width of vertical margin. A zero indicates that no vertical should be drawn. '\" .OP -selectmode selectMode SelectMode Specifies one of several styles for manipulating the selection. The value of the option may be arbitrary, but the default bindings expect it to be either \fBsingle\fR, \fBbrowse\fR, \fBmultiple\fR, or \fBextended\fR; the default value is \fBsingle\fR. '\" .OP -selectunit selectUnit SelectUnit Specifies the selection unit. Valid values are \fBcell\fR, \fBcolumn\fR or \fBrow\fR. '\" .OP -topmargin topMargin TopMargin In the number of cells, gives the height of horizontal margin. A zero indicates that no horizontal should be drawn. .BE '\" .SH DESCRIPTION The \fBtixGrid\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a \fBtixGrid\fR widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the \fBtixGrid\fR widget such as its cursor and relief. .PP A Grid widget displays its contents in a two dimensional grid of cells. Each cell may contain one Tix \fBdisplay item\fR, which may be in text, graphics or other formats. See the \fBtixDisplayStyle\fR manual page for more information about Tix display items. Individual cells, or groups of cells, can be formatted with a wide range of attributes, such as its color, relief and border. '\" .SH "WIDGET COMMAND" .PP The \fBtixGrid\fR command creates a new Tcl command whose name is the same as the path name of the \fBtixGrid\fR widget's window. This command may be used to invoke various operations on the widget. It has the following general form: .RS .CS \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE \fIPathName\fR is the name of the command, which is the same as the \fBtixGrid\fR widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for \fBtixGrid\fR widgets: .TP \fIpathName \fBanchor \fIoption \fR?\fIargs ...\fR? Manipulates the \fBanchor cell\fR of the \fBtixGrid\fR widget. The anchor cell is the end of the selection that is fixed while the user is dragging out a selection with the mouse. .TP \fIpathName \fBbdtype\fR TODO place holder .TP \fIpathName \fBcget\fR \fIoption\fR Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixGrid\fR command. .TP \fIpathName \fBconfigure \fR?\fIoption\fR? ?\fIvalue option value ...\fR? Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo(n)\fR for information on the format of this list.) If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixGrid\fR command. .TP \fIpathName \fBdelete\fR \fIdim\fR \fIfrom \fR?\fIto\fR? \fIDim\fR may be \fBrow\fR or \fBcolumn\fR. If \fIto\fR is not given, deletes a single row (or column) at the position \fIfrom\fR. If \fIto\fR is given, deletes the range of rows (or columns) from position \fIfrom\fR through \fIto\fR. .TP \fIpathName \fBedit apply\fR If any cell is being edited, de-highlight the cell and applies the changes. .TP \fIpathName \fBedit set\fR \fIx\fR \fIy\fR Highlights the cell at (\fIx\fR,\fIy\fR) for editing, if the \fB-editnotify\fR command returns true for this cell. .TP \fIpathName \fBentrycget\fR \fIx\fR \fIy\fR \fIoption\fR Returns the current value of the configuration option given by \fIoption\fR of the cell at (\fIx\fR,\fIy\fR). \fIOption\fR may have any of the values accepted by the \fBset\fR widget command. .TP \fIpathName \fBentryconfigure \fIx y \fR?\fIoption\fR? ?\fIvalue option value ...\fR? Query or modify the configuration options of the cell at (\fIx\fR,\fIy\fR). If no \fIoption\fR is specified, returns a list describing all of the available options for the cell (see \fBTk_ConfigureInfo(n)\fR for information on the format of this list.) If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified.) If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBset\fR widget command. .TP \fIpathName \fBformat\fR TODO place holder .TP \fIpathName \fBindex\fR TODO place holder .TP \fIpathName \fBmove\fR \fIdim\fR \fIfrom\fR \fIto\fR \fIoffset\fR \fIDim\fR may be \fBrow\fR or \fBcolumn\fR. Moves the the range of rows (or columns) from position \fIfrom\fR through \fIto\fR by the distance indicated by \fIoffset\fR. For example, \fBmove row 2 4 1\fR moves the rows 2,3,4 to rows 3,4,5. .TP \fIpathName \fBset \fIx y \fR?-itemtype \fItype\fR? ?\fIoption value...\fR? Creates a new display item at the cell at (\fIx\fR,\fIy\fR). The optional \fB-itemtype\fR parameter gives the type of the display item. An additional list of \fIoption-value\fR pairs specify options of the display item. If a display item already exists at this cell, the old item will be deleted automatically. .TP \fIpathName \fBsize \fIdim index \fR?\fIoption value ...\fR? Queries or sets the size of the row or column given by \fIdim\fR and \fIindex\fR. \fIDim\fR may be \fBrow\fR or \fBcolumn\fR. \fIIndex\fR may be any non-negative integer that gives the position of a given row (or column). \fIIndex\fR can also be the string \fBdefault\fR; in this case, this command queries or sets the default size of all rows (or columns). .PP When no \fIoption\fR-\fIvalue\fR pair is given, this command returns a list containing the current size setting of the given row (or column). When \fIoption\fR-\fIvalue\fR pairs are given, the corresponding options of the size setting of the given row are changed. \fIOption\fR may be one of the follwing: .RS .TP \fB-pad0\fR \fIpixels\fR Specifies the paddings to the left or a column or the top of a row. .TP \fB-pad1\fR \fIpixels\fR Specifies the paddings to the right or a column or the bottom of a row. .TP \fB-size\fR \fIval\fR Specifies the width of a column or the height of a row. \fIVal\fR may be: \fBauto\fR -- the width of the column is set the the widest cell in the column; a valid Tk screen distance unit (see \fBTk_GetPixels(n)\fR); or a real number following by the word \fBchars\fR (e.g. \fB3.4chars\fR) that sets the width of the column to the given number of characters. .RE .TP \fIpathName \fBunset\fR \fIx\fR \fIy\fR Clears the cell at (\fIx\fR,\fIy\fR) by removing its display item. .TP \fIpathName \fBxview\fR TODO place holder .TP \fIpathName \fByview\fR TODO place holder .SH KEYWORDS grid, spread sheet, table Tix8.4.3/man/tixListNoteBook.n0000664000122200012240000002032707232764445016447 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixListNoteBook.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixListNoteBook n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixListNoteBook - Create and manipulate tixListNoteBook widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixListNoteBook \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The ListNoteBook widget supports all the standard options of a frame widget. See the options(n) manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-dynamicgeometry dynamicGeometry DynamicGeometry If set to false, the size of the ListNotebook will match the size of the largest page. If set to true, the size of the ListNotebook will match the size of the current page (therefore, the size may change when the user selects different pages). The default value is false. A setting of true is discouraged. '\"----------END '\" '\"----------BEGIN .OP \-ipadx ipadX Pad The amount of internal horizontal paddings around the sides of the page subwidgets. '\"----------END '\" '\"----------BEGIN .OP \-ipady ipadY Pad The amount of internal vertical paddings around the sides of the page subwidgets. '\"----------END '\" '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS .LP .nf Name: \fBhlist\fR Class: \fBTixHList\fR .fi .IP The HList widget that displays the names of the pages. '\" '\"----------END '\" .LP In addition, all the page subwidgets created as a result of the \fBadd\fR command can be accessed by the \fBsubwidget\fR command. They are identified by the \fBpageName\fR parameter to the \fBadd\fR command. '\" '\" .BE '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixListNoteBook\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a ListNoteBook widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the ListNoteBook widget such as its cursor and relief. The ListNoteBook widget is very similar to the TixNoteBook widget: it can be used to display many windows in a limited space using a "notebook" metaphore. 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 \fBhlist\fR subwidget. '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixListNoteBook\fR command creates a new Tcl command whose name is the same as the path name of the ListNoteBook widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the ListNoteBook widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for ListNoteBook widgets: '\" '\" .TP \fIpathName \fBadd\fI pageName \fR?\fIoption value ...\fR? '\" Adds a new ListNotebook page subwidget into the ListNoteBook widget. \fIpageName\fR must be the name of an existing entry of the \fBhlist\fR subwidget. You must create the entry before calling the \fBadd\fR command. Please refer to the \fBtixHList(n)\fR manual entry for adding entries in an HList widget. Additional parameters may be supplied to configure this page subwidget. Possible options are: '\" .RS .TP \fB\-createcmd\fR Specifies a TCL command to be called the first time a page is shown on the screen. This option can be used to delay the creation of the contents of a page until necessary. Therefore, it can be used to speed up interface creation process especially when there are a large number of pages in a ListNoteBook widget. '\" .TP \fB\-raisecmd\fR Specifies a TCL command to be called whenever this page is raised by the user. '\" .RE '\" When successful, this command returns the pathname of the newly created page. .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR.\fIOption\fR may have any of the values accepted by the \fBtixListNoteBook\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixListNoteBook\fR command. '\" '\" .TP \fIpathName \fBdelete\fI pageName\fR? '\" Deletes the page identified by \fIpageName\fR. '\" .TP \fIpathName \fBpagecget\fR \fIpageName option\fR '\" Returns the current value of the configuration option given by \fIoption\fR in the page given by \fIpageName\fR. \fIOption\fR may have any of the values accepted by the \fBadd\fR widget command. '\" '\" .TP \fIpathName \fBpageconfigure\fI pageName \fR?\fIoption\fR? ?\fIvalue ...\fR? '\" When no option is given, prints out the values of all options of this page. If \fIoption\fR is specified with no \fIvalue\fR, then the command returns the current value of that option. If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given page's option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may be any of options accepted by the \fBadd\fR widget command. '\" .TP \fIpathName \fBpages\fR '\" Returns a list of the names of all the pages. '\" .TP \fIpathName \fBraise \fIpageName\fR '\" Raise the page identified by \fIpageName\fR. '\" .TP \fIpathName \fBraised\fR '\" Returns the name of the currently raised page. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\"---------------------------------------------------------------------- .SH EXAMPLE '\" .CS set n [tixListNoteBook .n]; pack $n $n subwidget hlist add page1 -text "Page 1" $n subwidget hlist add page2 -text "Page 2" set page1 [$n add page1] set page2 [$n add page2] button $page1.b -text "On page1" button $page2.b -text "On page2" pack $page1.b pack $page2.b $n raise page2 .CE '\"---------------------------------------------------------------------- .SH BINDINGS .PP When the user activates an entry in the \fBhlist\fR subwidget, the page associated with that entry will be raised to the front. This can be done by using the mouse or keyboard. The \fIhlist\fR subwidget operates with its \fB\-selectmode\fR option set to single. See the event bindings of the HList widget for more details. '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n), tixHList(n) Tix8.4.3/man/tixScrolledHList.n0000664000122200012240000001254507232764445016611 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixScrolledHList.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixScrolledHList n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixScrolledHList \- Create and manipulate Tix ScrolledHList widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixScrolledHList \fIpathName \fR?\fIoptions\fR? '\" '\" '\" '\"---------------------------------------------------------------------- .SO \-anchor \-background \-cursor \-relief \-borderWidth .SE '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP -height height Height Specifies the desired height for the window, in pixels. '\"----------END '\" '\"----------BEGIN .OP \-scrollbar scrollbar Scrollbar Specifies the display policy of the scrollbars. The following values are recognized: .RS '\" .TP \fBauto \fR?\fI+x\fR? ?\fI\-x\fR? ?\fI+y\fR? ?\fI\-y\fR? '\" When \fB\-scrollbar\fR is set to "\fBauto\fR", the scrollbars are shown only when needed. Additional modifiers can be used to force a scrollbar to be shown or hidden. For example, "\fBauto \-y\fR" means the horizontal scrollbar should be shown when needed but the vertical scrollbar should always be hidden; "\fBauto +x\fR" means the vertical scrollbar should be shown when needed but the horizontal scrollbar should always be shown, and so on. '\" .TP \fBboth\fR Both scrollbars are shown '\" .TP \fBnone\fR The scrollbars are never shown. '\" .TP \fBx\fR Only the horizontal scrollbar is shown; '\" .TP \fBy\fR Only the vertical scrollbar is shown. '\" .RE '\" '\"----------END '\" '\"----------BEGIN .OP -width width Width Specifies the desired width for the window, in pixels. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\" '\"----------BEGIN .LP .nf Name: \fBhsb\fR Class: \fBScrollbar\fR .fi .IP The horizontal scrollbar subwidget. '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBhlist\fR Class: \fBHlist\fR .fi .IP The tixHList subwidget inside the ScrolledHList widget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBvsb\fR Class: \fBScrollbar\fR .fi .IP The vertical scrollbar subwidget. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixScrolledHList\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a ScrolledHList widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the ScrolledHList widget such as its cursor and relief. '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixScrolledHList\fR command creates a new Tcl command whose name is the same as the path name of the ScrolledHList widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the ScrolledHList widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for ScrolledHList widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixScrolledHList\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixScrolledHList\fR command. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no additional arguments are given, returns the pathname of the subwidget of the specified name. When no additional arguments are given, the widget command of the specified subwidget will be called with these parameters. '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixDirTree.n0000664000122200012240000001641407232764445015433 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixDirTree.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixDirTree n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixDirTree \- Create and manipulate tixDirTree widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixDirTree \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixDirTree\fR class is derived from the \fBTixScrolledHList\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" \fBTixDirTree\fR supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-browsecmd browseCmd BrowseCmd Specifies a command to call whenever the user browses on a directory (usually by single-clicking on the name of the directory). The command is called with one argument, the complete pathname of the directory. '\"----------END '\" '\" '\"----------BEGIN .OP \-command command Command Specifies the command to be called when the user activates on a directory (usually by double-clicking on the name of the directory). The command is called with one argument, the complete pathname of the directory. '\"----------END '\" '\"----------BEGIN .OP \-dircmd dircmd DirCmd Specifies the TCL command to be called when a directory listing is needed for a particular directory. If this option is not specified, by default the DirTree widget will attempt to read the directory as a Unix directory. On special occasions, the application programmer may want to supply a special method for reading directories: for example, when he needs to list remote directories. In this case, the \fB\-dircmd\fR option can be used. The specified command accepts two arguments: the first is the name of the directory to be listed; the second is a Boolean value indicating whether hidden sub-directories should be listed. This command returns a list of names of the sub-directories of this directory. For example: .CS proc read_dir {dir show_hidden} { if {$dir == "C:\\"} { return {DOS NORTON WINDOWS} } else { return {} } } .CE '\"----------END '\" '\"----------BEGIN .OP \-disablecallback disableCallback DisableCallback A boolean value indicating whether callbacks should be disabled. When set to true, the TCL command specified by the \fB\-command\fR option is not executed when the \fB\-value\fR of the DirTree widget changes. '\"----------END '\" '\"----------BEGIN '\" .OP \-showhidden showHidden ShowHidden Specifies whether hidden directories should be shown. By default, a directory name starting with a period "." is considered as a hidden directory. This rule can be overridden by supplying an alternative \fB\-dircmd\fR option. '\"----------END '\" '\"----------END '\" .LP .nf Name: \fBvalue\fR Class: \fBValue\fR Switch: \fB\-value\fR Alias: \fB\-directory\fR .fi .IP Specifies the name of the current directory to be displayed in the DirTree widget. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBhlist\fR Class: \fBTixHList\fR .fi .IP The hierarchical listbox that displays the directory listing. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBhsb\fR Class: \fBScrollbar\fR .fi .IP The horizontal scrollbar subwidget. '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBvsb\fR Class: \fBScrollbar\fR .fi .IP The vertical scrollbar subwidget. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixDirTree\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a DirTree widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the DirTree such as its cursor and relief. The DirTree widget 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. '\" '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixDirTree\fR command creates a new Tcl command whose name is the same as the path name of the DirTree's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the DirTree widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for DirTree widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixDirTree\fR command. '\" .TP \fIpathName \fBchdir\fR \fIdir\fR '\" Change the current directory to \fIdir\fR. '\" '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixDirTree\fR command. '\" '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP '\" The mouse and keyboard bindings of the DirTree widget are the same as the bindings of the HList widget. '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixCheckList.n0000664000122200012240000001601407232764445015742 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixCheckList.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixCheckList n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixCheckList \- Create and manipulate tixCheckList widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixCheckList \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixCheckList\fR class is derived from the \fBTixTree\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" \fBTixCheckList\fR supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-browsecmd browseCmd BrowseCmd Specifies a command to call whenever the user browses on an entry (usually by single-clicking on the entry). The command is called with one argument, the pathname of the entry. '\"----------END '\" '\"----------BEGIN .OP \-command command Command Specifies a command to call whenever the user activates an entry (usually by double-clicking on the entry). The command is called with one argument, the pathname of the entry. '\"----------END '\" '\"----------BEGIN .OP \-radio radio Radio A Boolean value. If set to true, the user can select at most one item at a time; if set to false, the user can select as many items as possible. '\"----------END '\" '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBhlist\fR Class: \fBTixHList\fR .fi .IP The hierarchical listbox that displays the CheckList. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBhsb\fR Class: \fBScrollbar\fR .fi .IP The horizontal scrollbar subwidget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBvsb\fR Class: \fBScrollbar\fR .fi .IP The vertical scrollbar subwidget. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixCheckList\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a CheckList widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the CheckList widget such as its cursor and relief. .PP 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. .PP The items are contained in the \fBhlist\fR subwidget. Each item may be in one of the following status: \fBon\fR (indicated by a check bitmap), \fBoff\fR (indicated by a cross bitmap) \fBdefault\fR (indicated by a gray box bitmap) or \fBnone\fR, in which case the item will not be accompanied by a bitmap. The items whose status is \fBon\fR, \fBoff\fR or \fBdefault\fR are called the \fIselectable\fR items and can be checked or crossed by the user. All selectable entries must be of the type \fBimagetext\fR. .PP The items whose status is \fBnone\fR cannot be checked or crossed by the user; usually they are included in the \fBhlist\fR subwidget only for explanation purposes or as separators. .PP Initially, all the items have a \fInone\fR status. To make an item selectable, you can call the \fBsetstatus\fR command to change its status (see below). '\" .PP Notice that CheckList is a subclass of the TixTree widget and thus is is capable of displaying a hierachy of selectable entries. When necessary, you can call the \fBsetmode\fR method (see \fBTixTree(n)\fR) to define the hierachical structure of the selectable entries. '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixCheckList\fR command creates a new Tcl command whose name is the same as the path name of the CheckList's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the CheckList widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for CheckList widgets: '\" .TP \fIpathName \fBgetselection\fR ?\fIstatus\fR? '\" Returns a list of items whose status matches \fIstatus\fR. If \fIstatus\fR is not specified, the list of items in the "\fBon\fR" status will be returned. '\" .TP \fIpathName \fBgetstatus\fR \fIentryPath\fR '\" Returns the current status of \fIentryPath\fR. '\" .TP \fIpathName \fBsetstatus\fR \fIentryPath status\fR '\" Sets the status of \fIentryPath\fR to be \fIstatus\fR. A bitmap will be displayed next to the entry its status is \fBon\fR, \fBoff\fR or \fBdefault\fR. '\" '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\"---------------------------------------------------------------------- .SH EXAMPLE '\" .PP This example creates several choices for the user to select. .PP .CS set c [tixCheckList .c] $c subwidget hlist add choice1 -itemtype imagetext -text Choice1 $c subwidget hlist add choice2 -itemtype imagetext -text Choice2 $c subwidget hlist add choice3 -itemtype imagetext -text Choice3 $c setstatus choice1 on $c setstatus choice2 off $c setstatus choice3 off pack $c .CE '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP '\" The basic mouse and keyboard bindings of the CheckList widget are the same as the bindings of the TixTree widget. In addition, the status of the entries in the CheckList are toggled under the following conditions: '\" .IP [1] When the user press the mouse button over an entry. '\" .IP [2] When the user press the key over an entry. '\" .IP [3] When the user press the key over an entry. '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n), tixHList(n), tixTree(n) Tix8.4.3/man/tixLabelFrame.n0000664000122200012240000001364207232764445016067 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixLabelFrame.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixLabelFrame n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixLabelFrame \- Create and manipulate tixLabelFrame widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixLabelFrame \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixLabelFrame\fR class is derived from the \fBTixLabelWidget\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The LabelFrame widget supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\" '\"----------BEGIN .OP \-label label Label Specifies the string to display as the label of this LabelFrame widget. '\"----------END '\" '\"----------BEGIN .OP \-labelside labelSide LabelSide Specifies where the label should be displayed relative to the entry subwidget. Valid options are: \fBtop\fR, \fBleft\fR, \fBright\fR, \fBbottom\fR, \fBnone\fR or \fBacrosstop\fR. '\"----------END '\" '\"----------BEGIN .OP \-padx padX Pad Specifies the amount of the horizontal padding around the \fBframe\fR subwidget. Must be a valid non-negative integer number. '\"----------END '\" '\"----------BEGIN .OP \-pady padY Pad Specifies the amount of the vertical padding around the \fBframe\fR subwidget. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\" '\"----------BEGIN .LP .nf Name: \fBframe\fR Class: \fBFrame\fR .fi .IP The frame subwidget. '\"----------END '\"----------BEGIN .LP .nf Name: \fBlabel\fR Class: \fBLabel\fR .fi .IP The label subwidget. '\"----------END .BE '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixLabelFrame\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a LabelFrame widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the LabelFrame such as its cursor and relief. '\" .SH CREATING WIDGETS INSIDE A LABELFRAME .PP '\" The LabelFrame widget packages a frame widget and a label into one mega widget. To create widgets inside a LabelFrame widget, one must create the new widgets relative to the \fBframe\fR subwidget and manage them inside the \fBframe\fR subwidget. An error will be generated if one tries to create widgets as immediate children of the LabelFrame. For example: the following is correct code, which creates new widgets inside the frame subwidget: .PP .CS tixLabelFrame .f set f [.f subwidget frame] button $f.b \-text hi pack $f.b .CE .PP The following example code is \fIincorrect\fR because it tries to create immediate children of the LabelFrame \fB\.f\fR: .PP .CS tixLabelFrame .f # wrong! button .f.b \-text hi pack .f.b .CE '\" '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixLabelFrame\fR command creates a new Tcl command whose name is the same as the path name of the LabelFrame's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the LabelFrame widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for LabelFrame widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixLabelFrame\fR command. '\" '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixLabelFrame\fR command. '\" '\" '\" .TP \fIpathName \fBsubwidget \fIname ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. .PP When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\" '\"---------------------------------------------------------------------- '\".SH BINDINGS '\".PP '\" '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixFileSelectBox.n0000664000122200012240000001627007232764445016565 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixFileSelectBox.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixFileSelectBox n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" .SH NAME tixFileSelectBox \- Create and manipulate Tix FileSelectBox widgets '\" '\" '\" .SH SYNOPSIS \fBtixFileSelectBox \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The FileSelectBox widget supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\" .SH "WIDGET-SPECIFIC OPTIONS" '\"---------- .OP \-browsecmd browsecmd browseCmd Specifies the command to execute when the user browses through the files. By default, if the \fB\-browsecmd\fR is specified, the browse command will be executed when the user clicks on a filename in the \fIFiles\fR listbox. '\"---------- .OP \-command command Command Specifies the command to execute when the FileSelectBox is invoked. This command is executed with one parameter : the filename selected by the user. '\"---------- .LP .nf Name: \fBdirectory\fR Class: \fBDirectory\fR Switch: \fB\-directory\fR Alias: \fB\-dir\fR .fi .IP Specifies the directory to look for files. By default this will be the current working directory of the program and will be changed as the user browses through the directories. '\" '\"----------BEGIN .OP \-disablecallback disableCallback DisableCallback A boolean value indicating whether callbacks should be disabled. When set to true, the TCL command specified by the \fB\-command\fR option is not executed when the \fB\-value\fR of the ExFileSelectBox widget changes. '\"----------END '\"---------- .OP \-pattern pattern Pattern Specifies the matching pattern of the file names that should be listed in the \fIFiles\fR listbox. For example "*.c" matches all the filenames that end with ".c". If this option is set to the empty string, the default pattern "*" will be used. '\"---------- .LP .nf Name: \fBvalue\fR Class: \fBValue\fR Switch: \fB\-value\fR Alias: \fB\-selection\fR .fi .IP Specifies the name of the filename currently selected by the user. '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\" '\"----------BEGIN .LP .nf Name: \fBdirlist\fR Class: \fBTixScrolledListBox\fR .fi .IP The scrolled listbox that shows the directories. '\"----------END '\"----------BEGIN .LP .nf Name: \fBfilelist\fR Class: \fBTixScrolledListBox\fR .fi .IP The scrolled listbox that shows the files. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBfilter\fR Class: \fBTixComboBox\fR .fi .IP The ComboBox listbox that shows the filter string. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBselection\fR Class: \fBTixComboBox\fR .fi .IP The ComboBox listbox that shows the file selection. '\"----------END '\" .BE '\"====================== '\" '\" '\" .SH DESCRIPTION '\" .PP '\" The \fBtixFileSelectBox\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a FileSelectBox widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the FileSelectBox such as its cursor and relief. .PP The FileSelectBox is similar to the standard Motif(TM) file-selection 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. The \fBtixFileSelectDialog\fR widget is a combination of the FileSelectBox widget and a dialog widget. '\" .SH "WIDGET COMMAND" .PP '\" The \fBtixFileSelectBox\fR command creates a new Tcl command whose name is the same as the path name of the FileSelectBox's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the FileSelectBox widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for FileSelectBox widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixFileSelectBox\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixFileSelectBox\fR command. '\" .TP \fIpathName \fBfilter\fR '\" Updates the files listed in the FileSelectBox according to the filtering pattern sepcified in the \fBfilter\fR subwidget. .TP \fIpathName \fBinvoke\fR Execute the command specified by the \fB\-command\fR option with the filename stored in the \fBselection\fR subwidget. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" .SH "DEFAULT BINDINGS" TIX automatically creates class bindings for FileSelectBoxes that give them the following default behavior: .IP [1] Mouse button 1 in the \fIDirectory\fR listbox will change the filter string to the selected directory. .IP [2] Mouse button 1 in the \fIFiles\fR listbox will change the filename that appears in the \fISelection\fR entry. It will also trigger the \fB\-browsecmd\fR if the option has been specified. .IP [3] The current directory will be changed by (1) double clicking the \fIDirectory\fR listbox or (2) invoking the \fIFilter\fR ComboBox. Please refer to the man page of \fBtixComboBox\fR for the default bindings of the ComboBoxes and how they can be invoked. .IP [4] The command specified by the option -command will be invoked by (1) double clicking the \fIFiles\fR listbox or (2) invoking \fISelection\fR ComboBox. '\" '\" .SH KEYWORDS tixFileSelectBox, tixComboBox, tixFileSelectDialog, Tix(n), Tix8.4.3/man/pixmap.n0000664000122200012240000000646707232764445014655 0ustar jeffhjeffh00000000000000'\" '\" $Id: pixmap.n,v 1.3 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros .TH pixmap n 4.0 Tix "Tix Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME pixmap \- image type for the XPM file format. .SH SYNOPSIS \fBimage create pixmap \fR?\fIname\fR? ?\fIoptions\fR? .BE .SH DESCRIPTION .PP XPM is a popular X Window image file format for storing color icons. The \fBpixmap\fR image type defined by the \fBTix(n)\fR library can be used to create color images using XPM files. .SH "CREATING PIXMAPS" .PP Like all images, pixmaps are created using the \fBimage create\fR command. Pixmaps support the following \fIoptions\fR: .TP \fB\-data \fIstring\fR '\" Specifies the contents of the source pixmap as a string. The string must adhere to the XPM file format (e.g., as generated by the \fBpixmap(1)\fR program). If both the \fB\-data\fR and \fB\-file\fR options are specified, the \fB\-data\fR option takes precedence. Please note that the XPM file parsing code in the xpm library is extremely fragile. The first line of the string must be "\fB/* XPM */\fR" or otherwise a segmatation fault will be caused. '\" .TP \fB\-file \fIname\fR '\" \fIname\fR gives the name of a file whose contents define the source pixmap. The file must adhere to the XPM file format (e.g., as generated by the \fBpixmap(1)\fR program). '\" .SH "IMAGE COMMAND" .PP When a pixmap image is created, Tk also creates a new command whose name is the same as the image. This command may be used to invoke various operations on the image. It has the following general form: .RS .CS \fIimageName option \fR?\fIarg arg ...\fR? .CE .RE \fIOption\fR and the \fIarg\fRs '\" determine the exact behavior of the command. The following commands are possible for pixmap images: .TP \fIimageName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBimage create pixmap\fR command. .TP \fIimageName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? '\" Query or modify the configuration options for the image. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIimageName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR 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. \fIOption\fR may have any of the values accepted by the \fBimage create pixmap\fR command. .SH KEYWORDS pixmap(1), image(n), Tix(n) Tix8.4.3/man/tixPopupMenu.n0000664000122200012240000001626307232764445016027 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixPopupMenu.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixPopupMenu n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixPopupMenu \- Create and manipulate tixPopupMenu widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixPopupMenu \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBtixPopupMenu\fR class is derived from the \fBTixShell\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The PopupMenu widget supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\" '\"----------BEGIN .OP \-buttons buttons Buttons A Tcl list that specifies the mouse button(s) and key modifier(s) that bring up the popup menu. Each element of this list is in turn a list that contains two elements: the first element is an integer that indicates the mouse button that brings up the popup menu; the second element specifies the key modifiers that should be used in conjunction with the mouse button. For example, the value \fB{{1 {Control Meta}} {3 {Any}}}\fR specifies that the popup menu can be popped up by (a) pressing mouse button 1 with either the Control or the Meta key or (b) pressing mouse button 3 with any key modifier. The default value is \fB{{3 {Any}}}\fR: only mouse button 3 brings up the popup menu. '\"----------END '\" '\"----------BEGIN .OP \-postcmd postCmd PostCmd Specifies a command to be evaluated just before the menu is about to pop-up. This command is called with two default arguments: the root x-y coordinates where the user has pressed the mouse button. This command must return a boolean value: a false indicates that the menu shouldn't be popped up at this point; a true indicates that the menu should be popped up. This option can be used to find out where the user has pressed the mouse-button and optionally disable the popup menu over certain screen areas. '\"----------END '\" '\"----------BEGIN .OP \-spring spring Spring When set to \fBtrue\fR, the menu will be automatically popped down if the user releases the mouse button outside of the menu and no menu commands will be invoked. This makes it easy for the user to cancel the popup menu without pressing the Escape key. The default value is \fBtrue\fR. '\"----------END '\" '\"----------BEGIN .OP \-state state State Must be either \fBdisabled\fR or \fBnormal\fR. The PopupMenu widget will not pop up unless its \fB\-state\fR is set to \fBnormal\fR. '\"----------END '\" '\" '\"----------BEGIN .OP \-title title Title Specifies a text string to display inside the \fBmenubutton\fR subwidget, as the title of this PopupMenu. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBmenu\fR Class: \fBMenu\fR .fi .IP The menu subwidget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBmenubutton\fR Class: \fBMenubutton\fR .fi .IP The menubutton subwidget. '\"----------END '\" .BE '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixPopupMenu\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a PopupMenu widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the PopupMenu widget such as its cursor and relief. The Tix PopupMenu widget can be used as a replacement of the \fBtk_popup\fR command. The advantage of the Tix PopupMenu widget is it requires less application code to manipulate. Also, it provides a title for the popup menu, which is not available from \fBtk_popup\fR. '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixPopupMenu\fR command creates a new Tcl command whose name is the same as the path name of the PopupMenu widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the PopupMenu widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for PopupMenu widgets: .TP \fIpathName \fBbind \fIwidget \fR?\fIwidget ...\fR? '\" Binds this PopupMenu to one or more \fIwidgets\fR. The PopupMenu will be activated when the user presses the right mouse button over these \fIwidgets\fR. '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixPopupMenu\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixPopupMenu\fR command. '\" '\" .TP \fIpathName \fBpost \fIwidget x y\fR '\" Posts the PopupMenu inside the \fIwidget\fR at the coordinate \fIx\fR,\fIy\fR. '\" '\" .TP \fIpathName \fBunbind \fIwidget \fR?\fIwidget ...\fR? '\" Cancels the PopupMenu's binding with the \fIwidget(s)\fR. '\" '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\"---------------------------------------------------------------------- '\".SH BINDINGS '\".PP '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixTree.n0000664000122200012240000002221607232764445014771 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixTree.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixTree n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixTree \- Create and manipulate tixTree widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixTree \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixTree\fR class is derived from the \fBTixScrolledHList\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" \fBTixTree\fR supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-browsecmd browseCmd BrowseCmd Specifies a command to call whenever the user browses on an entry (usually by single-clicking on the entry). The command is called with one argument, the pathname of the entry. '\"----------END '\" '\" '\"----------BEGIN .OP \-closecmd closeCmd CloseCmd Specifies a command to call whenever an entry needs to be closed (See the BINDINGS section below). This command is called with one argument, the pathname of the entry. This command should perform appropriate actions to close the specified entry. If the \fB\-closecmd\fR option is not specified, the default closing action is to hide all child entries of the specified entry. '\"----------END '\" '\"----------BEGIN .OP \-command command Command Specifies a command to call whenever the user activates an entry (usually by double-clicking on the entry). The command is called with one argument, the pathname of the entry. '\"----------END '\" '\"----------BEGIN .OP \-ignoreinvoke ignoreInvoke IgnoreInvoke A Boolean value that specifies when a branch should be opened or closed. A branch will always be opened or closed when the user presses the (+) and (-) indicators. However, when the user invokes a branch (by doublc-clicking or pressing ), the branch will be opened or closed only if \fB\-ignoreinvoke\fR is set to false (the default setting). '\"----------END '\" '\"----------BEGIN .OP \-opencmd openCmd OpenCmd Specifies a command to call whenever an entry needs to be opened (See the BINDINGS section below). This command is called with one argument, the pathname of the entry. This command should perform appropriate actions to open the specified entry. If the \fB\-opencmd\fR option is not specified, the default opening action is to show all the child entries of the specified entry. '\"----------END '\" '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBhlist\fR Class: \fBTixHList\fR .fi .IP The hierarchical listbox that displays the tree. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBhsb\fR Class: \fBScrollbar\fR .fi .IP The horizontal scrollbar subwidget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBvsb\fR Class: \fBScrollbar\fR .fi .IP The vertical scrollbar subwidget. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixTree\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a Tree widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the Tree widget such as its cursor and relief. .PP The Tree 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. .PP To display a static tree structure, you can add the entries into the \fBhlist\fR subwidget and hide any entries as desired. Then you can call the \fBautosetmode\fR method. This will set up the Tree widget so that it handles all the \fIopen\fR and \fIclose\fR events automatically. '\"(TODO add an example). .PP The above method is not applicable if you want to maintain a dynamic tree structure, i.e, you do not know all the entries in the tree and you need to add or delete entries subsequently. To do this, you should first create the entries in the \fBhlist\fR subwidget. Then, use the setmode method to indicate the entries that can be opened or closed, and use the \fB\-opencmd\fR and \fB \-closecmd\fR options to handle the opening and closing events. '\"(TODO add an example). '\" '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixTree\fR command creates a new Tcl command whose name is the same as the path name of the Tree's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the Tree widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for Tree widgets: '\" .TP \fIpathName \fBautosetmode\fR '\" This command calls the \fBsetmode\fR method for all the entries in this Tree widget: if an entry has no child entries, its mode is set to \fBnone\fR. Otherwise, if the entry has any hidden child entries, its mode is set to \fBopen\fR; otherwise its mode is set to \fBclose\fR. '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixTree\fR command. '\" '\" .TP \fIpathName \fBclose \fIentryPath\fR '\" Close the entry given by \fIentryPath\fR if its \fImode\fR is \fBclose\fR. '\" '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixTree\fR command. '\" '\" .TP \fIpathName \fBgetmode \fIentryPath\fR '\" Returns the current \fImode\fR of the entry given by \fIentryPath\fR. '\" .TP \fIpathName \fBopen \fIentryPath\fR '\" Open the entry givaen by \fIentryPath\fR if its \fImode\fR is \fBopen\fR. '\" .TP \fIpathName \fBsetmode \fI entryPath mode\fR '\" This command is used to indicate whether the entry given by \fIentryPath\fR has children entries and whether the children are visible. \fImode\fR must be one of \fBopen\fR, \fBclose\fR or \fBnone\fR. If \fImode\fR is set to \fBopen\fR, a (+) indicator is drawn next the the entry. If \fImode\fR is set to \fBclose\fR, a (-) indicator is drawn next the the entry. If \fImode\fR is set to \fBnone\fR, no indicators will be drawn for this entry. The default \fImode\fR is none. The \fBopen\fR mode indicates the entry has hidden children and this entry can be opened by the user. The \fBclose\fR mode indicates that all the children of the entry are now visible and the entry can be closed by the user. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP '\" The basic mouse and keyboard bindings of the Tree widget are the same as the bindings of the HList widget. In addition, the entries can be opened or closed under the following conditions: '\" .IP [1] If the \fImode\fR of the entry is \fBopen\fR, it can be opened by clicking on its (+) indicator or double-clicking on the entry. '\" .IP [2] If the \fImode\fR of the entry is \fBclose\fR, it can be closed by clicking on its (-) indicator or double-clicking on the entry. '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n),tixHList(n) Tix8.4.3/man/tixHList.n0000664000122200012240000011254107232764445015116 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixHList.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixHList n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixHList \- Create and manipulate Tix Hierarchial List widgets '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixHList \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SO \-background \-borderWidth \-cursor \-foreground \-font \-height \-highlightColor \-highlightThickness \-relief \-selectBackground \-selectForeground \-xScrollCommand \-yScrollCommand \-width .SE '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-browsecmd browsecmd BrowseCmd Specifies a TCL command to be executed when the user browses through the entries in the HList widget. '\"----------END '\" '\"----------BEGIN .OP \-columns columns Columns Specifies the number of columns in this HList widget. This option can only be set during the creation of the HList widget and cannot be changed subsequently. '\"----------END '\" '\"----------BEGIN .OP \-command command Command Specifies the TCL command to be executed when the user invokes a list entry in the HList widget. Normally the user invokes a list entry by double-clicking it or pressing the Return key. '\"----------END '\" '\"----------BEGIN .OP \-drawbranch drawBranch DrawBranch A Boolean value to specify whether branch line should be drawn to connect list entries to their parents. '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBforeground\fR Class: \fBForeground\fR Switch: \fB\-foreground\fR Alias: \fB\-fg\fR .fi .IP \fB[OBSOLETE]\fR Specifies the default foreground color for the list entries. '\"----------END '\" '\" '\"----------BEGIN .OP \-gap gap Gap \fB[OBSOLETE]\fR The default distance between the bitmap/image and the text in list entries. '\"----------END '\" '\"----------BEGIN .OP \-header header Header A Boolean value specifying whether headers should be displayed for this HList widget (see the \fBheader\fR widget command below). '\"----------END '\" '\"----------BEGIN .OP \-height height Height Specifies the desired height for the window in number of characters. '\"----------END '\" '\"----------BEGIN .OP \-indent indent Indent Specifies the amount of horizontal indentation between a list entry and its children. Must be a valid screen distance value. '\"----------END '\" '\"----------BEGIN .OP \-indicator indicator Indicator Specifies whether the indicators should be displayed inside the HList widget. See the \fBindicator\fR widget command below. '\"----------END '\" '\" '\"----------BEGIN .OP \-indicatorcmd indicatorCmd IndicatorCmd Specifies a TCL command to be executed when the user manipulates the indicator of an HList entry. The \fB\-indicatorcmd\fR is triggered when the user press or releases the mouse button over the indicator in an HList entry. By default the TCL command specified by \fB\-indicatorcmd\fR is executed with one additional argument, the entryPath of the entry whose indicator has been triggered. Additional information about the event can be obtained by the \fBtixEvent\fR command. '\"----------END '\" '\" '\"----------BEGIN .OP \-itemtype itemType ItemType Specifies the default type of display item for this HList widget. When you call the add and addchild widget commands, display items of this type will be created if the \fB\-itemtype\fR option is not specified . '\"----------END '\" '\"----------BEGIN .OP \-padx padX Pad \fB[OBSOLETE]\fR The default horizontal padding for list entries. '\"----------END '\" '\"----------BEGIN .OP \-padx padY Pad \fB[OBSOLETE]\fR The default vertical padding for list entries. '\"----------END '\"----------BEGIN .OP \-selectbackground selectBackground SelectBackground Specifies the background color for the selected list entries. '\"----------END '\" '\"----------BEGIN .OP \-selectborderwidth selectBorderWidth BorderWidth Specifies a non-negative value indicating the width of the 3-D border to draw around selected items. The value may have any of the forms acceptable to \fBTk_GetPixels\fR. '\"----------END '\" '\"----------BEGIN .OP \-selectforeground selectForeground SelectForeground Specifies the foreground color for the selected list entries. '\"----------END '\" '\"----------BEGIN .OP \-selectmode selectMode SelectMode Specifies one of several styles for manipulating the selection. The value of the option may be arbitrary, but the default bindings expect it to be either \fBsingle\fR, \fBbrowse\fR, \fBmultiple\fR, or \fBextended\fR; the default value is \fBsingle\fR. '\"----------END '\" '\"----------BEGIN .OP \-sizecmd sizeCmd SizeCmd Specifies a TCL script to be called whenever the HList widget changes its size. This command can be useful to implement "user scroll bars when needed" features. '\"----------END '\" '\"----------BEGIN .OP \-separator separator Separator Specifies the character to used as the separator character when intepreting the path-names of list entries. By default the character "." is used. '\"----------END '\" '\"----------BEGIN .OP \-width width Width Specifies the desired width for the window in characters. '\"----------END .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixHList\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a HList widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the HList widget such as its cursor and relief. .PP The HList 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. .PP Each list entry is identified by an \fBentryPath\fR. The entryPath is a sequence of \fBentry names\fR separated by the separator charactor (specified by the \fB\-separator\fR option). An \fBentry name\fR can be any string that does not contain the separator charactor, or it can be the a string that contains only one separator charactor. .PP For example, when "." is used as the separator charactor, "one.two.three" is the entryPath for a list entry whose parent is "one.two", whose parent is "one", which is a toplevel entry (has no parents). .PP Another examples: ".two.three" is the entryPath for a list entry whose parent is ".two", whose parent is ".", which is a toplevel entry. '\" .SH "DISPLAY ITEMS" .PP Each list entry in an HList widget is associated with a \fBdisplay item\fR. The display item determines what visual information should be displayed for this list entry. Please see the \fBtixDisplayStyle\fR manual page for a list of all display items. When a list entry is created by the \fBadd\fR or \fBaddchild\fR widget commands, the type of its display item is determined by the \fB\-itemtype\fR option passed to these commands. If the \fB\-itemtype\fR is omitted, then by default the type specified by this HList widget's \fB\-itemtype\fR option is used. '\"---------------------------------------------------------------------- .SH "WIDGET COMMAND" .PP '\" The \fBtixHList\fR command creates a new Tcl command whose name is the same as the path name of the HList widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the HList widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for HList widgets: '\" .TP \fIpathName \fBadd\fI entryPath \fR?\fIoption value ...\fR? '\" Creates a new list entry with the pathname \fIentryPath\fR. A list entry must be created after its parent is created (unless this entry is a top-level entry, which has no parent). This command returns the entryPath of the newly created list entry. The following configuration options can be given to configure the list entry: '\" .RS '\" .TP \fB\-at\fI position\fR '\" Insert the new list at the position given by \fIposition\fR. \fIposition\fR must be a valid integer. the Position \fB0\fR indicates the first position, \fB1\fR indicates the second position, and so on. '\" .TP \fB\-after\fI afterWhich\fR '\" Insert the new list entry after the entry identified by \fIafterWhich\fR. \fIafterWhich\fR must be a valid list entry and it mush have the same parent as the new list entry '\" .TP \fB\-before\fI beforeWhich\fR '\" Insert the new list entry before the entry identified by \fIbeforeWhich\fR. \fIbeforeWhich\fR must be a valid list entry and it mush have the same parent as the new list entry '\" .TP \fB\-data\fI string\fR '\" Specifies a string to associate with this list entry. This string can be queried by the \fBinfo\fR widget command. The application programmer can use the \fB\-data\fR option to associate the list entry with the data it represents. '\" .TP \fB\-itemtype\fI type\fR '\" Specifies the type of display item to be display for the new list entry. \fBtype\fR must be a valid display item type. Currently the available display item types are \fBimagetext\fR, \fBtext\fR, and \fBwindow\fR. If this option is not specified, then by default the type specified by this HList widget's \fB\-itemtype\fR option is used. '\" .TP \fB\-state\fR '\" Specifies whether this entry can be selected or invoked by the user. Must be either \fBnormal\fR or \fBdisabled\fR. '\" .RE '\" The \fBadd\fR widget command accepts additional configuration options to configure the display item associated with this list entry. The set of additional configuration options depends on the type of the display item given by the \fB\-itemtype\fR option. Please see the \fBtixDisplayStyle\fR manual page for a list of the configuration options for each of the display item types. '\" .TP \fIpathName \fBaddchild\fI parentPath \fR?\fIoption value ... \fR? '\" Adds a new child entry to the children list of the list entry identified by \fIparentPath\fR. Or, if \fIparentPath\fR is set to be the empty string, then creates a new toplevel entry. The name of the new list entry will be a unique name automatically generated by the HList widget. Usually if \fIparentPath\fR is \fBfoo\fR, then the entryPath of the new entry will be \fBfoo.1\fR, \fBfoo.2\fR, ... etc. This command returns the entryPath of the newly created list entry. \fIoption\fR can be any option for the \fBadd\fR widget command. '\" .TP \fIpathName \fBanchor set \fIentryPath\fR '\" Sets the anchor to the list entry identified by \fIentryPath\fR. The anchor is the end of the selection that is fixed while the user is dragging out a selection with the mouse. '\" .TP \fIpathName \fBanchor clear\fR '\" Removes the anchor, if any, from this HList widget. This only removes the surrounding highlights of the anchor entry and does not affect its selection status. '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixHList\fR command. '\" .TP \fIpathName \fBcolumn width \fIcol\fR ?\fI\-char\fR? ?\fIwidth\fR? '\" Querys or sets the width of a the column \fIcol\fR in the HList widget. The value of \fIcol\fR is zero-based: 0 stands for the first column, 1 stands for the second, and so on. If no further parameters are given, returns the current width of this column (in number of pixels). Additional parameters can be given to set the width of this column: .PP .RS .TP \fIpathName \fBcolumn width \fIcol\fR \fB{}\fR '\" An empty string indicates that the width of the column should be just wide enough to display the widest element in this column. In this case, the width of this column may change as a result of the elements in this column changing their sizes. '\" .TP \fIpathName \fBcolumn width \fIcol\fR \fIwidth\fR '\" \fIwidth\fR must be in a form accepted by \fBTk_GetPixels(3)\fR. '\" .TP \fIpathName \fBcolumn width \fIcol\fR \fB-char\fR \fInChars\fR '\" The width is set to be the average width occupied by \fInChars\fR number of characters of the font specified by the \fB\-font\fR option of this HList widget. '\" .RE .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixHList\fR command. '\" .TP \fIpathName \fBdelete\fR \fIoption\fR ?\fIentryPath\fR? Delete one or more list entries. \fIoption\fR may be one of the following: .RS .TP \fBall\fR Delete all entries in the HList. In this case the \fIentryPath\fR does not need to be specified. '\" .TP \fBentry\fR Delete the entry specified by \fIentryPath\fR and all its offsprings, if any. '\" .TP \fBoffsprings\fR Delete all the offsprings, if any, of the entry specified by \fIentryPath\fR. However, \fIentryPath\fR itself is not deleted. '\" .TP \fBsiblings\fR Delete all the list entries that share the same parent with the entry specified by \fIentryPath\fR. However, \fIentryPath\fR itself is not deleted. .RE '\" '\" .TP \fIpathName \fBdragsite set \fIentryPath\fR '\" Sets the dragsite to the list entry identified by \fIentryPath\fR. The dragsite is used to indicate the source of a drag-and-drop action. Currently drag-and-drop functionality has not been implemented in Tix yet. '\" .TP \fIpathName \fBdragsite clear\fR Remove the dragsite, if any, from the this HList widget. This only removes the surrounding highlights of the dragsite entry and does not affect its selection status. '\" '\" .TP \fIpathName \fBdropsite set \fIentryPath\fR '\" Sets the dropsite to the list entry identified by \fIentryPath\fR. The dropsite is used to indicate the target of a grag-and-drop action. Currently drag-and-drop functionality has not been implemented in Tix yet. '\" .TP \fIpathName \fBdropsite clear\fR '\" Remove the dropsite, if any, from the this HList widget. This only removes the surrounding highlights of the dropsite entry and does not affect its selection status. '\" .TP \fIpathName \fBentrycget\fR \fI entryPath option\fR '\" Returns the current value of the configuration option given by \fIoption\fR for the entry indentfied by \fIentryPath\fR. \fIOption\fR may have any of the values accepted by the \fBadd\fR widget command. '\" .TP \fIpathName \fBentryconfigure\fI entryPath \fR?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the list entry indentfied by \fIentryPath\fR. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIentryPath\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list.) If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR 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. \fIOption\fR may have any of the values accepted by the \fBadd\fR or \fBaddchild\fR widget command. The exact set of options depends on the value of the \fB\-itemtype\fR option passed to the the \fBadd\fR or \fBaddchild\fR widget command when this list entry is created. '\" '\" .TP \fIpathName \fBheader \fIoption\fR \fIcol\fR ?\fIargs ...\fR? '\" Manipulates the header items of this HList widget. If the \fB\-header\fR option of this HList widget is set to true, then a header item is displayed at the top of each column. The \fIcol\fR argument for this command must be a valid integer. 0 indicates the first column, 1 the second column, ... and so on. This command supports the following options: '\" .RS .TP \fIpathName \fBheader cget\fR \fIcol\fR \fIoption\fR '\" If the \fIcol\fR-th column has a header display item, returns the value of the specified \fIoption\fR of the header item. If the header doesn't exist, returns an error. '\" .TP \fIpathName \fBheader configure\fR \fIcol\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the header display item of the \fIcol\fR-th column. The header item must exist, or an error will result. If no \fIoption\fR is specified, returns a list describing all of the available options for the header display item (see \fBTk_ConfigureInfo(3)\fR for information on the format of this list.) If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR 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. \fIOption\fR may have any of the values accepted by the \fBheader create\fR widget command. The exact set of options depends on the value of the \fB\-itemtype\fR option passed to the the \fBheader create\fR widget command when this display item was created. '\" .TP \fIpathName \fBheader create\fR \fIcol\fR ?\fI\-itemtype type\fR? ?\fIoption value ...\fR? '\" Creates a new display item as the header for the \fIcol\fR-th column. If an header display item already exists for this column, it will be replaced by the new item. An optional parameter \fI\-itemtype\fR can be used to specify what type of display item should be created. If the \fI\-itemtype\fR is not given, then by default the type specified by this HList widget's \fB\-itemtype\fR option is used. Additional parameters, in \fIoption-value\fR pairs, can be passed to configure the appearance of the display item. Each \fIoption-value\fR pair must be a valid option for this type of display item or one of the following: .RS '\" .TP \fB\-borderwidth\fR '\" Specifies the border width of this header item. '\" .TP \fB\-headerbackground\fR '\" Specifies the background color of this header item. '\" .TP \fB\-relief\fR '\" Specifies the relief type of the border of this header item. '\" .RE '\" .TP \fIpathName \fBheader delete \fIcol\fR '\" Deletes the header display item for the \fIcol\fR-th column. '\" .TP \fIpathName \fBheader exists \fIcol\fR '\" Return true if an header display item exists for the \fIcol\fR-th column; return false otherwise. '\" .TP \fIpathName \fBheader size \fIentryPath\fR '\" If an header display item exists for the \fIcol\fR-th column , returns its size in a two element list of the form {\fIwidth height\fR}; returns an error if the header display item does not exist. '\" .RE '\" .TP \fIpathName \fBhide \fIoption ?entryPath?\fR '\" Makes some of entries invisible invisible without deleting them. \fIOption\fR can be one of the following: .RS .TP \fBentry\fR Hides the list entry identified by \fIentryPath\fR. .PP Currently only the \fBentry\fR option is supported. Other options will be added in the next release. .RE '\" .TP \fIpathName \fBindicator \fIoption\fR entryPath ?\fIargs ...\fR? '\" Manipulates the indicator on the list entries. An indicator is usually a small display item (such as an image) that is displayed to the left to an entry to indicate the status of the entry. For example, it may be used to indicator whether a directory is opened or closed. \fIoption\fR can be one of the following: '\" .RS .TP \fIpathName \fBindicator cget\fR \fIentryPath\fR \fIoption\fR '\" If the list entry given by \fIentryPath\fR has an indicator, returns the value of the specified \fIoption\fR of the indicator. If the indicator doesn't exist, returns an error. '\" .TP \fIpathName \fBindicator configure\fR \fIentryPath\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the indicator display item of the entry specified by \fIentryPath\fR. The indicator item must exist, or an error will result. If no \fIoption\fR is specified, returns a list describing all of the available options for the indicator display item (see \fBTk_ConfigureInfo(3)\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR 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. \fIOption\fR may have any of the values accepted by the \fBindicator create\fR widget command. The exact set of options depends on the value of the \fB\-itemtype\fR option passed to the the \fBindicator create\fR widget command when this display item was created. '\" .TP \fIpathName \fBindicator create\fR \fIentryPath\fR ?\fI\-itemtype type\fR? ?\fIoption value ...\fR? '\" Creates a new display item as the indicator for the entry specified by \fIentryPath\fR. If an indicator display item already exists for this entry, it will be replaced by the new item. An optional parameter \fI\-itemtype\fR can be used to specify what type of display item should be created. If the \fI\-itemtype\fR is not given, then by default the type specified by this HList widget's \fB\-itemtype\fR option is used. Additional parameters, in \fIoption-value\fR pairs, can be passed to configure the appearance of the display item. Each \fIoption-value\fR pair must be a valid option for this type of display item. '\" .TP \fIpathName \fBindicator delete \fIentryPath\fR '\" Deletes the indicator display item for the entry given by \fIentryPath\fR. '\" .TP \fIpathName \fBindicator exists \fIentryPath\fR '\" Return true if an indicator display item exists for the entry given by \fIentryPath\fR; return false otherwise. '\" .TP \fIpathName \fBindicator size \fIentryPath\fR '\" If an indicator display item exists for the entry given by \fIentryPath\fR, returns its size in a two element list of the form {\fIwidth height\fR}; returns an error if the indicator display item does not exist. '\" .RE '\" .TP \fIpathName \fBinfo \fIoption\fR \fIarg ...\fR '\" Query information about the HList widget. \fIoption\fR can be one of the following: .RS .TP \fIpathName \fBinfo anchor\fR '\" Returns the entryPath of the current anchor, if any, of the HList widget. If the anchor is not set, returns the empty string. '\" .TP \fIpathName \fBinfo bbox\fR \fIentryPath\fR '\" Returns a list of four numbers describing the visible bounding box of the entry given \fIentryPath\fR. The first two elements of the list give the x and y coordinates of the upper-left corner of the screen area covered by the entry (specified in pixels relative to the widget) and the last two elements give the lower-right corner of the area, in pixels. If no part of the entry given by index is visible on the screen then the result is an empty string; if the entry is partially visible, the result gives the only the visible area of the entry. '\" .TP \fIpathName \fBinfo children\fR ?\fIentryPath\fR? '\" If \fIentrpyPath\fR is given, returns a list of the entryPath's of its children entries. Otherwise returns a list of the toplevel entryPath's. '\" .TP \fIpathName \fBinfo data\fR ?\fIentryPath\fR? '\" Returns the data associated with \fIentryPath\fR. '\" .TP \fIpathName \fBinfo dragsite\fR '\" Returns the entryPath of the current dragsite, if any, of the HList widget. If the dragsite is not set, returns the empty string. '\" .TP \fIpathName \fBinfo dropsite\fR '\" Returns the entryPath of the current dropsite, if any, of the HList widget. If the dropsite is not set, returns the empty string. '\" .TP \fIpathName \fBinfo exists\fR \fIentryPath\fR Returns a boolean value indicating whether the list entry \fIentrpyPath\fR exists. '\" .TP \fIpathName \fBinfo hidden\fR \fIentryPath\fR '\" Returns a boolean value indicating whether the list entry \fBentrpyPath\fR is hidden or not. '\" .TP \fIpathName \fBinfo next\fR \fIentryPath\fR Returns the entryPath of the list entry, if any, immediately below this list entry. If this entry is already at the bottom of the HList widget, returns an empty string. '\" .TP \fIpathName \fBinfo parent\fR \fIentryPath\fR Returns the name of the parent of the list entry identified by \fIentrpyPath\fR. If \fIentrpyPath\fR is a toplevel list entry, returns the empty string. '\" .TP \fIpathName \fBinfo prev\fR \fIentryPath\fR '\" Returns the entryPath of the list entry, if any, immediately above this list entry. If this entry is already at the top of the HList widget, returns an empty string. '\" .TP \fIpathName \fBinfo selection\fR '\" Returns a list of selected entries in the HList widget. If no entries are selectd, returns an empty string. .RE '\" .TP \fIpathName \fBitem \fIoption\fR ?\fIargs ...\fR? '\" Creates and configures the display items at individual columns the entries. The form of additional of arguments depends on the choice of \fIoption\fR: '\" .RS '\" .TP \fIpathName \fBitem cget \fIentryPath col option\fR '\" '\" Returns the current value of the configure \fIoption\fR of the display item at the column designated by \fIcol\fR of the entry specified by \fIentryPath\fR. '\" .TP \fIpathName \fBitem configure \fIentryPath col\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the display item at the column designated by \fIcol\fR of the entry specified by \fIentryPath\fR. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIentryPath\fR (see \fBTk_ConfigureInfo(3)\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR 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. \fIOption\fR may have any of the values accepted by the \fBitem create\fR widget command. The exact set of options depends on the value of the \fB\-itemtype\fR option passed to the the \fBitem create\fR widget command when this display item was created. '\" .TP \fIpathName \fBitem create \fIentryPath col\fR ?\fI\-itemtype type\fR? ?\fIoption value ...\fR? '\" '\" Creates a new display item at the column designated by \fIcol\fR of the entry specified by \fIentryPath\fR. An optional parameter \fI\-itemtype\fR can be used to specify what type of display items should be created. If the \fI\-itemtype\fR is not specified, then by default the type specified by this HList widget's \fB\-itemtype\fR option is used. Additional parameters, in \fIoption-value\fR pairs, can be passed to configure the appearance of the display item. Each \fIoption- value\fR pair must be a valid option for this type of display item. '\" .TP \fIpathName \fBitem delete \fIentryPath col\fR '\" Deletes the display item at the column designated by \fIcol\fR of the entry specified by \fIentryPath\fR. '\" .TP \fIpathName \fBitem exists \fIentryPath col\fR '\" Returns true if there is a display item at the column designated by \fIcol\fR of the entry specified by \fIentryPath\fR; returns false otherwise. '\" .RE '\" .TP \fIpathName \fBnearest \fIy\fR '\" Given a y-coordinate within the HList window, this command returns the entryPath of the (visible) HList element nearest to that y-coordinate. '\" '\" .TP \fIpathName \fBsee \fIentryPath\fR '\" Adjust the view in the HList so that the entry given by \fIentryPath\fR is visible. If the entry is already visible then the command has no effect; if the entry is near one edge of the window then the HList scrolls to bring the element into view at the edge; otherwise the HList widget scrolls to center the entry. '\" .TP \fIpathName \fBselection \fIoption\fR \fIarg ...\fR '\" This command is used to adjust the selection within a HList widget. It has several forms, depending on \fIoption\fR: .RS '\" .TP \fIpathName \fBselection clear \fR?\fIfrom\fR? ?\fIto\fR? '\" When no extra arguments are given, deselects all of the list entrie(s) in this HList widget. When only \fIfrom\fR is given, only the list entry identified by \fIfrom\fR is deselected. When both \fIfrom\fR and \fIto\fR are given, deselects all of the list entrie(s) between between \fIfrom\fR and \fIto\fR, inclusive, without affecting the selection state of entries outside that range. '\" .TP \fIpathName \fBselection get\fR '\" This is an alias for the \fBinfo selection\fR widget command. , .TP \fIpathName \fBselection includes \fIentryPath\fR '\" Returns 1 if the list entry indicated by \fIentryPath\fR is currently selected; returns 0 otherwise. '\" .TP \fIpathName \fBselection set \fIfrom\fR ?\fIto\fR? '\" Selects all of the list entrie(s) between between \fIfrom\fR and \fIto\fR, inclusive, without affecting the selection state of entries outside that range. When only \fIfrom\fR is given, only the list entry identified by \fIfrom\fR is selected. .RE '\" .TP \fIpathName \fBshow \fIoption ?entryPath?\fR '\" Show the entries that are hidden by the \fBhide\fR command, \fIoption\fR can be one of the following: .RS .TP \fBentry\fR Shows the list entry identified by \fIentryPath\fR. .PP Currently only the \fBentry\fR option is supported. Other options will be added in future releases. .RE '\" .TP \fIpathName \fBxview \fIargs\fR This command is used to query and change the horizontal position of the information in the widget's window. It can take any of the following forms: .RS .TP \fIpathName \fBxview\fR '\" Returns a list containing two elements. Each element is a real fraction between 0 and 1; together they describe the horizontal span that is visible in the window. For example, if the first element is .2 and the second element is .6, 20% of the HList entry is off-screen to the left, the middle 40% is visible in the window, and 40% of the entry is off-screen to the right. These are the same values passed to scrollbars via the \fB\-xscrollcommand\fR option. .TP \fIpathName \fBxview\fR \fIentryPath\fR '\" Adjusts the view in the window so that the list entry identified by \fIentryPath\fR is aligned to the left edge of the window. .TP \fIpathName \fBxview moveto\fI fraction\fR '\" Adjusts the view in the window so that \fIfraction\fR of the total width of the HList is off-screen to the left. \fIfraction\fR must be a fraction between 0 and 1. '\" .TP \fIpathName \fBxview scroll \fInumber what\fR '\" This command shifts the view in the window left or right according to \fInumber\fR and \fIwhat\fR. \fINumber\fR must be an integer. \fIWhat\fR must be either \fBunits\fR or \fBpages\fR or an abbreviation of one of these. If \fIwhat\fR is \fBunits\fR, the view adjusts left or right by \fInumber\fR character units (the width of the \fB0\fR character) on the display; if it is \fBpages\fR then the view adjusts by \fInumber\fR screenfuls. If \fInumber\fR is negative then characters farther to the left become visible; if it is positive then characters farther to the right become visible. '\" .RE '\" .TP \fIpathName \fByview \fI?args\fR? '\" This command is used to query and change the vertical position of the entries in the widget's window. It can take any of the following forms: '\" .RS .TP \fIpathName \fByview\fR '\" Returns a list containing two elements, both of which are real fractions between 0 and 1. The first element gives the position of the list element at the top of the window, relative to the HList as a whole (0.5 means it is halfway through the HList, for example). The second element gives the position of the list entry just after the last one in the window, relative to the HList as a whole. These are the same values passed to scrollbars via the \fB\-yscrollcommand\fR option. '\" .TP \fIpathName \fByview\fR \fIentryPath\fR '\" Adjusts the view in the window so that the list entry given by \fIentryPath\fR is displayed at the top of the window. '\" .TP \fIpathName \fByview moveto\fI fraction\fR '\" Adjusts the view in the window so that the list entry given by \fIfraction\fR appears at the top of the window. \fIFraction\fR is a fraction between 0 and 1; 0 indicates the first entry in the HList, 0.33 indicates the entry one-third the way through the HList, and so on. .TP \fIpathName \fByview scroll \fInumber what\fR '\" This command adjust the view in the window up or down according to \fInumber\fR and \fIwhat\fR. \fINumber\fR must be an integer. \fIWhat\fR must be either \fBunits\fR or \fBpages\fR. If \fIwhat\fR is \fBunits\fR, the view adjusts up or down by \fInumber\fR lines; if it is \fBpages\fR then the view adjusts by \fInumber\fR screenfuls. If \fInumber\fR is negative then earlier entries become visible; if it is positive then later entries become visible. .RE '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP .IP [1] If the \fB\-selectmode\fR is "browse", when the user drags the mouse pointer over the list entries, the entry under the pointer will be highlighted and the \fB\-browsecmd\fR procedure will be called with one parameter, the entryPath of the highlighted entry. Only one entry can be highlighted at a time. The \fB\-command\fR procedure will be called when the user double-clicks on a list entry. '\" .IP [2] If the \fB\-selectmode\fR is "single", the entries will only be highlighted by mouse events. When a new list entry is highlighted, the \fB\-browsecmd\fR procedure will be called with one parameter indicating the highlighted list entry. The \fB\-command\fR procedure will be called when the user double-clicks on a list entry. '\" '\" .IP [3] If the \fB\-selectmode\fR is "multiple", when the user drags the mouse pointer over the list entries, all the entries under the pointer will be highlighted. However, only a contiguous region of list entries can be selected. When the highlighted area is changed, the \fB\-browsecmd\fR procedure will be called with an undefined parameter. It is the responsibility of the \fB\-browsecmd\fR procedure to find out the exact highlighted selection in the HList. The \fB\-command\fR procedure will be called when the user double-clicks on a list entry. '\" .IP [4] '\" If the \fB\-selectmode\fR is "extended", when the user drags the mouse pointer over the list entries, all the entries under the pointer will be highlighted. The user can also make disjointed selections using . When the highlighted area is changed, the \fB\-browsecmd\fR procedure will be called with an undefined parameter. It is the responsibility of the \fB\-browsecmd\fR procedure to find out the exact highlighted selection in the HList. The \fB\-command\fR procedure will be called when the user double-clicks on a list entry. '\" .IP [5] \fBArrow key bindings:\fR arrow key moves the anchor point to the item right on top of the current anchor item. arrow key moves the anchor point to the item right below the current anchor item. arrow key moves the anchor to the parent item of the current anchor item. moves the anchor to the first child of the current anchor item. If the current anchor item does not have any children, moves the anchor to the item right below the current anchor item. '\"---------------------------------------------------------------------- .SH EXAMPLE .PP This example demonstrates how to use an HList to store a file directory structure and respond to the user's browse events: .PP .CS tixHList .h -separator "/" \-browsecmd browse \-selectmode single \\ -itemtype text .h add / \-text / .h add /home \-text /home .h add /home/ioi \-text /home/ioi .h add /home/foo \-text /home/foo .h add /usr \-text /usr .h add /usr/lib \-text /usr/lib pack .h proc browse {file} { puts "$file browsed" } .CE '\" '\" .SH BUGS '\" The fact that the display item at column 0 is implicitly associated with the whole entry is probably a design bug. This was done for backward compatibility purposes. The result is that there is a large overlap between the \fBitem\fR command and the \fBadd\fR, \fBaddchild\fR, \fBentrycget\fR and \fBentryconfigure\fR commands. Whenever multiple columns exist, the programmer should use ONLY the \fBitem\fR command to create and configure the display items in each column; the \fBadd\fR, \fBaddchild\fR, \fBentrycget\fR and \fBentryconfigure\fR should be used ONLY to create and configure entries. '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n), Hierarchical Listbox Tix8.4.3/man/tixNBFrame.n0000664000122200012240000000630107232764445015341 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixNBFrame.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixNBFrame n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixNBFrame \- Create and manipulate Tix NoteBook Frame widgets '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixNBFrame \fIpathName \fR?\fIoptions\fR? '\" '\"---------------------------------------------------------------------- .SO \-background \-borderWidth \-cursor \-disabledForeground \-foreground \-font \-height \-highlightColor \-highlightThickness \-relief \-takeFocus \-width .SE '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-backpagecolor backPageColor BackPageColor Specifies the color for the extra space on the row of tabs which is not covered by any page tabs. '\"----------END '\" '\"----------BEGIN .OP \-focuscolor focusColor FocusColor Specifies the color for the focus highlight. '\"----------END '\" '\"----------BEGIN .OP \-inactivebackground inactiveBackground InactiveBackground Specifies the color for the inactive tabs (the active tab always have the same background color as the notebook). '\"----------END '\" '\"----------BEGIN .OP \-tabpadx tabPadX Pad The horizontal padding around the text labels on the page tabs. '\"----------END '\" '\"----------BEGIN .OP \-tabpady tabPadY Pad The vertical padding around the text labels on the page tabs. '\"----------END '\" '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" '\" The NBFrame widget is used privately inside the \fBTixNoteBook(n)\fR widget to display the page tabs. The application programmer should never create a NBFrame widget directly. The sole purpose of this maual page is to describe the options that can be used to configure the appearance of the TixNoteBook widget. .PP The name of the NBFrame subwidget inside the TixNoteBook widget is called \fBnbframe\fR. It can be accessed using the \fBsubwidget\fR command of the TixNoteBook widget or the \fB\-options\fR switch. See below for an example. .PP '\"---------------------------------------------------------------------- .SH EXAMPLE '\" .CS set nb [tixNoteBook .nb -options { nbframe.BackPageColor gray60 }] $nb subwidget nbframe config -font fixed $nb add page1 -label "Page1" set page [$nb subwidget page1] button $page.b1 pack $page.b1 pack $nb -expand yes -fill both .CE '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n), tixNoteBook(n) Tix8.4.3/man/tixDestroy.n0000664000122200012240000000200107232700347015500 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixDestroy.n,v 1.1 2001/01/22 00:37:59 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros .TH tixDestroy n 4.0 Tix "Tix Built-In Commands" .BS '\" .SH NAME tixDestroy \- Destroy Tix Objects '\" .SH SYNOPSIS \fBtixDestroy\fR \fIobjectName\fR '\" .BE .SH DESCRIPTION .PP The \fBtixDestroy\fR destroys a Tix object whose class is declared by the \fBtixClass\fR keyword. When the object is destroyed, its \fBDestructor\fR function is called and the memory allocated for this object is freed. '\" .SH KEYWORDS Tix, Object Tix8.4.3/man/GNUmakefile0000664000122200012240000000222407232764322015227 0ustar jeffhjeffh00000000000000# GNUmakefile -- # # This GNUmakefile requires GNU make. It builds the HTML version # of the Tix man pages. You normally do not need to use this # GNUmakefile, as all the HTML man pages are already included in # the Tix source distribution. # # You need to use this file when you are create a Tix source # distribution from the Tix CVS tree. See # ../docs/MakeSrcDist.txt for more information. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: GNUmakefile,v 1.1 2001/01/22 08:01:22 ioilam Exp $ TCLSH = tclsh MAN2HTML = ../tools/tix-man2html.tcl UPDATEIDX = ../tools/man2html-fixindex.tcl NROFF_SRCS = $(shell echo *.n *.1) all: html/contents.htm html/contents.htm: ${NROFF_SRCS} ${MAN2HTML} ${UPDATEIDX} GNUmakefile ${TCLSH} ${MAN2HTML} --htmldir=html --srcdir=../.. ${TCLSH} ${UPDATEIDX} html distclean: -cd html; rm -rf *.htm *~ Keywords UserCmd -cd html; rm -rf TclCmd TclLib -cd html; rm -rf TkCmd TkLib -cd html; rm -rf TixCmd TixLib test: env TEST_ONLY=true $(MAKE) all full: env WITH_TCL_TK=true $(MAKE) all Tix8.4.3/man/tixMeter.n0000664000122200012240000001025307232764445015144 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixMeter.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixMeter n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixMeter \- Create and manipulate Tix Meter widgets '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixMeter \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS None. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The Meter widget supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-fillcolor fillColor FillColor The color of the progress bar. '\"----------END '\"----------BEGIN .OP \-text text Text The text string to place inside the progress bar. If not specified, then the text string will be the percentage value specified by the \fB\-value\fR option. '\"----------END '\"----------BEGIN .OP \-value value Value A real value that specifies the progress. Must be between 0.0 to 1.0. '\"----------END '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixMeter\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a Meter widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the Meter widget such as its cursor and relief. The Meter widget can be used to show the pregress of a background job which may take a long time to execute. '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixMeter\fR command creates a new Tcl command whose name is the same as the path name of the Meter widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the Meter widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for Meter widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixMeter\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixMeter\fR command. '\" '\" '\" '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP There is no bindings for the Meter widget. '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n), Meter Widget Tix8.4.3/man/tixOptionMenu.n0000664000122200012240000002055007232764445016166 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixOptionMenu.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixOptionMenu n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixOptionMenu \- Create and manipulate tixOptionMenu widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixOptionMenu \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixOptionMenu\fR class is derived from the \fBTixLabelWidget\fR class and inherits all the commands, options and subwidgets of its super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The OptionMenu widget supports all the standard Tix widget options. See the \fBTix-Options(n)\fR manual entry for details on the standard Tix widget options. '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-command command Command Specifies the command to be called when the \fB\-value\fR option of the OptionMenu is changed. The command will be called with one arguments -- the new value of the OptionMenu widget. '\"----------END '\" '\"----------BEGIN .OP \-disablecallback disableCallback DisableCallback A boolean value indicating whether callbacks should be disabled. When set to true, the TCL command specified by the \fB\-command\fR option is not executed when the \fB\-value\fR of the OptionMenu widget changes. '\"----------END '\" '\"----------BEGIN .OP \-dynamicgeometry dynamicGeometry DynamicGeometry A boolean value indicating whether the size of the \fBmenubutton\fR subwidget should change dynamically to match the width of the currently selected menu entry. If set to false (the default), the the size of the menubutton subwidget will be wide enough to display every menu entry fully and does not change when the user selects different entries. '\"----------END '\" '\"----------BEGIN .OP \-label label Label Specifies the string to display as the label of this OptionMenu widget. '\"----------END '\" '\"----------BEGIN .OP \-labelside labelSide LabelSide Specifies where the label should be displayed relative to the entry subwidget. Valid options are: \fBtop\fR, \fBleft\fR, \fBright\fR, \fBbottom\fR, \fBnone\fR or \fBacrosstop\fR. '\"----------END '\" '\"----------BEGIN .OP \-state state State Specifies the whether the OptionMenu widget is normal or disabled. Only the values "normal" and "disabled" are recognized. '\"----------END '\" '\"----------BEGIN .OP \-value value Value Specifies the value of the OptionMenu. The value of the OptionMenu widget is the name of the item currently displayed by its \fBmenubutton\fR subwidget. '\"----------END '\" '\"----------BEGIN .OP \-variable variable Variable Specifies the global variable in which the value of the OptionMenu should be stored. The value of the OptionMenu will be automatically updated when this variable is changed. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBmenu\fR Class: \fBMenu\fR .fi .IP The menu subwidget, which is popped up when the user press the \fBmenubutton\fR subwidget. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBmenubutton\fR Class: \fBMenubutton\fR .fi .IP The menubutton subwidget. '\"----------END .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixOptionMenu\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a OptionMenu widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the OptionMenu such as its cursor and relief. '\" '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixOptionMenu\fR command creates a new Tcl command whose name is the same as the path name of the OptionMenu's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the OptionMenu widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for OptionMenu widgets: '\" '\" .TP \fIpathName \fBadd\fR \fItype name \fR?\fIoption value ...\fR? '\" Adds a new item into the OptionMenu widget. \fItype\fR must be either \fBcommand\fR or \fBseparator\fR. The \fIoptions\fR may be any of the valid options for the \fBcommand\fR or \fBseparator\fR menu entry types for the TK \fBmenu\fR widget class, except \fB\-command\fR. '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixOptionMenu\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixOptionMenu\fR command. '\" .TP \fIpathName \fBdelete\fR \fIname\fR '\" Deletes the menu entry identified by \fIname\fR. '\" '\" .TP \fIpathName \fBdisable\fR \fIname\fR '\" Disables the menu entry identified by \fIname\fR. '\" .TP \fIpathName \fBenable\fR \fIname\fR '\" Enables the menu entry identified by \fIname\fR. '\" '\" .TP \fIpathName \fBentrycget\fR \fIname option\fR '\" Returns the current value of the configuration option given by \fIoption\fR in the menu entry identified by \fIname\fR. \fIOption\fR may have any of the values accepted by the \fBadd\fR widget command. '\" .TP \fIpathName \fBentryconfigure\fI name\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the menu entry identified by \fIname\fR. If no \fIoption\fR is specified, returns a list describing all of the available options for the menu entry (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR 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. \fIOption\fR may have any of the values accepted by the \fBadd\fR widget command. '\" .TP \fIpathName \fBentries\fR '\" Returns the names of all the entries currently in the OptionMenu widget. '\" .TP \fIpathName \fBsubwidget \fIname ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\" '\"---------------------------------------------------------------------- '\".SH BINDINGS '\".PP '\" '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixExFileSelectDialog.n0000664000122200012240000001211007232764445017516 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixExFileSelectDialog.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixExFileSelectDialog n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixExFileSelectDialog \- Create and manipulate tixExFileSelectDialog widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixExFileSelectDialog \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixExFileSelectDialog\fR class does not have a super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" \fBTixExFileSelectDialog\fR supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-command command Command Specifies the command to be called when the user chooses on a filename (usually by selecting the filename and clicking on the "OK" button"). The command is called with one argument, the complete pathname of the file. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBfsbox\fR Class: \fBTixExFileSelectBox\fR .fi .IP The ExFileSelectBox subwidget embedded inside the ExFileSelectDialog. '\"----------END .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixExFileSelectDialog\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a ExFileSelectDialog widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the ExFileSelectDialog such as its cursor and relief. The ExFileSelectDialog widget provides an convenient method for the user to select files. The style of the ExFileSelectDialog widget is very similar to the standard file dialog in MS Windows 3.1. '\" '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixExFileSelectDialog\fR command creates a new Tcl command whose name is the same as the path name of the ExFileSelectDialog's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the ExFileSelectDialog widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for ExFileSelectDialog widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixExFileSelectDialog\fR command. '\" '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixExFileSelectDialog\fR command. '\" '\" .TP \fIpathName \fBpopdown\fR '\" Withdraws the ExFileSelectDialog from the screen. '\" .TP \fIpathName \fBpopup\fR '\" Pops up the ExFileSelectDialog on the screen. '\" '\" .TP \fIpathName \fBsubwidget \fIname ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\" '\"---------------------------------------------------------------------- '\".SH BINDINGS '\".PP '\" '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixDirSelectDialog.n0000664000122200012240000001210207232764445017061 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixDirSelectDialog.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixDirSelectDialog n 4.1 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixDirSelectDialog \- Create and manipulate directory selection dialogs. '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixDirSelectDialog \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" \fBTixDirSelectDialog\fR supports all the standard options of a toplevel widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-command command Command Specifies the command to be called when the user selects a directory in the dialog box. The command is called with one extra argument, the complete pathname of the directory. If the user cancels the selection, this command is not called. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBdirbox\fR Class: \fBTixDirSelectBox\fR .fi .IP The DirSelectBox widget that consists of the main part of the dialog. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBcancel\fR Class: \fBButton\fR .fi .IP The "Cancel" button. '\"----------END '\" '\" '\"----------BEGIN .LP .nf Name: \fBok\fR Class: \fBButon\fR .fi .IP The "OK" button. '\"----------END '\" .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixDirSelectDialog\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a DirSelectDialog widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the DirSelectDialog such as its cursor and relief. 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. '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixDirSelectDialog\fR command creates a new Tcl command whose name is the same as the path name of the DirSelectDialog's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the DirSelectDialog widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for DirSelectDialog widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixDirSelectDialog\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixDirSelectDialog\fR command. '\" .TP \fIpathName \fBpopup\fR '\" Pops up the DirSelectDialog widget on the screen. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" .SH EXAMPLE '\" .CS set dlg [tixDirSelectDialog .dlg -command SelectDir] $dlg popup proc SelectDir {dir} { puts "You have selected \\"$dir\\"" } .CE '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixPanedWindow.n0000664000122200012240000002563207232764445016316 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixPanedWindow.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixPanedWindow n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixPanedWindow \- Create and manipulate tixPanedWindow widgets '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixPanedWindow \fIpathName \fR?\fIoptions\fR? '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" The PanedWindow widget supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .LP .nf '\" Name: \fBcommand\fR Class: \fBCommand\fR Switch: \fB\-command\fR '\" .fi .IP '\" Specifies the command to invoke when the panes change their sizes. This command is called with a list of integers that record the new sizes of the panes. The sizes of the panes are listed in the order of the panes' creation. '\"----------END '\" '\"----------BEGIN .OP \-dynamicgeometry dynamicGeometry DynamicGeometry '\" If set to true, the size of the PanedWindow will dynamically change if the size of any of its panes changes. Otherwise, the size of the PanedWindow will only increase when size of any of its panes changes and will not decrease. The default value is true. '\"----------END '\" '\"----------BEGIN .OP \-handleactivebg handleActiveBg HandleActiveBg '\" Specifies the active background color of the resize handles. When the mouse cursor enters a resize handle, the resize handle will adopt the active background color. '\"----------END '\" '\" '\"----------BEGIN .OP \-handlebg handleBg Background '\" Specifies the normal background color of the resize handles. '\"----------END '\" '\"----------BEGIN .OP \-height height Height Specifies the desired height for the window. '\"----------END '\" '\"----------BEGIN .OP \-orientation orientation Orientation Specifies the orientation of the panes. Must be either \fBvertical\fR or \fBhorizontal\fR. '\"----------END '\" '\"----------BEGIN .OP "-paneborderwidth or -panebd" paneBorderWidth PaneBorderWidth Specifies the border width of the panes. '\"----------END '\" '\"----------BEGIN .OP \-panerelief paneRelief PaneRelief Specifies the border relief of the panes. '\"----------END '\" '\"----------BEGIN .OP \-separatoractivebg separatorActiveBg SeparatorActiveBg Specifies the active background color of the separators. When the user grabs a resize handle, the separators will adopt the active background color. '\"----------END '\" '\"----------BEGIN .OP \-separatorbg separatorBg Background '\" Specifies the normal background color of the separators. '\"----------END '\" '\" '\"----------BEGIN .OP \-width width Width Specifies the desired width for the window. '\"----------END '\"---------------------------------------------------------------------- .SH SUBWIDGETS .PP '\" All the pane subwidgets created as a result of the \fBadd\fR command can be accessed by the \fBsubwidget\fR command. They are identified by the \fBpaneName\fR parameter to the \fBadd\fR command. '\" .BE '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION .PP '\" The \fBtixPanedWindow\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a PanedWindow widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the PanedWindow widget such as its cursor and relief. '\" .PP '\" The PanedWindow widget allows the user to interactively manipulate the sizes of several panes. The panes can be arranged either vertically or horizontally. Each individual pane may have upper and lower limits of its size. The user changes the sizes of the panes by dragging the resize handle between two panes. '\" '\"---------------------------------------------------------------------- .SH "WIDGET COMMAND" '\" .PP '\" The \fBtixPanedWindow\fR command creates a new Tcl command whose name is the same as the path name of the PanedWindow widget's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the frame widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for PanedWindow widgets: '\" .TP \fIpathName \fBadd\fI paneName \fR?\fIoption value ...\fR? '\" Adds a new pane subwidget with the name \fIpaneName\fR into the PanedWindow widget. Additional configuration options can be given to configure the new button subwidget. Three configuration options are supported: .RS '\" .TP \fB\-after\fR \fIpane\fR '\" Specifies that the new pane should be placed after \fIpane\fR in the list of panes in this PanedWindow widget. '\" .TP \fB\-at\fR \fIinteger\fR '\" Specifies the position of the new pane in the list of panes in this PanedWindow widget. \fB0\fR means the first position, \fB1\fR means the second, and so on. In addition, \fBend\fR means the end of the list. '\" .TP \fB\-before\fR \fIpane\fR '\" Specifies that the new pane should be placed before \fIpane\fR in the list of panes in this PanedWindow widget. '\" .TP \fB\-expand\fR \fIfactor\fR '\" Specifies the \fBexpand/shrink factor\fR of this pane. \fIFactor\fR must be a non-negative floating point number. The default value is 0.0. The expand/shrink factor is used to calculate how much each pane should grow or shrink when the size of the PanedWindow main window is changed. When the main window expands/shrinks by \fIn\fR pixels, then pane \fIi\fR will grow/shrink by about \fIn * factor(i) / summation(factors)\fR, where \fIfactor(i)\fR is the expand/shrink factor of pane i and \fIsummation(factors)\fR is the summation of the expand/shrink factors of all the panes. If \fIsummation(factors)\fR is 0.0, however, only the last visible pane will be grown or shrunk. '\" .TP \fB\-min\fR \fIinteger\fR '\" Specifies the minimum size, in pixels, of the new pane; the default is 0. '\" .TP \fB\-max\fR \fIinteger\fR Specifies the maximum size, in pixels, of the new pane; the default is 10000. '\" .TP \fB\-size\fR \fIinteger\fR Specifies the size, in pixels, of the new pane; if the \fB\-size\fR option is not given, or set to the empty string, the PanedWindow widget will use the natural size of the pane subwidget. '\" .RE '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may be \fB\-min\fR, \fB\-max\fR and/or \fB\-size\fR, or any option accepted by the Tk frame widget. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may be any of the non-static options of the PanedWindow widget. '\" .TP \fIpathName \fBdelete\fR \fIpaneName\fR '\" Removes the pane given by \fIpaneName\fR and deletes its contents. '\" .TP \fIpathName \fBforget\fR \fIpaneName\fR '\" Removes the pane given by \fIpaneName\fR but does not delete its contents. This pane can be later added back to the PanedWindow widget by the \fBmanage\fR method. '\" .TP \fIpathName \fBmanage\fR \fIpaneName \fR?\fIoption value ...\fR? '\" Adds the pane given by \fIpaneName\fR back to the PanedWindow widget. \fIPaneName\fR must be already forgotten by the \fBforget\fR method. Additional \fIoption-value\fR pairs, same as those accepted by the \fBadd\fR method, can be given to control the appearance and position of the pane. '\" .TP \fIpathName \fBpanecget\fR \fIpaneName option\fR '\" Returns the current value of the configuration option given by \fIoption\fR in the pane given by \fIpaneName\fR. \fIOption\fR may have any of the values accepted by the \fBadd\fR widget command. '\" .TP \fIpathName \fBpaneconfigure\fI paneName \fR?\fIoption\fR? ?\fIvalue ...\fR? '\" '\" When no option is given, prints out the values of all options of this pane. If \fIoption\fR is specified with no \fIvalue\fR, then the command returns the current value of that option. If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given pane's option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may be \fB\-min\fR, \fB\-max\fR and/or \fB\-size\fR, or any option accepted by the Tk frame widget. The sizes of the panes may be changed as a result of calling the \fBpaneconfigure\fR command. '\" .TP \fIpathName \fBpanes\fR '\" Returns a list of the names of all panes. '\" .TP \fIpathName \fBsetsize\fR \fIpaneName newSize\fR ?\fIdirection\fR? '\" Sets the size of the pane specified by \fIpaneName\fR to \fInewSize\fR. The \fIdirection\fR parameter specifies in which direction the pane should grow/shrink. Possible values are \fBnext\fR: the pane will grow or shrink by moving the boundary between itself and the pane to its right or bottom; \fBprev\fR: the pane will grow or shrink by moving the boundary between itself and the pane to its left or top. '\" .TP \fIpathName \fBsubwidget \fIname ?args?\fR '\" When no options are given, returns the pathname of the subwidget of the specified name. .LP When options are given, the widget command of the specified subwidget will be called with these options. '\" '\"---------------------------------------------------------------------- .SH BINDINGS '\" The panes' sizes will be changed when the user drags the handles. The change in the panes' sizes may be subjected to the \fB\-min\fR, \fB\-max\fR and \fB\-size\fR options of the panes. '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS '\" TIX, Container Widget Tix8.4.3/man/man.macros0000664000122200012240000001153007232677611015142 0ustar jeffhjeffh00000000000000'\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?version? ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. The first argument is ignored and used for recording '\" the version when the .VS was added, so that the sidebars can be '\" found and removed when they reach a certain age. If another argument '\" is present, then a line break is forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" RCS: @(#) $Id: man.macros,v 1.2 2001/01/22 00:32:09 ioilam Exp $ '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ta \\n()Au \\n()Bu .ie !"\\$3"" \{\ \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$2"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. Tix8.4.3/man/tixButtonBox.n0000664000122200012240000001334507232764445016021 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixButtonBox.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixButtonBox n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixButtonBox \- Create and manipulate Tix ButtonBox widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixButtonBox \fIpathName \fR?\fIoptions\fR? '\" '\" '\" '\"---------------------------------------------------------------------- .SO \-anchor \-background \-cursor \-relief \-borderWidth '\" .SE '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\" '\"----------BEGIN .OP -orientation orientation Orientation \fBStatic Option\fR. Specifies the orientation of the button subwidgets. Only the values "horizontal" and "vertical" are recognized. '\"----------END '\" '\"----------BEGIN .OP \-padx padx Pad Specifies the horizontal padding between two neighboring button subwidgets in the ButtonBox widget. '\"----------END '\"----------BEGIN .OP \-pady pady Pad Specifies the vertical padding between two neighboring button subwidgets in the ButtonBox widget. '\"----------END '\" '\"----------BEGIN .OP \-state state State Specifies the state of all the buttons inside the ButtonBox widget. \fINote\fR: Setting this option using the \fIconfig\fR widget command will enable or disable all the buttons subwidgets. Original states of the individual buttons are \fInot\fR saved. Only the values "normal" and "disabled" are recognized. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS .PP '\" All the button subwidgets created as a result of the \fBadd\fR command can be accessed by the \fBsubwidget\fR command. They are identified by the \fBbuttonName\fR parameter to the \fBadd\fR command. Here is an example: .PP .CS set bbox [tixButtonBox .bbox] pack $bbox $bbox add eat -text Eat $bbox add sleep -text Sleep $bbox subwidget eat config -fg green $bbox subwidget sleep config -fg red .CE .BE '\" '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixButtonBox\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a ButtonBox widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the ButtonBox such as its cursor and relief. '\" .PP The ButtonBox widget can be used as a container widget to hold the ``action'' buttons in a dialog box. '\" '\"---------------------------------------------------------------------- .SH "WIDGET COMMAND" .PP '\" The \fBtixButtonBox\fR command creates a new Tcl command whose name is the same as the path name of the ButtonBox's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the ButtonBox widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for ButtonBox widgets: '\" .TP \fIpathName \fBadd \fIbuttonName \fR?\fIoption value ...\fR? '\" Add a new button subwidget with the name \fIbuttonName\fR into the ButtonBox widget. Additional configuration options can be given to configure the new button subwidget. '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixButtonBox\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixButtonBox\fR command. '\" '\" .TP \fIpathName \fBinvoke \fIbuttonName\fR '\" Invoke the button subwidget with the name \fIbuttonName\fR. '\" .TP \fIpathName \fBsubwidget \fI name ?args?\fR '\" When no additional arguments are given, returns the pathname of the subwidget of the specified name. When no additional arguments are given, the widget command of the specified subwidget will be called with these parameters. '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP TixButtonBox widgets have no default bindings. The button subwidgets retain their default Tk bindings. '\" '\" '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n), Container Widgets Tix8.4.3/man/tixMwm.n0000664000122200012240000000665307232764445014641 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixMwm.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixMwm n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" .SH NAME tixMwm - Communicate with the Motif(tm) window manager. '\" '\" '\" .SH SYNOPSIS \fBtixMwm\fI option pathName \fR?\fIargs\fR? .SH COMMAND OPTIONS .PP .TP \fBtixMwm decoration \fIpathName\fR ?\fIoption\fR? ?\fIvalue ...\fR? '\" When no options are given, this command returns the values of all the decorations options for the toplevel window with the \fIpathName\fR. When only one option is given without specifying the value, the current value of that option is returned. When more than one "option value" pairs are passed to this command, the specified values will be assigned to the corresponding options. As a result, the appearance of the Motif decorations around the toplevel window will be changed. Possible options are: \fB-border\fR, \fB-menu\fR, \fB-maximize\fR, \fB-minimize\fR, \fB-resizeh\fR and \fB-title\fR. The value must be a Boolean value. The values returned by this command are undefined when the window is not managed by mwm. '\" '\" .TP \fBtixMwm ismwmrunning \fIpathName\fR This returns true if mwm is running on the screen where the specified window is located, false otherwise. '\" '\" .TP \fBtixMwm protocol \fIpathName\fR '\" When no additional options are given, this command returns all protocols associated with this toplevel window. '\" .TP \fBtixMwm protocol \fIpathName \fBactivate\fI protocol_name\fR '\" Activate the mwm protocol message in mwm's menu. '\" .TP \fBtixMwm protocol \fIpathName \fBadd\fI protocol_name menu_message\fR '\" Add a new mwm protocol message for this toplevel window. The message is identified by the string name specified in \fIprotocol_name\fR. A menu item will be added into mwm's menu as specified by \fImenu_message\fR. Once a new mwm protocol message is added to a toplevel, it can be catched by the TK \fBwm protocol\fR command. Here is an example: .CS tixMwm protocol . add MY_PRINT_HELLO \\ {"Print Hello" _H CtrlH} wm protocol . MY_PRINT_HELLO {puts Hello} .CE '\" .TP \fBtixMwm protocol \fIpathName \fBdeactivate\fI protocol_name\fR '\" Deactivate the mwm protocol message in mwm's menu. '\" .TP \fBtixMwm protocol \fIpathName \fBdelete\fI protocol_name\fR '\" Delete the mwm protocol message from mwm's menu. Please note that the window manager protocol handler associated with this protocol (by the \fBwm protocol\fR command) is not deleted automatically. You have to delete the protocol handle explicitly. E.g.: .CS tixMwm protocol . delete MY_PRINT_HELLO wm protocol . MY_PRINT_HELLO {} .CE '\" .PP .SH BUGS '\" On some versions of Mwm, the \fB-border\fR will not disappear unless \fB-resizeh\fR is turned off. Also, the -title will not disappear unless all of \fB-title\fR, \fB-menu\fR, \fB-maximize\fR and \fB-minimize\fR are turned off. '\" '\" '\" .PP .SH KEYWORDS Tix(n) Tix8.4.3/man/tixInputOnly.n0000664000122200012240000000744607232764445016043 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixInputOnly.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros .TH tixInputOnly n 4.0 Tix "Tix Built-In Commands" .BS '\"---------------------------------------------------------------------- .SH NAME tixInputOnly \- Create and manipulate TIX \fBInputOnly\fR widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixInputOnly \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SO \-cursor \-width \-height .SE '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" \fBTixInputOnly\fR does not have any widget specific options. '\" .BE '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixInputOnly\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a \fBtixInputOnly\fR widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the \fBtixInputOnly\fR such as its cursor or width. .PP \fBTixInputOnly\fR widgets are not visible to the user. The only purpose of \fBTixInputOnly\fR widgets are to accept inputs from the user, which can be done with the \fBbind\fR command. '\" '\"---------------------------------------------------------------------- .SH "WIDGET COMMAND" .PP '\" The \fBtixInputOnly\fR command creates a new Tcl command whose name is the same as the path name of the \fBtixInputOnly\fR's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the InputOnly widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for \fBtixInputOnly\fR widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixInputOnly\fR command. '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixInputOnly\fR command. '\" '\"---------------------------------------------------------------------- .SH BINDINGS .PP \fBtixInputOnly\fR widgets have no default bindings. '\" .SH BUGS \fBtixInputOnly\fR is currently implemented for the Unix version of Tix only. '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/man/tixFileSelectDialog.n0000664000122200012240000001233407232764445017231 0ustar jeffhjeffh00000000000000'\" '\" $Id: tixFileSelectDialog.n,v 1.2 2001/01/22 08:02:45 ioilam Exp $ '\" '\" '\" Copyright (c) 1993-1999 Ioi Kim Lam. '\" Copyright (c) 2000-2001 Tix Project Group. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" The file man.macros and some of the macros used by this file are '\" copyrighted: (c) 1990 The Regents of the University of California. '\" (c) 1994-1995 Sun Microsystems, Inc. '\" The license terms of the Tcl/Tk distrobution are in the file '\" license.tcl. .so man.macros '\"---------------------------------------------------------------------- .TH tixFileSelectDialog n 4.0 Tix "Tix Built-In Commands" .BS '\" '\" '\"---------------------------------------------------------------------- .SH NAME tixFileSelectDialog \- Create and manipulate tixFileSelectDialog widgets '\" '\" '\" '\"---------------------------------------------------------------------- .SH SYNOPSIS \fBtixFileSelectDialog \fIpathName \fR?\fIoptions\fR? '\" '\" '\"---------------------------------------------------------------------- .SH SUPER-CLASS The \fBTixFileSelectDialog\fR class does not have a super-class. '\" '\"---------------------------------------------------------------------- .SH "STANDARD OPTIONS" '\" \fBTixFileSelectDialog\fR supports all the standard options of a frame widget. See the \fBoptions(n)\fR manual entry for details on the standard options. '\" '\"---------------------------------------------------------------------- .SH "WIDGET-SPECIFIC OPTIONS" '\" '\"----------BEGIN .OP \-command command Command Specifies the command to be called when the user chooses on a filename (usually by selecting the filename and clicking on the "OK" button"). The command is called with one argument, the complete pathname of the file. '\"----------END '\" '\"---------------------------------------------------------------------- .SH SUBWIDGETS '\"----------BEGIN .LP .nf Name: \fBbtns\fR Class: \fBTixStdButtonBox\fR .fi .IP The StdButtonBox subwidget at the bottom of FileSelectDialog. It contains the "OK", "Filter, "Cancel" and "Help" buttons. '\"----------END '\" '\"----------BEGIN .LP .nf Name: \fBfsbox\fR Class: \fBTixFileSelectBox\fR .fi .IP The FileSelectBox subwidget at the top of the FileSelectDialog. '\"----------END .BE '\" '\" '\"---------------------------------------------------------------------- .SH DESCRIPTION '\" .PP '\" The \fBtixFileSelectDialog\fR command creates a new window (given by the \fIpathName\fR argument) and makes it into a FileSelectDialog widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the FileSelectDialog such as its cursor and relief. .PP The FileSelectDialog widget provides an convenient method for the user to select files. The FileSelectBox is similar to the standard Motif(TM) file-selection box. '\" '\" '\"---------------------------------------------------------------------- .SH WIDGET COMMANDS .PP '\" The \fBtixFileSelectDialog\fR command creates a new Tcl command whose name is the same as the path name of the FileSelectDialog's window. This command may be used to invoke various operations on the widget. It has the following general form: '\" .RS .CS '\" \fIpathName option \fR?\fIarg arg ...\fR? .CE .RE '\" \fIPathName\fR is the name of the command, which is the same as the FileSelectDialog widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for FileSelectDialog widgets: '\" .TP \fIpathName \fBcget\fR \fIoption\fR '\" Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtixFileSelectDialog\fR command. '\" '\" .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? '\" Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, 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 \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtixFileSelectDialog\fR command. '\" '\" .TP \fIpathName \fBpopdown\fR '\" Withdraws the FileSelectDialog from the screen. '\" .TP \fIpathName \fBpopup\fR '\" Pops up the FileSelectDialog on the screen. '\" '\" .TP \fIpathName \fBsubwidget \fIname ?args?\fR '\" When no options are given, this command returns the pathname of the subwidget of the specified name. When options are given, the widget command of the specified subwidget will be called with these options. '\" '\" '\" '\"---------------------------------------------------------------------- '\".SH BINDINGS '\".PP '\" '\" '\" '\"---------------------------------------------------------------------- .SH KEYWORDS Tix(n) Tix8.4.3/win/0000775000122200012240000000000010767576212013205 5ustar jeffhjeffh00000000000000Tix8.4.3/win/tixWinWm.c0000664000122200012240000000110107110476707015124 0ustar jeffhjeffh00000000000000 /* $Id: tixWinWm.c,v 1.1.1.1 2000/05/17 11:08:55 idiscovery Exp $ */ /* * tixWinWm.c -- * * Functions related to window management that are specific to * the Windows platform * * Copyright (c) 1996, Expert Interface Technologies * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ #include "tixWinInt.h" int TixpSetWindowParent(interp, tkwin, newParent, parentId) Tcl_Interp * interp; Tk_Window tkwin; Tk_Window newParent; int parentId; { return TCL_OK; } Tix8.4.3/win/example.vc60000664000122200012240000000200410127376766015256 0ustar jeffhjeffh00000000000000 # Where the Tcl and Tk. They must be in the same directory # If you want to run "nmake tests", this *must* be an absolute filename. SRC_ROOT = ..\.. # Set the TCL version. The TK version are assumed to be equal. The default # is 8.4.7. TCL_MAJOR = 8 TCL_MINOR = 4 TCL_PATCH = 7 # Uncomment the following if you had compiled Tcl with debugging symbols #TCL_DBGX = d # Uncomment the following if you had compiled Tk with debugging symbols #TK_DBGX = d # Comment this out if you don't want to compile with stubs USESTUBS = 1 # Comment this out if you want to compile with debugging symbols NODEBUG = 1 # Where to install Tix. By default it installs at the default Tcl # installation directory C:\Tcl INSTALL_DIR = C:\Progra~1\Tcl # TOOLS32 = location of VC++ 32-bit development tools. # TOOLS32_rc = location of VC++ rc program # # Visual C++ 6.0 # TOOLS32 = c:\Program Files\Microsoft Visual Studio\VC98 TOOLS32_rc = c:\Program Files\Microsoft Visual Studio\Common\MSDev98 !include "makefile.vc" Tix8.4.3/win/tixWinInt.h0000664000122200012240000000073407110476707015313 0ustar jeffhjeffh00000000000000 /* $Id: tixWinInt.h,v 1.1.1.1 2000/05/17 11:08:55 idiscovery Exp $ */ /* * tixWinInt.h * * Internal header file for Tix on the Windows platform. * * Copyright (c) 1996, Expert Interface Technologies * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ #ifndef _TIX_WIN_INT_H_ #define _TIX_WIN_INT_H_ #ifndef _TIX_INT_H_ #include "tixInt.h" #endif #endif /* _TIX_WIN_INT_H_ */ Tix8.4.3/win/tixWinXpm.c0000644000122200012240000002032010031436051015267 0ustar jeffhjeffh00000000000000 /* $Id: tixWinXpm.c,v 1.2 2004/03/28 02:44:57 hobbs Exp $ */ /* * tixWinImgXpm.c -- * * Implement the Windows specific function calls for the pixmap * image type. * * Copyright (c) 1996, Expert Interface Technologies * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ #include #include #include typedef struct PixmapData { HDC bitmapDC; /* Bitmap used on Windows platforms */ HDC maskDC; /* Mask used on Windows platforms */ HBITMAP bitmap, bitmapOld; HBITMAP maskBm, maskBmOld; } PixmapData; static void CopyTransparent _ANSI_ARGS_((Display* display, HDC srcDC, Drawable dest, int src_x, int src_y, int width, int height, int dest_x, int dest_y, HDC maskDC)); /*---------------------------------------------------------------------- * TixpInitPixmapInstance -- * * Initializes the platform-specific data of a pixmap instance * *---------------------------------------------------------------------- */ void TixpInitPixmapInstance(masterPtr, instancePtr) PixmapMaster *masterPtr; /* Pointer to master for image. */ PixmapInstance *instancePtr;/* The pixmap instance. */ { PixmapData * dataPtr; dataPtr = (PixmapData *)ckalloc(sizeof(PixmapData)); dataPtr->maskDC = NULL; dataPtr->bitmapDC = NULL; instancePtr->clientData = (ClientData)dataPtr; } /*---------------------------------------------------------------------- * TixpXpmAllocTmpBuffer -- * * Allocate a temporary space to draw the image. * *---------------------------------------------------------------------- */ void TixpXpmAllocTmpBuffer(masterPtr, instancePtr, imagePtr, maskPtr) PixmapMaster * masterPtr; PixmapInstance * instancePtr; XImage ** imagePtr; XImage ** maskPtr; { XImage * image = NULL; /* Unused. Always return NULL. */ XImage * mask; Display *display = Tk_Display(instancePtr->tkwin); int depth; int maskSize; int i; int wordBits = sizeof(WORD)*8; /* # of bits in WORD */ int wordBytes = sizeof(WORD)/sizeof(char); /* # of bytes in WORD */ int words_per_line; depth = Tk_Depth(instancePtr->tkwin); instancePtr->pixmap = Tk_GetPixmap(display, Tk_WindowId(instancePtr->tkwin), masterPtr->size[0], masterPtr->size[1], depth); mask = (XImage*)ckalloc(sizeof(XImage)); mask->width = masterPtr->size[0]; mask->height = masterPtr->size[1]; /* * In Windows, each scan line in the the mask data must be aligned * to words. The padding bits must be zero'ed. */ words_per_line = (mask->width + (wordBits-1))/wordBits; mask->bytes_per_line = words_per_line * wordBytes; maskSize = mask->bytes_per_line * mask->height; mask->data = (char *)ckalloc(maskSize); for (i=0; idata[i] = 0; } *imagePtr = image; *maskPtr = mask; } void TixpXpmFreeTmpBuffer(masterPtr, instancePtr, image, mask) PixmapMaster * masterPtr; PixmapInstance * instancePtr; XImage * image; XImage * mask; { if (image) { ckfree((char*)image->data); image->data = NULL; XDestroyImage(image); } if (mask) { ckfree((char*)mask->data); mask->data = NULL; ckfree((char*)mask); } } /*---------------------------------------------------------------------- * TixpXpmSetPixel -- * * Sets the pixel at the given (x,y) coordinate to be the given * color. *---------------------------------------------------------------------- */ void TixpXpmSetPixel(instancePtr, image, mask, x, y, colorPtr, isTranspPtr) PixmapInstance * instancePtr; XImage * image; XImage * mask; int x; int y; XColor * colorPtr; int * isTranspPtr; { char * p; int n; GC gc; XGCValues gcValues; Display *display = Tk_Display(instancePtr->tkwin); if (colorPtr != NULL) { gcValues.foreground = colorPtr->pixel; gc = Tk_GetGC(instancePtr->tkwin, GCForeground, &gcValues); XDrawRectangle(display, instancePtr->pixmap, gc, x, y, 1, 1); Tk_FreeGC(display, gc); } p = mask->data; p+= y*(mask->bytes_per_line); p+= x/8; n = x%8; if (colorPtr != NULL) { *p |= (1 << (7-n)); } else { *p &= ~(1 << (7-n)); *isTranspPtr = 1; } } /*---------------------------------------------------------------------- * TixpXpmRealizePixmap -- * * On Unix: Create the pixmap from the buffer. * On Windows: Free the mask if there are no transparent pixels. *---------------------------------------------------------------------- */ void TixpXpmRealizePixmap(masterPtr, instancePtr, image, mask, isTransp) PixmapMaster * masterPtr; PixmapInstance * instancePtr; XImage * image; XImage * mask; { Display *display = Tk_Display(instancePtr->tkwin); PixmapData *dataPtr = (PixmapData*)instancePtr->clientData; HDC dc, bitmapDC; TkWinDCState dcState; HBITMAP bitmap, bitmapOld; int w, h; w = masterPtr->size[0]; h = masterPtr->size[1]; dc = TkWinGetDrawableDC(display, instancePtr->pixmap, &dcState); bitmapDC = CreateCompatibleDC(dc); bitmap = CreateCompatibleBitmap(dc, w, h); bitmapOld = SelectObject(bitmapDC, bitmap); BitBlt(bitmapDC, 0, 0, w, h, dc, 0, 0, SRCCOPY); if (isTransp) { HDC maskDC; HBITMAP maskBm, maskBmOld; /* * There are transparent pixels. We need a mask. */ maskDC = CreateCompatibleDC(dc); maskBm = CreateBitmap(w, h, 1, 1, (CONST VOID*)mask->data); maskBmOld = SelectObject(maskDC, maskBm); BitBlt(bitmapDC, 0, 0, w, h, maskDC, 0, 0, SRCAND); BitBlt(maskDC, 0, 0, w, h, maskDC, 0, 0, NOTSRCCOPY); dataPtr->maskDC = maskDC; dataPtr->maskBm = maskBm; dataPtr->maskBmOld = maskBmOld; } else { dataPtr->maskDC = NULL; } dataPtr->bitmapDC = bitmapDC; dataPtr->bitmap = bitmap; dataPtr->bitmapOld = bitmapOld; TkWinReleaseDrawableDC(instancePtr->pixmap, dc, &dcState); } void TixpXpmFreeInstanceData(instancePtr, delete, display) PixmapInstance *instancePtr; /* Pixmap instance. */ int delete; /* Should the instance data structure * be deleted as well? */ Display * display; /* Unused on Windows. */ { PixmapData *dataPtr = (PixmapData*)instancePtr->clientData; if (dataPtr->maskDC != NULL) { DeleteObject(SelectObject(dataPtr->maskDC, dataPtr->maskBmOld)); DeleteDC(dataPtr->maskDC); dataPtr->maskDC = NULL; } if (dataPtr->bitmapDC != NULL) { DeleteObject(SelectObject(dataPtr->bitmapDC, dataPtr->bitmapOld)); DeleteDC(dataPtr->bitmapDC); dataPtr->bitmapDC = NULL; } if (delete) { ckfree((char*)dataPtr); instancePtr->clientData = NULL; } } void TixpXpmDisplay(clientData, display, drawable, imageX, imageY, width, height, drawableX, drawableY) ClientData clientData; /* Pointer to PixmapInstance structure for * for instance to be displayed. */ Display *display; /* Display on which to draw image. */ Drawable drawable; /* Pixmap or window in which to draw image. */ int imageX, imageY; /* Upper-left corner of region within image * to draw. */ int width, height; /* Dimensions of region within image to draw.*/ int drawableX, drawableY; /* Coordinates within drawable that * correspond to imageX and imageY. */ { PixmapInstance *instancePtr = (PixmapInstance *) clientData; PixmapData *dataPtr = (PixmapData*)instancePtr->clientData; CopyTransparent(display, dataPtr->bitmapDC, drawable, imageX, imageY, width, height, drawableX, drawableY, dataPtr->maskDC); } static void CopyTransparent(display, srcDC, dest, src_x, src_y, width, height, dest_x, dest_y, maskDC) Display* display; HDC srcDC; Drawable dest; int src_x; int src_y; int width; int height; int dest_x; int dest_y; HDC maskDC; { HDC destDC; TkWinDCState destState; destDC = TkWinGetDrawableDC(display, dest, &destState); if (maskDC) { BitBlt(destDC, dest_x, dest_y, width, height, maskDC, src_x, src_y, SRCAND); BitBlt(destDC, dest_x, dest_y, width, height, srcDC, src_x, src_y, SRCPAINT); } else { BitBlt(destDC, dest_x, dest_y, width, height, srcDC, src_x, src_y, SRCCOPY); } TkWinReleaseDrawableDC(dest, destDC, &destState); } Tix8.4.3/win/tixWinDefault.h0000664000122200012240000001745207221316073016142 0ustar jeffhjeffh00000000000000/* * tixWinDefault.h -- * * This file defines the defaults for all options for all of * the Tix widgets. * * Copyright (c) 2000 Tix Project Group. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * $Id: tixWinDefault.h,v 1.3 2000/12/24 06:48:27 ioilam Exp $ */ #ifndef TIX_WIN_DEFAULT #define TIX_WIN_DEFAULT #define CTL_BOLD_FONT "{MS Sans Serif} 8 bold" #define TIX_EDITOR_BG "SystemWindow" #define TIX_BORDER_WIDTH "2" #define TIX_HIGHLIGHT_THICKNESS "0" /* * Compound image */ #define DEF_CMPIMAGE_BG_COLOR NORMAL_BG #define DEF_CMPIMAGE_BG_MONO WHITE #define DEF_CMPIMAGE_FG_COLOR BLACK #define DEF_CMPIMAGE_FG_MONO BLACK #define DEF_CMPIMAGE_FONT CTL_FONT /* * tixHList widget */ #define DEF_HLIST_BG_COLOR TIX_EDITOR_BG #define DEF_HLIST_BG_MONO WHITE #define DEF_HLIST_BORDER_WIDTH TIX_BORDER_WIDTH #define DEF_HLIST_BROWSE_COMMAND "" #define DEF_HLIST_COMMAND "" #define DEF_HLIST_COLUMNS "1" #define DEF_HLIST_CURSOR "" #define DEF_HLIST_DISPLAY_MODE "tree" #define DEF_HLIST_DRAG_COMMAND "" #define DEF_HLIST_DRAW_BRANCH "true" #define DEF_HLIST_DROP_COMMAND "" #define DEF_HLIST_FONT CTL_FONT #define DEF_HLIST_FG_COLOR BLACK #define DEF_HLIST_FG_MONO BLACK #define DEF_HLIST_HEADER "0" #define DEF_HLIST_HEIGHT "10" #define DEF_HLIST_HIGHLIGHT_COLOR BLACK #define DEF_HLIST_HIGHLIGHT_MONO BLACK #define DEF_HLIST_HIGHLIGHT_WIDTH TIX_HIGHLIGHT_THICKNESS #define DEF_HLIST_RELIEF "sunken" #define DEF_HLIST_ORIENT "vertical" #define DEF_HLIST_PADX "2" #define DEF_HLIST_PADY "2" #define DEF_HLIST_GAP "5" #define DEF_HLIST_INDENT "10" #define DEF_HLIST_INDICATOR "0" #define DEF_HLIST_INDICATOR_CMD "" #define DEF_HLIST_ITEM_TYPE "text" #define DEF_HLIST_SELECT_BG_COLOR SELECT_BG #define DEF_HLIST_SELECT_FG_COLOR SELECT_FG #define DEF_HLIST_SELECT_BG_MONO BLACK #define DEF_HLIST_SELECT_FG_MONO WHITE #define DEF_HLIST_SELECT_MODE "browse" #define DEF_HLIST_SELECT_BORDERWIDTH "0" #define DEF_HLIST_SEPARATOR "." #define DEF_HLIST_SIZE_COMMAND "" #define DEF_HLIST_TAKE_FOCUS "1" #define DEF_HLIST_WIDTH "20" #define DEF_HLIST_WIDE_SELECT "true" #define DEF_HLIST_Y_SCROLL_COMMAND "" #define DEF_HLIST_X_SCROLL_COMMAND "" /* * HList Entry */ #define DEF_HLISTENTRY_BITMAP "" #define DEF_HLISTENTRY_DATA "" #define DEF_HLISTENTRY_GAP "4" #define DEF_HLISTENTRY_IMAGE "" #define DEF_HLISTENTRY_JUSTIFY "left" #define DEF_HLISTENTRY_NAME "" #define DEF_HLISTENTRY_PADX "2" #define DEF_HLISTENTRY_PADY "2" #define DEF_HLISTENTRY_STATE "normal" #define DEF_HLISTENTRY_TEXT "" #define DEF_HLISTENTRY_UNDERLINE "-1" #define DEF_HLISTENTRY_WIDGET "" #define DEF_HLISTENTRY_WLENGTH "0" /* * HList Entry */ #define DEF_HLISTHEADER_BG_COLOR NORMAL_BG #define DEF_HLISTHEADER_BG_MONO WHITE #define DEF_HLISTHEADER_BORDER_WIDTH TIX_BORDER_WIDTH #define DEF_HLISTHEADER_RELIEF "raised" /* * tixNBFrame widget */ #define DEF_NOTEBOOKFRAME_INACTIVE_BG_COLOR NORMAL_BG #define DEF_NOTEBOOKFRAME_INACTIVE_BG_MONO WHITE #define DEF_NOTEBOOKFRAME_BACKPAGE_COLOR NORMAL_BG #define DEF_NOTEBOOKFRAME_BACKPAGE_MONO WHITE #define DEF_NOTEBOOKFRAME_BG_COLOR NORMAL_BG #define DEF_NOTEBOOKFRAME_BG_MONO WHITE #define DEF_NOTEBOOKFRAME_DISABLED_FG_COLOR DISABLED #define DEF_NOTEBOOKFRAME_DISABLED_FG_MONO "" #define DEF_NOTEBOOKFRAME_FOCUS_COLOR BLACK #define DEF_NOTEBOOKFRAME_FOCUS_MONO BLACK #define DEF_NOTEBOOKFRAME_BORDER_WIDTH TIX_BORDER_WIDTH #define DEF_NOTEBOOKFRAME_CURSOR "" #define DEF_NOTEBOOKFRAME_FONT CTL_FONT #define DEF_NOTEBOOKFRAME_FG_COLOR BLACK #define DEF_NOTEBOOKFRAME_FG_MONO BLACK #define DEF_NOTEBOOKFRAME_RELIEF "raised" #define DEF_NOTEBOOKFRAME_SLAVE "1" #define DEF_NOTEBOOKFRAME_TAKE_FOCUS "1" #define DEF_NOTEBOOKFRAME_WIDTH "10" #define DEF_NOTEBOOKFRAME_TABPADX "5" #define DEF_NOTEBOOKFRAME_TABPADY "2" /* * tixTList.h */ #define DEF_TLIST_BG_COLOR TIX_EDITOR_BG #define DEF_TLIST_BG_MONO WHITE #define DEF_TLIST_BORDER_WIDTH TIX_BORDER_WIDTH #define DEF_TLIST_BROWSE_COMMAND "" #define DEF_TLIST_COMMAND "" #define DEF_TLIST_CURSOR "" #define DEF_TLIST_FONT CTL_FONT #define DEF_TLIST_FG_COLOR BLACK #define DEF_TLIST_FG_MONO BLACK #define DEF_TLIST_HEIGHT "10" #define DEF_TLIST_HIGHLIGHT_COLOR BLACK #define DEF_TLIST_HIGHLIGHT_MONO BLACK #define DEF_TLIST_HIGHLIGHT_WIDTH TIX_HIGHLIGHT_THICKNESS #define DEF_TLIST_ITEM_TYPE "text" #define DEF_TLIST_RELIEF "sunken" #define DEF_TLIST_ORIENT "vertical" #define DEF_TLIST_PADX "2" #define DEF_TLIST_PADY "2" #define DEF_TLIST_SELECT_BG_COLOR SELECT_BG #define DEF_TLIST_SELECT_FG_COLOR SELECT_FG #define DEF_TLIST_SELECT_BG_MONO BLACK #define DEF_TLIST_SELECT_FG_MONO WHITE #define DEF_TLIST_SELECT_MODE "browse" #define DEF_TLIST_SELECT_BORDERWIDTH "0" #define DEF_TLIST_STATE "normal" #define DEF_TLIST_SIZE_COMMAND "" #define DEF_TLIST_TAKE_FOCUS "1" #define DEF_TLIST_WIDTH "20" #define DEF_TLIST_Y_SCROLL_COMMAND "" #define DEF_TLIST_X_SCROLL_COMMAND "" /* * Grid widget */ #define DEF_GRID_BG_COLOR NORMAL_BG #define DEF_GRID_BG_MONO WHITE #define DEF_GRID_BORDER_WIDTH TIX_BORDER_WIDTH #define DEF_GRID_BROWSE_COMMAND "" #define DEF_GRID_COMMAND "" #define DEF_GRID_CURSOR "" #define DEF_GRID_DEFAULT_WIDTH "40" #define DEF_GRID_DEFAULT_HEIGHT "20" #define DEF_GRID_EDITDONE_COMMAND "" #define DEF_GRID_EDITNOTIFY_COMMAND "" #define DEF_GRID_FLOATING_ROWS "0" #define DEF_GRID_FLOATING_COLS "0" #define DEF_GRID_FONT CTL_FONT #define DEF_GRID_FG_COLOR BLACK #define DEF_GRID_FG_MONO BLACK #define DEF_GRID_FORMAT_COMMAND "" #define DEF_GRID_HEIGHT "10" #define DEF_GRID_HIGHLIGHT_COLOR BLACK #define DEF_GRID_HIGHLIGHT_MONO BLACK #define DEF_GRID_HIGHLIGHT_WIDTH TIX_HIGHLIGHT_THICKNESS #define DEF_GRID_LEFT_MARGIN "1" #define DEF_GRID_ITEM_TYPE "text" #define DEF_GRID_RELIEF "sunken" #define DEF_GRID_PADX "2" #define DEF_GRID_PADY "2" #define DEF_GRID_SELECT_BG_COLOR SELECT_BG #define DEF_GRID_SELECT_FG_COLOR SELECT_FG #define DEF_GRID_SELECT_BG_MONO BLACK #define DEF_GRID_SELECT_FG_MONO WHITE #define DEF_GRID_SELECT_MODE "single" #define DEF_GRID_SELECT_UNIT "row" #define DEF_GRID_SELECT_BORDERWIDTH "0" #define DEF_GRID_STATE "normal" #define DEF_GRID_SIZE_COMMAND "" #define DEF_GRID_TAKE_FOCUS "1" #define DEF_GRID_TOP_MARGIN "1" #define DEF_GRID_WIDTH "4" #define DEF_GRID_Y_SCROLL_COMMAND "" #define DEF_GRID_X_SCROLL_COMMAND "" /*---------------------------------------------------------------------- * * default options for Text Display Items/Styles * *---------------------------------------------------------------------- */ #define DEF_TEXTITEM_STYLE "" #define DEF_TEXTITEM_TEXT "" #define DEF_TEXTITEM_UNDERLINE "-1" #define DEF_TEXTITEM_TYPE "text" #define DEF_TEXTSTYLE_NORMAL_FG_COLOR NORMAL_FG #define DEF_TEXTSTYLE_NORMAL_FG_MONO BLACK #define DEF_TEXTSTYLE_NORMAL_BG_COLOR TIX_EDITOR_BG #define DEF_TEXTSTYLE_NORMAL_BG_MONO WHITE #define DEF_TEXTSTYLE_ACTIVE_FG_COLOR NORMAL_FG #define DEF_TEXTSTYLE_ACTIVE_FG_MONO WHITE #define DEF_TEXTSTYLE_ACTIVE_BG_COLOR ACTIVE_BG #define DEF_TEXTSTYLE_ACTIVE_BG_MONO BLACK #define DEF_TEXTSTYLE_SELECTED_FG_COLOR SELECT_FG #define DEF_TEXTSTYLE_SELECTED_FG_MONO WHITE #define DEF_TEXTSTYLE_SELECTED_BG_COLOR SELECT_BG #define DEF_TEXTSTYLE_SELECTED_BG_MONO BLACK #define DEF_TEXTSTYLE_DISABLED_FG_COLOR BLACK #define DEF_TEXTSTYLE_DISABLED_FG_MONO BLACK #define DEF_TEXTSTYLE_DISABLED_BG_COLOR TIX_EDITOR_BG #define DEF_TEXTSTYLE_DISABLED_BG_MONO WHITE #define DEF_TEXTSTYLE_PADX "2" #define DEF_TEXTSTYLE_PADY "2" #define DEF_TEXTSTYLE_FONT CTL_FONT #define DEF_TEXTSTYLE_JUSTIFY "left" #define DEF_TEXTSTYLE_WLENGTH "0" #define DEF_TEXTSTYLE_ANCHOR "w" #endif /* TIX_WIN_DEFAULT */ Tix8.4.3/win/makefile.vc.~1.21.~0000644000122200012240000002676110761632674016357 0ustar jeffhjeffh00000000000000# -*- mode: makefile; fill-column: 75; tab-width: 8; coding: iso-latin-1-dos -*- # $Id: makefile.vc,v 1.21 2008/02/28 22:29:16 hobbs Exp $ # #---------------------------------------------------------------------- # makefile.vc -- # # Visual C++ 6.0 makefile for Tix. # # This makefile builds the Tix DLL and EXE files. You can also # use this makefile to install Tix in your local machine (see # common.mak) for details. # # This makefile requires Tcl/Tk versions 8.2 or later. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. #---------------------------------------------------------------------- # # XXX makefile.vc no longer maintained - it *may* work ... or not # XXX use the toplevel configure/make with msys or cygwin on Windows # ###################################################################### # Customization section: # # Normally you shouldn't modify this file directory to customize # the make procedure. See README.txt in this directory for a better # way. # ###################################################################### # Where the Tcl and Tk. They must be in the same directory !IFNDEF SRC_ROOT SRC_ROOT = ..\.. !ENDIF # Set the TCL version. The TK version are assumed to be equal. The default # is 8.3.3. !IFNDEF TCL_MAJOR TCL_MAJOR = 8 !ENDIF !IFNDEF TCL_MINOR TCL_MINOR = 4 !ENDIF !IFNDEF TCL_PATCH TCL_PATCH = 7 !ENDIF TK_MAJOR = $(TCL_MAJOR) TK_MINOR = $(TCL_MINOR) TK_PATCH = $(TCL_PATCH) # Uncomment the following if you had compiled Tcl with debugging symbols !IFNDEF TCL_DBGX #TCL_DBGX = d !ENDIF # Uncomment the following if you had compiled Tk with debugging symbols !IFNDEF TK_DBGX #TK_DBGX = d !ENDIF # TOOLS32 = location of VC++ 32-bit development tools. # TOOLS32_rc = location of VC++ rc program !IFNDEF TOOLS32 # # Visual C++ 6.0 # TOOLS32 = c:\Program Files\Microsoft Visual Studio\VC98 TOOLS32_rc = c:\Program Files\Microsoft Visual Studio\Common\MSDev98 !ENDIF # Set this to the appropriate value of /MACHINE: for your platform !IFNDEF MACHINE MACHINE = IX86 !ENDIF # Comment this out if you don't want to compile with stubs !IFNDEF USESTUBS USESTUBS = 1 !ENDIF # Comment this out if you want to compile with debugging symbols !IFNDEF NODEBUG NODEBUG = 1 !ENDIF # Where to install Tix. By default it installs at the default Tcl # installation directory C:\Tcl !IFNDEF INSTALLDIR INSTALLDIR = C:\Tcl !ENDIF ###################################################################### # Do not modify below this line ###################################################################### default: all ###################################################################### # Development tool specific definitions ###################################################################### # # Build tools # cc32 = "$(TOOLS32)\bin\cl.exe" link32 = "$(TOOLS32)\bin\link.exe" include32 = -I"$(TOOLS32)\include" RMDIR = $(TCL_DIR)\win\rmd.bat MKDIR = $(TCL_DIR)\win\mkd.bat RM = del # # Link flags # !IF "$(NODEBUG)" == "1" ldebug = /RELEASE !ELSE ldebug = -debug:full -debugtype:cv !ENDIF # declarations common to all linker options lcommon = /NODEFAULTLIB /RELEASE /NOLOGO # declarations for use on Intel i386, i486, and Pentium systems !IF "$(MACHINE)" == "IX86" DLLENTRY = @12 lflags = $(lcommon) /MACHINE:$(MACHINE) !ELSE lflags = $(lcommon) /MACHINE:$(MACHINE) !ENDIF dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll baselibs = kernel32.lib $(optlibs) advapi32.lib user32.lib winlibs = $(baselibs) gdi32.lib comdlg32.lib # # Compile flags # # makefile.vc in Tk claims -O2 is buggy and so uses -Ot, so we do the same) !IF "$(NODEBUG)" == "1" optflags = -Oti -Gs -GD !ELSE optflags = -Od -Zi !ENDIF cvarsdll = -D_X86_=1 -DWIN32 -D_WIN32 -D_MT -D_DLL cflagsdll = $(cvarsdll) -c -W3 -nologo -Fp$(TMPDIR)\ -YX -MD \ $(optflags) ###################################################################### # Project specific definitions ###################################################################### TIX_MAJOR = 8 TIX_MINOR = 4 TIX_PATCH = 3 ROOT = .. WINDIR = $(ROOT)\win GENERICDIR = $(ROOT)\generic DOTVERSION = $(TIX_MAJOR).$(TIX_MINOR).$(TIX_PATCH) # # Choose to build with stubs or not # !IF ("$(TCL_MAJOR)" == "8") && ("$(TCL_MINOR)" == "0") # # Tcl 8.0 does not support stubs # STUBS_CFLAGS = DLLDEPENDS = $(TK_LIB) $(TCL_LIB) !ELSE # # Tcl 8.1 or later support stubs # !IF "$(USESTUBS)" == "1" STUBS_CFLAGS = -DUSE_TCL_STUBS=1 -DUSE_TK_STUBS=1 DLLDEPENDS = $(TK_STUBLIB) $(TCL_STUBLIB) !ELSE STUBS_CFLAGS = DLLDEPENDS = $(TK_LIB) $(TCL_LIB) !ENDIF !ENDIF # # Debugging options and where to output .obj and .dll files # !IF "$(NODEBUG)" == "1" DBGX = TMPDIR = Release !ELSE DBGX = d TMPDIR = Debug !ENDIF # # File and dir names for Tcl # !IF "$(TCL_DBGX)" != "d" TCL_TMPDIR = Release !ELSE TCL_TMPDIR = Debug !ENDIF !IF "$(TCL_PATCH)" == "" TCL_DIR = $(SRC_ROOT)\tcl$(TCL_MAJOR).$(TCL_MINOR) TK_DIR = $(SRC_ROOT)\tk$(TCL_MAJOR).$(TCL_MINOR) !ELSE TCL_DIR = $(SRC_ROOT)\tcl$(TCL_MAJOR).$(TCL_MINOR).$(TCL_PATCH) TK_DIR = $(SRC_ROOT)\tk$(TCL_MAJOR).$(TCL_MINOR) !ENDIF TCL_LIBDIR = $(TCL_DIR)\win\$(TCL_TMPDIR) TCL_LIB = $(TCL_LIBDIR)\tcl$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).lib TCL_DLL = $(TCL_LIBDIR)\tcl$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).dll TCL_STUBLIB = $(TCL_LIBDIR)\tclstub$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).lib TCLSH_EXE = $(TCL_LIBDIR)\tclsh$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).exe TK_LIBDIR = $(TK_DIR)\win\$(TK_TMPDIR) TK_LIB = $(TK_LIBDIR)\tk$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).lib TK_DLL = $(TK_LIBDIR)\tk$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).dll # # File and dir names for Tk # !IF "$(TK_DBGX)" == "d" TK_TMPDIR = Debug !ELSE TK_TMPDIR = Release !ENDIF !IF "$(TK_PATCH)" == "" TK_DIR = $(SRC_ROOT)\tk$(TK_MAJOR).$(TK_MINOR) !ELSE TK_DIR = $(SRC_ROOT)\tk$(TK_MAJOR).$(TK_MINOR).$(TK_PATCH) !ENDIF TK_LIBDIR = $(TK_DIR)\win\$(TK_TMPDIR) TK_LIB = $(TK_LIBDIR)\tk$(TK_MAJOR)$(TK_MINOR)$(TK_DBGX).lib TK_STUBLIB = $(TK_LIBDIR)\tkstub$(TK_MAJOR)$(TK_MINOR)$(TK_DBGX).lib # # File and dir names for Tix # TIX_LIB = $(TMPDIR)\tix$(TIX_MAJOR)$(TIX_MINOR)$(DBGX).lib TIX_DLL = $(TMPDIR)\tix$(TIX_MAJOR)$(TIX_MINOR)$(DBGX).dll TIX_PKGIDX = $(TMPDIR)\pkgIndex.tcl.src TIX_DEFINES = -D__WIN32__ TIX_INCLUDES = $(include32) \ -I$(ROOT)\win -I$(ROOT)\generic \ -I$(TK_DIR)\generic -I$(TK_DIR)\win -I$(TK_DIR)\xlib \ -I$(TCL_DIR)\generic -I$(TCL_DIR)\win TIX_CFLAGS = $(cflagsdll) $(TIX_INCLUDES) $(TIX_DEFINES) ###################################################################### # Project specific targets ###################################################################### all: $(TMPDIR) $(TIX_DLL) $(TIX_PKGIDX) $(TMPDIR): -$(MKDIR) $@ # # Object files # TIX_DLL_OBJS = \ $(TMPDIR)\tixClass.obj \ $(TMPDIR)\tixCmds.obj \ $(TMPDIR)\tixCompat.obj \ $(TMPDIR)\tixDiImg.obj \ $(TMPDIR)\tixDiITxt.obj \ $(TMPDIR)\tixDiStyle.obj \ $(TMPDIR)\tixDItem.obj \ $(TMPDIR)\tixDiText.obj \ $(TMPDIR)\tixDiWin.obj \ $(TMPDIR)\tixError.obj \ $(TMPDIR)\tixForm.obj \ $(TMPDIR)\tixFormMisc.obj \ $(TMPDIR)\tixGeometry.obj \ $(TMPDIR)\tixGrid.obj \ $(TMPDIR)\tixGrData.obj \ $(TMPDIR)\tixGrRC.obj \ $(TMPDIR)\tixGrFmt.obj \ $(TMPDIR)\tixGrSel.obj \ $(TMPDIR)\tixGrUtl.obj \ $(TMPDIR)\tixHLCol.obj \ $(TMPDIR)\tixHLHdr.obj \ $(TMPDIR)\tixHLInd.obj \ $(TMPDIR)\tixHList.obj \ $(TMPDIR)\tixImgCmp.obj \ $(TMPDIR)\tixImgXpm.obj \ $(TMPDIR)\tixInit.obj \ $(TMPDIR)\tixList.obj \ $(TMPDIR)\tixMethod.obj \ $(TMPDIR)\tixNBFrame.obj \ $(TMPDIR)\tixOption.obj \ $(TMPDIR)\tixSmpLs.obj \ $(TMPDIR)\tixScroll.obj \ $(TMPDIR)\tixTList.obj \ $(TMPDIR)\tixUtils.obj \ $(TMPDIR)\tixWCmpt.obj \ $(TMPDIR)\tixWidget.obj \ $(TMPDIR)\tixWinDraw.obj \ $(TMPDIR)\tixWinXpm.obj \ $(TMPDIR)\tixWinWm.obj # # .EXE and .DLL files # # (ToDo) $(TIX_DLL) doesn't have resources to define its icon, etc. # $(TIX_DLL): $(TIX_DLL_OBJS) $(link32) $(ldebug) $(dlllflags) $(DLLDEPENDS) $(winlibs) \ -out:$@ @<< $(TIX_DLL_OBJS) << $(TIX_PKGIDX): make_pkgIndex.tcl makefile.vc set TCL_LIBRARY=$(TCL_DIR)\library $(TCLSH_EXE) make_pkgIndex.tcl $@ $(TIX_DLL) $(DOTVERSION) # # Implicit rules # {$(GENERICDIR)}.c{$(TMPDIR)}.obj: $(cc32) $(TIX_CFLAGS) $(STUBS_CFLAGS) -DBUILD_tix -Fo$@ $< {$(WINDIR)}.c{$(TMPDIR)}.obj: $(cc32) $(TIX_CFLAGS) $(STUBS_CFLAGS) -DBUILD_tix -Fo$@ $< ###################################################################### # Test: ###################################################################### oldtest: set TCL_LIBRARY=$(TCL_DIR)\library set TK_LIBRARY=$(TK_DIR)\library @echo "====================================================" @echo "running old-style tests" @echo "====================================================" $(TCLSH_EXE) ../tests/Driver.tcl newtest: set TCL_LIBRARY=$(TCL_DIR)\library set TK_LIBRARY=$(TK_DIR)\library @echo "====================================================" @echo "running new-style tests" @echo "====================================================" set TIX_LIBRARY=$(ROOT)\library $(TCLSH_EXE) ..\tests\all.tcl copydlls:: copy /y $(TCL_DLL) $(TMPDIR) copy /y $(TK_DLL) $(TMPDIR) test: copydlls newtest tests: copydlls newtest rundemos: set TCL_LIBRARY=$(TCL_DIR)\library set TK_LIBRARY=$(TK_DIR)\library set TIX_LIBRARY=$(ROOT)\library $(WISH) ..\demos\widget ###################################################################### # Clean up ###################################################################### clean: -del $(TIX_LIB) -del $(TIX_DLL) -del $(TIX_PKGIDX) -del $(TMPDIR)\*.obj -del $(TMPDIR)\*.exp -del $(TMPDIR)\*.res -del $(TMPDIR)\*.def -del $(TMPDIR)\*.pch -del $(TMPDIR)\*.pdb -del $(TMPDIR)\*.lib -del *.pdb ###################################################################### # Install ###################################################################### LIB_INSTALL_DIR = $(INSTALL_DIR)\lib\tix$(DOTVERSION) INCLUDE_INSTALL_DIR = $(INSTALL_DIR)\include install: all -@$(MKDIR) "$(LIB_INSTALL_DIR)" @echo installing $(TIX_DLL) @copy "$(TIX_DLL)" "$(LIB_INSTALL_DIR)" @echo installing $(TIX_LIB) @copy "$(TIX_LIB)" "$(LIB_INSTALL_DIR)" @echo installing library files -@$(MKDIR) "$(LIB_INSTALL_DIR)" -@$(MKDIR) "$(LIB_INSTALL_DIR)\pref" -@$(MKDIR) "$(LIB_INSTALL_DIR)\bitmaps" -@$(MKDIR) "$(LIB_INSTALL_DIR)\demos" -@$(MKDIR) "$(LIB_INSTALL_DIR)\demos\bitmaps" -@$(MKDIR) "$(LIB_INSTALL_DIR)\demos\samples" xcopy "$(ROOT)\library" "$(LIB_INSTALL_DIR)" copy "$(TIX_PKGIDX)" "$(LIB_INSTALL_DIR)\pkgIndex.tcl" xcopy "$(ROOT)\library\pref" "$(LIB_INSTALL_DIR)\pref" xcopy "$(ROOT)\library\bitmaps" "$(LIB_INSTALL_DIR)\bitmaps" xcopy "$(ROOT)\demos" "$(LIB_INSTALL_DIR)\demos" xcopy "$(ROOT)\demos\samples" "$(LIB_INSTALL_DIR)\demos\samples" xcopy "$(ROOT)\demos\bitmaps" "$(LIB_INSTALL_DIR)\demos\bitmaps" Tix8.4.3/win/tixWinDraw.c0000644000122200012240000002550510031436051015432 0ustar jeffhjeffh00000000000000/* * tixWinDraw.c -- * * Implement the Windows specific function calls for drawing. * * Copyright (c) 1993-1999 Ioi Kim Lam. * Copyright (c) 2000 Tix Project Group. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * $Id: tixWinDraw.c,v 1.5 2004/03/28 02:44:57 hobbs Exp $ */ #include #include #include /*---------------------------------------------------------------------- * * TixpDrawTmpLine -- * * Draws a "temporarily" line on the desktop window with XOR * drawing mode. This function is used by the PanedWindow and * ResizeHandler to draw the rubberband lines. Calling the * function again with the same parameters cancels the temporary * lines without affecting what was originally on the screen. * * Results: * None. * * Side effects: * None * *---------------------------------------------------------------------- */ void TixpDrawTmpLine(x1, y1, x2, y2, tkwin) int x1; int y1; int x2; int y2; Tk_Window tkwin; { HWND desktop; HDC hdc; HPEN hpen; HGDIOBJ old; desktop = GetDesktopWindow(); hdc = GetWindowDC(desktop); hpen = CreatePen(PS_SOLID, 0, RGB(255,255,255)); old = SelectObject(hdc, hpen); SetROP2(hdc, R2_XORPEN); MoveToEx(hdc, x1, y1, NULL); LineTo(hdc, x2, y2); SelectObject(hdc, old); DeleteObject(hpen); ReleaseDC(desktop, hdc); } /* *---------------------------------------------------------------------- * * TixpDrawAnchorLines -- * * See comments near Tix_DrawAnchorLines in tixUtils.c. * * Results: * None. * * Side effects: * None * *---------------------------------------------------------------------- */ void TixpDrawAnchorLines(display, drawable, gc, x, y, w, h) Display *display; Drawable drawable; GC gc; int x; int y; int w; int h; { HDC hdc; TkWinDCState state; RECT rect; if (w < 2 || h < 2) { /* * Area too small to show effect. Don't bother */ return; } hdc = TkWinGetDrawableDC(display, drawable, &state); rect.left = x; rect.top = y; rect.right = x+w; rect.bottom = y+h; DrawFocusRect(hdc, &rect); TkWinReleaseDrawableDC(drawable, hdc, &state); } /* *---------------------------------------------------------------------- * * TixpStartSubRegionDraw -- * * This function is used by the Tix DItem code to implement * clipped rendering -- if a DItem is larger than the region * where the DItem is displayed (with the Tix_DItemDisplay * function), we clip the DItem so that all the rendering * happens inside the region. * * This Win32 implementation is tricky (which explains why the * TixpSubRegDrawXXX API looks so arcane.) Tk does not support * a portable API for setting the clip region of a GC. We could * hack into Tk's Win32 implementation of GC to get the clipping * to work, but that may run into future incompatibilities. * * For a clean and (almost) portable, albeit a bit slow, * implemetation of clipping, we allocate a pixmap when clipping * is required. All subsequent drawing goes into this * pixmap. When TixpEndSubRegionDraw is called we then copy from * the pixmap back to the destination drawable. * * Results: * None. * * Side effects: * A Tk pixmap may be created and saved into subRegPtr->pixmap in * for the clipped drawing operations. * *---------------------------------------------------------------------- */ void TixpStartSubRegionDraw(display, drawable, gc, subRegPtr, origX, origY, x, y, width, height, needWidth, needHeight) Display *display; Drawable drawable; GC gc; TixpSubRegion * subRegPtr; int origX; int origY; int x; int y; int width; int height; int needWidth; int needHeight; { TkWinDrawable * wdrPtr; int depth; if ((width < needWidth) || (height < needHeight)) { subRegPtr->origX = origX; subRegPtr->origY = origY; subRegPtr->x = x; subRegPtr->y = y; subRegPtr->width = width; subRegPtr->height = height; /* * Find out the depth of the drawable and create a pixmap of * the same depth. */ wdrPtr = (TkWinDrawable *)drawable; if (wdrPtr->type == TWD_BITMAP) { depth = wdrPtr->bitmap.depth; } else { depth = wdrPtr->window.winPtr->depth; } subRegPtr->pixmap = Tk_GetPixmap(display, drawable, width, height, depth); if (subRegPtr->pixmap != None) { /* * It could be None if we have somehow exhausted the Windows * GDI resources. */ XCopyArea(display, drawable, subRegPtr->pixmap, gc, x, y, (unsigned) width, (unsigned) height, 0, 0); } } else { subRegPtr->pixmap = None; } } /*---------------------------------------------------------------------- * TixpEndSubRegionDraw -- * * *---------------------------------------------------------------------- */ void TixpEndSubRegionDraw(display, drawable, gc, subRegPtr) Display *display; Drawable drawable; GC gc; TixpSubRegion * subRegPtr; { if (subRegPtr->pixmap != None) { XCopyArea(display, subRegPtr->pixmap, drawable, gc, 0, 0, (unsigned) subRegPtr->width, (unsigned) subRegPtr->height, subRegPtr->x, subRegPtr->y); Tk_FreePixmap(display, subRegPtr->pixmap); subRegPtr->pixmap = None; } } void TixpSubRegSetClip(display, subRegPtr, gc) Display *display; TixpSubRegion * subRegPtr; GC gc; { /* Do nothing */ } void TixpSubRegUnsetClip(display, subRegPtr, gc) Display *display; TixpSubRegion * subRegPtr; GC gc; { /* Do nothing */ } /* *---------------------------------------------------------------------- * * TixpSubRegDisplayText -- * * Display a text string on one or more lines in a sub region. * * Results: * See TkDisplayText * * Side effects: * See TkDisplayText * *---------------------------------------------------------------------- */ void TixpSubRegDisplayText(display, drawable, gc, subRegPtr, font, string, numChars, x, y, length, justify, underline) Display *display; /* X display to use for drawing text. */ Drawable drawable; /* Window or pixmap in which to draw the * text. */ GC gc; /* Graphics context to use for drawing text. */ TixpSubRegion * subRegPtr; /* Information about the subregion */ TixFont font; /* Font that determines geometry of text * (should be same as font in gc). */ CONST84 char *string; /* String to display; may contain embedded * newlines. */ int numChars; /* Number of characters to use from string. */ int x, y; /* Pixel coordinates within drawable of * upper left corner of display area. */ int length; /* Line length in pixels; used to compute * word wrap points and also for * justification. Must be > 0. */ Tk_Justify justify; /* How to justify lines. */ int underline; /* Index of character to underline, or < 0 * for no underlining. */ { if (subRegPtr->pixmap != None) { TixDisplayText(display, subRegPtr->pixmap, font, string, numChars, x - subRegPtr->x, y - subRegPtr->y, length, justify, underline, gc); } else { TixDisplayText(display, drawable, font, string, numChars, x, y, length, justify, underline, gc); } } /*---------------------------------------------------------------------- * TixpSubRegFillRectangle -- * * *---------------------------------------------------------------------- */ void TixpSubRegFillRectangle(display, drawable, gc, subRegPtr, x, y, width, height) Display *display; /* X display to use for drawing rectangle. */ Drawable drawable; /* Window or pixmap in which to draw the * rectangle. */ GC gc; /* Graphics context to use for drawing. */ TixpSubRegion * subRegPtr; /* Information about the subregion */ int x, y; /* Pixel coordinates within drawable of * upper left corner of display area. */ int width, height; /* Size of the rectangle. */ { if (subRegPtr->pixmap != None) { XFillRectangle(display, subRegPtr->pixmap, gc, x - subRegPtr->x, y - subRegPtr->y, width, height); } else { XFillRectangle(display, drawable, gc, x, y, width, height); } } /*---------------------------------------------------------------------- * TixpSubRegDrawImage -- * * Draws a Tk image in a subregion. *---------------------------------------------------------------------- */ void TixpSubRegDrawImage(subRegPtr, image, imageX, imageY, width, height, drawable, drawableX, drawableY) TixpSubRegion * subRegPtr; Tk_Image image; int imageX; int imageY; int width; int height; Drawable drawable; int drawableX; int drawableY; { Drawable dest; if (subRegPtr->pixmap != None) { dest = subRegPtr->pixmap; drawableX -= subRegPtr->x; drawableY -= subRegPtr->y; } else { dest = drawable; } Tk_RedrawImage(image, imageX, imageY, width, height, dest, drawableX, drawableY); } void TixpSubRegDrawBitmap(display, drawable, gc, subRegPtr, bitmap, src_x, src_y, width, height, dest_x, dest_y, plane) Display *display; Drawable drawable; GC gc; TixpSubRegion * subRegPtr; Pixmap bitmap; int src_x, src_y; int width, height; int dest_x, dest_y; unsigned long plane; { XSetClipOrigin(display, gc, dest_x, dest_y); if (subRegPtr->pixmap != None) { XCopyPlane(display, bitmap, subRegPtr->pixmap, gc, src_x, src_y, width, height, dest_x - subRegPtr->x, dest_y - subRegPtr->y, plane); } else { XCopyPlane(display, bitmap, drawable, gc, src_x, src_y, width, height, dest_x, dest_y, plane); } XSetClipOrigin(display, gc, 0, 0); } /* *---------------------------------------------------------------------- * * TixpSubRegDrawAnchorLines -- * * Draw anchor lines inside the given sub region. * * Results: * None. * * Side effects: * None * *---------------------------------------------------------------------- */ void TixpSubRegDrawAnchorLines(display, drawable, gc, subRegPtr, x, y, w, h) Display *display; /* Display to draw on. */ Drawable drawable; /* Drawable to draw on. */ GC gc; /* Use the foreground color of this GC. */ TixpSubRegion * subRegPtr; /* Describes the subregion. */ int x; /* x pos of top-left corner of anchor rect */ int y; /* y pos of top-left corner of anchor rect */ int w; /* width of anchor rect */ int h; /* height of anchor rect */ { Drawable dest; if (subRegPtr->pixmap != None) { dest = subRegPtr->pixmap; x -= subRegPtr->x; y -= subRegPtr->y; } else { dest = drawable; } TixpDrawAnchorLines(display, dest, gc, x, y, w, h); } Tix8.4.3/win/make_pkgIndex.tcl0000644000122200012240000000153110767574734016464 0ustar jeffhjeffh00000000000000# make_pkgIndex.tcl # # Creates a pkgIndex.tcl file for in the Windows installation # directory # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: make_pkgIndex.tcl,v 1.4 2008/03/17 23:08:12 hobbs Exp $ if {[llength $argv] != 3} { puts "usage: $argv0 " exit -1 } set fd [open [lindex $argv 0] {WRONLY TRUNC CREAT}] puts -nonewline $fd "package ifneeded Tix [lindex $argv 2] " puts -nonewline $fd "\[list load \[file join \$dir " puts -nonewline $fd "[file tail [lindex $argv 1]]\] Tix\]" puts $fd "" puts -nonewline $fd "package ifneeded wm_default 1.0 " puts -nonewline $fd "\[list source \[file join \$dir pref WmDefault.tcl\]\]" puts $fd "" close $fd Tix8.4.3/win/README.txt0000644000122200012240000000751410127401640014666 0ustar jeffhjeffh00000000000000RCS $Id: README.txt,v 1.7 2004/10/02 01:25:52 hobbs Exp $ --- Build Tix binaries for the Win32 platform --- Before you start ================ If you are not familiar with Windows or do not have a working win32 compiler, you can download a Tix windows binary from http://tix.sourceforge.net/ This site also has more information in case you get stuck, such as who to contact for questions. Required Tcl/Tk versions ======================== You need Tcl/Tk 8.2 or later. Prior versions are no longer supported. Tcl 8.4 is the recommended version. Supported Compilers =================== * MSVC++ 6: use makefile.vc * cygwin + mingw/gcc | MSVC: use ../configure If you don't want to pay for the VC++ compiler, you can get Cygwin from http://www.cygwin.com/. mingw/gcc is the recommended Windows gcc variant. No other compilers are currently supported. Please post your patches to http://tix.sourceforge.net. Customizing your build ====================== The recommended method of customizing your build is to create a file called "Makefile" in this directory. Set the MAKE variables that you want to modify. Then, include the makefile.vc. You can look at the top of the makefile for the variables that you can modify. For example, if you use VC++, and you want to change the version of Tcl/Tk to build with, create a Makefile like this: ------------------------------------------------------------------ # My own makefile ... TCL_MAJOR = 8 TCL_MINOR = 4 TCL_PATCH = 7 !include "makefile.vc" ------------------------------------------------------------------ The advantage of this method is you can reuse your customization Makefile across different Tix source releases without doing the same modifications again and again. Building the binaries ===================== + First, you need to download the Tcl/Tk sources and install them to along with Tix inside the same directory. You can download Tcl/Tk from http://www.tcl.tk/ + If you use VC++: build both Tcl and Tk using the win/makefile.vc files that come with Tcl and Tk. + If you use Cygwin, download the Tcl binary distribution of the same version as the Tcl/Tk sources from http://www.tcl.tk/ and install it on your PC. + Create the customization Makefile for Tix as mentioned above. + Execute your favorite MAKE program in this directory. E.g., if you use VC++: cd win nmake If you use Cygwin: cd win make This should produce various .DLL and .EXE files in the Release or Debug subdirectories. Testing your build ================== Run the following command in this directory to run the Tix regression test suite. nmake test -- with VC++, or make test -- with Cygwin Run the following command in this directory to run the Tix widget demos. nmake rundemos -- with VC++, or make rundemos -- with Cygwin Installing Tix ============== The makefiles in this directory has a crude method of installing Tix on your local machine. E.g., nmake install The default installation directory is C:\Tcl. You can customize this location by setting the INSTALL_DIR variable in your customization Makefile. Nevertheless, if you're planning a wide distribution of Tix across many PC's, you probably need to create an installer program or use more advanced administrator tools. Using Tix in your Tcl scripts ============================= Once Tix is installed properly on your machine, simple execute the "package require Tix" command in your Tcl scripts to access the Tix features. See the file ../demos/widget for examples. Tix8.4.3/win/tixWCmpt.c0000644000122200012240000000154310031436051015105 0ustar jeffhjeffh00000000000000 /* $Id: tixWCmpt.c,v 1.3 2004/03/28 02:44:57 hobbs Exp $ */ /* * tixWCmpt.c -- * * Windows compatibility module: implements missing functions in Windows. */ #include #include /* *---------------------------------------------------------------------- * * DllEntryPoint -- * * This wrapper function is used by Windows to invoke the * initialization code for the DLL. If we are compiling * with Visual C++, this routine will be renamed to DllMain. * routine. * * Results: * Returns TRUE; * * Side effects: * None. * *---------------------------------------------------------------------- */ BOOL APIENTRY DllEntryPoint(hInst, reason, reserved) HINSTANCE hInst; /* Library instance handle. */ DWORD reason; /* Reason this function is being called. */ LPVOID reserved; /* Not used. */ { return TRUE; } Tix8.4.3/win/tixWinPort.h0000644000122200012240000000165010031436051015461 0ustar jeffhjeffh00000000000000 /* $Id: tixWinPort.h,v 1.3 2004/03/28 02:44:57 hobbs Exp $ */ /* * tixWinPort.h -- * * This header file handles porting issues that occur because of * differences between systems. It reads in platform specific * portability files. * * Copyright (c) 1996, Expert Interface Technologies * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ #ifndef _TIX_WINPORT_H_ #define _TIX_WINPORT_H_ #include #include #include #include #include #include #include #include #include #include #define WIN32_LEAN_AND_MEAN #include #undef WIN32_LEAN_AND_MEAN struct _TixpSubRegion { Pixmap pixmap; int origX, origY; int x, y; int width, height; }; typedef unsigned char UNSIGNED_CHAR; #endif /* _TIX_WINPORT_H_ */ Tix8.4.3/win/makefile.vc0000644000122200012240000002660510767575661015332 0ustar jeffhjeffh00000000000000# -*- mode: makefile; fill-column: 75; tab-width: 8; coding: iso-latin-1-dos -*- # $Id: makefile.vc,v 1.22 2008/03/17 23:16:01 hobbs Exp $ # #---------------------------------------------------------------------- # makefile.vc -- # # Visual C++ 6.0 makefile for Tix. # # This makefile builds the Tix DLL and EXE files. You can also # use this makefile to install Tix in your local machine (see # common.mak) for details. # # This makefile requires Tcl/Tk versions 8.2 or later. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. #---------------------------------------------------------------------- # # XXX makefile.vc no longer maintained - it *may* work ... or not # XXX use the toplevel configure/make with msys or cygwin on Windows # ###################################################################### # Customization section: # # Normally you shouldn't modify this file directory to customize # the make procedure. See README.txt in this directory for a better # way. # ###################################################################### # Where the Tcl and Tk. They must be in the same directory !IFNDEF SRC_ROOT SRC_ROOT = ..\.. !ENDIF # Set the TCL version. The TK version are assumed to be equal. The default # is 8.3.3. !IFNDEF TCL_MAJOR TCL_MAJOR = 8 !ENDIF !IFNDEF TCL_MINOR TCL_MINOR = 4 !ENDIF !IFNDEF TCL_PATCH TCL_PATCH = 7 !ENDIF TK_MAJOR = $(TCL_MAJOR) TK_MINOR = $(TCL_MINOR) TK_PATCH = $(TCL_PATCH) # Uncomment the following if you had compiled Tcl with debugging symbols !IFNDEF TCL_DBGX #TCL_DBGX = d !ENDIF # Uncomment the following if you had compiled Tk with debugging symbols !IFNDEF TK_DBGX #TK_DBGX = d !ENDIF # TOOLS32 = location of VC++ 32-bit development tools. # TOOLS32_rc = location of VC++ rc program !IFNDEF TOOLS32 # # Visual C++ 6.0 # TOOLS32 = c:\Program Files\Microsoft Visual Studio\VC98 TOOLS32_rc = c:\Program Files\Microsoft Visual Studio\Common\MSDev98 !ENDIF # Set this to the appropriate value of /MACHINE: for your platform !IFNDEF MACHINE MACHINE = IX86 !ENDIF # Comment this out if you don't want to compile with stubs !IFNDEF USESTUBS USESTUBS = 1 !ENDIF # Comment this out if you want to compile with debugging symbols !IFNDEF NODEBUG NODEBUG = 1 !ENDIF # Where to install Tix. By default it installs at the default Tcl # installation directory C:\Tcl !IFNDEF INSTALLDIR INSTALLDIR = C:\Tcl !ENDIF ###################################################################### # Do not modify below this line ###################################################################### default: all ###################################################################### # Development tool specific definitions ###################################################################### # # Build tools # cc32 = "$(TOOLS32)\bin\cl.exe" link32 = "$(TOOLS32)\bin\link.exe" include32 = -I"$(TOOLS32)\include" RMDIR = rd MKDIR = md RM = del # # Link flags # !IF "$(NODEBUG)" == "1" ldebug = /RELEASE !ELSE ldebug = -debug:full -debugtype:cv !ENDIF # declarations common to all linker options lcommon = /RELEASE /NOLOGO # declarations for use on Intel i386, i486, and Pentium systems !IF "$(MACHINE)" == "IX86" lflags = $(lcommon) /MACHINE:$(MACHINE) !ELSE lflags = $(lcommon) /MACHINE:$(MACHINE) !ENDIF dlllflags = $(lflags) -dll baselibs = kernel32.lib $(optlibs) advapi32.lib user32.lib winlibs = $(baselibs) gdi32.lib comdlg32.lib # # Compile flags # # makefile.vc in Tk claims -O2 is buggy and so uses -Ot, so we do the same) !IF "$(NODEBUG)" == "1" optflags = -Oti -Gs -GD !ELSE optflags = -Od -Zi !ENDIF cvarsdll = -D_X86_=1 -DWIN32 -D_WIN32 -D_MT -D_DLL cflagsdll = $(cvarsdll) -c -W3 -nologo -Fp$(TMPDIR)\ -YX -MD \ $(optflags) ###################################################################### # Project specific definitions ###################################################################### TIX_MAJOR = 8 TIX_MINOR = 4 TIX_PATCH = 3 ROOT = .. WINDIR = $(ROOT)\win GENERICDIR = $(ROOT)\generic DOTVERSION = $(TIX_MAJOR).$(TIX_MINOR).$(TIX_PATCH) # # Choose to build with stubs or not # !IF ("$(TCL_MAJOR)" == "8") && ("$(TCL_MINOR)" == "0") # # Tcl 8.0 does not support stubs # STUBS_CFLAGS = DLLDEPENDS = $(TK_LIB) $(TCL_LIB) !ELSE # # Tcl 8.1 or later support stubs # !IF "$(USESTUBS)" == "1" STUBS_CFLAGS = -DUSE_TCL_STUBS=1 -DUSE_TK_STUBS=1 DLLDEPENDS = $(TK_STUBLIB) $(TCL_STUBLIB) !ELSE STUBS_CFLAGS = DLLDEPENDS = $(TK_LIB) $(TCL_LIB) !ENDIF !ENDIF # # Debugging options and where to output .obj and .dll files # !IF "$(NODEBUG)" == "1" DBGX = TMPDIR = Release !ELSE DBGX = d TMPDIR = Debug !ENDIF # # File and dir names for Tcl # !IF "$(TCL_DBGX)" != "d" TCL_TMPDIR = Release !ELSE TCL_TMPDIR = Debug !ENDIF !IF "$(TCL_PATCH)" == "" TCL_DIR = $(SRC_ROOT)\tcl$(TCL_MAJOR).$(TCL_MINOR) TK_DIR = $(SRC_ROOT)\tk$(TCL_MAJOR).$(TCL_MINOR) !ELSE TCL_DIR = $(SRC_ROOT)\tcl$(TCL_MAJOR).$(TCL_MINOR).$(TCL_PATCH) TK_DIR = $(SRC_ROOT)\tk$(TCL_MAJOR).$(TCL_MINOR) !ENDIF TCL_LIBDIR = $(TCL_DIR)\win\$(TCL_TMPDIR) TCL_LIB = $(TCL_LIBDIR)\tcl$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).lib TCL_DLL = $(TCL_LIBDIR)\tcl$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).dll TCL_STUBLIB = $(TCL_LIBDIR)\tclstub$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).lib TCLSH_EXE = $(TCL_LIBDIR)\tclsh$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).exe TK_LIBDIR = $(TK_DIR)\win\$(TK_TMPDIR) TK_LIB = $(TK_LIBDIR)\tk$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).lib TK_DLL = $(TK_LIBDIR)\tk$(TCL_MAJOR)$(TCL_MINOR)$(TCL_DBGX).dll # # File and dir names for Tk # !IF "$(TK_DBGX)" == "d" TK_TMPDIR = Debug !ELSE TK_TMPDIR = Release !ENDIF !IF "$(TK_PATCH)" == "" TK_DIR = $(SRC_ROOT)\tk$(TK_MAJOR).$(TK_MINOR) !ELSE TK_DIR = $(SRC_ROOT)\tk$(TK_MAJOR).$(TK_MINOR).$(TK_PATCH) !ENDIF TK_LIBDIR = $(TK_DIR)\win\$(TK_TMPDIR) TK_LIB = $(TK_LIBDIR)\tk$(TK_MAJOR)$(TK_MINOR)$(TK_DBGX).lib TK_STUBLIB = $(TK_LIBDIR)\tkstub$(TK_MAJOR)$(TK_MINOR)$(TK_DBGX).lib # # File and dir names for Tix # TIX_LIB = $(TMPDIR)\tix$(TIX_MAJOR)$(TIX_MINOR)$(DBGX).lib TIX_DLL = $(TMPDIR)\tix$(TIX_MAJOR)$(TIX_MINOR)$(DBGX).dll TIX_PKGIDX = $(TMPDIR)\pkgIndex.tcl.src TIX_DEFINES = -D__WIN32__ TIX_INCLUDES = $(include32) \ -I$(ROOT)\win -I$(ROOT)\generic \ -I$(TK_DIR)\generic -I$(TK_DIR)\win -I$(TK_DIR)\xlib \ -I$(TCL_DIR)\generic -I$(TCL_DIR)\win TIX_CFLAGS = $(cflagsdll) $(TIX_INCLUDES) $(TIX_DEFINES) ###################################################################### # Project specific targets ###################################################################### all: $(TMPDIR) $(TIX_DLL) $(TIX_PKGIDX) $(TMPDIR): -$(MKDIR) $@ # # Object files # TIX_DLL_OBJS = \ $(TMPDIR)\tixClass.obj \ $(TMPDIR)\tixCmds.obj \ $(TMPDIR)\tixCompat.obj \ $(TMPDIR)\tixDiImg.obj \ $(TMPDIR)\tixDiITxt.obj \ $(TMPDIR)\tixDiStyle.obj \ $(TMPDIR)\tixDItem.obj \ $(TMPDIR)\tixDiText.obj \ $(TMPDIR)\tixDiWin.obj \ $(TMPDIR)\tixError.obj \ $(TMPDIR)\tixForm.obj \ $(TMPDIR)\tixFormMisc.obj \ $(TMPDIR)\tixGeometry.obj \ $(TMPDIR)\tixGrid.obj \ $(TMPDIR)\tixGrData.obj \ $(TMPDIR)\tixGrRC.obj \ $(TMPDIR)\tixGrFmt.obj \ $(TMPDIR)\tixGrSel.obj \ $(TMPDIR)\tixGrUtl.obj \ $(TMPDIR)\tixHLCol.obj \ $(TMPDIR)\tixHLHdr.obj \ $(TMPDIR)\tixHLInd.obj \ $(TMPDIR)\tixHList.obj \ $(TMPDIR)\tixImgCmp.obj \ $(TMPDIR)\tixImgXpm.obj \ $(TMPDIR)\tixInit.obj \ $(TMPDIR)\tixList.obj \ $(TMPDIR)\tixMethod.obj \ $(TMPDIR)\tixNBFrame.obj \ $(TMPDIR)\tixOption.obj \ $(TMPDIR)\tixSmpLs.obj \ $(TMPDIR)\tixScroll.obj \ $(TMPDIR)\tixTList.obj \ $(TMPDIR)\tixUtils.obj \ $(TMPDIR)\tixWCmpt.obj \ $(TMPDIR)\tixWidget.obj \ $(TMPDIR)\tixWinDraw.obj \ $(TMPDIR)\tixWinXpm.obj \ $(TMPDIR)\tixWinWm.obj # # .EXE and .DLL files # # (ToDo) $(TIX_DLL) doesn't have resources to define its icon, etc. # $(TIX_DLL): $(TIX_DLL_OBJS) $(link32) $(ldebug) $(dlllflags) $(DLLDEPENDS) $(winlibs) \ -out:$@ @<< $(TIX_DLL_OBJS) << $(TIX_PKGIDX): make_pkgIndex.tcl makefile.vc set TCL_LIBRARY=$(TCL_DIR)\library $(TCLSH_EXE) make_pkgIndex.tcl $@ $(TIX_DLL) $(DOTVERSION) # # Implicit rules # {$(GENERICDIR)}.c{$(TMPDIR)}.obj: $(cc32) $(TIX_CFLAGS) $(STUBS_CFLAGS) -DBUILD_tix -Fo$@ $< {$(WINDIR)}.c{$(TMPDIR)}.obj: $(cc32) $(TIX_CFLAGS) $(STUBS_CFLAGS) -DBUILD_tix -Fo$@ $< ###################################################################### # Test: ###################################################################### oldtest: set TCL_LIBRARY=$(TCL_DIR)\library set TK_LIBRARY=$(TK_DIR)\library @echo "====================================================" @echo "running old-style tests" @echo "====================================================" $(TCLSH_EXE) ../tests/Driver.tcl newtest: set TCL_LIBRARY=$(TCL_DIR)\library set TK_LIBRARY=$(TK_DIR)\library @echo "====================================================" @echo "running new-style tests" @echo "====================================================" set TIX_LIBRARY=$(ROOT)\library $(TCLSH_EXE) ..\tests\all.tcl copydlls:: copy /y $(TCL_DLL) $(TMPDIR) copy /y $(TK_DLL) $(TMPDIR) test: copydlls newtest tests: copydlls newtest rundemos: set TCL_LIBRARY=$(TCL_DIR)\library set TK_LIBRARY=$(TK_DIR)\library set TIX_LIBRARY=$(ROOT)\library $(WISH) ..\demos\widget ###################################################################### # Clean up ###################################################################### clean: -del $(TIX_LIB) -del $(TIX_DLL) -del $(TIX_PKGIDX) -del $(TMPDIR)\*.obj -del $(TMPDIR)\*.exp -del $(TMPDIR)\*.res -del $(TMPDIR)\*.def -del $(TMPDIR)\*.pch -del $(TMPDIR)\*.pdb -del $(TMPDIR)\*.lib -del *.pdb ###################################################################### # Install ###################################################################### LIB_INSTALL_DIR = $(INSTALL_DIR)\lib\tix$(DOTVERSION) INCLUDE_INSTALL_DIR = $(INSTALL_DIR)\include install: all -@$(MKDIR) "$(LIB_INSTALL_DIR)" @echo installing $(TIX_DLL) @copy "$(TIX_DLL)" "$(LIB_INSTALL_DIR)" @echo installing $(TIX_LIB) @copy "$(TIX_LIB)" "$(LIB_INSTALL_DIR)" @echo installing library files -@$(MKDIR) "$(LIB_INSTALL_DIR)" -@$(MKDIR) "$(LIB_INSTALL_DIR)\pref" -@$(MKDIR) "$(LIB_INSTALL_DIR)\bitmaps" -@$(MKDIR) "$(LIB_INSTALL_DIR)\demos" -@$(MKDIR) "$(LIB_INSTALL_DIR)\demos\bitmaps" -@$(MKDIR) "$(LIB_INSTALL_DIR)\demos\samples" xcopy "$(ROOT)\library" "$(LIB_INSTALL_DIR)" copy "$(TIX_PKGIDX)" "$(LIB_INSTALL_DIR)\pkgIndex.tcl" xcopy "$(ROOT)\library\pref" "$(LIB_INSTALL_DIR)\pref" xcopy "$(ROOT)\library\bitmaps" "$(LIB_INSTALL_DIR)\bitmaps" xcopy "$(ROOT)\demos" "$(LIB_INSTALL_DIR)\demos" xcopy "$(ROOT)\demos\samples" "$(LIB_INSTALL_DIR)\demos\samples" xcopy "$(ROOT)\demos\bitmaps" "$(LIB_INSTALL_DIR)\demos\bitmaps" Tix8.4.3/docs/0000775000122200012240000000000010767576212013340 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/img/0000775000122200012240000000000010767576212014114 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/img/tk42a.gif0000664000122200012240000000222707110476665015532 0ustar jeffhjeffh00000000000000GIF87aÒ{òÿÿÿÿÿÓÓÓ}}},Ò{þ8ºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ïtmßx®ï|ïÿÀ pH,ȤrÉl:ŸÐ¨tJE®ØëC›Õ6º‹®Pñ~ÉŽ1:d®^Úéµ> ›ïröLgô?nmYsrvys~k^}dމ‹‹•uh…—ˆ‚[Œ˜–a‰`†’¤ gx¦b𗤝qœ²°¡¶ªŸ¥š‘uµºÀ{±\¹±³«º°yxŽ·©ƒ‡…ÉÄ™ËÇÐpÉÑѯˆ£¿´Ã¨”ÆÐÙҷľà¹Ûžî¥ÜÀÌæ• çͼn„Âçèä§W@tä\ebeè_Bußô‹HÑÃÁŠÙËÈþ±£Ç CŠI²¤É“(Sª\ɲ¥K bÊœI@¸2ipöú‚lÄĈ4iÐÓA”ΟDE US€Ó§ ÝBõ#cžDqÁš®¡WEðB}Zz¬)T§R“vSÄÖÛΫ<‡µeë‡n±»aèz4{6m§kyãŸîηzㆋx.H¾Pýæœ|°ã›Ž#´ °ðX·!?•¬Ø°f—UÙMl´òêÌ…÷8‹v*eӨߢÎÝz0ì̼™&[v6mÒ“:s~ÔëŽØ`ûÞc>­r=Ž1¥jßÞ‘8öíàmCdüÒãÆòèÓ«_Ͼ½û÷ðãËŸO¿¾ýûø{„¯ö0þ†VªýwÛ |PcEûiWU±½!àƒÈàk!§@LýÉóÜ€`­f•$òdb†‰!(ÞNØXp¥Ù²•\®éÖ‹ÅÜÆ\G¢¬5¸‹[»EÜk¾•¨×yžxá‚<Ö‚™BÒhÙi fÐb8*©#“¥5c¤+Ic’øe69îØej%F$ŒEIæfGFQš\ø ’U9ׇ.ú•)f‚yŒTAÉ”Ÿ$ªè¢F*餔Vj饘fªé¦œvêé§ ^ v¸`àO’°ToÚ¨„g¢ªS¬-ôã£Zªig‡®l8›‚Ehsò %bÎþ•×Çú€gôf›ÁÎ8ä;ÓÛÛnRRij*âæã›ÚVKeµoNÄêo×6«_®yš•3Üòéå¹Öù™m¸çNc%­:€Ë¡·bºÛ#¯1ÆÉ&´ýzVç­4Ü$cs’Wç²'̦Åå™ñ!ó qÎmè•>Ø+îÉÓŠH²Ÿ%³|/ˆ:JÄAà_¬ÁªX2|êÀ",¯nþ~e¬VÊ*d²„%;(u†âú€®òΙ­›÷*#ÝÂÁ(ãàS¨ý%Å“±hO×ì®qãhS¡¸»óÎ;£±eï²0¿~{>y—_IíçœèN¬—ûçxÅã–-8ÇÛ¶»:³–Ã[*yçí²AQB³o[fÎ$¯çýD͉ºç5<ÛÌÞôS•ýöÜwïý÷à‡/þøä—o_;Tix8.4.3/docs/img/tk42b.gif0000664000122200012240000000611507110476665015533 0ustar jeffhjeffh00000000000000GIF87aÛ¡òÿÿÿÓÓÓãßㆆ†,Û¡þ(ºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ïtmßx®ï|ïÿÀ pH,ȤrÉdžO´z¢,£ª¥t›à°X X|cg6­:¯ËöxN¯“ÞŠjí—õ{i€€[pj|V‡‡{Œ~ІT‘‰ƒˆ”Œf–†v ¡F‰›’~\X_ª˜x¬Ž¦•V¤™©˜²ºŠ¥³¿¢ÂÃBµ»Ç­¸ÊÁ®¨Á°Ñ•­¼“„½…‚À¼·ÄÞßMR'p=‚Ѐ•C8°9lãÜ=èÆ¯¢EþzÁcVþcè{÷]Ú௮Úà¨'þ7i­;È3‹’ÛœèroN^ê¡ºßØö–¶W訌G‡ûºg†'^…òÉ/šàÎ#ÿ÷âÉV8È7ýóÖG½ëV›v5õßÇÎôìJÖ®êØ·›½ûû‹ÚCìïBCÝ%ýÂW êÒã¸Þг÷(½çmtL ¾2Ð $ ìôA ©q1+[ñ6§BÁOrÎÞû8(q‚iÆáÅte"Œò¤0‚,iëX²®Ò~£Mþë_Ïì<Ã%’yd´$ +©h6ú‰Ft ÿ'gV¯Ò/sp™rœX F‰Ïœ­ß‘[%@ïYÐBWY˜E+~Q‚,¤ôe˜Ã4¾Ù‘˜¦5¬­¬é?…´¢A»˜=+ZàŠ¤¹ëëdQ¨jZ³|.¤ò¬§ m ^×b¬õô®É6SͲ›Ê\OZ¶¸z0~ Ý3²“¨ì)V•‹Œd«whíz·šÚÊ ãšux<¿=ûÞ¶æSÅÃZ˜J­r²-Õ—Jê„OUT`ΰt®­HDç›o„¤ž}ICË:ÞÐsd!ý}@FÏÕ‚äx·3-n&…ÐsÀr>ve\ºš’Ç Öþ¨u nÖô|5?§änþà7ªuÎKž1ׯKô¢‡8cÎEqj{ít03êRfÓ«ÞjÖ÷ë`{¼¸Ž„øŠýìh¯/Ù×Îö¶»ýíp»Üç^KÛýî÷¤{ðÎ÷¾Œêz_Á‰³>®­O·~¡T_(Ò _¬Þ˜†­4Çø\Ý4•ïjŒÿxYFÞ“Û˽ªx„×è&æ|ç—öyíñ§£‡¹°gEÝ Y¸¢ÌÏÍVd¹­Bâª_½ÎZï„×vB F¸=%U¬@œòo>ÌÍ,ü‡DܲžC ÖsƒfÇk²Í-lfWßú€_Bö·ÿú&—Ø¡¦E^þë´W#ŸÄ@=?A¯ßão–ýñ§) ¶n¨×p2ÅW’•yƒ§å’~ÃÔ~¢§yì3zð‡nÆv%߇(í†ùÇ€×å€IzL%ä÷ZÑ'} U w‚JÕGïæèk÷6£2—wS3U\¤ds˜+9×c Æ ƒ¼xØwCH„‚FèÔ|J-ü`W…žÇ„M(Of—v\Ø…á”…ðå…b8†Ú†fx†h˜†j¸†l؆hèwp‡ ã†- ‡vx‡ˆ…tuV8azˆeò—xå·LÀuI؇jô‡v#4rpz5y¨g‡ˆˆŒ£ˆçr/U€Îþ‰žˆ„Ph‰­2…VçÚç~ž¶ƒt{ÌÁ64âŠ6uBUÍEŠ)†‰#F%ǧQÚ§|SÅ|‡9OÅTs„‚e¦[¸Xxºˆy¨€å–g~jɇF<%È•¸Œ'bŠ'°~í°÷i®…lÁ¶XœŒ‘Eųܨ ÞhàXn…(RÞG¥~³‡€vµlÏòŽÌ(ƒà·‰ÿ'Žå˜þ¨nH?hZ£tÖŒÎÁˆX¿E W[MuGJ”‘RqÔ‘Ò%0yýQjX «(sýAs¬ˆS=H{wTWf~"9’i†Ox“8¹‡2±“<™,$É_U”È&2”oçud¸”L0>)xM•R‰/OY•Vy•X™•Z¹•\Ù•i‘;Tix8.4.3/docs/img/docview_w.gif0000664000122200012240000003505307232766071016574 0ustar jeffhjeffh00000000000000GIF87aÇ!÷d‚´üDBDœÂäDbœ|¢Ìtrt¼¾¼$B„Œ²Ü &ll’ÄTr¤4RŒ6tÔÒÌ„ªÔ|üþô¤ÂìLfœ„¢Ì”²Ü*l\v¬„üþü¤ÆìLf¤„¢Ô*t|žÌd†¼,F„t–Ä<^œœ¾älŽÄ”¶äŒ®Ü@@¿$˜îßÿ¿@Ý3\k@@À 5¸±D¬œ@@\´E¬@²˜\íßÿ@¿@èL Aäª'@@‹Y@˜ß@ø˜X/ßìÿ@¿xîÿ¿!ø@/œXGí ÿ¿ü®@ìø˜î/ßÿ¿@è¡ðLX(@@üøF/ÞžX³®ìÿIž®€@è˜ì"î¹ÿ˜hðßE(@@)ž®ø‚/˜ðß(:c$Ø'{` ôœîíÿÿ¿¿ðîoÿìÔîí¬ÿÿ¿¿@¨|Ìî`Fÿ¿Q{‚`¬ @ðG(@Ç|`ìÿ¿!Ôíÿ¿ŒAîªÿ¿@˜$ÜñØÀÿ'²|Ü`À²ÔÜíÀÿ²,Ç!þ!H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱãÄ’ˆI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ'Ì@&ñH´¨Ñ£H“*]Ê´©ÓŒ„>JµªÕ«X³jU4¤À`ÊK¶¬X D¨]ËVÄ µogÈKwîƒJÌ(‘7/߀s(Á¡°a«XÌXÇP"KÞÅFå 60ÛØÌ™³B“p0º4‰Ó¨%ÀZ ֯OÈž}âCíÚ¶?èÞÍûC ß¾ÇN¼xŒ1F$O>¢ÁˆçСc¡:ׯóØÎGïÂþ‹O CùòRdXÏž} 5â¯È°¢Fýøó¯ˆ²?ŠÿE€¢Â€‚ à‚ 2hš á„R‚ †Crèá‡8„€Ãˆ2àP¢ '¢¨â2Láâ‹Sx£4Ö¨„Jä¨ãŽ<öèã@©„@]uð•YH&™[iõÀ–PB9”3L9e•v=àÂ}qéB _~9˜a V¦ 0–¦cEFÙ›•UÖÙœ}šh¤¡¦çj«µ›k´ÑöAÔVÀ ‡ºƒn‹îFÁ£1< )BÄPi¥Ã5 ©¦Í±Ð >êtÕÑP*vÛÑÀƒªÞÑ0^xþä™'k{´¶÷ž|öé§+ý  €"ˆ‚Ä‚à„±È"{,ƒ7Ü`‚³Í>û,´æ`­†Ö*°¡!pËaˆ#âP‰&¢XŠ-Âè"1P#7ú¨Ôkï½øæ«ï¾üö;$] ’Ÿ…X"8ÙCô%• Q¥Xñ€ÅÁ%.p æÇ. rÈdrPf'C²Ê,Oç0S–›}fi8›všj­õ[ „ÊFèЄºèÑK,±ƒ¤L_Šé¥Ç áÃÔS{ êÕ#\] Ö•Š `«*v®’ýj¬çɪ­ïÍç6}öÁ­þÕýk°ÄHìþÞ{k0ÁDàÍnø³˜xâ9D`Åã[Á­ÝV®—‡;bãVàù¹žOQºS°K€é§{@€«¯®ã¼õÒkÄKЮÁì. P¯@QA`$|ð 7±pÃ"D9DòSF\ñÅxi,ý–Ô»`=#co˜Éܧ¹2-'@ãÃiÃ3cs µ_ZΩñÙ³k°½ 'àÑC°CHÛÒ˜F@IY j>š¦|À)øÀSYã×00Á"xmUªúÚ×ÌV¶‡Ð4§YÊR P Ô¨Ö€F0kY£ ŠÀ5 jÐTc3›6Åó„´•ç O0a‰Â[Åçœ,´}xE7­@¾šá óÆ7bàXþ àxxüˆŠ (­`ÈmHr  \GÔ­)Nq\œóœ B7:Ñ©ë‹UtÆé G°C£âÈ6 (MiJ‰4z¹1!A¡ï@b¤ÝQz Ë"’á%laNB^”D°<*)cŽ„¤R;¦%Ž…){!CBT»§Iðuò“ß(É'ÊóU}¤´úXi3œå¬³ä™Ïè—?ýá—½4šÿ”¶( “Rw”(µJ5sjÍl¦§ø©hŽª:Äæ×26ŠÝ @7'[õ„“œä„fÕÉÙ0`?5 › ë,ÑP†NVjqˆO'0Áµèþ¡?cûÏi-®ˆu\’˜ÐÝZîr "‡;®+Šn¢%ÝUGŽ®î£ÐÀG_§„‘Žô¥‰JMUÊÝ™’(%Hx!•y±Ô+6]@ùxS³ˆ$@MXàdÈD6O‘Xºª$½¦~IK•ÌÀ½îìª-åVKÉàÌ O3«lßg~`VAŒ¯¦5PÓš‰½NØVµªð¸Š䑬dÃ)YY]vœ)|j°ä Pá>¹ZçhÿÓ`]À´©½Àjë‰Ã}އ´õg´š5ÄÄ 4…\þBµe9ÌU¡¡T„hç@×EäV£.£s«#Ì ¤Õ×uåX»“,u©x ^F¬¥8ïïtJ–>ît,IZH²°’X@$`I†ÐH‰9ý•¤–žZIìIuÀ¶ªÊЙOJF”2ë*fÀê€#ôz3vßY/쀴j˜50pÍý<¼?Çu(öß] H©j¯™€Íö§È‚[ÓÆ¼&È6î‹'<ÝLAd/NËžP…K®|>ûYÏŽ¶Êw“'=ù8׿p=䡘 DiÝ6qE\boÚ­…JÑÍ#—¸°:;_t _l®»>ÊqR׺J¨©@þ@’Ït»‡f©B^•dŽç˜XúxGJ_zHXÞ+ãõ\$Pú§“0‘TÉè‹äÒ¶„êêY/À®.0Œ&“AAÖâK€(·N™?ø|v"+…Çž³b¯&–jµ¥²•Ýì]µh„Z‚¢J<Ììõ{­®-5Ke›„&Ö¨9MÄNsǦr,×-YõÙÝH~­6·'C? ðO¯P€ï+£à´[VíÞî)8}Ævàd†V™ªÛ$òVr’ƒ"·„ëP*rîŠí¢ètpç-—£zVGC*hÙÍŽÐs´x½{ü–+Ÿ¼º‹4ô}gG>ZZ½Øß¹ÎþÐS“4¡§CzÂ_ô$”’ìo$óÂj’e“'3‚ì¦Èˆò«ê;%XA3VPØÂ¢K¤!f7?Æl¹ôv!@(6@Óö({)|%—’@äb€7c0&xÒDxÖ¤XÄA)ÐAèæAéB&„‚(NTàdN†+ö‘yRvo¤O2„ZZ&z7´O;48=ÔO‡#D7pDTP»ÅDc9m\Ä%.ÇE§\w:|ÖqÒõq·Ãr%5(gŒ6G"wR+50÷hèe4·S4‡sÛÇsI`Ô,þDª÷, gD®ç[SRäpW\'.¥{ÞˆqS¸QÂ7]W]h”…"Ç]ÊgRàUrëX^ZØh‹æ]ÿÒ;2Wi:¥bQÄSß7~ÿ(~G7sjúå_«öTÚ& @`™DˆVGY‡‘£dJê33¾aèJÆvòSK•ø3˜(4AÃ?œ8Wuµ4M³w¢Øb¥øW¦A4¶ŠdAƉMØD6=¶x´hdî†YI©dLVy÷Aoõá”vSZŸþ§o[vC¯•O¥'p?d[ÎPŽãzÒÈDfIE×gM8Qðy.»—\ÞÈQí"—Ïõg:²rF`]k¤—¡Ž¦—_¨;ÍÇFÑs숔¦^k8‡ c„ô0ƒ_º_”j}2F`!grUó'·ÆU—AJ™ñküç­ô6ð>8C€4Švh?¹”?*él„òKŠÒ€)ö‰D|g“ ä@0xÞVxá‚@©xB&d“¥n)8Nî¡Y*„+M™y.Oðäy7¸ZZ¶ZÆ’Cþöe>[§„Šã8€pK„žH¸žÀU™#.å9ZDQôé{¥|Ï5|µrþf—aS\Hhór¨Q†u”^ $ €C[´Ç†l·”K»´´½”(r‡b)&“Õ¦w äw¥ˆËš“ÝfXÆYxŠ%6:¥Rj‚Ci¥ê‹›Ó©NÕ‰¡åYæªúV•\öZ°õeý„z…#-C8D‘s„¼¥žNd§R$"vÚ„Ÿ³§Q˜gŒ«q¨~6¨"•…P¹–{¹˜›¹š{¹ó²¹›k^fx˜"›$=@©" ¡ô%({HGÅ_w±‡þEIYQ%‘݃&¢¹ª\Wš¦ùuèS3F«83Z’iÇVk‡€š¸‰@š4ºI¬¡¨WEºLµXþ3*;Ù5È 6=‹dÃxDf¥ß´­Wú­ó!®¾·/ä¥1$•¨µ®År•íúƒË-B˜8}‹[ {±§¯²‡9NèPÚȧ]TQõ#ÁG—=’°æØ#ú©#8‚#äRöB/ h!u—ø"i :ºI’0Æc²ôµºšÊ©üÕ© ©T`³ùjdR&*cU´fk'jJ—š+êk@£ €:c¼7:›:º’½$wÒ¶4ÏkwyDZ“§x“€ÇmYCMÕ4M\C9†°Xd3‚ÜD‹×n‘‡‹TÀ‚ðÑ‚òoõŒ4˜î+¦ûæ78„¦LàOb†z|k¯¸GøÚpþ˜Óž‡ûP‡EñÙ§2àa¨Â§‘k—²“Fý2É“á^ឨpá^¹Ä-ÜÃ]ܰà îà"þà#Îà%žâ$¾â(Îâ'þâ&ã*Þâ4^à÷ÍÁÃʸÜá<îáÁ…Á=äD^ä?näHNä@ LÎ]Iþ䔨0»]ÚïM×@Îß–ÝÛšìßS¾áb>æn$:Ž[NRQ‘å pr>çt^çsŽ"!m.þp9wÜ€þç‚j„è$å N†iÎåƒ]ß4Å;5Eåº=éU>`$/EÐ~k^Ï{ŽÏAç0ê¤^ê¦NêyêRNå>‘çy¾|ºèŒnË`þ¨7>åWŽËC1* 䢼æÁ—l¾äpêÆnê¯>ìÃê­Žè]=fèг~Êáà K$¿Cå¹<ŒŠÖ!ëž—Lnê…xýh¢~ìêžìÁ^;$Çì>â>Ó½3íDÝÞšlíÚ¾ãèµhˆÌ!äóN !ì;Ôè^ìê~ìì.˜°®åËNß"‘R:áìíönËÖnß‘žëÊçÕ^ ÕHÁíæþþ|ïÎéaíëgîð±žî êÅí|ƒùr«~ßI#¡ó8å]ï?Ë`Þз¾ï/ò òé%Ïéð,åñ(ÑÐ5uÌ*Ÿð¥žRYR¥ÞðóxõTÏçÏó9ŸÎލÒô­\ëùé°ŽpoÔIÿÌ^QõÏþÓ²>å)/õÊWîæžŽÄ¾õ ø]¨òøÓÊìdOö6å™ Úy¯ö©ÌöèUôÿðc(Õë˜ùš?ÓÞ>LÿÐç>åà ì*ÖaÕŽÖŽ¡®ð¤Îõ¯?ø]ÿRáuõ,Õñ¿ófŸ.ù²lí¾ío? ™oÖšÏÕ†&ÓS½üq?$þ÷Ïç(ïï£}‡z×^ ç®?ê°Ïý²ê†ÿùZîö¹_þ7åÅýä‘ïû¦Lù£ï—oÖÄßùgírÊÏ÷ã•ßÔGûÑ/ýîA  (p€$XâÀ… Àˆ±`F9&Iñ ć  p$IX¶„S¦L 'B<0àæNž=}þTèP¢E:¡!„œ–*E9!bBS©N­JP$Ö­V> ™¤ä@„$uN<é`Vªl™¦™uìÀœ9vÀÑcÆ$KÕt›0çÒV¶|9S±âš!{.DYòdÊ•-_æyà©Ndž£zþÕZ+[ÒdCW-]:rCÇ]Õ< îÚ›Múm˳âE½y3îÅh3wYˆ «\Ypñò™#ÎÚótêÕ­_êä§ÇA“¶­úyêñd‰ ‰{îÍØ gÛŽKwöóžuyÿöhðnßøkóâL«0æ\̹ñàƒ ;d°A£ z«&TúÌÁËX3:·Ú÷󢓿‚ï¦ÝîÒÐ7¾Z£¯¼„ŒC 9glÉ@'äÐBwäq: ·Ó©»Ij½Ár*Cèò=¿R Ç'—dR>»Pì.øË-CÁ4ŒF1kÂM4“zD3M5ÜLB¦+l'#Ç2þ²ÃžÖ«s( …Ê‚´ð‚òE¸4ÜéD-ýˆÅ<‹ PF1 ´q¢‡ [tMK/妄ôÓNž*õ”Èת¤,,PÝs²¨ÁTàJ ü¨L Võ3ÌG!å2Oé0åµW5;³3Ç: ¶XcíëXe“=6Yf‰}VYi§í ¬„ð” O†˜ Û ¸ý¶[nÇõv[qà —\p»mQwƒK‚ÜsÕM—]®ÉÛzõíÓWÿN»¦`¡< a…f8aö†8b‰'NøÖ–(žx)h-žc‡ 9äÉ „LØQC=™T”Uþ‰NOK‚yå›bfy"h¥uvZŠ–ZŽaþ¢Ögw¤Yd£êGî’Õº¹N j¤”Z²¢§Æ:ëÇ–x¡µ–¹ÈkÅŽºÇªÁF;mêHR!}é…{߸å•÷\oç®ï}óž—ïºÑE—Þ¾ß|ðÁ×EünÅûÆûoÂ÷;rÁ /rË%ÇürÍ3ç|sÏ;ýsÑónsXd«E½/ÕSGõÕWgçÓ_¯VuÛk}gÙa§½wžeª½¥…·øâ_ßÙøâƒÇ=x1q¾=ùè§Ç]úÖu¾Ùwí]ç~{ï»ÿ{ñÃ'|óËGÿ|õÇ1Iµß‡?~ùá/™è±çùìÉôÇ¿ÿ7E™Ôž&ª°agQdÿþüwð~LàOÖÀ J‚´`#¸Av°‚ü ×S?Ÿ(02auæ¤A²0„)»S ]ˆÂÖPdK³a]È+êЇGéZÍDÕCl°(E\áåç2êÐìj|! £8C*‚PŠW¬b ­˜Å)¦ðLMbÙ¬¶Ã³)0‰3 SØCñ‡oìUÙÇ‘ŽwÄßXpˆG>öÑh â9HBújAñX"¹HF6Ò‘¤n « UÒ’Ô*d&­CB>Γ¡å'EÊt¹/"Cãu IV^€C)LúdI»¼`¶Äå-u™K^îÒ—½æ/…þ™ËYs{ iHI&É$õ¼Ì™¯qâ3iF©KVÓšÄje 9‰HGýŒ9 g8Å9Nr–ÓœçD§8_àMoºé” I¥*Ûö¿lúï•|²;—cËtöÓŸÿ4§>9fJ‚àf)s$ ŒîMhJÓ¡£ÚU=ã·Í– (&PRLŠbPŽv4ëè­ÜIÅÓ:´ÚQ‚$¿{"2Ÿ+©MF••ð³%çMªÓ~†T¤’<(A¤Ð6Ês¥ò£èOR"‘t&“<–AZNžŽ³ªé¼ª9³ŠNú”F#e çi߆Á&_ž×%½¯´(«âÿÂ8ÆWv®Œ«`.ûwµ4nHnóít™ ß«ÀÈD *ñK-5gˆs‹iœæG·Xƒ¤³¾û(=Ô0ÐóMl—úÔèLÕÒµnsƒ2p'wÐÄ¥Ž)‹Ëãâž‘©éº˜ƒèóê3Wú_Óx¡sÜîwÇ{Þõ¾w¾÷]ï÷¾ÉËÁmu©½Ïʹ¨[µÎÚ$)³ë»DÅn"¡—è·z{\I\âÄ#fñ|;ÎÑT45†þðj<(CUŸzÖ7Ôõ«}ëa?{ÙמåCDÂæÁL¸’ÛÁÈCA¹¿ù’þÀÔ¿Sû¼ƒËÁš HÃ0Ã1$Ã24Ã3”D‰`KЬºjÂcÛB.|Bèó“QÂCRÊÃ=ÔÃ>äÃ?äœ$¹¤ˆšÂŸSà Â9TÄFó+ÑCDc‚Äõ‘ÄH¤ÄI´ÄJÄÄK¤%Aü ´êAÝpC¶Ò¾¢[ÄR,¥#);$5SdÅVtÅF³†J²Y ŠÜ[Á+“&|E‘ëÂDÄ]Æ`4E q?O¬?–[·QÃÅÂÆEd?¡ZÅf”ÆiD7 IƇ Äc4Ä¡[Æ´£ÆÏëÂ2aÁo$ÇrLºô²3¡³6)QLDæ€2s©:tćGyÄÇ|D8 Q&õÊF¢þ°E÷èF!tAãZ¬A`tŸ *qH}„Hs$ÆNcCuÌŽP®‡„Ç‚¤+ÄÃÀÑEp¤Ç‹hÜEèx*<¸,5•œFk<âøGÜ£:¶Òȃ¤ÀÍ+Âd;i Gٸɣ“C·rÉV+Jó½oœÈlOt·vTªQļÞ[>àK¼$¿¶S>D>LJçIh Ê™£J¢dÉŒ;JÖ2B¥´Ÿ˜É¤©I¥˧ÊI \»à ¿$À@ôË@0ûI&¹ÇÅ[ËÿóÊ´DJÄ„Ã$Ç¥„"cL(ŒÄ?8äHƒÄK&TÂäÓJ¿4KÅô©Ð{q”Ê9üJ¢4KÃÌ(þÆDŒã+̬ëÌïcM£sM¶„JRyËZŒË;L‚ä>>ã¼×ÄLÜ@ÎüK ª›_ŒŠ“,M¶Ã¨×lÍç,¾èTMÃlÎÕÔ̳œC áÀa—Š Œ‘wUÞò¥ßuÞ{õÁ—µ˜õ*umÅÂ(‚˃­ßvBý¥EoÁÝW¨s-Y–`vªW±eY-[`ó½[Uäß a›øÛ¡ \¸\ßáXµä,QÝE:¯­ÞÄäÛÍ^ˆ¬`ÊÃ_{ý\žMae…QG ×Îܶ5Ê!N»PuÑ.Eß\éíþaУÜHk`¤=Kî7#W$ŽÈ¶·~ÊV 's×iµâË}]ƒÕº2.㩜á5ÙŠ]bÞÓ v¬áв´­Õ6ÎEyELå.'UNVÓx¥ZëÔPˆíãDõT^V9ýÕwÅ:‡ÝÎXÆ —çuY0Ïú²cŽ5.8=Âÿ e®±…æ+v¥R7Õ7%WV&UF†eCÞUxýÔW¦¹ÿT¤…Þvb· ±‹¢Ù „A=Þ®*î«&Ùñ%KO½ÏUvÍg¥eêdäçlW]¥VÿÍetD&NìfÜpJÖdA†)Àp*OŽªdÜíÕÌ%@½ÞvžÚóT]ª­Ñ3þãù=ÙΔVhEä~fÔE¾Õh]WgèBàmæfoæD¢5aþ°·".»$fàd]¹åÉ·ÕèìË$ì^¿ŒÛ«;ÀÊ¥ãÝh6…ØZUéh^UØSeç•fé5X˜DGkéæ±Å`¾8¦ æ¸jÑâ¼èá­Oº5ÞâAðS]¾Ñ×-ITîß“ni˜fiw†S©ÎÞMé6Ý^YVh›kTdâ‡þå:‰‰.®ßêµ-Þìè¾ éPfk¢®1ff‘‹e˜ÞêGVäÑ¥jEuN-¾NÀæj¸³–Ãkpîåckj-å¡nkÎ|k¸Å^þ´A¶ÅèSüa -éf&dþ”>T¯®Z¿öçZl—NX[}d^á$Ái%N_=mU .5­èµÎÒÆ-jà¥Û`\MôlغVf­âÅ í©>í[æê¼Þm)ýk•é½Fº°Nl‚ ç.g“Ô3÷%Ef3f\ùa’¾CÂÄjè~n‚.äövåVhë~ïéïyDìûÁÙfÕ–_cã½­o™æB@ž‹ä(õ®áj]k•fXVeêdmOo,YüÆØÖi0åiö=ð'_(¼kg]îwe%­Îi^ØUžf‹žiǶî£süFl‡ÆMþþl´ëáø½q§ïêNä 5ˆ-îHS½º÷ÛΆF(÷sÙq@ë:Ï]áíØï‹ì ¤gP'S¬eáYt)mÄÆ&'Ö²ØÞLkµöhœ u,u7ßñS—àJÇò¡Áô"Ñt[fLÞÍíY'bŽ>h¬ÜÑÌöãèV>;Îevˆ`×u Åî oè Öðî–tu†G´íݤöí§Ýìy¶ÙÅõhÒ=Ï´ÛwR ‡$àjw`^þt-ïå9¾óðžÙ 6v¤fOÓÚ¸­Þanh§ iÏwy¯_K‡IV÷\WYXOkOÿËŽ.wí^E÷ÝË4>|Þd…ßàJÇvl§qõÍt}Öø;>t¹÷¸x·¾x?^YËZ &\ù^ŸH‡'Û çá—x»|X%^÷f×c_×Hîç—Àõ„Çyæ¥w,·w€är³@ù8ïWÆh·Sz¾ö@×öA‡¥«×R=÷Ù$?àsïþzòzì.yÚ¶sj¯õ]·ë\{JOu&÷bq&t/ᦷû½Ob9¯wU½÷ªçpZÏñ¼¿yç_@ù¿çn5/|µÿSÐ`þÉŸ|ÄÇö°ýõ²/ôsÏvzÏÿZ†Çð±Ï_n/}2¦pH…ôMU}¸G|©W|ª¯{³ï×b¯xDßcáGJs=ø¿*‰Â¿}yløì>óÅÎà.ú}ÿdŠ¿{[ßôþ­SÖûåïÙ¸Çï¹ßoˆŽý•fYwœÝI0K >Wå÷~ÚWõæçù†}å~VbG¥FzynïÖ$!˜¤àÁ dØPaBˆI L„`‘ E‹2Z0¡ÃÁ"G’,iò$Ê”*W²léò%̘2gRœh“"ΛX<0€#Р=nj‚Ç™JtØáiS’ R%hÕ ÕS.\þÈUäU¯Z©"ü:±(O¦“ð̘T)ܸrçÒ­kwnμ:qµ8áçQ¡qúönJ¦POíê˜+ä±’«JÎQ YËZjnHøbE@@lú4êÔªïÖä›wãMŽ> Ý—vÇ «¥6åü´1ÙàX3ß ñ«åÈbÁŽ4 á¶ÚŒ·‘êÞmý:öì¬÷rî=ã`Üà†OZ»âÅ¿¥2§Ü¹xð²“;W.ßñg¥gäyX;€ 8`H­u·mÍ&ÞP߉‡ÀÖ1Å™bÀ9´ÕpÈIÔV‚¥†av™gСå`nª¸"‹§éåÚ^·…Çà`åáánþé©ga\<˜ß~¢µ…Ti-y$’.ø"‚-È m ¦˜…ÒÅY’ߥuÛt8&ù%˜G¾Æ¤w2F#yR&›4•$ŠÔµ9'.y a ž)^”RzY' "¡hýý(¢‰*EæYcާf úW¢Š¹SœçUº)§/Ýé]Œ@=É'QjÚ)˜ƒÞÆG§¢ú*§Œ¾h&¤iúY$¬s^ÊQ—”æúk§Ÿâ™`ƒRöÉ «*U9"°ui©—£ùÚ,µŽj£J©ŸÓ¤ãz'ù—flîÊŸEþáZ-»t K¦l{âv,nzû¸½ñ8îR€ªÊ«´í ¬kþw°¹Fë¶¶"»nL:nsñÍů˜o–·Ñɼ±€ïvG,£Î[j·äª•…·áˆa‘xÅ›˜n¦÷r|óx†ª-šùÝhsKërcÙçr}”}yn¡n1Œ3Ôv#Õ6ŠL½?›|rTwuô…I/Çl–'Z3CÍIôò‡d_¨¶Ûqs¸öÛmÏ-·ÜjÃ}÷Üzè·q|ï=øß2ÉzÓF÷l#mšÎ$´@>Ür÷ÍG\‡a2í]Æ¥è¡3Û²ˆ¡>zÊ¥~ºê¨›Núf%¹¾:즾úíµ³;í™Û“Ç/‚|uaYfïÖ's1ØÍ­þtÙ}ò “Ùõ.[!îØûèýßÙw¯}Úâ»>÷æO¾Þê£ÿ~ìç{Zð¬Í(·ÈÍäzmôÊPG¹ª€zH:Oz’ò¥¯ðÛÞ¥B>ðÅÏŒ`û,A“PPvüàøB(?%MMg>#^`ŒW¡$_’×ÿÚõ/t¹ÅWtsˆ‰v¾Þn9ü¡ƒØ¶Äì°ˆüêá…h &qQˆ#Sâì'/ÚäÏlb?×¹Á!6qžï<âESzÏ9‹l“÷c¢ÎX²n6‰JI[åô’7›¦þ©Ë+_ö2sÕômoªOßéR7[ËþJ³ =ÙZÚ«ß.>£kÜæ[ØÁv®p‘‹ìåJ·Ø–’)TaÀÐQîueá0l3ªúˆ¨öäd]CÙ¬†î.•‰å8nG³m@Pî·i²vÚ¤Š¥ìoÌn¨y›Ó^œ©¤|ZËšrßíÞðQä=ÖÚÔûÚõN·mpœõ[ÂBýwE }”us;Ý9÷Ä¥d dÍÕžo÷ïѨ©å.9Ìc.ó™Ó¼æ-ŸÈ&óœë|>ß¹¸”š²Ù´ì&¸t0ò›  éN:Ô5-ô΢œ×G׶ͳ®õ­s½ë^_¡Ÿ^>î%ïºÐG4Ê•n’ ±8É3õGõݬ­Ç—JÔ¿¾ò–¿<Íáþ÷µñ WóÝíùÑ“>07f•lAo±=ô¥=ìc¿ è(^ì‹—jãƒò”¥gUòq·lÚŸ ¿øg>>È_Úå_ùÍO>ô™oüè?_úΟ¾õ©ýêsè0Ø»á]ÚyËô]¿}ì_ž¦ÂëF£mh¥|¿»>ýö¿àg/ÿÕç:»Í½îÉQTË_°ß°¬Ä¨è•îåÕ@ µáF ÍiÞ›4 ®µù…Û_îÍJ ~ ¬±þœ ê5”: Šd vßõ½ öÁ` n Ê  Æ Π º þ1 ÿ=VËÍQ]aÔßu5¢É}AUla¢PLÇüùÅ&¡^!Ù ~žËe ÕµÆH~ ÒVW^ßýÒðÈEˆJ–¡ba¦ñ !ÙYÅá³Ô`Þ " Rà"ÈD„r˜ïaëAßFâjž¢ßÚÝú`ò••$zß!ªÖþyb^­Š„…^[Þ£=Æ:ú\9âa¡šþ ö3ª¢O,¡Bã""€¶JÔM$EV¤E^$Ff¤Fn$Gv¤G~$H†ä÷qäËyašÕbŸA2J¦b¤ˆàÑô­!)¶"(#Næ$̤'’¡V™¡OJâBî"Q6Jl•£0ê$S6eÑ•$úqâ„U]iÑ¢SžÙKfc¿ÕÞ(.%ñIX^¥X^XEçÍOVXPn Tª¢!Â$a˜bnEd½Œ¥]Žþ^YnI6HK: :ú#Ïý„>æ#a¦aþe”Àe£üã9ú#Mò ;Šc8þc¦e&f^¦ff&gn¦fŠ#`:fcò\g¦ú‰H¦¦j®æD‚•.eX I¶HÐ kÞ&næ¦nî&oöæm&äçõåMB¢] pÖpÞ¥r.gå $szô%qVÞq>§uº\uŽ^[&ž”dçu>c`ç0&pZ5âyî zâz¦'{¾§{æåW à9'r~çtcuŠg~^#~þ'€ú›pvg€¨(áÙ'‚.(ƒ6hém§ƒF¨„NhÍ)(…^(†f¨~ ¨†v¨‡J¨…G~¨ˆŽ(ƒB(‰ž(ŠZgˆ¦(‹¶èXÎFizfŒÎ¨ŒÖ(Þ¨æ(Žî¨Žö(þ¨âã_ø&‘©‘)’&©’.)“6)k;Tix8.4.3/docs/img/setup0.gif0000664000122200012240000001024307110476665016022 0ustar jeffhjeffh00000000000000GIF87a¸òÿÿÿÃÃÃqqqëëëÓÓÓ}}},¸þHºÜþ0ÊI«½8ëÍ»ÿ`(Ždié®lë¾p,›iX x®ï|žöÀ pH,ȤrÉl:ŸÐ¨t:ý=·+Êíz¿à°xL.7­N¬Š6»ßð¸|N·™ê­¶Îïûÿ€awKy:Xˆ‰Š‹)ŒŽ‘’“”•–—˜™š›œžŸ ¡¢(™‡Y853ª«¬­®¯°±¦k>zH„‚º»¼½¾…·G¹Cm†¶JÿÊËÌÍtÉAÐ@ŧÒ=×ÎÚÛÜÝIÙ;à‡ÁƨÁFâÞ89ì:ïAñfìõõDööóGù÷üòü-¨nй"h(óQ-¹‚ýÚ­“8QÁ2‡ðËXþd#E‹9„HÆ¡µ[-DÕ0%1—$wÌ›ù‘‡H17{Ðt’SgÈšø€Æìb2¡+­µDshÅ};'F…êqç»{î°ú”©ÕæOªðºr 5ëX²TF¥Yµ¬T¡C‹¢<š´ÜÉ : Ö­Ûx€%~úïªàÃ@<>õ¶ÖÁ[ÍBFKñ_Äk-?¶¼WïØæF«»GS¤ž;Ÿu\Y2gÃf/WœzÖoFų)ÞþºÏoc}Œ3ïö {qç\zP‡=t-ϧ“ªvÝ›ífã‹‹C9»PÜ—3ŽÝ·¶×ë\æóþ¶§7ä¨B㥛ÚnÂHÒ§—,;8þÐÌ­õ4Õpä§oåQ¶šcß1›ûÁ¥rˆÈg}w1ô\†¸4µ×fº5h›ƒ­É&`ˆä™g•„ &âx>HâŠd¹G’\óV_iê£VÛi&d‰A&ÆìõcêÁU$“C†W¢~8^¨#‡JmX¥Ö$žu¿ÉèGM’‰ ˜FÖˆ¢‚é…·&[R¢éã–Ñí¨¥‡r©çž±H%ž<܉s亟ˆ&J[¢[ CŽ&*éžëMš:†ŽCK¡™"ʧ †*ꨤ–jꩨzj‰ª•<Ê*ª°Æ*무Öjë­¸ª±Èàë¯À+ì°Äkì±È&þ«ì²Ì6ëì³ÐF+í´ÔVkíµØ:Ë«–½fëí·à†+î¸ä–kî¹èË-·é¶ëî»ðÆ+ï¼ô>»î£õæ«ï¾üöëï¾÷šòïÀlðÁ0C 7ìðÃG\íÂ,IlñÅgœ0ÅJiìñÇ ‡|.ÇXˆlòÉ(§¬,ÉݪìòË0{ÌrÌ4×lóÁ3߬óÎ<ÛsÏÏ ôÐDmôÑH'­ôÒL7íôÓPG-uÔ@CûsÕÌN­õÖ\wíõ×`mÖÚºŠ/ÙY€öÉŒ½öÊf üv²BÏrÛv#{uÞÃÖÍ·ÆxÿMìÞ‚ÿêwáޏÂq3¼8°‡?þ°â’þŽxäßæ-Âr¬çåú:Á”?nyá˜{;úè̲^€ëîÂ>p鋟.xêÙ®þk=Àò¾;ç®ÿûêììþ:ñ½O,뾿î<ð¾"_.íˆÛþ7îØêî|ôÜwï¹ò½wÞýö ÿ½÷ãË®=ùæOþøâR_¸õ|c­æé‹¿ýþÆþû;_øþ×?–}ü#—üG¿¼ÙÏZŒž=†'ÀZ°‚¬`ù6Ø<ÿeЀ铷ø·ÚíÕÒžðxAý­p€ Äàò`X@2ozn“\L87RK…ý‹`û<8@!ñˆï# üŒˆ@âP‡¾âáÛ|8­õuþwí Þ¾ãE‹É!óÀÇÄ š‹„|“âÚ¨E~¡1ojDÛ¨¯7Ú-Žd›#ëeǹákzÜã¼úø¶?V-‚Œ!×fH !2‘ïZ$ÚÙ³GB²]’$%yfÉK¢+“XÛä΄ֶRšò”¨L¥*WÉÊVºò•°Œ¥,gIKY¶Q”: @-wÉË^úò—À f*oÙ¸Šyò˜ÈôY1;–Ìf:“\¸|¦4§ù«hRóšÍ´fÍÂÆÍnzó›à\17%7†óœèL§:™–ÃÊ-³dPì$6¯ʪi“fòœgµê ´{Æ,Ÿúœ?{æO˜4 Ñ(Ï ú²ƒ"ôYþ ÝC]æPnñYcÔœ3xÃÎu°Ží4Ý;[&¹Š¦†­›aJgØQ%2¤µiMúC^±‹ÅS_øÖçÒç¡Ô‚/§†ÎfNµå ˆ,´¡N‘øB"~±€ùЍÎ&ª2šVñ¢OMªJC8,ü°…û’êͨš2«Jë‹^ÝbV¡jFýy´yL©PY®xµ^HµéW‰˜Ä¦B5‰ÜÛh$aZ=™ÚU_yÕ ÷–X”®¥<*açgØ¢"Ö¦8Í©Ê?èýõ±| `Ý%V›‘ef}(²J[³Óž,µª5kiæZ“Á6¶ÄšmÌj+²ÛâVXº…oCæÛß+¸/þ.ÈŠk\_!×eÊýs›û\•E×cÓ5nuSv]‘R˜à ¯xÇK^UÎ5KD-iy×ËÞöº×•çµI›K_Ov·¾ø5Ù}óË_™U¶¿)9WÔuøÀæf|2ßÅ%øÁŽpÓ&ËÀÿ>.»¿Ý.Êö{1 ãVÃ'ã°Å<[ë×¾k€­eb‘‰Xb$Vm‹CöâˆQ±¥Íʨh[çÎ~î£|å1á5cÕb>ôlOÅXk´¡-”»úÓÁ.¸®–ergÝ7¼z‘ÊÆË¬wêØå)‹Gì"[ûåß½Ï|”an)\B_NÅ`#`ËYéñÙ­}íþ*dµÊ妱Œ‡"ð”\¬"ìÈC!Z‘¸g—Zq¯4l«™½\龕ŒœŽkYØh:§ÑΨÃó§'íéV7YˆòfµìÅ3ƒ€ ½5`kÝÄÕšލ¾ªËìjJËy‰”–ò¨ÁJjB¯5×Å&t ìÜ_ß1Ø×öggÍçDç9Ú}&ó¶ÝDoW™Õæ.ã’«}åô^XÛÿ;Ÿ˜“Ǿo£UÍ™ÞòçÍmÏ.úÛlÍì®ÑìÄc9Ú¿6f–%7eŒ‚ëàƒ´Ãbœ±†+k­,¶¶±]?xóÍâÇ7=5^HŽ;Ðã+vÄ3&ñ†Q¡+ÇXËöò€Æüb3GXþÍõys‹åü`;ŸgÏ%ösƒ}÷½HOºÒƒÙîrªwéPºÔá Å¢§üêù²:Ö·/­ûKt`»ØÇNö²›ýìhO»Ú×Îö!×9áÌ|\ÛçN÷ºÛýîx¯»½Þ/vHøï€ÿ»Èß>T§#ÎïO¼âÓi€ÁŸîð”;‚ŽÍ¶9Øo°àÏu6äö4ùÛ8ßù„~~ï¢_éKÑÓ»3ó:\=ë›eyÐ÷3õh“ýæÜŽë*ï{Ç˵k rÛ?Üõ.<§{‡ÿõ§‘}²ïiüé\‘È)ì>y”'K}gV3¯;~Û[ßk– ñâzS.Η¿ööþ%Pñ'Ù…Þjþ[ è‚çÜòjÜö|¦7Ì×}÷ƒný‡ié×i 8k¿—kZ¤Rì7rXrxx ˜=êgk²†qègƒgEÐö{¸¦ckž—Œ„{dÓ|Î’WÏ—Xú'j7Øl@…ƒ>¥kÇF-µ‡zX82˜c˶kø‚QYÐÖmÎ6€ëÆ,Aøzʧp X7¥ifcÆimv~Nhfþj‹U†î‡-U˜|tånDØ—u3ï—,k¨}WwYè}í2‡#‚ç‚“ƒXS„ñ‡}ˆÐR‡…5„›‡³G…Ù·ˆwyyøˆ*‰”ňCˆ–þ†hZ‚X5œØ‰À…‰¦‰爤hp¦HxmhxoxtS7‹´¸tˆJ¡4~W‹¼Ø‹îu‹¡‡Šy“wÄXŒÆxŒÈvB8‰š·‰ÉøŒÐÒ8vËøŠË·ŠØHc¹˜ÜX0|ç/‹ŽâØMMw)6Žè˜ŽQCr/(ŒײŎèŽ'¥VŽXønö8gøˆ‡ú¸¥Ø”øy\ò¨IÛèHzø}^åA:†f9Æ{ÃG†ÀÈG‰‹ôxB ‰,÷jFH€S˜ƒ3tóýâP†ö<"W~ëw}ê÷’F´’£gô€aèo#t‘ÁÈŒ3µ‘Ô·l?ègÈeèjrþ¦BPXhÝöoŸhÙŒÂfQXŃøÇ„?V”8`˜”©ƒž÷”= A›æ•#ø‚E‚þ÷gÈ€¤¦Vdiz`yX'åBdyiNFƒQØ{n••lùƒpYu YI>)}MhizÅé§nJ©—NÅTVpMù+$ 1&É/(©Qâ&“[Y‚[èfî#o'pȃA÷–‰¨“·—‘=4˜(™€Fd¨IPÉI¬y2®‰˜°— ×3·†ò2™S™ûByל#œúBœÔdœ ƒœù¢œÓÄœ3›£T›³'ãœõÒ„8C¹¤K¾8žäÉt€©šSTžê¹žµ¤›ùžþ߉žð9Ÿ]žôyŸà¢ø¹Šú¹ŸØŸþùˆ ¬7 Úyz [—  zu Ú +ö  `:¡üU¡Š_š¡ôµ¡j\ú¡¸¢"ªZ$Z¢e9ì¹¢,Ú¢.ú¢æYm±4,*Š¢û©bÐ9ÊÃV£6zŸ8Ê£;º=jg±ù£¤DZCšEʈGФ[§¤NjT<* ;Tix8.4.3/docs/img/setup1.gif0000664000122200012240000003641207110476665016031 0ustar jeffhjeffh00000000000000GIF87aòóÿÿÿÃÃÃqqqëëëÿÿÓÓÓ¢¢¢}}}ãßㆆ†,òþÈI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ï48Ôx®ï|ïÿÀ pÈ»¥Œ‚¤rÉl*oΨtJ­Z¯Ø¬vËíz¿à°xL.›Ïè´z=†‚È7M¯Ûïø¼~Ïïûÿ€\n_paƒ‰Š‹ŒŽ‘’Osoq„•“š›œžŸ ¡˜‡—p§¨©ª7«­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÀ¹K…™¦DÐÑÒÓÔÕÖרÙ8Ì¥ˆWÞ¢áâãäåæâàUéTˆÍÌÎßðçóôõö÷ø£ZëSíÝòêæH° Áƒ“øIQÅŸ!J["œ(€Å‹d¼‚‘¢ÇþV$6Äâ“‚\ jc—S\Ât2“¥Íy"™ìg2‰»žXrÞʨf˜F—$%Êô“О*Mýé3jC«M³þA @c×—_•\ŒÒÑëX™_3ŽÕÊÐÓªJ¢˜Š2II¸móâê,͵bÓ Lج_½ˆï¤£àdçBºñ 4±e;|5ö•ía¾Ã^mf±ÏÆ™(K6Uw2ÏÕ¤c›Él˜ÊZŒ=½T¶ï +Í™úõ3n‘Û…Uù·ó.´ÇìjT÷fëϳÇs¢ ê¸Æ:{«\»y,™Õ6™©VôáÍ𱟟¯+qðWS-œ¾²¼ þß{× ¨Ûmg¹÷}ä9ÖdãÙWß‚Ø^aJ•Xtö%]…ó5X\~üí'"ˆ(î¥`Šç¸Ü+¾“‹4êÑ[¿¹˜…x2î#!Ž@~qc¤éØßIɱrKwÈ4éä“PF)å”TViå•X^Éd-[Ò2ž’Y†)æ˜d–iæ™h¦©æš¨tiD çœtÖiçxæ©çž|öé矀*è „j衈&ªè¢Œ6êè£F*é¤z^ÐMœ”fªé¦œvêé§ †*ꨤ– j’—šªêª¬¶êê«°Æ*묓¢Š*­¸æªë®¼öê믮Úú%°Äkì±È&«ìªÂþr³ì³ÐF+í´ÔÛìIÕf«í¶Üvë-¢×ú„é·ä–kî¹è.ké¶ëî»ðÆ›éºpÈkï½øæ«¯ôŽ»ï¿,°²ýlðÁ'ì—·*ìðÃGÜhÁWlñÅÓIqÆwì1À,òÈ$›rÉ(§¬ò²'¯ìòË0ÓÚrÌ4×ló© {óÎ<÷éÌ>ÿŠ‘ žEƒštÒˆ^”)Ó„.}tÐÙMõ®RC}§ÖJO}(ב‚ ¨ØWGkuÙ´j]tÖSKmçÐFÇý¶Óqs½6Ýpí4Ýtæ·Þ^Ëé·à€ËÍ6ár}øáuŽ6¯g?«Ú…»}÷Üþˆïí¸å—÷Ýö癃žøœn7ηᅛÞ8ꊯκëw§.ù®‘Ïî*宓~ºî¡#Žt긿Þyéžû;樗Þ9ïÄ:ç¾ÛžkíÒ¯Šûò„ƒ ýèÙ¿¹è¸/zñ¬kïÎ'ï}÷à‹ÿzõ2çì,üiŸ{ïunüúä7/¼ãÿã^ôt§¼Ê=ï€éƒûè7+ê1T‹sŸÿôg?æï€|ú¶wAüïr  æ<À²Ê&ÕмG<Êpn€› ×÷Âvo€ž{!ÿ4W@ ~®†)\rtÄ"ö‰lF4™ü°•Ä&þΉïB!é‡Ä)rKŠVÌ¢þͶDqmñ‹`ÜÃHÆ2âjŒf ÖÈÆ6ºñpŒ£çHÇ:ÚñŽxÌ£÷ÈÇ5¦QRhü£Ÿ€BòˆL¤"ÉÈF:ò‘Œ¤$'IÉJZ2‚„T 3ÉÉNjj“ž ¥(ÊQšò”‚*%*WÉJ<©²•°lå+cIKSβ–¸ìä-sÉË4î²—Àã/ƒIL+³˜ÈLâ1“ÉL.³™Ð”Ó%§IÍjZóšŠ,Ô3£ÙLlzó›à g Í.²‹›è\T!KæGBÕ.|pÓíiC€Ò3jM¨?þqØP*‹ #3h*ÍY/?1 UÜ ÿV¾ÐnxkI)ÁÞ}½k©Hñ7ÓZÔS™F…Бj|%éÍÇÏ¡Æpu;ÌàO¸¥¦s¤¨DoÚ¨œ~l§€êéÿ ÓÆÎ§ä^-¸O*•©Å«áú JUWY•OñÜ>*×BoOmÛ °ú'­F‰=«éÀJÔþ5¨lk_Pµ¤’ð}\mk¨Þ*Ͼå餖õ¨¡šZY} n¯ät'Gý…WÂF6q^êOq8ÖµªÖ¬­¨cÉ:¾ÖI¶T”½ìï~˜¿ºm«¼ý¬^ßÖÛì×¶¿ýìoOþ›'¾úɯ¬çV+X´ÖÔ±#¡bGÝ¢—­©•*]oû¨Ü^vs¤SnE“›Üá·½•#nfg¨\ú²×½ -ççwDŸú¦5½®ìâ)6¿©õµâó¡KÿëÒû±P±*y3eÞ‰ª÷½ µ/zï[_õ¦w¾Æ,‡Û›_Ñî—‰ðšêÓÆ;á_U¯ìóp]1üÑ“˜½qÞø^ü ʹ}Ú&°TL)"·xV/.n‡•œc‹ÃKqˆå«á)ãøO@æ“…ÆbOùȱJrf—|ã1;ÙÊ=޲|/Œf4ûX¡=èhÁLg1ç°©…ᆻÜ3uw|©Þ2Wþß.×)Ë{Ú2QigIYˆ®ÔœÝâFCêÑŽóFOìEJOØÒŽÂt¦õ‹$"zZ² vX¤ó¤èS‡2Õ [µ+'íê¶Â:a²¾S«kÍÉ[#,×vÚ5¯é냻N»¤ãn«(jßJw³26º ÙÇj[ûÚØÎ¶I-®†)jŽ˜t6]›½ærÛUÚò§¶×Íîv»›Û¬ñv¢ÖX€zÛ»¹Ýs Q›ãµQ9yÇ]®‡ÿ6è€3ݵN6îmï|WÃovï“} ñº±ÙÏ:Ž6Â=­p†×Ûá &sšGrŒ«ùÊ&¯²Æ7¾èŽ{ä:N©È/^òˆŸüº3'9ËOírþ†ÃœÌý¾¸}kžsŠ·yÄCßù³ÄÉô¦;ý‘ð6iEï—‡»ÜC_¡·þð£§\èEo²Ò/úô²›éšæ)­ç½p«/û{ômlÁ-Þu‘׸Ì{£;r“>ödÛ`ÇÖØÚµFFz¹ï(ûûÀ?§d7RS|G¼Ç/0ÆËIØÿ²äFù€Yž_ƒß|/;°Ïc^ôM¤|\Ícrß™Åy]ùÓžÕУ—Šç,Ò°þ53³¾³®·“ém{Zæ~·8€÷½ç gÍàSf.–ißWâ–ª×w´uosÆÖÝäxº¡†Ïés^?—¤¿{™› e•39ü(9” EþRþó÷üµ$}¡enf°ŠtþWöCKÃc`‡r„RÝfjøKÇge¾×zß'v26òçuTG}Ïe} xJ vLftâ§|¨rh€%&gå×Qþ>ÒÅ‚OÄ>ðÔ_z¦g«·YÁÇ*óÔ‚wõz<–ƒpUBæã‚‰¢y“wu6(wþG€Ë§~<˜CýæotW[ô‡A¦ëµ^–g{ûCODølÈX$a[`ÈwgÆ(_È1ú·/o ˜†F†éÅ„Z¨=b%…K=Ö`f˜+HX[(%n¦%W…õ‚ U4ôOkè0m¨/o(u 5]r·{Í“g–‡U†ƒÅCdSþ€Xˆ•xA†gÌã…a%†”È‚ÜÅ`¨0˜/‘˜*•„¨…ŠX™¨‰a•ŠGµX 6d¶¨…ç5@ºˆ‹‡†i[«e3±ˆ/³(o¥e†Ä8f%ÈgxÈZzhŒ+$ŠwõЦR·8(h@ø‡½ÈÜURƒã3Ïx/чŨèƒc¸Oÿ7ŠY¸Šüx…Ä"Žâ˜@÷xp1è|FS„Ž5óŽö÷GŽÀ8†4ʼnd3V–Aª£C9+w¸@§8‘㘎-4nÞxЇ%‘+Ãòâ(öƒhøS×3 ÙC…g&µŒ~8ˆ½ˆ÷ä<2tÏÆC¦È8â3*þ/,Ùi޳ã”$Cmî6•TY•vu´ø/ÁE[y5êf•`–V‰•Ò¨/5¨Eg¹Bd-©–n‰.§÷–r¹– øsy—bd…x¹—,£—|ù—Öâ—€9˜¾—„y˜€$˜ˆ¹˜²b˜Œù˜‰¢prôv˜&eÀ÷{ïmdgxs%Q–©[ñW‹rƒ‹)™pd„èY™9cƒBš©I,„Á÷™»g‚0¦(®y˜=wo?W‡6é›OøgË•u¹wðu_Ïçw¨)'ÎuŽHœÎ'œö‡W‡„v\Ò™º¦˜}Ru>·œW‚~wrO–qljtËBYÍ”B‚¡i87þç€Z'Ÿ!¨ZÆ|â¼ žùHsô™sD·~™9r𗛬ž²ùX:çõoH ø™Ÿ)8uã×vßY›JfŽ#XƒšŠJ˜u6† «¢ j#êfŒ8¡ÙˆsïÉZ…Ê(üÙpþyŽ~¬)~ç) ¸žàÙžk¢oÖ£ú£ðG¡& ˜»‰£)tHŸJ Ÿ:¥Š,(êlR:žÝ7 Gº£õI¡3Êjú¹'7úq9Ê Ñ)pêÇUPˆw@È[s§w¥HvwÒœlŠœƒ6ÉÇ<ô9§ßÕzsw§ej¡lÉ”lÇ™ÝÒ¤Hö•oô-Ž ™ŽÇ¨ÕyÒ©‘ª-þ˜z¨µW£“N$ªž*i Zª¨:*Ž™ª¬ºª¬Šª®úªž«²Z¦´Z«z«¸ªºº«Ù«¾Zšg¬ÄšhÚ'Ž”¢ä&„Q*š«inöøšº¢lwrtb­‚rÚº­{‚­â­s®y"®ÛZ®®âZª»›ÊÚšc(´É¥ì'½nx‚®ƒ’®z¢¯ûj'üZ'üНrò¯¶z¬x²¥¼§Žò*pNö›€zÈ¥w({»ÂW¹%°çŠ®ÚZ­‹­Þj­®!;° +²ç*²{²®‹«ë:¤²rJ¯ d<Êu$ˆ‹Â5jvr±×Ú²*û±þZ­ [þ² ´B´K²@´L»²-K°‡ú²y³ 0hžWê~Fª¬P*ëŸK®, °åº´N«²i»¶h˶M°×:²²JµÂgµÎ׃¿G¥%ºµ;¶rÜw,a{¯?û´Ë­»²h›´gû¶Œ[¸!›´C[¶R;£t{hv€«£Ý'e!*¥ k›ÓJ}>[¶’Û¯‘›¸¥{¸H›ºƒ«¶ªÛ¸¯Z¹tB¤Z»}=ZŸ9‹³nÖ®ôZ±¢+¶ƒ‹ºMKºÁ‹´Â›¶û´ŠK¸¯ëº“Ë«{';ƒ{Ø™ hO§§Ú[‰:‹¹À¸÷j¸Ì+¾qk®Èµ›²k´…·®þÛºïû¼¿½=«©m”E…·HÅ /ë:Gøûxûë.ÀÀ9À¼—|Àw™À ,— ÜÀnùÀ¼<ÁøWÁ|}œÁ··Á,züÁ’÷²–šš ¯pš–_£Â™6™ãJ¾ò¼‹)2|º°J¿u®Ê(’ðú€º§†Ò ¸räŸÎK(5L¼Ÿò¯ò«›8L'ÓK†º¨:ÚYÁi„:Å$ÖgQ_q7p“ª'à¹Cë±rk¸f,·HܶK[Æ#k´ Ãûºm¬´B˾KMÉ==¼<-Éoù².0Ò)ù›M²bÒ¯bÕ,׿O/ìü*„T­‚Õa=—!Ì©_+/bÍ*i½qe-Âæ|ªnmÁm×Y}ÎtM¹v}×ø9×z-m|Ý×¼ö×€íj‚=Ø—׆˜…m3Ô¾Fý­~b¾ï[¼|¢É“½¿‹]3özÑ—Ý'GŒÑbìÙã Á™M38ÝÙnÌÆd¼Ú¼ìӮݾëûÓ6<Ǭµ͘¥3§°MÔ—Æ}˱¬´œÑÂÛˆýG»}ѵìÛJÜÜ =Ú¹LÒ¿Ѓ™Û0³ÜÖ,Ùæ»ÚMÙØìÛ­-Î9MДšÜi¤ÝbþlÙâÚ#ÝÞáÜÛmÛÐ ×ÄtÚE¼ÑÁÒ´Üß·ÉdŒÑó]Ò{Þf„ßáí¼ª]Òµí¯âû¸C=Ô¯m¶ÞÌàAáá,¬öLSH³ÖlàeôÕúk0 âžØÝZ°)®â.+â.Ž—Øãm5ã4~S6~ã•ã:ŽN<ÞãÑôã@ÞLB>äÉD=[éBȼÂFnQH¾›˜ŽvÕMÎIO.`ÁÈ“H•`è‡ Yå¨tå"ä…Þx>­a: æ±$æ?¹Ã¡³]h~ÖjNFl.…ûˆ·ùŸÇ,çs¾EuN`ÈA ©TÞçÆä—lõR@¹ë]ë¶Nظžë‡Ýâ¼NÖ»þëtfšpd‰ÌjÂAHŠf.­s w;H`+¸‹Â./ÄîF9Äñ齄¼í5Y¤*ÚíL³¦>í¿ò¤jÊ»”ÌÚžtk‰Þ.‚~{D†HîÔž×iŠo×>¯÷ùÎ:ÇYã–íìþš]æœô/æŽïèžíñ|µW šœëν {HZðírð?÷Ãí[íWrßþíÍ×½ÍÚÕï-ŸïðÞ  ™¤߃ڧí&(ñÊÞé#¯+%Ÿðî—Ì£¬ï²÷ðŸÙþî)߬3O.5/n¤Ø }k[–Ù|/£ÛWŠ1­ÌA—öNâõTU©%nõNìZŸN²Þõ~Îõ`äb?öD^öf?꾞öölOL_ÿöM÷roDt_÷At÷xïLy¬†xìâòù§¶)ø>`$ h,¼÷¹ö‚¢ÃŸòb×¢ðÞíEß¡ mhJÏø\äø’Î'oœ??ùà^ø/ßÐ§ï¬ØÎùÇ‚Ò6ÏðúuJ\ ñ‚/¯‹ÏúÀâúDò ú;ñ¥¯óõÜÎã®ûžÂû‘¯ÿNú°?ÈÀû·9úÈßø‰j~‰úÛ®ðÆõX«ç¨¿ý«?ÅÇ_ý›þ¢ü²ûãy¶OýßÿñݯñæŸ,è?üÐó•ù©Ïí¬G`g©o€¡Õ^œõæÝ0G²4O4UW¶u_˜"¡†a¶ïÁ DP(ŒGdR¹d6OhTÓÙpÕÎ7ä"¦_pX<&—ÍgtË[kÓox\>§×íwU;G³öðÀ@ÁAÂBC==CÅEÆFÇGHD¾,¿ÈKÌLÍMΤÉ·NÑQÒRÓÈϾÓUÖV××°ÔJXÚZÛ[ÜYžÜ^ß_àÎÝÐàbãcä¹aËäfçgh¥e‰j0k‹j쉑î íïñèróßiqò'vŠõ‰&wxêøó{|Úôzþí÷xÝNøÐ?l³Ùû¦ÐÁ€Nt(CˆðF4ˆq"Bó$ g?r? p¥=—/3ÐSÉR&Ë‚Ab鲦ş;ƒÊ,YÔ¨˜“êTRä˜&Ñ K†ãÈÔgÓŒ1u~\¨ðêÅ©@Åî.½ùôìš)ç]mÕ¶j›Š/‹æÝ[%6À‰qhÙÑuÛŠa+c~IóµäŠóJÌišºØž»}oç.CøþPÌ:ÄC¾ûyôHg2/gizøñ-¬ÇÔÞ½`ùùÏÓ×ßßzþþpÀÐ$ð@‹20AŒfA#”0'ŒB 3ÔpC;ôðCCqDK4ñDST‘C I¨°E'V”qFk´ñFS F^äq rH"‹4òH$“TrI&›tòI(£”rJ*…üáG|„‚ª¾ºÜ$ 7‚¬rL2Ë4óL4Ó|òJ, /‘:ôJ %¯j{LZ^ziNõ\8ÖyjªÑäXŸÓ2Œ‰–â–«¥VlíˆZyZ­¸¶˜9lo®úm¸½Ýqà`Å58N”þc-Îd—MÕ›Õ ‹¬Uüðæh]·í¸w<Ê«9Íšn“7úqÌ1¼ÐÉ)/Ûr·3}ôÍÛìœrû.¸|tÖ§.ËÓ=Ãj·ývÜs×}wÞ{÷ýwàƒ~xâ‹7þvÙ+ˆ=ùwþy裗~zê‹gÞ€å¯×~{*ì{ðÃ'#{ñË7ßÍ>Æ=}ö»/øûö÷Ìq~úë·ÿ~¯'ß|üû÷ÿÎonÉÛ_ùV×:zìu?*` ¸8°E‚bf8`-دò¨0ØZÚˆ³7·@ Qõ*KPÁ ¦pg”Ý_¨‡Q£rwb I€BæS„‘ þ]€0 'ˆ~‹ÄÀ4«""ÆQöBâàæòD[ f‰À¡­(¶È‡œaׄØÅ°™Í]©A[m,Ög‘уQÄUè®øF_±Ðs[¬a¡Æ°:‘0ŒNÓcÑd†§¥M]|Ä—ÍàxH]eÑBt\Áøµ„9ш{„dÅ`˜¯¿%ä^„T\ªˆHPJŽ”c¤ YÉ!¦r‹Ù#¶´2††](m (EN¨”)¸$-½¶¸—q2Œ¾&+6ÈYÞ jŸ¼e3™”K í2O­Yå/ ×Ë2J%3eÜæ5³Ù´±qÍ‹`¦3Íy$hFHšÜÈ[Ħr±<"Î+®êÚ<ñþó@‚%“Û\ÇÛxN€ŠRÞSEü¾¸17T¡MJ§ƒÖé ÔU œ 5gCôPET¢ ¥hGdQat`´«^IMzR”¦z}_A ª¨T¦3¥iMKÊÒôÝí¥;åi–:‹žU¨uk)P‡zÔ Š©KýR@¨FUªSeóœÊ)ªfU«[ÍÑ(évÕBMÔ£¶i‚ÀêÖó‚$ƒXÇ Ê²"è¬&¢±¦cÃaõ‘QGpë[×͵„ʲ«ZcY¼Zó}õëK ÁFªfê !,å‰*˜%.‰¦Ê¬’(+ZIqœmlc; ÈzãZã¨,$'þΪ˜-¶j¤ÅH6µ2®´o=­€R»×®P¶µìÛ5‡É43³ðœe'ÿ¹Û±ö¶©?åÅ Ê%)XZÖ/“ôcwõ9¥¹“­Îm¥!¡ëQéúç·!@X¨RÆ]”Qr¹}Õ++Y\B®–çíhzû³^"W¸ð%š0½«ßä¶RÀämí29ÊßsúW?fí× «Ü³e6c>i[­{±Ÿû…°B%œ Xõä=·+ÉÁéמ„[âg¬·Ãaó¹%è‰å“bøˆ±““Ћfô ŸÜ32'ZuL¶2"ÅŒž??pŠzU[Ç0äJgîÒû‰´u‹ùAÅ¢ÁÓìå+¥CíØGc­Ô‚h/eå”X’5²Õ¯n樻óg sz¾vìfÛÕDÄ7ŸÈ~1h£ø–ÑRÔ¼nœ¯¹l°m:i£mÔWÛ4vðŒ¶Õ&n‰¥[jÃ5Ö’›u @•:碲¸ÊÕ®eíË]ü6÷°“Nw(­½l»òVÙˆ{`'‚w¹™\ÛÌô-lÒöÛÒëæ\»Që¼ÅÓ®F{¸+ÃË|þÁ˜¶Ä©öoßܰ×ë¹8>ìü&ø¸ø¦ùÓ@Pr“ë å½Q¹#/|Ê=rDz¥æ»y[¤‹Ý9·âÎyÓs¾“جú›Œ‹MãÎês³š]1*¥íj¦™â¦³xP… ö°³Îé¢Q9h”Œó´wlí*ûN© ÷¸ÿkî i»~¸¼fÀ^ð»3ôt*é¨ ^ñ‹|áÁãRÄGžu—|åJyËg>°˜×|çÕËù:7Zô£§ªãßœhÒ§^õø;ì@Og¼çƒ­Ÿ|Q««ê^ÝëXub/{ní½0¿í¥´X®q#–åCƒÁï¯-á†øA¼îÐêú¨:þÁùÏçUô3ý’…Êú§ÞzÃ2Ëìx åØP„±³Uí¥s_í´×àëGþmWXÀþ¶ñ‰Þáe ±rû¿sÛ1ù›?Ó;<3(>ñÓ¿ý¹‡«7×ú8ù"¬Ž3¯D@«²¿Ošd>ƒ±î2°ïÒ1V*Ž;¸hS´ lï; ð ¶T³£Ýk¸—£¯ñðûª9‘£"´kÁ“£¿âÀ¼ŠºdR%„ƒ $ˆ»7œ¯üÒ6BÍB-"Â\s­99¨ŽÃ7¡;º÷À 371´“ø£Âj³ÂEŸ™¡«“A­“Czz7ªk'£Ãb˱äòA455Ô%6,Ÿ³ûÃþ*L@Dª·ûACT @Œ¦AŸ»cÄF˜4‹¾Ë¿c)PÆeL“f<Š$®-ü óÀµ6Gj4k¼Æ3ÉF;CF$(>Ãb1nGyȾ"(GsÔc¼<Û“22`Àüû¥n˸͢ôs±:|¿Ëj¢†­3¬ÇAGQÇ#àÇŒ$‚ƒØò¿gCŒÌ&´±¤G†¨ ÌÇ2ÛGìG.L¥y»Áq²7 þÁMº@„ I׹Nj‚H#HŠÜI¯3¿ƒ«7’/†/”%Iš”‡ÄEœ,DÂãSŠ ÔAi„É$lÉ¢9 @ʤ„’¥$‰mìº#|¤åcIë=«”@(L&)ôîlH› ©¦ŒvD#\¹b ·1ü?,š/134À·Ô»¸4«¹ä •¤º»j¸h»1e«¬7ÄCZrLÚ2¸ä·Á”»Â”«ÃDàÊÌ\’¯‰\<‹E MKÜÌÍ#É£šDÔ$Ì_ÔG>ÛDS¬MÛ4žØ,ÉÙ¼MÞìÍáÉÍ[ ÎkëLá,Nc(MãLN:@NålÎ7`NçŒÎ2€Né¬N´ NëþÌÎRSÃä'nà’ÆÐNò„î:Ü’J^£òlÏ"00”-»0 ÁÉHðü‹ìO÷ÜOåá@K›Ü¸Žµà¦û¼Ž¯€ þLÐþdÍzˆ¯ùìŒ %zП€GÎA>«ÀӀаp œÐˆ Ñ €ÏÙêH½ç€ŒãÀ:%Ñód±` jú ÝÐÏÍÎO²áŒüäð¬³Ð}EêBuVS½Tå4ÃÊm— ä¶eIŽyÃ$ñzÂs7·tÖ8‚Vì+Ö¬üÉGÅW­ôQSÁœV@­2z­×‘ŒÒP¤!~W}íÁWíWââVµDš(\A,Øg=X7SÀ4`G£ À•07m9µÁ?Rœ¡K£2dþ›\ÅX;åÕÏóU… XïòÉV½Ù{úGŒˆUwš¬òÛCW5ÁyuYK ×s(Ós(D¢½£5¤-‡Ó\Ú¢…ÙÿJT,qM©­”¦õ3«ÚôM° [ª°®åžQ[´ [{S¶Åƒ§mÛö|[¸%O¹[-ÛíqS½=ÓµE½½ýÛ][Ã[íùV]ÝÚ!\yŒX%Lñ„XµT40\RE\h˜³ºDPMI‡…Tg‘TíÕ¬Ë}†;›XžTTήªdÝ \J-]gØ3O뛬0È ­•áj܃l׬H„D\mÖÑeFÁý1Åý¡ô6¨PYäÝüWŸE#Žþ$C›#ÞâÅÆã=²äu åíÖ<k1l¥>€%Êjm]‚ÍÞRÝÞ,ë^]SWÞÌœp¸‡}¢üœÀ¬_æêV‹ý:öýÙm†Ó¥ÙdÙvTIb’Q±T0XoÝf(÷3™ýUßcÖûJüX¬X›`ãíÛ{Õßš­púUVéý\¿´Þ¤ƒá¡%a¹1a8¨Ë8T&ËDîàÞÐêûÙîÌ]òÛJ ¶á$àd¨[S:¥UâÖØCKX` 2Þ‹b)&&F'OSÀÚ-æâ Æ4øõœ¯M[5&Eγ³]c8.Å6¶[:Ÿ3®cÃç}V~VNV‚|èÊSdƒ–4„Nè>[h†Î3‡~è:‹h‰^ç;¦ÀÍhÕ›ãÐÓhf´2&5@žÍ$c"éþâc è0db–¬ÿ½¹’6i+ é_»h[X¥ûçI™I²éZ: ‹_˜Ši™FéãjXp¹x~¶Ï½V¤Ž–íi'AêbPétTïô rã°4j“¶j QêW`jD¦†-_ì¥j æhÂ0ëcúØ—Ãß^_¶öJšΑ ¸–9´¾7ß]ë»V±¬ÎêÖà¿þ¸À®áÁ~¦¼8².k‘0Ãê5Ê®vá…|ì%Žì”›ì¥¶X68”­p²ÌÍæltòlžíÂøgÇVí€aí§sí·VØ-ÔÂFÛ Ø&9°ãÝö…Ã.‡4Žcä<·Ž³7Nnç¼åþ®h~.né*ê®î¤êmìÞÏë~†þnB‹n3oòÞ*Úf;ín‘Ü®Óáî`{\º,hả<ùSÜî-nï\xoÏ}d]i}i”Tߢ–í¶¦bÃãc¼áÔM%p—žÈ'ËIÁo)Öo\àïM"£„7Ó†U(ÚYUmlL>l ¿ ïßÊŽÏÆüËÌF:¡óXt•aˆ]ï×\q[xoš"yeܸÖ\Å^±½±Ý}EñO¯…ëzÊ£åmÅq+g؇­˜ardÌlòÙï3ðå ßÖÒ^8Ns–_òÕBžóÕóL"Àl«@þ6Ï:4O_ nó—ÖqÔ|r}Ho­^ì½üPFYaUÖËþaæuÞ`9Ÿs¼T¼ñ¤Þ)‡ähŽje(Ä PrÂÂÏB26à®tKÿé½¾‡ßnCQeuC¥ófˆuÇÕd˜¦õ"!tXèî'þ/?J Wb_`o†ã~nf÷2[?ªænviÿ²gßîENvkolÏöõÙvn7o7†ò÷Ò»ôÓë3rO÷:oº{õŽæõ“fwXtw z/Õåðˆ´ï$ôÐ¥«Ôpxùw—÷á3ôuìo×ep=5xà÷Ìô÷Vxµ$N¶'¼]¹Ö½WàƒLþõþrx·xVÀø˜Lõ Ø'À‘uó¿œt»æu”_€ÿq¹p%?¿m#Á„ rµö¤b·á›?•?kÈ”#·H¿1štýG.¯Ù–¦øÁªñ½'Y˜û‹Eøº'…œß 5²CRÞá%DõßòYV¿íJ/üQw“\p´ú·´|QÀ|DÑõ}bGø™®öÞöFjiÊ—sφ»weŸvÚG)Ôªh¯}Ý?EsçØo·gÐÿýí ~á¿ýâ§câ?þŠ}åþïdæoþJÖeúFOoùLmÒ‡~í¡fõ„ ê_}! íOFåàU $ Þñ,eÏRÿüÿú£w¦°e½|Pa®ehQmæPúÇuéÞ}rÒj/ÎØðî?H) ƒXšØ€ñrò {òGÃx‡û»M7³Ýˆ1à0y\.Gc+*R«Ö+6«Ýr»Þ/8,w5æ3:­^³Ûj„7U:ÉI'«ùìkÂ_RÞ ”^Sb’“ÓP!Ù#d¤ä$e¥å¥¤æ&g\WÝŠè]aQ"Ó’jâbjQ,ã«"ì^'n®î.o¯/‡æ¯pçgÜÈʱ‹)ëé¡+Ò,sµþKjà«5­á°÷7x¸ødð¸9Xq¨òèz)Õ³_ì^<`këtT|­,"þ“ã¹€äU® Â(é¸J¦Â]B0<"R¬hñ"®ƒ .ÜÒ°áF.C’,iòä½ôA¨«£–혡|ç²&Μ:Á©Üeäf Ä@1œ r'Ò¤J—zë™Ëe †¢6êá f™i2íêõ+Ø0Nqì#H*Z³1®õhtfظrçÒ@˜Ð V׿Ø+”V,Z‘Õ-løpͱ FU[ÈÞa¯ ^†ø2æÌs*ë÷sßÐÂ&[©¼B3j. V³níú5ìØ²gÓ®mû6îܺwóþîýçÎ7Ðòu º8[c[¦nnÅ7ôèÒ§S¯n÷ÝGÁ;SÇ÷{wª7‘®b¢óô-V'hïþ=üøòçÓ¯oÿ>þüú÷óïïÿ{Ûe! zU”GÅy\57ž‘™òd V¥šZx!†j¸!‡ûxŇJqà (á^R8èBŠ"ɃqZ°×!5Úx#ކXÅŽ"‚@¢&ª‡bŒ,~gdP0Hä3¾À†Pæ8%•UÒØãXúØQ™žYá56&êCeÞ"ZZ÷ô³V™;Lá¤{Rfhç æi%Ÿ}^¨e€nÙe _:×6×hqŒ6þ*ˆ-12bràÙd…OF Ÿvê'¨¡Ú'(¤ŠHhomub‹+¶¨¨«mÊ:둈§¨¬a^AgRî¹g¯5´¡¦ÅëGÂûé§¢:ûl¦z ­z¨~`è‚­¦©–­‘!ÚØq•^êÙ¶>HŠâ9líÆ×캚ª»ì¼ÐÚë,µvmù…µ`›·µªÂh°˜yî‘åƒ+¬ S‘®±¾*Ëî»SÜ.¼î^|/Ç|æk€Ÿˆ<2É%›|2Ê)«¼2Ë-»ü2ÉÊ!ÃܡڂppÁ®ÂH ,®œÏeºq¼¿jl¬ÆÀæ™1Ñ;måÇÀ<5ÕU[}5ÖmþŤ*aCÚüq³¤å(6+ö|³<æ}©N‹,”JOÜ+§ÈÒ›ì¯;÷Ó}wøñ¾½ü‹ZÀßþô& aŸb¸Í¿Ê’^qþÜÛ›ú}9æóø.ƒs®ÙŒÍ(zæ¥÷Mm„©«¾:ë­»þ:ì±Ë>»êE-×çéñj:h:íÁ ?<ñÅoû̸çÞÜî¾;ÿü¨Ù‰ñ‚Õ[=öÙ£1e\[¶<ó h?>ùå›>úmA}úí»ÿ¾p_š÷§Ÿšøðë¿?ÿýg¿>6‡šOÌÏ<õCÏý¨@¹°oT “<çÀ R' ¬àäÁ*ƒü F.þB@yË ÙS¨Bˆ„%tËíVµB°\§†6¼!sX*2¹UÃ^õC&=â…[‹a×fè2±‰N|b ¥—¤JmBÄئ‚°éIFƒ&d‡ •Ø•æA¯ŒfŒV!DÅ)dÑ8óóÌÎØ&¦0!Ž`8 Zw¸`Ĭp©ã…#–$‰X-Ì jP«@Æ32²wÀëa%08òÌŠkX¥Èv¶aa‚éã%ˆè"6úì£T'á=hrŠZ#cé»G¦jšÕÙÀ•IÇåR•»Ä¥/]iOv‰ß³„(·”@bñ”…¼I2&È/ìŽtþ±¦,³éþZ’2˜8“¦*ÍfÉݘ–ZTµ@LúÓ~ȼÁþaKméV@”'’¨1O|BNq€>áôÆÐT£¬hœ`¹± á ›û–6ÇMTç› ç…Goùr£cX§Û‰ÀAR’þhcL“+ÆŠÅVÔΕw?K4Õ™X>Š´ƒ$ÅëϘYÑ8z¯ZMi<yKÞ†–“¿­ä®`Y/¹®Vt§ek/¶ÜÖšîµ] Ø%@Š P¾saج9ÁJ«’7¼ÂdQËK.«Zj<+-ZQë\‹Å­ÏEu3gÝë&rÚ-w›Ï•RJl6ð¤pY\Ú´À~i©g†à›J¡ruVÜ QfÁUnyƒÛjóë·ýbð¿A 0%þ(¹€²8)ýÚüjI­²äE§=d¬^ 4rˆ¦…ï$â!ã‡Ä4±—P,Ƥþ„N§D~²|ŒLA$JÉKÞÉ"¡¬eIy‚TNUm¯Ì”,o¹Ìª«Hî:Â/_ËÊbÆÉjü'ç9Ó™Î<”ZÖò¬ç=óeý=q˜ßÌä:ºÐ†6û¬èE3šjNr -éI·Äx–¾4¦3»/ÒAy”þ4¨Ó¬éQ“ºÔÇ{ê =êU³ºÕ¨#c]-ëYÓš¬5®s-æ[ëº×¾!¯-ìa'0ØÄ>6²}dìd3»Ù™Y¶³£-m¹@{ÚÖ¾vRªíms»$Úî6¸Ão‹»ÜæÇà­îu³»Ýî~7¼ã-ïyÓ»Þö¾w̸ô²*GÚZ;7Àþ)"þ@%(¸ÁPËt ¼áßÁ.µ„+œß‹=¦¿®ñK!â¿ ÂU°p+¥Ÿ­äêLŽÜ1¤SÀ„ ×úRùŸdá/~æ8£éµü7w¥Í7ËEÎÊ\/A0$nñTG•Kàu,Ìw®Tñ²|%2¹DÂÛ Ô\ê:?l$¶^^Ÿï5P9yѹ>Ižøûã\r;˜/îÎŒO²R©±‹'ÒrJRÝ쀥j{N… /}¥ VI–ÇþÁPOS¸ùã…UoŠúò¿öð¿½õ»Z‰£W|÷$9ðq€ÖŒÕð}õiÞyi”ò ø…WÏÐßRàwißõµßvŸýI ²ß%=`¢—íÌÙ%`~_^ÌŸ† òÅAÑóñÖWA ~×%JˆÜÒÁÆŸfÖ¸ÄT:™_{eÔ6àQ¹T¾àóu`µŸ ~“a¡`¢“®tËúQÖØèRñi¡áFéÖ:!óµ’ÙҔ剙Œ‰þX½ 䀡nÕv‚ ¶@È Ü(D6 ¥ßQ¡PõâaÞÞ šàZ• ¢7E E%âŽö`‘(Ì!– øm¢Ï@–$BŸzUäTâû)à&_õõ‚Ç9Òå`§5NVrbn.N!!º!ùe ýU &†¢c@ :â*κ` Öß L">ãr 'n–ú}âä)ã#þbømã4X4n ZB+ŽÈÿÁ¢CÄÚ,ÚÊ‹yâHð•äýÑɘßm.Š=Õz £0Ôìå ÞãåÕ.$VvõÜâ‰^æÙa£,ìy} ;†‡/ªþcîe"æÝâ?N)¤7öVéÑ#¶b”cÜ1:’«œÄÖyÇýZÄ¡™ößïå¡mýÛe„ãE¼¤)Å$±\pؤ¿Ü¡<Eø$n¥Lúž­ ªä¦#SV¥ÀñÅá`JêàÜñ U~e¹ ¥˜# Qe’À¤ðùíYd_¢)%JD!XæŽPSTr¥ÆÚ¥]ŠY£YVÕÎ$ÎåçÔ¥Üe,®dɱžGržÝ䄨“äÚåßu<æ^AÝ£ü5fü¹‘é]¡B’dç­c="aj†a>bžãT²äàíâ4B#2¦ çýÜýa¦êcR#ñþ=ÆÉ 3ŠáiÆ! ÂejêÄjN´fY¦%va-á"š×ûÍžpÞ\1Ú"n$u²I=òÌ ¡.arbÆrŽˆsªZ:æÒZŸÞfÔéU!Æ y²àŽí&#úaJ#–E6ºžx„f7*ây^Fz*ÄzÊ"tnä1Z¢mâ1Ê'x"`Ч'OŠ¢$Ž _Σ…(j$¨.¨bg• žbnŠ %Uaâvö¦·tçn6ã2bwÆár’(J˜è èk.fá$$îuž{òäë™^Œ^ž«È#iŽÕõñcô]$fÑ'€>dcÎ+Yi–þV éFéþ4'Y²'lFD™Ä›îDœšiH ©S®)ƒê$ yņfÆœÒé™ÞéaâiŠ&ÄŸŽCÏ & ª¦ ²&¡é¢Fª®Ù)—iWš¥¤fj«QªZj^j*¨²§’§æd¨ž*¨ªšnebB*ª¾ª ©j©Ú!¬Öê•Éê£^j›Ú*¯¦®²ªkꪞö*±:ЯޤT k±.+kQà®2«´Þ³vÃM+¶‚OµÚšQf«·rζÀµ~+¹ŠˆP¶Ì¬þH¹®«z`eV¢$²â¥©²+½–¨SŽ%°>ç°Ö+¿ÊEÄ5Uº¦i¿¬aÌ䥵Š,ì§¬ÃÆ…Ç1þgÁÃvš\ì¼>¬ÆzÅ8*¼åÅŠ@°6ìÆ–lRB \ÀÒɶ¬rú_-Ýa®’¬ËÖ¬Ið_½b¾²é¾Ú¬ÏFÿUQÈ!,·BkÏþ,ÒVúÛЮ¬W&-Ô"VJÏЭ¸vkÔf-A¸«V­ÓbªÖ†­8¸+È)ÝÎæ©Ø¦í8¸«|‚ÙÆk«*«ÚÎmSøŸ TíÇ&¬Ñßö­ßþ-à®à.á®Ük̬mÑ-㢹5.äÄãF.åšÃäV.æ~Ãåf.çúÂæv.èæÂç†.ébB‚„,ꦮê®.ë¶®ë¾.ìÆ®ìÎ.íÖ®íÞ.îæ®îûî.ïö®ïþ.ð¯ð/ñ¯ñÖ®H¯ò./ó6¯ó>/ôF¯ôN/õV¯õVo;½«öšÀ:l¯÷~/ø†¯øŽ/ù–¯ùž/ú¦¯ú®/û¶¯û¾/üƯüÎ/ýÖïù¢€úÆ­ùâ¯ýö¯ÿþ/°0°0'ðCtoùêo3°G°O0W°_0gpó/ú:0ùr°‡°0 —° Ÿ0 ß/o§U¬ ¿ð  Ï0 ×° ß0ç°ï0÷°ÿ0±1±1'±/13± ñ7±O1W±_1g±o1w±qG;Tix8.4.3/docs/img/setup2.gif0000664000122200012240000000304007110476665016021 0ustar jeffhjeffh00000000000000GIF87aÌFòÿÿÿÓÓÓãßㆆ†,ÌFþ(ºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ïtmßx®ï|ïÿÀ pH´Œc)P6L‰Ó­"§Å¬vËí.°`¦+vÈ ´wÍn»[có3-†Î§ÊxœÎo„çOxv}o…†‡‡UuiwyW|{€K–“Œ•ˆœžCjŽ¢{¤š˜jV£ŒƒŸ­®¯:Ч’¥™}´‹f´²°¿ÀÁ)”~¦’¢È¶¨»µr_¡ÂÑÒÓº–ŸǼ€‚„×ÏÉÙšÔãäÂÞ¶Ûáç¡zQ½Ðåóôõö÷øùúûüýþÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢EO2jÜÈþ±£Ç CŠI²¤É“(Sª\Ùñâ@–0cÊœI³¦M•\ Ì8 §ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§=ä,äÌY“ V!deEL£3½¾á µ¬Ù³hÓª]«Tª¡ª‹°^ØêG«X¹ßîâEA–­ß¿€ †êöm»èÖ­ Xñ9Žçªèë€Z˃++ÅÜ“sæÏ £N5|ñUVàÝ…—ç*Ĭü^ìõÝÛ©¿ø:L—rçË¡—z~z)”à¡ '¢Ë®ÕÎÕÍ‚}×tÚ„(iÏ»·ßÈG>t¼SóBÑ“_«ü-sÝð­z¸´ÞÔx¾Z·oš>þÿýòÁ§_}üE^g˜‡ ‚]ýÄ™4¸ e *a‚Bè ƒVQÙqš!(â… ’¨ÞzNµ÷Æ|qAWà€þé—Êb×ÕjúÇŒ,º¸ß‹PæÙƒ¿az!j6ä‘"yd‚I2)å”FJ e’Kþ–e†(ª¥b?Ò`‹cÆØ_},jvÿµ(&šlN ä†Ez%–@Q¸a…!§g•NV hŸåÑù$vyÖ—l„I`™0BZZcÔIcŽö¥Ù#Œmx…sây¡‘ãqÙä‡TZÙd–¤¥“æ±J!¬ŠúŨk¾Ÿ)ÕÓÍ}‘òŠéªÛ«XÝYþc©}…á¬Z˜ªšHâµLbxܶ æé!·Ú†Û!ƒÔ–XkY·v‘룲[¦­Ñ1[®í(_X“#3òKà²4 œQ'þUð¹·5šNÓDÆ,‚Šw”ŸœðÅF¥Ëð+ò4àÆ ‡|®ÆÒ±Ç‹¬òÊë‘\ò<I%óÌ4×lóÍ8ç¬óÎ<÷ìóÏ@-ôÐ4¿ÜD'­ôÒL7íôÓB-õÔTWmõÕXg­õÖ\wíõ 7…-öØd—]Ó×Ó˜­öÚl·öÂhó1Ët×Í–Ëê^÷¯™(t5ŸÃjâø sÛmøá)ÂM•ÞÃæ»BVi&¦ìànþžP8â˜gNÞy7þÞãQqé”gð±ÅÆ…†ú‰¨kî¥â¤ANæn§Ù¨šà£Ç¾÷ý­Î¾ýßî½¥ìªY­«ŽjQÉ»žx+Ðô¨]sÒyš{°Ï »¦8Óg_ýuŸçÀ ǺóƒqŽëVÒÃY)²\ÅéãlïâüJêïwÆ×‰a´â’Õ·ª5À.ÏB‰”ù†D1ô½ÎdÀ’¦ô2£­Ë}]©Wå"u›AlJs@¨Z¥ªˆ•PI{B­®4¥@M+(¬J•Ñ»í X4þ"g)ß•qôœ›$E?þ¹ Væ*Õþ¤¥gõIO.Œ" §øª>°òŽÂ¡þ¹OQG¸`±²Ø©ýu` a »eBSŠKÎz⨪8¨ñÙ±ŽV\T ÁôEé «:\Ù Žþø"~ͯ{Ûàóc ã9ë[s´Ö$I@paëJÏò(.I+4Äb+8÷ÉÏ~úóŸ ¨@JP`$;Tix8.4.3/docs/img/setup3.gif0000664000122200012240000000305307110476665016026 0ustar jeffhjeffh00000000000000GIF87aÐ\òÿÿÿÓÓÓãßㆆ†,Ð\þ(ºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ïtmßx®ï|ïÿÀ pH,ȤrÉ8"§@ºyB%T*sËízWÙkTŒ cÉß´zÍžhVô95Û¯ñºžñ–úñtawptm†‡ˆ7o{r€us‘zw…„|‘’Œ™’f‰Ÿ ¡&‹ƒš¦”}›“©¢±²³¤¯­®®q‹––ž¥¹Z•´ÅÆ´¶Ž¦ºº¹¾«ËÁ¬—hÇר†‚·Ê»ÍÔ½¾‚§Âà­Ùèéiyì¸Ü窕ÎÌíÝyêúû³á£Öü øL…?‚^;H‚¡Â‡#JœH±¢Å‹3jÜÈþ±£Ç CŠI²ä (Sª\ɲ¥Ë—0cÊœI³¦Í›8sêdi’âΟ@ƒ J´hÎ='¢À´©Ó§P£JJµªÕ«X³jÝʵ«W¦&5èØ<"–~]˶­Û·pãf ;Å0€wK  ¡V®ß¿€ þJ·î¨xÛMK`°ãÇ#Ã-løl€„†-› ŽœÌb:Iè ׊Õ'’S«–L¹rÌŠ!Ã…o¯»nœ#ö €jïÕÀƒníúl>ÈìÍ[ùçæÈ™SPkÅ SÓ×QŸžÚÛºðïà×/Þá¸gÙÑCŸw=^– K_Ÿß´»ÓîÕïûþ-?¼þÿÿTG^—%—Þyí=g›*ð5ÖPõW•„Öà…:%à€ ‘Øë!¸\{#"8ƒòAø…R©˜…ôe(£rXFhxáXÛsÌÝF"m&:ÐvId„GyŸw36ù]6ÞhžYù¨§`gW:¢Y 즤“`†Ù”Qú`cõ1)æšlbEf™M´àe›tÖ)Õ›pêp&_Ùé矊•':(…e衈&ªè¢Œ6êè£F*餔Vj饈š˜vêé§ †*ꨖjjꩨ¦ªêª¬¶êê«°Æz„Q´Öjë­¸%+(¹öêë¯ÀÒ*è®‡Ì è±bâþùEuy`V<ºá,³Ñ¦`,²ØÎ¨¬{V{cA¯yt¢Çµ٦ à¶]tKn±f`¸ žÛ§ºøfÈ.9‚æ‡&áWåf˜„¨% ÿìÙ³ïò˜Og8n ºùV¼Ú¾[`f¥Ž;Æ ïI£ ÍlÆâÄ÷Zì²p3AíÂ"Î;.4+o â‡:ìíÌ Xb¿l´`1/!ð¸>,n´ËõœeÄ!'hõÉæº5h}ô×r%­ÄÒ5?ƒuÖ JM"nQo-ÝÙ8ïqõÇD· öÝà ›ls”í¶Çs÷èóÚo;ì6{7¯8à,ãíxÞ¢ œåÛòþ˜ rÙ*—ŒÏz$¿+ùl›.¤Ý—>¦Þˆ0›É)ˆÕSMëëLÃåô8;—’CŒ°í?àµéÀ[%6Iî Q|—¤¯ü\¨GyüžlðûòÔ75üHÏCÏpƒÕwÕõÄQ(©ä—oþùè>"œ¦ïþûðÇOêúô×oÿýøç¯ÿþü÷ï¿Á  H@žüo L h”æÓóžòÀ9 Y&nhûGužV‚Jx …»²4,$ƒ(ðàKBPŒÏ#¡r§®Ðq-üD¿ö¯mÔ+63œÂ2ûaðaà`ÃÞ-‡{ËZÔ8Ö ž‰ýŠ&à —F–2¡-±‰NüS·Aš ñ‡[ô"gøv¸Ä¹ÇJ@T\×’Fêñd;#1¨¸Êi­poä#ÓØ1Èf)Œu|ÙµaB¿É n}üŒrÔ64ÆqqržÛ"i±E¶pDœçêÅž¶ ®’nĤ-9:NJГlÈ);–J5n,‹›Ù¢æ¤aËÑÐÑ•¦ƒåT÷ÈWÀNn<\Ð)µ°"¢±Í¤š.ùK`>N˜š’a¹8°Ik¦ ›6ŠÞ Ä™nz[à çö²Îºsyé| Æ'¿zÚóžøŒ§<Ó’Ï~úóŸóÛ§@JЂô M¨BÊP%$;Tix8.4.3/docs/img/setup5.gif0000664000122200012240000000301207110476665016023 0ustar jeffhjeffh00000000000000GIF87aÙBòÿÿÿÓÓÓãßㆆ†,ÙBþ(ºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ïtmßx®ï|ïÿÀ pH,FH$.ÙH2=JL”áœR¬Æ¬vË…L±1°à —›çqz"îºßðY᤟•ørÝ.Þï©iQLzw…jˆƒ‡h yd‚†|‹Šsq—˜™OvjUž‘€ˆ›“¦y ©‡UŸŽ§Oª‰”‘°¯£mš¼½Y³·Á£²¥Ä¬®¥´Ë­ŸµÅ²¢h}¶Çœ¾ÙÚ]„ÁÓРØÇ¦Œ¬u¹ÓÝàäÑ´î€ëµ•Ûõö?sèÏà»ÎÕÄXô©²d L@o¤üYk#îžÃ‡0òy“wm˜2‹Æö ÜØþ¬`³5ü2«¸J Fˆ(S’% ࢖0©¡ŠuQbº—á\ÒŒ7o®Ž9cîRI´¨Qvn†]Ê´iFn'JZT)iT³jÝʵ«×¯`ÊK¶¬Ù³hºZ˶­Û·pãÊK·®Ý»xóbMË—Þ¿€ L¸ðܾˆ¯ À¸±ãÇ#KžL¹²å˘3kÞ̹³gÈVóEò¹´éÓ¨S«^Ý9@hÑhI@»¶íÛ¸sëÞÍ»·ïßÀƒ N¼¸qÚ\ƒÌÖ–g#”w€È>N½ºuêH®kßn<ùëLË--—Ùo|èPPLçξ½õìîãËàݼ¶ðMèHñ2æªþû¬gó¨óá_‚ ^WtùñgyèÉO Tè‰{ñÑ߇¶p̆Š£‡‹Ív›r‡`ŽøÛ‚ÀØ46¨cqB’}F¸‰~B‚¨K†ä(ÄŽ?Å(™ŠGÊäGaŠ+ÖÖâb—区]© Ž^î(æo=>ôãJø!’EV"›pâ÷Ü›s9†s®çTnY£´Á¸V ITIh¡"j£•Vzh‹a†™%˜cV\™©&ÈÀ ‘v"©'2,Ū;‚t * )`~â¸"‹ÂJ(£~ÚÚ¨¡ºÖš«Œ ÞkŽ–‹¦÷hþª*§¤–JÓ¨k²m›¢m‘uB«©«}úê­¬Ò:ì¢WB:+¯åòª.®]ºb컹!kœyV䪪j+ª©ÓYo´w›ýÝûª¹µ.¨hÂ]ª«0¢²ëíĹRq•ÄÂk¬¼õ„7“Áþb ðE$¬ËILš\rª+ï4%cª¨Ì”²q¹Ž&úâÍ_> ߢ½Æ ´Æïr¼Í”z:K-¾LSIøJÓ!ÔÒ:m5‰KL*Ì»¸¤ fLt¥FÃæÕ½jp öuk×v‚b-fÙfoÚ«rç}®ÞÅÒ]7U¯áÍ÷à„“­ÜßuË–ÜâŒ7îøãG.ùä”þWnùå˜g®ùæœ7þâa‘Öù褗nú騧¾ùç eØë°Ç.ûìµ.í¸ç®ûî†ÙîûïÀ/üðÄ›ÍÚñÈ'¯üòªŸóÐG/ýôÇàxÆê[?óõ-ÿúî£Úÿî‡=ío¼—´º¶À‡ÏZc X÷–¾Ðqzå»^îê§¿ù}o€ý+ ýè†Á †Žƒäãßÿî–·¢oj.´Y C¨±¦p„ik!_(ÂÖ°‚ôϦ¶èÉ ƒCä˜ 8êñÎwxb º>0°pþoŽÓáë<Dô}Ì„]¼à×¼ ñŒ<âÍxEnO*ä–H¸ d´#Ù˜ÃܵŽ8c õHÁ:®|ô# ¥§G>Æ…[ä¡ýi2GZ²‘\¤iöÄ=-,lže˜A¤‰q‡‘t$›ˆDÖ΂7$ ÷~˜ÄSj°aT”)c¹Bʹp•cDdi‰?Zú°‰F«e)h::ód°Ìe À5(æÉ=^E€†·×µÒ€\d^ÓŠ¸CV‚Tb9ó‡J!Š3… œ&/7Fvâð}ç´': 97?ö2}ëgçÈefЛÀ”d ¾>[f¬šþ}â(×UÅÛ‘st§ãÛøòºö}1£þœ¤˜¸Ò…´mrs]I‰–Q9"£¾üÜäb§ÒÌ¥T‘ˆÛœí¨‡Å¢}ôqµ«©ênšIŸžÓs—Dœù€º(ÁÉÔj‘+*žpfM=õî ¹¥5KÍti`]šQÃ:ª¯º‹ª:×D©¨ÕlѬ=$«\ç:LbÒ5hKSXU÷6¬²U”[MÕJú¨ÁÞõ°3ìA)¸žUZûÚÕZïRQÆZö²˜Í¬fÅ;&L–>u’àfGKÚÒšö°zõ’_)ÛÖY Pw‹WWcŠ2Ë%ö„ ]¬m¡)¯ÙºŸ©Œ—o[[»æ–Tzþ ”>k‘Ð6¦B|c½†]–¦Ó^Ô%¡uU™Láâ6™•\½²ËÄíÂvhÈ…¬r™Ë.ÑúëŸQAT¼í6ªO¥©F/w]cÞ|º4Ý})(Þ÷m´›Ü]êìú¹ÛÀ Ø—Ã)åÌßà2ÂM}ðñëÒ ï·sÆeZÞèÇQ¦*¹€ZîjA 4âÞ°|>§:ÙH‡ÒÖy:}¦4­WLÓÆ¿-âI£ù4÷xŸÛ 'AA×Ñ·3®Ëû±’o,äG’ÇþÝc¡PœVöVÖÅ^´°ä´èÊ#'ø˜ ÞâéˆK†:6Ëo…§ŽiŒÊ×2R“u…á“ šgõõrÌhŽþíqïYÏ> ôÏ«[#&j(.ûIÅÙ å6‰'Let¬„Æeï˜F2orÄNª¡õGI–òÔžf!<YiQ ²Í³Ìô¦5È¢:‘­2ajHÃQÏ9\5|C­ëR»´ïJQ/·̤tç¬yÝã„òkÆû#ž-9j]¹ÐØqËl\m𰉆3¸Ñ«QGâxѲÖó•ç‰å _‘œ±f&‚%ùUfó ÒSd-`o¬ei»“Üå³÷¬f÷·†!­·¼Ïä4¯1Ëüþ¥ºÝ]Šç3Þ.¦>qzÚv¹ sNAùۓθkÿ¨o c\±'sõþø8\`±ÁÀý/?1¦ó”XèÖÝ ÐEŒÅƒ#è'ÕT%<áŸ[98'YÑ¡zôû\éWß0A…Nb?½\O÷Ù¤Ý{Ú¬µýíp¯¥Îž§´k%-Ž{·Þ|X3–]ï€×º»y;)º«7ÒY•yàµÅ÷Å;þñI³”á½óµ?ò˜Ï¼æ7¯@ʯwÅÍÍ;çGOúÒ—vòÔª<Þɲ僚¸6‡n£*ò6Üà_ í›u×ç¶ñ»ŸÚß Màó õ¯R½Dù°WWÄOOwó=æûßBß냮¾ÞË}tKßSÝÇŸñ÷„|»Kzõlgz„1Èf"k/–GsX^ôTg„Gwsux{zR~SÈM¿–jÁ¶G¬Flý•SX·Hð¦{œV†8kÓfkÂjHUlò'SC¨—dþj¾†jM7‰K%Tz؆±¦HXׇð‰Ü–‡pŠNgŠtø„Y´X€8‚_F|<ØrTvo,h‡ ·K’ÈrÄ'oÖv…ÇÕn„ä}Å‹ÃØmwx{¶Gm\dnpHGçæ†PgEl¸‡ÿ„DPèy)ˆ¬÷m.8eÖ€8x‚Øxhï•P|·‹ r¼ÈŽ(Wp@ø€1hf7˜‚A(8&m3˜€GøO‡‡~ƒo©TDtòt‹ˆ÷W–€Q·s]w^Ðv¿`Æd-u†°5| µuD•_4euI`4U=t^G’šc#9|üGüøBµ$…–ÓQé_¡6¸µQMþxeôå(#‘Çbçhz[•…e0Á7WUi/L©vèW‚Téwµ·x~w•Q‰]'–ô’•w·|O)•ÎÇ–Õv[Žg–ó‚–ç§–éç–x™—z/t™x¹—€˜‚¹-}I‘[9•òT}Ö¸’Í79@9{˜hº·ŒŒ9˜–92…)pÙzÌøZò%—Å(™“ò˜¢ “—š—™šÜ’™Ny—UÈ_R÷wèp–’h“Fš 9` ¸f³“ø•ÄŒªYœõš¡·–¯ÉffˆPëH¶d'è’pè„ÍxKýdœÜ©2ÈI‚tJûXo ¹„´é}/ÕˆLè„ôHž6gžþÝŸòò••THU5ŽóÆq¢¶œð Ž9(‡ÁX‡ iqòy ïBŸÏV|XƒÀ(_w¤T†¶ŸHˆÈ螌–9Š2‰ ª- ªx%§ŽÎ™‚Kv$$KP tQ6ä¢ W™:£§¢›9¢ì3ž øjNFD¸ùHÄDu¥EfQu´`&„4º¤«…͆‹ ʤR:¥™g£‡y0aÙ2^I¥\Ú¥Vj—\Ù¥b:¦›õ¥TH¦hš¦˜e¦Ì§¦nú¦Þé¤ÿfŽ® §vz§g)§0¥"Ч~ú§ ª§hG§a ¨†z¨¨Â¦Ê‰¨ŒÚ¨Ÿ¢¨uꨒ:©©…J©˜šþ©‡b©šÚ©žº©‚Zw„ú©¤Zªfª‡×”É©¦Úª™Ê©®«¤ «²Z«¯Šªä¨ªài«¼:©´Ú«Àz¨¿¬ÄЧÃʆ¨iš gR•’¬Åê¨Ç¢2lèUÏz­ä‡«©Ç§›Y81 j»y¤ÊÆ~ûWHY×s¶C€Š£~>9 ˆ­® «I¶cIHgÇ?ö8 QVìÈž ¯­*¯ÑfÙÉÎy¯A'Œ:¨;O+«kLƒ¨ŽÛkUeg°Bʆ¡ë¬K¦»Ÿš¡ß%Ž}8°[ƒ ‹Ž!k«#Û…úØ‚§¯}Ïí|½CÙÎÜþ¼Ï$ÇÃÌ ¼÷ô×$œ˜±¸ÑÈ-ÓÝiì×€±+Œ#ùÜ ØþRÜÙ%¦_Ã)”µìhÖ[\Â¥+x; ÛÔ,Ô§ÒݲU¹ø ˜¹7}µàz9àµË¼wàN·úmÇ>ᢢà~áùÝÖ{ Õ»ŠÓ[˜ÉbI¸*Œá¥JÓ^ÓS”$^âÕg ßékÕ³ºÀ¤Rh”³Kxèêß+wÊ=ÂÙ×e„¯*žó³“ÇÌ„=þ¡›ýÍá+M¾À?ìÛwŠÅ½äñÙä[Jž ݬݞԸѧ ‹X~ Zî±µ©Ø —Û”ýdbΞYæYÞ⻺܀M³Q]6ìÃUî=àÈãrNZß½ÞQ|Ý@Y`µ•Þ²8bó»„?%ß>þç>¨´Íª è§é^Jç¹ø¸þ.˜®é‹gá…ÅàÞ%êbJê¨N⪾ênâÆHÏæÃ[c%’®>М¥¨¼ëäKÄ/Ìë·®¦ƒÎa5Ù¹ö÷¹³ÌÅÿÇè ˆ£0ì’.Ût<í5×õdíÍMä-h»D¤o¸ÄОšgžÚyÚüœÏõ+æˆîÆ9î¢éj¾è‡$ ^¬êìnÉÅ+¿»Î·]ÃÓ¬“Üæõn4@ˆïù~Wµýð3{Ãî,ðóÞíלæ!—ð—¹ðJð»C Ưèâ+ꕦÎô:ó ¿ô¤üëˆ »V_öÆÀ‰M”}†ó^ßÔåâ?Õ­ËÇN²'9ã^Þ·Ô›­DbI _ñHj³^›=éáxòo(N<NÃÖ{íB^Ù9þ‚é8ë¶«Ûì+ÄÛ‰BûæOÉûÆ ½øŒö/öëLž]¾ù6ëÌïgAŒ³® ú/µãVñøLú¥ï5OÐð&ÈÍONÙ½˜¤ííJ&øY¼ÚH5Ø ¬¸¡ˆïо¦û»÷,ú¶½L¸ ›kîä쎄ŒæaòþdLå"nðHýný4ÿøÕîð:¨Ï±Ïþ«ÄÃl Ëý³øœDyþ¥ îPºÜþ0ÊI«½8ëÍ»ÿ 0†`žh:A ÃàÂÃj,@ŽïJ0>^á÷ uÅFryÔõˆM¦£HÅ!½gR¹ >¿/v,ÝbÍDŸóœ+¹]shN¯Ûïø¼~ŸY)J)'63'1…&16|rŒŒ]m“–—˜™š›~,‚ „/†2£‰5œRœ¬!Žz¯±­´µ¶·¸ž€ *ˆ‡¦Á¨,¬b¹Ék°³SÊÐÑÒÓ™»½¢4ÀŠ©ÔÞßàáâãä›Ö×(Ù¤ÛÅ7åïðñòóôþÐçè&ê§ì‹²hšœeX£&ˆ@ ¯Ö[Ȱ¡Ã÷ðé#Ư[˜ Öa¦å¡Ç çED7Q~C¦ÂLL6-¡¼¡äò̪š­PÉéF&%„n€<²¨Ñ£ÕHàôk˜IRýʼ,ÃÃçÎ6Wg²Á:kÕ—B½^¬ú¨Æ¡’ª]Ë6ÄÈk%Kì&‡ªX–aí%C³o^²eùîý¹Dá]­\·]̸±ƒ·½âV4¶Wª—ºiõ:²ª†°f¿a·¥ix•b+:y:^Í:$äPMµ9mX/Ñ,Ÿ¿1]û.غ€GoUXpóØ´­“+ÿøZäÙQƒÿöÛUpVáþ¹«‹~8´äÎzç½¼¼yxͱÅ^ÝbMÒqnnG-¾£ç(G¨‹[¨öÑàù4ØyNz¾°ÀÎdî´b˜F(a.¦³Þ>íQÐmvèᇭTÈ”‚³1xŒj ¦¨âŠwˆ˜Ï…eØ ‹4Öhc9. ðÜ\Þèã@â’ãŽPY$ýó`L6ÙØ0>u JGV⊓Xfi”$ÊÆcƒ8ÅÇ’]UÄÔe*% “˜ýõ„"e²ùg"£årÙB‰2R§Ýtsr%VN€ú•o_\¡P‚η’¢äùž”*§ç‚}V&]m™m:“mù-:(¢áyú×þp2Z骖*µ”ŽQÊU$eÜÙtÙ’zªh¡š’Õd¥£¿«¡¥Æê²­]Êç—½u§iv 'u€ý7¬µ£òZê¤Ì†‹”³^Î굤;(w 6ŠîŸV멺(î½l‘Ë´öé†Ì{Þ$ |©> šA¨ö«m¢_ñ相ŒïÄé‹!¿R¬ñÆÔX#Æ™DÊñÈ$›ãêRDNidÈ—ìòËzx,%1TÂlóÍÉ,«Ê=âìóÏñèl¢¤¨ É’K¬d•@7ôÉÅ:4SõIG°YËNwÝ1Ô$Ié¯;Ä$§±fn-'Ù¸­­h¯:™jþgÜl—íhcÚíf+Ñíõß ©Té’EøpµrkSá}Ãm¶Ñz¨Ÿéâí+Bð¸àü&9^óV»LäŠ{þé禫*yêŠ|­¨š7͹¹¤ j¡G>æí~Þ:©€Éš¬ã•®lÂÂ~KlìNÏÎó¹öjº[îÒ½éÓCÞ®õÓÿxÂW/Ï<ÐÎÓLõÜf~Ýêèk_™`°œÝSyOoi¦ŽO>Øp‰1À…9›Þ6˜Aj?dHÑ:™&y£Oàð0øi%€úëZù¸Ñ³Md $Ì ÷°AÚxPi#L¡¸JX3LÌM…0\!ÿ"ã?ÚÅð†þ8¤ W–Ãöp‡Dáè¼3Î"„>L¢<€8£Ó(ïH¬—•HE‡0Ñoxó[ÝЇ3+M¸bàâ¬ÅµPÕ­qULc'f›.툇³Ÿu‚Å®CnqxŒã¶´§Æ>òáŠÕSî'½í%I>ß›"÷$çÇFÖ© ^ÛwGF6ÎWÞ«Ào†WFGzÒ¼^•¬‚:´ÌÏ”þ*e%\ÅOº2”„Lã •ÈS Ï]¼›)»åÊ^n[ÄØ„@Bt“ þcÁ#ЗÐÔ0­V #Fóšd£sjøÁ¥*(4  ‘9´§ruSah4 ³¸Lºád’Û‰Û6Ê„é°S`]Lha™GUîR^xÜÕúº…Ò»Å2Q2i©ªd)Òñ‘”}Òj‰*Uú»J±,íºßkYSæÝ´w2ÃK} ®ýDŠ“L*òöé¨Õ¦ µ:?GQžæ¤ù#äq@cÆœ¢òrfQÚ;¯z/’Ê‘¥îC%#…:K“®‹ Ad.Ù*»¬Ž¨¡o|h0 6Ì60qÇäÛΈ°ˆš-[mƒ,Õ»V¾†k .tÈ?-C̶“ªâ'gqèÙv²3îþ-iýú¢­ÎŒƒMT­l[µ^D͵;3_gËÛ'±V¸Ó4éÄð€§h X+qÔ[˜aV´W*î12‡å«¹$f˜"QT)0‚‹¤}æ¶]e&¦a½`¿ØöÂ×Q»6rküìªÇ”f+ê»Ï*Ù©òRºÌ]eỘ£&2—:=°\ñ{A¼fò6 âM3<ÔíD¶ŒTœžú35{•¤®y;DÄÉ«£¢Z˜ ³(çœ%=Dx„d“¿Ókr™VJX›Jy›Š”„þ"1ÒgW¶pËÔiGI‡Â¹þšÄIh!“\…6PY׿¹ UY€Úé#b‰5[Ysí7žXÉêéh»ðŸò9ŸõV~íYgÖ@`õigID×èpyŸxb žð%П<$ŒÞi|×I wr°ŸÖfqêT^¢8‚!XQãµ—ÞÖ†ëõŽI˜¡Zçp ®¢ ´ÂƒôÅ¢Fx7¤vH¦©™ÍT¢x2@¡ªr ù‘;V™då{ýÖtß¹…fh£Žq(ú ­5~`(™‰`@ ;Gze»“™7w†©‰¤ù5 £;jtaˆl¢³‡ Öv‹r|C›\ê[áw ¶¥¢Ð“›þµ›gºzÂ;4Yšmþš¤`Cqšwågœw‰u¤ ‰¥T厉a”"jƒ}ª#ᶦa§“rFk©^¸‘P©rÚ6YÈ©mÉ?#P©–êx˜šŒï°©¦Ê„3¦e¡‚«²ªºª·[ôù«À¬Â:¬ÄZ¬Æz¬Èš¬Êº¬ÌÚ¬Îú¬Ð­Ò:­ÔZ­Öz­Øš­ÉJÈ*¨KŠ«¶æ¤“®ñ&®B®åf®<‚®Ò¦®æ²Ÿð¯ò:¯ôZ¯öz¯øš¯úº¯üÚ¯þú¯°;°[°{°›° »° Û° ¯à®ÏCo:¢­{±›±»±Û±û± ²ÁZ±xçþ;h Ê®i” ñy‹p²°6\,«D+ ðIC&k«(ëz³T”³ ð²ç³>;³*€¢D+´=Ô´E»³Z…´<ú³ùð­Pë´7”µQ#BµbÚW;¡6«µ8ĵ³³ßz2Ûû©Ÿek¶1„¶€º¶ж5+ot+·Ô·ð·€·€{û¥‚ë·#„¶ÛZ`{©b›‡Kmv«¸Ì“µûµ@¸L“Û·–;M›¹S»¹I¹ °· º€“³¤› ˪¨Û [¹¬û7 úºGkºU«´ø»¼Â;¼Ä[¼Æ{¼È›¼Ê»¼Ì[¯:²þ«»»œËŸ"[½Ö{½Ø›½Ú»½ÜÛ½"±§k»·+[œ;¾.†·Í›¾ê»¾ìÛ¾îû¾ð¿òû¯áë½ö{¿ø›¿ú»¿üÛ¿¾æ dåÀð5ÀÜ\|À¼•À L¾ÜÀüÀ¼À<ÁÜ»Å`Á¶â«ÁÅÀ|U Â55Â$œP&|•Â*ŒO,ÜÂôôÂ0 O2ìžþKŸ!WËvÃóiáZÁñŸå0¹å Äå&Ää@ÄéjÄÑØÁÉ ÄíÊÄÆÄãÅæÃFÅâ`Å?ŒÁN¼Ã_¬Šx·>|jXŒŸN|\c\\lÆRLŒ_iâ‚ ÚÆŸvÆmþ¦ÅJ<:¨…ZÆwüƧ¦ÇEꃓɶ€ýÓ@ÔB=ÔD]ÔF}ÔHÔJ½ÔLÝÔNýÔð,¦P=ÕT]ÕV}ÕXÕZ½Õ\ÝÕ^ýÕ:mtÕ–20Öf}ÖhÖj½ÖlÝÖnýÖp×r=×t]×v}×x×d= i=3}Í×zØ‚=Ø„]؆}؈؊½Øy]Ölí×híØŒ=Ù”]Ù–}Ù˜Ùš½Ù¯"Ùj ÙgíÙœ=Ú¤]Ú¦}Ú¨ÚŠ-Ú‘] æüÚ° ÛÛ´]Û¶}Û¸Ûº½Û¼ÝÛ¾ýÛÀÜÂ=ÜÄ]ÜÆ}ÜÈÜʽ!ÜÌíÛ³MÜÏÝÜÒ=ÝÔ]ÝÖ}ÝØÝÚ½ÝÜÝÝÞMÝ ;Tix8.4.3/docs/img/demo1.gif0000664000122200012240000006070007110476665015612 0ustar jeffhjeffh00000000000000GIF87a(/ôÿÿÿÃÃÃqqqëëë‚‚‚ÿÿÓÓÓÛÛÛ}}}ÇÇÇuuu®Û玎Žóóó aóÿ‚ÿÿó’’’YUE,(/þ !Ždižhª®lë¾p,Ïtmßx®ï|ïÿÀ pH,H× Él:ŸÐ¨tJ­Z¯Ølp™ã ¾à°x ^’Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…fv^‰†Ž‘’“”•–—˜™š›œgˆuŠ"wŸ¥¦§¨©ª«¬­®¯Œ£‹ °¶·¸¹º»¼½¾ƒ¤s¡µ_ŠÆÇÈÉKÊÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêåØaÃïZòóôõö÷øùúûüòﳂ±ø« Áƒ*\˜ ‡iHÁ+CÌ D†3jÜȱ£G‹Û\ôTqb±þQ~\ɲ¥Ë—09$3sŒD€5ÅäŒÉó€Ÿ@ ª†èPaˆMŠTOÐ¥¸ öœÚPåCb,(þ¥ÎNª`S-•:ÆèئdÉ®IÛôè%µh̶ K××ד`¬ëZ §^4wë Æ7n[¹Eç¾aËÔRa2KvøÓß|úx²gGgÝ~ª±è£Hå¦> ttP1¤Y#ÚÌkר™–nMmí§§o»­ý¹8¥ÊX#f6ëŠÌÆ£S ]º¬oß¶±çý[;ãÆÜ¯ç®Þ»ùì¼ÏãïZ»ô÷„’ ™ðòÍ_.C‡ÏŸPè¡§—ÚzÃÍÕ[c¦}þ—]pê¸^‚Š1xy.(aö!ß^6ÕçÉ}\ᕟr"fh¢ÿmgÝpBháSî÷"pìÕX!*š†…<®fá‰@ÒBF-˜u˜‰ÍmUVÏìä“r¤Hl8›>.¨ Œ¸}W‹8>Èš€î9hcdP¦ÏÆÐw¤}%jb’^ý¥æaÙ¥aâi©'uªõŸ—Øyã¡"jfx6JgÒâ’:jé„zÚH%z3¶'fƒ28fä•:ª©?’zªz^ê(ro~'s°ºjk€‹†š¨¨¼ª–©nS¶·*Âé(œ¦ã±Z쨷6Z«úÍŠßþ5kmh^«íJ϶ã̤kÖ¹í¸‚èHî¹.= ’’áRk'ºðÂAc¼ôv¤®H%ùu·ëôëï¿,ðÀlðÁ'¬°¿üRÓð4ù>¼ðÄWlñÅg¬ñÆwì1ÄÉœ0@$—lòÉ(§¬òÊ,·ìòË0Ç,óÌ4×lóÍ8ç¬óÎ<÷ìóÏ@-ôÐDmôÑH'í²Ès*¢ôÓPG-õÔTWmõÕXg­õÖ\wtMã4r”möÙh§­öÚl·íöÛpÇ-÷Üt×m÷Ýxç­÷Þ|÷í÷߀.øà„nøáˆ'®øÚ €q¾$/.ùä”Wnùå˜g®ùæœwîùçþ ÿÝxØaGú騧®úꬷîúë°Ç®ùèÿcºì¸ç®ûî¼÷îûïÀ¯N;»eŒüñÈ'¯üòÌ7ïüæÃ_:ÙÏWoýõØg¯ýö­Gß×ô܇/þøä—oþùÞË 9õç·ïþûðÇ/?çéÓjüüøç¯ÿþü÷ovýb»ÝÙ`€²ýÄ€ôŸÈÀ:°n4[×6A¸|i« ¨Ázðƒ áû*ØÁ&0n\ŸÚJhBºð…0ŒaóHxÂÖðm)´ûZ˜Až0(2 ¢‡HDÏÑpƒŒàYx€O€´!§x&ñŠXÌ¢!XC%úŠ@©þâ ÿç8âõŠ"¿(Æ-ºñpŒcŸ²Æ:RmN<ã£ØÃ5ªQŽ€ ¤ CxD1ªÑ‹|Äc¥§Â>:‘ƒŒ¤$'Ù¿Bv’mL[5ƒÆL¢ ’V¤¤(GIÊëYrŒ˜,á&¶Ç;òЋ e)gIËZâî”±dcY¸Êû}rŒ™LbmIÌbÓu…4ä}8Lµõ²“ÇŒ¦4§©=Y>³•”%5·ÉÍn.›Ú´æ"¿×HЛèL§:N`:²m×\§<çIOØÅ³žøÌ§>g7NõépŸ ¨@ wÏô [AÊІ6t¡¨D÷ щZô¢é¼fþã6ÊÑŽzô£ ©HGJÒ’šô¤(M©JWÊÒ–ºô¥0©LgJÓšÚô¦8Í©NwÊÓžúô§#%ä€JÔ¢õ¨HMªR—ÊÔ¦:õ©PªTo*Ô`ôªXMgU‹—Õ®z5š[íËWÇJÖR†U3eM«ZyVE¨Ík7K\w&×¹Ú5fu½«^_–×½F­¯~ lÒ4×ÖV°+;bi¦ØÅ.¶±Žu,d#‹´ÉRö²=Ë\aÑV2xö³  ­hGKÚÒšö´¥-YÙ:‹ÚÖºöµ°M­éXÛÚÚö¶¸Í-jU{Úêö·À ®pEË[ß÷¸È}mq¡9KÞZn³f3nrþ§+[“Q÷ºÊ=v·Ë]ࢬ»à ¯m¿+ÞòþeÓt.å »Ú˜w» XÉÞÞøÎ—¾ø5¯}Ý›ßþ–w¿þ ði÷»ÍÆ]޽½å¯€ƒ à'·ÁŽ0ƒå«` [ø·¾p€ LM?·v\n…5Û “·&>±ŠK›â»x´-~1x9z×n†2s…éNº SÓ~Ã4µcÇéÅyz´Âuš¡Ý]8“ÚÐÍÎ/²ýÛYëÚ×ì^ö§‹Mni‹ùÌçN7wà i}Ëûµë޶pý]çzÏÛÞ“îbµç–Ì¿i[áÜNÀ™ŒV'<(òÆø¿•ïF«:Ï8¸ ï\s<Ô Ov¡Q^od“›ãïx´Õ¬q|?›åËN¹¨W­rX+»æ0î5¡Knþó[§Ü×z.ú°ósq;å;WµÒÛ<ê ]à9G÷Ê«Nt®÷Üã'¯µÉ{®õ“ƒ¶Ë<¼£0§ˆí4R°™KÌå2=éÉ?¦=˜¹DbcÉvfÎ=î ·b·÷í‘óùðNw7Íks”W=ñZ·÷¸ÇMr£ƒ½ãŠ/ûÇ·ôüÙ?×xã!Ÿu£ñ‘úæM_zÕ^´.'{ëyžyÖ“Þëð¾3êS/n˜Wþö‹ç<ì¯þoàcÜݸzïÉv¦çžöÅ?¶¤ß®wµ3Ó6Ô (÷¼Ûñ’Ëôûxm n_îݧ»"'nÆŠ·wòºío/•Ï>õˆù«gnþ×GþÑ×y÷†týWñ6xsòwü×€ôlë–lÊ×zø€øÇ{Ï·{ˆ|X€>F|€Æ7f×¶¦€ì†‚˜pt”H©TmvÇGÛg}߇J–æJkWwlôHº´ƒð$qÖ~neq†7k>zÿg‚u䦹g%¨t^‡\÷žgZHø„þg|¢çK÷…P¸…Œvt’7o|È|Q8…¸|`˜†k8†QguWo hsÈ'p‹·qTXhˆuÃ7mGƒ:è6pwH=Hˆ°Ôv,”L/èJ™VƒH´pƒ—8…n¤ç…ô§‡K¸‰ehx†{8tIøyŸþXp¥È‰wx€¿–‰(Ч‡t§o1ׇ~ør®¸¼—‡IØ„ (v˜‹û‡ç†xZX|YHZh—H…hGê'Ex'‰ÏˆIÒøNÕ8wt7ƒÓhNlS‰ˆs‰¯6‡€ø€Æ¸ŠV8€Êx޼XŒ*h‡ÒW‡XÇ|x‹}8в(s°øŠåXŸpI7‚b؉žèާ¸8Šï؆   uÅh€ì(…ðHŒéY͈ƒÚØÑxJÔøˆy¿”v é‘Ý~ß„7FqCø~X‘˜×‹ŒÇy(|ñ¨ŽU¸Œ{8hÁy[rér‡‡ÊH“h”C‘Ê·“LYv®}þÌŒNé“:©yMéx¾¨…¶zKç”Føxù'•‰P™|R熩¨”Y÷“ˆ­äŒÛV~Îèv‡ˆˆ5è}釒"ÙFäg7È»Tmàx8⨔b‡Iy«tnYp¾7 G€Cç…Œy“/ivI™¯È˜¯g‡ü&|TW…œH‡êHs£‰–®g”¾‡˜† “`uù‡³8™Â‚f×|¤XŽF@©éšn™p#I—;XB-¨wqw—ŽØvщØ÷KréÇÉ‘1¸~AÈHVE„[Ö ¸eZ–¨x\ݹ]G]㙎@Vž¶•‘È´p”ƒi€3˜†S˜L˜McídpfþŸàäü‡Ÿµ¥Ÿ÷)gSI_>wdÄ ù…žé9}{—MFÄžˆK”Ÿ…#ŸSHŸ êbÊhü™|ày ÷韺†™æšÃÕ¡ú^&z]yŸª9Å)9J8údáÙc9ú¡å¶<Ú_;ú£éX`*¹dBhXØÉ>ZeA*¤~¶¤Nª_P¥‘Æ\¶T£ƒs£FÖ¤:¥Tzjòø¥ôÅ¥bªVZKX*8Z:ddªbmZ¦ºõ¦pŠa^:§7I¤ìg!æ’Þ)§æ§vZbu¨¦„ŠpV¤`Æ’HÚ^˜õ¨©’:©”ú4Û$5gf•º©œÚ©žú©“z©PþS¤a¶V¦zª/¤d¥Šª¬Úª ¤ªŒÚX®:«´š?°z¤²Z«ºº«æs«zÚdíÅ«Â:¬Úã«ätÁJ¬Êº¬Ëc¬þ´§ ƬÒ:­¾ã¬ö“«Ôš­Úê:Ö*6غ­à®ŸÓ­aó­âz®èZ9äš/æš®îú®Eª±*bðZ¯ö8늬Ñz¯üÚ¯w“¯Ðz¦]•¦þZ°ƒ°Àº¯¦šoi°‹8ë~ »V û°»8Û’«V{±k8Û¨›Vû±&‹¯òŠ«ôzª%Û:ð²0³2;³4[³6{³8›³:»³<Û³>û³@´B;´D[´F{´H›´J»´þ:+7!Û®eÕ²¬Ã´T[µV{µX›µZ»µ\Ûµ^»µ ëL)û«+°Y%µ«ó²°¶lÛ¶nû¶p·r;·t[·v{·x›·z»·|Û·~û·€¸‚;¸„[¸†{¸rk¶eó´+»°a{:j‹¸’;¹”[¹–{¹˜›¹š»¹œ[¹ŠÛDc{¬û¸æ¤œw·;îi=‰5µй®ûº°»²;»´[»µû¹Œ›¬†(¡ÀimZ9©[=€Ä[¼PÙgº“¹k ƒë¼rûsë¼Ð·Õë×[·Ù‹·ÛK·Ý۶턽°»½ß‹¸åK¸ç;½ØnK¾Ùt¹ék»œ‹»¡ûþ¬ k¶ ‡q¼ŠÃ¿Î3¼ÆK¼Èëœn—9Ì+¾|›½å¿Ô«¾l¿àÛ·Áܼík·Ò ·̾ÜÁ–;Á Â|½ŒÀÖk¸é+Âòk¹ô›©óª»mcºDm7T~Œ(Ú6ÃywˆÛ~À}W}ÐÄÊEÜ7—zÀ<Àwç¿Ã¼*ìÁç›Âz«ÂQlÂÏ{ÁUŒÅÍ[ÂÑÛÁÝ{Å ¿cÌÅ,Æ_\Á+,»-l6«ú61˜Ãi—<¸w'y})œ2èƒz¨—nsÙ­ýÖomÍíÑ¥=ÞUMÕ¼}Ö¤-Þ`}×ïMþ@¼]Ò ÚåÞ™íË#ýѤmÛµÜr­Ú©=Åx-ÖÃ}¹ÅýÂ1mÇuyÇxÙ‚KÔàç}©Ó@<È6á5Œ—|™Øt ’ø¶&)ÝýCàŒ6jÛí ШÖfýÔ©ÜÀä½ß·ýâê-¾÷}Ú’¼Ö>×mß6ÎÞïýÕiœãþíâÞ[Ö ]ß@>ßóã >¿.MF.¬²0ÃqÌÃsDÀHŒ}xŽœƒXÄ ZæŠ|Óê—ÇÜÝzƒ¶ÆÙ—qÎÇžá5´âÀíÞu½Ò3ÎÏ!m×ÒÒ ä+}ã=þãý½ÞmÑL‚àmÞ‡ŽÖŒÞÚ•^é“>Öíþ ßú=ÑæË’>å›»àXÞàÙãÄ_~7¨>9p>‰NÀÍò~6xŽÙt=Í—\Û¿ÛÇLʺ­ÌÈìÅ)­ÀºLéÃ.ì~Ò?è¶<ÑÝì»ÌÞÁîèÏ>Û£ÌÊDìÿœÌLí¾ãÌníÔ¬ÒÖ.ܢN¶û¹3ô»Zž7¼+òÞZò{òšó² zó8Ÿó:o©(T¿$Ÿå$Kó¼óþD_ôFô3ã´>ó@µB²PŸ’W®î"Ëî…ñQŸõ=?õÿ^ñ¨ŠõZöRïÆ nõöbŸö/½ôå*óŒ3Up÷µö'åLO¯öPÓfë8ýÐ÷E°C|O?o‰öxŸöz_åƒï÷Œï€o°øPøaÛ–ù˜Ÿùš¿ùœßùžÿù ú¢?ú¤_ú¦ú¨Ÿúª¿ú¬ßú®ÿú°û²?û¦O÷&¥ô\Oñë®ø;.ðÀü ÃOÅÿûÀÏÇßø+ðø%@6‹OùlÓÌ_ýÖýØŸýôàü% ùŸødà´æÐËOÅ¿þþ)üÄïþì/ò_Ü/¦ùv?ýÚßÿþÿÿ @ˆ#Yš'šª+Ûº/ËspØGb¹~ûÿ-‘ð‰FÁ`P<&}È#NÕ¢Ý^UÕ·Oe×y¦^‹ ¶i;Xrûô_ƒ­ßóûþ?` à a¡á!bbœÜNOT”Á’%Ó€Ó$œHÀ(ié(JšHØØCkjªª+™,mkì-+«îj­b#c]ðäAð2s³ó3t´ô45 ç“Í#rÝÐÍ’Q¸å&·ð(:Ö;{ú¬™jì¼I.I.>=¾¯¼>?@f×HÜà ÇAÊ>xÃþa5D#R¬hñ"Æj ž#0’7m˜Â]ªÔäF6sŽJT1ÕpS2Óí²·* ¬^÷vêÂ^Oxer.Ûè‘G)¾œøIf(P 9m1±j —·ríê5¢Ñ£“F|”òÀ8q#É¡,Ûñ¥‰«1ÛÑ¥‰ª_M¢:{íÂ[ó'À¡?û>3zpÊᥡª^iÌV=‘UL~Œ®ò×Ìš7s^¶`R•8Φ-™©œJOpYÂÌB—K½»AõÆZâfíÛ@g£¢MhcJ d#)n¨…c¸¤.7>…œµñ奌3‡<=úòèÚ±Ww¾½úÓ딟Ê.^{ùôÍO÷Þù=üþøz #.zô$“¦I¢6§Ú¡\®½Snºñæ…¯fÛ â3À!ÃCbÈ,” ­¶¡r+¤Ó v™†%BätFUb‡êŒç"u0¶ãS¶ˆ™|9êØ™a‘Ø'š$߬¥–~ýqóßL›µýc-Qî•Ï”O>¸O»U‡XÈ,bLq3zhE\X}ˆtЍÎy*²žwW­È‰”wæbs¾£Ur8îø' —Щ‘6ä~lÙÜ‘{Œ²$(.Ø af@É/¸ õK•6ÝÆ©@\º•C…(3Õ˜q•É™ªÉášq>§§Œ)º!c³Öº&®¶þöùf Á Û•„|ih~™”f䄎&Ùæ°]Ã($g¡‹“¹•¤´ûk²ûfâ’)#†nιn¸—±ëîÑÊ;oEQûñþªß²mI/ÀÅ $Á\jŽËÒuP™×-šJ—uⵄbÃwR 'œq>¬ž(îÇsÊi|ñÄ4¼2ˆØëŸµ÷)¿ˆ2klËô†åÙµ¦f›3½~=4Ñ‚LëZH±¯²6û›ZÑÃýÕU[ÝsÂQÏ›Ö]{ý[;<¶J¿Á4Iý.ª´j_Ã7-Á”ÛuÛ}w×;«`6~BÖ\äÓ07“$rmnk«ÎþaÇõÜx;þ8äOm5å÷Nˆ¶%j`¹Î衟b­ã:%ôVp§&7‘»þ:ìo+¾ú}}ÓÜ4àkÿ;xè¢KЧªº¬û@wìÉ+¿ü4ÄÉ÷Ìh!ª9çÆxA)¢« cåK2´²Á¶ñ7 Ï<úé«?ˆóB9‘§Þ(ï½køåžÛ. íwR¾Bò´¾°€.ðãô•¬´9MwPã)z·§í¥k[‡Û•’Àã Ѐü 3¦ÚE¯4ÔcÛõìº rE‡³ØðfW¼ š¯ƒ ¼!•'B"Ëo¸“Ÿnjϙb…Ûã– ¿/Ô þЇî£a#–Ã)Rr; á—¨“‘~CT¡§¿^‰ýsâÿ ˜ŒŸU±nôÚßð¾f®›C!³‡½2Š«N-dãŸâˆ5*L]o<$"å%ÈcÈL‹'ÜÝÁ¸'ùOà—Ž À5J1‘žü¤°4™E:Æ?ókÖàž5@QjÐg¯%,c)VÉ‘v¬—d Z¢±†¯Ô%0ƒ™º^¶²–¤Ü¢&N‰3aî—Xt¥˜˜)Íi†˜#lä1ùÀD°§95ŠQ7¿Npz“œâl 6ãL9b‹šî|'4Öy¹lÞŠ`>ó©Ï}ò³Ÿþü'@ʤSþ3òddÖà©Ð…"Bž°eîîÉDä3Iþ4Å> šQ‹ ôŸ(hf&†’´¤}p(HèQ\¾¥¨ _šQ}Ž¢¢•iG= Ò¯ˆ´&ý)Pe€R³¨ˆݦD*ӚΔ¦9ÅiNûIPuZ³—m\P³ªÕ½Uõ™Æô!WjOŠâ“ˆ\!?¡ªÑµT¦8%(SKASRØ”ª^}!·ª×½ëªOÄ&Xë(Ö‰"B©’L+bZVµn´¢k}ìbñùQ»²“vÅÄ*ÁÄn–e•æg…ÚÕÊ~õva5*Kߌ—šõs¢K¬S+Û¦Ú´¶e½mm'kÐÑò²þ­c“‡&'Š@,X¡]WŽK¦È(7+ÍÝÊ$_€#àí®-­ôþ†Ú±‚µ`ÄlkËÖðζ­r5/]KÙÞÎзî‹~•™ç®Œ¾†L.tvÁT­Á¾ókkZÁn—°‡PjÁK[ñâvÁå…jyëº[ëøš EÕþÔĵït,¸\ËÅ@&ÆðÕèÃ">YÅNü±‹y˜a¶ˆ?†&LòÉ% ÏvŽ“&;•kd…KÙ7gÌ1ŸîÆàëf‘M\ÜŽõXdJ~q™¬Câî\*C5D ŒÔ–õ»Œ­l!üV0“9Ÿº )oÌ^̦+Ã3¢®•hÁW™+‰˜þ\U%½ÕcÒÍJ¾/²³®Vs¢8—SÐ|äsž÷Ì*oº‚Aã}ñgFÆùÐd ÞŠ^˜IøtѼr7ŠjÊ.¢’›Öã—#‹[1/8®m«dwꕞB³Í˜6´ž e‰™‡Î¾ ‘ßE.Öz×ò5°ÍôâÑé9Ѐ†•Ã+gi_ÒÎÌŽt°É£á/¬Ú·ºµ‰¨ÜmgkëÇìù/ùFØR*ê¨BLj—»Ñô2˜¼o¥7z%Œf ÓPÍQÄð­! è%+šÝûµ§É½+b3ÚÚ¿Ä´¢uUga?¹Å–v¥Mm9Z]·ôsX|i[§èÜwÓý8]N—]oþõÒDÝîԮ䞋åhTs®s§®×ß¶f!Ëi_}œa€4y÷>N];¹¼ÙAþ68+.ç¢#šêP7™ΆCüä}äÿîñÂEýéK~ô³•# M|Ñ'GtS–ˆîÅ 8»?µ»½(‘qò½œ}?'àÍiΩN˜´xu¯/£ cO¬a^®“QbwrÈ!÷؆Q¼žÈÏxcÆNz®–½b)>ÙÝ‘<¯›¬k&sgõM‰|éÑCpÏ»Çm‡<é­Âx$ÓhÊ•'YÈ0/Å*Àül2çbÞKÍå3¿ùíyºEſǾÍõ/_WKÀâÛÎî§Å;ÍÛ¶UZ'Ô¸®Ÿþïuýìw7ý¯ã~ §WOë•ü˜e?þ ÿ,ƒŸ»Š ÜâMÙLH]”¹øØé¼€ýýVþ5 <íßñ%©-Ó2¸–9ÛŸýÙ=]ËYºXݸÍeý:  J®2ÝŒÔýŽtñ—Ú%ঠ›PšmÒùœ ÂR »!_ø]푤ݳ©^ŸVÙŽe Yžv,à{õ ÆÒzõýI„—u`¸yœ†=Zt•Ýß•Šô‰ß{PaâÅP­_äÈáÐ!Ñd¡ Íß–ýöŒÂºXæ šŽ=œÄ8]Ø NZÖÅŒá]ÐÙ4¬œ²þŸ£àÙbXgñJÑœÚe–TÔú±œf¹ÀÙaÊß`í!7}¡(fÜ+Ü99^'išZ‚NRƒÐ ›Dt¢ðPŸdx 'c &b%rS rÆ)jª¢&ØÖM››1—é\ãQÚ‰Iºä"'Á" ¢ Ž Y眎YŒ÷ï­ÇÌ: ªa“ã bã‰ðuš’åXæMž8íU£‘‰^¬lLEa!² <^EÊ™£é9ázt…V3ÞÝÌùß*Jz¢RžÌ™¥) ÅKIzcÐÉ Ò}`ï ¤ÂÁ-Z‡t\I~É•˜¯þ-aKÞYØ9ÙMàÑb¦±]‘\›•âÂÝàÁ•$f#(&%)6Sª® 2µàIcG¦\Ÿ±¡9Š“X’ež¡ú]c dN~ÞØ à\¾ʉ‘Ib ®   –N)†K´ËÏÒñJÆÙb1^Þ³âæõÚ ,ÝPî¢É`Ì2Úã×1Y’1%Ïð›ô¥” jÓ»­+&ULXJáãEa>j 9r‹5!ޱåïu¤Êì—K!]îW«%6 cò¥/ ¸fÉÙåÅ5ŸU%>&¦Ã#~Ñå+Þ"M&N²ÝdFZ \ä÷ed¶ªlò¦§Zz$®áþ+Ú¦!Ò¤Nú$0†$ †¡"žç6Úà/‰LÉ›T$祽Õaf^]|‘§x²'"¾¥cJÜgaçj'4šT^åf¦¤Bª˜kžã;æë™’Ážíé' v¨kj(ëɘ:*aCJÞ˜<†ÚE‚èäÕ êaãE¤iv‘qh=úcšd’ñcrNÒÙ¦(hJ`òQ V•ÂwæÂõŇ"‘jåreö}g“>ƒûµXgPbPM©gê_ai––i©~æÿé¥[êfÉì¥s-[ož„’`š)žNš¦¢šnä~%MŽlMªg iž&ªí©–õ©Úþ”åJÀÍ©(sÎG>¢¢nê¢fªufšŠ)á4B!·™ÛÚõㆦ!kBšæ) §6âr*­¦£>££vWh&œ’!ž!Zš%«b]Z–%j¦®Y jb­6ëED) Ü*ƒæ*Uô¡¡h‚å~Φ"¶eyzëqâd´Æª²Þ)³F¢u®Öx.š¤Æè%zéCXcº~2d¸ êü§îýŸ%à·››Rª¶vå!ŸŠªŸB* F¦®m(°ÊâpÖ¢,*&¬"«UÔ¹N´Vå ^ªQ† 5ú¼n–¥Vg›É&ã/v¬ÛÉë"c H«jd4¢ÚÂ2)pþî&"Nš¶Rì±Êj¿D¦Ø<²£¸‘㎚ã?f›hz›Î"m:>f¸!á ¦êªúcËU-Éfëz[ÆÜ´e¬Ó†­ŒN(†’(Ófhj¦_R’^eVäb*¡Ì麠ÂrÚq6¥H"I~lÇÉç6”kÐú“Ö™}f‹¶ò¤°â ¡1dx¢g¢-Ýr²æc&]Sž%Îö¦ÐÁçßRœ šìÅî·BåYâeâªÌäšçêvÈÎ- vNU©²Ñ °«ÀõÑân¡«Åò›ÏIè¤Ò'yža*g¶ÀbÜòn+)îÇVÝÄoã¦m(:g>æ%Ãe.ô†#ÑI¯þ¡Rfâ²i{".öÎ)QÒ®1âÀÍØÌ¨¬ò&Gâm«ºØ‡æ¯×¢Þ}¶fÿŠmàúÜŶÓÐBÝ`ÖåHr]eÄ%ä*0ÈÖžÏ&"~™öú«öF\êB¦ûd¥©ÜRþÙtÂç FìqÕ®tÊåUlÁ¢b£"ìÞu§ÝTÆ’† áòí!V.ôj ‰*n‚\0•o÷m½Jnñ*äڙNÂYêJ*ÂݼBpT¦ìúºªTêMÌb¥iìZ5Óu’ëðz+y¸kãè,Ú˜áP¢…íè­è/^,Â¥÷¨j9Ê^Œ®¨(˜-ã^ÉíˆZèù¨ã©*cPþ(·îoE‚èØrÜ~"¾)£€üfe˜Ö/3mi¡°ð†Iá&êÆ:+OåR×Á¾0'ן”ú•².y²)K*o ;ã´Â°V!j-ÿ2Þ\ò dòSé‘Z©ºB¤^¦ùF‹/340î§jr¨¶ò£þ)þŠÌÆÇ3G38Í4 L5ó&#)B* l1±¼²O…³'úžj}îì0/О1|}"ÇþRqwU1ø‚[q‘ìôkú4;+œ–ÞMhi´êîÒ-gf.cäÌnçCÇT?Ï¢Æ}ëkA—dv3¥Ê2Ng°Ç²5Ë ôWSQ‹l MRs•*»pC—tµzå6+åT÷-WÓÀUcU_¨;>YÓÂíï=!ªªm–í›maÏcÖ²í…Þhˆòõ"»mdö^söÞãžÕñÚ±—¤_vÔBKê6Ó&t¾ ÿ‘´>góÝFtÎR#IÞ5^ôàÊ4xJeM¨M³dP¾ç÷ž¯ñ’îG": ¯'n‹nô>îooc¡þ±q^°¸Â)£µ«©Î qs£C˜¶û.´þ[«62ªÍÎ5Öµož2m«™mãlÕ¦õG CÚØ"úv颬o/ÊB0|è‚¡«¢fnÏë 1æøÒIeg÷do^,_æB,7"vß"8r71tS7èS·6¯òï~³Êöl-âÉô«\Êro€ë0}WõnvðQ/,qWjÛ7wuÉ>ðtç1ªx"e‹° 3ñ§]ò¦+…‹ôw_8µº”*=뾉x²®÷qÏgL¾wOcŽk]Š—îsÿæ xS7“õËdè6÷OâtîXŽïìYyªòø™7ÝôbÅ‘·µ.+¹C¾JC [çhºˆ}‡ ß£þ²ŠNâDb6è9v†bâ![6¼úîEòéѨˆº(å]%«ãò6‘fgd;2£ú:¢^¶‡a0 ß³9_ój»MŸ{´­;à/uvê9\çß%Ü:Iýº{å:¬[8ÝÒ,5U³7»³‡ÃZ<»´O;µW»µ_;¶g»¶o;·w»·;¸‡»¸;¹{»„»Z¸‘±{wž'»SÇéd¤Áƒü‚Ä€¼C ä  {´—»¿ÿ;À¼À<Á¼Á¼³Ÿ;¸§û™®uã9S»û69LH¾;‰ Ô; Ü{䯦¬¿#¼È<É—¼ÉŸ<ʼÂ;ûÇ4ÄþïºÄ«)mRA]\|“d|püÆk‰^„|ʽÐ=ѽÑ=Ë;­;jG`¯uÍ[&Dr<+üÂì”TÊÕ{Š¦ÜƒÕw|`ÔB_œAÕC‰~$Ú§½Ú«=¬½Û¿=ÜǽÜÏ=Ý×½Ýß=Þç½Þï=ß÷½ßÿ=à¾àÓ}Ûë}ͨûË3’·ûÓ¿EÔ7¤DŠlð„•ÐC•øæÏFåO Ø7¥$È? °Góá757ýü²2ë_ªkȀ؅þíc •ØB÷ÿ>î÷†Øw~ÙgJíÏû˜D¿W;ó#¿û¿?üÇ?·?µÓÿ´ Ë/}âGÿ'!Ób›^ãúo Æx·™ot¤õ9¡P Ѫõ:½j·Ü®÷ ‹Çä²ùŒN«×ì¶9K†åÒéìŽÏë÷ü¾ÿp@xð7X¨¸H˜ (R5`'9 ȸxxÓ™—Ââ2êÉÔ´dT䄺ÚäóºÚtjj;"I·ëæû Ì@\lE¬U¬ Üìü -Õ+&ÇE7¨½ÍÝíÝiˆ¨Iî9nYˆI¾9³¬ º2þZ_:{{Óóº£ï¯„U?€&I …ûr]›†N´‰'"ƒr#³a+zü D0Õº xXé›Ê•,[ö Çé¥;Fæ EºF ç¥pîbv#VïÅ=|®ìXhT†Á£¶êøàÁ£“ÆRJõ*Tt#¿H 6옌Èz1+6­Z6_½öêz %N—tëÚåsÜLE5 Ý„’®ÒνTÆ;|7±b–ºÊ´] Y¬Ù‹”™e$‹¬2fc‘;‡}lò­I¹€í,>Úe^?y¢~þ]á“V’ÔFãhØÍ5d˜*ᨚ¼V^yºÆÝaC¡œqŠ©’{ÔÀwežÉI¹§qQþégŸzêhÖ¸…‡ØÐHg£zÆšŽ†DÛ„>žg&_mFÀi§o0 o~*§£yþØž„2¹ß”P (~ø­J«¡‰"JÝŒ¦îú¤½ÚFišþÞ…©Щ§ÄÌi‚¨Úº+ªXÒJ­Š€¢µY~(RK­­\öæå‡`òJîdæ‘é&ÁZª±ém‡¬2ž2KB©Í’P ù–ëЗs¨ÊmÀÌÀVTƒdºò˰çâ‘._ëöØ.¦Ånšì¼Ÿl<ª½Î6<›ÁÒLrÉ&ßé˜È ƒ\îÃæJŠ&»¥­ÙÓ¦Å$*b ÞññÆ \¨Ê'M4·ÞÂÈKv,“ëò 3Å3»k!ÆGêœ뻬½ ë’pØ k)vÙfŸvÚj¯ÍvÛn¿ wÜþrÏMwÝvß$ÙmëÍö„KóÚô Oï8žÔuÐ\ŽÍòbM¯œ[7Û3ÃxONyå–_ŽyæšoÎyçqóàߦnÂà“ò楠W5¼Wsš5Ç<Ͼ³è" €IîºïÎ{ï¾ÿ|ðÂO|ñÆ|òÊ/Ï|óÎ?}ôÒ£¶‹Iú¦GzÅ«?m,jñ.û½µË^ïù Wbº¤î¿üòÏOýößþúïÏÿg {½FeÏa0›X÷¦f±wiY¯+_úâQ*yàëg8iŸÿ.ˆÁ jpƒì ?è?N(-€ØÓT¤tĽҨ‰jl‚—› EBn°„4¬¡ oþˆÃêP‡"W ‡4@lÏ€*V[÷ÃÎp‡Ll¢ŸÅ(~°‡EL¢‚8DÔQu¬k¡I¸D)ŠqŒd,£ŸHEÙ|ÑFX, ÕÈEð­Œ<£ïˆÇ<êQ~i ÝÔFŽÞëbÍþh»0BÍŒl¤# ÉHJr’”¬¤%/‰ÉLjR’Ãä? J‘ d±˜BÊÑ…Ôþ¼ö¬ÆÁr=Šô)v.cY0”¼4c­wËí˜XoL%¿w1×eŒT]Uä¶áÀôá†u©¥8‚‰K–N—½ìf7‰Mö ÓB¨ÌÉ1 ™8e⬙æ{à7¢ÙþjÒÅšá{Ö+ãNphS{×,7ÿ Jpæ“;ãtM9WxD/êf|ÄÐX;ãtO rÍ%E÷%ÑÓÐnrå þ Ï:mŸBLÄHŠR< T¤ "i™ÜX¸Ž…‡\àëç3Žêk§Îäi×z¶µRí£'V¦‹ýjco{³ÜÖ™ºx/}«ü뛫X‚:fkÎýpèyìW|,[w±~>v Ýì‡M¸ÑQ¾v•+ÜǺé¨r6bN÷˜¼™±Þ½âU#õïKûqUàu>¤~=†· âÝųºÞ?9Ÿ‘n̆WÛñ¸a(Î@ÑfÇ÷½9ž(ß+Y¿ —÷àu¡ |K{žþk2ßUë-ôzØ£Vö Òu÷ŽöÆ«]ÉlgòîÃ/>Ëc­Ÿ®Ýx{LaôùÌÊÉŸÎòÑïÚ7¯X¿Æå¼çý¿zêq}®‘}ÚÇWÜ÷}co„yI§{úwqGMì§iñÇVCEÖi£w£…nÔÕ]n¢jªç|ñuŽ2€=Q€8U¿Ä]V÷|Û•]Eƒ2ƒe^Ï&^ól¼Qù²€§ƒ{]Õv÷vLçrGE|í§`«†h‚›…shrTW‚û‡\Ño|-v‡Ç‚ÚNZF‚šWM˜Vúw`0§sÅW†¡ç\øg{ÅpEx~Ø{b%:•y9>åþ8ˆò7uî'zöBzo¨†Åbýwwt€õ…®†°Çf—–k½–‰hH\ræƒ<¨…ćqHw4&‡zµpCH[wX…]§~¦]–l\èƒ=ø„ Ø`ÁFWSXY7qºuzJå„W(Š “‚å°‚•P—x‚7esæ,O'|1…òÄ„åU{¨8~¢l,×{7P0”ˆëqùÕˆ/·…ÄyÙDm`¨Œb7†6W~8ˆÑ¸ˆÒxqVŒ @Šì„)ä€vŒ×âH…Z§z#‹=¥/‰Â4‰Ø÷ŽðXYf¶6ƒ¸V\!ƒ­Dƒ˜˜k¸xƒ›‚É‘ÿ8j“þçù‹x0Ž€§zÐö¶sŒg’ŒÙKHxPG'(Y‡æ7,IT½h.1“¡U“4q“8J:yU ¨€Ù‡G~’÷€K'”‹ñ’¥—•üÔŽ”È”ç”,铪ègAy,åØƒ†ÑŒt… éJz°•oØ•¦Õa–7–Y– ˜{‰••·L/—i1·u°”U§i¯4—£X—^y—ð¦Z)p­™TÉ+çdyØtÑ”n†|…“æ[—€•÷u”@‘8™ï¶—Œ×—U@˜é·8†‰V–]´ø‘Ôw‹–µƒž('¨ÉñôYŽ9w$””›°”±©Rþ•i™Úˆ‡â§™2s•”—~í¥ß9}ÿˆ}nYPX*È©˜ˆF t‰MÏùšÒi³ivµ¹™*Ù™•wraRØçé†zº‹öG”¥U1 }½%‹CëÖnò9kÒŇÜqàwH–Š~I„¸É§eƒéJ‰ x|晘ô÷V÷ ž‡ˆ…Aáˆô8}Y%•™)¡iF¡ù¨!­™œg—¡w{ºŠh©›äS†6œ‡Xž88-JlЦž¸¢„7*UUå‘xǃØe‘Ÿ(œÞg|Y¦ ^:]±h¦%`ŸÚ ˜zU¯hUKøŸ†H/K:Hú¤I8þ¥sÚ…QÉ|Š¥8ªZ–å1ÌTˆÆiÌ9Øcí·SþX£v™K†8ÿã:†y䩨2Ê©ƒHšŠ§'¥Í‰}*|U ¨§8•ƒªx…jšcЍêXl*ʨ^#eµQ³hkÖ‰™”¤¶ù—º’Ý™„7‹8øJ¹¨eøy·œ…y¨TªòhŽüWuhØ–^¨@ꪱ«Ì"šuÊ`ÎXšqÚ£MjœVµ¦–ÊX˜º@à˜Oy “j…uŽýé©piŒöß*E9:üb ¹žëù§‹ºˆèú”ú«¦X©åw©EYmx*zj” ™¯Õ ÖÊŽ¬j£»}•Éw2þH¦#*Z‹ OË •*û‘YŠt×®û®[±®µ!› ä(Wƒv¥"›“Ô™³û°Yd–ݘŸE['<Ë<ÊRA+´MI´9[³VÙ¦ÅÊ´ÞP­»sR;µŸDŸCwµ·9± q2û‰\GJ]댂Øypûr+* À­ ¬aÛ‚U[±e;¬gk¯{z¬‹Mn[}À‰«¸‹Ë¸ë¸ ¹ vË4þª·#ë7[ë°¢¬÷¹Zû¦ŸÙ£"e¸Ð¸Ê¹‹;¹©ËºŠ‹¸wû£sx¹(5¶_k¹*¬ ¸Ýú¦»9«u­lû5Nے𠺀¼°º©»¼­ë¸þËûº•Ë»Ö9»)U»$ç·º{³h뙃«„ ·lHAõ:½k¼‰ É›¼Íû¸ì뼪«¸“ »G[½{u½—½Cš› ª‡¿§˜×èµRºz€¾2Ù¾ P ª›Àñ»À¨+¿Ò‹·[¿ËÈ·Õ™¿g¹¿¡ë½ ;¦ü7œè;0Â%LÂ$쾬¼ºÄ°Â.ŒÀ®K¹€s»L»l™¬´—‡š:ºnhªÃK¾ R2™¾#lÀð¿è«ÄÍÛÂ2<¿œkÃ߄éÜɹÁNÊš1Â<#ÂÊ«¾cŒ¼ìëÄL¼Ä1œÆËûÀ4\¾!;żt¿wÅø™ÅEºþ‡ÿû‡á+­ã‹u8[¼3€¾(LÆêë¾g¬ÆhŒÈl<ÃÖWÃqLÅ™«¹uü¹KË¿Þé^™˜¬¢óÅw Âé[Èë+¹MLÊk Å»Ô ÉT+É[KÉYkÉO) ¦ÖÉ0È ÊÊ+¹-ÌË/Üˉ½nÁÿºÊ4ÇÿöÊÄËš« µÜ,œËʛ“»À ÃÖìÄÔÜÈ£óÈÅPU\—ɼ»DÌÌ{àÌ&€Í/ô¾ë|ºÛŒ‚ÝìÍ{tÌû&ÎÛ¸å,—ÄË–Ï÷©|<·ý¼]î,@ðÏy4ÏåVÏn¯øÌµúÌ“žÌÎÑQì_­G-m m„ ¶9¸¶«i…þ­Ðò&ç,”`kÑM„Ñ̦Ѭh5då¢ûü¨;ùÃêà‹kÁÒg´Òê¦Óö“ãœÊ®(º„ûÐø¸CaÒ°€Pûuoœ·;ÍÓàÜ•-M¤üë»?g3ËÕ 'O³¾¹Ž'[VKÝ ËùÐúÓRÝWT•VÁ# §î¾ÿ¼®_ý v­×ã)­,êШ±hMj ÕÌÖ¾äÖ'½ÖÈ–´X|„=Náö#áö[Ü|yÜ ˜»úËÚ®èÃÎÍÛ亨0gbþ‡`|ýŒúÇÜ+Ó‚àó &¸°Þ ?NÞ8~á:žã8îà@Ž?>n½N›.„BŠÁngsýÚŸÝÕÓê}Š‘ÞÍÝ}Gª×Ý|øãTš¨SWãrãA¾ãB® A^ häãMál~æçæÞàqÎþàu¾ãdîæëçË çf>çt~ç^Fí ´HkÏ…½§òJÓîy,yÚß R…úº×š—Ù¯5ÌÎãá½çžÞérNæîæ£^áx¾æ .ä£.ê¤þ桮氎ê}~æ­NäÑeäõiè)YÉwŒH æÔë™ÛÁØž1h‹¸º¬)þݦ]ꦾꂮÍžàÍî궞ꌠç°çÚ¾æ¬~êÛÎêwDècöÞËïÞ.ëðþìÙîìÑÎçÐnïÖÎïánGãþbåîë ý¹M¶Ì~ï«þé_íÿíò~êoñÔîï_ñOÞþ.Ϲ¾ðî¾lªÌð} ð¶+òî€ïØÞðû.ñ//è-oçÿíÓÞí3Oñèâò*¿é¸ë¹°lò:(¦C[A |€LMoY¡•Zn¾áÌð6Ÿæ¥þçµ.íýîé:ö¯ó;Ïï^ïwêßêkOFß_ÿØŒŽ…ƒõªàôÚ€uq)½Wöeîç}Žö oöæ¯ñýñ´ÎàƒOøl/ð·ÎC?ÿ÷+ß¹$/Ô†Ó§Zì}P÷M±¡¤Ÿ DaúÝà÷Â{«s„ÒßJù¨mùø»ëAèhWs-ÒKÿDÀ1 TÁJŸ÷VÑûþN ÂÏ÷JòTÿß0f÷ŠH¯?¨±/û­Ì´pÏÑÛ}Ö[úCðKü°Ð|o÷ù€þÈ_þUA~ ðÁˆYé^#Ô£=?Ø_´ÚÈ%é¬<³_ „8>£IŠ%J¨©{²/Üš*½²®ã±{Â"Q0ÊeBè|ŽP j½ZY©è5q§â1¹,J2Éè%»í~Ããò9½n¿ãóú=ÿÞ$ ˜"®ü‰-Î%$° Q±<Â5~Á„B@ŒšžŽ†ÖÌìØ¬ú¼´´ºÁ¶âÜÐÊÀqz&~>•¢¢ªFqUu-/ƒ GG/ ?qöþagkosw{cÿýJ“—›“S«ùI.] ºg.mÖU'Si¥ŸÚóæ¬ÐìòaCV¿ýÝ:à!qÁÎa‰hEß>!¡ž}ºxn£#6Õœ\û&r$É’&½…«4Ž#Ë–.ÏxTg'Ò$@*á вM½ ü¨¢hê§®W {Ñ:j«×A¢X:Å¡›‰~FšÊ"4*X2¾ 3͘K$ M«v-Û¶nßÂ+w.ݺvïâÍk·*N±~ÿ*ŠYv]Mq8uÒ%ñg)cB‰*˜B2B)/µ5¡QÌM§ª|hk­¤¸‚õÙpËtƒçè-{6íÚ¶oßm˜5ïÞþB\wœÉNI_›˜rÊ3KQ­ÌœÙᯄtÃÑÏoïþ£Úä5úYÄ4«Ý‹t×5þ½Á«Íj8°0‡; ’¨@1m¯wòÝÀg7tOoã“ãµAÁïƒ#lá{gBÊ nK R!É8Ø»·ÁÐ 2[Ád603nt:\ã¶vv=)ŒÚ¿×ºs‰/v²#áï|çÄ>NQŠÀóã wEf£=\ì[—¸G9²¡Ulœ$%ÀÕÀQH¬ WA ïuI$ßƱÝy0wêSeîz÷¾ òÑŠ¡ åüâ£H …>ܤ$YÉ_ð’™\ÙŽ!Ö±ˆw¬˜(õXJÅ„L„¦´] ·…XvЖ‹#þ\±6KA.—¥Á%üy¾{ñò>Ó&;©'Ìaj²˜«’›ÄìÁ£¡+rðç ‰¼tùd‘´sá)]سtú² 5 ¸Ï¥óBªƒÐ'ñùÐ>¡ÈŸ',†@¡ygp“a•À&JjÒ“¢4¥*])K[êÒ—Â4¦2)MkÓá¹í¢¾‰h°&ª¤ŠºN§q¢×7å‰EAÙOðD¨M›êÔ§B5ªRêLqZ:¡ò†§Bóé8€ŠG¬òJ£GkkŒ­“ 5­j]ëZsÕC²F«4q 'í JpÂUTbEd^9¢U¶6°‚¬[1Ùװȵ“µ«E_'u)Õd{Wþºª¸5(ìy‡õšYõ5ØÏ‚6´-ìfý’X®æi™ákfùVÔ£N›üdú—Ùy•Ö-o{ëÛðå4·~íìÃŽ1" ¢n@âCúAÜ6±‹‡ƒ.ßܳ¤ÇYik‹+\wûÛï‚W´¤®KNK×Å*óžAýKÞHùÌB6ƒšùó׮ɾ‘5r»ÖÏmAÐNމ`õnx l`µŽ—¼D"nË:¤ØŸ2v½~±`kê%Tbx•¤dÝÇÏPôWÀçÌ 2D,T8Å*FI·\Y02hôDn±šîš,¬}=mÔ$.ØM»uE¾šíözæ…ƒ,HW_¸”ƒßÈî:ã]ŒÙ³›JkH]2y3¿þùß·µÅËÄW-÷'=¸«Öwí…¤ðõMÒô˜ß¿Ùÿ!Úëtx3¯|öÝo>Œž骑ßðãbõÛßÛë§°G¼r'˜Ož‹|Ô³ÕB6Ÿ.Nÿ‚ù Ÿ»¤ßô¹ßnüÅŸ!Ìø%žøåžË]ô ÞF~šJ’Ÿ"`ò. !4ཅŸØ±×šýÚs™˜ª^9mßÉà^á]Vôí^³`Å ¾Šàúð• ŸÝ$_j)ÞQš{1FÖ\é]5 å>îö]fa!Š¡HàÊÄú1ƒ¡ë$áþ¤Iàš ß+½ÙçÜÍ›û°é’ðàUäy ¦H“Ža!ZÕ™!Òב™Ê=  NØ(UØÕÁ£ñ´Q]ÛAƒÒš\^`R-\íOâ)öA&¢÷¡á˜©áyAXØIñ½\â)F!œm!ªáNœ¥Zˆx" šÜ-9\%îáѵbÒ¡â2b™®âF`¸4bì¥à,†¿U¥É`.…\.jà<òb Õ ½HͨmѶ r_4²3Âc¨â3¦aáÍ\zÉ$Ò¢35!Uâ‡Q›¨œj`ßõ\Ï ÒaЕX@”-bqÅcEþáÂУœ >V#óEb¥1›+Aä@f"œ¹HÜ8v\0fÝ0X1nà•âD6˜EÚäWFfŠ;¦!$!B  žH-JWÿ=áI–dèy¡ÊK4]a9¦ È|ØäÉdUö !Þ$ΣN†Y2zÝ4ÒšÙŸÅ‚±d j!êLÜ1ΤWveVÊ%\W²"Oº¢O®¡Wµœ]¾ÄY²#sP¥R&Ò¤úÍebn¥_"¦=ΘÖŸÏ1&Kft¥ïí’)&fE.¦_nd,î£5N¦9T&žßRiæfÂcgÚåg*Ÿ,zähžCiNØEa¥jþkr¥k"aPZ‰Zþ>AxÔÂp*Dqqö mŸm¦&n¢¢nê$o%$–eÆGy¼‚qng?Äg'o(ç52'È”sÊ%tf¤tòåâÙ vÎDÇ*Åv‚T´Äxj™výš’™f!¤ƒƒQzþ zÒ#{.__b€VgAØ'uˆSÈ€„Vè„Ê‚vLÆxx‡Xðg©uê`À=KL(G¨† ‚>£‚Â&ƒ2ÚZ²~BAT†fDE.|Çî(‡Bè_B¥î%ÍlÞ}¢i ò!¦Š®¦3Ê&Eâ¥2¾b>‚fG¨¬Y¦cˆbw†‡Rt§ŽÚ¨SüÃqŽ)k|¨½ äþÌ=¨eþߦ€ ÆNüAŠ2©û±è*ºhhzdŒ¦ˆC "…Ši,|iŽþ™ ê?ÌÂ’JfWKpâž±eKºZ*"ÚÍQMÖés:é“6&4ê%,¾¦ž^鑃Ÿnwj j „—–é¡¢ª_œé© ãb ¦é=[KÆr\C#Ði¦Rß&bžZ©{6h@™ê©ÆªªnÆ|¶jªnŽš)£úáfÛÚ©ã{YÉÍI•p”ë) «ë#JØšE²^gdL(Rô¨TEg¼ë¼V†xRëB:êàak¤V ³(}<‚'üj¸nÞ¸a¹F¦BÎK²þgu4kv@G¬fþ¨…‚Ç-thv†Å¬ )ÐQ¥Óm«®Vj4z„Àì2l "¬XJæÂbæ®è§ŸÜk89jˆ’¿¾VfD+͸¬0 lÉÎÝÉ.`ÊJÚX––‰ÆVäe«ÍUeâ°é®®_°Ä%Њ¡ÐÆѶ¡Ñm‡–_ÌÖRæ º¶c5$ÙZ­!bm6§Djoò#§JƒÒšã .P$|eÚáÚ~`ÛöÔÛN§hÊm"ÐmT¢æ‘}ÄÏê­Åñmói­o’%þAÈZ ëY`€* Uiîærnç¶”Gœçâîí¦>éãÆ­–Ááìšf¹ ‰:álâžèÊîìVLN®é ®£²`ÕþQîRžæ›ïÆ.íoñšŠíÊ-îÆæ5Žìðn‡Áeé¡Zî î@-æ¯ñjïâ6®ôùíVn{*áN …å¬À£²£ß©ïÜfïöÂoÉv/ã)/ƒÒbŽ™}­ãÓFÎNì>'EÂpð#p+ð3p;ðCp#pür&éÊfýk?¦.ÿýâþ‚œKæ*¥ Øþ Ðxî GUÀNR°¦bäàBi„.XB¦Ê*,ó‚äÈÉäÖiÚïþ/·CfmŠŠ P hIIc »0òrê€úä=þ¤øºá úã6î°&ïúëFˆUƒñŠö Ñ¬p^*qþ!ί‚¥Ã‰.)òíå‚f0+‘¿µÛ£Njû”ÿšdÔ‘Ø:Éke'ÇWmá÷^’áa¿è£nÓšþþ)îb|ý/®qñ½r‹â¶š›  1#²[ðhº†œbê"‡¯/{‘-ëöŒü€’ 'k$„²"r—òdÇ¥êòE1+OñÛh„  ²Ñ²2.oB0ïr-÷2cG¯‚+¯r#·²1¿²àãq²¡ÙrØG$„s4“›! }|k*Ï#‹ª#ÃpC@å7óÅ9×]3 ó2£3¿ð<,^A1<ë6Ï3á2ª=§>_Ù8{þê…øj?_í4{&¸Œ¬(*•†jA3ñ=ÿß7ºp+"\‘Bósõ9ô¦@ô K43ÿ3 SHϺô;gs<4ó–¯…ý§TFmSº.@1Ø~sJ«>°”¾´4ÇôíjÕb46k4ÜænÒì®ÃC>ï Žpß°Ì•QßJGR“ñR«4E·¦öœmÞf´½q¤¹./ê*³Ý#Í×/6Ö±)ei_#´WwVR3´•‘u}˜uO¢uZ7uòÞ-Ú~ ʵýêô_XŸEoúnØêªn÷ôôŠJðh“vi;pÞMa/¶Š©snIâ>¦d'l² %þrpþ~,ÿ†°êíöO‹Aæ¢pp ÷pÃÔj3µCwr+7MîMEv\Ïöa*$ßv ½Ù÷6‹°ã ‚j÷wZawlC· Ó¶•4¯Òè°u«›¶F$ÄII¿ïxÓ·æ‰w}¿µ#F7\Z5u‹do?‘{_ë÷îí 6~#xÁ"a‚óÄ0ksGÃq¿ñôÀ‘hÇQx+ÙN7¦¤|8ƒ{øÅÝ÷‡,AO¶<ë®;íQ:%ë`[²ncòPw¸ˆÓ¸8ã„iãxŽëøŽ6Z}³~›·tŸÈ+÷U©Ôø‘WYa-wJ‰” ¿ãHü85–xN´!8cy–kù–sy—{ù—ƒyþ˜‹yŽ/8a5ù3?9:8NCx•wuw/yœËùœÓyÛù/w™–H‰±b«9‰ïw”º¹ðÎ8’ú…øg¶ˆ,B.GõŸß4Gsí Ós¡ú¥W¢sŸ·£C37DyXíÊ2 I/+x²F¼¾ê &Ë|cú«+ºžÖ¢KHHä²w78 ùú½òz| ¼ÂˆªÃ*«CÁË&$¬#ûûÉ:[Ñ:DÉãúˆGú”3Ÿb€§f»_0Ä}"'}r70$û¸‹×²:¨¯¹¤Kæ£öÚšRl¡nh«f§pVìÄÒû|Ê;gÜ;†ŠÇ@phv9¹|Ziº™£»Šþu7„z ºBº»uf ~fX<½"mÆg¡r†Æc8˜;‚‰”á+5â+ýÖ¶;Íf…㣪Rx¢~<ƻľ>þÖ+æ“£¥w~î››JŒ¹‡> “þ´:Y7Çc؃·OìtPýu¼Ô‡)>…¿o¨ó×ÀÓÀß«ž¿k¿K1ãtøsnÒ ?Ûÿ–Jȶ‡…ú;ö§˜ø«†h/ü§”üÛ8Ù‹¸Ú—÷Ò ù¨ -o€Àó„HžhªžB+ CpÌtmßx®ï¼Ƚ phK$ˆÈ¤rÉlê~ÎhÐ(­2$×k`íz¿à/•–uÁÊ-X ÚîÞð¸|NŸ‹Lõ¼¾t߯´0@aƒk‚„Nc‡Š‹alŒK‰bh[’–—˜:‘”g€\4Ž;n~¥¦§¨©ªtŸ†™N¢¯<‘²µ¯±¶8´þ¹InŸ¼ÀÁM›žfœ 3¸º«ÍÎÏÐέÂIË»ÔÙVÖÁØÚšÈßâãÄŸá¡®9¤ªîz}ª#%yô(÷$ùõü)ûÑÈÔ‘ó!ðÚ‘«ìv0!³bi’9œˆÉœ1tÊÖ`GâGwr@ ž{xNÑûçß¾—úV°”33Î4Š…¢¼³ÀŠ7œ8¹Øy¨§¦†@ËaLÊtňK…ÒàHÀd «+D’‰õ LT+í©È7‚lœš-ýÜL*•‡;og•ò³)Bkq‡Î³÷F]„¾ŒÙ,)²¨§ª°ÊÎÇÇ e¶”WÏ”1õQæSVrLÌ™9÷ëƒþRÞeÍ)ÿKL®í޾sûCJØ!^ž„do¤3pÄÚÀ£<Ý‚xÊâßhÝʼ+>—+£Ÿ°–uÍØÇN½OöëÞíb-P×9tˆwðqËtÃ%:Tï^5ðËå~¢ïJïˆÄpü’ŽqWUåQUŽ‘ÙG^™¥]w™U'¡„þl7^uâC‡h¡`^P¬é Þ~õµ'à]ɧ—\ëÅãŒ/Öèb9ý9ôŸ+ö8‹a$!ˆBr *ÇsL:÷yöc]…—q(¥‡˜]è¡”ÑÆåfå­Öz8œXßCüå£-ñ ±^~(âWœºä˜ÐŽþ­©ç 3¤D®Q…¤“-ɤƒv@ùá–z¦èg2*iw,UZÓˆ‘yƒ™y©¸g6mš¨ß}tÎ7*váùéª}ׯq°fUÒ¡[9÷•–Q6z墒e9i‡”:šá˜N¤©œrö„¦j®zI¨e²—"Šf"[gªK9Ûc«æÔÆà†+î¸ä–kî¹è¦«îºì¶ën¹Y¢‰È¾é©¶¼Üç´)’ʯ½Öúe'`Ùâ ·iðŠñ2u,O±I˯Í.¬^Ó—¿Ëh#ªM©j±€ vàÈï5ÌÖ¼¯uúïl(Ë"}0*«ì¾öÝGß‹#rÌÀ•üÛÉþ@¦òy,¿ÒsÑ]<|ÉÒÚüÌtª@žÓ-ÑS3u4‰KÓ.d·—è»æ†POþå¥`ŸÐ÷‹„ÿ>ÖQs?Îø÷Só< êS.Ü×?¿\OLÓÞðôW@þÐOö“ÿÈ‹ÿyk(°)ȧFDù àFH¹q° º+¡ ‡-Û°‚æ+É,ö]„Y[ßäw—úÐo/T܇¨·¢/ˆâ‹¡ŸÐ(5mƒ:”‘HÅ*va‚V\` c»èÕ剌¢M˜Å2šQ8;cý”è* žÀ`l á0E5ÚñŽŠq!aAü­C»ˆcçH,2îñ‡Ä""¯ÈÆ.p‘dÿ©š.ò’wT$&…ÓH&>ò cäý(&Knò”VÔ$*!ÑɦÏHpˆ›æHÊÔq•¸lž*sI„>Òðt؇IÌbæþ̓[À!/—¹°]2³ ­Ú/uºjZóšØÌfæþ¤ÌgzsOÎüæ:¢é¶WŠS ‚;§:QÎuN…œÐëæ2ÓéÎz:«õô¥9íÙzòóŸÛJ#@w³Å?µq 8ˆ1ÊІ:ô¡¨D'JQÀ ¡8*¨Õ<‰Ñp ©HGJÒ’šô¤(Miü\ÙQ‚’Á Žlé 8¡ÒšÚô¦8Í©NwÊS±T¦}éF]ùÀyI HM*R¡Ô¦:õ©PªT§JÕªZõªXͪV·ÊÕ®zõ«`½*S¹; u\ä¨YÑzT¬Ž5¬p«\çJ׺Úõ®xÍëSߪղUþŸ)¬¨`+XJd•¯zM¬bËØÆ:ö±rE¬[@ØÊZV¢¥/ËÙÎÓ°nm+dGKÚÒšö´¨ mWaàÙÖº¶„™­Ý×úRØÙö¶·%nwËÛÞúö·À ®p‡KÜâ÷¸ÈM®r—ËÜæ2W·Ë¥­Ga:[éB×¹ØÍ®v·ËÝîz÷»à ¯x™+Ý„R÷§åM¯z×+ ´¢—½ð¯|âÞjó¾øÍ¯~÷Ëßþú÷¿°€LàøÀNð6‡jÊù:øÁ®`}“á [øÂœpé0Ìá{˜bŽÁ;_Kâ›øÄ(N±ŠW¼Â+-Ä‚` ‹g|HyÒ¸—þ0žÊwŒKóøUçm°ŒLd$ú¸ÈÀ<ÇmcŒä&ßñÈNÞ l»ó)ÊXÎ"”³¼<• 9Ë`NÝ–±Œ'/‡ùÌs”ËÌM£ùÍ÷S³“Ù¼–/ÃùΓs“éLF;ãùÏÎÒ3’ù,d@zm‚.2¡)|åC;ºh‰&ò¢7\ŽG[e‘þñ¤­\éK{_™æñ¦™üéR*Ô;µ›MÍê¡úƪnt«gýžWÓ8Ö¦µ® cëã: ¶°‡MìbûØÈNv¯]Œë];ûÙAË1´§Mí¤4»ÚØÎö7FÍân{ûÛà·¸ÇMîr›»°ARO×Íîv»ûÝ𦎷¼çMïzÛ»§ ~Á½÷Íï~ûû߸ÀNp’æû°¢M­ÂÎð†;üá¸Ä'NñÈ&¼ª2ܪd+ÎñŽ{üã ¹ÈGNrÅnܪïëÅKÎò–»üå0¹ÌgNÖ•O5å§¹ÎwÎóžûüç@oìÉ1î§å^w¼HOºÒ—Îô¦;ýéPºÔ§Nõª3ýèÈźշÎõ®{ýë`»ØÇNö²›}·!;Tix8.4.3/docs/pdf/0000775000122200012240000000000010767576212014111 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/pdf/TixUser.pdf0000775000122200012240000024505507404566764016232 0ustar jeffhjeffh00000000000000%PDF-1.3 6 0 obj << /S /GoTo /D (section.1) >> endobj 8 0 obj (Introduction) endobj 10 0 obj << /S /GoTo /D (subsection.1.1) >> endobj 12 0 obj (Installing Tix) endobj 14 0 obj << /S /GoTo /D (subsection.1.2) >> endobj 16 0 obj (Using Tix with Python) endobj 18 0 obj << /S /GoTo /D (section.2) >> endobj 20 0 obj (Tix Widget Set) endobj 22 0 obj << /S /GoTo /D (subsection.2.1) >> endobj 24 0 obj (Tix Widgets) endobj 26 0 obj << /S /GoTo /D (subsection.2.2) >> endobj 28 0 obj (Tix Commands) endobj 30 0 obj << /S /GoTo /D (section.3) >> endobj 32 0 obj (Tix Object Oriented Programming) endobj 34 0 obj << /S /GoTo /D (subsection.3.1) >> endobj 36 0 obj (Widget Classes and Widget Instances ) endobj 38 0 obj << /S /GoTo /D (subsection.3.2) >> endobj 40 0 obj (Widget Class Declaration ) endobj 42 0 obj << /S /GoTo /D (subsection.3.3) >> endobj 44 0 obj (Writing Methods ) endobj 46 0 obj << /S /GoTo /D (subsection.3.4) >> endobj 48 0 obj (Standard Initialization Methods ) endobj 50 0 obj << /S /GoTo /D (subsection.3.5) >> endobj 52 0 obj (Declaring and Using Variables ) endobj 54 0 obj << /S /GoTo /D (section.4) >> endobj 56 0 obj (Using Tix with Python) endobj 58 0 obj << /S /GoTo /D (subsection.4.1) >> endobj 60 0 obj (Freezing Tix Programs) endobj 62 0 obj << /S /GoTo /D [61 0 R /Fit ] >> endobj 67 0 obj << /Length 340 /Filter /FlateDecode >> stream xÚ…RMKÃ@½çWìqídg¿×£¨E¡ð ^lÓ¤¦©ôç;ɦZJXHÞξ¼yó²È-dˆ¼ÑÌ* ˆ–Í6 ²¸>Ù=R-Ò•÷`´"<@K€Š€7`¿Ì¿¬aÈY×ê:O²;å˜`­bù¢¥äó7ž¯Št,àyª _âæ5Õ‚¯çË¢ŽûïùC«”¶† Lnó?[”@0ll¸s±\-»óçI´«E¯ÕÑ·WYV¯ð]î«T9>+e –) ^¤h8|E¿ý¶¨$ÙŽÞkð’¢p ¤nølÇŽÇ"*ì%[ܽ¨”ÝoÝ”É4aÓ5t¤“”’T€2ô"cúó=•ÿŸæQl>Š*)èB œN&HÁ¢š EàO®Ä¹<‹.8örr¿mZ¡¹endstream endobj 61 0 obj << /Type /Page /Contents 67 0 R /Resources 66 0 R /MediaBox [0 0 612 737.008] /Parent 71 0 R /Annots [ 69 0 R ] >> endobj 64 0 obj << /Type /XObject /Subtype /Image /Width 32 /Height 32 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 72 0 R] /Length 70 /Filter /FlateDecode >> stream xÚûÿ|/Gõßw;œà§7ÿ è»NÔ?õ3€ŸÞ|‚î©‚¨_üôæƒÝÇ'úÑ¢û?Fœ}endstream endobj 72 0 obj << /Length 42 /Filter /FlateDecode >> stream xÚíˆ 0 Â<=§ù™k=c4 F%¡ -j¶Ì¥•Z:Žã@:5endstream endobj 69 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [231.718 490.263 374.947 510.188] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net) >> >> endobj 65 0 obj << /D [61 0 R /XYZ 110.854 636.116 null] >> endobj 63 0 obj << /D [61 0 R /XYZ 110.854 611.21 null] >> endobj 66 0 obj << /Font << /F37 68 0 R /F40 70 0 R >> /XObject << /Im1 64 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 77 0 obj << /Length 858 /Filter /FlateDecode >> stream xÚÝXKsÓ0¾çWø"´Z½|¥´ 0´bèáà&&5ä1ã˜úëÙøÕÆvcÇ-“6“C¥éZÚÝïÓ·+ÃégVIG£fÚ™,àd¿ŸN1ú0xí^¡!sæ)åøßÓÏýé×áÉŹzîÝ‘0œóaä~óßN}Z&Û­eJ"X»0–#!™ÇS_8Séã™S ?½-¿àÎ(u(5M]”ÚÃl»¸Z&á2YW=£Ï9\·9FvB3 ˜æþ@áM¹q-7àŽ`““wË$vÁWÓ_“$Z-«ŽXÁ,tÈðüŽ’›ltù7¹©óH\PÚvOIŒ€ÃK&Dm° ¬ìƒ¶èv)£šIÊæž¢%rÑò7ŠU |•N¦³0ÉæcTÏ<2»+Ò2%äž¶¢MİEÄÔ¾4¥ˆmq÷Ê•<‹¬V¬f\B{D›Úpä"ö» ÅY@¹»ñ0Z&J-Û"ÁÉj±–ÓHŒÈ.uLJy¬¨‚®$ ¯èæ@’†M’vqý#œärvGÔ †Ó¼ˆeÍÚ,‹MÁ«’ÂSÔ®‰ÕŒÄ(Ù¦tÞS·kX*ݸå<Ÿëu¸Î&Døªfó´É[NÂÚqœˆn;ÔqRxïYHb:IüQ½Ê±wÁÂR°±Ì†oÂÉ<ˆƒ¦«(º[¨~ÒÖJ¨—¥aµƒ)™0Ø«µ®õÖ¹ÍÿÇ |ã()Ûë!õÑ õS¼ÃÅÊÜu.GTªr„]ú]¥ð`xËï1iì4ˆ§…æúÁ<ºÍNñNXZ•Û.] |¶$¨F¥ ¹ÛKšA> ˜j0Uf¦Àåñ-Kë½ó†d\Ï륌fÖëp²“ðìeº!8Üu“Ú­îíãšF™7[÷úÇöGÁw¨¼BRÙ²ÐÖ& ^ï5ZdÕS‹dÙ'žÅaxÛü¶s§p°HçtÄ£zÒé£qŸ'x<™ÔÛ>h}uÿ¡7Τendstream endobj 76 0 obj << /Type /Page /Contents 77 0 R /Resources 75 0 R /MediaBox [0 0 612 737.008] /Parent 71 0 R /Annots [ 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R ] >> endobj 79 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [109.858 571.295 194.663 581.668] /Subtype /Link /A << /S /GoTo /D (section.1) >> >> endobj 80 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 554.405 221.622 567.091] /Subtype /Link /A << /S /GoTo /D (subsection.1.1) >> >> endobj 81 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 539.959 266.131 552.645] /Subtype /Link /A << /S /GoTo /D (subsection.1.2) >> >> endobj 82 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [109.858 513.719 205.734 526.376] /Subtype /Link /A << /S /GoTo /D (section.2) >> >> endobj 83 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 499.112 215.824 511.798] /Subtype /Link /A << /S /GoTo /D (subsection.2.1) >> >> endobj 84 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 487.135 230.923 497.352] /Subtype /Link /A << /S /GoTo /D (subsection.2.2) >> >> endobj 85 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [109.858 458.427 307.663 471.083] /Subtype /Link /A << /S /GoTo /D (section.3) >> >> endobj 86 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 443.819 339.272 456.506] /Subtype /Link /A << /S /GoTo /D (subsection.3.1) >> >> endobj 87 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 429.374 282.641 442.06] /Subtype /Link /A << /S /GoTo /D (subsection.3.2) >> >> endobj 88 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 414.928 242.292 427.614] /Subtype /Link /A << /S /GoTo /D (subsection.3.3) >> >> endobj 89 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 402.951 311.691 413.168] /Subtype /Link /A << /S /GoTo /D (subsection.3.4) >> >> endobj 90 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 386.036 306.682 398.722] /Subtype /Link /A << /S /GoTo /D (subsection.3.5) >> >> endobj 91 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [109.858 359.796 244.157 372.453] /Subtype /Link /A << /S /GoTo /D (section.4) >> >> endobj 92 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 345.189 267.099 357.876] /Subtype /Link /A << /S /GoTo /D (subsection.4.1) >> >> endobj 73 0 obj << /D [76 0 R /XYZ 110.854 611.21 null] >> endobj 74 0 obj << /D [76 0 R /XYZ 110.854 586.674 null] >> endobj 75 0 obj << /Font << /F37 68 0 R /F46 78 0 R >> /ProcSet [ /PDF /Text ] >> endobj 97 0 obj << /Length 1618 /Filter /FlateDecode >> stream xÚåË’Û6ì¾_á£<3|ꑞ’4IÓÎ$™ÄL§éA+smÖ²èHò&û÷ʯUÖ›sÇ‚ €xËbÂá'&Bp–=IUÊ„H'ÕæJLè·ž ÐW/æWO_« ÈYaÌd~®Ï'b:œóäí»ùÇ©æÉû_ÿ|9ûþÝt&e‘§pþÏü÷«Ws`KUž3£À?5ÎʙԬàA7ÎL8m—“üøfƒOfAÁ@TÖéDdLŠq•›¾Š<ñ‹]Õ;ßœk ì8“<½¤(ÐÉ”¥BíÅŽZj¾²Ó™’&™O•IÜwÚ|á†Ï׃B¶½™ ž”U¤}õ½·MÊ Tí®Û²½£Í¶õSa’[·°aÊ&®‹…ÃW•5í[W­êlO€¿¡õ›[ÌðñÁ€ši°*¼´=òÔYÒ{Zçë§óµC-§Æ$l:K¹Lž×ýÊï–«H^ @×—Í¢l¸Ë“ðDÀ”‡ÍªŒü7 4¼"¢w½ÙÕƒj¨Æ“õP]ÒB&ek ûµ¸QÉMë7„®üf[ÛÞ‚ÒY‘’3¿w’ïµÃ“SÓ"f㻞 ´®ýÀØo|Sßèi‚žµ ‹fÈÄðÜàå²'tPë:×,霔Gô‘-a7_?C1O_qfÒä,1Ö^»Ú~²µ­úþ;ŸÄd¡˜4ñ“nËŠxüÒo(:fÊP,ĉ®ý¸eXž¦H0¬Ðb/RÑ×#lŒb l0WJ¶f%8Qñ"ù´u H§Ô:…Ø_ ®YRvoûmz£ßpí*W—×µ¥}ôKä;ÄDxtÅ'U'o.ëB‚+\SÕ»vc<Ûxô*â÷^G4yÑ% H´Æ¶e]ß~ˆii œ"϶l–ñzxFÑv,‹·µ«J,ÝXÔ nÊ£}ßùÞ¾ð~=懌©Ü<à΂/?оWàÑ»F©fÆä ¡÷¡lìâ³kþÛ«,‡¶ ÷¬ ”ñÄö8Qg(±Ü…´âi"q’´òS,waÁâäb™Lyb¶`TÃ)ÃØ Ü< ›/Rf{â6’—à œ†°HsZ„lXк•1ʼn&Ÿ±­ºê«T¤tàNg llxmövErçw„®‚l¦t¼±»¡´—Ô Iˆ­Vûº Nžlv¢(ºr{ˆ5¯yžT­…=´,š¡}‰ÏbÒžƒ˜4/Ôì3Ê%Üj÷‡N‰i›<ùk ÓL‚Fb|ðýl€\uKìdd§òcÍéèúŽÖjå},È@F½ ÐÔ‚›­ß¶®ì-Ñ*<œ†¾‰ôešoäq_­nk+:µICÃè ZmT0§ªšÁ|†¬L!3˜$×Ùê@)1Gr(G–ömpý­" p«ëSÉãú^)5N¡¿ìkLÐÆ(IÚö  lj££6°¯±ð¿žV27ÞsØ» ö×ÿ—·*;ÉVIUCµ³mßÂ|·²Ì´ˆYçi AjÏÒý$Ãã Ä•624Jž…¢ú¨yÕ0és<¯jÀ¤'ó*;L¬0 ÔuHRÆWjTç:°BÈG ®¢`)¿4¸NsH+¬™:qS‘€a$ §há{£KEÃPÓíjtWÑ‹@³ðÕ;ñ»pæ:ŠAvü©4ã*~& 0áµ1Ý=f@%ñÉ¡X*s"{@€k!}bÏÞ‡ñ°$nec›ñÉdú´9Ow=…ÖµC»à"ŽKÅb(ú…’¦™£¦Ô Ú?;ûA¬,×ú’  °keŽŒ ôˆ¾p‘K‚‰.Ë.C£.y>žQü|@œ4î˜A1óf‡3Õ™,Á ù#¾Qa8e\êð ïgÜð‘Qv±fâüx/÷Òœñô1–ä"”Be™*²Ç–$‘Pò¸zAÛ£ôÃ'@”ˆ¡@išŠK™…Pk¿îÍ‹’¾¡9NßÇÑ‚˜ÐQJïQûEÌúìC0eZ;2"¾YÏ‹5”¹ÑOšÿyu<%}ê÷},è‡Ào~Q¦\Þu%™ÎpÑÅßë~ðžk\®Xx—*þ”M–sendstream endobj 96 0 obj << /Type /Page /Contents 97 0 R /Resources 95 0 R /MediaBox [0 0 612 737.008] /Parent 71 0 R /Annots [ 99 0 R 102 0 R 103 0 R 104 0 R ] >> endobj 99 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [343.89 323.122 367.796 335.808] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/docs/) >> >> endobj 102 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [160.702 283.748 267.875 293.965] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/docs/Install.html) >> >> endobj 103 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [160.702 259.339 230.754 269.557] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/docs/Release.html) >> >> endobj 104 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [127.456 215.027 261.934 227.714] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tcl.activestate.com/) >> >> endobj 93 0 obj << /D [96 0 R /XYZ 110.854 611.21 null] >> endobj 5 0 obj << /D [96 0 R /XYZ 110.854 611.21 null] >> endobj 94 0 obj << /D [96 0 R /XYZ 110.854 382.051 null] >> endobj 9 0 obj << /D [96 0 R /XYZ 110.854 364.567 null] >> endobj 95 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R /F14 101 0 R >> /ProcSet [ /PDF /Text ] >> endobj 108 0 obj << /Length 1372 /Filter /FlateDecode >> stream xÚÅWÛŽÛ6}߯0‚‘‹˨K>4iSl[$ÅÂZl‚–+Ë6cZÜHò^þ¾C%ËŽÜä¥( ÉáÌðÌÍfþØŒ1Jr™ÌR‘ÆÒY¹»`3üÛÎzé׋—‹‹¯Eê¤r¶Xùí‹åMÄæ1£”FWo×ó„Fo|÷jqõöÍ<æ¼ÈÓˆÏ?,~¹øifÑ£Ès"ò_½bÜkÆ> endobj 105 0 obj << /D [107 0 R /XYZ 110.854 636.116 null] >> endobj 13 0 obj << /D [107 0 R /XYZ 110.854 611.21 null] >> endobj 106 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R /F56 109 0 R >> /ProcSet [ /PDF /Text ] >> endobj 116 0 obj << /Length 2051 /Filter /FlateDecode >> stream xÚµkã¶ñûý £_*1O|JB¿Ýå.¸>Ð"g š•eîZ]Y2$9›ý÷ázØòí&…±Àr8’ÃyÌW1üñç1KµZiçfUßñý=­ô—w¶ïÞ– ³LëÕöÁmßîÿ‰õ†Çqm¿üs½:Ž~úòýŸ¶u€0\FrýïíŸß}ÚÂñt³LS¦•øÆp(7B±,v<ÆL»ÕöqÀvÄ«cÔ‘:Ö•Yñ„ ¾Ìúš§Qù«gßMö¶÷Oà‚s8^2•©×G6“‰zÇŠ)™Î8VLÂ0å˜ñoóÜ-ð*XÆÅ[x͘‰¥ãÕ¡SŸ·õ¿]KŒ\ÜËÁœÒäuåJ'ŸxxöâeÝ·Íþ\ØÞ›Š¨Ysý‚ÿlKã(£ç 9ÀUÞuaKßøñ`‘Õ÷Ÿ5Ÿ\Ä3 –•…'=ÉŒ¯ ¢x¿p¼DÈá`x»>FK¦SíÉZ{²mß”­e늓èK=ãræ.Z°$Ó$ªß© °Û üÂYÚìË®oËÝZÄѹ/›úòæ×Q:6ýæñ¼J&øªÖ"¨¢Õ"e”Óto A̓_¨*B (Þá–Ÿ½µÓaõŒTFÿñêŠ^ÁS§AÅxa·  B'$¢?zæ@?Eß´/Ây毓KJÚhÅÒl&©ß¢ª¼ô‡kùKÉÒ”¿îJàçî}ßt¥®Ïë}Þî)p\©Þañaà[/4ËÎ('ËX3O "ˆù{óûžŒï‚!%Y,ÍDÒŽ/éµÑ#‹‚2·ØÏÈ^Ózþh86Ͻíó²²á‰¶+Úò4¾ÎYØôÞ–¾£YÑÔݹêGš m@2c‰¿WÅǼ>ç~ÊíUÀ6š©ØÜÖöí£ÙµãÅbæ(b'ò­‰3ÕÉ, ]ç|ƇDô!ïÊâmiH‰äÕ\¯ávI ƒ1¿BMÄߊˆ‹ìƒA~€øÒ\»ÄX•~³$y3·uÆ*•Œvþz7éyOЩ9uO4Î3bü !ѹUtj‰¼Ü[Z8Øê™E§Y´=xÜäå æ ì‚Ï|kÈ BGEŽ>#T´³„8wέrùVºC³†é3aá'»ß ÷8=Ú®s6îHéˆ'Ÿ ‡’#ðp® ôSg=¡$RÚ±…^+cïµ 'špÌÃx:Ue‘ãa˜Y ØæÁÖ'ÀcZ‚Ž1wTŹíš6\Ó‘lñŠ“²3¤aTô|(‹¡r‚hy²åwì¬õË»æ\ï12CÛAâGÊÆÙ ÉÚ AÔ yu,1×fsˆŒ¸ƒïC)©-DÇʇ«Ç•‡xz™àTàÿ:A0âàÓ›ÂGÆïèÛç¾oêÍUMjR¦xvGï&'ãI4²à¦ƒ³ ÂÉ{ge0ÉiØaJVŽÊÈp¦% EHwF+r{üÞÒEsÜ7+Íâ8™)ýØÔ•ÏãÞwzhÚ…ú5ÑPŠ'þ%Zo XùǼ.lµ¾A™Z§73O3.4¶n 7}?]lŽ»fAÕI YTÝ]Õ2ËRœ ì¸Ù v€¶ îÊcYå-!]àÆ1Và~wá(H û©¼Š Ë21S±+Ëýí+Ž da…‘jONÚAü“!þã2E=Ü@ÑP­ ì"dN¨âД…%Ôî…p¶ÄžpýË©¬ èÃ~YˆáÝy÷<6Ö¡~£Ûé44ζ9^” ªT'G‡8¹.,! »§ÅÁë°Ð!•\T—÷6:¡yôÑÛLĘB`ÁõU€Ë«®!ÌS=‰ÖÂEDßÁ­¿‚޽o]w±ÐOy² ˆF*°(ÈΨÈH î&ó¸älOJåûÿž»ž`ï’pœWg?EÄñÔBbr†2£îŸ×Ìɟ׶¡ q[Ç@J—Ê'gZìÓý™Cß}‘9§ì@¦.Ã*ΠÑo"† ûw-ÌÆèP{ÁBmk0¹8•ò,B;)¶x§aÜFDþ¸†P„ ¼LrÅ-y™<¼z³·?DZ¨CÔ?CiZ¦Úã*’UÀWœún1sHœ“°ävÿÿÿûÖ_ó­>…è1‹çP˜ßݱ nN8€9}Ka»V<ùjV\ð¬]&&#Í+<˜0Îb(š§Ð²§3[kjäÄ`†™Ó8!F7“Yô¥'$Åpã‹33dù€ë1T’Ƙƒ <~xñ؃ßê*j“o“aüYéÞ¸Yð ¨$ŽºXbF°¹1~–×z@Î üÀ%2E¸úà"P=¹ºuÜ'çû°öåÒ‹.Z D…”Ç‚ü 8òVþ?i=”ÃzP6sŠÚiàמfNxÚu+G‚¼ÍÚÒ vÍôÅÊë¼8L1æF¼ &5~›XÈuPLÇÆÓâÎ.ù¹ÍWBä¹{5Í3Mx€ùXNãÚè”8ËixX¦u È’ xÄŒ>‰I\'óÞ³ö®|RQ •M}+ÁÔ¥¡Á—씨£…ÐBâ‚wìéóFz×ô‰I<@ÿ¶•á¢$ X6朌×'iÔÚ*¿høpc3°P€é¡3x¶pùå4C ßý†"Î%Oü”Kºìè ÁYrñ‰o”S|ƒ-ªW¹Jݯ[\-–ŽB@]foùaçÕŸ®þ²žendstream endobj 115 0 obj << /Type /Page /Contents 116 0 R /Resources 114 0 R /MediaBox [0 0 612 737.008] /Parent 71 0 R /Annots [ 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R ] >> endobj 117 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 542.848 128.038 555.534] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/TixIntro.htm) >> >> endobj 118 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [482.214 542.848 500.394 555.534] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net) >> >> endobj 119 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 528.402 166.748 541.088] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net) >> >> endobj 120 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 513.956 145.731 526.643] /Subtype /Link /A << /Type /Action /S /URI /URI (http://python.sourceforge.net) >> >> endobj 121 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [408.48 499.511 475.879 512.197] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/contents.htm) >> >> endobj 122 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 447.51 164.333 457.883] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixBalloon.htm) >> >> endobj 123 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 365.318 180.269 375.691] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixButtonBox.htm) >> >> endobj 124 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 326.464 182.254 336.837] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixComboBox.htm) >> >> endobj 125 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 273.163 164.764 283.536] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixControl.htm) >> >> endobj 126 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 203.134 184.25 215.79] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixLabelEntry.htm) >> >> endobj 127 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 123.226 188.219 133.599] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixLabelFrame.htm) >> >> endobj 113 0 obj << /D [115 0 R /XYZ 110.854 636.116 null] >> endobj 110 0 obj << /D [115 0 R /XYZ 110.854 611.21 null] >> endobj 17 0 obj << /D [115 0 R /XYZ 110.854 611.21 null] >> endobj 111 0 obj << /D [115 0 R /XYZ 110.854 583.386 null] >> endobj 21 0 obj << /D [115 0 R /XYZ 110.854 583.386 null] >> endobj 112 0 obj << /D [115 0 R /XYZ 110.854 483.022 null] >> endobj 114 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R /F56 109 0 R >> /ProcSet [ /PDF /Text ] >> endobj 132 0 obj << /Length 1892 /Filter /FlateDecode >> stream xÚÅY[o«F~ϯð#HÎÞ¸½¦ç¢Ó6jÕXj¥žªÂfcÓØNâß™] Ø9‰Z¡*’wöÂ2;ûÍ73„/üñç,L#µˆer/Öû+¾ ¿û…“~¸º^^½ÿ$XfQ´XޙǗÅïžðÎó–_~ó1ï×/>\’|ksé)ÿå÷W—°=½Y¦i) ò ït ™©Pf1q˜ÆâµõÈnKÍÆÎüò™¢â éÊçÝéfª§R¡J¾©æ›TyÙ‚Ë­ö)S^bæ=•ÅFw4¼Î+Vš&­.h¤«©m·µ/"ï‰æ;·áC£}y›F·-ÔwÔæ´r•¯ï7M}¨ <õ"mËõ–Ä}~$¡Ëï}ίŠóKL <ëÉ|wx«wzÝQŸ„ËKg¿< "û~#÷—rÙR›S³®«./+dIìšû@ºôÛÊ6¯$K¼/v;º{iï¾§R”€¡ ò .1QàCS#c=–…uÜ&/Ê:XÕÏÖë¿[½¾? ·Ýq§Ç¾Úšc–½ “ëRçÎmÓ9~å?м ,©j~–¼íŠë˜õÎ4Ñ!åaÂg‹Šso¨„pQz 8–SƒÁìD´9®h;p¬¼)hôû šÝ\|”†’ñ‘÷ÞÔ]yìÊa+Ê|WÛø†W¡¬½è·QŒŽ+ÃDòead&ÑøV󻼘ƒY’Þ(ïD„èÔ94m!5Ùl'tG2É¡=Ò{­Ë‹‡ºëo$gQÿ¿`Ò·áïRf…Môúg7ãì¼ÒÂÏéËÊLöÂO\ Š(Zo* –zm¹/wyCcnæÂ!ÎöI#öLø•Ely¿Ü ir¦.2Ð1fúiŠ™"€O I¥Hš0³ÑPÎä»Ý‘º¶ TÀ)Es Í}ÓAlO©hMm2\`ÇF‚DÆÞÈhÌ€½a…ñÆLX?aì§0°¯Û•E¦Àµ]Žl>MA¯¬ÌÇ© yÿ‚2åówõ~U_»b©ÏÅôµ|>€>Ä ûÕÉÆFU´Êõýî8tç¹q²ºðyD„,‚ =ŽCgóQõÇgLÔ_ô– ^ŸÍ^cK‘zSEÌ`OÕ Âˆ³;z¿ÒEan—TÔæÔÀñl.›ˆ0MÇeóð}}t`©“2“šÀÛÑ3€qÑ3p~Pn£B 3 šò߇RýÑ]Ui¾Ëàø^wÛº µÆmp ÌlrqÉ𠪧X”‰Ž1«Ž¤p–S®’GÑdWBÙÝA¸`ÕA™¬ª¬Ö1+Ä/4€e ìO‰UÑ1þ€Ž&AcXŽºüææÖ~‰÷Ú€es" ä…(‘† ¹Ì8C:Ÿ3|ÓR¨>U<{Ȥ7¹2¢¸ ‡qAÚ¸ ]\£¸ ).Hw2 }÷M!“ãa#à’"³‘€#ë#w‘ ˜Ù¢Óè~‰›©iä8‡ûÎéÁa™¥ýó4† Ãzuÿ£|âì ˆzÄÿ‚Ò2l|o)W{GÄ÷˜Lß©çû86|îÿ‰ü1vg§'’Ìè5¼¿ú¯ªÞü¯Dendstream endobj 131 0 obj << /Type /Page /Contents 132 0 R /Resources 130 0 R /MediaBox [0 0 612 737.008] /Parent 71 0 R /Annots [ 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R ] >> endobj 133 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 598.115 156.323 608.488] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixMeter.htm) >> >> endobj 134 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 558.455 190.897 571.111] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixOptionMenu.htm) >> >> endobj 135 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 535.524 188.004 548.18] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixPopupMenu.htm) >> >> endobj 136 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 500.431 155.008 510.804] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixSelect.htm) >> >> endobj 137 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 463.054 193.563 473.427] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixStdButtonBox.htm) >> >> endobj 138 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 394.96 162.324 405.333] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixDirList.htm) >> >> endobj 139 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 343.138 165.194 353.511] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixDirTree.htm) >> >> endobj 140 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 289.032 205.482 301.689] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixDirSelectDialog.htm) >> >> endobj 141 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 173.225 208.148 183.598] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixExFileSelectBox.htm) >> >> endobj 142 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 106.957 194.197 117.33] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixFileSelectBox.htm) >> >> endobj 129 0 obj << /D [131 0 R /XYZ 110.854 636.116 null] >> endobj 128 0 obj << /D [131 0 R /XYZ 110.854 430.473 null] >> endobj 130 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 149 0 obj << /Length 1955 /Filter /FlateDecode >> stream xÚÍÛ®ã¸í}¾"°ÑZ’åËc§ÙÝÞ°hl¶Š£“¨ã؆íl&ûõ%EʹœLÏy Pàˆ"iŠ¢x\¤ð'R¦¢4Ù"×¹2_Ô‡rA_úÓ‡ëßÖ°‹Ê˜Åú%|¾Þþ3QË•LÓ4YÿôåJ™4ùå§?üðiMðß r©³ü÷ú>­A<¬ËR˜Lü3#ãJW™ÐU@.Ê\½ÅoàB,–ÃŽ)û.’å.2ù¯Ÿ}ã>µÓp¾×5W"SÕÿRõ]ê|ÛŠë½CeYrQ¶:9ùíÎMDªmKÀÆñ8º-a¦Ž0¾íÌmiùWšªÆµöàÄr¥Ó2ž¾.‚áÂhh‘Êb±’™È2CV9÷?LA6pWU2íqMûƒm¶iÎËÜ$pXfªäwÍä†ÖN~©LòëRšÄý;øDª‹,Vć["ªÜ88³m– x§©#…SV5ªÎ¶Ê%|a¤’ÑO#áZ‡ |уlD¸`uÒMåYrÚûzO<'ß4Ä´|»#ðØÑÒ–¬AðèWO¾k‰cëmÓíhܽP˜k#4ö®ö(3<1 6ç /Húþ³‘W~$µÒHö¦¤ÞŸ+¥(+ͬ]zŠ{‡_å¥P¥‚U‹L†P&Ð0˜„pŠüx/kŠÙÍÆ()4'Œ½l F¶ ÝìÏ~œ>v_ïUÑ©Yöfš @ƒt#tñÄ$ñ#êy¯d¦„‘êÙ BgUBÇXÎh @n˜’bÐÓ³õcߨ3!‚áÌ;Yæ qƒ¸½ÅX£˜åO˜€ï6 qEYCVBÞ¸u|TmL2NñžŽƒÃˆ/UòÒ HÈ F{è›HŠ>;“;çÖM¦D$Mƒs#ä—\l@6d” aìÝø Ú쳂L¶®X°³-u×¶pPć€ËÁ ƒm)TpLëFþ¬®»aËÙ ât²£cב;$O"ßhFIvO¡°Ä¡ä©eÊ™#^‰ñï»a¢?Ø]$Ð=0CpžûŽ·­óóãæä§=‹€k¯ãßdBÉâ¿E–?/š~¿wõ—G•Qýô’kdrQ!lç20Ûl¤¥¥™Y)Ëă¯ÅÖ–T£M,”Ä%'q9»Á ò†În£'”B¼ Oõµv!k,gþà;4çë(‡u)xZIQ !ò…ð5ʹªŸ‚ÖÁn}wOC¬8+gD×Òšc¸v=ÚC•`\ÁÛGÚ×¶·›PaŒ¥0±´Û†â°‡9!íÐ .Š"“*Œ™Ðø¨Ww`:\âu°ßÝ臅€åù¾^Y2,e™8÷ªÎEZ>½jHð‚¥6 $NÚÍ…`*2§Â.—‚õR8`³¿.ÛJÅ$ø–0–?ŸÏƒ¤\,”Èóòæ©(«ln ·º€²ÛÿC´rŠ|¿z‡ýä‰ÐÁ¯;“é\$…pL×»–<ùBÖM7ÎÈÞ¡MDæ—Ëq¯½…¿ö¥ ,¯¡÷Èr‘Uæ}íÌ4êíRç«e½&y4„ý{Z&ýÿÒ2­¶LRÈÒ<=Á§Y²æäžšKrOã<•ò<Dž§Rž§`½ÔL “£#Úó‡¼nž8Ñßí$Èf56¼=¤œBßÁ¥Æçœ*ó’F‹bÖ?/¯fœ2ö3s%  5"eœkŠ[ÉÔ‡ÌÔ2”\Q¹ xÒÕ)âAZ¥Ëäò6‰Ò`£ŒÆ7¸–ûuÓÐÔ™TÂ?IÛ)~?ßéjƘÞ$ÌLÑò×_5óGW·Â±÷Q»‡æ‡‚|ZB/…F©°ž\;ÂÀfŽJñK‘¨Jë øsw$£ÿ-¸8€!M!Ê]$! ¬¨mÓts΀$‚© ¾W;À µ v”p€YòäW¨?9Ám$UvX÷Ýàƒ ¹ú1J§2ùdà `W2†ßƒ¾€CÕ:„´£ÔÝŒ$˜½Bá ¿áäÁOã7~ìÑX> endobj 150 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 595.831 174.28 608.488] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixFileEntry.htm) >> >> endobj 151 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 500.332 154.362 510.705] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixHList.htm) >> >> endobj 152 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 432.586 177.603 442.959] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixCheckList.htm) >> >> endobj 153 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 364.84 147.931 375.213] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixTree.htm) >> >> endobj 154 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 281.502 153.035 291.875] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixTList.htm) >> >> endobj 155 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 169.273 199.744 179.646] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixPanedWindow.htm) >> >> endobj 156 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 87.081 175.607 97.454] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixNoteBook.htm) >> >> endobj 146 0 obj << /D [148 0 R /XYZ 110.854 636.116 null] >> endobj 143 0 obj << /D [148 0 R /XYZ 110.854 535.844 null] >> endobj 144 0 obj << /D [148 0 R /XYZ 110.854 319.484 null] >> endobj 145 0 obj << /D [148 0 R /XYZ 110.854 204.786 null] >> endobj 147 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 165 0 obj << /Length 1868 /Filter /FlateDecode >> stream xÚÍXY7 ~ϯ0ò4âÉHÍ‘>5i6ݦ9иH€¦²­µÕØ‘÷è¯/)Jãs³AQ…%QE‘ŸH±Q?6b,‰ ™Ž2‘ÅŒe£yý„èw= ÔÛ'/§Ož_ˆØãRÊÑôÊMŸ.þˆøxÂ’$‰¦—_Æ.“èóåOo^O‰þäž1eã?§¿ìwç†ý±Šp– ôp^ÄìÚb€ç%¢Qµ§\,3±ZèÞthÑ ‘(<ò 4z~!ÙŽÿ .â” « ¼Ÿ¸ö¢dØv7ÓofFQÆR”£IÉc‘0‡±tƒˆž<ÐJ ´‚ô$Hð˜Å™¿À.kÚ¡ÄËÓè~ <ÐÄò8åù£WAÄ„'qR”gB¸Wm½n7ÍâPI™ÇL¤g„¶aá àÞn<ÇÙÌõ:ƾ™¦‚ÇÕz–N»» ûœ?Õ®Ü}½ó¶éÁ|?ø§C:!âœó=©7•5ë …2è0·…« Ú)€R£û;y¤Õ|µí%~‡ÁÐ3Ç}‘šÐëÂz5!:öŒ4­®{"1£€ÍRÞÙþÙ‰H[«5 Mx–l÷+ó¨Eœ—Á¥ËE¨­ºN5K§p]umMý•¾²D9KÂXg–+_àêA©¢j0Š_RÑlrrB½p `¢p @Ò)1óþrkÃw¸,°¡<·Û«ï býX0µzÛ$!mêUn7=€ì±Šw¤ßéõ)ôÉ\ГŸÎ6Ö¶ žLã¬z CY)hæÙž¬ˆ ¸X ‹’)–׿-v”"ê±3F29P² E¤ÛŠœh×K“Áÿ’èËÇwD|M^ázh±4š á/ÿ)Zç­ß™~®«ŠÜÅcVDî ÂíìÛ—Ízc?4äã{À-â€íÜ9©(vTpÍ!!Ú¡ðØ_5ŸëuÃi~Üûr©.ƒºò¬Û•qX #þ6(B%P ·ÿ^t/\BEEƒ]m«Šã‡xLrbÜÐx°c÷zxòj‚!I¥ßïïC±ŠùU‡> 5g–KÐ4%+¿ß‡óÇ}¸ð>|‰`Ûù°z£[H|±ÀÖ;Õ@ìuÿ6Iv}øa‡¸ ºXkÚæÙ sËjµ4x¹;am6JêªÍ²Öí”vß™ß׺kÿ!UÜqluy,Êü|•á`ùƒõS€{Ö¤Òm°z¿w¥] ΰÜs†Ú;YRÑì¼7ÔçPݬÐêÔî6'aðb¬ Q—œ Ý>•;g>ª¼8¼Q>ØÚª<î:)»óÑkJ½&Ïe&3wûgàVPUå—êô©4]ÑYËÔ¿¨8Ò{xŠ4A@·³¿ôÜzJ—f˜ ¼ìT]óñJüðác¨> endobj 166 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 544.815 195.536 555.188] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixListNoteBook.htm) >> >> endobj 167 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 415.856 168.984 428.513] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/compound.htm) >> >> endobj 168 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 333.664 150.382 346.321] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/pixmap.htm) >> >> endobj 169 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 279.219 165.672 291.875] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixInputOnly.htm) >> >> endobj 170 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 185.213 153.383 195.586] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixForm.htm) >> >> endobj 171 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [109.858 160.805 133.764 171.178] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/Wm.html) >> >> endobj 162 0 obj << /D [164 0 R /XYZ 110.854 636.116 null] >> endobj 158 0 obj << /D [164 0 R /XYZ 110.854 453.653 null] >> endobj 159 0 obj << /D [164 0 R /XYZ 110.854 317.015 null] >> endobj 160 0 obj << /D [164 0 R /XYZ 110.854 248.123 null] >> endobj 161 0 obj << /D [164 0 R /XYZ 110.854 74.176 null] >> endobj 163 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 175 0 obj << /Length 1951 /Filter /FlateDecode >> stream xÚµXëã¶ÿ~…?ˆ œ>D=Rm¯MƒÍI¯’¢ R®Ä]'K‚$ßÞþ÷™áP²dË·M€`±àÎ{~$-6þÄFÎ2o•0!’Mq|%6ô÷n3R_¿z³õé?U ì,×z³ðÛ÷å#¹Ý Îy´¿ûq»“šG?ÜýãË/öDÿÛ2*J·?ï¿zõÅÄ“f•eLÇ è:GÆÝȹ“1˹·‘3í¿v›‘|ûå´ƒovÞPÏêM“ˆ™‚an:›ŒßŠ,rÈè¿7Ç£©ËþÒ`Ê™HåKöŸ” KMÚW·?ØK R0Î5E„VÐ?O€w·E Þt.£â†éI²øåHK‹Àv[YÛ5[¡£÷®´¤Ô…í{¢‡†Æ£ë [U¦¶Í)|²•=Úz³æÆýViˆü'[­£ðÉÕƒíjSѬÌàµÙåœICncc&Ápv»Sq M Ô(VMÛV®0ƒkjúZ4 Íÿ0°íNç<ú¶ébF“'ˆŠÁ‡¦;ÎvCl]{ªÀ  õþyÚÒ“‘|aÞчұSJF­íãj?>R¸JÚ`ai+|1ÓÐôéÐTö5Т×-…šöEgmØM,2*]ßVæy›èÈoQg@g·bíp05µ€O#Œ††Ötƒ+ÀñŽæO®.›­ÔÑŠe^”H™ž’£©Â·‚¤÷ÎÒ’N#QœºŠ‚&½W?ö¯/™ ª›`Ù©7aÙõa ŸöEõÙeáïr„5¹Ùe’‰ü#­{»)4ࣚ5…·:0áhkýàO¯†«B‹yæ·4ÝÒüVê+Hý.ÎX&Ò?Ì~wl›n öàËuqtM¾>±±ý»Ÿ¸æð/Vv´«ÃÜÌ F¿Lá™ï#x¾¦o} }F| ŸñÅPq*~!ñ|ƒTyØñ—¦õ½v'pB±4U oþu²v»TÔZ0›Ò=„5jcéæ'Î%X0¶2îðªú0y¸Ør†,˜,a@^A–Ì£;/@Fu³õàÕN‰ØwŽ}k ‡VÙ1Dtv8uuølh¨œGB 09ÞI KW @ãG™^¶ åêSè×½W(¬ª– ä&ì0[ 8€(`\eî«%`ê™õ=8*óÌ;*QTðI‚ßõKŸháÉ b©Z!]Õ QSJ–Ôô… hÚ6ÅDRLäüZZ@Ww¿[ 9`𨱈›ÚÒJmŽÞ> ''€Æï p% £‡Ô}§l Øk²f%FMXî }ÛÔådEº?K„,¬½‡P}ŽM)Þ`˜¹}8aœÀo=³,`)0¬.MyÃuLX§¡c:;¶»0 5® ’M·v .+YBß„¤Ž')gJ*,bzþþ‚éÑ¡ê÷ØX£² sÓS]ËpÄâÇC(_ä_ä@^‹çÀNÒþ¼Z8è+J¢xЍ0½×Â17yƒG÷T¢01a·=¶Ã3‘ý˜ûˆY2únʄĎ{;ms⿌ÍuŽ ¶Ví°!ãÔ¯«0>kìß ãvXAð„3•ªÀüç)¼Ò…Ýo§ØÉ]ýžÑ@ 󊔄bË —øî¹Ú3}Y Ò_¯]‘9¼f䋾(xßè,paf¹8gdcfýíÅ™Xø|ò9Ë6Ùæ×Ùþ­™M~Wf!±÷n8šö¥±óÿ=¿iàÈô=dž¡!hñ4úWY¢½ÿ0’ÿ@œ-îF^M*›Ã>´Çƒ &ó8óØ­IRLKùq·¼Fµ¯cu0µ¾eóܹÒQŸîdª˜àñòÞf‹¡éœLüÉÓ[K“á°æwBäUÚLY’ÎÒu+æ ¸ÿÇéè#aÖx"À+îÍ3i<õxL]ëÌKyöB©,æ â6¼iè•x;ÏÍ 4§9 kMÄx w%-L¨¢ ç(Ðk Zx0aÖzšú\Ì¿O¹š -pº Œè‚òó펭`ëþ0S ùÉ¿ªNÞØ²,rx7Køìæ–ÀÆUx"µ•Âl4˜˜üE,á#³˜ìÅE²7èhñ^Îå]åŠ}áŽ59ﻂg x±ÓúÿÖ’«X’ŒÉýëJ.S&&Pÿ+Šz?Fwv)Éøž§¬fá¾ §Þ†Túƒ;›£›=›~m¤Œc°r´âfÙÁsŠì¢ÇÎ7£tÝ¿1¸ ãuŸžÒ%Tù³×ýº@Zì×t:WG¥‘‡ŠçUÌM4“ð~ž[t~¶¤)CðØ ¿nÀŸi6>)`Á!Œ é H¸pªK¬$Ÿ®8ÐÆ9Ò˜£µÅñg”€Ó3±3°"TøÓä,“°$I—K,ù{*óü!$z¼Ó'IÔ[Ó¡ƒ¸úà¯Ä@åž Ø  “иmà ¡€i Ç`†@°aqà ¿‘Œm õ§Ï} ÀýcŒåŸöw?þòÍÝ›·{»öÿ|JjúU¤OX<%Á·«à㯙±õ‡Úï8IÒé$<ß~ýÆ~íN×8¿UÉ¿àÆþ÷îü¥_B_üqúWÖ·÷endstream endobj 174 0 obj << /Type /Page /Contents 175 0 R /Resources 173 0 R /MediaBox [0 0 612 737.008] /Parent 157 0 R /Annots [ 176 0 R ] >> endobj 176 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [130.863 573.154 199.695 585.841] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net/dist/current/man/html/TixCmd/tix.htm) >> >> endobj 172 0 obj << /D [174 0 R /XYZ 110.854 636.116 null] >> endobj 25 0 obj << /D [174 0 R /XYZ 110.854 611.21 null] >> endobj 173 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R /F60 177 0 R /F40 70 0 R /F56 109 0 R >> /ProcSet [ /PDF /Text ] >> endobj 181 0 obj << /Length 2049 /Filter /FlateDecode >> stream xÚ­mÏÛ¶ñ{~Åó­2«¤(QR¿ šé6 X 4À6`²L?"K®(7ñ¿ß½Ñ–üÈK€wÇ»ãñ^¤Ÿüé'­U\dé“56ÖÚ>ÕÇWú‰ÿ>=误Þl^}ÿÎä@—Yö´Ùûf÷Ï(Y­µR*Ú¼ÿ¸Z'™Š~{ÿÓÏo7  ±ÚDÅêß›_^½Ý€x>ÙEœ¥àgÂu \ƒŽ…Mþ±>M7öp¦Í£ñÐx„Ѝmü¯€=‰Þ\uöM÷|Owtã¡ß½†EžÚñ~s¬žüK©¤užñýž‘UÇëêtj›º›¾Šš·€¤õ¢ÔÖ¡@×µNã4ÍHç¶6·cŸÍD€úûw™žXZ¤±R…˜;6_Vk þv#+J 3×e¬¬†~X©“¸L—Dn›ñXd–6NL)ì·˜ÉR;!['EÃý‹¹–ÈÿNä?0¹Uò43“Þë±oZ·kª¶–¦,Z™8Õ‰ðü¸kŸë¶ò~AåµÎ˜igºüÃçïˤ_9|Ï {׺/•—¢Àè«‘±ÇêÂÀ6pªoáêØwÏ{¿J²hï× k]µ­œ¿úã,cTl²üO%¾yNŸ¥½YNï ÈÌyºûU¼)OÑ¿¡À)u H-4JI!€Ž!è?âH°Rª*É'6u–NUÒY9TÿåAûï°àêB!¹[óBæö‘Ì,”¤ïXÑ~x¬p’Ĺ²÷²OËúêØäz.»÷õ×ôµÉLœh3s891)ĉHEÓíQÖ ÝH‚ýE¦¼s7–…xÍŠ85æ>TªÝŽ%ƒÌ¥€Õyœ–ɬ^ó)Õ¶G»ÿÀÿœ¯ñ…«$z/ŠûAÌKrx€I6Ë>PÑ %{ª}y ¡³ùx`,Û(ÏA( §R‘ÙÛU½ÏȈ»2‰Ôt;_F×yL5¨(“2<Œ¢’øH`½¾¡û,ÄùÑäœäŒêCï‰pU]÷ÃŽs0,©«4V¤bçNdœ‘Npº÷QHj«ËèQaÔéãå”AXnG[ðå‚¶ÐDôõ:¬‹º±Öi¨ÝŽÑußbÐ#ΡýAØÂ9SÙ‡Í O Qc±]F47¥ß\MÿW3jcuÍ⯹P_ú3v)Hj™0þÀÿúFº(h¨ª{¾丶l§j<`DI+…W2ké$É!Oèâ)ªEŸY;ƒ×kTkàY`Þw™ÜD¿q˜Áž?×µó~nip°až€­ë;aCh4qÁòrɶ·-Á{‚'ð¹½,Äwutãš-CO&ŠS;€)ø={æPËDÒwè‹çó $Ë):h;B¦|t±Pj³"dîX(]…'`ó‰ÕÀ˜åÌŽ4Ó̲Y¸´/<qCâ— ­úS6è)AûÕùâa¥]-~os“FIÁ̳*ü ƒ¶¶3ê™ |}pGÙ8ºònãÿ‡ λ1¨¹à ¨#yªŽ’ïç5þÜÔô»•Vð»ñ÷’*úñÊpüuhúEGÚ,N PÍg4O®L•¼çTÙ«?IÉ=œæñ4\`Ü!¥°d7ÏíI Y¿`oRú,òÈÞ—X'YÈoá÷B“X«r.s--˜Ÿsóg~\xwÚ®[Û -‰Á[ò=4˜¹Tƒ%pX.Åð»už0RySÓ̇4v­D|M¹$åÏXd æ©Дuár%xé‹`î Ûq W tV#žJýè”s˜ML44Âê6&.½¸4¶êE>z@ZP^5Ï›pÀVŽ}žDDÇãy¶È•27-OpÆÐŒ^µnNÌ îãÁ´„°MÊ»¯!}ZH~>ä„oÉzþ¡C߸º:c˜hý¨Ð”áÓŸWXe.¼ ªSu¬ujÊâFþQÄ„Úð®«må1HShÌ$ÜI\P‡Ê3°u®—¼T–© ìENýÀõ»H¥uCt×Òü)<]/ˆÓuôFf*倕ëCí½ÐÖNüÈ 90¥t¹ð9’³­{å[¤1ÙƒÖ W”®îŠôû†ºŠ…‡9hr÷ápÙ&Jendstream endobj 180 0 obj << /Type /Page /Contents 181 0 R /Resources 179 0 R /MediaBox [0 0 612 737.008] /Parent 157 0 R >> endobj 178 0 obj << /D [180 0 R /XYZ 110.854 636.116 null] >> endobj 179 0 obj << /Font << /F37 68 0 R /F51 98 0 R /F46 78 0 R /F60 177 0 R /F40 70 0 R /F56 109 0 R >> /ProcSet [ /PDF /Text ] >> endobj 188 0 obj << /Length 1753 /Filter /FlateDecode >> stream xÚXÝoÛ8 ï_ÜËàâY’åĸ§µëvݰ¯"ÀÝaۃꨉ®‰•ÉöÚü÷GŠ’ã,éµ(0S$%ñãGŠeðÇFŒeéLæ£B)cŨڜ±ýÝ"õþì|~öò˜‚zZJ9šßúíóÅ×DŒ',˲d~õ÷xÂe–|:wy1ôõÕåÇùåkZ}¾çÀ{{ýêÇ«oa#›åÓ¤Ÿ¿;»œÃÅd“˜ÍR™  ±&*N¢æ„çi™yë³Tz©[Ž"yý¶ß‘&Þ¯êÊ‹›¦œvjÌf‰yÎÜü««6ÐÎèºÕ‹à˜C=»tj³1õòWàR‘æeþ”; ÇE*¸ì;ñùXH2*—Ie7º!òÞ´+¤òD£1›íZm£ñHïå­ÛîÅß2™}úô>Œ· Öc7ŒY»ï~G~‘´+MGD‹Àoá<Í!¬hëUÝ:S7¦j``ErkOîiý•¸€ã™L–c™¨É½Y,uÛ¤ãI^Ì’9Þ*½×¸Ø‹k‘˜†øµm‰¡h½ÔµvjM‹mç¶¶Ñ'¬oÑ‘,ivM«7@‹2Qõ‚˜¦¥ïÂúHƒÈ_ãõ»íÖº¸€TüV«¶s”— \îüQ 05±z»píòhÊÐ@é $»ð<>ƒK+Ì3Ÿ&*p¾šºrDΫõwÚÀù¼kW¶N).ZŸGŸÍŸsí°&1¡‚#÷Ó,t8YÑY=’åBßâ)ß²ŒWˆ'Ò4õäD€[ín;ªÂC N0@¢r+‚^q$h,}Û•j‰ÚÙ.œ j"Ô˜gàücÍ"ª‡û LÐ8üÁ´;ä±àÉé Ø~ʃ•V‹†ªÝÞÒ——ÃlÊa6±Mx`AW·0kkÀ6^mGÊòàB{^&+åÀ8áo¡*¦º±]KäAÑ¢?ŠNƾHðDÕæ$ÜØ`ãc4prÂB­|Òõת*xIé@¶O¨4¦‰Äz4·˜Å ¡ªÖxPBWÐXüÏ%%¥Ž;6]ÓunXm ZÙ Ì¡›2t)!eâÌrÕâ‚-iÆ0–•^P½¢0Ü;TômMŒ…jUš¢qÂ…Ÿ?ÿŒ®;Ò¢iœ5‘µŽ`+‹}íÃ}1Ƕ†6_–!¨ål0@woX1•híz‰—ú‘…67Ôv!>¹()3˜úþêK÷;Û-W´KEi*´›mCBh¬ÇOá~MñE¾÷y=@àý'¶GCÑÿ¯ éCCAÁ¬×Ð1Í(°‘LCÁB+buM° OçÀºõ8æß8áú¾APkø-¸lUÁVаBX¡½0„Þì »5¤¼n Äv7ˆ’Hnð éõÅ~Œ;´’† Û4ÛµÚÅ&¾‡Í¶­õ#³/ü¸‰@|›o d2¾Á€æ&>çȾ×ák7"ÒƒŸ5Äivu«<C‰ÇDéÁ(køS9sã‡Xzx}Ó<:áö&qFx9;ç ìþA>ýdq°Ç‰AÿÔ²!`Ðï/b<š H;Ðß7ànì¢Ctw`ÆYÊJñ¬×B{*Ÿj×Oþ·Ëóæ·¸endstream endobj 187 0 obj << /Type /Page /Contents 188 0 R /Resources 186 0 R /MediaBox [0 0 612 737.008] /Parent 157 0 R >> endobj 183 0 obj << /Type /XObject /Subtype /Image /Width 196 /Height 80 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 189 0 R] /Length 438 /Filter /FlateDecode >> stream xÚíÙ]n„ à ‰èC}6Ĭœ ë؇öõþG(ƒ °[ °µ £É|ò#’užŸ¢B5×™;!x‘𪙚)L[ˆ©H8Õ¬‚¨8;P¦—}Õ„ 0êAx«)èßËi„‡©S] úà‰‚ÓmÇ<€á‰’=HaT•О2Ô9°]ôÒ¨*Iû†¯'öCŽ¥ z ¡sÏX½¾f(ðÀ8ŒÓ%}¤×z­ î^7 Î%°Ã` YN°ïµ€ÓÖ0ðûOÜ>°ÿbm½º/=QæÝé_ážiªbÝ‘MïÕ¼§›Ð„&4!KxÙâÕÉsÛ“Ý¢‘™CÂ'Y¨§…‡™ï›ïÃ+´Ýãâ q™‚ü¹ á¡)HRè2 @ !ÈA@!¨&`#(¡;2G@@•»+¤Sá ˜ä# öY\ˆlƒô3ÇÏÖøqXÛ›!DÏ%©›.$<º ®€[ÊŠÏ´Ù·~+$­|+xûÖ笭^Xlx…ú-Ùâ2ûBOZH!2sÛ/5¡ M8«Pÿ Gu¡}-;ƒøVè{œŠŠ#šø«Åiuendstream endobj 189 0 obj << /Length 37 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~}ùòåÚÚZ†Q0 FRæ Kendstream endobj 185 0 obj << /D [187 0 R /XYZ 110.854 636.116 null] >> endobj 182 0 obj << /D [187 0 R /XYZ 110.854 611.21 null] >> endobj 29 0 obj << /D [187 0 R /XYZ 110.854 611.21 null] >> endobj 33 0 obj << /D [187 0 R /XYZ 110.854 244.499 null] >> endobj 184 0 obj << /D [187 0 R /XYZ 110.854 85.446 null] >> endobj 186 0 obj << /Font << /F37 68 0 R /F46 78 0 R >> /XObject << /Im2 183 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 193 0 obj << /Length 1989 /Filter /FlateDecode >> stream xÚ­X_ã6ßO‘G¨U믭{Ûmg‹m±½Å"¸+ÐÞƒ'ñLŒ&q`;;o¤H9¶ã™éC‘Q2EQ$õ#¹Êà'WRf¢°få´RºÕöøN®è÷ç*R¿¼û°y÷ýG»ðÖ®6aûf÷{¢×©Ì²,Ù|úm*›%ÿþðóݦ¿~ºûus÷#;|]XûéëûÏŸ?ýúl”Úä‰ÌÖÿÛüüîn'“Rº(„5èÔ‰ŒiäLAýÂ)䪷¤ªB²ºÿ]Ë"©wUOº}:u}yÚVÝ\—l•*a”{KäËDVøA‡EsÝ•Û=œèòä)žtͧó¬£qÛÏMWíhÖ<ÐØïÛ*2žúj-mòØ–Z9—mßýkjc’oke“²­ËûCÕ}ßs™«~ßìX~yÚámQui„›¡†áÔSubÚ˜Û%µ7`x#ExÃ:Äœ½îŸÿ¬½žŸg ‘™â혟ôŠ´Ì/ }õB˜u4–]×lë²G?ÐŽ÷f>)i¡‹ûÑC8N /Ö©ñ_ô­ß³øà¸¿Òà€Tpâ†òx>VÃr ø‹Æ±žñ«Ž’M²Yk›Ô½oÛyúpéû†·npˆ­á"Ì,Ÿ‰¸t¼RÒ0¾ÇB ô DH¡’®oÚŠÈ »º­¶}džuf}Ú×!ü }e-£ž4 Áã¹è®OQÚ1sðn ´]X ЇŽW@ñå‚“û„àzÁ¸m.1Þ÷ƒ209‚ÉÁMÏÌ]«ŽÉ=K€[ÞXò·s[uôjÇŒ÷kÜè 1¨æXòq@‚ã¦Jj > ~‡O÷çËý¡ÞÒǦ嵶ƴ»¯ÀZÖ™äËÀ9ÜÑfòüHr¹Ý’î·Æ»¬9‡åù ²Kr2.œÛ€èx¬Zšÿ‘ÙìÒ]Ê÷~«ƒW¾ÿhåèM*éDæùan›ÓCýxi+bœ<^P_Ì÷¾%µðEEỾ•¢•È•b„C~‚ZK¡a3ÝÙÒ!».!Q{Ð2`º%òTÉ–.ÝÔÁ“&’áа+;^@¥x@ðV‘löGÛÀ²e«_–½Ù¹¤­0ú¼aÚ5GN!N!S°ðY¦ÀÆü €­9£;ž<ÐH‘;ITn€ÐX[Ÿ|™FÝo.$!©’€ Y„  Z"÷`æÀ¦1îOMOË÷Ì9(­>ÏMb8&ÓÍ0N­MW¬Ù^ù‚Ì­|~u®^è` ‚¹aŒÐd}zhÚc<eÜ7—žÙ÷Ì4˜2l`_ðæ¾d4"E,å1僇ùss:†§wd]dá4<šûòùÛ=žÁ®¹¢lŸÃs{É ´ ( å)‹+]ydê4P7L£¸-à9}D_#tâ7ÊÄ!ßBäç¯Ûf†@‘`ˆ%ý«ÇN““"wœÄå¼€MÊ +™ƒ_¼¹š4ˆÇQ_ÏŒ 4u –öæõ“%œA8À‘ O"ç›yM0; ÂÍ/'(š^‹Ûƒs°ŠŽwFóË¡JÐéacÓb½Šº5£ê"¬74Žö ¬£ê§¡¨Ë=UŒü¬ÂØŸ¡îÐE£NÊÐÆÂßâ‚|n–WcŽñ=³‚Ìra½»Ú?W˜ WI*:w–ßifèöz-mù°Æ ! ­È†à£jg!5Bíììà J‹Ö MÍØ:±Šƒj=ˆêˆ¾VN^+'ø+'KD¯båä5WN°t­œÆŒ×Ê WõšÙ£/PÆ¢/¦”T~Á“h ™!•;â5öE`ëŽÔ2*èšá.àö„) ÅOV¯uUƒÝ]*Z£(†5€OÈ Áí¸ÜÄ-¡ø4¡¤éxω°üдA&¶·ÁòJíe”Cf{¹R/‚rxÅ*õ$ˆ—aáïCª— ~Aj–º Áú8e¸£ÖøŽeog˜Ô8?$/‹%žú¶ìÈÏÅm5>¿þ78‡ðßŽÖ ‡ãÎcÔ&Â5QT 9ˆ¥FŒš<ü‹„ÓV|õaû›igþe‰Á·ðߤòB9ºÌ‰Âû·püÍÿ›ÿkáøcendstream endobj 192 0 obj << /Type /Page /Contents 193 0 R /Resources 191 0 R /MediaBox [0 0 612 737.008] /Parent 157 0 R >> endobj 190 0 obj << /D [192 0 R /XYZ 110.854 636.116 null] >> endobj 191 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 198 0 obj << /Length 1895 /Filter /FlateDecode >> stream xÚ•XÝÛ6 ï_ìeÐhÖ‡e{{j»¶¸mí†6El{PÝŘc–swŰÿ}¤(9Nâ»ëz@MÑERüø9|–Ÿqž²"S3-5ã\ÏÖ»g|FÏ"õó³—Ëgß½‘9ˆ³2ËfËk¿}¹ù#‘óOÓ4Y^ý>_ˆ,M~}ùÓëWË@¸zý~ùúGZýöa®€÷öËwï®Þ¿…\ª<á|þ×ò§g¯—p2%‹‚eJý€9Qp!KÅd©Ð¬Ðâ)ù | j½GJOxôªÝíÛÆ6=Yýy΋¤ÚÜØÞÛÉS<]”ù1\áC5òÇõþX×Ó9ˆ¨3ÎŬ½íBO¸ÄÓ\Æqµ^‘ú–ÎÛxddG_ñù¨ï" rÀ H¸/MoîþÏ5ËU~öaöý¤ßa ‡¡/>¯ÿ!ÊÒrÔ³˜^£#Üé{ÿ‰ˆÜ¼ùB3øÖã%¤méU,”!¢[”º5õá8òþ§ƒ±Í¡úwâ¾0qr€ôu—ÙŸgñ5L¢Öߨá•;“ÙŒ0¢]ôÏ¡ŽÖ¬ðËWôÏqwÿ~ªº9Tc^>U=OþùòBk¨endstream endobj 197 0 obj << /Type /Page /Contents 198 0 R /Resources 196 0 R /MediaBox [0 0 612 737.008] /Parent 199 0 R >> endobj 195 0 obj << /D [197 0 R /XYZ 110.854 636.116 null] >> endobj 37 0 obj << /D [197 0 R /XYZ 110.854 410.315 null] >> endobj 194 0 obj << /D [197 0 R /XYZ 110.854 222.37 null] >> endobj 196 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 203 0 obj << /Length 1521 /Filter /FlateDecode >> stream xÚµXKoÛF¾ûWèVª¨Ø}òá[œ8A$ R)Ðô°&WŠHʲä¿wfg)‰; 8ÎÎkg¾™Oüñ ç,L´šD2 9&Ùê‚Oèïˤ§Þ^\Í/~)cS­'ó…;>ÏÿätÆcÁüõ_Ó™Ð,øãêÍõó¹§?¾¾~?¿~Ao>Nð^}|öîÝë÷¯à —*¸˜þ3sq=Ëä”L’P+ ôwzÁ™LU(Óˆ(L"q^þ¼ ñ{S.J ŸY˜²ô0Ê®¸ÿTä·¶{^š¶Î"ˆxÏš¦Þ^mº®®ˆ÷ C™Èe"&3.!ŒÔ)˜ex°2+ a Ì×ð4cÃífm›l`ïCS¬Š®¸³cò+Û-ëü? oI2EuW±;Ú6;4;<¥Ý¡ïcæ@ÓícAçEc³®è³3k;ÓÙS+^|ÔLVW‹â¶]Ûìcߎ­½¾¾Ú5íUƒNà€üsOVu³2å÷Ÿ‹Á”…iŸâ¾OÓÎó'ÚÑ>Ûva6e÷˜¡_©äBSeËLjâÙ˜ã;ѵɡ»#Ô«óéì—#á18ž‚¸%اióË”³ ,§3™ˆ ¬ë/HñÀtÄÙ.‰â5Ù’xõš.¹+kª–ئ%V·´ÄÈêÕÊT9q /•Û6kŠÛ³+bã!OïèaÕeYO…¶EM ™ Zº±6œÎT ííLÿ3c¢i;z1Í”'Áífe+ÏYÀ ¸Ü ììr#Øäb|FRÉTÈTâÅ]\ ºë]è£vÑH8¦£A4„JRpç#è,[gi¨Â"dfšøÍ¥ eíý>‚¸¿Y¨„ôâ “Cö´ÁóÝ=YtÏ›5wkÓºëBOk_u`:aÃkÊë‡ÒÒK½ g·,<ÇÅÖ%ÔÞË)×f?X|¹7«uiëy•YÛËãÙ5£y2“&“àÿçD:™>¡AÎH¢¡­E|̨‚Œâƒí¯YaôU™»_èmÍúû=kNŰKôÕ‹¹FµTRª/£Så ™è‹xþ´ÚQ½+P7гÏʶ†[’‘Ú·¯”Ð1Ô… •Š(}y‰DúêGÊÕh¡âBŽiý“ëÆb;ßÓ›+"DÄ*dPaA“¸=“}­! ùZS,=¨5ø0¨µŽ÷nûŽï$ “¸ï¡—u=’+¡Ã8éSå‘àq >HäÊ4iÙ…(uLW¬#ÅÀ8wÅœiÀþô;Va”ô^m 7@ý%{Û¦è:[ÓŒü!“Ñ0»—ã9ãR„àî“ÆB¡ÅhC^Žç‹Ô­Ù}Õú)Ô+ï# s7?xº]$ýö˜~᳑ú4s%ÿ[{!4“öÂ[Á…¬ÀfÀVAÆÍÃÞ¥Së) ù¸û`>5 ÎÄàÆÚmÑá¬WL <¹%Úů }ƒcY7uþ@&é@=n Žiè¾8Ò”eüäó‡$eÙYòÂ4SWåÃXcÖq.)‹‚9ÚIÚS ȃùÛC)âå¦37¦µÌÞ×]‘Ù#ðÌ‹î ÛØªÿx¤ªÁ¬g#n,¢_7˜rêÛÔgý„Ò/ð•qÊÄvãy Hêø™ÀNTQtZ€3Óþû0±cµ)T«¾4Ë—w wßA‘ˆØøØU㊨¥™Â.q‡‹(¥®cüñ“˜Ô»"ߘ’x[\BëÆxì2JÙ³9n± nPݦۙñr‡«–÷ó0 Ÿ,¦Ïµ)téDyb“¢n˜ßM× ³$ G=S_\mCÜ Ž¨Ò˜zîvY”ží×H½+ÐÑ÷.n[€]jˆ]çB ÓŸþÓЄ؇&„ò¡!×Tôܬ×~¤¸éãÒ·¨²àÓÒV$ôPoHf·) L¯ƒ2UùHa)ƒESb[¿’6 Úe½)s¢÷?ŽWNH¢ûõ@«d…ÿ¡ò¬¡ŽK·ÃÁŠô£ÿr<ñß'ÿj)¤endstream endobj 202 0 obj << /Type /Page /Contents 203 0 R /Resources 201 0 R /MediaBox [0 0 612 737.008] /Parent 199 0 R >> endobj 200 0 obj << /D [202 0 R /XYZ 110.854 636.116 null] >> endobj 201 0 obj << /Font << /F37 68 0 R /F51 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 208 0 obj << /Length 1767 /Filter /FlateDecode >> stream xÚXmoÛ6þž_a &3KŠ/’ú-m“"íÚ™X÷A‘™X›,y'úßwä‘–eËI±¨HÉ{îh6¡ðÇ&ŒQ’J1Q\ÆÔ¤X± þý= £goæg¯.yÛI&åd~ëŽÏD|:c”Òh~õûtKýúæÃÅÛ¹__]|ž_¼ÃÙ—ë©€µ÷×çŸ>]}~IÄøôÏù‡³‹9pF¡xš)8ŒAJ¤[nï&axý~·uÆJ²TÀ@‘TÅöÄiaçKmy½º”l3"ü†Y·Y붨ò®ÃƒkRF&ýÖn[šb šquk]”ß(u‡ !¥¿Ï͛ۃ µžÆ2Úâd[.î´!Ó§2ºªý‘Mke™ÌXL‰J@U&ˆÒI¡§LFùj]éŸÑÊ[ße>itoé~¥Ó¥ÿšfÄ,VDªÔkiʇ/m¹*My¯Ç,¢MÂ^rèÇKˆ”øFÉÒç½Iáˆ$t njÚrøìÇ Q÷µÉê;Tç“6ËfÑJ—Æ$cñ©ØÞgžEùÓ1t~kt CS«#Se¡Áç­^à ƒÞÙp !ÖŠû[a-¯=PÒsZyÝúmÓ†ûËé»ÈuÚØ0QèÆÆÆ¹l”Ög¥±Çâ,ºÑ^…®”2r(vu{@<õצ38Êñã¢?¯pb×`¨2¼ýë¶)ôbÓb’Àñz;­}Àv#‚;®ÜZ£Õ¹±µ“›GüšÑ|ÎÀÝ<¥e:¸œJÞ¢Y­@ÐZ nA"0îàžfѲqžsþCG·Ì5ÌvÊhÔà¡Vÿ³)[½Òµ5/÷Žò,Išíkè]êLÎ£Ë²íŒ [íÊ-Tç+gµ8Vh~Ýhü®[çÕ‡)‘ 9K{Ä/† ¼Žýu¸ìœ„ûWŠ1D¾@¬ùMM½°*{s>›q–y¡8K£¼(ô:Œý·Ò9’!(lì9Z;…ÿï6ÖL~ÅJgNf»ÙjÕî.>:`–¹éOœ /o:ÝxH,òª“  •D&ë·#”–ð}ä›Ì2IXš Ø_Z¹\ž&é!X§Â»H·MUaˆ!œÁ’Ëé$‰ ع=gµÏMÙÔHsîKÒþž²¶aé#Ôà&Œ°À§íO`LzŒÞz¯þ ¥"=¡––çmÛlßlŒqŽ MD*ëë£â ¡ñà6'¢â'Ðù4bã t‡×VXèh¶×f Š…Hüº¬ï‰,éßíw?pFEYƒlúÌ]³YßCº=/(~_nñ»ÈM"”¡YŠ ‚ö—›öBns'í‘oTÒÙ"`ÆváÛ³-òNû3Ç× ‹‰Z?£ËN²Zo®Äâ19ô}Dºîÿ3ªŒ*ôÏø÷̱“”ÃàôQþâYâ¶}nLYØ4ʸ‡–8  K3aä’nŸ´K0»¬bÊAh”Ýí7õ |’ÁÓ9 ò‹È’)§,z€®(²!î€ÃÜÆ•­-)Ϋ®±¸“d/D±qÂ}A†Õ¦®ýÒu-Í›h¥_Aˆíüâpp¯ °ÿi4…¼"À©•ÃéÍFâtØÉ,=t÷’ä*k=ìmkõ‹qÅÓR»ÑŽW€ô?懒ƒp‰Ê†• ŽíSa øÜ .ÔФÇÒ¨Œ*ž6cá2xxÀåÛeé%Böý%,—ugòºðø~öì"V»e³©ü8/üÁͺ©CuhKø‘N#e"& R%ô({¬†€ʃA.b—Aú°M§ýŠí^å ¸9šk`û¢Ç»nsh@ÏC^L•kpeª°Õƒ’èº<¥lð8UÁ)ãƒæ'X‡»&ëx‰ÍŒ ‹m CÞ–ùM5f&(¡ip.Ù¬ÇkÀ‘Ã!ý³=®ÿbÁÑ–ig×S$jÑúNI‚mf>.Áê*fo6H4›»°‹œmc•Š{mFd‡<,Û=‘¾Ñ&«fQÞ>z>×ò5ì5XÐhÀ t•¢Ù‰Pc è!Ó'“‘„ÂÓŽ!ôDBs¶ÿþÕUår…zä Lb4À;>Á!¢=X‚`ËqÍqq‹}‚1l@íÆçyUæž¶hû·ÝUÍ{_ÙîfÔ ÝWi»l:‡ì,”“„úF’Aœ@hðUšX5F}šFƒO_Žâ¾ÇÞY޾NSyÆÛ²ªq×`Ÿ ¬µ—Å¿£pÕW¡ðþÉ>=½¬ýCÈ› S_áý&DzìN‡òh#;Ç¿pò§ü¹_~à7¨ÿãºâùendstream endobj 207 0 obj << /Type /Page /Contents 208 0 R /Resources 206 0 R /MediaBox [0 0 612 737.008] /Parent 199 0 R >> endobj 205 0 obj << /D [207 0 R /XYZ 110.854 636.116 null] >> endobj 41 0 obj << /D [207 0 R /XYZ 110.854 564.736 null] >> endobj 206 0 obj << /Font << /F37 68 0 R /F51 98 0 R /F46 78 0 R >> /ProcSet [ /PDF /Text ] >> endobj 214 0 obj << /Length 1828 /Filter /FlateDecode >> stream xÚµXYo7~÷¯Ð>¬€Šá¹GÞâÄ œ"iàH¦+‰²‘v…ÝU§ÈïCî!Ó¶ 0`r‡äpÎo†b lÂ%©’“XÄ„±x²Ü]° þ}™øÙï—ó‹g¯EÛI¦Ôd¾¶Çç«¿"11Ji4¿þs:ãŠF\¾½z9wó›ë«÷ó«Wøõáf*öææÅ»w×ïßÀA&d19ý{þöâj7£P"M‰’æˆã7ÎüΗ$£V|J”]­o'~zó¦;A'3«ƒÝjµ’qH+"sš½ÒËm^å­Óâ°ØKœ¿Óí¦Z5§òÃ%œH?%¾ÙG M³N˜ ‰_l·p]œDíFãd§Û)‹6 `d®ZUk\Ëq™·’×îØâÇ•^OòöE¾.¦\E_Í¿¼Õxlç”C®åÊñÍ˲rÇng¾\ê¦Ñ+ckaI$˜ÕÈn®B èBÈ(ßïÁ|y[T%®ìëê¶Îw;]O•ŠÈt¦b]¯qñ®:àäh.[dÒVHÝå_ ]ãWŽ‹(·cnõ|(Ù3¢år{X•8‹Š¶ÁI™ï<©4#·ªÀég¯8‹ÑŒ(–:—ÍœvßÈ©ŠC¾)·­ÑK4„áo#z.ò.ÚÊÆ µXH@T^ûS‡:$M ñ+¸»f^|{QϬÊ3!QT4¯«ãå¡m«2 oœDÄŽ‘ž2}Ëwû­›ò„FG›|Ê)¬; ЬmØ(P*o‘¯ûÒs¦—Þ–k0Ã& ™P$½% °‰ gÒ­åW]·.ÒìJÜ.å÷ùÌDÂOÉ”çW}Ñ!~ŠHå ™G¹‹Cœ÷y˜W½Æ»C²‰P;Y8]Š!ÕmC[šåaVÙ 1«œÓPCŸ÷ù& ƒbÑ*`Yã´—ÓÐ×8>üRBP±a¸=SŒ "™7’sà~,¼VoO‰ 6ãDP~ô+"¤A¿J<†~é€ÿc ÞÉëJr]m‘o‹ïÞÊâ?%,áçà?IÄÿ«|¹1ÀG¥6v8šþ1s;ÃÌŽÅêÖTÝâš³©9³;4-ΚDÉnh7µÖŽÜ©i¾Š5ñ&«& €æ§6¶H¡ØQÃp©‘jã¨9~ΧÀ®ø†4#´Ø, Ò–µ7¯ ºdÒKi6ôÑhOÚ8²s.ßnmvÍT”¤˜DFõl|4²7«¤“ÛdÏ¢ùÆí¤Ab:„¶ŒÄ\8w™@ùdU»ÑË@ôg‚pÅÅ-šxf/+«>,Ç;P•’L&#x 4"öXþQ·—E¹‚¾¦ pM9¡t‹ÙtR*ó^ˆ}¶f½€fË%Ð<ò†Ô«tDêL ëj»­ld».+ó•±AübÒl2tc³©\2˜L}€˜€¢ê] SÉvº„ˆ !K’@­>»©LUúTS)»¦Ò…Âʧ)K£.bÈò?7–ö‡z_5î¡>{ê!zåÙ‘¡|¼ù¶ÌÆFãâ©Â«:ÐÑ}œÙ â~]ä‹­n‚âéÓŒ$i< ŽZ &6Xþµ‰àªÆµ“††'}÷u”¦ôáâKlqî ê‘]¦µ}=ôM˜[ÁRU>Ê ŒCÏÃX×=š&Upéºkmu°=2І¦ÃEc9³¢±žÀÌÕ[Ìi_\ëpìnKŒ±ú]×Õ½ô™Á~g$éÃûp#Ú…°±0 ͆! }dL ~mG]lj)펎?ÜÄêÄáÅ›š¦HÀ2³Üû¯y{~¡8þzÄq•·¹/&ÔÅPîkèÑš’ï«-à””ÂØûþxt½m‡Ñˆ™ÄZ cß^¢=¤¢EÞ¦0ß!9÷gF,ö 4ê2Õzkoi6ÅþyHÅr4;ßâŠ0êQшgîÈC®ä$î\óßlèÎI’øÁ¢|ÛTnVâØ `¾ÂzÓš ì'ô¶¿D1û«‰á^j[maÖ:)º_´î£4c <²³§púÉOÿáSHendstream endobj 213 0 obj << /Type /Page /Contents 214 0 R /Resources 212 0 R /MediaBox [0 0 612 737.008] /Parent 199 0 R >> endobj 211 0 obj << /D [213 0 R /XYZ 110.854 636.116 null] >> endobj 204 0 obj << /D [213 0 R /XYZ 110.854 611.21 null] >> endobj 45 0 obj << /D [213 0 R /XYZ 110.854 484.437 null] >> endobj 209 0 obj << /D [213 0 R /XYZ 110.854 368.721 null] >> endobj 210 0 obj << /D [213 0 R /XYZ 110.854 163.914 null] >> endobj 212 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 219 0 obj << /Length 1519 /Filter /FlateDecode >> stream xÚµXKÛ6¾çWh21¤Dê±§&é&ØIƒ…Hr %îZˆ-¹µÞm‘ÿÞ!‡”-[Þí…’CÍ7ï‘ÙŒÂÍ£$|–Ä a,™›gl†¿o3OýòìõâÙË·q ì$b¶¸±×åç ž‡ŒR,®~›‡‘ Á¯¯¾|³pôõÕå‡ÅåO¸úx=ç°÷îúÕû÷WÞÁEó4`bþuñó³ËHFPq–Ác ÏÀñŒ¡ç ~–D†ÿ<Ô®o ‰Ò@¯¤ö”ÛªêN˺p«»y$ÙVr¹Vn•ê ¥Q­J\. ê—o;QJμEuÿ±­6•®î2`ô4gŽWzhrÝ5HmÛf«ÚõƒÇW…æ%³0ÊrÂc1 'œ {]Wr]ý¡J2g­bê©bUW¿÷nÙÜà³ëuUßšEHÜÛ(½jJ¤t5˪qv=à*Ö²ëÜq·+^I¬] Zê`&f±’ ‡lâÁ 1O‰@ì5–!òÑÝÅJMY<"qâl¨«û7FÀ{ÔäÔâŒrÂòرÍf#k‹W»j½vJöºÙH]mðÐÃ1JäÛ@`DY÷0BX4ÂîíÙ¡¦tƒÊHïÜÞn”µv¬ >­åœ¹jwà ÞXu§¯¼iZ$úŽ˜4x;¬~W™Å½Ül×êâ8Ceò*‹I±v6Ïç&¾€)iÜFINóÔ„/æaõœ÷ªm›Ýë^릾¸ª+ý©*o•¾VŽãÏÝwGXCGP°2cæ˜L‚~{'[dùâóùŸ¥ÔÒÇc”šgS3º2Fàc„ñ«‰Òûw¡‚M_k nS—­0ÝÍï¡I-gŒŠ|h ü”,KpðZ©ZÜÃ4ÎL¥š³,¸í7ªÖ²ߟ¦ ËÿûùB <ûÅ<äq¾ZËšÄá` µ*!"á£Z…uöźØÇŒa?L â$æ>ß_`ûÈßB2*ùKú«ÿ–m/&ËMFòÔ8 ‘#´9$p¼ä8ÃL4ÁÛx›¡DØýövæÉëw#^¶I‡l#LôbÂIäû±×úM­í ýÉĈE‹{·ÁŠÀééS­×ðQB³üñž{¶jÓŽ#¡‘nK ˆï4T›7m›>¼>ºÒoÉýrc*W&‚1׸u:.­Õ6g€N$ÎJBmu»Òî51D"F p@áTgè~ÙéJ÷ºòng`L­ïÑ?>÷M,,«Væ’édVø©Cû¬›  Jo+£Ö™. 0jÒO)lÈ­™na¾¶ñ 'ƒ§.ÕVÕ%j¼M=º,‚¢o[eƒN¼xÖl=Í]Ùt軃R¸Oí3c t„=Vÿ¯9è¸8>5 ¹㟌Bù“£ÐD…>¤N†¡ÝV€ý<ô>öÎÁýìÊ…“J—Ã=z8ë…>` Ëcáûõì¶•Å7'ñß¡ÕýÖ&¥a|0nˆðÆ&‚!—^¡xa>Sø“S ÿì1£ c;Ó@¡Õ‹ý÷XÄœJ‰LãÑQ;å¾ìæ,XÁ¸Âdv¡ð,“Ë>¡-£Ò7,#4a§9çtô=¡EIgǤ¦ú"´™la´tQr–ƒsõÊ5¬¿4÷džß ízh{ScZDÁ÷©xj"zò_‹¿Œ6| endstream endobj 218 0 obj << /Type /Page /Contents 219 0 R /Resources 217 0 R /MediaBox [0 0 612 737.008] /Parent 199 0 R >> endobj 216 0 obj << /D [218 0 R /XYZ 110.854 636.116 null] >> endobj 215 0 obj << /D [218 0 R /XYZ 110.854 387.547 null] >> endobj 217 0 obj << /Font << /F37 68 0 R /F51 98 0 R /F46 78 0 R >> /ProcSet [ /PDF /Text ] >> endobj 224 0 obj << /Length 1635 /Filter /FlateDecode >> stream xÚXÝoÛ6Ï_at{™å‡HIÅ0 IÓ"Ú ™·X÷ ÛL,Ô– }ÔɆþï;ÞQŠdËI1øÔñHþîûh1áð!8‹u81Ê0!Ìd¹=ú}ž´³ŸÏ.æg/ߨØY¢õd~‹Ûç«¿5 Îy0¿þs:“š¿\¼»ºœûùÍõÕ‡ùÕkúúõfííÍùû÷×ÞÂF¡Â(fú÷üÝÙÕn&P*Ž™ÌOÀig-ç àÇF:þÓPÏ+À› uƒ–Eîð|™ ؼÎà—‹[ëµ%ÆùTé »'êu^—Y^eËê $:Ø{®mSÕIJ²ËMZzrJ´]³ØdKšWÍbŸ­îlíä~ùF‹V¥°‡ðˆ+à#¦@³–k&B†y¤åª.à}duE“]Z¯ótk=9§‘DÔN  –YºØØT"Ö,‰µGµJëô×|ÿÊკÁÆ£Èï`‡æ CÈ´ˆÅ8ÓH.ï&íôæmŸNuÜ74c~ÈBÖùb+Öo¶¾Èò¨Ã«á½­×Åjd¡4Ϲ›ããŒÇÉÓ~ví´ 0Цt3ú®my;–K)BøS¶ä÷/A­Me=ø,mZ[¿<L¤EKîëÖ·£Œn±Ý9ù"Þyr*¸Åù*ÈØ^„×Ï`£.i¥’8@gTIÒfäó²,ÊָȄ‡Ü§ÛÝÆya¨ fh·Ó„Ã9N "ômÚ~€>ŽC¡ÚÙevë˜G]ÅmœE­ŠG’§½”^lùÕu¾,/‹&¯G,(¢¶µ`]4›ݵ°tù2Ýl¬§Ùt¹&ÕÊ8ba<Œ€:ÃÜïêÅdzè@Å”4{ Ìþú'Îe‰Õ >¶êÑ1<€sè0¤ ›Pуk6MÜ×I .ÓÜOPìî¦cçÍvÀ´Oy®bÕAñòða¶NÛr‡r¬üÞÃj×Ç}P flý„3Rž®§«À»ᜳ„'ý±+ èŒËÇC‡”,·þïþ«Ÿ Š$ôi±€ ŸÏjv_Ò’x¾ã4~¿§Ñ•êV³ OâÖ /×i–ûr8ØÒÐßIwQÄ ÿc°@èØàÒâ'š|‚ïê'#ÁÃyAÞ¬%S&lý:"ÒI…œû„:õÿÔf7<28• k·ðKÿu¤IÈ’okˆ 3Ú "è~\Øô"íÛ¡×Øv=!¦97ù½êhLÙöÕh{”õ í‘H˜áêéö»3%c0YF5Æõžµ'ö;ÑŠH.öݘÒà{gœƒ`•çZ4æ…_Ë-Ö7S}ƒqáïð ú ²–†¬…åȾAóÛ]¶€Jò0’˜0…).é@³<«³t“ýƒ7J L|‘…> ö¸ã ý–~—ëØ‰™.Â*#.Ÿj Ã?L°'Þ‚ ^¯8—îãWïlnËt3y×”»ë_$Fñ#Å>bÜÚP>XAè0ÖãŒ+î<ìÚá¬þˆ6»±Ë‘2—@¦ûw{¾j[HŸq8èßPGï_è¦À¾~FÊub˜4ƺ, £-›¥—`¬JCr×ÝÛ¨5Ÿ/Ä “‰âã4Æ–¢Ê•+DdF¢TÖgha¤£œÉ3Bê)žV¸ägâ¶!éõKíiíïVÃ^#A¯âèØ‰ñ™wd¢YÔùÅh²<|EBòW²mÎ1>+ºihUêBKëâTz¾© |ž›'ñš¯o¯E3®Ì@à¢H 9=9z÷JራpÉL¢ÅÉ“aäRPGؽU¬>⩇õÂ2JâçÒø³ÿ¾ü>ñ­endstream endobj 223 0 obj << /Type /Page /Contents 224 0 R /Resources 222 0 R /MediaBox [0 0 612 737.008] /Parent 199 0 R >> endobj 221 0 obj << /D [223 0 R /XYZ 110.854 636.116 null] >> endobj 220 0 obj << /D [223 0 R /XYZ 110.854 564.736 null] >> endobj 49 0 obj << /D [223 0 R /XYZ 110.854 207.841 null] >> endobj 222 0 obj << /Font << /F37 68 0 R /F51 98 0 R /F46 78 0 R >> /ProcSet [ /PDF /Text ] >> endobj 229 0 obj << /Length 1691 /Filter /FlateDecode >> stream xÚµXßÛ6 ~¿¿"6Ш–dÙV÷Ô[¯ÅuX7\ƒuÀ¶ÇQcŽùÇ®·¢ÿûHQNl'YúpÃg™¢DJüH~ŸðÇgœ,Qá,’ã<še»>£¿?gý臛ÛÅÍË·2u¦•š-Övùbõ›'ý9‚À[ÜÿêÏ… ¼Ÿnßß}¿pã‡û»‹»7ôöóƒ‚ìÝÃë¼ÿðrÆý?ïoî`™œ’IÂT(a|Á^qÞkÎÁý$¨ÙÕ´\MxM·lÌ_)Ûâ‰$]cÜ\^¢7/ß*>ØsÍ´–nŸ6ÿüº®«ÇÛ®m«òÕGÓÞæå*/7 -çIÄTÀÝR7FîK2–Ue[§MûÄðöÝrŽ[Àq‚ˆ…:œÍyÈÂPÙµEžùs)…÷·/”—Öyº,Lƒ"éíº¦¥É¥¡çÊdEZã©p>/›|åfÚ­€BãÖ“vÚæU .*{‹^k]E…á„$JkŸ'Þ¦#gçed½ÜÁ­â¦:5ÜBKw»(j+’8ïœpëp~:$hL‰û•n—fo²|ý4V¬:§Víñ Í®«úŒ“`q÷jŠº¹‚L(Å‹ex z¤;Ÿ"nþ{Èt3µ$SÉ7À{jã,ª_ÃIE ÞR”JzÍñkº\¸hãpí2<[Ÿ{[€¦gh1¸/6]mŸIâöy.»¨GF~¸¿ièæY"ôèöÓ¢@¼÷ûúxNÓÕú¨&9e&"w‹QržKÈ@0Í•Sïow¯ÈÚÒÐû|•×&s—r„ŸMNr‡|t¦yÓ¦­a'˜’! _ Ï*¨60˜Sƒ ê†Ï­O>s“k/KK$˜Ì$¡´ÉÀ!‹ŒÄc\ØÍó÷¸Ô´i^4¤‚!G¡I³­+‰’X%|mÝ; zË5 —Þ[Ÿ+ÒßÎ|ùœîö…3H|0˜8 ä´L Ü4¶œ˜¿|Ñß~ùç€é@OüÎ)Èó:ì{út"F÷ðeˆTÔœ¼¾¿š¯‡Š8ÜØ4ÃÇaYÕ»´øêràÔ¯g’ ŒÍ$)ذ#PlA1)"#êA¢áQpbWÒØ¦Íd Tšª«3Câ2Ý9ùp+xíówÜ ‹%?¶Dq¼µïp¹ðrÛÖ@geÖ>À+튖äcѹ†™7gŠ”à ï\lÍ™«Šå‘&(ö=˜{é~HwmìëjS§;Ç„P1éÀ|)B—¸èaÓä›’„C—…kË i·y3T8Ü;H–O¤Ó5ÄD߸a0ŠèP ¦¹¼ì÷6g®?«v;Û×E¬€á”6yEGGÙ¸WÀ6xö€Å1ЛºJCoM¾ËaM¿W掠hm‹Bþ†>Ñ×’iúžE¤pb¡°%=`ÊÎÖ›Y?|xwXA›KÿwY‡DbÜ‘é{ô7-òúsCM²çF=¨z¿øZ{åÄS°0äøJ+À ~¥lÍÉÈKñårµ1-‰lJJAåY4« „hõÂÑ7lû(¶µÙŒýïá”÷EÊñHkÅ]‹¥“0˜ˆ,WÃÈò> ¼®QSÇò⪑ódè|ÓaMÚ¥Œ”c:r‡~³SÓÛÔØèÁ–[°4IT‡z¸75~Í¡|„P…ÑŠÈ‹3ºs~4g0ÔtÙÖ¦þŒÇL)=ª‹ž9\" ‰ìeá`ì°–^ã Y·ö»ø¢#ÉäY(åÇÖìÉ*?ùçpþgâ“÷–ÇËž÷ËaÂWâùb:ßw!”ä =\bE{¥Ã½mñqä]ö}¹êc,v_#$XEÚoXìMA8 – ŸK{ùšfÈø¸uoœqÝÛ¶h|·”5]Á$iê´x Ó¼¼Ž£GKVžNaÔMk„“‚&þ7;þµ„¨$KëšFSêZž'‘”gß(t“ª óE¡óàüW (§ð˜ÛZ„‰éö¦_,èFëɾ O>=.Ñ…H³$¹š­Wùúü_ìendstream endobj 228 0 obj << /Type /Page /Contents 229 0 R /Resources 227 0 R /MediaBox [0 0 612 737.008] /Parent 230 0 R >> endobj 226 0 obj << /D [228 0 R /XYZ 110.854 636.116 null] >> endobj 225 0 obj << /D [228 0 R /XYZ 110.854 293.631 null] >> endobj 227 0 obj << /Font << /F37 68 0 R /F51 98 0 R /F46 78 0 R >> /ProcSet [ /PDF /Text ] >> endobj 235 0 obj << /Length 1608 /Filter /FlateDecode >> stream xÚµXÝoÛF Ï_a`}‡ùv_úÊÓÚ.-Ò!]‘ÆugKI„Ê’!Éq‚¢ÿûÈãÉÖWœháñx<Gþȳ˜qø‰™œE¾ž*`B³õæLÌè÷iÖR¿½ZžýüF… Îbߟ-oìòeò§æ Á9÷–—ÍÒçÞï¯Þ]¼^:úúòâýòâW}¸žkཽ~yuuùþ-,J‡žˆæÿ.ß],ag2JEóµú sZÁ…Š5SqDÀ¢@>'ïÃYZ{"Lœè&Ý’Árd˜` Ëÿï6“ŽËnæ -…WÛí´”ž ÆÍ\pÏdyMÃÕ\ro×Hs—÷~.}Ïä;7,o&ç«Ì¬rÇÉj©·é:ûȹL7QÐ×­•^¹m²²¨ñð³EÄ„Šf ¡™Ö¾5<1Y™:ý œ¤p™㤠»6á7”2ðvuš°ùBqå½™ ß++â§8x0›mNª¤u ÎXKP,­ˆº3NÛºJMƒ¦#×n«¢nL±N­ÉÜY› ºKÒ ÄM™ç%ZºÏŠ[bí­Çχ׽ŠÅ1|}ÍüðDt}}(ø0ÍYÌãn(Ãç‹òÈ$ ?.³‡—UUî_횦,X’Uéú(·?œUA®ÄVOÓ[ArÌTŠŽ¢pÁ¬ýÐ.\¶Î9^¡]‚Ö–øœ‰@;“÷: ÈV ËsÒ¹rº1Ú+¨—²èœîh…/]‹ò« (ƒ˜IñÍr^ ÷‘€Bø†é.ýØ¥»ô#@Ë0y]uH|L‡@´Þ‰½$¥©]ÞÐÒn¦¡ÎnJ#ƒ‚>n5DÞb](p‹¢nÑÑß1â‡Ívp,ÄR7ÛW´ÎM]™¤0¨Ìñº¦/›‘NðEÈ¢¥ba¬­Ò¿çPw¼r²!h¶iĸˆ8†ÆÍãÖ1֟ЩûTÄÜVå:MvUê¤K'{‡r–µ¿KÁ~'N' y‹*0O¨¬z·Ýæ¸,æãŒ EQâ¢ÀÂ.²I50Öe…qL0jœç¦(èpª¶»Už­‰ÕwaîR’´¤´‚Ö:¦,ÂÂDÿþq¢˜@Âc² ƒwƒÓ©ºÙyêêÍM“³y¯X™Èe0Ph¨3!ã±ÂâÌ·“Õí¬%¯ßpP×É„PdÒµ&ZOƒ%Îcy¬‹Èy휱ëžê â¦L꡵°¹dZ†Ï!ÊqÆ£ø4&¼$ß)¥1(ð³Ï’Û´!úPÔhTÓ×Õ?€åûärdSL[Ì&«²®³[G©­x48܆S‰‰c¿¤Lµ¡9¡nœâb!`c[F‘¤õ@¬.uŒu'FvÜip¦ß¨¶øãÔ P“â¤Ýâηi}2ÌOÔ”q ëô=,(£PCƒƒÌñ¬Òrª†‚¶ƒDùbBaÈDØÖØq²P¥¡vD}·vÄžÕ6p‘7]#ƒdê-vÊl¤îâÒ»‚;OxµCà­GÙP@â¤íËÊê“­‡¡÷h ðï öÄ÷:iE’¢¶Âq͉=($ŸÄ{êj•¯½¤´¡ÔÞñ”‹Q`A º­Ìfc“ÆΫM Ñ@W½lEGV ÓYaiŒFüÚã«’D5µö žVûÚÆ9x EBP Èg‰Ó)´hÁCc)Îóš˜n–²Y‹£Ñšvè6zŸ2Û–NøtZ¼¹;k} ‡E0Wó`®0›Á:CñWƒŽWA`³«⮜†¦§tl¨E…°mž€8VêˆàlecîÁz6!Þêq Â¢6Å^„ÝlLádGÛµÕȃÐy{NÖ3˜Z´# Fz¨Z¸æ§œ£©XŒ:^‹å'2‹»¹ãAF.~#õšö}ÜÛL¾%Y¤CÿaËàX· ™Œ"'Ü„u¬ï%¥d*¨ eHÚгà ¯ Ý3â I¥ © }¿I‹¦n«Kæ(òðùS°.|ÅT7\Ç~™€û9Y¡BiëÝ£{/ÍÏ{’¹Ç„þBôgò¿ˆdOz·½7®¢üÀéûÂ)À?Ú–ØÒŠÈÿÈ}¾?_YÝš40qbÓÅ*k6fK‚¿¼°–²‡ÕÆ=tÆgú2Ñí ˆ©çú½gÿ°ú™éendstream endobj 234 0 obj << /Type /Page /Contents 235 0 R /Resources 233 0 R /MediaBox [0 0 612 737.008] /Parent 230 0 R >> endobj 232 0 obj << /D [234 0 R /XYZ 110.854 636.116 null] >> endobj 231 0 obj << /D [234 0 R /XYZ 110.854 388.379 null] >> endobj 233 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 239 0 obj << /Length 1178 /Filter /FlateDecode >> stream xÚ…VKoÜ6¾ûWì­P)¤Di¥ÜâÖ6EÜÂС@ÓWâz ËâB8nÑÿÞµ«}%0àçýÍP#þÄBå©\dI ‘-ª—± ¿çÅDývs[Þ¼»O– iº(7N½¬ÿbI Î9+Waœröûí§»_JO?®îÊ»_éôÇc ÷ññÃçÏ«‡ (¹d¢þ.?ÝÜ•à™‚Jòt}½‡Á¶ï+ÛnÌSX›NWƒ±^ýÈg§‘,¤×7=y­TÓèúg‘{{‡ìdì–›mjâì3‹‚0O2Vn—¥ß”½ÞŒ ñ¾Žë-¹ò}á<~;5Á·}ó¨¡â[ N“k«k¬wYbU[]=IU…»]ç0øjìØÓÕ8:ò ‡ýý¾îÀYëí¼½A=›ö‰ø¦=¨bÈü(Ø=ø8j³¡¤XFiZ‰¯6(Y0…?9Þvš”•à › ¯\óÂE­±h­®‰ 1Î,Gy¸çÌ tõjš†”Ö“7DOéº0¶“À‘oª xðÀS±G i¶ÉGD£Qnuçü`hKéeÅY/œ™«”gª¾_œV¾>Š30h|§rr‡7þúÌø¼ð8›l> endobj 236 0 obj << /D [238 0 R /XYZ 110.854 636.116 null] >> endobj 237 0 obj << /Font << /F37 68 0 R /F51 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 243 0 obj << /Length 1386 /Filter /FlateDecode >> stream xÚµ]oÛ6ð=¿Âè‹å"bEI´¤}h¶µMtÃê!²Â-Úæl‹EÕ †ý÷y¤,'ʲ›ýpGòxßEð§#J#’³t4M¦„Òéh¹¿ #üoGûþâjvñê]’9)ÍVöú¬º ÒIH£( ~þ|ýéý$ŒYÌ®Aäæzö±}øáfù4 âhòeöñâ»ÈB5’<',MBOzÊ0NIY…#Âì©Z<úÓûîF4 ­Ö–ÔÚ‘NG4#1¶£õÚÙ1¡y îpqzãl¹×Y?´Ä$$-Òç º8!IÌ:uÝú¶™„I–GŽpSNâ(ø:¡,p; çõå$L£M˜UÔì”4T_EÅËc*ª5מCVR!÷ĺ¶^0˶áî@Ôš«Õ„FA¹äÍ¥ñ€õnJRp©Ñº¬+ðQž‘4bØqÄåâw¾ÔW‚3G¼RåžOb o©¶nÛ(dnì¹Ó¼®04°¥7Ž«7ÅàŠ¸ÒR¨î BöXɽ州°  ñzC,$cÐ&a…¥Y9q̶Öz\ìeÕZ³â, î”´fÁÎâÞ]õÑ1‹ÎÞtytF«½<'ÔzõŽÑ^‚$&ïYæÒd&îÈáÉÎò(MH”äŽ ÍƒÒa``:` ÍzZRïÕOJåHÀ¿Š7>pÔim(,weÓàÉFpU*È78Q#쬦¹¯)Ø…¤=X¿XÊ W"ì"wRV—õÒê¹B¸(·c¥seyp3É£ÀØ7H{@XÖj­ÄÂV«m¹„Ôn_µõR 鈉PoJÇNxèè²iÄÂ&M-,ðì!ŠAÓ.:?›µñ¦\c(L°¶*U…›XvÍÔ¢OÒêÒTÃ㉓ˆd s¡?¹½k~§Ç_&áÜã|·“ãÔ =«8³lT ™©°ÿu¿Á¦LãˆP°õÉ&øtcDQ×Q´ø¢ß¤óÚo‹Ær;Hÿ¥…‘i„19nx=äÇœÄ,ör¸„%Ô› …©„ÇŒ ­ÅÔ~ÖÕU«µ¬¯äÝÏ|J¢,ëÊR9îR™BZ/MêA¶_â8p;•Ç„q/ˆ¨¿Ê-7Î3Ž2‹‘iä;Ç‚/KœStÑϲ¡LJXQ¥gí×V ¤K¶ÂõJɽO0Žz qß\+„÷²Ed-ýE%Ûõæ—®·.²n´j—Zª‡Mÿ¤áµ)Ä, dkŸïí%Î2s‚ºÌJ14ÐmH„l6r¯ŸêEJâ4û߆KÓÞ*%˜R&ýatÞøFB_c.ÀÐ,èYÃ~ñâEï2 |Ë÷±oäþ [óö1+äJºÿgß»Ü5«[ #ÚŸÍÁ…¯‹4êŠä1¨>°[ñ²žÏE-ô|n|ÑðÝê·÷eï·XÖ«7üé/_n'_Åð½Çço ïQò osŸå6T=»ÇZÜõ|=¾Ðþv,¦¨šñ—“ŠCí°@úÜÝU£ÇizÌw¢Ñ·côäipXÍb’L“³»óªÝïïO¹Ó³É³8ÉÎÌ vú B¾ñ†ÉNÚê-Y–»§'ó£jùôdD£“ žÅ/´ï£§¥"§.Ö šÿ@,pêÄ>üê‚Ï):ÍŸûîzö ó/IÈÝ=endstream endobj 242 0 obj << /Type /Page /Contents 243 0 R /Resources 241 0 R /MediaBox [0 0 612 737.008] /Parent 230 0 R >> endobj 240 0 obj << /D [242 0 R /XYZ 110.854 636.116 null] >> endobj 53 0 obj << /D [242 0 R /XYZ 110.854 611.21 null] >> endobj 241 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 247 0 obj << /Length 1984 /Filter /FlateDecode >> stream xÚ­X{oÛFÿ?ŸB ˜B#Š»|X,îèËMš¾ªèIq Å•µ0E Üel÷Ów^¤(™>p…ïpfwvfvæ·³V³~ÔL©(\¥É,‹³P©l¶Ù¿P3þ¹õÔÛ_­_,¯âK˜æi:[oiùºü$ó…Š¢(øí×7?}7_è4 ÖoþÍÄïoÖ¯™úåýúõÏ?ÁÔËU–ZÍÿXÿâÛ5ìÅfÄ«U˜&1ÐOÐO\ô3: óˆ ŽÂ”¤íͬ'ß}7¬ˆf ²š¦’I6SIÃ0ö#TâÉU;W«À˜?m}#!ÃÞ‹+$nnÚbïÎÝ€½t˜+ýœhSfQ<Ø4Û«¬0óEV}ŒÒ·[^¥j45‰ÂLg2ÿ3óëŸüv雦rË-i!<<°†“Ít‡«U¯¶Q¼á¾¸«(í­ÇQ‡Æ9{] ×7¨œ^%a n/ ® Æ4¹=ÌqœE{m}[´üù˃ß55ÒYph%$u4LsÀ-¾Û ³lê Œ¼çÏœVPÌu|š«40cÝá|‘fi°Þ M9˜’lNŒüEšvRŠ"¼)ª &Òw!l­ãmÛüiê—Èв_ë,93š-M×25¸´¸ÈÅõÖ‰~™`Pß=)Ýt¾€à¾Î×ð¿³nÂö¦®0¢©îð šö§q`·Ì{€:T…ß6í^䎹›f(<Ÿ&©±~ǔߞç’Ä‘I­Ù;×ið‰Ê瘺„ˆg*£ˆ M‡L8PT“èq 7Mí [Óéço`±ÚÖÞ´‡ÖÀofµ¨© *ÃÃkMëá< é@`d£Ç:ajÛÕ‹‰hz»7àEÅÁ¯ÍÖéjÀ®k ¨Õ:v'é†òkcj–y©–š˜ÉÈ–ð«±%³*[ß2²À¼®®)ˆöMÙUƽBY\ã²Î‹þ³È²Ñ`ZWù§®mMU†42Žë §…Y7ž ·fHÕe˜¦ù‰Z*•çCÜ4ÔºƒlÚÓ”†¹jäp®!GòÙXStfã¹¾W_Ùk†”Šó,¹k­÷Fv¶5£Ì„¥ƒ:‘¤EÊÊØ9ã¸îˆëxä £ÞT¿z5†‰!š@dý4çMQ¾: ±±–lÕëº~ðfAAz|fT}€¤°{ÓBÞÞ`ù$p/®w½ð†KŒRMX޲)ˆ°7ÏøiN÷hÀŸh„?´ŽÏ i4 ÁE¡›Mw³›¨V Êu°ï6;¦Ø{•&"£´®pÎì:Zæº0Ñoô1 ´Ø:f÷E7ƒ­ ‚d[Y%é¡ç!uжäÕ¢øq@û,Ädž*üR²¼‚òí¢×Ô†?ê¡hßoáÛ½d%Œ’Óg…Å`;ÜE¤ÜˆbN‡´/–' ì÷9‚¡­¡S”:¼'ôO䚈$_âðÆsndÈVŒ38n¥SÀ‰ë9\yØ­ `tÁ‚¨«KBRüVÓ`2¦‹­tœª¶²ÁC»sfGÁ×]ÛšÚ#¸¨œÂÅľsž©¢Â; ©ÒT£”n‡BñËô@"¹“HΈnFhÎ6Õr}»ì½~:?ýµ\?èAš®ú2Õ8ÏoA³ciHôÐËhº¤@ÐÛ‹¬õ-]S,ŒG Œ¬&† ll);ZY]”S·WGu ½4A¦%2å(#¯hExÓp.¯¸BÜ÷ýRNIʼn„G† Ï&4<.O°ä¡HäN:ë¥äš7¾; .¦ ç”æ¾ª‰œ¯Øfø¶²´ÐRø¦µ´5¶'5/íËïm¤ÄOGÁÆÎIIë'.Ëõ×?üç‡7_½ûòBÅû¹ü~% þÛ ñÄzÎ<–‚9P,ŸlÛÔ{¨fò©µ1Í=YüWX 7Åþ@]íë\·7 èØªd¡T<…§c|¢qL" å—ú`?L<%¦*þmÓø-ÿ–w¶.›;·¸_e¯•éPÅòˆ`DÉ´˜gªÏHdÊ5Ìó”Dé±Z3uLI”pðÈhÞxÂhдô›jÆSöÂóQ«D žT TzÙ»4Öyû„Jˆ_”¨Q &tæa§:íý*TJúR‡qŸT´}lŽ€Z ×^\sIFQçªH.% €Ø6UÅH.² ›R*?ZY+é…óûôîP~Àw›Ö<ó¯ t“íΞzóá)݃%]´mÿ¾î1i¸_»ªìïV–Ó¥½fvßènÕ')öÅùƒ}‘†«‚'I¡{úÝþô[ž5DÃKÏ; sP6zÉsà‘„ôvøH5G"„—ر‹Ã4ɹÁ-Zògýódrµ\{ƒ-6°nŒßÜ•ø/u½µ½ƒ„ûƶϩãMÇ:4¤vÎ:ðu)ëp¾èe/kÿò ¾V¨“ÝÁqvs¼ýè¿ ÃE~Tq‚ÿ”GO(ù:ÔLx3OTŸxû¹l1¡öbBxgjʱÇ‹ã=ì;Þaر×Îxs¢0}¬ïíÿ¬îö\Û”yÃýô¼>‚™ iðŸ4iÿõt³÷ÿß/á"Þßq–¤èbâp*ç«ì™?Ã=ûWÇ¿õŠEendstream endobj 246 0 obj << /Type /Page /Contents 247 0 R /Resources 245 0 R /MediaBox [0 0 612 737.008] /Parent 230 0 R >> endobj 244 0 obj << /D [246 0 R /XYZ 110.854 636.116 null] >> endobj 57 0 obj << /D [246 0 R /XYZ 110.854 611.21 null] >> endobj 245 0 obj << /Font << /F37 68 0 R /F46 78 0 R /F51 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 251 0 obj << /Length 1902 /Filter /FlateDecode >> stream xÚÕXmÛ6 þÞ_‘oç`µÎ’߇mÀuÝÖÛú†6EW´ÅÁ±•‹qŽ•ù¥wÙ¯)Ò‰sñáúu8´¦(Š¢(ò!9óàOΤôD³È„”Ñ,ß<‘3ú»™ Ô_Ož-žœÿîÇ .Ò0œ-Vvù¢øìsWzžç|xùú¹«BÏY\þMÄÇËÅ ¢Þ~Z¼xóDã$ ¥æ_>ùm{‘~’ˆ0ð~À€AÐõãP¡"I¤PÞ‚œ'R/gZ¡ëoecêÏg‹__^½¼|öîâݧ³¯s7›¦OU.‰ø>g]^%Â?C#A‘+}°-=Uø×wë»ùu—·¾ò.Ò*¼w+¢dæªXøil·X¬Ëvîú‰ïdUk˜*Š–£×ö‹c(f×ýÔÓýr{ŸowÝÚÔ®jbG†BÉWu¼ÃÎô Qoíb¢·Y·&jex:«ç2tvÖ7® ‘pÉÎDVã°£è‹ç©J·4hû|MT6u˜4‘?檻)ëN7b»+&Τ‹"–ÓIí&ÛQk]²PF©ApdákÓiL=§[gR(f»:Û”9qÁ™MÖ”ö)'ôø0™1ƒÏEU±¦›ÃÈs¶sé9Ö#JdúºÐ ‹0Lìû8<§¬ 3W¡sÛ>»Ÿ8xgm¢p„WVMÑFvòC]ÞÁ$¯i4þ§/ÍÐÈÝ6æºÉ6û 8W™ dU9]¹Ñ`›JY€<«‰VgM¾Ö–:Ë/Yó´Ùê&ëÊúš¥wm§7$‹ ÍÈ_jˆ;^²+ ó¬fÅúÈÄКØvYÓa¸~˜Â¹I]M8VÅÅŽ®qÞf÷F×­ù†²Ù²ÒQ«‚PÄi¡øöðó4\})’xWÌnTœ›ºí+°Óš!Ù‡01 CRÄÇÑ‹÷øs1pÊSà#î°_{¤#âälÈ|ìl€J b“ì~ù|@»«Ž)D„'y8Ϲ 6ÃÈ÷!Õ1`.ßwÚuÖPМ|;šÈ³œb'°YXâÍxɉç\Ô4@Yv¥©³Š–m½ÒÍ^e‘žwfPjA Ä©ºÀp< xra¤ :€séäÈóÇ"¹½œ+Ƚ²ê˜][˜…‰½2ÂdY!§e™=h"7눙›Í¶¬x1f±]b´z˜YO]äñà¯Þ}x½¸|õÛÕóËwSé¥bÓGAâÊ4…ã€×¤0GY@ŒztĆXx©äÞˆ ‰F×Q-&_#9e"šÝ•ÜÚteÿàoÇq+NS¥BEáÌM”©úä¥í…” lËtÚ¨Awù>Ë~.ë•¡ ’h³ÒwC©û:Õ´E˜þð®¿-m·;Ù².¡µÖ1ìÅcˆ:d fß}ЕÅBFÉi-ÍÚ1¢>åG·árq{@é’Y¼7}½_¹yøFýÄþÄõ?ºQ8Òue–öÙzG=s;,ì:¯sÕÅû sÏ—Ôå”m÷°³¤ï ÿ±£<úsÝñ <µendstream endobj 250 0 obj << /Type /Page /Contents 251 0 R /Resources 249 0 R /MediaBox [0 0 612 737.008] /Parent 230 0 R >> endobj 248 0 obj << /D [250 0 R /XYZ 110.854 636.116 null] >> endobj 249 0 obj << /Font << /F37 68 0 R /F51 98 0 R /F14 101 0 R >> /ProcSet [ /PDF /Text ] >> endobj 257 0 obj << /Length 480 /Filter /FlateDecode >> stream xÚÕ•MoÓ@†ïù>ÚOvö{9"AJU• q î:µB“(1¤ü{Æë‘¸‘”Ùcï³Ï¾^cÂèÀ‘U2ÑB¢NЧ&í1KvÕûÑk?¿†ÚÁ)•ø2>2Ë‘1–~ú8¹ºÈr®Xê'ŸÛâvâ/ÛêúÎ_~¸¢VcµL¹È¾úw£7žÆj1„µ ¤ úÀ®1ßuæ\‚c˜ŠwWÓdWÞ\üy‚%y¤Ž­qR'h€ãÞ䣗0àL÷á5ƒqFã2`ø>—A§¿¸n3­Òp¿Õ˜!K¿M_äãà÷êS´Ú$h&úºÛf¶Ø €o¤UχD47ÒÅþaˆöB#+¤êxêëzùj<®«gX/~¬ŠP.ââMÌCÝa!çÐä(5Ícº$s'tý«~\Ì;‰× „:· ÍfÓä–Mp"lEu1 ÒQ¤HÇ­"{š ÍÆ¾øÞQ$AÝÐCȸJFKëbU-ëªXC±xê†Í A$}Ö§ÌŸUóšö§CCкÿ2DŽvIuâEG‚þF‡\Zsg÷ToI‘«P6±*ïõqW˜$ËX Í:—(Àñ^Y½ÿÒßNZ©gendstream endobj 256 0 obj << /Type /Page /Contents 257 0 R /Resources 255 0 R /MediaBox [0 0 612 737.008] /Parent 263 0 R /Annots [ 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R ] >> endobj 258 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [132.771 542.848 252.759 555.666] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net) >> >> endobj 259 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [152.246 518.44 262.719 531.257] /Subtype /Link /A << /Type /Action /S /URI /URI (http://www.python.org) >> >> endobj 260 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [150.261 494.031 263.423 506.849] /Subtype /Link /A << /Type /Action /S /URI /URI (http://dev.scriptics.com) >> >> endobj 261 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [154.899 469.623 265.372 482.44] /Subtype /Link /A << /Type /Action /S /URI /URI (http://www.python.org) >> >> endobj 262 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [178.81 445.214 289.88 458.032] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tkinter.effbot.org) >> >> endobj 254 0 obj << /D [256 0 R /XYZ 110.854 636.116 null] >> endobj 252 0 obj << /D [256 0 R /XYZ 110.854 586.674 null] >> endobj 253 0 obj << /D [256 0 R /XYZ 110.854 557.966 null] >> endobj 255 0 obj << /Font << /F37 68 0 R /F46 78 0 R >> /ProcSet [ /PDF /Text ] >> endobj 270 0 obj << /Length 329 /Filter /FlateDecode >> stream xÚ’]OÂ0…ï÷+z¹^¬ôí×Ú[¿`š H ãñ%„‰þ{_Z¶(jfzsÖžvÏ9-ŽgV+b¤a†LV 8^I­n’3Ÿt®dŽvæ´&~¶ûésªhœóôaXô»4š§¾xŒbTø^TwO¾wÛGknJ…¢/þ:¹ôø¯ˆ!­eZIÔÔÆ¬vfB1Ç0g:¬VsRËûn³ƒ“,PkÈ¡ œ ø–ÃS°éò=âž¿·Û(‡»j?Ùí«ÃryŠgs&¸i£FŸ0L h3‚cJ8L™cJìdsHeqÁóUãê&ÑN†£D=Ù)V’\¬“ABÍÑØ›r9‚XfÀ5eüz©~Qþ(¢·,«q5YP~Ä™õìxßTꦺU<]Nçån{Ú>”œ9aCØ”ËM«³õõ|sšqendstream endobj 269 0 obj << /Type /Page /Contents 270 0 R /Resources 268 0 R /MediaBox [0 0 612 737.008] /Parent 263 0 R >> endobj 266 0 obj << /Type /XObject /Subtype /Image /Width 593 /Height 642 /BitsPerComponent 1 /ColorSpace [/Indexed /DeviceRGB 255 271 0 R] /Length 2920 /Filter /FlateDecode >> stream xÚíP×ÀÍ$Sü#ÑIÿh%R¯U&Î4Í ¢„èµS«Mkãäâ'µS Vð`R®b`Û2S´þÖ[І™š™N˦^wOXqubÁTm2=Ê­çÚÁB*9e¼CîußîÞ/*°·ï+ÇÛ?˜9îæÃ÷ûö»ï³ïñöÝ¢EÉxØÐJ}Ô¦!õpê‡ÊŽmH„ÆM·ëÿGŒ}¡‰Ø÷„YCm|L(!Y„EÕC1¨M- ‹m%"$ŶUÙR˜(êøõÏýÛ\TÞ÷¶ÌÔ__Y”†ÐÞ§Šòжkï.z!G@ò¡€9TÇ:ÎW¬¿–pTËK½ÿwE¢ÚÐþñâΊÎ3(é§œï1¨’R¯¸Sˆ Îq9>öÏœ`¦­0ª^o«(*•ŸóøXÎ͘‰êØÚSÿ¹*”ázþëýÛ#(‡†2U|]I¨«ßÎ-Úö sm5Êâ5(Á]8D¨Má4çy5*°^T‚ÓÄ@MjvÔ¤b ¨yˆº:þc³£¥(Hª–ÅMˆÂò’ŸykËIn7yT}ï畬ceÉQò-eÏ'®,ÐVï+¥=î,@TW3+³sÓÏ.ÙM«}öP€½(5­«eœ?ÜÑÇKä½hЯ žAÆY¿º¾n9/‘‡síÜq—ÈÃUå­çñx å?àäwBDÕq~Õɺ+ýÛiµSã¤:* :8ÑQpÁR ‡á“¨=‚‹*% ¢Ý~ý`K4Á40n·˜ #ø}F®**CRâ(m®oÿ±}½YGއçú˜¬¬®ÞÓÖÚªš-=ÜT á5ªj‡Ëé±–à;jlúž«òÈÖPŬìlâ#¨—0ªÇÚ\|l«óÂÙp‚µÙßèÌ=MP¢e(qµÛÈQñÆaà®A"”âà´´ÿ@ Ü\§‰$E¶U’E‘ jÔ› T’B(Ý8¿îŠªÚs“Cù P/Á¡j³ÔÉÐjŸU5•EÍ9ês 5P(·$*@òºtóVÖf$ªcÞvñ L‚—{o‰,JôŠ-0¨G~¹m9\]À¡¨¼¨q¨q(*ekè_ „¤`”q:ÖWþö,LTîŒÁbM8«nìA±ÁªÆÔS[Wn8”I«‡Ê‹–è‚BÕ"a´µFAãwÈX^?ËZó¥«VCDU)69ò›Ê P_p€ ²UçAýêe×—Ïgþ‚«+@Ô8CåECûöAoC•I(lœ—o^‡@áU¿ó¶A¡þÛ †*ÁPGº P]¥>Š>»DQɆ¢«î)*ÕaC Ø^¸x·%}PTwY¶õ©Ë%¡ün7ê¯éÚhµÏ2Š®º§ò¢¨¹F}€B‹ÃtȽ®¯z$–—?«ó{§6\? ñȘ§ñ'­Ö ñœ×™úâV× Êç•â9¯ŽÏosW¾²}­v*¯ù`œŸÇ¼J#;ƒ±S AŠš¨ÛhM,jx¼Û2Ê‹øX”R-[BaãtåFPxžIyu¨Üf1ªþF£b4ð7•YD}‡RЬ£¼=ñ¨|ë¨öWžE _ÛR¾ ®¸MAT|/Êô¢ñ§‰ÔGÅ7{Üä´-þ͈Š/†‰i ‡¢’5ììF5šÀ4TÇý%Ñ0S·ÿSÚ;¦PŠ]F%!9Œâ”=ÈÏøâör…fFay½7ôæ†~ŒÆÿâ;[øö¹®Õ¾¸ýŸZ_Xa&*·£±>?U—XágË‹qTrdÿ'¾Â{Ù Šs4¾AĊت½ÊØÿ‰/2‡Zçp—ü0ÚVbQç/1PÆþO®|±ÚÌ|{KyzæÖ0êxæ’ƒ]…™u”±ÿSÚæ=›ÌÕ•R]Mh¿Å¨hYÝ2‡ê›„ÒWƒÄ£6U» wá$ˆš®•ëE§ëÍe8MÌj:ÑË$Æ™„")Šš5Ô°Ú¼9JßÿIu’9ã0(T>JßÿIu’9ãìÎ^Òxòô#P·Ãû?©Nš¥âF½®1ßý¨;dcÿ'^u’)”¢¢çLÒ÷â@‰S¢ðþOª“L¡îõç>ýÚ©ï>¥ïÿ¤:ÉJSSŒ&¢¿ðáúÌ¡ÆÛŒ(d5õp)1Ô´Ã¥„zQ:×7jÒžNP£TÂI§Dê*=‚‹*EìC#ö«Ï–‡EãÝ#iCŒ”ˆaWô€@!ỷ+s}Ý/䵺P˜nÓå5ò·®¡Ol³Uÿ}‘u|±€ô釗8A{‰%ÔX@t9vhë#TT¨ûÌd,ÍõDw©¼Ói mœß[1h)ªŽUYégä7r»õï]ïÜòÆÓûë%’f¼)2[¢!;1 ÁMÐ%p×7jÒžNt®h‚Žä NLóYŠJV6Îý•è+ÌH‡`…£8Å@cY¯ÜQ†q ûOtBƲl»µ¨°qv¦UP£Rð#ËÅ­r3c …#:«ø0jïEÙm…#:¢:WÂ;x‹(lœÝ+ŸÉ0PdÞxâ|q])p%šŠ¨¸^T!êEã^)pšH`[Ñÿ(Í8ñ·~h¨šË-£4ã0ø[?4T/bK¨°qöãoýŽªÆñ½€åC`œ*ü­ZT>–qªx–7Pî*Þr[aã8DÖˆª×åC`œg2–ì6Îàï±|hµSãPyÑj_òZAÕ\^J$¯±fm‚NëCÍÖPay]:¥~ÎWk'‘¼Z{ÂQù\—þD$¯9‚r·ÕÉ‹DÕën³ìAm‚.ãtCø ž_ÖI«Ê‹‡¢’×8‹ƒã 4ã4áõ5ªÑ**lœ¶þ­†q†\vËQiÆi{ Ó†òWË(Í8mªˆ±ÞVØ8mî²0ªÔz³kÆY¶¶Ü@µ¯±CÔÙ6ß‹"8ã 8M¤" ð?qñÅ@Qó…å5¼y×J“׿¡ÂëölßÜ@¼ŒD“×·èkô5G½,Ikr4[IðÁà9±!šàØ@Å€óEGƒ”â¿ì¢Q)elsE“C°’ ríúß»cŒ“½6{eæ‰nz >ÎãWÐQãP=íd’Zô…¨;Õ'ݳ¡Zd·$z‘‘c ¢A‘`Iô]«_DQÑëžk9"æºEáÏ?¨Œð{Z9o»§9q”*zå­¾p‚%ò9½^Ïq+(E,öÇÃ}|ŽèõXJPé¨ùZ êö?®¶Ü©ÍuY‰*¶D ¦,ÜìÇäσEE˜ ØRy7m¸ðP€Íž$ÕNQ¨°ºP u‘¢Ô·Ç uD5f¨ ¥êAéê‚8ƒ†ºhµÏ"ŠÊË_ÌÁ?ÈPÁÇ“`(iÚj%8z¡wmhx;y‚’‚¤24PFžàxÝk_‘övÊŸõ3¤ †ÚêK¥­²ü:q‚¡6~Ÿ´¯W*%?ƒU|±T<8àp'ˆª2N[vdøÚf†^ƒ3AEí<‹´&<^ÿDCQEQ5'#z:‘BQEQ©†JÎã{þQ[endstream endobj 271 0 obj << /Length 43 /Filter /FlateDecode >> stream xÚc``øÿÿÃáÂÂÂׯ__¾|ùóçϵµµ“&Mb£`¸rYÊendstream endobj 267 0 obj << /D [269 0 R /XYZ 110.854 636.116 null] >> endobj 264 0 obj << /D [269 0 R /XYZ 110.854 611.21 null] >> endobj 265 0 obj << /D [269 0 R /XYZ 110.854 586.674 null] >> endobj 268 0 obj << /Font << /F37 68 0 R /F46 78 0 R >> /XObject << /Im3 266 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 272 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl 22/.notdef 30/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 141/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 157/.notdef 159/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj 177 0 obj << /Type /Font /Subtype /Type1 /Encoding 272 0 R /BaseFont /Courier-Bold >> endobj 109 0 obj << /Type /Font /Subtype /Type1 /Encoding 272 0 R /BaseFont /Helvetica >> endobj 100 0 obj << /Length1 772 /Length2 576 /Length3 532 /Length 1127 /Filter /FlateDecode >> stream xÚSU ÖuLÉOJuËÏ+Ñ5Ô3´Rpö Ž44P0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22°25çRUpÎ/¨,ÊLÏ(QÐpÖ)2WpÌM-ÊLNÌSðM,ÉHÍš‘œ˜£œŸœ™ZR©§à˜“£ÒQ¬”ZœZT–š¢Çeh¨’™\¢”šž™Ç¥r‘g^Z¾‚9D8¥´&U–ZT t”‚Бš @'¦äçåT*¤¤¦qéûåíJº„ŽB7Ü­4'Ç/1d<8”0äs3s*¡*òs JKR‹|óSR‹òЕ†§B盚’Yš‹.ëY’˜“™ì˜—ž“ª kh¢g`l ‘È,vˬHM È,IÎPHKÌ)N‹§æ¥ ;|`‡è;»8»¸:jCã,˜™WRYª`€P æ"øÀP*ʬPˆ6Ð300*B+Í2×¼äü”̼t#S3…Ä¢¢ÄJ.` òLª 2óRR+R+€.Ö×ËË/jQM­BZ~(ZÉI? ´©% q.L89åWTëY*èZš 644S077­EUš—YXšêé¢`j```añYriQQj^ 8 ÆOËljjEj2×ÍkùÉÖ-YÓ·µ­¬s]|a«>çÏk_Þd?±£nvfJm°é¼@Åô’%¯>ÚÚwX<û¢„W²õTá¢-’½~=q_ ¯ÙÚµ`YÄ„Óýz7‚Å+›»¦ñþÓVåy¸0lÆœÖGÒVû‹ÏêTÖ¹ùE¹þϼ”NQ‹÷}¿w[H+h’–’”ùÍìwÅÄ+ï>¿,ÿiGýôã¶ÉïÎÞòñ /vëR¿˜fÇô%ñۮش²‹µŸ9¼òâQ¹DÊÿžýÑod;”ÚU? ^Vñµ«Nºúú©vñK¯{~­ñçäÚ/ëtôî…Ã-Çé÷7¸ï“õ‘9ñØ8ã·Ô m¿i"é÷Œ™6=Û!y:ëIèÆõ†íÿ_°K-­û±,1{Îö)².oª —ï¶ý*Þ[«ç½mFäû%»s_Û-j(lå¦sÿÏùœ~gغŒ|K·~›¶#£ïµ¾øÓ·&g®]p_ò¸!—GrnM`ìv®^ÿD·l½ŸÞë>Z`.x‹“Yh—ý.Ž#ÁÇ8©¯Øw6O~¡—5“{Þ„U7¶ð807ì™õ…ûk4鹇Wñ»5þô öŒïùfÕŸ”ÛV¼ RÅ—÷mõ‰_A¢ëX¦¼OïjW;[Ã(Ï´ÿÇê¼uï,¥n˜ q(ï»°õÆA®æ…Ëü+Ì»·3z^›"_Õöûÿ‘Ù“O:†~ýUûI¯H$P†kR¦½ÏíÏ-‚©¢áúº×y'y=øØ'sµñó‰BˉêÿcÙWdtDÇ?û:`‡‘µªñ½w¦[K½ð_°È€BÀ5jÀ°0 9'5±¨$?7±(› ‘vxQendstream endobj 101 0 obj << /Type /Font /Subtype /Type1 /Encoding 273 0 R /FirstChar 15 /LastChar 15 /Widths 274 0 R /BaseFont /CDCDEA+CMSY10 /FontDescriptor 275 0 R >> endobj 275 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /CDCDEA+CMSY10 /ItalicAngle -14 /StemV 85 /XHeight 431 /FontBBox [-29 -960 1116 775] /Flags 4 /CharSet (/bullet) /FontFile 100 0 R >> endobj 274 0 obj [500 ] endobj 273 0 obj << /Type /Encoding /Differences [ 0 /.notdef 15/bullet 16/.notdef] >> endobj 98 0 obj << /Type /Font /Subtype /Type1 /Encoding 272 0 R /BaseFont /Courier >> endobj 78 0 obj << /Type /Font /Subtype /Type1 /Encoding 272 0 R /BaseFont /Times-Bold >> endobj 70 0 obj << /Type /Font /Subtype /Type1 /Encoding 272 0 R /BaseFont /Times-Italic >> endobj 68 0 obj << /Type /Font /Subtype /Type1 /Encoding 272 0 R /BaseFont /Times-Roman >> endobj 71 0 obj << /Type /Pages /Count 6 /Parent 276 0 R /Kids [61 0 R 76 0 R 96 0 R 107 0 R 115 0 R 131 0 R] >> endobj 157 0 obj << /Type /Pages /Count 6 /Parent 276 0 R /Kids [148 0 R 164 0 R 174 0 R 180 0 R 187 0 R 192 0 R] >> endobj 199 0 obj << /Type /Pages /Count 6 /Parent 276 0 R /Kids [197 0 R 202 0 R 207 0 R 213 0 R 218 0 R 223 0 R] >> endobj 230 0 obj << /Type /Pages /Count 6 /Parent 276 0 R /Kids [228 0 R 234 0 R 238 0 R 242 0 R 246 0 R 250 0 R] >> endobj 263 0 obj << /Type /Pages /Count 2 /Parent 276 0 R /Kids [256 0 R 269 0 R] >> endobj 276 0 obj << /Type /Pages /Count 26 /Kids [71 0 R 157 0 R 199 0 R 230 0 R 263 0 R] >> endobj 277 0 obj << /Type /Outlines /First 7 0 R /Last 55 0 R /Count 4 >> endobj 59 0 obj << /Title 60 0 R /A 58 0 R /Parent 55 0 R >> endobj 55 0 obj << /Title 56 0 R /A 54 0 R /Parent 277 0 R /Prev 31 0 R /First 59 0 R /Last 59 0 R /Count -1 >> endobj 51 0 obj << /Title 52 0 R /A 50 0 R /Parent 31 0 R /Prev 47 0 R >> endobj 47 0 obj << /Title 48 0 R /A 46 0 R /Parent 31 0 R /Prev 43 0 R /Next 51 0 R >> endobj 43 0 obj << /Title 44 0 R /A 42 0 R /Parent 31 0 R /Prev 39 0 R /Next 47 0 R >> endobj 39 0 obj << /Title 40 0 R /A 38 0 R /Parent 31 0 R /Prev 35 0 R /Next 43 0 R >> endobj 35 0 obj << /Title 36 0 R /A 34 0 R /Parent 31 0 R /Next 39 0 R >> endobj 31 0 obj << /Title 32 0 R /A 30 0 R /Parent 277 0 R /Prev 19 0 R /Next 55 0 R /First 35 0 R /Last 51 0 R /Count -5 >> endobj 27 0 obj << /Title 28 0 R /A 26 0 R /Parent 19 0 R /Prev 23 0 R >> endobj 23 0 obj << /Title 24 0 R /A 22 0 R /Parent 19 0 R /Next 27 0 R >> endobj 19 0 obj << /Title 20 0 R /A 18 0 R /Parent 277 0 R /Prev 7 0 R /Next 31 0 R /First 23 0 R /Last 27 0 R /Count -2 >> endobj 15 0 obj << /Title 16 0 R /A 14 0 R /Parent 7 0 R /Prev 11 0 R >> endobj 11 0 obj << /Title 12 0 R /A 10 0 R /Parent 7 0 R /Next 15 0 R >> endobj 7 0 obj << /Title 8 0 R /A 6 0 R /Parent 277 0 R /Next 19 0 R /First 11 0 R /Last 15 0 R /Count -2 >> endobj 278 0 obj << /Names [(Contents) 73 0 R (Doc-Start) 63 0 R (Installing) 94 0 R (Introduction) 93 0 R (Tix Class Structure) 264 0 R (Tix Commands) 161 0 R (Tix Object Oriented Programming) 182 0 R (Tix Widget Set) 110 0 R (Tix Widgets) 111 0 R (page.1) 65 0 R (page.10) 190 0 R (page.11) 195 0 R (page.12) 200 0 R (page.13) 205 0 R (page.14) 211 0 R (page.15) 216 0 R (page.16) 221 0 R (page.17) 226 0 R (page.18) 232 0 R (page.19) 236 0 R (page.2) 105 0 R (page.20) 240 0 R (page.21) 244 0 R (page.22) 248 0 R (page.23) 254 0 R (page.24) 267 0 R (page.3) 113 0 R (page.4) 129 0 R (page.5) 146 0 R (page.6) 162 0 R (page.7) 172 0 R (page.8) 178 0 R (page.9) 185 0 R (section*.1) 74 0 R (section*.2) 210 0 R (section*.3) 252 0 R (section*.4) 253 0 R (section*.5) 265 0 R (section.1) 5 0 R (section.2) 17 0 R (section.3) 29 0 R (section.4) 53 0 R (subsection.1.1) 9 0 R (subsection.1.2) 13 0 R (subsection.2.1) 21 0 R (subsection.2.2) 25 0 R (subsection.3.1) 33 0 R (subsection.3.2) 37 0 R (subsection.3.3) 41 0 R (subsection.3.4) 45 0 R (subsection.3.5) 49 0 R (subsection.4.1) 57 0 R (subsubsection.2.1.1) 112 0 R (subsubsection.2.1.2) 128 0 R (subsubsection.2.1.3) 143 0 R (subsubsection.2.1.4) 144 0 R (subsubsection.2.1.5) 145 0 R (subsubsection.2.1.6) 158 0 R (subsubsection.2.1.7) 159 0 R (subsubsection.2.1.8) 160 0 R (subsubsection.3.1.1) 184 0 R (subsubsection.3.2.1) 194 0 R (subsubsection.3.3.1) 204 0 R (subsubsection.3.4.1) 209 0 R (subsubsection.3.4.2) 215 0 R (subsubsection.3.4.3) 220 0 R (subsubsection.3.5.1) 225 0 R (subsubsection.3.5.2) 231 0 R] /Limits [(Contents) (subsubsection.3.5.2)] >> endobj 279 0 obj << /Kids [278 0 R] >> endobj 280 0 obj << /Dests 279 0 R >> endobj 281 0 obj << /Type /Catalog /Pages 276 0 R /Outlines 277 0 R /Names 280 0 R /PageMode /UseOutlines /URI << /Base () >> /ViewerPreferences << >> /OpenAction 62 0 R >> endobj 282 0 obj << /Producer (pdfTeX-0.14d) /Author (http://tix.sourceforge.net) /Title (Tix Widget Set) /Subject () /Creator (LaTeX with hyperref package) /Producer (pdfTeX14.d) /Keywords () /Creator (TeX) /CreationDate (D:20011129215900) >> endobj xref 0 283 0000000001 65535 f 0000000002 00000 f 0000000003 00000 f 0000000004 00000 f 0000000000 00000 f 0000008984 00000 n 0000000009 00000 n 0000076556 00000 n 0000000054 00000 n 0000009102 00000 n 0000000084 00000 n 0000076483 00000 n 0000000135 00000 n 0000010897 00000 n 0000000168 00000 n 0000076410 00000 n 0000000219 00000 n 0000015947 00000 n 0000000259 00000 n 0000076286 00000 n 0000000305 00000 n 0000016069 00000 n 0000000338 00000 n 0000076212 00000 n 0000000389 00000 n 0000031569 00000 n 0000000419 00000 n 0000076138 00000 n 0000000470 00000 n 0000037028 00000 n 0000000501 00000 n 0000076013 00000 n 0000000547 00000 n 0000037088 00000 n 0000000597 00000 n 0000075939 00000 n 0000000648 00000 n 0000041832 00000 n 0000000703 00000 n 0000075852 00000 n 0000000754 00000 n 0000045936 00000 n 0000000798 00000 n 0000075765 00000 n 0000000849 00000 n 0000048239 00000 n 0000000884 00000 n 0000075678 00000 n 0000000935 00000 n 0000052408 00000 n 0000000986 00000 n 0000075604 00000 n 0000001037 00000 n 0000059856 00000 n 0000001086 00000 n 0000075492 00000 n 0000001132 00000 n 0000062253 00000 n 0000001172 00000 n 0000075431 00000 n 0000001223 00000 n 0000001732 00000 n 0000001263 00000 n 0000002496 00000 n 0000001863 00000 n 0000002436 00000 n 0000002555 00000 n 0000001313 00000 n 0000074624 00000 n 0000002250 00000 n 0000074532 00000 n 0000074715 00000 n 0000002129 00000 n 0000006044 00000 n 0000006103 00000 n 0000006163 00000 n 0000003617 00000 n 0000002680 00000 n 0000074442 00000 n 0000003839 00000 n 0000003993 00000 n 0000004152 00000 n 0000004311 00000 n 0000004465 00000 n 0000004624 00000 n 0000004783 00000 n 0000004937 00000 n 0000005096 00000 n 0000005254 00000 n 0000005413 00000 n 0000005572 00000 n 0000005731 00000 n 0000005885 00000 n 0000008925 00000 n 0000009042 00000 n 0000009161 00000 n 0000007942 00000 n 0000006245 00000 n 0000074355 00000 n 0000008097 00000 n 0000072632 00000 n 0000073878 00000 n 0000008301 00000 n 0000008519 00000 n 0000008737 00000 n 0000010835 00000 n 0000010957 00000 n 0000010720 00000 n 0000009268 00000 n 0000072542 00000 n 0000015886 00000 n 0000016007 00000 n 0000016130 00000 n 0000015824 00000 n 0000016192 00000 n 0000013196 00000 n 0000011065 00000 n 0000013411 00000 n 0000013640 00000 n 0000013827 00000 n 0000014014 00000 n 0000014204 00000 n 0000014432 00000 n 0000014662 00000 n 0000014895 00000 n 0000015127 00000 n 0000015358 00000 n 0000015590 00000 n 0000020877 00000 n 0000020815 00000 n 0000020939 00000 n 0000018272 00000 n 0000016300 00000 n 0000018479 00000 n 0000018708 00000 n 0000018942 00000 n 0000019174 00000 n 0000019404 00000 n 0000019640 00000 n 0000019870 00000 n 0000020101 00000 n 0000020340 00000 n 0000020579 00000 n 0000024930 00000 n 0000024992 00000 n 0000025054 00000 n 0000024868 00000 n 0000025116 00000 n 0000023069 00000 n 0000021034 00000 n 0000023253 00000 n 0000023485 00000 n 0000023714 00000 n 0000023947 00000 n 0000024174 00000 n 0000024403 00000 n 0000024638 00000 n 0000074828 00000 n 0000028774 00000 n 0000028836 00000 n 0000028898 00000 n 0000028960 00000 n 0000028712 00000 n 0000029021 00000 n 0000027159 00000 n 0000025211 00000 n 0000027335 00000 n 0000027571 00000 n 0000027800 00000 n 0000028027 00000 n 0000028260 00000 n 0000028488 00000 n 0000031507 00000 n 0000031629 00000 n 0000031147 00000 n 0000029116 00000 n 0000031283 00000 n 0000072449 00000 n 0000034007 00000 n 0000034069 00000 n 0000033891 00000 n 0000031762 00000 n 0000036967 00000 n 0000036151 00000 n 0000037149 00000 n 0000036905 00000 n 0000037210 00000 n 0000036035 00000 n 0000034202 00000 n 0000036788 00000 n 0000039522 00000 n 0000039584 00000 n 0000039406 00000 n 0000037337 00000 n 0000041893 00000 n 0000041770 00000 n 0000041954 00000 n 0000041654 00000 n 0000039679 00000 n 0000074945 00000 n 0000043766 00000 n 0000043828 00000 n 0000043650 00000 n 0000042049 00000 n 0000048178 00000 n 0000045874 00000 n 0000045997 00000 n 0000045758 00000 n 0000043911 00000 n 0000048300 00000 n 0000048362 00000 n 0000048116 00000 n 0000048424 00000 n 0000048000 00000 n 0000046092 00000 n 0000050296 00000 n 0000050234 00000 n 0000050358 00000 n 0000050118 00000 n 0000048519 00000 n 0000052346 00000 n 0000052284 00000 n 0000052469 00000 n 0000052168 00000 n 0000050453 00000 n 0000054513 00000 n 0000054451 00000 n 0000054575 00000 n 0000054335 00000 n 0000052564 00000 n 0000075062 00000 n 0000056536 00000 n 0000056474 00000 n 0000056598 00000 n 0000056358 00000 n 0000054670 00000 n 0000058067 00000 n 0000058129 00000 n 0000057951 00000 n 0000056693 00000 n 0000059794 00000 n 0000059916 00000 n 0000059678 00000 n 0000058212 00000 n 0000062191 00000 n 0000062313 00000 n 0000062075 00000 n 0000060011 00000 n 0000064506 00000 n 0000064568 00000 n 0000064390 00000 n 0000062408 00000 n 0000066372 00000 n 0000066434 00000 n 0000066310 00000 n 0000066496 00000 n 0000065224 00000 n 0000064664 00000 n 0000065392 00000 n 0000065579 00000 n 0000065760 00000 n 0000065945 00000 n 0000066126 00000 n 0000075179 00000 n 0000070409 00000 n 0000070470 00000 n 0000067104 00000 n 0000070347 00000 n 0000070532 00000 n 0000066988 00000 n 0000066579 00000 n 0000070224 00000 n 0000070659 00000 n 0000074268 00000 n 0000074244 00000 n 0000074039 00000 n 0000075264 00000 n 0000075357 00000 n 0000076665 00000 n 0000078281 00000 n 0000078320 00000 n 0000078358 00000 n 0000078534 00000 n trailer << /Size 283 /Root 281 0 R /Info 282 0 R >> startxref 78780 %%EOF Tix8.4.3/docs/pdf/TixBook.pdf0000664000122200012240000104055607426334145016171 0ustar jeffhjeffh00000000000000%PDF-1.3 6 0 obj << /S /GoTo /D (section.1) >> endobj 8 0 obj (Introduction) endobj 10 0 obj << /S /GoTo /D (subsection.1.1) >> endobj 12 0 obj (What is Tix) endobj 14 0 obj << /S /GoTo /D (subsection.1.2) >> endobj 16 0 obj (Getting Started: the TixControl Widget) endobj 18 0 obj << /S /GoTo /D (subsection.1.3) >> endobj 20 0 obj (Accessing The Components Inside Mega Widgets) endobj 22 0 obj << /S /GoTo /D (subsection.1.4) >> endobj 24 0 obj (Another Tix Widget: TixComboBox) endobj 26 0 obj << /S /GoTo /D (subsection.1.5) >> endobj 28 0 obj (The TixSelect Widget) endobj 30 0 obj << /S /GoTo /D (section.2) >> endobj 32 0 obj (Container Widgets) endobj 34 0 obj << /S /GoTo /D (subsection.2.1) >> endobj 36 0 obj (TixNoteBook) endobj 38 0 obj << /S /GoTo /D (subsection.2.2) >> endobj 40 0 obj (PanedWindow) endobj 42 0 obj << /S /GoTo /D (subsection.2.3) >> endobj 44 0 obj (The Family of Scrolled Widgets) endobj 46 0 obj << /S /GoTo /D (section.3) >> endobj 48 0 obj (Tabular Listbox and Display Items) endobj 50 0 obj << /S /GoTo /D (subsection.3.1) >> endobj 52 0 obj (tixTList -- The Tix Tabular Listbox Widget) endobj 54 0 obj << /S /GoTo /D (subsection.3.2) >> endobj 56 0 obj (Display Items) endobj 58 0 obj << /S /GoTo /D (subsection.3.3) >> endobj 60 0 obj (Creating Display Items in the TixTList Widget) endobj 62 0 obj << /S /GoTo /D (section.4) >> endobj 64 0 obj (Hierarchical Listbox) endobj 66 0 obj << /S /GoTo /D (subsection.4.1) >> endobj 68 0 obj (TixHList -- The Tix Hierarchical Listbox Widget) endobj 70 0 obj << /S /GoTo /D (subsection.4.2) >> endobj 72 0 obj (Creating Collapsible Tree Structures with TixTree) endobj 74 0 obj << /S /GoTo /D (section.5) >> endobj 76 0 obj (Selecting Files and Directories) endobj 78 0 obj << /S /GoTo /D (subsection.5.1) >> endobj 80 0 obj (File Selection Dialog Widgets) endobj 82 0 obj << /S /GoTo /D (subsection.5.2) >> endobj 84 0 obj (Selecting Directories with the TixDirTree and TixDirList Widgets) endobj 86 0 obj << /S /GoTo /D (section.6) >> endobj 88 0 obj (Tix Object Oriented Programming) endobj 90 0 obj << /S /GoTo /D (subsection.6.1) >> endobj 92 0 obj (Introduction to Tix Object Oriented Programming) endobj 94 0 obj << /S /GoTo /D (subsection.6.2) >> endobj 96 0 obj (Widget Class Declaration) endobj 98 0 obj << /S /GoTo /D (subsection.6.3) >> endobj 100 0 obj (Writing Methods) endobj 102 0 obj << /S /GoTo /D (subsection.6.4) >> endobj 104 0 obj (Standard Initialization Methods) endobj 106 0 obj << /S /GoTo /D (subsection.6.5) >> endobj 108 0 obj (Declaring and Using Variables) endobj 110 0 obj << /S /GoTo /D (subsection.6.6) >> endobj 112 0 obj (Summary of Widget Instance Initialization) endobj 114 0 obj << /S /GoTo /D (subsection.6.7) >> endobj 116 0 obj (Loading the New Classes) endobj 118 0 obj << /S /GoTo /D [117 0 R /Fit ] >> endobj 123 0 obj << /Length 346 /Filter /FlateDecode >> stream xÚ…R]Oƒ0}çWô’qéíw}4ê¢&ÆÞŒºuŒƆÌìç[(sd˲4)‡ËáÜsO‹„ú…‘‚‘‚(®Q‘y! ë›г¯:7¤à_!¦-X«Ij$(m.ó/kHïlhu›GÙׄQPŠ“|ÙSòÅ{œ¯\’2Iã<á2.÷á嵩‹æ³ªÊu Ó]¹pÉGþÔË .T'ãça»侙RAq,4mêÝfÒýÝçÿ΄¡ü’ƒ¶¶3êM1Þ¦Á² £^Ë«¶ÝÜdY[îá§Þ5 ×ñÜ-ë ÒØ%(cX»ö´/ æý_ß0L’©ÊDÇ'[røLƒÂ6â¬ÇÃ×²Ç É]Í"2;ª¡ö1iæcbÙñ‘ ‚•r<ßKÝùÿí6W}¹&$Éìd”"œNF» åµÉÐúÌɵ8÷€gÑY L]Nî{(¤*endstream endobj 117 0 obj << /Type /Page /Contents 123 0 R /Resources 122 0 R /MediaBox [0 0 612 737.008] /Parent 127 0 R /Annots [ 125 0 R ] >> endobj 120 0 obj << /Type /XObject /Subtype /Image /Width 32 /Height 32 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 128 0 R] /Length 70 /Filter /FlateDecode >> stream xÚûÿ|/Gõßw;œà§7ÿ è»NÔ?õ3€ŸÞ|‚î©‚¨_üôæƒÝÇ'úÑ¢û?Fœ}endstream endobj 128 0 obj << /Length 42 /Filter /FlateDecode >> stream xÚíˆ 0 Â<=§ù™k=c4 F%¡ -j¶Ì¥•Z:Žã@:5endstream endobj 125 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [231.718 490.263 374.947 510.188] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net) >> >> endobj 121 0 obj << /D [117 0 R /XYZ 110.854 636.116 null] >> endobj 119 0 obj << /D [117 0 R /XYZ 110.854 611.21 null] >> endobj 122 0 obj << /Font << /F37 124 0 R /F40 126 0 R >> /XObject << /Im1 120 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 133 0 obj << /Length 1496 /Filter /FlateDecode >> stream xÚíZËvÛ6Ýû+´Bñ~tW;qâ6±sj¶^´]Pc³¡HŠ>Iûõ_R"ÌÚ¦9ZH²!3wæÎÑêš dt ñÉbu€&ÕëˤùôËÁ¡ðÃ1z9PŒMüÏåÏýåÓ£³Sÿí©îͰ€N#ï/ÿ烷¾¾Lu"%`”èÏ;®Ý,œ5+g˜˽@ÀÊÿf—“æã¯ïÌ/àdVn¨\Zn‘ò £í-¦I&ùÚÞ™þ9ò¾éu˜ŽHµ°ÞjvcnÜò òf¨ðÉI’g’Óty³È£4±7"1ÈÁCX) X½p÷m±}ýáp¢=‹( ”ï±£cJKœ^\¹FZŠÖÕ»ï6¾µL"€9X¤Âè–=·ÞŒi/>ó7ËAXh;%Þí¢ÝþháË€Â%ÁÔa<< pïÂ<’Ë*Îó ËÃåÞŒ 8ͯ­¸(r/KãêoÕ³¼ ó–7X°~ô¶¤7b¬­#"•bô^€dw’Ô@þ´X„ëµÒoÀ;JW×iRrfùý$YGËúC±é¥Ç¦j‹a1×UEöÄ€Pâá@µv¥0àºf LŒ•y´,Iu†eÛÔk¡Pg¢IÀÕ<=L[¡¾ êߺ’'ÄÐvöQ¥=:ˆFi]¬Zóðp²NßbËó0yY"‚uV —´ÂŠ¿€êj‡.Ö‚D ÜÇܨS(DwÕ‚¸Ö‚EA ¢¤Éá‹Bv“'ÒÑE˜CŠbŽ&¢W¢¶.dRS!ÈØèÂ:~OÓ<£÷ÍܰFñø‚yt¡Š ´C—ìóÅN?%*—ŠF¥xÑ‘´7DpKVj$Ö5¼ q]Ï iÒM[0ú¢ØëlŽ$ظ9ü¯ÈØ$±]¿mÈùÝCMõ¢`wuÄé©å}EÐŽW‚y“®7«UYGav]>IÖ:«agNw0&\Ž cÏýœ€G¸¢FðC,Mš†é4¬Ž·7ºª#+µ‚ÌáœK8S¯[H øÿ»9)€`¨·¼õ=…þ³~endstream endobj 132 0 obj << /Type /Page /Contents 133 0 R /Resources 131 0 R /MediaBox [0 0 612 737.008] /Parent 127 0 R /Annots [ 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R ] >> endobj 135 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [109.858 571.295 194.663 581.668] /Subtype /Link /A << /S /GoTo /D (section.1) >> >> endobj 136 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 556.874 213.313 567.091] /Subtype /Link /A << /S /GoTo /D (subsection.1.1) >> >> endobj 137 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 539.959 345.058 552.645] /Subtype /Link /A << /S /GoTo /D (subsection.1.2) >> >> endobj 138 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 525.513 395.963 538.199] /Subtype /Link /A << /S /GoTo /D (subsection.1.3) >> >> endobj 139 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 511.067 331.693 523.753] /Subtype /Link /A << /S /GoTo /D (subsection.1.4) >> >> endobj 140 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 496.621 261.971 509.308] /Subtype /Link /A << /S /GoTo /D (subsection.1.5) >> >> endobj 141 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [109.858 470.382 226.201 483.038] /Subtype /Link /A << /S /GoTo /D (section.2) >> >> endobj 142 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 458.243 222.615 468.461] /Subtype /Link /A << /S /GoTo /D (subsection.2.1) >> >> endobj 143 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 443.798 226.716 454.015] /Subtype /Link /A << /S /GoTo /D (subsection.2.2) >> >> endobj 144 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 426.883 310.699 439.569] /Subtype /Link /A << /S /GoTo /D (subsection.2.3) >> >> endobj 145 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [109.858 400.643 307.136 413.3] /Subtype /Link /A << /S /GoTo /D (section.3) >> >> endobj 146 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 386.036 361.736 398.722] /Subtype /Link /A << /S /GoTo /D (subsection.3.1) >> >> endobj 147 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 371.59 224.025 384.277] /Subtype /Link /A << /S /GoTo /D (subsection.3.2) >> >> endobj 148 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 357.144 380.863 369.831] /Subtype /Link /A << /S /GoTo /D (subsection.3.3) >> >> endobj 149 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [109.858 333.188 235.502 343.561] /Subtype /Link /A << /S /GoTo /D (section.4) >> >> endobj 150 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 316.298 389.722 328.984] /Subtype /Link /A << /S /GoTo /D (subsection.4.1) >> >> endobj 151 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 301.852 396.751 314.538] /Subtype /Link /A << /S /GoTo /D (subsection.4.2) >> >> endobj 152 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [109.858 275.612 283.967 288.269] /Subtype /Link /A << /S /GoTo /D (section.5) >> >> endobj 153 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 261.005 301.254 273.691] /Subtype /Link /A << /S /GoTo /D (subsection.5.1) >> >> endobj 154 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 246.559 472.642 259.245] /Subtype /Link /A << /S /GoTo /D (subsection.5.2) >> >> endobj 155 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [109.858 220.32 307.663 232.976] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj 156 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 205.712 396.274 218.399] /Subtype /Link /A << /S /GoTo /D (subsection.6.1) >> >> endobj 157 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 191.267 279.652 203.953] /Subtype /Link /A << /S /GoTo /D (subsection.6.2) >> >> endobj 158 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 176.821 239.304 189.507] /Subtype /Link /A << /S /GoTo /D (subsection.6.3) >> >> endobj 159 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 164.844 308.702 175.061] /Subtype /Link /A << /S /GoTo /D (subsection.6.4) >> >> endobj 160 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 147.929 303.694 160.615] /Subtype /Link /A << /S /GoTo /D (subsection.6.5) >> >> endobj 161 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 133.483 361.341 146.169] /Subtype /Link /A << /S /GoTo /D (subsection.6.6) >> >> endobj 162 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [1 0 0] /Rect [127.791 119.037 278.839 131.724] /Subtype /Link /A << /S /GoTo /D (subsection.6.7) >> >> endobj 129 0 obj << /D [132 0 R /XYZ 110.854 611.21 null] >> endobj 130 0 obj << /D [132 0 R /XYZ 110.854 586.674 null] >> endobj 131 0 obj << /Font << /F37 124 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 169 0 obj << /Length 1629 /Filter /FlateDecode >> stream xÚ½XYÛ6~ß_á·J@¬ˆ—޾µ9𶛉hû@Ë´—-’œ]÷×w†CÚ’­M}(°†Ãápøq..›¥ðÇfŒ¥I¡ä,YÂX6«v7lFŸgúõæÇÅÍó×"ñ¤Tj¶X»å‹ÕÑ‹÷ï¯Þ->Åsžåy±ø¯Å/7¯ †vE‘()€~DwœÉ9—I™:[ÒD¹Ùv3 äÇŸN+ÒÙÜäD‰2›±<áldâ‡6fEdÖº2—Ɔ4áiö-Ûp'žˆ\>ͨ<ÉùØ(™ø ŒúaÙzM¥ÑâÎvD½ÕõAo'd9‚‘ŒÃΓ7FÛ‰4v´£¯¿3HѾm6­ÞíLû]¬Tä§7»2^²­È£E,Tdh°µËV·Ç8SQÏeÁ£Ÿ{/¯?Ç,Œ×xlAOsØÜ­¥L$vw½ÙÏ—Ç9~.É£þÐ7­Åp)"íÅ 4 ‰•]Ç\EkÓšº'±{»Ú˜¾£y]¯ˆXꪷMÝy]1O£/¸TÛ­^n½:[_èG¾¶v|~•ft~·]CTÕÄðûLÛï®Á]ïqÄÀ¼omoˆ¬Íi^ς‡ÎÖâÓ•q¾ü\÷­­;[ù­šåߦjñ¤ó‰²€™|„ÈOÞ@[ˆ  èM»Æ‹„°ÂæèȆ¤uU5»½®ñdG\ê!Ò7rU&e©‚O¢‹9;aõG÷aêÊÐnçÀ¸pj$\„WãœX÷™‹&A|x¬ªÙn»jô45kü¦Á‹ÙЋÓA„°h¯7¦C_Θ÷å4Z™®jí’|™ÁÕn/´5{ïUÈuÞæ¸0ß =¸X7ukJ äl˜'‚e88»±òŠ‘8¹q2‘DJH)ZSGÔÈ`/›ê°ÃXû?r—eôfñö–¶^…­?ÌWpÑ2 AæüÙÕ6;¸Õ‹|×üNî9´•üÏ4å[ãa,Ž7\‰£é³kVSqdQKØ6ĺs?d„KÞjp˜{àwýnën+™RåH›•ÃÓâ(p)·8ê:ƒ!{ ®GÔ~µö’èÎá¸g\p–Oá­ tyeÀ±©!9×aÅo®H­6®{é» ˜Jp LøÕÏ`U9.`U†lÜ:Ìy™%¥ çSný¹¸KÄãQ@ËQéšXKCŒCçŠ4 5^„ì&f¨5’5LÀÝèYœ@wäÆ4;Ó‡æ:³áä"“n&“\…⼸µ]OÂc$‰GöñÒvû­>â›F³›Bšj&Hƒ½C¤y@ ½ÄdxØê–”nÁeó@³Š¿†”òÙð”¾h:ãQŸ»:Y‹M4ZûŒ6¹¿³Uèf[ß!û«Ëã©wMÒU]„ÛòÝól“S`‹ƒ4õ;M±‡g=؈º&«Bl¥6GD·œkÌ‹<)D6ÀœåãH ºWÐADUk´k_Sl¬IÎBh¶Õi[éî„æº¾…âÀ)_Ûš\dzð’‹M6…lzqQ¡Õg,zO÷.âPBO˜ù@%ÉUUòVz|L œÁÅ¥l€0û%h¼ª|š„¯CwöÏ¥aïƒf`Ûé1DÕÈï8<Öèä::õð }C( }zɹ‰­î:Ó]´  ÿTcÏK™¨\}«{øæbþÎd·endstream endobj 168 0 obj << /Type /Page /Contents 169 0 R /Resources 167 0 R /MediaBox [0 0 612 737.008] /Parent 127 0 R /Annots [ 170 0 R ] >> endobj 170 0 obj << /Type /Annot /Border [0 0 0]/H /I/C [0 1 1] /Rect [434.1 383.795 554.088 396.481] /Subtype /Link /A << /Type /Action /S /URI /URI (http://tix.sourceforge.net) >> >> endobj 163 0 obj << /D [168 0 R /XYZ 110.854 586.674 null] >> endobj 164 0 obj << /D [168 0 R /XYZ 110.854 560.706 null] >> endobj 165 0 obj << /D [168 0 R /XYZ 110.854 430.544 null] >> endobj 166 0 obj << /D [168 0 R /XYZ 110.854 340.98 null] >> endobj 167 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F40 126 0 R >> /ProcSet [ /PDF /Text ] >> endobj 177 0 obj << /Length 2054 /Filter /FlateDecode >> stream xÚµXI“Û6¾ûWhnTU‹C€«|óšê¤b§b¥\SÉÐ$"" —Øýï󀢺Ùé¾LñÀ‡‡àÞ ˆUŸX …Eš¬²8 …ÈVeóJ¬ø;­<õÓ«·»Wÿþç nÓtµ;ÐðÝþ÷@¬7"Š¢àöÓî×uŸßÿönwûùÓz#å¶È¹þïîÇWv0-¯E˜&1ÐO¬å7^r#“p¶(L©·;®<ùëÓˆhµ!€$J“l%òPŠeÈíЭEØýXƶ‘ÂtQ(£ì9 ¸¬ ãjêšå¤Å˜vÚpÙ |½ ¯5¤ió«‡5–¯ÿÀß5SýÐAÕ;v˜_I€B¥­fÕF£ÚöI/â5†9-î‚UëCwÌQn¡Äº$^h€ùÑX³×®XRüƒC®\I¦&è(S9K„™Èƒf-*¥ÆÎ-'6 ­|ìR•Ûtq;3nì›1#Šf¦ò)÷’¦€—DÌ!À[òÕæ_ëMž$Á›zs=VÓ„,qñ1dƒ-DÖéØ BTÌ r.„-ðƒÃX3}1§Dr>‰—cô`¾\ÌvÌ=t¶a óM­(379¸ ×ÎÅ,PbÃz õZ©ŠŽÆöR¬DäÐÖ‘(-ê®i8Â"§…hŠñéI8–‹QdÓhbÓ³‡c?oÙ—óÄÖîôzåGSë/ºÖåðÖ~ǰêyg›;;oÂÑ¢‹$qðG”F*<… ce”_ΦQ` `"ÿ`Ê}éχ|WÔ¿‡+H]/e|uWãQË|fäi"f]ì‘‚h]ì9КÙ¶Ø0/SqƒÏ¦ñýG >ŽàNFD ,ÄØá´Lò SíQ3“óp~U¯¿Æ¹dðÉú­µ'J`ÿ8Þ©6Þ/ˆ_µzÏaÕWa3‰Ÿßß.õÍA²cë¡|2d]‚¶Œ3Hø¢ ÈVóäÔ¸x’Œ§kOÆ ƒF²Ë¥±¯Œªô·,XD—Ukþ7R¥ÆöÉ„ÿàÖƒuÙiÅ5QœOJÎgZË36ÄënXf¼JÁ, £ºIàr·¥Øº‚ÿ¬0(å¼á…;ªOK±KK@×™»0!㿬¬eE1€ñÖ¤ðg¡bàK\<+Ȱ ’Wå7ÇÂUåŒA—Ý0¢ô×…¢+ÒèqÒœr!žN>|˜pÅ‹àZ8=P=ó@!ã0òŸ¼^ÊscÖMÄ–,&)’—¾åàÉ<û–#Ÿ}ËùJ=¨n¿×.ùGTàþÿ_r>ÓuÏ—Ø@ø;2‚÷7|¯¢{.°Ø_³ÜßLs¾nú°Èôƒ*}v/(xÚh6ÇÞý ©ÄÑ 9l17Ò+ »@ãMÖúËt¶ÅLq]:ÅóÒ)¦'KÓö¦ì'1ŠæÐÅoMpÍ„mB  `MöNؚ̦^´œÏ<ÐR’…Qú¬šž}Áý¬:Ç!endstream endobj 176 0 obj << /Type /Page /Contents 177 0 R /Resources 175 0 R /MediaBox [0 0 612 737.008] /Parent 127 0 R >> endobj 174 0 obj << /D [176 0 R /XYZ 110.854 636.116 null] >> endobj 5 0 obj << /D [176 0 R /XYZ 110.854 611.21 null] >> endobj 9 0 obj << /D [176 0 R /XYZ 110.854 586.674 null] >> endobj 171 0 obj << /D [176 0 R /XYZ 110.854 560.706 null] >> endobj 173 0 obj << /D [176 0 R /XYZ 110.854 117.89 null] >> endobj 175 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F40 126 0 R >> /ProcSet [ /PDF /Text ] >> endobj 181 0 obj << /Length 277 /Filter /FlateDecode >> stream xÚ…‘ÁNÃ0 †ïy ÓC²8iÒäÊÆDAÚ4Ä8L[·U0MkA‚·Ç]V„FåËoç³-ÿAPˆJz›ƒ3N":XíBŠWèÕ»Šl45á2X qsjë'Ž™@¥/gñ>ËŸOƱœÏ2¡uðŽ›ì%Þ²ëHcÓFã½´¹!}aWŠžÁHmüAæ:P[Am;Ž HNÌoM¯Gfƒ9%.×}qTî5LlÁ`ñ3Út¶¡½t:ì²!Ïʪi½ýh*²À*Ž©„)‰»suü¶lÛ$oêªY6«]fùWª6g:3–ן)yìÜ­×Ûê½ýk©( ièb¡éÀAŸê¥NwüþÔ7Lqw!endstream endobj 180 0 obj << /Type /Page /Contents 181 0 R /Resources 179 0 R /MediaBox [0 0 612 737.008] /Parent 127 0 R >> endobj 172 0 obj << /Type /XObject /Subtype /Image /Width 593 /Height 642 /BitsPerComponent 1 /ColorSpace [/Indexed /DeviceRGB 255 182 0 R] /Length 2920 /Filter /FlateDecode >> stream xÚíP×ÀÍ$Sü#ÑIÿh%R¯U&Î4Í ¢„èµS«Mkãäâ'µS Vð`R®b`Û2S´þÖ[І™š™N˦^wOXqubÁTm2=Ê­çÚÁB*9e¼CîußîÞ/*°·ï+ÇÛ?˜9îæÃ÷ûö»ï³ïñöÝ¢EÉxØÐJ}Ô¦!õpê‡ÊŽmH„ÆM·ëÿGŒ}¡‰Ø÷„YCm|L(!Y„EÕC1¨M- ‹m%"$ŶUÙR˜(êøõÏýÛ\TÞ÷¶ÌÔ__Y”†ÐÞ§Šòжkï.z!G@ò¡€9TÇ:ÎW¬¿–pTËK½ÿwE¢ÚÐþñâΊÎ3(é§œï1¨’R¯¸Sˆ Îq9>öÏœ`¦­0ª^o«(*•ŸóøXÎ͘‰êØÚSÿ¹*”ázþëýÛ#(‡†2U|]I¨«ßÎ-Úö sm5Êâ5(Á]8D¨Má4çy5*°^T‚ÓÄ@MjvÔ¤b ¨yˆº:þc³£¥(Hª–ÅMˆÂò’ŸykËIn7yT}ï畬ceÉQò-eÏ'®,ÐVï+¥=î,@TW3+³sÓÏ.ÙM«}öP€½(5­«eœ?ÜÑÇKä½hЯ žAÆY¿º¾n9/‘‡síÜq—ÈÃUå­çñx å?àäwBDÕq~Õɺ+ýÛiµSã¤:* :8ÑQpÁR ‡á“¨=‚‹*% ¢Ý~ý`K4Á40n·˜ #ø}F®**CRâ(m®oÿ±}½YGއçú˜¬¬®ÞÓÖÚªš-=ÜT á5ªj‡Ëé±–à;jlúž«òÈÖPŬìlâ#¨—0ªÇÚ\|l«óÂÙp‚µÙßèÌ=MP¢e(qµÛÈQñÆaà®A"”âà´´ÿ@ Ü\§‰$E¶U’E‘ jÔ› T’B(Ý8¿îŠªÚs“Cù P/Á¡j³ÔÉÐjŸU5•EÍ9ês 5P(·$*@òºtóVÖf$ªcÞvñ L‚—{o‰,JôŠ-0¨G~¹m9\]À¡¨¼¨q¨q(*ekè_ „¤`”q:ÖWþö,LTîŒÁbM8«nìA±ÁªÆÔS[Wn8”I«‡Ê‹–è‚BÕ"a´µFAãwÈX^?ËZó¥«VCDU)69ò›Ê P_p€ ²UçAýêe×—Ïgþ‚«+@Ô8CåECûöAoC•I(lœ—o^‡@áU¿ó¶A¡þÛ †*ÁPGº P]¥>Š>»DQɆ¢«î)*ÕaC Ø^¸x·%}PTwY¶õ©Ë%¡ün7ê¯éÚhµÏ2Š®º§ò¢¨¹F}€B‹ÃtȽ®¯z$–—?«ó{§6\? ñȘ§ñ'­Ö ñœ×™úâV× Êç•â9¯ŽÏosW¾²}­v*¯ù`œŸÇ¼J#;ƒ±S AŠš¨ÛhM,jx¼Û2Ê‹øX”R-[BaãtåFPxžIyu¨Üf1ªþF£b4ð7•YD}‡RЬ£¼=ñ¨|ë¨öWžE _ÛR¾ ®¸MAT|/Êô¢ñ§‰ÔGÅ7{Üä´-þ͈Š/†‰i ‡¢’5ììF5šÀ4TÇý%Ñ0S·ÿSÚ;¦PŠ]F%!9Œâ”=ÈÏøâör…fFay½7ôæ†~ŒÆÿâ;[øö¹®Õ¾¸ýŸZ_Xa&*·£±>?U—XágË‹qTrdÿ'¾Â{Ù Šs4¾AĊت½ÊØÿ‰/2‡Zçp—ü0ÚVbQç/1PÆþO®|±ÚÌ|{KyzæÖ0êxæ’ƒ]…™u”±ÿSÚæ=›ÌÕ•R]Mh¿Å¨hYÝ2‡ê›„ÒWƒÄ£6U» wá$ˆš®•ëE§ëÍe8MÌj:ÑË$Æ™„")Šš5Ô°Ú¼9JßÿIu’9ã0(T>JßÿIu’9ãìÎ^Òxòô#P·Ãû?©Nš¥âF½®1ßý¨;dcÿ'^u’)”¢¢çLÒ÷â@‰S¢ðþOª“L¡îõç>ýÚ©ï>¥ïÿ¤:ÉJSSŒ&¢¿ðáúÌ¡ÆÛŒ(d5õp)1Ô´Ã¥„zQ:×7jÒžNP£TÂI§Dê*=‚‹*EìC#ö«Ï–‡EãÝ#iCŒ”ˆaWô€@!ỷ+s}Ý/䵺P˜nÓå5ò·®¡Ol³Uÿ}‘u|±€ô釗8A{‰%ÔX@t9vhë#TT¨ûÌd,ÍõDw©¼Ói mœß[1h)ªŽUYégä7r»õï]ïÜòÆÓûë%’f¼)2[¢!;1 ÁMÐ%p×7jÒžNt®h‚Žä NLóYŠJV6Îý•è+ÌH‡`…£8Å@cY¯ÜQ†q ûOtBƲl»µ¨°qv¦UP£Rð#ËÅ­r3c …#:«ø0jïEÙm…#:¢:WÂ;x‹(lœÝ+ŸÉ0PdÞxâ|q])p%šŠ¨¸^T!êEã^)pšH`[Ñÿ(Í8ñ·~h¨šË-£4ã0ø[?4T/bK¨°qöãoýŽªÆñ½€åC`œ*ü­ZT>–qªx–7Pî*Þr[aã8DÖˆª×åC`œg2–ì6Îàï±|hµSãPyÑj_òZAÕ\^J$¯±fm‚NëCÍÖPay]:¥~ÎWk'‘¼Z{ÂQù\—þD$¯9‚r·ÕÉ‹DÕën³ìAm‚.ãtCø ž_ÖI«Ê‹‡¢’×8‹ƒã 4ã4áõ5ªÑ**lœ¶þ­†q†\vËQiÆi{ Ó†òWË(Í8mªˆ±ÞVØ8mî²0ªÔz³kÆY¶¶Ü@µ¯±CÔÙ6ß‹"8ã 8M¤" ð?qñÅ@Qó…å5¼y×J“׿¡ÂëölßÜ@¼ŒD“×·èkô5G½,Ikr4[IðÁà9±!šàØ@Å€óEGƒ”â¿ì¢Q)elsE“C°’ ríúß»cŒ“½6{eæ‰nz >ÎãWÐQãP=íd’Zô…¨;Õ'ݳ¡Zd·$z‘‘c ¢A‘`Iô]«_DQÑëžk9"æºEáÏ?¨Œð{Z9o»§9q”*zå­¾p‚%ò9½^Ïq+(E,öÇÃ}|ŽèõXJPé¨ùZ êö?®¶Ü©ÍuY‰*¶D ¦,ÜìÇäσEE˜ ØRy7m¸ðP€Íž$ÕNQ¨°ºP u‘¢Ô·Ç uD5f¨ ¥êAéê‚8ƒ†ºhµÏ"ŠÊË_ÌÁ?ÈPÁÇ“`(iÚj%8z¡wmhx;y‚’‚¤24PFžàxÝk_‘övÊŸõ3¤ †ÚêK¥­²ü:q‚¡6~Ÿ´¯W*%?ƒU|±T<8àp'ˆª2N[vdøÚf†^ƒ3AEí<‹´&<^ÿDCQEQ5'#z:‘BQEQ©†JÎã{þQ[endstream endobj 182 0 obj << /Length 43 /Filter /FlateDecode >> stream xÚc``øÿÿÃáÂÂÂׯ__¾|ùóçϵµµ“&Mb£`¸rYÊendstream endobj 178 0 obj << /D [180 0 R /XYZ 110.854 636.116 null] >> endobj 179 0 obj << /Font << /F37 124 0 R >> /XObject << /Im2 172 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 187 0 obj << /Length 2116 /Filter /FlateDecode >> stream xڥ˒ã¶ñ¾_1·PUM|nnÞd]“¸Ö.G)ì ’! $wvòõé ŠåuUJ4º›@¿»¡ø)‚_üÇQXféS.ò0Žó§º{?ñïåÉC÷ÝîÝ·Eìa•eO»}¾k~ âÍ6Ž¢(xþ´ûy“FÁùç‡ÝóŸ6Û$©ÊKݦ–±ÃTŸ-q¶¦VÃÀ¸×MfjÝ—{º¦¸©g„Uµ9özÔ¦ç¯ÉL@OŠFP†ß¢(©§vÔjXH“Ô¨³‰3Ã+ž‹ˆLðÙȲÛ°×Üi´ºt=0Q÷u;5Êí:ÙãIo¼iax®Mã>fý°J6š¬›=äM§pݼŠcÌwW´Ì‰«ûnÄ AXñZKk5u<šµ˜éÚPPÊŸÃÛÞŠÎÊÓ0Ø+£0#´=>yðçï¬Y( "}[Õ@C^µ÷0q þ{5Î þc1Tƒ5#¾JðÝ&.AÕr AãÔû…ð”e÷'a'_PÜ*Ì£t7Z™~²}Ë Tñj×€bFÂ冓댓åa=ÈN·ZbèŠÜÇ3àw/¼¢ã°§²ó„ïÊÀ{¶ÌX$-y¨ëÐP°Ç`M]aN–J6+í6á‹‹c$[ãÍ>§™O ÇÞÌE+Aû‚‡×äX ÚÏìÍ\`VF³€j”:3ê|Ò­Ìù´¡.ŒDŠùkî9ÄóKAAÝó"h©¤å˜ŠLÆöc‡¼™´òÔµ˜µœoÖ/ìIå¾ÈîŒõÔ£#»3ý0Z9zÂÉÓ `têi@Â=¹29õ2ôZõµûµdN^çÆùºñþQÓ†ÑÕóS2`" &Ê*ØCÏåy…Ðt¬ÐÀ­C]&*àv£`¡.[ù6¸ÏxùŒÅF¶6¢ÀOl÷ ™¦ä®x/-ߘgªqQˆ‚:0iñ0É›éì¨þ€˜‡*þÈ^Z÷èÞiÁ)L?P.…“±`×!B6ÿž(, _«yQ·Ø¿õpRÂÙ-8—ÚÕåa‘¬HÆð>*Eòþ &¡} Â§ä\+åÿUÓ¤øµ1‰Â¨,ÿ…ÄÍ ždãç–Pnì)óë 3¿L`CÞÂ`*Ý'’—ÛxGÜe´B6І³ªõamT×¾3š3¾L†÷\Øà}:«#2x æKï_ÝšƒÂV¾¾)+q·må^9ÊLxï(üÂPy öZ„"®CEbqÙòp¨}tãttÄéw£Å¨%ü0b1E0Y©Ôb±H—츼Ã<¾(uˆ`Ë5#Ó+¦/®L_ä~¬¨õ¨ÉÀéNQ­ª/ìî®~êö¤*n >h[‰R:³Pî]æÂÁ7,³œt.³ªŸvæ×‚ïlµ™|u yÐø-Ê¢ú8YwH¼M?0à'iFÊ 1S÷Š îEšÏ·MËØ×ʛȋó(LÁuœN.¬îý™a”VŽ‹ÏåË(î±ý)'Žd|-/L9HMó‹{›$œ˜-TóÅm[äeö½¸yVeâ¥ÅP¿—Uˆ0-Ĭ)êBVD¥€ƒt7u¼á«Šú%âÁ€ˆW÷%¾¨8‚¢8L³¥Bõɘ:X™=R¨3”…t¿®PVdw •· U^¡—^¡ê¢X¡êV¡Ò)T^+”„y"V€ÊcˆöfÎ#ýÓ÷´ÎÒH…–_…nBþë!Ç®FVN(ãÓÏÿfz~Õ9"+‘Ò*ð©d«Ç7¦6ºy>J2® †èÝ>I-?ZÝé‘)ukDîï•5øßô³ÝƒªÂjN _.xCGn½ˆWè¤çò‡7»Á(qá‰(§;'Ž€Êš&‹RES]–,Ч@¤¬4•e =zÉÚÊþ/ü½HÃ9WûVa¤9*Kµ¼íOŽOO£»º7žß\$XùëdÎüÏcó«Ýj ¾;Ùòæl€@¯Ú¨>jþ»ÇMy©€ç+M¹È¹,Ý€”êò'¿ ×ÿ†´4ÞüªüW«ã Ì%eñÕÇÝWÿþLëÄendstream endobj 186 0 obj << /Type /Page /Contents 187 0 R /Resources 185 0 R /MediaBox [0 0 612 737.008] /Parent 127 0 R >> endobj 184 0 obj << /D [186 0 R /XYZ 110.854 636.116 null] >> endobj 13 0 obj << /D [186 0 R /XYZ 110.854 434.724 null] >> endobj 183 0 obj << /D [186 0 R /XYZ 110.854 290.116 null] >> endobj 185 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F40 126 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 195 0 obj << /Length 1356 /Filter /FlateDecode >> stream xÚ½WK“Û6 ¾ûW¨7¹SiIJÔ#·4éN·dÒq§iz %®­Y==²»ÿ¾ùµÎn›CÇ‚@à–ž€Ÿô¤a¦c/‰’PÊÄ+š…ôèwçÍÔÏ‹ïW‹«ë(õ0×Ú[ݺã«ò/_.)„ðoÞ­~[ÆÂÿö÷7«›÷ï–Ry–øzù÷ê§Å+0K£, uý_³b0k[–(ÔÿrãÖ¢§«kø˜ƒTfa¬sV †ÑîHéÄD”‡©Ô¬ÔíÆªk—A¤”?vLÆi¨uÆÚꂹ4”iÄòïÀ$å~[[²YµeU˜ÑìbkF¢î·–ÝÞ[Zw½öjÌ›vWe·TÚ¿geÓ÷´ÇH¼@JæB‡q¬]ë¥þ4Ž];@ ¡,ºO¥_N}Õnˆ&³© Œ¹F‡lçõ –ì#M•ÿºmß‚:ÞÓg¼[?.Á=ÞGš¸SÀ|dˆ®ÙV±5íffÍZ—Ûµ8Ivѵ·TOO›l’…"‘ ¥}Žò5p5%„G¹Ó×”e…Ÿ‹ýXÄG)ÇfVª‡Ž(:¬˜ßC.Q±ê#ÇqØû$ÎüÒŒfmlÞqêw=q/¸ÿ“¶Ð滩/,"#ÊÿÑö–$ÕÀZ:pT $àçD»¾+§Â3Ÿ]:À„b—SÍmß gíÞwÓU7±¨èJ–ÝöfÓØv|uáö"h:Ir1 LpD|[÷Ž„y Ž”Mz:ÿƒŠEâBŒG]uB>E» 6kË’_HðŠ%U;Ú Ö6îÆ~º”ÀSc„T>î¦ G^šà…†·*>1F(U>"ß\Âû9¸*nx ÀP•þ`-qèÒ€St¥ß캀¾„’f›®´a=}wàS#„óH‡«”S²ÝnbÑ|Þ|±'r"U<· l qä@«båZúÇc9ÑÔ§A~˜€{˜UŽO¸ž)Ò£‡rà³ÿΜK[Œ‰À$@Á>½4ü–H@“…¬õd‘íc¢Áq]Ýa,–ÔNSæTØJ S×äåê:G7¬ GPƒÜ› ü æ Г3±_ègP;rž±y¥¹ÿk7Œäë~þf 1Ì}RYʳ&txåpv«Ö½éy3ó|Ò¸n²YjŸ‚£¤‚™‡„ˆ<çæ6A`â®åÁ“»GÅ ë®»#jæ˜5Á‰šLó ŽEáÓQ‡¡¥`„Ô¿4¼¤0Ádm˜âæ™O'8.ÑÌw ÝÌK> ]ë0ôÅ—†>–¿nè‹. }o:.Ì®=ªÏ¦Áó”À·¥2ùªáOÿÿÃü]‹!_ðîÀ_Ê—Ü¿ø7ðà”€endstream endobj 194 0 obj << /Type /Page /Contents 195 0 R /Resources 193 0 R /MediaBox [0 0 612 737.008] /Parent 196 0 R >> endobj 189 0 obj << /Type /XObject /Subtype /Image /Width 208 /Height 53 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 197 0 R] /Length 278 /Filter /FlateDecode >> stream xÚíׂ Ð[ü@,¿ /`ã Jÿÿ›ŽLÊ3Åqs¥“ñGœ,d)Gèü¡šÓœ¼Ž¤¸Þ£œ>£cÆ`Æ¡l×CÎóþ=$:E»{žÈ¹ZGL«ÓÇb~°qŽE.ÍÚ½…ö—ûÑ Ó½uMyNöº©ãúzsÆ'À·|§öv¢© Sè.ÛtU~Rõ4äÇ)Γw|~*r0ähÓ½FÁjš9ÞzKÔíØ¡/ZÑ‘£~rúˆ‰°ÞV­ët]\bÌáaT“ý€³_Ïë\)çÃYµÌ9ÄV‡w®*äÀvgV2«qr!þäHŽ“¨ÛuX‘ªÛíÿvsJ9'‹78Öendstream endobj 197 0 obj << /Length 30 /Filter /FlateDecode >> stream xÚc``øÿÿaaá®]»rssFÁ(I¹Æendstream endobj 190 0 obj << /Type /XObject /Subtype /Image /Width 411 /Height 154 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 198 0 R] /Length 1033 /Filter /FlateDecode >> stream xÚíÝ rÛ ॺÀ2ñÒœ@r6¾ÿ™*Š”T‚åi„—NÛD±%¾0B¿.Ý9NAÖ°†5¬a kXÃÖ<ŸæEQ kXÚ‘5÷PùJór)Íß7o‘¬a kž@ðk ¼½½þb kXÃÖ°†5¬a kxÍgk¬a kžPó'øÂE/ïÑYKsX¯ÊšzWOz÷6ššEkf[ù14³Î?³¦G Úpú0ýÆ•šX“2ÇeÍshn[XgÍݯ˜èOf·Ñü“Þ¼ü]æÒË^c>Z ÖÓ›æôüfD9Í´LNaršI·Á®ú zW9¾ú ˜WÄxŒFoÑÛozÑ I#$AãF4£QÓòçk³ZÛZ”dùw²/Æ^£ºÑœ·³+j„$j`ÓÌfó´i½ŒÐ(Ã0ó°•_5ë\`Œ«ñµ³„‡jDÒªúñDô=¼ÃºšÀÎ4®ïiP@Cxrêê 4×PÚCòZ§h­¡0Y“Ôu°j;ËY‡Æ¦Ú7/cU]´ÔЖ‘åHhkÉb%s’)ØLC}^VÎ&ö©±f;ËM ‰6ró4ºëDˆ0MCRf¢ eL1m~'Zi$`ÌÁ’4ÌNÛ‰Úš˜Æ™­1®;ÒäjPÄ4µMTõ²_€5qƒ`~J5fP±S–ÑÄ|Ç1ö…Ù\ñ^;w8ÿÚÙ•BÙkñŽ/—Óð¼êûÌá%4>Ì^s¿‚Æ_µ«iüC¥Zãvêã šÀœN¹(¤*¥Qõ åà£iì%¿a4J_—aMŸÕ­fÝíË4ôŸ£öÉš¾4ún<æù¸„Æ{çço£1WÂ隯qŸ“¡kî]kÜ$ò95…Ï=#BîFózþS lK³:¬«±š…òZ@ƒ ÇÑrÙšùû æC µIwû0‚f{#U‰g¤Ó T[<¹AbSûà‚â4Í-¬!¤íJô›í— µ÷ ìrnaMøŒi»-m‹ì[ÝâÒü…4®i±–¶FöA­9Ý•:QÇ4ÿù 1u 3Pe4[dÿ»ÆÝg¡9VË2š]d_ÙÞ²ä1Í3O£^!ÊÕèIü¼¹+Xß¶QÀi‚ó´³3‚&YŽã) ”>[Cz ;׈¸+¿Å5DZpšæ¿uhx…="äNÔü˜CcL+ën]à‡El¾ gˆ®Z;ÿ§uh–ʉN52¨ù~FMékUýF:÷¼Š¦Àï]a kXÓVÓ_Aþ-Ç\•föå±endstream endobj 198 0 obj << /Length 30 /Filter /FlateDecode >> stream xÚc``øÿÿaaá®]»rssFÁ(I¹Æendstream endobj 192 0 obj << /D [194 0 R /XYZ 110.854 636.116 null] >> endobj 193 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F40 126 0 R >> /XObject << /Im3 189 0 R /Im4 190 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 203 0 obj << /Length 1748 /Filter /FlateDecode >> stream xÚ­ÛnÛ6ô=_áGˆY‘uÙ[—®[·¡ oÃÐöA‘e[¨,e’Ü4úï;7*–£&:ˆÉs¿X/BøÓ ­C•ºhÛXi/ŠÃ…^ðßÇ…‡~»øq}ñì¥M€\eÎ-Ö[:¾Þ¼ ôr¥Ã0 ^½^¿]FaðæÅWëWo^/WÆdiÄËë_/~Zõü¢MSå" ðWÞò„+O¹2‘ÊBâ-TŽv»ÝƒoO„‹1H¤Ärϱ¬Œ2Âöó¢(û¾jvÀ¯ ƒõ¾dàÏef‚¼>ʲÝò7²¥NƒêóUÛ ‚mÍø¿¿Ù•ùÔÀšQ‘‰ŸéB¦Ù(¬֙Ï(N¬óœ‘ n™ÚÏëº]Àõ¼ø  Ž}Ù ªåoÕÜÞÌó O¢Ôreà _íäxÞ }‰DŸ–Úe—׌¼]jÐÕ]Ï´ðhƒ¬©L‚te¾Á[5°Tõ ïñ²jø{×;„LpÓµ».?;Qlƒ—U×L‚öÁ/ˆ{ Ž(wû¡íÊÞ¿*¯Ç®+›áœƒ‡;ID'a÷ÙK›{ËX£ÒH¬³úä¯83_”(zªöf¨Úd‰Ó0ø{ ‘´G~¢Èé-‹VbÌ?Dz»cÜüûÚ%*¶é7q`'ð×r{*¤p Q—:ØC¤¬•IŠR7QKÑy³™S‰Si ±#bU€¸v9(B_åT%ZX'1Ñø-n«ºf¨+‡c‡²€Ù¶H;Ú§ÞKr3šÙL”N…¼±SÝŽ±}&*è%ÍBΈ) — ÅråÀ)ŠñÞmëÔU¯OÅ„E_=Cƒ?r*iN÷} ¤°Ÿ‹ a¨ŒÈÙPßrkއkJ¿]ôðÑ?a5©°gé… g³KFRaRý Â ʼl9ðÓ3ÌÙ"…âtõ;c é*Êͱ›cÔ$F%±N)Ë_‘†æ¸ÍBèP¼T”ràök1Ž­²Y6m- !{C yO[Mƾ_?Cî×gZ$›©8J­ÒØxqÄÖsñ¶ÒFÓ¼4Û,Ô->GÒê\IçSBfUjÍÓÃŽº‚ê2ÊÅÙãÏ‹ª‡ ‡œ+Pëu^|ìý0£Ny¸i;HMg<­ä!_’ÿi|yÍ®¸Œ]€!â’ ¢ËIRpî48™Q;æ`ÇCŠ›f`Àn»ö 7T‚œß˶L—Œ–×â`Ÿ/M(®Å„þŠ鮜)ŒÒe&䦨Oìê b­=ê^Oí5Àܽ¦R'#ÇÓñ¸:R ÐCGjb·±3ËåÖÛ’Ûà$ÈûûÛVú°•ÃáÜAÞýˆJÆÈ7&&}¯bÅ¥q@ÞäÝPÇ Ìø¨=«ÙfÆÛìä™ûMb¼I`”Ÿ^êÚÕ ç’à]P(k ©ÑôÍÃ.lÍàëmFDü޵ã;Ä}̽ y„@Ê®„y¡¯îUN¥EN2-TYo™\ذL”7;8¾CÓT2±V·í VÑâ‚ð¯­6Œ’n%£É$B¿µ¡ºß·ÇZˆ¹iÍÌWjŠI¬J’±¨ˆŽFåÏb¶º`gù ÿ9äûÛ•oKžùfó¦)'-‹IUšiº+Õ„Žà)ã~‘…3qfžn—ΕDXèËçb멹ç]ÕÝI øð­wÌ2±Íë~Êóe®°@¥Èœ~*ƒ?ùóÜÔ«18endstream endobj 202 0 obj << /Type /Page /Contents 203 0 R /Resources 201 0 R /MediaBox [0 0 612 737.008] /Parent 196 0 R >> endobj 200 0 obj << /D [202 0 R /XYZ 110.854 636.116 null] >> endobj 191 0 obj << /D [202 0 R /XYZ 110.854 611.21 null] >> endobj 199 0 obj << /D [202 0 R /XYZ 110.854 259.841 null] >> endobj 201 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 210 0 obj << /Length 2030 /Filter /FlateDecode >> stream xÚµX[¯Û6~ϯð]@j–W]úÖ¦ÍnZ4·ûôAGblmdÉäãýïá²ä£sY ‹ñ2ä ‡ß|3´Xqø+!8K^Å*fBÄ«âðB¬èïÓ*´~~ñýöÅ7¯Tâ,3fµýè–oË÷‘XoçaņFšÓᆈ:•Ìé³]+UŸ_¶ÍеµWX•;;€íÚ(Hk3Ó‰;KÇE`оrÈUÊÛcEÞPCÔK-ŪÀ?ƺ%èØâP.„¤Æ”mCÕ6^ïy_{ÒÓmQ!›8H:'|¶EíMk‡¼)}NàÏ"]‰s°ç€ÿ%×`ä6>¡J(†OÊ4ìÝõ¿‰ja&óîtÁÅ· ~Sr~<7{r‰1„"$"÷E§"Ï`›û¡~°GjÊ‹Ðèy7bomó1åü”0‘(pÜ@&:,$®$]ïO§î/ßq«aU «¦Ævv8u ½·Ÿ5¿šØº¡ÏnøtøŸFÄþú¦;*ÿZ¢zh 5ÏrTÅjFÅÐ=æ@vp7ëh9ãjÓ8 y`â©+Å1°ª^Î]1h‚æ 4@Ñ•I\Ç1üt¥Cœ1®”°lck#2lÏÁý¸±* ÉíR':8òOHBÖ£´'|år ñâç0¿â¨I#dŒÉÃGÑ¡-}ç­œ%mî%ò§¹¦?ÅÑŸ÷—‰3º{œq¤€@ Љ'RÒ,Ú†Ë&ÃDö< Ë Tä(éP*6Lfb1Ddfˆ«Í̙Р¬M—å2•Öú™pUú-ß@º^ÞΗeÆ—e&ꇖ0ˆš°|É¡–º8áôìš‹˜||*̹õ^zB:öéi¡Žà‰ Ìg•6ðΘ–6T¥ÏJ›PØ|W`µ0Âr|O½lGx“4á ôºé«ÒÏýbw¾ÿY H¼hõrõ“ ùŒê'e.î[çdøXWX‡äŘwØ_ôÅê—<݇Ú_å}:Éà±Èå||*&¯iŒ,y“ã¥ü íÇÜe`1ñu«5BŽk A!(¨šÏ$½4:™ª¾Kœqe‘[y?"¥„dªÒ¥¤EM¾ø“D³$Q—_£d–€³ Ú€Ðw÷†ÈIxÿr`9_|ÁÍ1%æu  È<§A¢ œc3t` |„òôñ\ðÎÖÖÁL¤¦D©Î‹O‰i^A™«T81òýC«”édüQ¨YÚHd,MÂO5tˆ…}ðå ¯½[R¸3ÿe±³XFÕ%±Ô#½qã ¥' Ü0KÊDß$yB™G> endobj 207 0 obj << /D [209 0 R /XYZ 110.854 636.116 null] >> endobj 204 0 obj << /D [209 0 R /XYZ 110.854 535.844 null] >> endobj 17 0 obj << /D [209 0 R /XYZ 110.854 293.603 null] >> endobj 205 0 obj << /D [209 0 R /XYZ 110.854 267.276 null] >> endobj 206 0 obj << /D [209 0 R /XYZ 110.854 140.925 null] >> endobj 208 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F40 126 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 216 0 obj << /Length 1267 /Filter /FlateDecode >> stream xÚÍWKoÛF¾ëWðHæzÜ{k“ºp‹&H¢"‡¦J¢$"©TýûÌìƒ-ÊrP (tÐ,w8ïïÛ%‹(üXÄ%F¦‘Š0¦¢ÅnÂ"÷ûéÉ/³ÉíРN2)£Ùʾ>[þ³iÂ(¥ñý›ÙûiJã·¯ÿz5»ûfšpž›é?³ß'¿ÎÀ¬ó(Œ!2 _ð“ ™@lFqÔ¿Ç¡-–àS븫Ñåídõ¨&41\yݲZ4Ng`Š¢2îuŠ]QuhPÅyµ±(¡½ö²ø‹â¦p¦ÿrçÛƒ_–U[.‹':³©qùõU]uM½u›år]øð>QIÛ¢@÷QÂRCå(4•Öñ'JùúР9Ic–¤ð#OûB±à8»Ö–‘”gàBvnd¢/%JqaUNDØû2‘ܸWUÞÞïdôºž¼›DïzÃPÑŒé(Áª±ìùvcÒwåYVnñá0wjݺ/+ÈgÕ„gqp]EŸ%Ñ‚ˆTALDsµ2JJ1I U×Ô¹ )ãÏá¥Ï|° “2l&©IÑ.%Òî6ë(ˆï;í¹ÕÄŒ¨‚ÇùlSŒÁmR¯Þ†ò;ÅI¥Ò‡ݦ^Ž "#Fëkå=£&Ìó“òóº,¤ ÇEïŠ)“ñz èKúYA­ö°ß×Mç´ºÑd™¦„er<ÛA Êc©w6[2MÄ1Û”mˆÄÁ:ïòÏSFãÂoå5¡ghZÛy‹ ²¸® 'äÍ”™x}@¢¹AržE`¯Êw^ªW^ÛýõñCdB©øã¦¨Üα>8aŸ·mpµ=œšS.Ä lœp¦ L%—0ÆÇE\bЉ¦èMÕÝ û¼ÛøÀae?Ý~,½]>lÊÅÆ‰ÁÀ¾êJ$@{:À“ùÑ9ì6ùX¸è ]¸Ã ©Gv\¾æ»ý¶¸ñ¤²rÿdáמl\t œ«Ú«ç—iÈåróÄÌ¢Þíàúi&0‡ZÈÿN3^O¡½ž…Ó`èœ0]> endobj 211 0 obj << /Type /XObject /Subtype /Image /Width 528 /Height 164 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 217 0 R] /Length 1453 /Filter /FlateDecode >> stream xÚíÝ r›<àÝrÕØÈôdø/‰ï¦¢ ~Ð=@«I]'mú"-°€ «ˆŠ ûÉìÀ•9Ü @¹7ã+ÐýU~¥!YA(!?ÏÚ:Ê;ú£hé €ZrPàÍšs˜^ÿç€YƒføÑA ¶å #ÁìhÙšƒKµ+ú­:`’hÍa³™°ƒÈ{´¨×!÷°Þö ØØØØØŽËcp(ßìÀìЦÃë¨ü²ƒ,?vhÊáï~ìÀìвÃÀvøû5"|±;°;°;°;°;°;°Ï7ùü;°;°;äw8þ/M8ü\Çað(õ8<<ö«‡d÷?°ƒÙ´ýmÖ~!;4ïðl»_Œ[¹ÿ^µ;¤<$KX;¨„zBUq•8~©=Tú8©¡W¸·ƒLï>8 ü˜ßÜÞA%ÑÛ¢ ‡) ³Ãž8ôp?'ëtÀĤ–ÝPK¡—£Ñ ö­9l£h^–‡,Z-ÖsY‡ç|wò±Ãò“­%H|tèÇQÉø®ïuXVƒ»‚ú§ñ]W“ÃÂà2®þä îààyþÁÃAVwå ßi tyµ¨é9ˆŽñavè ›Þ©9@UñƒÛšejP¯IrmßÕeÖò•ÌV¶âÃØ:ÓzŒCo ªpð^lÈ꓃Y”r3>LæEy˜[DÞ1zx9·qqÿ5—&«_à‘ƒî²#¬úZ–àZÚMqvâ¨_ºvP½Œ—&NVsÜ Ø„W›…¼Æwz4½Ì>°¬CÈJdó,PcIUíÅaOöx2ji8,Ð+âÎÃèØðižE%‚6Æ!fq8,Ð+¢6fâ±µÁ½"ÊöÂCèéÂCè)ÏWC ‡àf˜ð¼=pþæ„¿,Ð+Ò^Ç¡Ü㷤׳ ³CÄ·¦½®‡Y+3ŠMëÒP±@¯H~iÀ¾•€¥¾Ÿ–²U'nÝïä÷ƒomB×÷Ǻ<÷/Ø!²é ::<ç¶´vPÉÞyÍ÷s°Où\Ñ¡Ÿ†ÉnÏ׆Zã©+:ÌÓ&7‡ç£tœ£AÙât>c5÷ûÅöh;_O¦Z˜»o~w6¹JퟂòÔîçAyjwsº4˜ÉÁN W9n:G§÷˜Tq‡9üo;$ÌljvèíÄpìOt¢“£ÃëØæãœÑ/ì„èan¿pèà0ï¬ÏÍ(´:フ>̉á:å¯;Éçœ&‡qÊØMù :Ø@8ÄÉÝóú~û“¦ÄO•m9 ¾Ï?PLUò9؉ÀêˆÑ-ñÁùx±3¿ šï¯ÎçUßWüP‰Ïo Ñsô'µÃá> stream xÚc``øÿÿaaá®]»rssFÁ(I¹Æendstream endobj 213 0 obj << /D [215 0 R /XYZ 110.854 636.116 null] >> endobj 212 0 obj << /D [215 0 R /XYZ 110.854 377.19 null] >> endobj 214 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R >> /XObject << /Im5 211 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 225 0 obj << /Length 2015 /Filter /FlateDecode >> stream xÚÕYͳÛ6¿ç¯ðQžY±ü”ÈÜš´Ù¦63;{Øô Û´­-¹’Ü—÷ß$HY²¥øº;³ó? ðÀÇþØ‚1J´’‹Ld„±l±9½b üû¼ˆÔO¯Þ¬^}óNä°¥«ÿ|µýw–)£”&ïYýº”4ùðÝooWï?ü²L97:KÌò÷Õ¯¾_[Ö ’]=!» %™€k’™x7$h›k"²,h›ù¥-5Mœq”»ð*Ç#R3NNõÑ'/^)s{ñª¿ j8¢ ‡=ŸÑ8Á1Ôõ¾ðRpW–6Û¶¨Ëá|¬Ù¶Ü-¹Jv¶oÑœ(A0;AƒoÑží¦üD)·á"zÍÈ2Œ&ï–L%ñj¬|)Nç£ýÇ £]}<Öîì§²Ú‡;‹¾¾ ᔡyÒ,#‚å™ "ð<ß û| î.:Ù bÆ 1Ìxf8ÀO p*A#×Ïœ6„årä¡=.´6bAïCeÕÚ&¸m¼‡[¯E1’ ù2]®ºWg,ˆBÆ“{Ü*«ó%|Õv ¸:¹spEIî2ʈ¡>óP¢üb³_Dò×öP°átï»`ª‰dI BÂ|{(ʪ³³P ¤œ¬Ñ °d¼ÊŸÑën”9‘üa¸º}”P­¿žp?Ö'°´€$µZ •”_ppòø²_ª¤HQÚ6,Ü{âP,9MþtÛƒ^±°µ;Ref.M  ]wEœ¾~ˆ™‚ŽÜt{êöòè)*Êÿý—wåÑ~´G»é¾+‹c½ÇåOTÑæÊºÂ ¨ˆ€[t+ §®ž¨¢„-ŽŠ›3Ò)AûsßÔ_0†GÁ­=8Ùídà(ט/wíLŽ‚*B—S_«¾`îΜ8¼•ýyW`TàOÐám}Z×oðPÃ@ËõHŸ±Å² ü^[Á`Tìd_QMæ„™(õ¶œ[µ 3}µ ¥“÷;düdÃïR`áSi–#NÀlÈžž >VãòëçK’ßF§³oNÝñÞ@‚ÂÅØ@X°d:ùÏ¥íúĹØ8HBâÔ´X&‡âR¼¬†É³qñê,”ÉA`À)7‘CÐíp ¨oÖÍø3 œ4V4Š(𵡺71™iöÒ ®ˆ&%;à;çÎÙÐå5éÝ1Þ›O'ÌY>Oú¨ÆF‡`{ÏEw¨Š“ís6j%¸·ú°Þžñb£9š¨B_&5‡~„= v—%Õ,û‰vEÚ‹—Øè=¸â„š˜eÓ:|<Ñz ŸŒ>2@Yùßm=¾uPÊ™/P§·¨+­µRÅzc½…ß…w#ÇàÒÆŒ”§ågW;†5W¡MÙ)s­+ŸéÑèÐPš³·¯1&¸’s}}š U•P¼<9€Žç÷’;ÉâXW *°æÆuïH nqÍVE(Þa²î݆k„÷í óòLÀ,8À€˜/¹pù²lÃ`s¯Rn¨Qï©\Ê.æ»-ëKìÜC:yŠièZÚž97<ŸEèÂø†ALPã-·}åÚ{öêeÇK30<Õqq6@sT%>ç¹2`Cg›ÖâªòæëžÁ@ÍÂMi>B#¢s›]¾®Ý£‡ ¼k:WŒhMç/i14árüÖõz™B Ï=ŒóAq<†”1_FhÞ—°RÀͤΒo]ñ>:À`øè²°‘rT°_ß|6?Ÿë¦ÃÁL§¥¡Æ0ci§üò'QX‡3ŒÇÛ€P„˺î g‹Ô6"¶ ‘è÷76„ õm`2gãæª¯Øî_^ÈT™Î2èÏÄ#$~ø_š¿Äm£Ìendstream endobj 224 0 obj << /Type /Page /Contents 225 0 R /Resources 223 0 R /MediaBox [0 0 612 737.008] /Parent 196 0 R >> endobj 222 0 obj << /D [224 0 R /XYZ 110.854 636.116 null] >> endobj 218 0 obj << /D [224 0 R /XYZ 110.854 476.035 null] >> endobj 219 0 obj << /D [224 0 R /XYZ 110.854 185.807 null] >> endobj 223 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R /F40 126 0 R >> /ProcSet [ /PDF /Text ] >> endobj 229 0 obj << /Length 1238 /Filter /FlateDecode >> stream xÚÝWKoã6¾ûW=IÀŠË·¨ÞöÑÒ»ÝÖAÝ[¶„È–W’×Íýïr(ÅŽ•8EÑK Í ¿g>2,¢ðÃ"Æ(1JFZh˜Ž›‹ðç6¤f¯ç³—ïDî$W*š¯üòùò·˜%)£”ÆWïç?'’ÆÞ^¿™_}xŸ¤œK£cF“ßçßϾ›.†Æ%ÈÓÁ3å’äT_ò§Qš-/úqA$ã—ã3A(×èç u:/@_ýñ¦ÙömS'©†Bj»h6~¤µ½)‚á›+oø6|W—7Ë`ŸL)•‡ýbÛÊÞÔç³ÙõU³íðëOÀ Ñù =€LÕ²/“Trp5Þ•NxÙí¢lÚ$±˜p+`ƒw'`x®“n7M»,Ú_ÑÙ! ÜäD’€¨é‚Ú5ìœË‡å|µ>ª%šÇ¢§vò¿¨Ÿš¨‚ììâv¢±Œ¾ºjľÙ9„³­%¡¹„€yæA?QEßUë}모 ýTŠáÇuWm×(öe€'³âX† &f<€‰È”ˆL¿îPõ‹ò!}0Þ†9R€4||ŠŸ`Ì"Y‡ÐüÌr¼à¨µÀIA˜ñÞÑçöÄ97ÞåXëçg®rP¾¼Úèèm3û8‹>Þ§ g¡%6$>PÒ$'_om]­·ÅÏäG×£ÝYs`|¥£{@Ÿ*—B©Þ˘ª ©Jz”jvž*#çÏKõÕt¢°˜*¢©AþHêÿ¼ÁDÜÿúœïC=Qcg"Ò@CF8ìæÒ£¡4óîÆüû{ìŸNE=Îý“7Ç‹xßyAÆÍ ÓåÏ Œ=«ú’©Sð°U‡aªºÞw}k{ì0lѰk›uk7¨~zêCY!„ŒmËBƒ1™û=¦Îþ0»c6<ž'BÅGw7"_}‡+GùN‹]¨E‹’ï0£ªÒïÀˆñ2wJ»]a]¸¨‰_ ‹Eµ/ªÃ+§®•eµJ¸ŠWE qÀ1§qW}-|œ׿C“‚Pc“>4vÁ|´û|Ø)Q¸÷Ç*hƒ+VrDØ µ´»Ò~µí²¾K´Š_Ld<L³ïwûå½C¡nšÛ U·.™àü‰R¾‡žx\–¥òðyb|þ@Á±M8¿¸_Mµt*WCwέ¯„ lNB¯¸M9{WôhöI:ÍpaƒÎÕk°w7—NÈ_)ç½-)ÉòlèíýÍØM÷ø#Ü)ÁäÉ~‡ûý<’I†H®Ç&R†Y—:¸øÇÁ9Œà„gÃ0ŽÙ ¸0Ïã›"|—Aè¬om09º6¨\”¶µ ˜„° Š@ÝàègÀ¯uЪv*ç 6¯†„ÂÛY„}ò, ﱉPDñ°9R€™ƒíœGƒ÷…áeM•''zLÆíÚTì»Ò‚Âß,n«uÙ»í:Fb:îš`/m8 '”v·+l{ e|¹íPÔu.y‡4ÏIžë“þøidDa#¢`kŸHËÆSH dТS²]u·÷Ôé š¢ïñ¢õ®“³  1ùPeÿ¤j-C261 7äW†!f ËrµŽó/2ÿæºpY^ü¯óo…ž¦·endstream endobj 228 0 obj << /Type /Page /Contents 229 0 R /Resources 227 0 R /MediaBox [0 0 612 737.008] /Parent 196 0 R >> endobj 220 0 obj << /Type /XObject /Subtype /Image /Width 217 /Height 134 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 230 0 R] /Length 688 /Filter /FlateDecode >> stream xÚíÛKnƒ0P+]Ã"êÁ*qªä^„+ôQÖ]´ê±ë?Æ1`ãØØÔ#„Ò¦™§bãÏ(TU¸(K.Êò,Þ÷Çz缺 ýÂ>5ÚK㺠]Æ2f‚µÝ4.k¨vü̵͖3´;2V%38©/t¤žhˆah+Æ_Ç‹ÍÆh=Ãk"䡬5@'qà70Vs/fLí<âJQ œdŒè—Lc¡£ ¦¼'cµFbm¦`øãI`,]-ZË€4&í©J›cã<7‹5kØ #Ódd˜®ëÓ+Fº"ííôê±aEƒ¹Üg,¿·N¼¿ðc`RÃh~~¹F‡“§c.“§Ú㎃ýÇóZ9Çú.@;4FfçnðW¹4ÑzÁDÍê|t¨±ßÕø–°›o쌰ó ôÇ÷¤°ŸÏå¨(@8 /¨‰‘’p¡Á °ÅP¢Õ6#‘†¥—Œ=b@rÊgP€¢…$gìõNCѼg@Ž‚V·bÀ†1-õÔêÍä™z#¥`d08$VØwýÙeA›mÆn‘`Ó®?¶™u×_œb86AĦŒ &£þÜäKÁv)›™Ï2ư¯µï<«L°ÙeAĘQÌ/ ,Ü*ëÛaà-“k‘ Nl²ܸo_Åà¸+s.ĆÑüãeÜ^‘°þÏ\Šqa¢¾Ãº¾KEƒÀ¹H¶8×øZðöÚŠÙ.å‚bx´l÷ía© bv GÌ®HfY‘øÕ‚ ßý>*–Ÿ±ÈX$X¿þì‡ûÓ#!¿äµ ò™Á?xÖendstream endobj 230 0 obj << /Length 43 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~}ùòåÏŸ?×ÖÖNš4‰aŒ‚á›cÚendstream endobj 221 0 obj << /Type /XObject /Subtype /Image /Width 287 /Height 140 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 231 0 R] /Length 725 /Filter /FlateDecode >> stream xÚíÜMŽ‚0ð\Ëj¶D=pñ…™­«¹‚k7“9öÐ(ÅRp¨í_C h2ýEÚÒþÉ2Te»\e{FU¬žª Qµ­’¡ç´ë—}¹ PJKÅä!Ï =ûÂ,e ”•y|Dì)\*N]OˆöÓk0–Cò'†ó8‡þÎ4ϡӷþëáožæãº·#a|ž?ßÀ6Ã6_ÅæA·ÞÁ¶Dçñ·~¿ÏüçÙ•{ær|{2×|uÙ/yæ —Ç=_%6åó”ÏS>Où<­/–“Ï‹»Íƒµš™Æ+óùi÷»ÝŸyB÷÷V˜<Îöñòy›çÂd, ž‡ã÷¨„ŠeòùA‘Ú…ËŸÑ{˜Žcäó$èï'h¾y¾çó !yør< ÐåóúÈóULÑvRDë xäDÍñy(Ÿ§|žòyÊçß&Çö|ò¸<ô<òçEžÊò[£Ïo)pýÞ «ÙóÙþ« endstream endobj 231 0 obj << /Length 43 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~}ùòåÏŸ?×ÖÖNš4‰aŒ‚á›cÚendstream endobj 226 0 obj << /D [228 0 R /XYZ 110.854 636.116 null] >> endobj 227 0 obj << /Font << /F37 124 0 R /F54 188 0 R >> /XObject << /Im6 220 0 R /Im7 221 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 236 0 obj << /Length 2037 /Filter /FlateDecode >> stream xÚ½YMÛ6½çWìQ"†ß¢zKÓ¦H $@ê ‡¦Ù–m!¶eHr6é¯ïCJ”Mws(Š=ˆÒÃáÌ›á-{ ðÇ£Ä(ù …&Œé‡õñ{À¿ÏaôÛ³—Ï^¾,'¥RË­ûùrógÆ9£”foß-?,$ÍÞÿôñõòíûw‹œsitÆØâ¯å¯Ï~^‚^ÜRC”0¾³YX˜‡•9g4·ëïRÁŽË›Í°·Cšµ[1Šïë}ÕUë¡îz”W§ NøŸ®ÚnSw N³|Ô¼š |=7_Leõ¡Gqߢ|ØWJ†}mW|ó›œÏuÕá hýà09g’H©Ðtgˆ¢Ù'ÎŦ®Ïu#I¹`4{…s«zÓqÜÕýå0à¸éñÙïÛWÙãÉ‹ýó¥|wéj|c¹&ÎV¥Jo…vV¼²Š$h¨ñ¹®¬ ©³¾ö’m×qtîÚ]Wù–«¸Ò݉¾XSªÃ¥Fù¶íPnÀö/ßä¦rÉI¡ŒdÞž‡¦=õ¸pkM‰âºþ±Ö{ÔÛxÛ+ÜïÐ,XÖà”h!fguA´'ï˜Ö{öØW«¦ó®…ÕW†ø`‹QOa˜ "ë ²Ð§„ƒ¸¤ ˆ÷—@h·PÔƒwSÞŸë5šùÅ9üÖkLRBip!¸d¶CÎ# 8%Tš'¶KìÃ…{Øp*•ˆ + Ûë’hn’§–mw¸j‚Å5gº õ];4k›Œ»+˜ÈŽ(RNré½h<Ô ÍŒÞMá ¾dY4B~‹z1ó@/,Üd§v˜¦»Q{ßĬÛ㎚š“7ßU^›)×Ús)';0m a€0öúX+o›½î”šRkíSÏçHLø‘ž¢¦U¸|adËÓ­¦M·»Ýz;-Kå/'º… ¡p{â<,‹ïô, ß°l_õ8@{`0w«•ø íÖ VjR„àçx»9SB5 kWö¸oB3x|PÔ§J+äý?Ø,>UBΰYÁŽ?îØ¡¡ÁŒOTÑS€?5á:0@1ÎÍPš¿+Œ¥ e†ÏhškGãqœØa8õƒ™gíhLl9ú c;^Òl¹¯»®'‡3Š)Ê@¾¯ì¦_çC ¤êGnG;Ïfp}×»SYÅ™}Z†—b@FNÆ¢ˆaÝ 73®‰O!Ž/>Ë"-¾K¤ƒðœˆ¼qÃV2íj%wìdÜ6Þ%±¡>§4¥I«nLd—Mw]dË…ïàî6oшêÅ[â¸t8è½+ ÕIJ7Vî@#Óu(4”Š¡±D5DwVä{_å¡ôTýø£m àC;*lw¬N—êØã®îÉ5m¤¨6`w4˸v‹åf»ÝC~ø%&šàDäxd†:Õ…HZ߉½nOžô7§Zó{TŒàõ}ì™ý¸ltÎòs¼Ç?UCµ²ž¸¥ÂnÜâ)†k×5æßÛ¸eºC|W{ Juݰ\{Úµ­z³EÉ·ö‚‚GË7«SG¤»N¶ßP—t˜›ðsØáXi¨9†QÎ/ ˜\C À© ì}jÒ+²"ÇzW=¦nx°Y˜±ëÛ fHØ ™&üîxvG^Jhïç Úmàã¾u‰#Ê@…ISÄZf.¢®/=6oîûÃo=ýF˜¡ XùýzüV%Ê€28?ˆ"”]µ¯nz*vØ…Kí7Íy);Â÷´Ð¼ëa?Þ‡æ³ûò¸æ˜šÏþ³O>¼ ¢àÑ7Ÿ™‹é ȶmɪêȇCƒM8W³O83Vk³|ë ‰;¼ˆo=xÃê-£[O‰˜F ÍYEþ'ø™QLegªïb,Æ/âM¥‹9è¶â7}ññ4¾ŸÇå‡N¥() @ZÛÅüÿNhB-í­6<Cö܆Šà"†“î#Ãó#UŸ1„ï×Ç#}<® Uó/záD\ħ ý67»vä†m¸õÇÅ©ª¿#àíÂ<£'ÿCðDEªendstream endobj 235 0 obj << /Type /Page /Contents 236 0 R /Resources 234 0 R /MediaBox [0 0 612 737.008] /Parent 237 0 R >> endobj 233 0 obj << /D [235 0 R /XYZ 110.854 636.116 null] >> endobj 232 0 obj << /D [235 0 R /XYZ 110.854 351.783 null] >> endobj 234 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F40 126 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 242 0 obj << /Length 1601 /Filter /FlateDecode >> stream xÚ­XÝÛ6 ¿¿"ØS\ÌšõeË{ëú±Ý ´E‘bÛÛIŒsìÀvš †ýï#E9qr¾Þµœ(Š")Šü‰>>‹àÇgœGÌh5‹eÌ8gÙö†Ïèw7¨w7¿,n~z+g©Ö³ÅÊm_äÎyò(Šæ·ïŸÍ?¼þüjqûá} ¡L<ç"ø{ñûÍ›è%“Ò¦•úcƒ`8H†B±4ŠŸ’faÂbõ¤œLqñ´}.Y$b’s€8= @³ë˦‚`󜈋òþUS÷mS½¨ì²¨Ø¡ÌûM*«C‚ÎòÇSJ‹.[g›¦ B‰Ë…Sy=ñóô0/|âÑ÷ëY6m^´6‘ƒ.a˜I…ÓÕŸv‘ +ë¬Ù4 ÝÁˆþáÖ-üìg^à‹mK»¬¦Nëô´I»{B]|¹Y£å¯˜C%·³ÙÝÄÁȤ;AWæžì›j¸ª¨Pp¦"Ìö„É4qZÿŠtô¶\ï[ô[Ã-… °8M>we½&²ßxÅüÍ!ýÚövi;/QzîÇÊfžÕ¬ÎZœ_‰. gBrŸî!åD7q€8b2Q^®;”}¶¹®}HY¦¤x&PùŒ’–œÃÿ¯šÆØ&âûjÚ²%Ûk{`Ý~y`$Äiñ‹­öX×ñ·ê#}b2Kbiq‘%Ë"³{¼_Çî~q\uÑÚ 'ÉüàeUU7=wu=?xÁMYÐÒ’Ë*$п2_~KÙÑhkÚTn·E^†tzž0­ÓËŠéQÖólSV9‘‡²ÎO†a9ø0õx +ì°‰¸$š¥§äò!d$KÍÇÝ> ¸žoȺ¥!/²²s7…3wL«bÕÕ7~ÜøA™Ã›·¶!†'à€Æ½‚`5¹Ä©í®*¶™ˆÝXo¶Î‰ØÚ#;ÇË2ÍËUÀÍ|w"“9lö‚0s+ÅEìˆÎn=õˆ—W”*aé(‚œÑQ¤„º†¸‘õcÛ¬[»õ\ (!!!|[p§oá¾;ZÚ WŒò äHãR@@ f™­ItéÞ¹×ÒЊ…d*Pû¼ÇâÑ䛈G±Â}«"óÁ´>„»Ó©Ôjö¾tÄ£@?OYœ¦ˆ"Ónµ]ÏòÓ¯cƒÈ„pÀ­‰.ŠI–øNê•ÝcXàE’pUŸ h™õ…O•—YVtݵc`&b\©gà©w&›º[ˆ¾’ÈömërOI}ÎcKׇ˜}8.¸ÿfÆÝxë5`1áhãÆªÜ–Ÿ÷ž=è9% NŽÍÞ›·5™¶Y8ñ"»ˆ\"ÖðJÑdu±ªÏxÖ1€[mæ¿‘ÙQ>µX2p ™B•ƒyà¿Mõ„£®Î¥N]ZK°k«¶°¹gRŽ#{é9gR¬`p`@ƒ {Xïv€\ìarÀ·Gw6ˆÙ[ÜêÚEXszî-Þ ÎÄ<úPð&Ûï€xÅUÜ÷ãVé*ŸL  ¿zTEb¬`œ6k¥±ßæZÌ)¸J7é ÍOÔX½ÏÆSˆ<ÂZ ´À衽i<Ф’Å&¾@¼P/CÊyçº;¤vmIè‘fY¯švëk+| è:]'1Èy¸0@¯ù«6¹ÒŠÊÀÞ4{÷~JùõJPƒ-%Fé \—®ãÕQººèÚ6´²†Ì쉙ٶ@ߌqÈ€¬sw¢ä 9ˆvëê8Õ=~…Bbz7ð„†ý«+ñÁpŽ-¼ù¿½›Êy-Xœ˜!éW5S Ø vÑàµSÝ‹b\œµµÅºmöðäO4/¾oÇO/†ÐP€DUØ@DÃKçXc¨:ö÷%àø•kU yØÛ s*Ž”;þYñ?4ÐeBs±ïÝÒ^e7äŒñÙ,LñsX]ûŒöBêíá[Á÷™H-=‡€gW•YÙ§õ/ÛpïÜ=n÷¦¤‹â…»‘¸K;$¨[‚’‹M| ¾iÛ¦õϼw¨¥o(›Oolé[)2€=ÕЕ¹æ;†!‹n¯^è±ËØ—‘ËÿN<ÙÚ‰ÈèguÚ0è~žzߟüßÊÔ”š€endstream endobj 241 0 obj << /Type /Page /Contents 242 0 R /Resources 240 0 R /MediaBox [0 0 612 737.008] /Parent 237 0 R >> endobj 239 0 obj << /D [241 0 R /XYZ 110.854 636.116 null] >> endobj 238 0 obj << /D [241 0 R /XYZ 110.854 277.541 null] >> endobj 21 0 obj << /D [241 0 R /XYZ 110.854 93.083 null] >> endobj 240 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F40 126 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 249 0 obj << /Length 1785 /Filter /FlateDecode >> stream xÚ¥XK“Û6 ¾ï¯ðäy¦fHJÔ#·Í¦i·™$“Ô™N§éAk˶YtôÈÆýõŃ”l¯7»™Ž„@ø‚d5‘ðS¥¤HM4‰ÃX(OÛ 5áß牧^_¼˜_<{& .2c&ó½>_þ¨éLI)ƒë·óÓHï^~¼š_¿{;i¥q Âéßóß.~žƒ^6¦©0Q4“»YO<ùá—Atæeg/5¾AP¢x¢"ÂrEDÌem»MÑ#ƒùT¥Aùþ ‡åºèžOg¡v¯ìöƾ°ßNÁÊÉL‹Léûs §2Ëp€x6ZóMÀy°«µP&ó"ScN(K”UêÄoÉp.7Z\³àëT™ höÌmËmYå ou–™f vˆÍÚœš|ª%èÒ&ÈAÁMU8+5bšÌ²PDI~G"ƒ0o~‘TA”!Êziñå[T—Ê ¯—¼ûÆvåŠyZH1ER—̘OCï=œeàÁÆÂÖmÙ4PaW^'?uGîk°I#ÈòlênØqåÞB,a|lû¼ªöÓØ?A–HåÃ¥ŽÂ¥T——5ÅKƒb¢^¦%¬;Û¶¥‹Ÿr­ú¢åç•m˜è89N`ö-&r(ùì0eÛ¢*„5M)£ˆ;Êmó=³òª ~Xl¬m –À°±@W4uÞ•‰³†Œ,w³wö»²^3¯ì˜WÖnï½!ôþ`ƒ‡2 ^•ë¾Á€„:P³”%Ú͘0Àïn§`ÇòÞxé8r¡?àpˆe™ãÝFÞ Ž«e3ãn¬›¼ÉéˆOùoÑ"àÈN‚éygA‰‡"êŽKc™ÃX€ø$¥vNÂ~·É;æçÌÓxtsc̔ݮX²€»=ÎèߎîB?HL(s"ØåC#4>eˆey¢t¾µxÖDòâ2(ÊlX2ÛgJ¨’Z$ÑC5T%©Ð‰†bOåvòe2ª fñåvv °ž]oÓÉK{ñþbò~lIM *w*b•}¿"’FÉ>@2K¹Öá#uP–Æ s•£jsâò,KE¤5ö“¦ú!%TRèI?$®¡î*Í{,ÏUÐd#ˆÓLÅ"6ñÃmy̼Ã~|w4‘ðãÁUƒ}¶€Rs’S§ý÷¤KŸíÇ‘Nѵ’ƒÿé_cñв`רu“oùAÍ2,ûIÜÌi±¡ Ñïxð!àªà‡”¾ë‰ö&Õ-¥»BݳeÑ–khyÅÒË»â+ýbã¸-s>i.í–ûmf‚_Ùx1vÌ˺§!l«3Ð ¹NØçœê1ÊÒ±›$2Z»-º 7Xà×»é¦(vŠb;8pøò~ç´#Ôm¹øŒ˜ö˜e)¯Üv[ÁXòg$t ~},Ü‘à´->ç¥qŒ, YÖ»¾;™;‰wvNŒ–yLsOD WëOJn …Ô1ËѬpW?+t‡SJ wš:­3ø8.*¦Ÿ\RézþÄmæ9¢VÉq_îšþÜ4ïU÷eÑtLXuXäݾ=ìG_Ù•ësy#EGpfÉ=t6fÄUsfæ»ïÏeÀNŠãs&âïÍxf5`V™ácáá!ýÿZý”iÄßendstream endobj 248 0 obj << /Type /Page /Contents 249 0 R /Resources 247 0 R /MediaBox [0 0 612 737.008] /Parent 237 0 R >> endobj 243 0 obj << /Type /XObject /Subtype /Image /Width 32 /Height 32 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 250 0 R] /Length 70 /Filter /FlateDecode >> stream xÚûÿ|/Gõßw;œà§7ÿ è»NÔ?õ3€ŸÞ|‚î©‚¨_üôæƒÝÇ'úÑ¢û?Fœ}endstream endobj 250 0 obj << /Length 42 /Filter /FlateDecode >> stream xÚíˆ 0 Â<=§ù™k=c4 F%¡ -j¶Ì¥•Z:Žã@:5endstream endobj 246 0 obj << /D [248 0 R /XYZ 110.854 636.116 null] >> endobj 244 0 obj << /D [248 0 R /XYZ 110.854 371.4 null] >> endobj 247 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F40 126 0 R /F54 188 0 R >> /XObject << /Im8 243 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 256 0 obj << /Length 2197 /Filter /FlateDecode >> stream xÚ½YÝÛ6Ï_±o‘˜I}ö-É]ïr‡6@ë¢8\ïA+ѶY4D9ÿ÷7ÃZ’WÉö€â°L ‡Cr>Ãȇþ䃔±(Òä!Ó™2{¨O¯äý}z£¾z·{õÝ:vQ¦éÃnï—ïšGr³•qG~Úý¼Iâèã_~}¿ûðñ§ÍV©¤È"™lþ³ûÇ«¿î@.m©‹B¤‰†ñW6 ŒÛÀ¹U‰(c¸X¤~v8<„áÏ»­ˆ¶þ„žÕŸ9ÉÖÎ,¡øÜïm?YD¶ëÚþÇNãh<ü2^;ÚýÝÜWµ_ÞÛÓ£}g¿Ü_΢D¢²—n‰|±ˆ‹òvæU=ïp[­q[ηõħ¶9˜‘ÆuÕÓ :ŸM5иEš*£LÊ4ºµi÷•F{3˜žW;¼±›m Wü°gñ¼· { à¾ßý®3URÀáéÀ[d@zÚV&"càL3ØscŸz’°¸mÌ`=’`Ïcký]T4Ú•ý’\Ì;³"O+‘ešy~ÓøéØÖGÙ:MšUQcö j»t#°Ê7@Mõ4ݵn|$…+Px×áHG¶ï®Dc}ûkËDŠB–‹{? Þ&KXf¦£‹3‘΃qÎ8"ó|UÃ`ÑBODܨ8ºŒ£íÁ@Y*£ßPäsÅ( YÊ`‰o)¼€ÈJ˜±åíÉÌxÎU­k‘–aɾêܪâSQd)3½ ®ŠDÍuBÑT$“vU‘úƒ ±êÐ OÞ*WGsîH陥oˆ~“4ÓÒ'Ñ4YgšÖ…Á‰GSW`>ÁHÄp’ÞŽþ1Ÿ>õ§ïiLCé€ëd#<«Ìá¶K€ pƒ<'ÁyWt–(¶øÜgëªë`ƒçFI*t"e»¯úúºb°U¬CŒ€ÏèREÆå ¼µ‘°jí´y™¿díRȰË㕤͢‰7Î žkQ.“ùœÒë§Ð±ÐqöíXW…ÈJ}s¹­NdT±Ì¶þD£¹7à·w? Ÿz°Î­³rÈ#oH¬0î šýËtxúõ È«Ã5¬o8'‚NËré½AKyœp¢/T8t!—'op òpGœW{¡ ¿=œéL=2óa“FUËKÇ ý3 ¨º‹ ôj|½I!¼hºêS5Wšœ/ž=T"´²¤šñà…ŸÙîj'«‡ÓåÞÜ1±îpê}ãÒ ­s˜F¬”`©:$êB‡"-^†š¡Ã/c6¢#|ôAëþ `%Û+!ÕËõqÂET Ñ®_Ì*™H³rQ¥Ñ˜%8”Ooe9»åÜåé¿+¥]P|ó" 'à6àIþjLp1 ÕѲè2SPÁÛß×h.Ãs Wƒ'sF]ƒqwîûwÓ×&°´ì£µm˜(>móýZ¶Ââ—-ëܱeà<¢¦ßÉ`þó+¹m+ H€K=¼»`„§!¦a°·!1x- ‰NŽ#N_0:˜Þ Õèé¾nyª²9ÐðV ñ£å]ªq4§óèxOK¿”¶SùD¸]Áôeö$_â?Ï•ÄsýIB5¨ö£ÖÊ€<„Å3kÓ×±bsÞÒ¹•ég®Ã‰åþf%†Ê]y_1²÷b@c¹^°ó×¶ß·‡ÿͤ€¬v+°Þ¥¤ÚqhkŽH¤ ¿ë$@N „0ô“†X,³”0íåp¤Uß[,àWð%f€ZÎõãÔ °ó‰ªOÈk8hŸ#gz­òr†³|<1±±ýkì§Fú$È×ó—½ ÄÝö`k‚5/-ýºKÓÊ ˆ›ŽU`ŽvtÌ‚­Ç"U)?öd¶+EmlOƪ…~8¾[ž¦‹‹ ¥Î$x0 ¿sÀéõݱèkàƒÂ½Ç2˜'¾"™ ŒjP;”òEÉW‘/£#çQgGúöIèmG¹Ùè¼ùÍ|Žè-0 ö9¼AlßÐw½Ì†’5Ìn@æ—Ž%’¶®¼ý…W9»×´Mæ¼qâ"z ˜µeÁ(8¡‰$ Ê@G6†OðŒ~ýÁ}3p¬ð$Ÿ©,à*0 B=šá~‹›[{‘ëð§k÷w/ °2´p¤eè‡Ì‚§r-œP×W;†·u AFé<.9Še¼€o@÷Q>ŸŸ=Ää«øË¡{%×ndtj;eáÛçtàª^ÜókQî5P$¡ÓÓc@9Û…¬!´›€Ì]èÚf‰ÖQb&IŽeíÉ€8¥-UBa£–Þ‹fV´57«/ÐbƒƒÊ’Dð×™šÀ~H¡„Z«èRŒ›ž6>-¬µ[å¼ë½ï¦Drë¶AÊÐVÝš ,Ý/ºá´ÚžN7<·“–"KóoB>YŠTÏΘòH}ZWd"Χv’z¹_©è_‰Ù#[*ߨ*Qҧ*ˆS*EY;-U79¼¦íÏ‚H¹ hPÏ–>&9a ðÕ7 ~ç-}jè€/ÀÌxpÕ‰Gü$ÁaÍá ^<ÌCÅ> Óz‚ŸÞÃÖ&/Á0f£’p£ò£íÛÑ®@ã_A-¯7:øïè%Ô?º¸ûÛú[½Mþ'õ6¿ÑëXðl‡×1 5CupDäYÈ\–0* ÏÖ#b°h?Îtwù‘éÍün"3äëoïËÝ 6x{Úv†¯©-Aʱ=;ø7¢Gx݇1bWôÈUnÏ V?btÞ·ßàS ÔôVË}÷st0*-),´”U7sfêPùúz"1·V¼Õ☠‚ ö’Ï×8˜®ãˆg<ˆ)Qå*ç— à£GjÉI׈¥æ· D¯'§<7¼OÉäÖÒ wÝ[µ õÓ¹3߯¸w®…RéKþýâÿgüvKˆ> endobj 253 0 obj << /D [255 0 R /XYZ 110.854 636.116 null] >> endobj 245 0 obj << /D [255 0 R /XYZ 110.854 611.21 null] >> endobj 251 0 obj << /D [255 0 R /XYZ 110.854 441.797 null] >> endobj 252 0 obj << /D [255 0 R /XYZ 110.854 142.47 null] >> endobj 254 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R /F40 126 0 R >> /ProcSet [ /PDF /Text ] >> endobj 260 0 obj << /Length 1661 /Filter /FlateDecode >> stream xÚ­X{Ô6ÿŸO±º‚š•ˆ/vÞUU h©h+¨èVTj+”M¼»î%ñ*ö®ˆïÞ±g¼Ï¢NÈc{<Ïó—å³þøŒó€eq4K„qžÌÊæŸáßÍÌQ??xºxpý‚À{ñrñzÞ«ï¶xñêåÜ"ÊÇó¿?=øarñÊ0ËX…@Ãe‹ír·ž9òõ{V?ŒKÒˆ„e‰0'¬* ñ¥*ƒº}¦›¥~ªoç~:±GÙé]/˦Âys‡ F³™Ÿ2ž†3ŸG,Šb+ˆÁ?»Ì|‘±,vyÛéòL€½Wƒl>mÏÁ¡¡ÌC,Wc/;$7­¡8Rï¡‘w…ÊMHú`vμáÉÃè„ïÍF¶s°`ê iˆÄ[”5®”ºiжÂI¿•¥ú+„¤…å²›sö®s‹ f<ádô#Û^ª•Æ,ÏâÔÛAiÒHõxCYÔµ¬Ã$‹<5Л󌥋Ç.Ù©T1˜JâˆG‘Þ©aƒ”ni{[tE#Ù}Ây€6°çÆ®“í€ci¤†M18Š8ÑO†²~²„Zojø?È #„§,Žó»/¦­&˜’O4Z¥Äi £Ëj4Î B°@YŒ&øÌÍ.®Õ\ÄÞ»9=IgÐí°‡9YÚê¾WKU«áwô 7À >ºsð3?‹bݪïн”ª]ŸY­“ýXd/#9Úuy²ÜhUÊÞ¹u¥;ç"ˆN5 ÙǪí©{ñÜ\©!À¤™ÜͶ–r"½Ä²h‘¨U? UàÐKšÛ§d±§šbM§Œ"µ}€‰Þö䜫DlîG\P2šóh(à°^AK_êÝÃãké—µ*oŒ;CÚ84bìv8yÜå&±LzÐònÎÍñgƪfì7Ú8gGÒiQ•EVÞ)‰lT’M“»ÊÉ<]¤Þ“Õ`óÈ2H$(µ€ÂÔRÂÊ·e™;=®M^çSäné­+3ω&Wæ.L X5FóVPñ*éJ‘*©Š8›Œ§ÑÙÎ…+¥@¥Ç¥óÓ>^ÄCM9Ô՞勉¸¥‰“”ûÀ•®k4^K¦:˜±× 1m{9V&]ò«½Y,uEÛ¤P•–½[S½qUy¿Ö²è‰µÕ$J:›n SüñA…§gÚª¬F›üQŽoŠò“ú~ìü;ÜTCÐ’Ñ>¨€:Ëž½O`« ‘<”¦,DN¢¤+Ö6:…‹\á5Ú–^Cnµj)´¥x`ÜûՂ侦À òÈuו/í•,Ó ƒ™›IEÝÚº ™›i*à¾k‡Åhº×GtÏE{ˆf6ñœK$u?$«:½­ô®Å骨š:kPžvom9r —° Ÿµ5†«ÖEõZfÝ«åDpЍ^> -Ýá«ëíÍúËËõªÖ;Ùõl­VWŸ%èÕ4wŸ/¦-ûâDŠ…¨ü ¢^˜íýJÕ²Lt‰TOÍøîÿt*áXdÛVÊÁÕw` ìÌÄ´‹aÝmG06¼„±÷"ìS÷}¡Øh·á64‰qâ©æóìñ½X|¢>±‰ÄnÄœS œåC=ÆÅýÒb̸¥#ªZKì:bßP¸WK"FÚ²EßÈÃV`©nÀ=Daæ®Z–„“:›b.ª«î‚/SÞc–¥§¸Ÿ¡I§ë`2h?ŸŽÏ%<‰Rc=ÂfžX»˜u‹r`XºÕö‹6Ýâ‚ »Ÿ?ñ¨ë`ß –y5N1ÁŒ~õCW˜o,Â…®Bn(K-ÜÇC´ýj…çK=v½;§GdGÛÖ©‚>àì}ECtm@—u?…Bží7S&X”8“/Õd× ÅUW)Cá-MäŒ^`7WVºýzÎ%àôo—5:ÇGÙ¹ f³2¶€¢û3YEGêïû¾uT.X.²“$\¡_}ÄÆé‘®ÕQƒÂNð£÷å yHïûvÂH9ãALûÏt;tºöÛ¨Õà?‡A·¯¥L>Ÿ.‚Œ‚7U'à%û ß·ý3|_`NÁ«GÔCý¦£˜Å ß±ûîˆç »«)8A>g$—ÿ@ß ,K bà ³ð¾…þÇ:ÿ¥¡Õ1endstream endobj 259 0 obj << /Type /Page /Contents 260 0 R /Resources 258 0 R /MediaBox [0 0 612 737.008] /Parent 237 0 R >> endobj 257 0 obj << /D [259 0 R /XYZ 110.854 636.116 null] >> endobj 258 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F21 262 0 R >> /ProcSet [ /PDF /Text ] >> endobj 269 0 obj << /Length 1451 /Filter /FlateDecode >> stream xÚXKsÛ6¾ëWpz¢fBAìÍIê6m&nRuzhz€(Èâ˜"’²ãþúîbA‹zYnÆÀ>>ì.-"‚³,QŽ5BÅz"ú» †Ño“7³Éëë8q–'I0[ºí³Åß¡˜F‚s¾ÿ8û®¶¶ó›¶½ß´$`mjŒþ#¡Åª) ‹&Å< !µ¢twÜãNPÞí+Ø‘ªc æ÷Ûm7¶-QWœÍmaÀÐx}G “…¸ï».<Îò é¥<…“%€"3x„(|Åú”)™;™ñV¿N¤Ön’ª{ý~ïšÉ§IðiW3&RŒaZäÏ—‘/<á×%´ `¸]¥;ˆ:V:H'+‘±8Ç d¡Æy Ò “ú’´Œ™ò¹>à¥Ø ,ô ܉”Åqú²~4îŽ{–°¡ÏyÛb[`ç8xïê{;u™Y(Ç'ÏŸýïmsÛš5–qǘC”»Õ¨,éÐÏhB) È ½%ÌtTá´Ïl¾ª\y°*k¿ÑßG%IcC2¨“8u^x¯žO à‹=KÑm÷äï~`2N´:‡G¨½gú§cŽS·N¡»!G@%]œÊ14©¼Ì&è ³Üu Y’>Ϩfn«ƒ,uÓ–»ŒKK‡ÏÐÍ]7òÎÈAãóœ¹BVä;’Ô4ÅÐwȧ0Büµoò<4‡t˜û{¢ÊÙzì~…Is(²Íí.°t|áÊz®Âkz1ôSy÷Á(uâ[O‚Àjª°>gb±G8âJGuçXoç¾rÓºéÚP˜/Ê÷]jh!8d+¬žKY ã¡—%‹ðhüáMÝ·MuŠw²ÙÅpûÏ›(ez¤!ä{áG!ÒÊØ²Ý–h4N|˜Üø‡k·ð£ŸyfŸŸÎ·îæ‘W ô/dœ=A Õ+ÞØ»Ó,~°Ùà„xOo¿y¯Æ0øi‡¸>‘NNÜ´¦¾µÞ€ÝÁ7cøìÁÉ3ÏM G¿Ã4†>æn?'ºKhD3÷ý«x~®Ê‹]•ÛŽ+“ùŽŠ/RŸ hÁ3õÿŠóa!ÎY®_ò™,s–]n/.þçà?$­endstream endobj 268 0 obj << /Type /Page /Contents 269 0 R /Resources 267 0 R /MediaBox [0 0 612 737.008] /Parent 237 0 R >> endobj 263 0 obj << /Type /XObject /Subtype /Image /Width 266 /Height 74 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 270 0 R] /Length 537 /Filter /FlateDecode >> stream xÚíÚ!SÃ0à·Ë…G1ƒàö rW±;ôîfc†¯)Ñ"˜˜Ä¢q8p³ûQ¤Méš—”f»Ý5=ò沤û–¼¼´»Åqˆ*. ÷y‚ˆ6=ÇS@„qþÒs<D1ê½fDA’žƒBܼ9„ìgi}um½žŽø2ÂÈŸ«atûÞÚF¿;äãn ˆÌôhEÜ[)1Kû;1}BìsBvÄR1y$÷ íØ¢õg$úr¨´è@èe¬e›oàX¶Õg6sö0„¶mäæQΩ½bêÅ*aãÞ¢í§(5tiC4OÑ!ð=ô~¢ãìp»½sΉ–Sô$ˆððã â3CO„ û)nMc4X"p‹¯lȰA! k‰0ZScôJt#vQ ÌÖ­ãhëõüC„ß1½AŒEÏ‘D3 " ì©>Ä2¥ö5endstream endobj 270 0 obj << /Length 53 /Filter /FlateDecode >> stream xÚc``ø —/_Þ´iÓºuë>þ\[[;kÖ¬ÐÐP™ÌÌLWWW†Q0 †#Ôðendstream endobj 266 0 obj << /D [268 0 R /XYZ 110.854 636.116 null] >> endobj 25 0 obj << /D [268 0 R /XYZ 110.854 611.21 null] >> endobj 264 0 obj << /D [268 0 R /XYZ 110.854 335.57 null] >> endobj 265 0 obj << /D [268 0 R /XYZ 110.854 244.167 null] >> endobj 267 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R >> /XObject << /Im9 263 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 278 0 obj << /Length 1885 /Filter /FlateDecode >> stream xÚ­Ë’›Fð¾_¡[ ÊŒçÁ Cnk'NœTÙåD‰q¬`WT( òzóõéž„ÐâÕ¦*¥ÍLÓï§ÄŠÃO¬„àÌête”aB˜Õfw%Vôûk5B?_½Z_½|£2@g¹Ö«õ­ÿ|]þ‰8œóèí»õ/qÊ£÷ßýözýöý»8‘2µ&Yüçú§«ï×@—X*k™NÀ_a6"&#fÂY#ÿë‚ Û*N”–QSc Ú›"Û­ð9:ªèd¸:zùKÍ¡rß.È(RÇŒBnA–:¦Y$ÓLëQýO\sr°(«[dXšáŒ'  R\æ93© š› ù’D  Q ÏU?Ô›Eq4xÎê€÷ ,Û•†`ŠGEnšºòÈ::ìÃÕfÓõ%DLóoµ‘Ñ›úî0~#! rÛu¼w?¯fæTgZ†=F°ÔÜG0> z¬c`_ùµjªMÀ ø ð¶sK%2Édš?/jmθÝV;¢ìFC·@_åLËÿêv^ø*1|.0Ó9Óþ¸¿[à/?Q%ËmFP½ì±0€ý†×},lT¶˜Ù^ô5¯B%@ø×“Jà Ž‘Àë®ýĹŸ @öÖ=×èÔý¾*ú¢ÝTç%ANÉR™]ªw ¾äŒ[ût¡»¾*dž¥Ñ}EÏyBãɦ…1\ñ…ôàùuH5iÎÅÁ»1˜ñúæaÂ_ iÁ¸c©(Ë…p“š¥c©ž(ëhÓív”ùÀ SS·•£;™¤tî{:·ïîúbGÙ*rÃR¥gºAŽ ,[>žA.(zù aM݇GG½è¥ðqywØA*ÒÉÐ…ç²ÂҰ܈K g|ÌÃIK Y»‰¶Úb j’'Wó&ɃgC?45ÈõSÁ°Pû2n£ë²¬±¬@öCçR3%Q+C‚»›Šžw5æEoK8u¨K)?UMËí¬³%Ÿ±i,XÂhÆyp÷EÝ;bæmŒR³:Hq,ȨzÖq‹)Ù ªÊð¤œàÔd2•S2€]Ï0ÆÂ<׉g¢æ™:)¦„žë„Ì)]QŠ ¼ƒ1H”IÖÐ@Eða¦Ä̇Ð˪=•ŒœûÜ“¹ðm^ۮߡKñhýs@9UÎú¦JD׎Ç®×Ò7uxbNaéÀ¼ò˜CØ’¹ "G€åt˜×—d¨¾ &S„>†BóÏc£÷ݾ¯©Þ!F…Fü®Ý€å?ô†o(`û³–2lû*€3Ó $ nLæf¦Ç»Z'F$Ç´º÷'MëèÄ·cBZ¬ bxšRí°]°Nj˜Ñâ|Täan†gÑ4Ä™j? ¹œÐ(OÐLõ2³óHÛl!•6ÐÄL9þ:¥&òchá‡)Œ“Æ© ‹Xó-Å®áåèl´ä#G¹ 9ï··DÀ*ë²ýkÖ°ÐÅÈê:ýŠÕaMQÚ^4zÆd&ÏDoaº=R÷À¼ÍÚ¡i,Jsºó6ÐçÓž”õ-fámÕ‡^“’ €’÷’ŲYÁ+«}Õ–4ð€U¨¬ycúÁý1¥×§Ç ¢Ñi´=^÷•ó£>´jš€ÓtÝ_tÑTÎT9øÒÏÍ웪ð«Ùc§@š´ç çÆÑ<@¹çÆePüé^ís|aGÿ‚%‹ ãŒ|Rìt(v¡ëSŸ ŸÉ…ÁWr!K/͈"÷ >1d®BìÕß0«Ôú½‘Ï`¸ýû*Õ’¾r<|ùv'øê»îêÃÕêÃ4R§Lå8²ZfDþô úã´öy¥ÞÏŠSݤ€åd˜Èz‰enù(ñ{‰Efü ¬Ú§‹Gcå°NõËsÏ‚¸ÂZ ˆ‰Õœþ%zÞzFyõäzv s‡sÏÞÍþëB¤|Œaò+Jþ诒Z"ìD彸ÊO¬rìSÀ`‰ƒ½Ð‘Ï»$¡åèSŘh„‚Ž„Š@ÚÏÉÒú ͹ªœÕ@Ö+ÜÁp,Ø„'‘`Š :ÿ¹D‡÷Û*àÒ²'Nv<éÇ=8 ÁLg;/Ô]¬£"™¶Å,‹\· $NÕódú‰v²P²i5U2 =€ƒ£gqº]1Öþð§ äÑbD¦ÖSì +¼8íòpÕ7UHµ $yÿ@àÜÙÉ^ mk¡,k˲,¿XÿÒüJ]endstream endobj 277 0 obj << /Type /Page /Contents 278 0 R /Resources 276 0 R /MediaBox [0 0 612 737.008] /Parent 279 0 R >> endobj 272 0 obj << /Type /XObject /Subtype /Image /Width 452 /Height 112 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 280 0 R] /Length 860 /Filter /FlateDecode >> stream xÚíÝMŽ›0à7¨ˆ5›t‹h.Ð!R÷0 ‹9ª”5«rýÚÆvÀ?ü¸N2¼< !Ç3¾ÄÏv0!yŽ=öôöíyzQauPÌÅQÖ0ai¥ª.™.öqÿ¨HHB’ðQÂÊHMuÈt1Žûý¥„8‡3õDX3Às<$! Iˆ_X€Q‰™‰,7·3‰¯#E8ÏbšœÆ)TsÀø…œÔsÞ˜¨0Öþ™éÅ„¿„郄$Ä*¼$‘Пþ6ݾnöáŸÚ…mv"á¢ð3 ýÎóï!ÍáµËC6û{%! IHB^íöüû/$\Šç˜íº‡{ù³ö°[˜mßÊ/4ÿ‘•X…¶°MXòW1H8p·ÐUh ö 3¹ñò¸Èzu£ŸEŠ-ÑØ"&­ü6!°ýÉPá¾Ãqëq϶0m…™xNçâ‰CU­| ¥%-… Æ/„–WV¹æ5Ö…úÐ3kíî-d9pªÜ|žßÒ[ŒC8 K(IédùlŲA8÷Ô6ﲬ÷Pü]©¬< UšÂY;åòêª×­>!Û™]K—z ñŠK•ýíe5…¢™IM!èêaÔî.®_U(fW„ÂcRG-]—ÊZªãpCo¡;U3¼!œÎã[BÞÊ.1c¡ïï-Üïá–ϲ¥a;…+cÙ”ˆƒÑ­‹‘7„Óy|ÜBGòÀ»u÷KcšqØÝ¦;z‹…Ôg_ï3¾nÓøÒ<Iøð³àsoöŽ“¸„_ü\ éŒ0 IHB΄×œ‚.‹éò°ËiþGzUEØ‘v'Fv¹—à@×&’„$$atáý°ð ÑßÍÌHtßD’„$Ü+t|;ÉÝ=+9Œ^ØT¸Óþ_@ÿãù?Hù`Äendstream endobj 280 0 obj << /Length 40 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~½oß¾ÚÚÚëׯ3Œ‚Q0ñ‘endstream endobj 273 0 obj << /Type /XObject /Subtype /Image /Width 176 /Height 227 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 281 0 R] /Length 748 /Filter /FlateDecode >> stream xÚíÜA’£ PÆ*öÓ›^[Éœ É ’9gß›¾ÿ¾ €ÄFá·ßÔ§R6±;/4òƒñíídé·@H¿Œû!=q·rBå^êÞ/iºÞ.ÅIe^®Ø=·{Uqº©òôˆŸ~Dî­YW»ÿŒ[^¿I…fž²{´Û‹]šC‘kŒB×ïQG»…õ»ÅíÍiÕз¹Þ?ȸæo¢uE×g\8úE®/ìGè^"4pïV!äZb¬\›7µíØíî<âgÜ.uÍiâX7ng@ŒÚ\'Æî'ººöÛC1ý±‚7p?hº£èôÀí»êq§|\Ÿ¦'q_è¼¹aÞ÷X}:»ªi‚·Au!2¥8κªfn|ÜNîj”Ëxm7ý{³§ˆÞê–ùPWH-l*AC•› ü¢Î5ira§•%Eþ_ûòÄ}.nªßÔuõ{×l%Š;wmp]CšöТýʱBçÆÛ¨¿µvùüÆ.¤¯½é÷sï²Â¹Ü÷ïÝ=ëß»ì’tÓYˆ–MÜÅ,„º; º0™¶v¦"‰ºÚAÁCú9{×–yÞÊE-“qa~–º‹w» ‹â™òÖ¶3,7[õ®›7ogØnû~Œ5Z¶>_°‹ëòüÝæî¾ðí0÷«¼or¿`÷•\-†»þ9/Aw}.²×Õn«¥_ÒÃø™²"Yo å†ëÉ£®¼¾ºõbKÖøÐaïua‘aQÞ”ëûÅf¶tÇ~ìʫ皭kgh®']{0½Îµ­Êþ¶–ÒùÃÍ]Ф¼™YÒ.ÏKØåx“ãMŽ7Ùe7uã‰sCW–_ÛHÅÝ8"LòÄ\ý<ÒÜ=_×ó¢`ÆyJ®¯æHs™ßÜ¢ˆp‘'è®n÷÷ãLDäqáòûgãdiFùœ›¿Ž¿~\¿‡áòy“]v9Þäx³Ü­Nì²Ëîë¹g»ÏŽË÷³awrË/=WÜ×G!}ÝEºŸØÉÒ×8Úùendstream endobj 281 0 obj << /Length 37 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~}ùòåÚÚZ†Q0 FRæ Kendstream endobj 275 0 obj << /D [277 0 R /XYZ 110.854 636.116 null] >> endobj 271 0 obj << /D [277 0 R /XYZ 110.854 514.259 null] >> endobj 274 0 obj << /D [277 0 R /XYZ 110.854 105.669 null] >> endobj 276 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R /F40 126 0 R >> /XObject << /Im10 272 0 R /Im11 273 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 287 0 obj << /Length 1925 /Filter /FlateDecode >> stream xÚ­KÏÛ6òž_a`•ˆzeOÙ¶Y´E›"q·‡Íd™¶…X’!Éu¾þú΃´dËÎ÷>x8œçMÉE?¹2Yl‰N„”É¢¬_Éÿ>/<ôó«­^}ûN§@.ò8^¬¶Ä¾Úü7ËPFQüøëêÃÒDÁûïÿnõãû_—¡R&K™-ÿ·úéÕ+ËGê,±Ñ?8̆ž2å²D!ýcEVKÕ—ïÚfèÚÃ2Ô2 ÎÕfg± c©‚?–YXÞ(‹,(ÊÒö=#‡½íÝ~Z3¯Ûª<9/ëÓa¨†ÓÆQ·[wÜRFAñÔ¿†¥6ÀâÝA¿PaLLz–‡Ó¦jv`Ÿ8 Ný„Ó¸œÍËÚûv#H’LEçN\BâÞ7À&s ü$ ÁbÝž KEÜôF¸>{|±”1hN ¼&rõ¶ª¶a¤ZH·ßû³ŠÁCùŸ˜¯èœÔOJé~(†ªȼ&åÃ;Ú×¶h؉™ÈRI̲]v¶ì†ç½mFj"¬‰k·–ðb8 @eoø¤ÙÌ3Agë¢ÃÑSDZ®Û¶»ñÔyßx¨¶v¨j·Â€¸¢œëøÐ¡+â1±èöÞ@T\®ÛCñÃÍö¼<¹ÿ¡eÒ‚—ŠÜ‹‹²mJ{ÞàÑß¾3Ñ$‹”Ö¤¹Ë¥ÍSSÔUÉ\.rè0ˆâ½ÊÀ<:ó¬ì6fãðu £Ò«[^bQe¹ '•eœ—ˆZ[þ‹¶ Á¢á§(ÒOKp&$¶QIðv;ØŽùÏŽ­Ø8–‚ÿF3Ñz© ó†¡ugU ±Lâm/½?òÈÝÓ* ?›=»ÿgç“ä&Ýsçm¤*jQð2Á%ð²r6ÜUHó'†dÈ”H;_Îàö*xÛß(µm‡–.ËUPe»qNÙØºu%ŠL*Rm®®ØÄ V_JN—zRøRωY9h´í¼ôÞTçùí¡Ã‰@¾ÚÈ=·A‰nÒ+¼¹mŒè°8&ÊŸëŒ ’Uªç;¨Ô"R ÓQç¼ÒÞwÎa,2 ıèÙÄ©©¾20ìeÇ#@©ûÅIxKèy ÎøÛ®hv–á ÿ{FÏüÎÊ€à—º®…¯™ü`‡oœäºøìÄQH!àJ”mûÙ¶Û·›ðÎI§’ÊÎ<û½ ˜OÈîbÁwmʽ;µí6ýWL0‰´[CB•ÞV»™Q~këÚ¾\âÔ´$ŽfžF![Fg TF˜Œ¦®HÄ´Ûíüð﫸U"NòK˜jw&E å¦ÅG[VÛ§KzqüÑÈ˧ƒí龜¢>òLÐ#]$¢,ÿú¼øK%µôšUU“TŠÃϨ lu¨ Ö”LO퉑\TRl»ŽëAˆ2a_êÛù/Ûµw*D‹HúR‚cÊ=iPD2/¬+6Õ=A&ZùrÛñ&½;±6élÞ¸{NÜ/ÑÛè$WÇá ‰>Æ.c{FÀ솳/Ü`Š äQdTâtÕá¦m!öÅ+ÎrßV¥uÕ*7 °¹JÕªé+ê‰òÓ¢žMU°wiÈ`šæ1Î8ꦗ©¹±Qò«¤çÕZœ¡ž‹níQ5™M-….¨¢fÅ亩㥴YêØp;¦‹ÓÞœM”›‰t`*ê뀺“ÅðÖ™3àØ'q ¹÷ >Àƒ€ž(ȆOÖžuöD,PPc("’²zuâ.eû,ÑQ],¦Ç$½˜TkxÎÃØ»ãµµ[´n -hoùsP ³q{‘4€Æ { )ÉkHñŸ%Ü3àgé®òç:çÅw'])'ÊíÜUÞe{êŠå*â£lBå¯?Ñû”y@WŸ(fï–Q•‘*ŽmßWëUÈÀÞI<;2WÎòýWgRh?vûç(ã¦÷úZƒÉ=‰ÓÛšÓåæBˆ.Ô"LÇЫ’1À4XÃBÉÀÖ2äªâ£ëeJ()_Ø¥3ý½D‰Iš]?Á0·¢Ì½èò9Ñã¾išæT,îó}8ã­3UY„àéOaž¢¯m‘ëVLÂÇÅGGŠ⨷ŽÈÚyPËPj •âÞ{,W"‡Žþ’8†QOëç¦Óg¿~þ O7ŒSendstream endobj 286 0 obj << /Type /Page /Contents 287 0 R /Resources 285 0 R /MediaBox [0 0 612 737.008] /Parent 279 0 R >> endobj 284 0 obj << /D [286 0 R /XYZ 110.854 636.116 null] >> endobj 282 0 obj << /D [286 0 R /XYZ 110.854 321.363 null] >> endobj 283 0 obj << /D [286 0 R /XYZ 110.854 93.304 null] >> endobj 285 0 obj << /Font << /F37 124 0 R /F40 126 0 R /F54 188 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 292 0 obj << /Length 1718 /Filter /FlateDecode >> stream xÚ­XKÛ6¾ï¯0ö$5KR¢DåÖl›6m‰›¢hzeÚ"[®ëM}g8ÔÓö®Å<’ÙožZ1ãð'fBp¦U0 ý ÎÒý˜Ñß×YKýv÷zy÷ý?‚ã,Vj¶ÜØëËõ_ž˜/çÜ{û~ùqpïÿ?,ß~x?_HèÐñüïå¯w?-A.=ékÍTà}å±öà¢=¹‹yøÒy>[D, ^<'}ùòûÂg\†tÎ8PgOŸLnÒz¾V%‡õ)Kw´\$y^œþ5eAëM’WÆm•É:+Ô[D`§X([6í¹äö¶™œ´‘{ŽÐØy÷N;¬©¤Ëý¼ €@^`-D5’¶$ìäóN” ÇcQb.àNyäø­—)*¤W±øV´Hª‘‡ºWŠC]ùè«¡ˆ˜RñHà æ‹ï‡Þ·¢!¢.ð7ò[‰—ÕŽèÐ~A)Wï.P!oåàY\+JAĸÒmQ:R[ÁWªº({‘Œ}\îOôÀ¼RÚ;ípò°FJS_7c‘•©mÝ‘tA!½Sfm»(”Þ¾Xg_8—Æ­×"Ù…” #°ºkiqÀ[®Ÿ¢SïŠu…e)м?ç0{{¯=ܪ³Jq¡z48ØH_ÖX Dl™ÙQæÜP3.&ØZ±ýVÔåq¡mmÞ6/VIN4!ìÄo¢wz­€aß–ÿÞ0+„bT1¦}' \°"nJôín[ðÃe[Ði±ß£#.À™ò§Ñ…XË­›±b…¾µøË‡wD´2íÂZú9¸ £¨Y·ùo„ã^u‚eGl@¶ˆ ï‘®§+Ýau©F}²m0YÛ&³C•­ÝVB?WÛ5À&c °QÇîí82<áG1@£¬ÔÈ-†ˆ¤ÄÑfÛì!ï á¡v¸t„=2òD‹a‹h2ðÛNŠÄ´üEW‡ÚGW—îhV]j©˜+0lײ"fqçëÅ:«0jѸU’~½T¿¡jLƒäS!±¤­ˆHPÊ*ßå¦rA;m¥¥«öÖ»½ž`…Š Ëq9êL©A8:Æ “R…×j+ŽrBßÿž™îŠ&oß2ôVÈ;Q“UmT*5JoeýK¶ÁŽÿS}ζsô4NoCž]š“¥d:* ÀS–_ng-ùñçáY°Q«&ýÀMúÓš‡§Â§Û¿hþç9'++ 0$Nsh ö6\apáï.Áù‡Êqö¶ð"•ZìˆKŒAÝÀeiͰ¤íðVîÎ]žxÆj`³§,>Ð+|Ûª¾C‰˜_ËEèAïÏÖImÒý¥…øñ»á”bÔV1҆.Ò¨¢üZõ X‚&&¤’ê9ÝD PߦŒ¹‚qŽR·o¥Úu9ÝwÁéü…¼îSJ뮸 é®@­J›ª²}–™]u1 Áä+üÂÁ9ÌmZ˜màç!«4‹¢ø¥˜}ñŸtÿgl-Œendstream endobj 291 0 obj << /Type /Page /Contents 292 0 R /Resources 290 0 R /MediaBox [0 0 612 737.008] /Parent 279 0 R >> endobj 289 0 obj << /D [291 0 R /XYZ 110.854 636.116 null] >> endobj 288 0 obj << /D [291 0 R /XYZ 110.854 128.024 null] >> endobj 290 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R /F40 126 0 R >> /ProcSet [ /PDF /Text ] >> endobj 296 0 obj << /Length 1030 /Filter /FlateDecode >> stream xÚVYoã6~ϯ0Š>H@Íå!êèCî¶Òb7À®û”æ–i›X†ŽÄÆbÿ{‡Ê–l§. Ñpî~3 ›Qø±c”¤2šÅ"&ŒÅ³¼¼c3ü} ÔŸwïwïîEê$“r¶X;óÅê)`áœQJƒ‡O‹ÏaDƒÇßþú°xxüÎ9Ò8à4|^üq÷ûübH‘¦DFè7‚ ŠóAsÎ#’Ñø–>„f`“,I¬²ËŠƒ3š³îÌþ‹.tÞ…ó’'ë¦7]‹‡y¡–º@ú‡{'øÙŸ¼B£V¦Fz­ŠV{¶-t6²`‰¢ØE{Q…Y©Nçå U¯õGµwúuéÔ'Ù¨•·Q»]‘·¡:½÷©ÿ:f¿šU·E~ì¼ÓI×ת6C 'Çcöÿr¼Tü.¿³o8Þ©üëôмOI ms:MOÚêèoÐô^÷luFæÿf힊BW›!•ñ³µzwÏØ@L$$‚ @ý‚ˆ1I¨ðr>‰Ðà$ÒIîú¦Bµ§bÔsÌiŠöìýØB’‰HÑ8*9y3 ñ¶Ó“$ž@ô;>Ù‘$ŒÇnX#Û Pû›Jzo6}Iq €à1<}Ùéܬ¦Úàùc=è}¨K‹j&ƒ½WuÃjê ŸûB·ç{…%’Ýå<&±|{[üËÆa°q"–ÍæÉb~ká#iÊŽËæêŠÌë²T £ «ñ»´¥Æ2È ÏËtÈeðbËÖÍÁ«›R{jë‰¾Õ Úª®ÓåÎÎÝØs¾EMŒÚQáhªÖ¬ô•SØàE(dpÚ‘–“ºÑAX%DÊlbø`=Sé#R[Œ½>å.ÒI`N7*ñ`‘ð,:YØAÖ+ –ãT{É)ÜH4ÌÕi^b¯õjŠ£-}„c³wÞl›»m¶ƒJð ’ŠéóVª½){¸XÁ² êË¥m¥m‚Ã#é_Ë붪(öÓ±jüæÛº¶‹Ì¼¥×æþxÀ¯*Bà´ÔaˆÑôU®:»X.~‰ ܱ<x§‘32ì/ЇqÛª²D ¡¤ò’÷™ÕPxï.ÓÙÆ·%³dÁÃy‡ºGM¨a06íµ§Ç †îÍ„ <‚åK¹Ý:–[÷2}ûå-ìPTÈ©Æ#²ÖoÅjð`ïÕÝ+rÕºC›‘ãIg. hGËåÔ9À…œïw»m)ü·g·öòÍÿ0ÿ­UÂÂendstream endobj 295 0 obj << /Type /Page /Contents 296 0 R /Resources 294 0 R /MediaBox [0 0 612 737.008] /Parent 279 0 R >> endobj 293 0 obj << /D [295 0 R /XYZ 110.854 636.116 null] >> endobj 294 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F11 298 0 R >> /ProcSet [ /PDF /Text ] >> endobj 304 0 obj << /Length 2075 /Filter /FlateDecode >> stream xÚËrã6ò>_¡ÛPU#†RÜ[²™d½[5I%ªšÃf K(S‹ â8_¿ý)ɦÇ.Øènýî†Ä*ƒŸX ‘¥[¯ U¤B«úôA¬ø÷°š ÿ|øa÷ởT ìi¥õjwOÛw͹ވ,Ë’þòe·®TòýÝ—Ï¿­7RgÉ×»þ¼û*]”‰ëÿíþýáónàËÕv›ê\üʵãfâÜÈ<­23K5Q‡ÃjûyÞ‘­6$+±’ôy±e*Ųô¾ëì%_‹m⚃Ãs™á`•æUþ–ÈÀ'Uª¤žX4ß]·Þ¨|›˜¦q£óq5züVI?øµÐÉŸ®qÝIÁŸ,C«í¦õþa¦¹n´ÃýZd‰©#“míÉvcøËR%»µÒ‰û‹iþ~-uro‡pu4¨KÆËÓ,†"žƒ½?·À¢¶É#þ„TÅbÖh¯ÃZ'¦sÛH1ÿÞ& ýÐp·×óGß6 ¬t:61ä¹2@º ò¿¸nR¦È²d;>“ШÙÇ5˜Ž‘1©‡®ŒYÔ†i+Ö<:‹­U&:2Ϙ¡æºÃ‘)Ø6»b#“‚µ'&Å®r+øžª±ŠŠЃ m=ò"øöÌ*Ó€ðË=£kpK Eô0bMÇæn}ô=®drî1]™ý û€s`‹°?Øñµ:‘ƒ„'ð93­Çsó<Ù{6U!\£ƒ(Ìa1®EÔä`#Œ8ñˆGG®èäÃÈPëh` X‚ÝsÍEwê}n߯I <Åtæp;Uq#——¡çý•PQ €g5xIéw[Ç`øx}ÿê°cÏæÏ]ôU¦3ÔçÀ¡»!üxÜC¦Ë¸+šú¥ áæϼ }Ës¶D¯Ç{LÜaâw²q ä5ãÒ €‘ü' Ê+ µÈìyM~¯åî $T‡q!Ò¸<3˜8ݵ¸ìHÙ4¨•¬âÐ0­ru;:¤gÖ0N>0è»Ë}KZìqxѯE¡aP.1’¼f‹·z'<Ìr!¿õì|/.>OÓƒ91•ú®âö8qÜHFó00–£M©…’Ô¹,Cˆ¯ná’ÍBÕ¥‹EµÅBuKVüŽ@ ]Šn°ö3v°ߺi¦…çAıØ7”WµÑ“¸ÇQx)=ÄuǺ¼*EñŠ%ÔÄJLÿd˜¦Y°ŸÔ©¬"´À£o¨›ÈIš{ÈÞøHWà”²Èot›_PøN‰Y-Œ¢d{!ö©æ> endobj 301 0 obj << /D [303 0 R /XYZ 110.854 636.116 null] >> endobj 29 0 obj << /D [303 0 R /XYZ 110.854 611.21 null] >> endobj 33 0 obj << /D [303 0 R /XYZ 110.854 436.796 null] >> endobj 300 0 obj << /D [303 0 R /XYZ 110.854 209.596 null] >> endobj 302 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F40 126 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 309 0 obj << /Length 897 /Filter /FlateDecode >> stream xÚ­VKSÛ0¾çWx˜샅ž¶Ü„Gi;é@ÝáLâ$;ØNÿ¾«‡“¡ÓN^í®v?}Ú]…x~Ä##)¸±yýi‡xö÷äµÒ·ÎiÚ9¾`1¸£D/šíéàΧAH0Æ~÷G/ æŸ\õÎo‚ ìß^]ž§?Á!QìS<¤_;ç)d°É™”Hp2¤ÅHu5òZñæré¶¾!å(Á{¶þB"*©’X .¹v÷ž!pœÄ‘ ¾.ƒõ¹Ã¸ÝL)n•ÇWSB½³²sÝñ®—±9C„ @"QDí·Ÿž{,ð…Í«ÜrBC*béØiÓ€ _½ôÊ&?-Ë'G_À±¯£¼Ùä 'ˆ“ !å!.0l°À;FH9äGd§–¢w/JËÝ®aê Ê-ÁÉ:CÍú¹#¨$TèóÔq/Pc6Xa _BA'Ùc>±Ê£/Yåìgª~:²b8/y5QEn×ø#ñ  Ýî^ßË›EYéÀD¾JC&ÔD®Û@Ã*›:¿»6]=\Ø+v‡zxƒM´ uË¢©J‡â“‰„²~?¯ëÉ:ÊgÑ‹TMóÏG;N¼'ê¢R®J¾ôÖLÌqUÎGãpGÔÙ¼ù›lUžß o&»1úU®ÿªŸÍ²¾j^wÜj×™6ÂYöÁô´“÷mÒ6¶m˶GX« Õ”3v¨&ë‹Þ²1kD„X¬‡AŒXï;t5v~ÕªýÛ""AÚ9¤4AKöO‚ýÓ WÂI@ púéIJãnÿÀmàD†"=l–V‡ŒœËªé¶¹ŒÀ‘qç8Í›q©ë“1¸ ý¥À,¦…Ó•óÆ*uR£™e͸0mnìÃÖ¬j«q3@+ô®ß¶¿Ve…­™PƈзÅnªÊÈÏ*üß~^½Bds• _è›”±¿Œ±¢±Z [ªžM²W»( g4·Â,9IvGì@km’´(9‘þw˜{Î…ïjP‚ÁICƒþΪr¡ì*Ò õ¸Ô'ZÔvéVva°À·íd¦’Ö`±¸mª°}óÆãžRf_ ÿ?ô‹îÀÀ‘ÑÐ]jÙMÛ«d°X&[÷ÐÉôó é‡'Âeƒ#×Ñm¬¥G§©ÕTM²*ÂG›=¸âQ~ð9þÀߨ?‹•oŽendstream endobj 308 0 obj << /Type /Page /Contents 309 0 R /Resources 307 0 R /MediaBox [0 0 612 737.008] /Parent 279 0 R >> endobj 299 0 obj << /Type /XObject /Subtype /Image /Width 341 /Height 220 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 310 0 R] /Length 1996 /Filter /FlateDecode >> stream xÚíËvâ8†ëÄG‡íd‘¬ç@€ƒýi {g¡ÙÏ¢Y3+^\ªÒÅÆÆw,§Kihþø]’å_–ýúº–ô¬&­ u[N»ã6†ôQÅØ#êápHw.eGÌÀäó.ù‚[ŸÙµ`ZWp×PðXÎKu·KKéXy¿LʪŸ¨j¥Ð1"U02Rõt:g.\ªËóÓþ[Ö’>ø°Uµu½Ù´ëíÿëÒƒQuE¨EDߤ¾ìl¼l#O/NÕ—°‘ÜvoûzlkŠT£±:65ïY¨j»€]ÁÍš¤çzU³&U÷IÓ›&!=WUåu$ÝUe¬:T˜õNÕÄ~{gUËXé=cYâÉU…VU!)¢dÉ𑤰 “W|¼xJyÉD¨ÃUHíý—ì 0›‡ÜȈož¬ªÝ/„ª@ŽÙö RSЖç%ªJßüHUÎÞ;U÷‰%ÁMŽ’¨¸ÙÍ—  S¡’ª o£fUȪ2Úž6;mì èKÌ’IUeÔªÚHJªÒF7,,hˆjBÉdª´©êw ¬ª­L©AåZ•¤¾®ù·É”ªrlõi *7EumkŠo’távuù>@ÿ½Õ³’¨úUÝn)~U-«SuE¨ñ@íK—sWŽaÁcða«j–fÉ9H§óRéÔø†U-rã·,>Î&V·Ù—þînɿ鎥õtéå°ýQw§/Ýgø@ëοi2Ô¡¦ÙW ^ß¾;•þ~RUÛüê£ÀwW½&”Õ·«¿z péXúŸß³¨;jUÕ\á?ŸüÊ>;TÐåâ.q֢š¬T˜µEUó<ˆ]æPU*Ì«„($ ÈA’Ï&—È5/PŸó"H”Y˜e><·ª@X9®ŸTúƒPUB‚`1Â".ÐOšUUªC¼N—PIÆ*ª)üàí2³ªª…¢,/تƒ¯@Y‹j@sÜö&bh³ƒù†Ù[ƒšÛmZA%²2jN!aP•ÙìF~(s«jêJ õ¥(¼CFHPs¢VT¥PS¼:[«ÝW Js­²¯x“hnæT¬R¦.)ƒ †£ÔV•Ps ù¹:©¹PÝëZPWÙ]‘N ¨úÃT]໡ª>Ÿô}¨ªÏO—¡ª.*ªŠª¢ª¨*ªŠª¢êŸ¬ª€T+Qõ‡«Z;>û$U/}ÒoF}_DÕ^¨oúUçø¡eT½uOÿ!*ZŒ—eT퉊c+QÁ¦Qµ~TÕ,Á±¤ûňº¹Ýº€ž*V›QƇ TØÜ®†w8êU¢ÖÀxÔ!ª*lKÌ8øªÑ —‚œÇŒÄQ©Õš@U°S8–ެzT0‹xðË£^»Åê{=êUÁ’¹‘Ud Tål(U«.¢"êd}7î£iÄ’G^ËÀcßeÔëmjUMƒäQ PÑO¨ªZn¬6]ÛÕúîÊpUAû!7{2ÆCÔë­êûxUíé\­ø¡iX¸ŒªJÕêúô½oöÇ•;7$DØü¸>À£ž•t£®¨k=Ywe!Ôç¨ÚgØoYUÿí‰:Yweöô>Y'PŒ ±×DUQULK1-¥¿úãMËü(9 º»k„º1¦eë¡àÐþjB¢.¨nnúUt¯­ËУ€UCÝŒF­œÀ?jcµ2‰ñRÐ2뛉 <[| sf~޹п0ðkY\o=Pu­ JM¦ž =*àsÆ 0*¹æIólç®lz óW-ª?íß¡ÍtvpîÊAŒÙ uXw…çÓ8T€åPÛvU{UƒjÕ µhŠ»Çê0•¦'ŒF½õQu ¿šÛúmæÚäp«l´W+sµš,äLË>¨ÃüÕ5WacŨd´ÚABåY%:aé³c}Bw:±u½ù?uî®57dS Ši)¦¥˜–b‰ª¢êªU•UüUñWWí¯š+†¨ªc¥¿ê®R1÷"ôWï¡£ÎnZú ñЉTe›iiGëò(ˆÖ´¤jÅ^¥w­b4-iÝÆ«¤«ñäñš–Þx‚Qª>ôœõ¦ep ¼\­¢3-é<j¬r¥ïýU1-ŴӲ߫ø«â¯Š¿*N ¨*ªŠªbZŠi)¦eܦeûqJí l¸Cå™ìæ0ðºH5ªʨ<“Ý\_a‘ÀUO§¡ª‚;¤£v€f1çª<•çˆ_‡™–§OsŽl *MW௾Lµ¨í±ÚÐµÎø6ãTÕn‚½›äÎîU%ó:È Üòm8²‘öì6v‡Q7ƒQkCÞX±ªÝõì…£µºC5íÔuµScUEëûƪ+êû,»€ÜV€kre“¾¨sîX ­»À8(;Œð²ÅŽövÔ¹»+М['ðÕubóW¡&ŒÿlULK1-Å{MTUEÕ?XÕKÜ)ú0«Z¹…sEª`°ªÍw›^.eU £jåNÐÇG7xî|'è±÷›>îÊy¨êGåÎÇs ©Šª®&­ õ%}òrendstream endobj 310 0 obj << /Length 40 /Filter /FlateDecode >> stream xÚc``øÿÿÿíë§—ÍkŠ uݵkWnnî¬ØX†Q0 Feð ýendstream endobj 306 0 obj << /D [308 0 R /XYZ 110.854 636.116 null] >> endobj 307 0 obj << /Font << /F37 124 0 R /F54 188 0 R >> /XObject << /Im12 299 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 316 0 obj << /Length 2120 /Filter /FlateDecode >> stream xÚµXÝã¶¿¿ÂÈ“ œ‘))- \rw¹kÐmèCÓÙ¢maeÉ•äø6}g8CùK{»(ZøôÌÎç’³~r&e,2“̬¶BJ;[ïßÈýgaöÓ›ï—o¾ý¨S¹1³åÆ/_–ÿŒÔ|!ã8Ž~øûÃržëèÝ燿ÌÊÄÑ?>¿ÿñÃòWÈM#¥çÿZþõ͇%œ@‡ë,&Ñ0æØ ¸’ •ˆ<öjÆÂxn·…é/?Ž+âÙÂëêE½ö‰Ò^HnðÓ\™È=­Ú¢+éïÖkW»®Ú®¿ÕP"Qö%ÕQ.q–ŠLšñ¡*£aW 4«ëªažZhš´]»íŠ}ષ4;±ü®˜«8ú}.ábaϲZƒ+ÃaLœËd@ðl7ðfMD¶D¥7mr6lcãh8á>-QÅÖõ4=öU³=ËÂVß~„¨;ÛAj%2¶ÅâØ”®ó·ö‚WK‘%)K¶‡¡j1_èDEKRBÂ}Á‘E}ä¿ÞV¨Û®bmh͉µÐ[©°pÂåEm_ñ’ÔÒ†0Ò­S­wEW¬×1½¥qåh¯S’xÕ\­·Q?t`ô]¦¢ÓÎuLÿÃu¼Uçë]3ô´EÐöڿűêzŒž4¹PʘM”AFî\C\>;ÏÚ:Âzד͕¼tN¦…òyЧüyÂ}¹qÂüwõ°x˜ØE‘YËB™p­TB§&¸¶›Rôx­sC1©G¢E¬ó×ê1ê7¥ôƒãïáoB£e&´¶ì C¡Ë ùNU]ãLR8œRa„R˜B*þ è6mHŽNÁfÑvESb|(Uâ’”üŠÛ”IEž«ìe.Üöé9·™¯™KŠ4ùª×”0¹~¥ÞmŸþ·-tš‹D.S‚Œ™çÞ}Ÿ|aÓPëßW=yÐóØ[0#o¡ÄŠ)wÞ‚TJLÆÕ–s )ý ø÷mûH«OU¹uÃåž~¯ãÐî‹a1‘ºP”ëú‰3·sÅàΉî‰¨+¬çͶ§TiUÏë®Jø¥¦¾/9ÜhP–â+ÓWûª.º •±ÌiÀ“oX:D.Nö®92“ ¡•ŠÊÖá‰ZgQßi b‡’XˆqlxÛÆa½ôÛ2¥w·çÜ©£Qîun]ïê˜èæRk!Sù:h‘­^-4C‹÷®.ž¨š84]ÀLÝ\f8›Z P¨¯Çу;Ñägï‹­{¤ÿ#üñyƒ«£'°Îøap+h­Ûf(ª¦'Þ¾h¼Ño¨ª@¶oüèi åj ¡}ñDÌ¡`¯yò¿ÕàˆQå´«j¦€ã/]H¥uÌŽ–Pfi³ž¨ fU²DÈ p×5%ÑèºH:#)øR›b»*V>3¾éœû#l²i§²o!é°^œèOïÀ|eON¾ãÌ›ÆC{`Þñ@#¸¼r‚¤¯ùcÇ÷Ôjï°:åŠRæa’bC©J"¹ý R(S¥¨+zFkYíÛ=£øSWÁuøñÔ[.qLZÇyŒ¨"ñëo‰iàQP6]\ÕQ pAÊÇŽÙ>'x«{mïÊ/f …ƒÏò™L…1×M`†…¨8Ž!¨p^Ð@úAcà‰Ï€W›ŠÄ†W”åDwRFšÜÞ »º6–u°d<<¤?¸uµy:Ÿè'Z‹šQ*¼ÛÌ-JÀ;»nBE#¡5ʰéºëý”¢©z„i¾NÇ ?Jpæµ…±mê'šq¡F)–­3ÐÄ Û· ó_2= õ“ÊŠ4O¯Rž…!ÖÏ–ÆÞq­Ä· ³$ˆ¤0ÖõàuxñÄü¨Š/_N1¾«¾{.X>û‡‚ ¯0˜)è]a/vÂGîBcN¤1儵œ Ö>;©…2þ:ÏÀÛWª«§ïÜÒ8çß‘çƒ!hl&2„WAÓµkWb²=4!fðš}šRÌJ«û]{¬9 VÞ½^P¨CÜyß\a³ä›!ï6gýe ÜŸ‚ frã7²d)&î•H!uúŠ{ÅBš ú–VÿŽ&…oâÛ#ÖIt}ÈYäm0!iÚW#(ÄåGQ¼§ Û½ã#Náv±*O®oç+­É1 ÞÒ ö"¢óë?üÙ ã¬È±­Ð„> tOÄ.ám]k˜¬aˆ¢†˜7;úO ð~öèëËÚøæß}ãö•Cå¡ÎaŽöG¦Õð†!"€ @ÞÑ@‡ÀäÚÔ‡W¾S*jWÌ ®ã ø™SÓÇÉt#©¨œ_iÖ\WØÈüÀŠ3ÝXIP÷mÇl3ëG(‹Üx-Ná)•½öãUf²—f>¿Ÿ¶# ¨‘þ-çyV\ ûJÝp·äÿý¡kD&*ÅOÏneƒSðÀœ=cbäT 1F‰ÁßYÞûg–=#Ï„û*žRðF¾ñûª 5”>BáN€ÚüÆgÞÕׯj;–Í««&ÊavÕê¹?}ÄdñÏ/Ãï–/`gŸÁ—ƒM[×”G£8/¾›p”³,Ñ/ùGi‘øîñ‚œ„w¶²$çÝxe¤àFѬæ ÇvbcxÒ®¤qQ+WÓü›ÕÇt,ðßL=à%´§ª¸J…à뜑ž¾p±”oŒ´M×îivî"(rñÂ× X4ñUïFPÐó#Ä'J—˜!|dA$¼®¯ò„„ƒñEuú> endobj 313 0 obj << /D [315 0 R /XYZ 110.854 636.116 null] >> endobj 305 0 obj << /D [315 0 R /XYZ 110.854 611.21 null] >> endobj 311 0 obj << /D [315 0 R /XYZ 110.854 443.568 null] >> endobj 312 0 obj << /D [315 0 R /XYZ 110.854 198.858 null] >> endobj 314 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R /F21 262 0 R >> /ProcSet [ /PDF /Text ] >> endobj 321 0 obj << /Length 611 /Filter /FlateDecode >> stream xÚUMs›0½ó+4žà Uâ«·Ävš¤3n›0“CšÙfŒÁÅxœLÇÿ½‹ilƒv8°+½ÕÛ},+†(< 1F‰ïäÚ.aÌEñÒ`H? ÔZ_ŒËÐøxe{'ã pªÂÃäÑäf”RsøuZm^ÜLÆwæ5nFŸÇá=ÇõL.¬§ðÖ‡À Émß'ްÁî¡m¸EâÀ#<ðÏá)Âq…sÇm"?ÏÏlB¹«qJ PìXŠ*}ž•¼,Š……]ЄäuÅu.̃ܙ B¸ ; %‰6æðf œE?e¦×QÙìÒõb M¼ÉYfi.µO›eÅE÷hâRF•Œ—Í!Cå^'È£„rY5ç¾Mh"«mQÖ™0ÿRî§ǵPî?` º*‹ø aåýž–ÑRîGB”ìK _aXäUY49PQ$Šc¹^·y¿­éBï¨/Õq^˜.å§Á?²mË´M¸8${P½\ó²ØÌæ«MÕÅèœb¥@&›ÞÕë§ùzèNG«(N«—ŽÖ[¸—‚úÙ rÑùÙŽ´=>^˳'GWÂÇ­‰×iÒ4pU¬šŠ¦iÖôܲÛk[ÞÙ¶“öz_ßBz‹ÚNN ãZØ>¼…C8Usû—ñøDQbPtkPâq´“ÛEKãuÒÖnfÜßÿÎ6ê>꿎¸Îiÿƒ:ô*mJ©G<Ç6,1íŒd½ÈD;ß,æ˜Ñ¬Á)EÒ"?¬Ã ˆ·N«Cï>q50(M°®¸ö;nF9á^pyörúâ俯endstream endobj 320 0 obj << /Type /Page /Contents 321 0 R /Resources 319 0 R /MediaBox [0 0 612 737.008] /Parent 317 0 R >> endobj 318 0 obj << /D [320 0 R /XYZ 110.854 636.116 null] >> endobj 319 0 obj << /Font << /F37 124 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 328 0 obj << /Length 1311 /Filter /FlateDecode >> stream xÚWYoÛF~ׯà# Të=y<ººR'Mhq%±¡H‡¢¢8¿¾3;»´$K‘aÀÎÎÎÎñÍ!qø‘œåFG©J™i4_ODDŸ£@ý>ùy6¹ºUˆ³Â˜h¶p×gÕ?±L¦‚sÿòÇ»YR¨øúîÝ͇d* ?Þ½y{3û “f±4É¿³ß&73xWyÎŒV@Ÿy6NUÆY‘k R–§åÏ›ôw^ÅݬÐY¼YuÛ¦"ºL$¿â¿®ö¬í¦n—D+‹^ÝB<žµ %™…×ýX.í¼kõrÛ{銔I.½pÙV'JΤ0^¤²N)ÒŠq^eÉTñbt¬¦Û~Cä®nT¡3 "%4ÓÚ¸ëÿm7Èe"^XÛ %Á¶¶K@Û“­è¨^ÐFí`ûÊ”sKgóUÙ.í†Î˦!Â߀«õÚßEÏ«íûÐuŸ‰Ñ ·mÙ;›¹76ƒæàSÕ/ä>m" äN˜ØöOÄ€·£ñ˜Ó²c¨MEÆŒ)¢©ÎY‘jgÆöË(ÞŽÐ(ÔÖ#ÖÀ>0S¡™{ðg¡î]¤Z[}LDÁ«\xwdž€^ÎD&/Aä¤`ßÕÕÒ"rD—}r)ØÿJãzðÄfû@w¼XÝ¿íÚi‡©óùk ±Xv±‚§LçùÁÐC}_;Œëx‡ØÒ*ž—-16ÖsjÏøÄ¹tué¾äTÿ„”ñÁ{|žb 9åÈõo~Ü:àJIŒÞnêï^ AÕØÐ}°ÃÎZ4&/ü£yN¾oÑõÄó‡…«aÏꈳ.ÛúqÛ”ƒ=Òƒx=ÝâHÍøFNe[·ú¹^š§$51;°ØŒðqEIñâÁŸùdûò²5¼êkÒ§s¨çÐ |Q~â†ï%8` úèüÕU××ß»v8¼èEÉÔP²{¾)ç+@…tFÖÕ¶lˆ‡N …A|"ÖÊ·|´“8[è)=‘®e ш_ÄMˆxíPŸm÷$1(N¸˜AõÇ« “I˜~iúsï¤EDH*Ffqt¶—“£ª/—KXû’#:1°„NŸÁH”ÞaCêöt³Í X¦Ì¥î$ –q…~j–Ãñè ´ÑTi#Ì> §_&RçîCºÆä˜Wwk¡¢7Ýäý$z?êÖ,€v s–B+úaûû &¢$ÏBoŽ ˜=ë%“uf²`òH{“™œñ}“õ “UƲT½Îä_GàŸ°"ªËŠlÔ…W°2në35–ð,QÔçIŸßÁ\£síx"J » ¸;…%Ï.¦<5Œs4̰œ§—Ä¥bZÈ­v¯å…Ë¢…«-¿r‚SùíOð— ,“Lø~]Ucq…yî+ð®ÝÔUhˆ!à8è¿ü>þÈ;ðLËì5‹gä+—^%3êáŽè­›$J¦h6²Žpòb¢L˜…Hû ÉÓ²4TNØhPíÔž[1‡-J />ïÖS¿¹¦ŠYzÐ4aV¸°,•Ø÷ÊG{žÆOnÍÏÃÔÊŠ¸¬*"Æ™ˆÞ¹éšá4­=o÷Y1þÈŠ3.*n˜mÆ'^ú%¡¦^bm‡UçíÀêÅU…œTËB.;}·ìËu¨m3NÀ#¸@\_ÂËÅUÿ½aÎendstream endobj 327 0 obj << /Type /Page /Contents 328 0 R /Resources 326 0 R /MediaBox [0 0 612 737.008] /Parent 317 0 R >> endobj 322 0 obj << /Type /XObject /Subtype /Image /Width 248 /Height 269 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 329 0 R] /Length 513 /Filter /FlateDecode >> stream xÚíÝInÂ0€aõ‘¨Ô¥=Î H¯ÐtAÕ”u¥.8v=aå!»5‹Èv>Ó®´Åví»Ú•û€ßÇB'“«ô?IHi¤µ}«í Îíø …ŸÔŽKäÉ…1´°î9µ9ýœ*¶)î4Â\°Í=ñžvsAóøš7¾»úÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ>þ+ÇBöz½þ\ÆÞä olúöW¶/zœýVO©oìäö»÷slllllllllllllllllllì1Û¼'â=ÑÖ7vj›÷DØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØÿÛvK> stream xÚc``øÿÿÿáÇ _¿~}ùò妦¦Û·o×ÖÖ2Œ‚Q0Ü:hbendstream endobj 323 0 obj << /Type /XObject /Subtype /Image /Width 243 /Height 270 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 330 0 R] /Length 529 /Filter /FlateDecode >> stream xÚíÝMŽ‚0€á¦'€…3.IõŠ'¯0Éœ`Ž0®Ùyìé/fJ€±ÖÄ÷KlJŸþ€Àê+ËLQ”ÙäBäŠâœ)Ær›LjËê6vJ£–kä‡Ë»zˆ¶N·-÷òÃ/©'›Tëiù„<%WB)Ñ2ö›iyù^r%çÊnãò¸ÒÉB¥…m¿ÒƒRT²fKèºKúV«ì÷ur¸Î¦d£ÇŒQoH³GzÛQynžRnüΘ¬CÚÕ…™wÓ _8RT2*«ãj9ŒR ª™%Ö{û¾;øU²¿‘LÉa¨av}_\QMÉõqõ¹=’ûûYp52ÅUåN0ÙIÃ\¨dr¸hµl–Uø±ÚëN¤‘ïtÇØ‡î’yä6Ù³çß-;9Ýcn–Åç&VÓmæ><õ"##¿ªlÿ†ÖÜG~¿\.ß k‘‘ŸS~ûÒ±°†ÿmddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddä9²É^ðpÙf/È'Û¼ –É›€ŒŒŒŒŒŒŒìäëÂØÆ*ºíœÃùôzùbÉ…ŒœRŽgiN—ÿ¹—Ì"_&ù2Wùä«oendstream endobj 330 0 obj << /Length 43 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~}ùò妦¦Û·o×ÖÖ2Œ‚Q0Ü:hbendstream endobj 325 0 obj << /D [327 0 R /XYZ 110.854 636.116 null] >> endobj 37 0 obj << /D [327 0 R /XYZ 110.854 550.29 null] >> endobj 324 0 obj << /D [327 0 R /XYZ 110.854 137.736 null] >> endobj 326 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R /F40 126 0 R >> /XObject << /Im13 322 0 R /Im14 323 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 336 0 obj << /Length 1703 /Filter /FlateDecode >> stream xÚXÝoÛ6Ï_a&3Ç‘Ó-í²]ÐÈCÛÅ’c­±dHòœî¯ß”%G®ƒ<øt<wÇû`Čߘ ÁYªã™Q† af«í•˜Ñß·Y >\½]^ýúN% άֳåÚm_æŸ#9_ÎyôÛ_—s«¢ëÛ7Ÿæ ©ytûûû›åß `µI"iæ_—^Ý,á:\¥)Ó±ú̱Ap$2f–›Kò|¶H˜‰/ÊIÅb!/Ÿ/ãÒœsxì¥+ºòù.«Šü¾¬òú0_p Û¡ÑG$_Ä,޵“†'‘å9;Ø+ˆ\´å‘à\§ûÍæüfé7o³g¢Ôq¯LYj¥ÛÛßãOû´µû‡C™?öëèëÄéû®«+úi'ØC€ÝÏ~ï['"^³YžÙ,G›Éi»lõíå¹#5m™{×=k¯pQ<ƒ1ÞUß‹ö‡^‘—½"/{E²‡v½¹®ênS4C+ßLhZyÔó*È».Ÿžˆ|€GÖŠ“‚•¯ÖtR …xb@y”Mò/\ówåã¾)¨È…– ë˪«‰Êèg9W:‚¤òbùý/At»wáSÁ@ÀUhh‘n° ¼{¾ðàwíÚMSV߈—ÑO:×Ñíz¢hVEIµUÆIT¶ôÛîŠUù…sY`È8E4­. |h€"\@q©æÁ¥:àw¥<`ÛÜgò@먃k4H=ï UÖ훡²»5‘Ñ®©Ákø!°ý ÐâTÇõz”#À9â®Ç ìz=• Ö0Ç}òáÔ6‘¡æi&Úôá0GËgWu]êÀ¾¥¦8ÄDw€rT+fD|2$„{¡u„ñ´šaÊ#·ÝFy]ý<wúô6Ÿë-æÿ$NBÕ GOeÓ‰²z×/õhŸ\ |%/©mkÒWz¼þb$i”ívEæO+« Štªà…0vQq”ˆýÅYh.£?¨P »NØ)w·7P7ñ9Ë’Ä\¨ÓÒ!ꬤsÚ[Z2Îõeo9pA̺#Ø¿! «šodŠ¥äqÙzÁ¥Ø¨(³u”ÈðH“êüÔ=8‰ú¶uÁ_L”K,}²°ÓïX  #ÊÍgÐÎÜjó8 ä§÷ç!`Iõq:GL²´²jЬs –CÉ±é¹ žJ¦“äÒ¼ÉS;š7I»ë$ ºhÛ¢ÂÒúô2⯱v‡Waáðp7ã¡òzígE¶ yj¬m¡†±ÃË$vî‹Ö¨Ù£kݨ½+pËWáÆÔ-C´ItÝ«õÓN5’žxËõ­ߊ‚!À!ÜW䜫Ï0Ù§}쟤/C£/ïÇÇ>$¨¸¦“°wWžGS ÷e9ÅX®Yó0¿Ã]1%È+F†ö˜Z7\¤8DºiʇGAGÿìÛγ\؈¦Rt ‘c,`%ó¿¥lh}µ)Ÿò&œ@µ*VþaëeÛbrN¼ÃL.§2vAB/ÜF—f0ÓMO^¯Óë^wýb,†e3Q/¬fðÒ¹T0.þ/íendstream endobj 335 0 obj << /Type /Page /Contents 336 0 R /Resources 334 0 R /MediaBox [0 0 612 737.008] /Parent 317 0 R >> endobj 333 0 obj << /D [335 0 R /XYZ 110.854 636.116 null] >> endobj 331 0 obj << /D [335 0 R /XYZ 110.854 164.563 null] >> endobj 334 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 342 0 obj << /Length 1165 /Filter /FlateDecode >> stream xÚÍWKoã6¾ûWè(ÇHQ½µÝd‘ØW\ì¡íAkѶZ=¼’Œ$ýõr(ù9NÑ-|Ðp8Î|ó¢Y@áÇÆ(Ñ2”P„1,« ð÷{0P?ξ[Ì®oEâ$•2X¬ÜñEþsÈ磔†ß¿·˜§"üöîÝͧyÄ% ?ß½y{³¸Tª$äÉü×ų›Ü€— ­‰ŒÐg®£A2â1I©º$Ÿ&„ DL "(·âÁ×€’„ :™Cv¿Îx¢Ü‚ >0¯ï*&ƒ7Íìã,ø8êÀâÄZ¢‰b©•;Î/TÒÛb½k "Â#,†‹÷»~»ë‘nVøýÐ6ë6«iyŠ`ES¸žH­/áÀ”$”&€#\‰Kâ\˜ñ—ÂñZÞ`-„-"–Á«—évÛu0ŸÞŽ'(ˆÆ$ŽÕˆ+IG8>ñîMßõ!ë7é÷mnÚclǽsFì6Ý)ºÔÂóäNVŽª/Dÿ§n—•åÓ\Éð nV"|ؘÚR4|jv–`á²5Yo™!«6s.ÃämÁPºè‘Ut(—•Ö‘çÍSçUä¹Éq»o…~ñ¥éû¦ÂͦE^[¬7^-àxŒ!Î<,tX]”þֲŽÌ#AUxçyè–H½Uµ?âLﲩû¶)=sPÝøXYÔø}ØË͉˜»Él»5Ùx¤+rsdº:0êp12,!ìÒ†=ÿ<Ä:o˜Aæ¡Èצ·@3å½î2«‘Øu^ר´w6¸h¶}ÑÔY‰«m%lzÓvWÖ¬ë[è¯ûìBᚌ52úbVMkPî(‹¢AðЧ¬Î'TB2r9jÌVpõ„ÂX*R/u…¥°jÚ}qEÒ8›k†cØ|Þ7¾?øoiºn¨ˆÌ÷F}Û­:;ÏÒÿ¦‘çγ–Šî[Ò!ìx•ítÈ:Û™l»ü/äâß¼? #mîendstream endobj 341 0 obj << /Type /Page /Contents 342 0 R /Resources 340 0 R /MediaBox [0 0 612 737.008] /Parent 317 0 R >> endobj 332 0 obj << /Type /XObject /Subtype /Image /Width 276 /Height 232 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 343 0 R] /Length 789 /Filter /FlateDecode >> stream xÚíÝQn£0à’‡HyŒPOP8Á6p,õ{„Ís*qìõLÄ€Á^í?T)¡ þb!I5ávË2ê„Í}ÜJ/êòÐ4WA’¹¤ê¢® ¯¹VRg0k­äØÑ©Ç× ‰(¹«Þ†pÉ›I’_$Kb~¿o’„l:@BT]®¤ï\)‚Ä®Ð$Ñ’ká$f)¨–¼éÆÆ%ý†`I9p<¤ÎK‰n,ŠÄ´ÚŽwAbŽýk$W#)ÍíIõ%c¹tÓܦ7h±$ÖÜ1­š9St«Áiy—f;‰™Äi$ÑÎ;^‚â\q©r‘ˆ\$R­•p–ºŒ]%áÅeìj g¬$»›½K3V‘°Ïf¯;pã  $,¹4¯cVðø0I³Qr‰%Ág@ $@ $@ $@rP˜ ç!¹ßïr”4éâ›%Mã$ß +2Xr:!Of$ŸiG眅䷎O’ô(û $@ $@ $@ $@ $@ÉcÈÁ=¿èi¾j_‰JFk ö“1#‘GK„)“à »¦·LÕ@í&‘í -¡¾Øi¢j_‰ðštkS5P»I„´Ï·\’"ÔT½ÏnêŸxß'*…d¤OÒH¤r͹b'·6Uµ¿„§©n­Ëا(œ!H H H ä_“ðwþg ±ßùŸÄ}ç?òH ’ÿTriR†/ir‘¨Ä‘¡$m–p8I>W>ÍF‚kõBòZ2qAჯ_¬#+ÐqüÓÁ¨žendstream endobj 343 0 obj << /Length 43 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~}ùò妦¦Û·o×ÖÖ2Œ‚Q0Ü:hbendstream endobj 339 0 obj << /D [341 0 R /XYZ 110.854 636.116 null] >> endobj 337 0 obj << /D [341 0 R /XYZ 110.854 368.121 null] >> endobj 338 0 obj << /D [341 0 R /XYZ 110.854 168.631 null] >> endobj 340 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R >> /XObject << /Im15 332 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 350 0 obj << /Length 2179 /Filter /FlateDecode >> stream xÚ•XK“Û¸¾ûWLN¡ª,˜’ÈÍ›Ø[N¶¼)[©­TœF¢F\SäI­gòëó5 ^Ôx·t@lýüº!y—â'ï¤LEi²»\çBÊün½%ïø÷õ.RÿxõÃêÕ›÷º»°ÆÜ­¶~ûjóŸD-–2MÓä¯?\-¬NÞ~øøîÓb©Lšüòáo?¾[}ƒ5y‘¨rñßÕß_½[á¾\—¥0™}ãÚȸÔE*l™ÈE™+â¿-ÒÇn¬×Õb©Ó2wndÊmǪgò¹;0±vMC”_EÒ½y[O”™¹TáÜG×Vë®ÝÖ‡>pŸÝosaµÌûjÜu›×8]iº¿ðŸ i³ùe‘¥IÝnº…2É7:ì6+…L¡¤ÌD–>Æ=ØZ'¿Ö£—Ÿh×n˜`툚ø\Ûv ™&Ï‘£bâ0`·1‰ A²dµ«újÛõÕkú\Ð縡‘^¦»¶ ~ÛU-Sµ¿Z%à'ñÓ wî冥ªapýó"§;/¿”…0ÆÞ-³RØ<#w¦ÂøýÃ]$?ý8m ÃÐY6y÷à:M×£Ð!W^oá{2°Û×^~Ì»-Ÿ×ýB–I×4Õ&„+ÍëÍC5—òâz%¬Ôß‹SÓŠ<Õ/(;ÜáÞÔ±4VëO#¥Ô]»–´þÍ»#ìêzÞÓÔÃxß=Å£¼¶a§ª_ö© î¶"ù+ºÉ×}åF’¡,ÎŤyõèz|%C|8‘èƒG·Þ1 öê˜uÂB , Èʧ ­“rž¸ŒŽ‡N:•sšBPÛ4Ù¹ahü‹kÇÖµQiÞ Ý¡Ù0“köÝ0ò'×Ð7vÓóÀkÁ2àÑkŒÙ”´4q}Ø@¨ËÔ¸@ü3¹w_éÒðÖë™jêmX«ÜPOð]dæAüñAÈÜT\Kf¤*ì9àS™ î Ü0SøJ+Ji\õÓç ÛOÈÔ©×ÅOj% ™…-·™jª!S~}èªzçNL¡ƒü„2‹¥[ú”óšjªÑ¥œÅ> endobj 347 0 obj << /D [349 0 R /XYZ 110.854 636.116 null] >> endobj 41 0 obj << /D [349 0 R /XYZ 110.854 550.29 null] >> endobj 344 0 obj << /D [349 0 R /XYZ 110.854 321.476 null] >> endobj 348 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 355 0 obj << /Length 1476 /Filter /FlateDecode >> stream xÚXYÓH~ϯ°ÒÚiúpûXö–C³ àÀƒ'î™XãØÁv˜Ì®øï[ÝÕØg­òÐWu]]õU9Ì£ðcc”$2ô"Æ"o±š17ž›½½ÈfO_‹ÈI*¥—]™ëYñÕçÁœQJý??¼Ï‚TøÏ/Þ¿ú̹¤þ—‹—o^eŸ •Qìó4øžý5{•.’„ÈPÀüˆXG8w”s’”F§è©7Iž¤ã‚„ŒŸ–Ï¡a‹á ®Þ9g˜ô B°Ô<ñAÞ0 òãHNÒ(<¾¤ƒ” Y à!Ù)e­<•+’¡ùSHY)4¹÷ã$æ \Ö4Ã9œþ˜qžàå0u›O/Vz/›ÙÇ™÷qŸ¯Žãcƒê.'é³ËµÝY7=Nв[WùøüЭ‘ ’{{ægë-èPïøžÞà "“ÿ©ø^_³lêêg·KU[Û”*Ð%$¡I¸“5‚ÉC!øÂ…àm AnfϪVy_.†wŒŽN°/†³á49#®€0IöÉÏ€K?¯6:9T™ÜX“oœ‹ d’¨2µ—¤ªA ni€Oø{0iä÷KË»¿ øÝðU†䕦2¤ù=Ü=Ù3`Éä1-9䊌œ Û)81uḊ˦-ÿiê”0/tÒ%ÑEGPa0TÐðžÞúl§÷­w VV ŒH}ïgJ— à`ŽFB+@L X–E¡jíAyEÄœÄÂ=ÞÝY^Aã㔤P·ƣ§"î7ëuÓAݰ«+=²c*£]];çYžinÉ1n ÈCK]7µ:7EèÔgƒXíG±kŒE=9ŒE¸‰.'À/Œü̹£Uݦꑜa‘ŸÈQ²n›ë6_í*NJ Mݲщyka¨´ã7JùlÈ!J@ÖGº÷ÒYÐhvÛkÏM?½9¨;‰Ü¼ìDJq­èðZ»Ã©€%þ߾赩ªÝ„Rœ„<>²8Œ=YÚ׿¥G CËIcæHŒ2Û¡–ÐDs_mû‰ I ²R—®ù±ÄŒƒÑ¦æ®ºrUV&)c¤71a’Bú «>CÞOlT¤ˆd”TJËÙ.ÔºGx+íˆqÙá"Ç¡GbGáºV 0‚i€Y,-{`¥ÂZvˆ–¡€Þߥ]?í£Q"AÐK*ýµBÖÌ—•îõk›QJ7mœÈTŽl=ðSÄÔß™ÄSæïíÐë—Íæzi ³(J µCT€ç”¡k¯Ÿ“M%§ÒR6ë¾ljä\4ª«Ó±c”±©ß´7Vp»ýd$BîCG#Çý¸û$9t«$‰ƒ°US( 'qìcgÎc¬*à>¿Ø(ÜЧ7r\^œú›kÜ3zÁ˜Ýà¡sdœµjÝ´="ê eÑÛ ÉcqÄF1Êèᘙ‹(%<=¨šûï+—‹¦mÕ¢‡Ö+’¾Séÿ]÷e…Ç=:f{C#°©qk’³À ã³·OƒI°€Â&óá·‰™<r¼5Ÿ*F%µÌµV¶žìbÂ0 ÙøÛ3_Yì¶¥¹E}|i¿ÌÌŠ…™ùÚQ=œA¦ËÔ~žªŒêŠt Oþð{x endstream endobj 354 0 obj << /Type /Page /Contents 355 0 R /Resources 353 0 R /MediaBox [0 0 612 737.008] /Parent 356 0 R >> endobj 345 0 obj << /Type /XObject /Subtype /Image /Width 228 /Height 149 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 357 0 R] /Length 623 /Filter /FlateDecode >> stream xÚí› nÂ0 †­*Ø ªŠÐ 9“¶+pÿ#ÌqRhKIKv%Úfš?œ×Ÿ„ŇZ'àöàšu ‹Ü¶Jd"¶gëZ¸ ÄN°5D"O®vóOJœX]M i⎠ñëN"ä龿›¸&©  Œ   W øRÃFâ ›S…ˆÄºê‰tUP%‰;t:O¼$$‰Íˆ7)ÚY":ÝL$ï!'}¨˜«áKl$RŸ·–X±¡Ï%b»ß\s|Tˆð±Qt°Š˜SWÉ;ÕÑêü˜,Æ­£¡ÆÑ©qð³úÕAEyíàu̹õÄC+ižíGÉ'1‹còVG§_!»d†ŽŸ$Íbš3áfc´ÁýÑŒþ 8ñÊFD;yÏ&ZÀ›C “ŒO0à€ƒhðB—>VœûWˆ—a (¸4ö\Ž&~²ǹJÀKtTbÞ½éctÜD«¨q¶æH–£ ­#ÆZ²xýž\‰ªÈ¼Šœ×lPd…‰‹Š\<ÆEEfÈÕEæ!¦™‡˜Rd.âmEæ*ÇÛŠ,RŽcE.ITíP¢*²Î‘ŸnŽœ[°ÿB‘­c &Ùð“sdaEæ!¦ÙíÉ•¨Š¬ŠüÊŠ,½j >G–^µvºjÍ1GÖUk%ª"?Ѫµ-Ý,(2¾ +òuÌìŠlÅÙ¼ÁïÈ'[V­¥ÙÉ+rI¢j‡U‘³¹èšÕÚ9rÙ×Ì‘ ýnÒ;vvåûݤkwvåÏtúݤ:GÖ9²öäJT¢ŸŸøý!c¢üi q¢“³GÖså¯@¼qäœé$;šì™2o_mendstream endobj 357 0 obj << /Length 37 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~Ý××wùòe†Q0 Få° ~endstream endobj 346 0 obj << /Type /XObject /Subtype /Image /Width 228 /Height 130 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 358 0 R] /Length 791 /Filter /FlateDecode >> stream xÚí›Knä †Kð"ò¶eå±€'DY·ÔÙ'R4snùúÃÃîø1 Tõ¨‡²âJøRðcÀBÜÕZ‚l_E=±¶F±Y¶M&"›«µ ŠM²5Ä–°5 DœRmíw™¸°C±¸$¸‰Ï:ˆ¿n$B Q__n&ú$%$ }¨Íqùp€@⤘]A”ÄC1õQ@á$>ËLíÄŸ'±žñ¡µe¦ÁD»)Iåª,UóOuŸçKŠxb©»¸-"ªhJb¥ˆ§­8ZjN,±ÓijW¹iƒ¯¡=@§…ãBد–F«‰OF¬Ž¤Ú!hÕªŒŽX™8ïIÄVd›~ŠÒìÝŠ, 1qW‘“û¸«È¥º£È8D—"ã]ŠŒEÜVd¬8n+2I犜’øø=y&fEÆUäÐr°"¿+rr¢‡"s”žüŸRd.ˆNEf8Dç;2±"ã]ŠÌXîÉ31+rVäGVäÄÄ}Eæ€ß“/Þ‘1|t¿#ãf­c9Œh›_ŵ¦Ÿ_ÍÄLLE$XG^ùè9kÍY+E~ ÚÙ> stream xÚc``øÿÿÿáÇ _¿~][[Û××wùòe†Q0 F'"õendstream endobj 352 0 obj << /D [354 0 R /XYZ 110.854 636.116 null] >> endobj 351 0 obj << /D [354 0 R /XYZ 110.854 172.024 null] >> endobj 353 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F21 262 0 R /F46 134 0 R >> /XObject << /Im16 345 0 R /Im17 346 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 362 0 obj << /Length 1530 /Filter /FlateDecode >> stream xÚ¥XKÛ6¾ï¯ð!@% bDRÔ£è%I“&i‘]A‘ä Ëôš,’Û(òß;Ã!mÙk¯Å4$‡óøæE/ŸÄðÇ'œÇ,WÉ$•)ã¡¿oOý~÷jz÷â­Ì€JM¦ {}:ÿˆ0âq¯ÿü8 ¼|ÿñÍ_a$T|zÿëoo¦÷ÀP¨4 d~~¸{3 ¤\æ9S‰úŠZÏyÎH$¬ˆÓ[üñ$ÊXšÜä’%\ÜÖÏ%‹EJ| @ì1ƒÙÝW][×zþÉ4óvF) ÃzGD½=•­ËÍÐ"$h,ÏÀ9ž°$QVV¯bZÐçóAJ¿™mÍüÁŸo­¦¯V¸-r–ŠX´NÏ¿a;úÄ?ÜÁ³Þ{ñVð‘;\6È©_ˆãÄaž2‘厤™¦rw~‹Üi,‹¹s0%ëºr¥‰ëÙ‚-Èô`ij.«o=âÈãp4swuh×nOïÖe3§Å^÷nwaêšl`ÒBžˆŸµÃÒžœ©kàíÏÁÛ_Oýðö·ÁÓÍÐíÇà1ýÌ­#HpËÒ<¾ êÅ«G\k½Æºì9")Ndþ¸Šñ“ÄägŒJã’ê'bjIÀ³Ö –%˜È˜,r«òK¬â·æaÓijM"*`‹ÓâõR—k"ï×.çýRcÐqãåz]›ªLÛÐÆÖ ºHMC©‚QɇI`1†BÛóVǘ—£Q ©,®wœ'º ‡.˜ð¾ò›]+cJ·ä,Ï­ëbÙ”Pˆ<èG‘ï3`s`zBâzšíw2¦!Ï $&¸…˜ð˜09ÓÏcΔLœF2–Á}»ÒƒYaÀÑœ}»!bY†"¾‡\šŒ*é .­ÊíÒ0\‹Oó°Ù¬fèŸ,Ò ]à7 Ƚž6‡e9U•ÍO(n ®uÛ÷fVïép¦éÛ/)Î 1™ÆKñçU§µ;,1_qÓkh›Ê±az?.QðMåp>N?ɳ`ÞêþhrÔµË8»´`!#Œ»17xúÝ–®ÉB>övMãù{mù-È]Yïº|ÐŽÓ‚‡z/Øí*âc;èWmû ™(¼ÇÊ)Àà¥é‰ªÊX.¶vËqmüÑÓ啪À‹œ„¶JÓ8%}hÊ<¶t4De®@;ª¸Ð¬óºVæÒ“Fí…,Này ócg< þáiØhX ÿlz¯:Í ‰.Ü< VÀw÷´:FèÀ¢\€h4YŒÝ `…T'ZöLÕÒÔóÎfb&(x°‹IðØÙjQ$7ÍXRx®ŽàušåÐGHÆüÙ•«u­I³qöŒë–ƶîÚmBs~î<“‹y~2™·KSA–"Ã\A±Âg5l=5–÷x᪾-]ÁX%–’v¿!+@$tÒÄã´•+¦´¦©5,/`VílMõ´¤˜à ÛX¾Ý(;wâ3§ðÓ¯R¤°ÍĈèÚ%\y@†BE"M$ÁH_N¨™Ë›é¿#ŠüBzH% Ô‘ëˆÚÚiŽÔÌžA¦ÏjoGK_H§{s³À˜.t‡QsÙ"˜Êù™›ƒó!ǯÍ$úóao‡ñkwsh["ŽƒÆíÓ÷K Å=ÚÆ+±ƒ€Y ý@·L˜ºÚ " Qn10-í®Z~6–ûñäÉýä9T-j3ëÊnÿó…Ù-òžGÉõá=ýÃôå界‘>û½bëi€cùÄÂ[BrìÁ¡ôàÔ¾óäŠÕu«Þ]±ª?$ž°æÝ¹58Fà×été_2‡n^\vº(÷X Ê—š(F‰ '6œH\.<‡g\!ü¯Çú²cСŠÓ´A"fYî§ÔòšÅòÔÿª{ޤA§ûµ®sùðÎq£5I\¹‚ 8” œ 2À<çQ]¹€#i[ïŽ{G$íÂâÔÌÝžk@ÑÌôü´ Òš-NXµ,׃îzvþàŽ|±A\ôñ[å›ÿ‹ø*‘`Iendstream endobj 361 0 obj << /Type /Page /Contents 362 0 R /Resources 360 0 R /MediaBox [0 0 612 737.008] /Parent 356 0 R >> endobj 359 0 obj << /D [361 0 R /XYZ 110.854 636.116 null] >> endobj 360 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F21 262 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 368 0 obj << /Length 737 /Filter /FlateDecode >> stream xÚÅUMSÛ0½ûWø(,ômùÒIKiwh§ô`ˆ¡žÆl3„ß•dÇIê´Ó™Ž^­VÖ{»o×,¤ð°1JŒ’¡š0¦Ã›2`¡~„½õ.8Lƒƒ©ˆ!œ$J…é­;žÎ¿"#F)E)NšbFѧ“É9ޏ¢èdv‘~À’¢ÏÞ19=òÆÑìâãÉ¢úâ=³ôøý…ýXÂ4 KßÇ) ñ@…1DIö+ûÀ¨Œ¸$ u”(Qn·¾ {óüÍê #ÇË…:¦R‡,&œ½Æ”£ìsŠžYÝ1-šöºZúEv?ïXÍÃ"{é¶yÙlÓ‚»‘‰ce1r"b¹I¤0t$ðZ§CXG¨-–©Åïa^q®½•~Ï;3ƒŠe¿£éÂçwy»ƒ-' ãû°Mˆ¦b @wh/ÅJ¡<\µ%Q)HLM[48±F­%eºÁÃ:W<ìâÒ ×ñ 8ÒÆ@ýÆÜ—µûbæ_ —AkU·þ]¸‚{ó~#¶]»p‡QÕΖ ßVu™Ù›ÕhŠ™B•M¶ˆQnˬ|XäÞá8Y#ÅbHˆó<û:8Û‚à +JùÝSÝóÆÀÊ®lÐ"oÖOƾ¬ó›¶ª_xºÛ…‚ê s…ž›­Ž¸©Oå}Cv(Cbb1& RDi w I˜yø} ¥L\Ìš {—þ,wZp΃YÉLxTgAx6LŽ„_Œ¸!š%+ííœ{WTÑiÑ¥ˆAÁÅübZøÔ # ïø÷éÉúfÚ(˜kž^t¯ØR­»Î«ä²ÖˆkýlÛN™d4·ZJcˆŽ‰âz,œÃä‚^þÍDÞ××e0¹%$Þ6¿Ñ|)hÃZ®¤ â$aÛ‹A{ðxC ɯbˆ!e‚ý­ø †chÔÊþ_ònû4+ÿ<¶K-%¡BøR›?)µ–ÿ±ÔJ=wôïÿ]?ðÔendstream endobj 367 0 obj << /Type /Page /Contents 368 0 R /Resources 366 0 R /MediaBox [0 0 612 737.008] /Parent 356 0 R >> endobj 363 0 obj << /Type /XObject /Subtype /Image /Width 241 /Height 208 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 369 0 R] /Length 1279 /Filter /FlateDecode >> stream xÚíÁNã0†g‘…öH%*®ˆ¾íÞ‡ÖRÏ+mÅ•OÊu}ìµÇvš´!™Iœ4hÇB¢E™|±=ãù3nÃbqvwWi?îîìUÚx7hS»öà§j[Õßfk›:EÁSƒWëS³ëQÚ¦òúyàicx{oG™ãÕ¦qŽW fýÿOÐ\Np?ðÍÓSOp€<;ôÍÔàG ¸ƒ»„G€Áàbl0 7]AØÚ™‚áÝ`ð<ò.ˆÞÞ®r€!xø°òs|3Öo.8 1ùvë^] œ%œ"ïñ& wG<æ„qÞ•k@’Ø% iñàÝ8boÓ,ö"x·žºyb¼iûu˜°ý9Ý´­¦WæXÁ V°‚,¿£¶Ï‚Ç-º,<0 9u»yøçñh€+æFÆãñøw@‡+æ2pÜ© “X0Ö ¡Ñ`C47ôÒpææ vs”FËž Éž9ÅÞÜ„¡&KKtØÿš+gÎö­ ظ ¿b‹À8Ø;—3éï\,w.Nqd†SŒ&‚åq,o•8>ýMš0SJR°*«Ê[eÎLÞ²“vu,—·\p‡:f«Lʆ~ôxI±ž()BPR!àµmÔŠ}¤¢×Ǽµú\úDõÓ õYš †úà³Yšl¿xˆW;Kòê>à2Ž-ÈÁçª, ½ôUƒ¼Õ|¬`+xZy‹Ò»Æ\*S Î¥2¥÷ÈYT¦¯F:Õäò"7kTk™–¤¡ä(M‹¡ÊMÒ´èÁ©ú]ÀA›"Ò%ô+)Úšžg‚iŽ‚é.D Zkøì† ¶ƒÀÞÐôWœ«7˜œ«×‡8îX4 ^@Te*XÁ þ¶*Ó~)Ëê­_ñ‰êe*S~+Ë q…ŠÂ­ús7É[#(¢z0”‚<‚1Urdò–zŒ¼2*¾P—Àî·L˜¹›ê{\‚MyÙÈÀPVØØûǮǷ aÖ”œT¦ÜÐãpK!G•)ì1ÜžÍ1ùŒ lÍ c½Çí^}î\ Ìu®ËÓCgÏ\s.nׇÚOow­Õå-¶[k>V°‚<¼m^žò¶z4 ‹¨ØœT¦\Q™½ÁðåѼ$á“„mog‹9 Ó‡Ú ¡Šc(Д*Ó¿N–.¿ÅDÇÎÇ@¸sª/lnF ÿšDhxÁ)-8XR©+¨(¾ ¬jŸÓÎîI„¢ÅSoS>.-Ëàoöºø+pðÿÑÞ*¸¢@†õ˜Â¡œö³Ïz\j®ñÀ¶œzìÙj[õ×^ÁTÅ/{ÜvÇrU¦¡8Žæ_Çqè/˜ZÑž½a•ɼAί2ñZi›S óÁã>’k©ßâÓï-þ‡ß[|¹o Ãæ¹ï ßòl ÈËÃGKüŸµnðbÁ¿,_ó‚‘Ü~Yrƒ¿Ý`¿°er+xA¿³ƒù¾¼8Œöäpq |8sûÇ‚”C]Œ~->øòA$Î¹Š‘ÀŽ[:—½x‰'¿¢æ¿Ý Èþ3?˜¸Kæþ37¸(xIb_äG.CÞîÏöИdàùÊ[ÕÕ V°‚¬à7vʶ½þC•õQá  \´ãÏ(_‡›¶é[Á×úï ÿ 'íuendstream endobj 369 0 obj << /Length 43 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~}ùòåÿÿ?×ÖÖ~þßÄ0 FÁp ·°endstream endobj 364 0 obj << /Type /XObject /Subtype /Image /Width 268 /Height 278 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 370 0 R] /Length 1937 /Filter /FlateDecode >> stream xÚíÍnã8 €µ…` Ì̹H÷“ì]i„ú¼‡ô¾@'÷ øõWI[ò¯ìDPmÓTª­¯I“¢\??¯¡|Sk(ßì ŠéRœy»…î¥0‹)ü×R åÆÄhOᆉ¬v/*£±¡@øM÷^¹7j+ÚÏ$¼¸>Ì)«ûŽÐ`}|°ØNQ(8 (ü)R)ü Œ‡¯)X` œÏW)mSÇ×,`SŠ…É \C¡ù$ÔÀ3fd‹PP.‚QÔ57Ô“srÝX˜H.‚±06¢˜’ÎÀ^4SÒ‰ÖE³ŽJ¨t„¥3¢¶¨Y):²2 ' ‚­–;Q²t&ÀщVK¼¡ ¡ ¡¸‚½œÈ,ô[æ„Eí+¯ùc½XÄ5—Â<Ÿ¢Û2WPh³ˆB[ ÀL™iï®(å'…ñR¶Å QÀ1b©-QÀˆÇ‡Ø Èë««ô®Ùçd?5…¿úãàAY„¬«Æ)ðdZ¥É…ÿ“ð̬´íh8d§ ‘ÕOfì–(”GÙ¶ãæAÑŠÀ¬S4M¡m‡¢3 …U©c­‰r¡øØFGHB9V®uĆ:2D¡ùàY:² ”¢Ðj…¡ÕâkZ­)й¶S¼¡ ¡ ¡¸&BÔýËÈ-×E'g¯Š²]Sý· ò¬Ç)ØÉZFQ¤PôœÞ$ägP”)™ ôI4/¡+ÎÚКv@A•ð»ÃqP Tþ5q,VCΥ唥±Ø‰®ÃŸÀ81õEå>¬c¨’¥3tû½ëÎ" 9?e(Â1Ñïj;Háú/ª†Â—R r63¢P¸ò†B  9Å7Eý3bÓ)Œí¡ ØÂÜ€"É^˜hÉdHGTKG†(*¯¤¨#Jg‘jÁïMW3o‰ ¬–ÏdêèjX­Š%2²ZÓöb(=|g/‡¶{…å¥Oñ~…B(„b½UÙ¹.V:ð i2_ÕMÿm›Â»Ë(Ðü«ÛPØ ›•‚\“*¤ð?VeUU;¾˜Ècò:8dü|šcKEYø~êÉÇnÁ›®€ÃB4¦SpÞQ%Søó— G3èÓ#T‚ŽÐHËyGøœEA½ãXX?ôf>…¡Œßv(ê¹ ×@:I.JZH• ÜTí岟÷¤Ð5…šIвht¤lt»e ÿcš¦Ú`o'mßÝ…¥ Wlµ°²KAÒéçcì0Õœ0_± %ͺx¿B!BqSŠh]qxa­oß^+㦗S˜(‚Q#p|3êCPè$ ;rãæ­( Þão}1*Xîfq Ì•÷ |¾ÌÐÐ`ë§Þ<…¦;ÊÂͤ­DCA9 ¢@?»>Æ\Mo&µõ4­ŠðM«Eç˜Eõ€Ñ–VÌÜ)Õ™ÊjÎY=݇؞K»iN ¥‰!ûX„‘…3í”AtšuCŠæÞ;lãìêÚN LµF¨1DAVË6»ÀŒ¨àšÊ·Të†"Ø€zÕ/G(„B(„B(nœCô+ží|UYU_K«¯­>«Ô¼ÙãQt2!_CÑÉÞ¡tðyUaþ VÂë%ú›St²wMÖÌ7áXp&¯|dŠvUÕSU+ªóF%¦‘rQ4Ù;˜ª‡‚*b0{ÇõÌÔºÜE5I1Óœ/ÉÞ‘íôy³HGüŒÌ×Pô汯Ðv6\Y®Á¿XÅ<=}hŠ¢ZÅXˆ.ù)¾ìɘë§ÿ:,ò Sÿôñûr-´UÏßgÚÎUP~þX:Õ׆0‰âùÇGŠ3c$P}ÍDqþge+Gè?Å'e’âÙwŸÂa|ßÅ‘®ü)@6Æ).¿Ïù)ÎçË¿- ÿì¦f,Þ/ù)>.ŸÍXà³›ÖA­§P:qR2R\.ŸtBé³￳R\.i¶f%…› »% L~:’ý‹÷K †HõµÞ?.ö)‡)>í†($N ¡ ¡ ¡Ї¢8Ø»•µQÜ" ˆÊäÓÀ¯,ñ³§ýó§…B((:?d~þ·íÔ¬…âÞOFG µ†ò?Ð"+-endstream endobj 370 0 obj << /Length 40 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~}ùòåÚÚZ…D†Q0 F'í ìendstream endobj 365 0 obj << /D [367 0 R /XYZ 110.854 636.116 null] >> endobj 45 0 obj << /D [367 0 R /XYZ 110.854 611.21 null] >> endobj 49 0 obj << /D [367 0 R /XYZ 110.854 583.386 null] >> endobj 366 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F40 126 0 R >> /XObject << /Im18 363 0 R /Im19 364 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 374 0 obj << /Length 2369 /Filter /FlateDecode >> stream xÚY_sã¶¿O¡·P3C$E¦O¾¹\ãÔI39eÒNÛ˜„LÆ¡T|þöÝ )Y¾ëxl. `±ØýíŽWüÄ«8ŽÂ"KW¹ÊÃ8ÎWÕá]¼âŸ§•§þöîýîÝ·ÕÄÃ2ËV»= ßÕÿ ÔzGQìÖ¥ n߯ã(øíþö×õ&É¢àþîÓîýß×iüƒ·?`âÃݧ_îoA: þÉœ»Ý÷?}ÂÉÊ8T²þÏîÇwßï@VTE˜¥ è7Tô‚µÂ²HÈÃ"OPþmõwk•íçÝ}ëFÐ#Í‚ÚÇ”î:$ÒàÔ =rkl ÷»Q÷µjnížøÛÁLö37žÛúÑȸJ÷~…$ò  §üâ­;vúÅ+€FXmâm˜e%|Ó0M3R»cu“8°{ü&0ƒ9¸p½Qp?Øuküûç:Î3ààZÉörË8Öñ\ît4Ckn–{y¿À˜wig‹ñØ!¬ö­Á¸£©FP w‰þ9éÿ±܈úäÉ¥>y„†ç8n¿ØúHÉ*CÌÄ Ö2 ¶½Ì$"Ïè—Óàƒé]k{ݱðÞ=¢íTìØÍk…iX1ÏØŒ¹(ûäsM–ZAã`1›W ˜äB «…MäÈ~s'Øõr~1{œœ.Vêl¥GéžäjãÚÁÔW”÷ÄpD§ªajO;r#Mm2|5f“AãÜdqìýåÝ{Ê0a{óÕab««ê>¼0"ð„@PhÁwv@h°²sEOrZÅ%ì°®ÛT@«FIðÜ´áš œ¿ÓôØðþ4Ù ÛÃ55ÍdÐí?‹4Y[–›×X:ù[Q=ÅT¶•³ÎŠ…WWóçpêÆv<Õ†E€=¾ »€dVÁÊ|>áäÕ¼‘9èG/@Æ«@@¢’à¶s€UW¢­¨‰MåS±¿2ÁÖÂ>òdím?2‹Vd)é«l‡Ðƒ­L¥ù3Œš€ç,üêÑùê¯^ ÄxÝî^öf0¨²P1Ç$ÛRH˜° ææfÇ»#D󖜙ÿŽ¢äñD@cÕ&&¸Oš©ŸL…]ƒ>6›k¡[aì(Y9.¢!ªj#†dÖ8iƒ-ïIÔcYp0G€dÓ uãCLûð#õ&»Üõ³k-µI˜¸a |¾fçÙY·€èõm›°_‹s+æp°¨y1,#) d57›5ÜÑÂl#[™•=ý™f¢Ý·ið³s±:™ç]jÌ1§MlW3Å.JøcùÛ´M¿ÂfÕ¸TA©±N@ ­78ƒ`ªÉ­ /kœJ¦ •.Q˜Qïð¸òä¯Fà^²PÁ^|•»Sx‹"-L¤Lû0£ ”\”.”€)“°Œ“¯ÕY¸tæ‘úrõÞì9)»}¡‚á俉á ~SœãFÃÉŸe½D5Ny…¯À Ó'6àù@Zóç"HA~ÂŽ¤L‚Ό߬3(ã®øñtx)PÆx°rö h…¹ÛØXIÁõ­öp´Ô‰2Õhm%âöä¹L%{Ô{ôðà¢3®1 EѸÄhÖ×skÚ£¸µŸé/òi½t‚©jŠ| Évç·Þ‡§ÔðFÆý}]D¤]™  P…tmЬ½ˆð¦‘0* ÊŒ2?±ôSÛ?2­ùóßS[=1 0F•mkÄO‰ q6­Øò‡72n¾È¸ˆhÕX)…Iƒ©é°²x®r¸¦æNÊSð­Í¨Ûα¤g²&@ôSy@5úˆ&ɵ², î'G$q‚¶ÁÌ“¼-93o…4 vF`óâÀ˜ê8äÊrO+¢ ˜1I)T+N‚»=sžL©Ÿp*‘Ó̬:<ätÖ>1Ë\¯ÄõjT ºS)(v]3üÜA¿ý7ÓRÊ",aÆ•“Xä u’,L£RDj(‡«Ñr(fRTxÆ9>`ל63 ëÌ‹ç€{é/p'7ÏÈ–ô‚&Ëížù! Ðv.ó€ÆUð+¶ L4„P¹à¥¯pÆxq=zŠ2 PlW¤ôñhô lv>]XŒ-å0)½>Ûû”86ÿ_䣧`ÃWŠŠÔO}¢>¯¨Š kT1TÐç¤Bˆ{^—t逞ÉY©îòE”ÝÏsÒù§ÑòüSHœ*ð¼t’m˜ÆJd°fÆú8â´â‹ÄbÖÞ£%pRàaÛóB.@T¡!™,BžnFvqµJ¦:üä¯EX„xäp9Ÿ/Qt^ ¾¬V+éq/^NÖ=»µÍD宥¹9Ór´ò4ù|a܊ᧇA÷¦&EK¯è«ç„xŽ"N£÷Œ~д@.÷NpüùÊ«õ×n†P‘Ÿ=]®¨Ø¢[ÈùUñ<Ú²hq©Š–Ú,-R`+ί}ég]5RwRuÈooæÀ§Ã,‚§A±‰”}€KüŸ¸A ™J8 m_c J<Ö&’? ˆGBói˜æàzš–ÒîIÖz0ûÊÏÐôVò# Ký},õx7WžÇ‘-\wgÓ¦ÔÃ* œÅLéÅ¡œ­v‰ÁjÒêJâÀ=åg÷’<Æ„uò<Œ£XbœkŠ“Sã.€!ÂNùÀÁlÿÍk™ÆÐSИZø~®'Éx‚d$'˜`ð/¨ùvöˆ×ÇôljB¯„‰°fg\ãX+礖/fi0Å2ˆâM÷ƒ;M3Å—i«àb6hz6Tq4ÁU¹^\-EÍ?H?º$¿4]xÉ—WUúûâ#eg>ÁG–É¢n/Õ³mo;ûèŸóR44jo©F,•¯R(b¥Z²gtáà) »2Y†¿ÉlD—å¿ï¥ [7õ÷àÔ? PnV‹'+ìrã¾éûøÝã†_­éaD:ÌXÉÇ^˜Ó¥Þ8ùÂû°é½u#ï»ö¼df{yw¹¼Ìݲ"õø+:WB\k¿¾ç*¥%¾rÓýê¿þ«+«Uendstream endobj 373 0 obj << /Type /Page /Contents 374 0 R /Resources 372 0 R /MediaBox [0 0 612 737.008] /Parent 356 0 R >> endobj 371 0 obj << /D [373 0 R /XYZ 110.854 636.116 null] >> endobj 53 0 obj << /D [373 0 R /XYZ 110.854 405.832 null] >> endobj 372 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R /F40 126 0 R >> /ProcSet [ /PDF /Text ] >> endobj 381 0 obj << /Length 1831 /Filter /FlateDecode >> stream xÚ]sÛ6ìÝ¿B{ØU¾«URßzL֦˖­[ãÝm×õ¶›‹,¹úhê?€e9q–‚ ˆo@–ž€Ÿô¤AžÄ^¥”©·ÞͤG¿{ÏA?Ï.—³7WQäA‘$ÞòÎ^_–Ÿüh¾B9/"ÿâr.…ÿÇÍÅÇù"L„s}»¼ü0…ÿ'!.~}KÀÛëÛßn.€:ñÿ"ÌõòÝ/·È¬©EóÏËŸfï– åyÄÀ ¢‹n7ž?¾IŽvJåiøœRŽ>Œ‚X†Äù¿è° ðeöé³ðÊ™ð~a²Ð{PQêíf£¤¸­f·³ß’…E¦ ¬a …|éAYqXx tR” µ÷ØÆ…ˆIé)l¥Êdd7a8"ß\ïBá½m@ o"IT"Ï@’UÂè‚oDH„à³VÎLjb{@ü‚ÁWÍ7´Èã¤âí Ì Tc:ºÀ~ú–8ntÀZ­·mzà+räÇ-§©÷´”ìt¿m°M圈yH&´ ±ÔŽSµÙÕähbØ|’byá.AÁs‡í¿ Æz'Gí ÏÀ…‡#¿†VJô§&'}§ƒÒúsiPÓ¯¦ ó4ñËšZ’'Œn5oºJŠ`µE1¡úŒéŠr%B6í‘ôX[äXŤò[F×YU";,rÿR¯³ˆIŒƒ-%ñ⌜ÐL6“S"fµaíUwÒÇ]ˆ³½ 9Ð$uÓ`\ ¿ŠB¦Oˆ½ãivûJï r&2”ºW¦:Wæm ‰ øôh%ÄZ+!â,Ãy¬Õ~ÚasilnãMU–„Q´¯5aËß–zD»'¥c"ãn  ±9õTb…¸7WðmqœŠ Ë"ž âw¤º¥;™%RNCGÈ"ecÞCÙ`¡:ÂW.Cá"U7 g,¸o#’¼ˆF/"Š Lm6•*± ØçÔ=æ‡P–Y‘ž$8gH–“wa¥ÜàÄà¤Ã\Äð±üoË,R5õ«¹Ìýž¶µ¶Ñ‚7Âì(2‚)r ø‡‚GÉ ŽO€Žñ \TÎ/Ue‘„›AxÒ Rn©kåL›’4<‚6­ÚoÍZUDž¥A¤úd¨ ‹j Òñ³ al‰mS¯æ°ò'ÀJ÷½n î42¨Î”ü32Ûfhy<¶ZÀÚRð·T9±ÖñýuƒùÙëêðÝs•n¹5­íÒ`ž£5 ¹¢ •6mQk,2zµeB[~ŠÑ•E>™Ùâ$žÔ78‡(ÜŒCäs•îŸÁÆ}$9ÀÂ!»!p,D|bÓ%Âq¶Uõf<þ¾©ÌšçU$°bzƒ,Ù“$²Ÿˆîš˜ýÓ–é2 3À_Ó¶œn8Åäir}³Àv {±m†)Ê×l·DjGµ…¤­Ü³«ÇÉv’È\gŸÆ'„V“¤ðÝŠÅ5ÉýÎljƒCÌÚ&žt4OÐW Þ¨i]7v°h”{ÂhœM’ÂÕA€ÊFó{¶!À’Ÿ™_â[õ(!º½vŸÖ‘øþt"0=ÿàrÄ¥˜»]6ãìÀˆ£“‚3ž‘̃\Ä/}zþ?þ:jÓ?endstream endobj 380 0 obj << /Type /Page /Contents 381 0 R /Resources 379 0 R /MediaBox [0 0 612 737.008] /Parent 356 0 R >> endobj 375 0 obj << /Type /XObject /Subtype /Image /Width 713 /Height 225 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 382 0 R] /Length 3565 /Filter /FlateDecode >> stream xÚíݽ۸ðñÛc‚ÝJ*ÖHyH›Æ€“þ€óö4² ‚«rE„ýÒæ .¯yÅv[§zÈ_øÈ!%QõMÊ¢<Ì%ð%±7þíxH ?ÇÔ|·(jžÛ&Š7iž!²l÷I[;ò’‘“¹!«öèØõÁ|í`90çÈû¢½ÿ¸wÚŒÇD¾O.ц!ß>ÿ»*äG?¨•—}„ÌŸŸŸYàÈ¥¿àú Ú_ö0™ëQ=&Ž$a‰HŒ£:ßL@>äíñà´=äB¾}–íß ™‹_u’>F0ùÁV ™ÉpÎÒÀhd·ï¹x•ãA¨È˜.Œœ › Í„â8?Ù^v*r%äxLÎ äÈc‚¹Ä–mÈ:#—æ$OFæUäáÁÜywS“…nd|ø¾‚ì''>Ú^öýC_äÈ‚,º=nAÜv"kÝ2Èeüp‘£MYtzµŽ/“3:w°»?vbx¾»1}#~G°Þ ôÍÖ‚ŒÆÕ‹‘Ö+¾!9ßõ•½,ïYº dÀz‡¹²à•dEþ|t Ö/ÑüA'ä¾È›U¸þÁ¬•Eý=‹÷‡‘,µÅcŒ¿jdù¬£‹û? ë/3y¯ßR?dUêŒú2w"«ØU¶˜!dÊPòÝ{GÞ·nœ ÃØzrÏœ¡ÕˆÒ‚¼7‘sÔ]1êh@>¸@–Ùê»»WähBѾW0·w|92ì«ÈyûëøfBŽ&Í%ô æ.dÝó€Jφ·üMk¾ì¬"ãcodÕù¶ç DVî0ähê|M÷ Ùïeµº¾­!«¿ñg'2ö;5RÜAœ¬ú‚aÈæÄºrÆüµ‹ÞÈȪ‚X¥ /È;h9ã"È*À{#Ã~o¿¸¬#†";1î fù®Åk3#ã:¾2v î;¾ÈÝJ¿–o—§bc}j82cÝù:GŽ\.Rhîålnê»åë.Æ!ï@]9GŽ/iʲÞêyöÑ]±oGv¾Ø¦!g òÙGû‘>e’eVá v߬Áìy›>‰4q?·ËDöal¯)dÓ>GD>.Ù±5gøF~ª#{šH}´>lDŽb­Ìuä|V€;@ŽÓ2òaÇ­Á\Cæùz;ÈÛôTŽä9FŒFûÚ°à0ò½Š·4hÎy6±u›Í"&l:²øåk5]æE¶§‹VJ9#G–ßÞ$›Hd®S çÅ!CŸ–†͹u;Àfd69V•‹e!G3o9£Öñ¹DÞâ=- yö-XT‡p¿. âùÜ”/FŒ!Ütä¬T´ äKÇÉ~«Ö.¸»Ú¶!GñE÷û?À²þËAŽ6—B>¤•ôà Y½Ñ§Å _ÈX.8Ì|öÛlÈ—ÚÛ.ÌeÏ<ëÙº!¾0r¢ö]r¹q'·ä“×ý8Ç:òÅŒÍz²Ìâ'×C¸æÜa"Gñe0obÆõBÝbï„Üš"qÎFŽ6 A–á±pt¯ª÷º~/÷Éî†|Iã*²üçÈ¢§ˆá2F²kä‰W–­O¯"_ôИ 2ÀFvµHÆƒŽ‘ùó¤žÕx:ïD†x9È™³9qŽ|;­g5žÞ‰|YcË’^ËÉ€À®‘¿›g¤È‘ ÌܺS±ÈÅÓÅ€^¾€Hh,Ï %ä(^²ÂÈòªÄ}Nž9Ú,¹èW¶¿ºBÆÊõ3d[Å)QVýRrñtõL†Ò5ä?.~RZû2-Ÿ#%d•ø¹qðÁ@d5ÐdùÇÍ@þ-&dßÈp dßȰ'd+2s‡Ì÷¡ W.­ÀOÇǦt| ¹Öñ}a¡ óò•÷É8„K ጧ'Ere÷…%¡ ß–¯Ì¸‡qòˆ«jË+ÆG‘¿¼ú ²¹JýŒCȯÒpñsÉ’âøJÖ£kTêt2«XC†4d,"CšR${.ÚI Ù7ò—W#_<2•Žìdtáy“†U Dæ]W¢’Õ{¸ûùŸ·oï²øä BÛmÑkõjÎyÌô“\O îº’Ýy%ä níûë#™ï^~æ‘Ì\"㇆ŸãK°\ÏŠQ@ÈDþõëÝ»wˆür·Xdãðù°ÕòNø%òÅ[ÌËf$÷Húá<ÈåL\$¿Cä;“Dò¼È"ä6d•&¦ ëUZ„܂̧ 'L}‚F¶•:=u|ã‘qîf-¥N}"QÒ1:<'«qò(dŽ/!"ÛKŠñŽdB³ÕSJ2M?ù¸¬Ö S Ù©S#³„æø¼D²ÊÃnr2!· 3Bö_ê$äJ®ÆÉ„S/4²qÑddÛ’Œäž…¹×¯¿5 s.rþçÒ…­h¯vLô»3Œä YϤfÇÏ\,'á¸m\ÏVëœÌzF²B}V-¬9¿aƒŽ¹¶5[=¹É*¥‹¬b¸@î>èpÔlõÀH†JNVƒåÕD²sd>)’3ä,’C]xCærɪˆø8¹’“ Ù/²]$^:¾¾ãärºéX!^»2‡ï{I@Ò^€¥*•: ™ ™—:K!{)u²[dã¦ì•ý‰„ìYüEV*uâ~;}E"ožÉjË0y0ò&fåÚEv"ë#ŠybºØTJLu—=`µƒ\/ hïZ–˜›­*’kÈ“f«ùä|¶zíÈl rû-Ô{!WB™­¡ã« CvRܨœü½two̸w§­³U ÿ,Ñ7œäz¿)Ùl5®1eX •ßl®æF6Áá*È8ºà0rtñ½~woµ& ßYª·Kãïÿ“­ÎJˆŒ·bÔ÷¢…„JMEûì;§bU/wQ7ðÕG©3}Sà<’³z²|&äi‹'´Ž/‡,?"MÈ8q"7¨—‹™BîÉI3²>»ºÉ@È.‘¹9‹dŽãŠõ ¥Îé›%-£ –/Šk](duºKÉudñx«:Ý"㱟,Cn'«8†R$«Õ,&²xÎ&üRg3ÆÏV÷#®m¶ÚVêäÜ׳ыÖl^ñÕ®£"ÙÔ¶ÂR§¿©×Šl‹dÚöKÈ”“ ¹_©sòèâ¿oŒJ³µ0kîÎ…#dB&dBî‰|öÛV€Ì¡|Æ=!{@¾ÍÖ¥°ì¥ÕK“Þãä£õ[Ôð¯ílqøKg¹qöS¾ˆ–©­Ñ#‘ã7 ŸK{ꇫSÌ r§¢ñ‘ÛåF#oÿŽïƒGŽù¶r|çhä8uœ¦¨2r¤Žï¼­ßÙ€¬¿F3rœz@FåUE²¾­·Y#šqêY*_²’:5 kHÈi¯ ã+[‡pŸP¦ùü#õ†œ>ýþ®'òQÉò¨‹è>¾Gˆi"DËÒÅçÞÏç<]ˆ/¸òÚÅ;83’“ä1ïø>Ÿ=!ŸOEÇ'¾àÊ‘?É”Ü2N>{AÆaï­†|D˜–‹‘³di|MȉLÉ­—Õg×ÈOh¼ ä¼ÔÙ8e­·Ò²µ@t>;E~s¾@d-uÚW0+äOO]ÈÉg+òk‘¸òKÈÇ'Z0¹Ô)×hãmï9°òB ]…;r†ìã•ò‰&R5²ïFÈ„LÈk@~,*6‘e•æš#YVl¼,|øa Ë*͵§ }]p?ñµîKK¶”.,Èñi;íJKÙ‚§Ž·ß²9N!«•„\CŽS‡È¨LÈUä8uŠ,• ¹‚|L# eB®ˆ~8GNÏÈɬm9‘üÙ9òùÔ„üp­È8mìù|jÌÉF{ÿqï£U^vAC¸³CdœË$dËÅÈÙòÓ)!ä†Ëê³#d=aLÈÖÑéÍ´ºÛ©4aLÈed/sšväC©=¼´ÊË^ÛÌÈáíÊãëló\‚ò!ûGöÖÙ?”ºxB&dB&dBîDöxmðP¬^1òãlWWŒ<_È@ÍsÈÔ¼7BžùÿâÇ@endstream endobj 382 0 obj << /Length 50 /Filter /FlateDecode >> stream xÚc``ø ‡.,,|ýúõåË—ÿÿÿ\[[ûùÓºÛÏ#C]FÁ(¦…”endstream endobj 378 0 obj << /D [380 0 R /XYZ 110.854 636.116 null] >> endobj 376 0 obj << /D [380 0 R /XYZ 110.854 390.637 null] >> endobj 379 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R >> /XObject << /Im20 375 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 387 0 obj << /Length 1422 /Filter /FlateDecode >> stream xÚWÛrÛ6}×W葜‰\yiŸì:nÝ:M+3í4} )ÈâD"‚Šâ¿ï.”I›Ž;ÏX‹Å<{ö@Ì9ü‰¹œeFÏ•0!’y¹›‰9ý}ž÷Òo³óåìõ¥JÁœåÆÌ—k¿|¹ú;RñBpΣeœ«èì<<úx}ö!^Hã뫛åù»XóèORœý~AÂÅÕÍ×g`m¢¿Hsµ|óö7ËE)ÿ³üuöf h¨Ê2f´ùˆ½á¢·\HÍrî]âÌøÙönÞ‹~>­àó…÷Ë›zOu2å)“Lo/*·ß÷ygwŽÄ¢^ÿ†7ÝýÖºÇÁg%Ó2yÉ!´ãŒgù Þd – _Ó"*ö{[´E]ú±ŒšuÐÓpuBº  ÉÑtÙÔ]Ûl·vEúÛ{Ò4t¶#v}×µÕm,ytè¬cñBñ4ºŒ…‰š–,-¾»ýÖ¾B<ßši qw€´¯/! ¼KEð¬³ß:29®$KslF0„V½'ŽFøOG#Ëê;’3è9›úÑJ" %æ~î)xÅ3¦t ­Çü…29”ž‘ñÈ L··eõ‰siCŽ7EG’ß™Œ6ÍaRï6,<8»bžp‘2còч>ºC±ÝÞlj‰^a˜ÒÈå¥$„6%ÇQ1Ž1éÖXé°EVu×Ъ¦¶Ãm’¨;¢iCƒ² þïÚ¦²îL—,ú$¥"†4Ѩ™Ìt ±ªWÕ×j°'ÈÔÓy0„Ýt@Ðz÷*åL)0½ÕÔ7 @a£ˠ쪯vꋆeB>éS_R_&ãÔ_H%z–e ~‰eªÐFP¬]µ ê‚~–±2Qõmy]9Œ¹4ѱZÝùj„Ù/húêö~Áâ(¿d–F)Pñ±€(ÂFkÛZL$hœÃê;ªŽã…6>Z»nZKsGK+JHÒP¡<³ ÉE=Á¹ÌÓYú4δdTO‘kÆ“~1 Ï d¼¹þKƒ¾jøÿñÙ&ŒKšÃWñWG»ÆÓ›Bû(œu8›ñ£Tb–nS´A¦AWì‚ r§îJl舷/JOÌH{´=’8Æ¢†O9;Á¡NY6•¸t*ëw’C•?âP@J'ðý!Žw¾¶ó,úr°®«°Câ:miÛ‰É!10Ohâ~?c°vO#¢Ë¯#œ!¡wA0]û’.eúD‡ó¡òE™D?Ù¶+ªzÐï8aS)p‹^¨HS‡TšÉï÷u%˜QrúXÂÉuj¸ B¨U°%‹nãOe´p¤©›Ž­õ훜ÏSBÚ:¥ t _áx|”9(]³=`ô€DæÑU°¥–^v¯°ð ×פ¦ú6¡S¡ª@ASظÞÈŠŠÁo L…MAEg‚?³px;•õ}@¨H Ý` Ü`ûm…ÉŠÔe³GË{šõ}´”( E ªþ¼”!æÔM¸ÐÀTX'NµºcP•@{g1©„Žn*¼b=…(!ç6ÔI@:5jÞ7jœGS5ŽÂ|'ºƒ®àhèÑñ@=æ XŽùy¼Æà‘‹ÞËÀYµ%Î&ÚK 0\0ˆ‰¾ëáí"0ÈûHz«¶¿òö¨Q‰‡‰“Åý¤…Íé0¼Â„>}?0*\gׇ-›ºM §·|é>-r¸uC¯€ã’¥&Eóùxh¥µ7ˆ0÷e–qz2){åë«ó‹fö~6ÿ°3¬LñᑱD¼p]ÿÄ ¿¬împU-4¨ >Ømê6Õž4ç¶;Z[O<.þçëz(¼Ž$¾A =-¾ËYbç)XõèxÁ\*¦ýåèY»ÿª `¼é4P ¸ô¿ødzñ±ø/´·¾endstream endobj 386 0 obj << /Type /Page /Contents 387 0 R /Resources 385 0 R /MediaBox [0 0 612 737.008] /Parent 356 0 R >> endobj 383 0 obj << /Type /XObject /Subtype /Image /Width 805 /Height 522 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 388 0 R] /Length 5479 /Filter /FlateDecode >> stream xÚíÝËnÜ8às=tÏ:èî˜ñ T:Âx=‹ô~€´÷¨×‘‡¤(u-‘EI¿Çe–ârø¯:¤êGY‡B”G¢GYÊIiljHv·òk^õD$ü’¸ÿ«‚$  H@€$  H@rRE/#Q ’(‰žlz ÉÒÙ°«øK úâ¤$S—1@”ÿUˆÐn$ѓԬHð‹-°;‰-"‰IêùzËŸ Ôqç!áz‚D¥$™hÞy@B ŠÉiH¦[cJI2ñË IX÷ AÒÖhæz6±~Ä6O–ô’ž"ië(é˜Wõí Hä=ªóA_@uù£sF%&!ýÁæ|%ôI”d‘"©EÚG©IX =„•×íÕe 1cŠIê¶„LÉ”âH¦§¼°U»R)©³’(©µZWu.+$ I×ã"y))-ŽdAvƒ$‰{©‰®Ä@"¢¤ÇåIrõ¸d é{\KfÃ.1.!©ÔYI'˜N6=ۼ˸P±ù d\’'§Gï tä$Q¼:{A’š„@RÉú«j IÝ–Ô  HRì¿Xñ5$ÉWa©øø#Á*,•0›PJ¶•€$  H@€$  H’’ƒ¤$}™$%‘økþÙ¶`º m3Ù¹”€ä9}e$II6ä®*Ž$¬û†Wsxâ®"Q£gó:¸¹¶dÓըג¨‡çTïü^Þ©ÝHº7¢êg~ µItù’ZpͰl’þä½*.ž–¤”Ä–/Ñ‚ç×’¬ïajjÎ!¶õ—´YB·õÿŠw"Ñ!§Ê¯U’y²ÀtW’áò¥âIL¦·Õˆ J‰ûÇú/¹ÍöÄ=Ht]¢·¨`ß”*÷;èÙ™¤·|iI°Ø«I$ØnK­Sô{•…D$INÛ«”Øþ?Û—Uµýá¬v®¸ 3€ÄD­‡m‰ÎékI¡°›à,÷ØÄ—Ö,$G¨¸Lš- »ó•©StÝŸª”€dœÄÔ üHT\êp×pùÒ’Ž^L¢|ó®Üˆ!lÞÍzA³«mu™ëÝz\®5·/ÛkÞi’èò¥‰Ê&‘]1¨ëÝÚ¥iá[Ф•gR4ñZÙã’õoÝ^mö5uMÃ;ŽÞ7˜ãJ6Ç€$  HKRö’ŸÅ$XòƒR‚Š $  H@€$  HG¢&ÎW{o$¸`Oæî‡ðåH! ±4®wÞns6ÚšÑß©ITäÄî‹Ú™¤F)#1QÅìƒæ£i»“˜TÙC»ÍW‰p5;›[3¸öj’ã•ç I\”N•O›þ-ÕÒîaªù¢ÃP]„«Ä û T%¿ ×j¤ò<%Ií³ŸåÒÃ0mUM³ð¤.ŽËä¨dº}9›äû¬T}E]^¸wv$MÕ‰Hô]dâ$îö…‡Ö’¨É‹8ò?ã›wòb4ëd¥Ä—–’ùæ«€ao¼Pcwæ*¡-‘T®m j?máï¸Ä.+™­¸6 sÕ{ÈE–’PüOã =®Õ-^±OHÞ“¼üÍ, ñló®lü¤þ`ÿjì{rJvK•› u$f«{ý©ü–—ro&‰ ¦©-·'«§{\îg›bŸ/dz\ìƒPmL*©`×!á°ºeWÌL/Î?ûåLþiî­?*aB…ŸŸÚ|'kõLôIØ–:{+`›Å®_¯\ãïžVu¯Ã’IL/Šë^)Ô~9V­¸\’XÛ¹º·¿„Ÿ˜ –’:Áp¿óè0¹…ª`÷Ë@R?Ê6Fâ*. ±ì·¾-)™$Ã+'{Õ„}óÎÁ¸Ä¶ÞvÈk0ùåLAó’$ö€ÊÝÀvmOÎÜÜIÿ±wö"r½99ŬýgìJ2;qµ4«A’«’,ïØ$ÉŠŽH2‘,?@’ó‘`Ö–½W“½*J *.€$  H@€$ YB2Ý¡@’•¤Û q4@ò’èFùÝþ¢ ÉFb·95[xºØÈÇ4ä#ñËa¸ B¤Åó;áÔð¥IjŸýJöhçaÚÆR¢@²±â öèv Ó@’³yWÃìci ÉÝ–ØõBÒ<ð0 $yIô 8X=OIFÅ®‰÷«ä#i ®Hƒdß õü@$ 97IìNÌ y!Il ½vð ’}+®€däÄÞj½l$O¿*H@‚Š $  H@`VŠUXyH° «¸Rr–$  H@€$  H@€$  H@€$  H@€$ ÉåI8¼µ"H@T\  H@€$ ¹$I}’UXg"I~€$  H@€$  H@€$  H@€$  H@²üGÿÒ”{| HÊ%ùž;óߢ¿Å?A’BH~{<~%¦<ÞþŒ%‚$  H@œˆä÷·ÁѼe>¾¾ÿH@RIqs)N’œ{É%ÉÜ–¼5ÓmÉÛ$ÉÉÆ$  H@’•ÄôN¾DÒ¿ì@ö¶@’ã’|Y—¾ŽÄ}ó/åFòÆïJÐLKâe䇛OýB ÉHÚ,Ò9¥3ªÍèÆå¹UjlšM&9Íþ‹5$òS IûCn’$òf¶oä€ÄgìÍ4 &éFU³²”t?œÐ–€äX$&ûÛ¿¤- Il_É’´u$Ú’Í$e¯Â¢TG%mI¯”Ø'„äF½RÒøçꥤNPJ@R‰¯¸hЖô*.×}íH–õ¸Â¡bHB ÉqH*[¿T½¡CÐËêK\«ZLÒÍqÙt®qIR=L'z éFïm†®îq…“ófÜYlô’+æB/H@’å$Só $YI$Kú× i’Ôµ‚R’‘Äns*A[4–’Œ1Á.4ˆ» ÔHHr’Ô>ûõßd·óÓ@’¹â²1ØúÓÝ·â1 $9›wÕe=š’Üm‰ *¹šÇÃ4ä%ÑÁØl#ç]óþ˜’Œ$>î×Ý"#š¿ÖôÍ”@òÔ„ŠÚôÿž8˽ö>r=pôÛ勪hP1ƒä$Éæ“‘ô×öô.=U»˜+X{‘DïË[Ÿä]‚ÕìCRÝö¬¸v¿^,#©ä95vAC@RÙKçTQ¸ ARåûjú:|D°J„dŽÄ4ÝJr%çV¹äá‚‰à– —4Ç%öLWb@’c‘¸ÊËEÀ$•x¤ âQ ì÷Õdä£'±§U¶á HŽDÒEøV-ß5ùUŸ„ÜiÞ—ÜìB" Äï–d‚äFM¿”¸ž]ãÐ/%])¢e$‚|ó§€ä$iWaIREIbWHÒÐÊŠ«rô%sÓŽ•_tv‚).6à ½Nð‰óF'$g˜œL¨ôIú*~…‚PYF‚ ûzÉ…3€$  H@€$  H@€$ É5&çG¦Ö«è…ô‘âñãýI¼ÿ$SWGvý­bÒo´É;H@r0’‘L®ÆÂMö A[’ƒ‘4·ðº 5õ{žWÝFŽIw¥¾2·×pz£$÷û§yh¾6¹—ñvÇGrÛÙÊ¿–m"ís! rPŧ‰•¡ ]ŽÚ“jd#i³u¢©°”Pr›©nCZwû óů?pkr©ß¤PåH÷OY¯PÍm{W"I|ÚQI­Õ’ÔRJêL$U°ÖÀî¦íšƒª[kHA“ââ;’Æ…5ÿøH$£ÍéiIiI$¦ùÈIâöœ !Ù—YÚ‡‡¶¤q«nv§úó’HKªµ,=.Ì’ "•þBv\¢ ß7“ä}¬âjܪ¿r=$‘§ÎO2Á'Ÿ -%•Ïû*Ø¥w¶T·+(V5H #¡\$•Ý È’øÛ_ÄÇ%n@b+.{sL·QÆ%UsÔqÉÂK%yIÜè½iºÑ» !«Þä¼=Á®±$nô.Ï®-©ArY’«_è˜~Õ*, ”€$  H@€$  H@€$ H¢7ÅhüΛýÄ&~ €äz$ïf»¡IoûÇ“’,ŒDá˜g.HÒ…¢L½¶IF’z I†R»Y†¯Áûü]v||¿¿Ë¶ÚnÃí³‘èøF ,qBú¡$qÍfy‰NI6¥—øèE>>˜Nê$YðÃö#5Iäf®“›fônÞp7›¢ ÍùJ Kƒ¢tè¯~h“:•@’ˆÄ š/:ö”” LQjk+ *ñ*&|…A’®”¸8®ZÙLWµÉrå’|x—|˜0#…Š+=‰¾eIœÄµ6•ãý4$(%¾´LP-$;•’¿>^wü}}jAÅUïÖ–„£÷oÍÿ¯_&‡ìÁÓ@u ûèlÓj¸;¸æ]wÊ\|*Hõ¸l´©ÜÛÇȧéq±ëK@ªé&ËÝxg’úMý|³03iÖþ ÇšãRõ¿Às$ßêe ùõ‡/G É6~b‚ø’ozZ6ÉÿØºë “óD5Hp K7º&w2‘h”_@2IòÍJd#ùa€ä8$þ‚kFÝ €dtŽ«{œ‘äÇÿ‚$…’|ÓG˜ƒ~F6'IûV+.ó[$¥T\úè÷¸þý‘äããg¯Ç¥ï/')iÉ”l$}üÄP$G#i뮿³‘´Í渖Lη J’ŸÓÉ1IÚå#É?l­’¤ùwSï5CòK~æH°ä$ ™!AL0H@€$  H@€$  H@€$ )‰dé}È@T\ ¹"ISØ’$ É4Éðø=–˜òxû3–<¼ÖëVa¤¤$  HHò9¢‰)ï±D€¤’ïoÅ%9Ü’IGYÞ•¥¨¶Ê#ù?9_A\endstream endobj 388 0 obj << /Length 40 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~}ùòåÚÚZ…D†Q0 F'í ìendstream endobj 384 0 obj << /D [386 0 R /XYZ 110.854 636.116 null] >> endobj 377 0 obj << /D [386 0 R /XYZ 110.854 611.21 null] >> endobj 385 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R /F40 126 0 R >> /XObject << /Im21 383 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 394 0 obj << /Length 2088 /Filter /FlateDecode >> stream xÚ¥koã¸ñûþŠàP 2óDRÔc¿e{»mÚíÝáÖE[\ïƒlѱYr%¹Nþ}g8CY²µI®‡ÑxHçý ¼ áOÞHŠÔD7±Ž…”ñÍfÿNÞÐßã‡þòîÃêÝ·ŸtÛEfÌÍjëŽ¯ŠŸ½XÊ0 ƒÕ"ÓÁ݇… ƒ¿}¾ûi±T& >ßY}øa…Á?q÷ýw|wÿåÇÏw°Ûÿ$Ìýêã_¿ ±LÆ6‹_V~÷qÜ£:M…‰4ÀÀb(ŒC·7üéÃÖ¥NB‘¥±Hc…'¾.Àj‘†A³Xj“ùB…Áñ_SˆŠƒ~giíX×vc».oŸ QU¹Éû²© ÑléHk»æØÂÞ[øFpƒ6AùD‹]ßÀ:hošª²›¾\(×KXÿf)aLßHD‘qìæ}ß–kdñØ#¦AYã7 ºƒÝ”yEÈfýo ÙÑÊ&‡ $úí§(iAÆR˜$c]ew¨òg¦Ö?Wpƒ;3Ñ\¬…I°9‹ƒŠ‚§Z[9•t»ò@Œ¬m²–Yô78ñ”2`ùbG¯ìí™–2ÈëõT¶„c¦ºä}…=”›Þòf§ Àþ+ Õñµ„ÕËÈqšóÍŽwÂU´w×T…'Ú3Õqª »ièÙϼ´ør‚„S ê‚ YGgŒT]Xí‘YÐ'¸Ìj†@™&‚ÐŒÖsoŸú[¨TÄ™>Û"‚€ú±nÏÞÔbò­ÎéðÒ§¼¼ö0d°åEç¾{gœ _È­{¶Òd/±C“Fy3 žÌ€›wyG¨œ>ÞŸ¯u£T(ÂÄë†.¹VŽÎD"½oOÄò\æ=ÝÜÛªê<;ô=íJàüÔ¡l*) †™ Oà·Û5Ǫ øØYTƒ“Üׄù£qþHÀ-Ÿ-ëÍ@#à:Tdƒ4M½83ò¦"‹c¿^Ï…;¨Mºë×Hxfó®+jË¢‘!ÏùÞC¨Œ[¯¬L£&Ê‚#­Ý‚ç ´‰v$Àá0œâôF7H´G´Ú6uOåÀs›va :¼Ž£à=hFØ(`\–f3+­‘~Ýe¼å,,þ¢OQn1L¶ †çf*s$ROu¿;v·S§èX£ô¹$ (×é9¯ç2¶ID˜f¯¸AòÛÜÀˆlˆ.qYŠÏe £0T¯WdL±P¡J18èJ£Œz ỉ?´ ™*IýÀ ÃPš°Wà"a8ݽr…'˧Õç²cEþÝaŠÛ_J|)‘Iõµ¶g´/§~› PPµžzÝ4 -ä¯uŽïH%oàMÞòb ô= ¸0‚F¥ÿ=†ª7‚ö§tqø¾¡ïáØ=íy¬éOùþPñžMSx¨Sxâý «>Ó÷<ºKé›S:ã\îš]’Û§€ÁÌÜ=\T¶T‰PE>'ÕmçÊ>d¶PùÝÛ~×ïgœÄhHKÙk^¢´ˆ¤¢Îú¥}RÃ¥1ísÎ4aÜ;S?Ä^ Þ-H!ËDÈDO´rÈ7“=謩H3EY‡ ° lÑ5X¢-ú烥Ÿ®7¢…3øÍ§²õ\`}3± åèå±.l[•5 g¬÷Ûùb7?pÍIü2'#•t–)b»ë: üñs¹Ï&ç%x]öûüÀÜlËÊNΊ§õþ—üiG/Gðï<{×n‹É1 ¡NªHdQên¼s#ŠÆ~¾€yMˆÎºvAê¯EJêh¼)FDÓ@!ꮇ£iìº×À ·ÎÏÌM¹/«¼¥.åÀ–yÆd’z•³¥Þ Ôı ,&ŠXänÉ!º’cÞòòê‘–+à|Ý<’rÍ{+#ê;`±ÐÑŽœ>µõ97Ð$hŸNÕùÖ7e7=Œæ¤ Sv».üTM”+qÇ=u9°\òJŸ?b†uùÑ£=™ªñ6¢B²Ä/§#!M»g6>¡éš–ðãdm¬©û‡3v’PA39X³À™ß1EÌ gyáLj눋Åx/ìvÎo’XÈ¡³“ÿ/+§›1'·µµkh½©ÏrôÊÉt¿«Ü¶IË?¼0À2kä©N¶ÅœTP^㥲¾N±B:#×øn—†pn0^A…z9t&ÈNYóàá’Lœq’Zòóä1Ã|‰dÈçü7ó(’ˆ$öRv§²w³=Üàâ çTÝö™‘~ΡlŠ('|Ï},—<Ù pâ&‹Ëï´ŸsŠO¡+œÀÐæÙy¬Û[œ;ªg?y¸†)SÝT×å¹ãècšÛ¶Ù¿ŸÑŸ6ô÷ú†ß3ÐÏA¦Ôä©ÁUœ™¡ßÀñ ÔbèχB"_a ,še—cÔô"Æ}¯ÝeÑœæ*´M:=Ñ(I©Ïd@ÃŒt~‡™ä­[Êd'^ñeÞQZÔ49?àŒ 9ÂÉ–Þù\y"–¡#/ÚLC!+ÇÑkj&ÌõÄdo¾SÊL é›L‹Ž­®8_ÓÖýÏ‘élRt:¾»áq=’"Vêb\Ÿe+Ú˜7tãI]4ZjêØ´ääŒHÍüäŽÙÜ‹)mu¯ÈÜô8àò=q—ot|ÐI!uvùþB1{.˜Ó×ýŽE¤!j• Ư ox—ÿ67endstream endobj 393 0 obj << /Type /Page /Contents 394 0 R /Resources 392 0 R /MediaBox [0 0 612 737.008] /Parent 395 0 R >> endobj 391 0 obj << /D [393 0 R /XYZ 110.854 636.116 null] >> endobj 57 0 obj << /D [393 0 R /XYZ 110.854 479.253 null] >> endobj 389 0 obj << /D [393 0 R /XYZ 110.854 452.065 null] >> endobj 392 0 obj << /Font << /F37 124 0 R /F40 126 0 R /F54 188 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 401 0 obj << /Length 1594 /Filter /FlateDecode >> stream xÚ½XÝoÛ6Ï_a{šã‡(QÛC‘¢í-ë†ÆÃ6t}mÚÑfK™(7ñ¿;i[¶‚¬+:ˆNÇãñ>]¼OÔx"8çÉt\¨äòåXðä—ëËwã‰Ô<¹¾º™¾üiœòä7b\¾}EÄ««›Ÿ¯/AZ'¿çjúúÇTVˆ,QÙøÃôû‹×S°† UÆ0* 11 N¢äD¦¬àÞ%δ_mW£H¾ûn¿ƒ&Þ//ê=M³!O™b2x{c»®ªWdywk‰¸évkëˆn–'‹¯*w·.wÁÙÎnÜ©‹`‡d©Ìžòå8ã¦ØÛ;˜™·M‡GgØPvDUuä„¥rÖŒ…N>â¿À²H?”›»µ}œœ'Õ’VîƒÄ=f¹¬ƒÎ®¡ç¼©»¶YŸ°lZ¯pÕ6Ûz%×MK¤S¦½<„Ãç"e)$]èÈ–Ž‚VaО}¢:/뺉ëÎm#»ÙlÊzrá¶ó[¢J÷Í@ÔSÁ”|*êR±TȧëO(Æ!‡|Ÿè®óä0°9ƒBªjgÛ@[Œô´ÛÝYzíìC˜ÈgoªÖ«é™ß$g"W½N01ú(=[—ó¿Pú¤n° rèÈ3yê7Ïì¼Ü:KÒ=GRÎdVoŽÏ8Wl ¼* ¢æ„«„²ÆS¨#bTõ¢K(Åj±-×Ä+»®­fcÉ“­¯e÷KT`Hj–1r È"M®j×Ùrñœ#TÁD&{¡©pSš’Mð,ñ¡±<×vÞ‘5±1pùÄdù’b³uížÅ¥ùÜ:gÃúÖ\NYìñx‘ƒÈfö'>(nU @ -,š¡¡Ö–u„4ØÄÀ¼y… 8¡+²)RÉ´–!G]õ€%åál(Ÿ†Sï»u·,I8êà¼8à{hÄæUVø· Æø¾¦I…’‰~Šê]Brh×묻'p¯¥Ê`q ¦ÿï.w6t¨Ï¯ ú=„7\áÓ&_6u ̓Pkì¾rùŸ”ÏšõâC,+ y-D¬€éuñ…ußq‡ÈX½]òK‚Z¿â'2¶]WuPćdÜÁ÷¯BìÏ¥>ßÜ —Þâ1{õgØ+¿ˆ½ÓÛª]|±ðþ‹ûdêÛ8Uɜ˖ ð  “¬¶[ üHqÅr‘@ªWèçàl«¹Š½xgçÕrGú»hE,Ù‡bEŠÏ8ïìa*Ï‹> # C(h¼S@¨×¥;€NÊŸbŽñ˜˜:¢jkýÐ♎D#Fj2Çš 2ÞùóS vk'ùÃÛÚv~XTÿ>ž[mÛ²«›ÒP÷wH»ð²Ä§$mÈš…ß›…mZXÔ^ãȃ"³=»Û*h÷¥qË 0—´F¨¸nhø_ûûGJ] îªûŽx©èÈñzPî;g@ÝQ É}=ƒ@”Uá„p¦ÿăå/^ Nd0¯Â÷ˆ0/#r˜¯ú˜1½lÉxö)'Ïãp<˜EÒÚnÛúxÑׂ'à ´ÓÆûP„–=¬ @ 7ë½RÃ/ ­9Ëû3Èþ‹7|j s'½“!:‰_°Aò6ñ¬²­Êjè hd)#ÂŒ°rüÄ;Ò#ŸÒCîd _°Þ°;ºPcY€ˆó}ŸÜüŠƒ;ÊŠ"LäÂ÷hM¬=žMÑÅ!˜ÂÐéÇ‹‡ta8âÏvôŒ‡=†Œ$žÏóñZ¼)Î ø»>¥Ó¹­Â36¾éDM4\JäÔîø=çȤCÀP°ó—hTO½L³—Ê[^°4ÀÁÌeû. ­ÐÚ? ”)Oþìòä/Pÿ“Èô,endstream endobj 400 0 obj << /Type /Page /Contents 401 0 R /Resources 399 0 R /MediaBox [0 0 612 737.008] /Parent 395 0 R >> endobj 398 0 obj << /D [400 0 R /XYZ 110.854 636.116 null] >> endobj 390 0 obj << /D [400 0 R /XYZ 110.854 611.21 null] >> endobj 399 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 407 0 obj << /Length 1546 /Filter /FlateDecode >> stream xÚ½XÝoÛF ÷_á‡=È@u½tÚ[º4C¶l][±îÁ±e[˜-­’\'ÿýÈã>l¥6`PS$Åã‘?~¨bÊáOL…àÌèh«˜ O—û‰˜Òß_SOý8y3Ÿ¼¾Q ¨³Tëé|m_Ÿ¯þÔ,œó`>KUpõf&xðëÝÕ‡Y(5înïçoÞÍ"üNŒ«Ÿ¯‰¸¾½ÿåî ´uð‘8·ó·?Ý£±TÄJfΘ¼ƒ7ä¨2†éH .r¦-»ÚL=ùáûV5ôº!\ÊÄßxþ«¼þ{·x'bäM¶¯_!-ƒcF¼E]ç›"[¹'úÙg«ü°Y¾Ù6ÄZ—…£šÒýn‰OœËªvÒE±òâ¼Zuçö¥:…ƒ àc("EÚúúPîV-w˜v‡iu¶, §†vÙi(Á¦4Œóg³íEÊaL#fŒBíégx’ˆˆTú4H?O$è]©<óõí^Êéu9y?™¾ïL³І~Ä"ýz‚æÛ*Ëð¯o¨\rc㔚ì±! çátlr]\ ú]ÐÏ|¦t?Îïòº9–0 ‰žv®º hxòAð´ ‚rAàý ¨³ „)ƒÐ¼0c!‚é$ýw!8æÍ¶Ã’cÖÀ]n눽P˜˜iÓyˆ>qÍoòÍ¡rhS¡–ðq4`{€åu[\ðpß<í2wÐoØZ®óõLê`U™‡õÍLèÀ:v’P¤¶$‚êLòä"ˆc XOàš‰T\R—ŠEBRÖÆõ^Êóî&ˆS8¼Uêr–C™ê Xì-åš8ÕE’UYs¨¨3àái!"†JoÓßä.#6#h@ á!•×dz±«K:²õТE¦1Kt:hXP_ŠË`Yî÷¶±áÃq›/·H Ûb­|Qq¨»½Y4U¹#u{8rm Ø,ŒâØ¥" û¿wtqÏAÖú-6¶¯ËÝ®D0óbƒPÞûšž¨ß W*ŽG½Wt¥$\‹éÉš®0ÝÀi²ÊÍfû:ï^_<”x¹/øÏ˜ã½«{^3 Ó˜š8b:Nÿ{ ¸ÒRŒË˜ô,¨Ðó þÆÞ:D käsíº>†4Ç4BÙùfÁ„=W îGfäKÌŒà:2á¾ ¥µxµn2À ôåD»(Ú/M^$·UØ×fÃÊLp{0¼Ót“òâÄH;©QH@«¦[|¶Éëc0°àºÚd–N‚°»'t™³MXnÇ0\I»N‡»ž¨Û]†oÒî 4SÎÙó‚ÛÍå•›¹~Öl©ÎŠáHÆóãålÁµ.RfÅŒ¸¼r›}£M‹Sðpd“eðç¶ÙïÊÂùáº@»˜Á°ÊvYÓ²ÛµëÖ‡átÕb‘¼8¤PC£6_Ÿg[ÈXä[Z„ ªè¢†j”v‘UŽAþ’¯‹ MSå3ɃCƒéAâõÝ‹Ò/ È;Ôö²ÞîÈ"ý"5Úù¼zB¯z,•îy•F1ì~¥ÛgͶ\a—¼Ád´—ƒÜÐPJÛ¡”ú¹ÀÝÙTÀ' $Zãˆ@æçCV=ѸOZFÅúîÜé»n%\y aNjÑúSŽD€ªTì?8?ÏÜÞD~Rìã,ƒ‚²™&ef}œuK·Dçn‹M˜t.GVi‘㋆ IN&+Ìz[ ±> –[²u&nÓSv„‚Ör»(6ÝËDtý¨è¬˜úIÚ– ÷öƒNI—_%Ùt†Øuƒ…]-L`IÀºHixWŒ% 6Iåᎎ.æ<õ¹œË±~ùˆXÉõö;y4%,³$! »)w â¹O°Îk–r1XÐüT=÷Os&í€j !ñ ]—>º®çáöÕ/P¢\ñš#Aã “‘xA™péä†îØ7n [ }üÿ»s[ˆo‚ý%…»]Å~§YÒ¡k¸í苆ä™!‡°“Bð6|ŽÏS2®.Eáÿ ó$³~endstream endobj 406 0 obj << /Type /Page /Contents 407 0 R /Resources 405 0 R /MediaBox [0 0 612 737.008] /Parent 395 0 R >> endobj 396 0 obj << /Type /XObject /Subtype /Image /Width 204 /Height 123 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 408 0 R] /Length 663 /Filter /FlateDecode >> stream xÚíšÍnà €-4åž7ðxƒi/°ÃÚsÉÎ9¬yÿGæ'qÒµX–b©-ä ÄvD]H ƒÔõËgrùXPšZO3%E9÷\š~»\§J®…²kJ;JÓF®d¤4  £D°ØõìµXóœ`å®ZTy(ßfQÎ;£@ž¡,Ų¢Q”ê*šôPuU}§Šª §p;.FMúXŠ.@Õ’òM§ðÅtýZ¡tN¹¡ØZ¥oÃ(zñià4z"©?¦ªœbm·)½¡ôz>~JÛ­>ÙE)íôˆUÁ JèËFq¸êí—ù©¢ž7|G¡5ŠN {&óÝtHÿ#º8y•8J›Tx1ÑøI&ç¡PÔ—ÂbKùžH²PÞf”$æz­ e3E…Db¥÷zËN)ZòNãa?‘(2 HÙ€Jý"Õ ª›ÖÅ% $àr.B5©6ˆ°.è&µ¤Ð‰I!M¾¹¨O<е NH3KlŽ} v^Ю¾û§dyŽ!½`<¥x±ÝúJÿ³ÁšûÊSPH?ÆQPü'Š}ޑ鍀¶0£˜>(Â×…T«±“Ó Œ‚cŸ»ÂïN¶ÊµS4S3‹i[(J~¥è>tÑÉïs‘ë[åN _1_9iÚ/eØÀãN&UãNvQßÐT> stream xÚc``øÿÿÿåË—kkk¯_¿:kÖ,†Q0 FC8 @endstream endobj 397 0 obj << /Type /XObject /Subtype /Image /Width 203 /Height 120 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 409 0 R] /Length 673 /Filter /FlateDecode >> stream xÚíšMr«0 €5žŽ×å®oÐyè¢É: èšEÃýð,ÉNñ__[kJP1£˲w]yîêP ‚> stream xÚc``øÿÿÿåË—kkk¯_¿:kÖ,†Q0 FC8 @endstream endobj 404 0 obj << /D [406 0 R /XYZ 110.854 636.116 null] >> endobj 402 0 obj << /D [406 0 R /XYZ 110.854 221.736 null] >> endobj 405 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R >> /XObject << /Im22 396 0 R /Im23 397 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 417 0 obj << /Length 2296 /Filter /FlateDecode >> stream xÚ¥]sÛ¸ñ=¿B}£fN<â“dû”är½ôÒK'ÑMzÓô–h‹‰Ðð#¶û뻋]¢DÛšv4c,– `±ß ‹E?±"‰3£VÙX»Ø^‰ý¾-ôë«7ëW?þ¬R scë[¿|½ýW¤–+‘$I´^æ*zýf)’è÷¯?-WÒ$ч÷Ÿ×o>.uý“¯û‰€ŸÞþLJ×@m¢?ó~ýîïŸq³\ØHe˯ÿöêݸ!FU–ÅF+€Ÿ`1®åJê8Oü•’Øø¯ÍÝ"€Ÿþ:¬H+/OêoªíÜMck¾íÛsmUßëÝ®$àcS•uWt•« QÔ[~ë7eC°»¥ñ“CiÝ·Œå¯oݾ?ÔíùýIki_º>Ò%q’åÃefÕ¶Þ• 2¨¨@·kJêÈñmÀAWwÛx^¸/]Ï$þr°Ãð±êÊ/¨ê³…ë¥2Qõ°þPµ¼ü¾ÚÞ•]Œ·÷zѱe0Ljýñg°Öñ>RÆ™æ;­Ü‰ø=éäêy+™2-]p¹RÆF›Â&º)ilËŽ¾tŽe,7„û¾€hºjSìé«ã/;8ÿ? ¡b/WVÚèË®¬gxkS±°éäz/0Ÿå±Ê3_¡/ÑI¬­å%ßÇ—[›¶6L÷l˜ ÁA{pÙ àöEµ%ˆ´žN…²$úÛÆèkçŽ^¡+‘¥±Trrñ­[JÝ×d6ä0Ü7ÅñXnÙ`ÜĨtT—xàCG³w6 ”ù”øÆugM°%\S›]Ég}MLÒÓÿš$ò®>¡V¾Š©AšÁ ÁcØÒ‚AdzÁ>º}µANiîO‡q³s­gq·3ºÃDš_gØ`IšžÚlK¶À¬m¨<6&ØÆh·3›¯”°q&¦:ëD`0›L¤pL>Yú…ô#R¯Ÿ«Íb¥®ôh’µæÌ£qëj  ä ì¼Rñ?úˆTQíš[;߯ŸSS¤÷ö®ëd* UÊFÛÒd[µG0o8-e½åoþR*œžy(òù xÇ૞¯9‹´€¡Hûg]‘/CîÁ¡VähÞZ%I"ÈBI΀ˆ— ÷ÃE÷Õ~Oèa¹…p qRC|ø…B@‰9’`Í€{‹ñžœÂ4lÑ·å°×ŒN§wXmÆ|z¦T›Äi’Ÿ›OšQ¸‘Ó#)$fAÁö¢÷”þ”¦µ#é=3–B7ü1D8o)ÌËi|!Ѝ á‹…â‘&­£‘S³‡¼¦åÈ É2Ä©­APjܶߩ‰À@ž/)´›nχ¼p ÎÑ…u7ã¹ÿŸTª': Ð±ÒÙ…™ìó±F­& @À_Ðê'¸HUœ¨Ÿg¨ C€m}0Åí-Ä•£w½ †˜ÛÇñtú^²À“,s/OËuåE˜B™Ë8aCqiAç$Ç¢ÙzýÆ=8ô{ ’P=­”Ñ—e–D%QyßAŠ­ »ÒÝR¤õ £ÃŠv¦Æ‚Ê)1òêd$‚()äB IóXêi ™–Q2U>õ_nòX_§BkÄäÜó”*ccÃNbf‹2®âï(BÞš¤ÌÞ‡“’F’jª£;*Ä”÷Uš¢ù¦<€œ1j ¨IK¬yÈÄ™ѰS› 68?ÐäÐï»ê¸ç„{ Aª=ë6@N®9GÞA¼ÙU›öO—©ù´ Q9,ïë®lŽEÓÂÛ¢Nžp3hÙâD_¥#©õ¹›Áö^È0ÎooEœ&µjÜýÜÞ*‹S9-0MƒÜÃwÄ~8ÂÇ6$h(H³i%~:±¡­c·èØ7Pëñ„KMó¤\4Øn¢®/â†JdŽa¦‘‰’b¾Pgók :(yR%;?k3…5q’€@d*ã<}±Ý”Pàù\W~-Ž»w¬|µ@ÃLc %×UÝ;)ïÅîÝp÷þî;z39'ôp‘=‡¾™–;½¶åΞo¹ÿX 8ÕõPóÈ”\ž^"Ì5"OJ!ï݈«xAA—rr@ñ[ôô,èy«”™„æsˆæ7èPåæ°3¨üUÆ”óáúï1Ãr´ÏâN]jã‡aý´°½äjbö-_“q8‚rêP5\Êç+®v©Èj™ óÑÙÑd|º€ õ¬´Õ¾: Ó»a‹ªÏ`þ™¥Sþùt©©(ƒÑуö\ZžTÁÄmï#ä”/C¥‹ÞºÃ{ã𮉌~o{ßJXCÝE(õ ;¿¬=Bå °i©|. Å&×W©[ºôQGBålù’OñN†bˆ¤ Bó­%BǸmSܵg+ŽŠ7$Cûõþ”Š g¯ˆ¹ÕÓÒÈh(¬š²mË–&­AÖMCýM¿y_÷å—·,ÔX e “SÙzĬ8%$Vfc¶{ʲ!Ûi©&]¹Å ð=¿-°ƒ‚KL’1×óƒˆÕn0¿Ù—«AÚXä7¡®ÒÛ}*»¾©©58ZZL½ßš ø6¼9:1ß/t»ÓsuI»ñÃLSà•±Yt×S)„_¥LǦÓU½¥e´=|ò}Ó7 ¬Ç~„wPОTcŒŒæ­Àp|ߘ†Ä¯øÕÇžÝì’ÿ!×ãõÀÕy%¬k¬¾iAôÆ\&Qÿ LÉ•éKÉ+Ò—åôõ¹Ü—›PFœ›ÄJ¬+Æmùâñß ñ¤õ¼ܶœ«idlíÅ‹«0'ïÈ8ÛwUBG`Ü*á§ðî [ƒ0ìHK/l‘ ‚ Ñ"©ÄN ¤‘g%vuðZGïÑ9rótñ)Ò,1µîç.ª-ôêùD ~dAQø¥Pª? .Ä%Gƒœ/¨py„]í›öœ®ï6hXQ0QÁrIA.™™“ Ry¹ðÑ3mÔ̓j‡†d&¿C{£í³’ùIé^>t%øÝö©­Ò©ld0 ä”ežŠdƒOScÛ”ðÃö_f<Èdq–æ/¹Ð‹ÿŽú/V‰ö>endstream endobj 416 0 obj << /Type /Page /Contents 417 0 R /Resources 415 0 R /MediaBox [0 0 612 737.008] /Parent 395 0 R >> endobj 414 0 obj << /D [416 0 R /XYZ 110.854 636.116 null] >> endobj 403 0 obj << /D [416 0 R /XYZ 110.854 611.21 null] >> endobj 412 0 obj << /D [416 0 R /XYZ 110.854 286.278 null] >> endobj 413 0 obj << /D [416 0 R /XYZ 110.854 130.592 null] >> endobj 415 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 421 0 obj << /Length 1003 /Filter /FlateDecode >> stream xÚ•VKsã6 ¾ûWè(ÍT ß"Éd3M›î£Q_Óö ZL¬®dîJô$Û__”äGäM;>$@àÃG0I0üHBFJðD2‰‘ɺ[‘$þ>&“ôýêª\]ܰÌ‘")Âñ²þ=eYN0Æi™i–^^e§?Ý]þ˜åTàôîö¾¼z—qœþ7.ß^GáúöþýÝ%X‹ô·¸s[¾ùáÞ;ÓD¦Lg–ß­Þ”€&eJ!ÁÈg N†ùd™SŽ4–¯Ù ì­1F˜xëäs‚‘ÄX²`r(ƒöóŠJŒÍ›·åɵ]}X%ö˜ b²× I¢½ÝyÎ!©é]³®ÚÈÈ»¾1[W¹ÆnOÙ ¢@"î=Ð\êb½—hÆDXP‰A‹ 5¦Éý­í›,`\FœäD+„½ùC`ošÇ]oâ!–KØ"qQnŒ?yq5¹§(’RAs{å›ÒK9ÚÚOÁ*¸¶ñë6cà2c"mžïMkÖ.nýâkµ©;e<§Œ"¥ÔA¯•†J‘¯3èó%d´0ÏÎlkS/¤*1¢JŒv­}^œ¥UÛÚŒŠôiðkšÖÍð·m¶.j‡.°2ÄõÓ¦iM4<F£ŠOav­k>µæùNmÍ«± Ž8—Ánk ZŸ³ÐGº·¶ï ™/™é7YÎ /q•îÓG)&4ÄŬoœé†É´Ù>ž¨; ¢hûÝGßÄLFDúå/[õ5Êrú4ËÔîÆÊ>„+Üu•Æ™† Çt[{¼ï\Üž×›(ŽØ¼:õ{1/mªQ3õx¾qãñåk¢ÐöÙo¶Ö£Æûë^¸°|> endobj 410 0 obj << /Type /XObject /Subtype /Image /Width 262 /Height 333 /BitsPerComponent 1 /ColorSpace [/Indexed /DeviceRGB 255 422 0 R] /Length 386 /Filter /FlateDecode >> stream xÚíÚ1NÃ0`$Ø»°s‰#„p„%ôeˆä1CQaUqòˆëJ¿—Rœð{h+õË“ûjÿu¥ñÃ=]ñã¦*lŸ… ·Z¨P\<øIe ÈýÀ‡å›Qþ^]‡k:`C…zþÀ-Fƒ;´ã h<[MÉ+}Š?âÞ¤PÝþg}r2ýu°’bpø>å6R êgÀJ18¾“ˆAä$b18—TÓAƒˆÁ0ˆA“ÈIükþ4É©‚1HÒöˆ‚c«#àøeͬ~lè$M¤¿&މH„ËŠfÌ Lí­(¨ÜÉÜá]Àcsr]ž^¸‚÷=pUXåAÍ€ÒÃãÁ’»ýO3Ú8b©B×,( mX` ]² îQAœC¼Ð-Û‡¬kT΀ÆwrÍ€7,*v XzÐ2 ëµääE+.ûô¦*lÅ;Q…ä>úÕ‡ìendstream endobj 422 0 obj << /Length 36 /Filter /FlateDecode >> stream xÚc``øÿÿÃåÚÚÚëׯ‡††Îš5‹aŒ‚‘ºï endstream endobj 411 0 obj << /Type /XObject /Subtype /Image /Width 335 /Height 260 /BitsPerComponent 1 /ColorSpace [/Indexed /DeviceRGB 255 423 0 R] /Length 409 /Filter /FlateDecode >> stream xÚíÚ]j„0ðl…úè êMêÅŠö{„½Iõ"‹},lÁG¡b¦™µiKÍ’¿ ¸ãÃ<ý˜Äu²;Dàe–o ½8ç;šòáˆäã?¯B¶°<. °|…e>ÈJ© JEC°[Ÿ‚±!¤Ö'YõTuCÐd…ƒù^Jj • ì'È”,[j`Ù‚²eM(Kêg—v[Aéž‘—+ñÝÔd–;–)ËÔÊ<³Òd^Y°ä 7œ3b%GROž9¼üoNåræ¿9 ¹åynyô˜Gyž‰WîYîYf,ùfrí•à*‰)òú%Z/\ƒ‰)òÒ¤û…ü†þ‹)R¤H‘"EŠœUâõ’ë9™SºÞ˜°tý6aÙN (]¯QXöd JK×»È|³Ãª]sí->Åhæ#ÞÕ‰wŠ~32Ê›endstream endobj 423 0 obj << /Length 36 /Filter /FlateDecode >> stream xÚc``øÿÿÃáÂÂÂׯ__¾|¹¶¶–aŒ‚‘)Ü ;endstream endobj 418 0 obj << /D [420 0 R /XYZ 110.854 636.116 null] >> endobj 419 0 obj << /Font << /F37 124 0 R /F54 188 0 R >> /XObject << /Im24 410 0 R /Im25 411 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 430 0 obj << /Length 1443 /Filter /FlateDecode >> stream xÚ•WYÛ6~ß_¡G ˆž:ЧÍ&én Hâ"-š>pmeMD–IÎÆÿ¾3J>Ö»0`ÎCò›ƒ3#qø‰HÎ ££LeLˆ,š¯®DD¿¯ÑHý~õjvõò­ÊAœ•ÆD³/~ûlñO¬“TpÎãÛ»7®?ÜÜÞÝ\¿KRixüîîãìÕ‰æñ_ S©cÍ“g¿]½™Á%t¿* f´ú™›GÁt”L¥f%÷H93~µ{ˆFòïÓ¥®õ è,9“â´®êl—ˆ"ž/ÝÜÖA ×÷ícØp6g’gçP#ÉT®/ƒ›³\ÂÕLÁ°—‰x†XÝ[„H`?K™5[V !b~®¢g>yùÅC5œPY²RÈKT.YÆÕN~"nf‰1z¸ê(¼´a2WAÖõIª´ˆÔ ‰Y¢Œ× ÒjÔg&ù„è5bIj ÿ@ÐÇ톖ç¶!bÓ‡ÃÝnki\¸~]Û-2<i¡ã-"ŽÒ2/iô@]ØÁ¢%3k½[òxiÉãï‰0qEkAdy€gú¡Û̇MWV%Ëø-nj;Z¬ùaWëºz3—¦ ÈãGòžŸv Ÿ9—p*q:õðùpˆ*ÉM¼€àŠ]"b¯s“Öþl| q:¯®h¶ßöCµ¢ù…ëªùÐv[ZºªúH\‡s#RžÂ´G #!E]Ø Óš ˜ž‚§ÓEÏÛnÝvvìhàÄÄ[ši¿àXx•PWÖ-ì‚ü!«5ú7e&WȲŒ¯{Zí—m"MüØëÂGôáÖá1Á#f4}ÿâ9ÜJʸj†ÎU=1®éÝ",‰)äƒùpi4Ò¶«Æ½ 8«ZGÁ Ä}Xn׃k[×[:uÞ6 x 䟂»ßRJ¸ïl&ôtíD‰¤ƒ±®y _‹—•ëˆ\·½Ãë F>-?ôŽ7ôÓ”S*VJ}.ç@ÂÉ9>ÄL2Yú }ƒ$›‰œDöHXûv% å_™©qòåÝ rïëöêýUô~:Y*oTpB9¥´“¥ðõ^ôûÔ ƒ@ÜëEŽT™ o¢Ýù¸Ò…PùŽöе‘žQ`–=èù)è——A¿&7{ÏgªÁA>ã ]BÊ3Ó¡¸÷37ü­Ó Ç S‚˜7”¯Bø×·‡QMhL×ǦJ¥’ŒƒwS% öægƒLËA †¼PçÄÑÓBþ¬¹t.Àаh°–uÉËË:z~ûÀÓŽ‹‰©¸ñÕ¼²Ãôí¹R²®kyI+#9ãÅ‘TÈcÇ»t…´ÏKH`^òè€YËOni¤(ÁÕvµ²Í‚ÚhVw·J#+ÑÝÃóý„É™*LƒŒ®¡þÜR"¯ðŸªs‡Á‡µµäñª¥ƒ Ü88R‰ƒäX»¯˜ä«Úg.Ø¢€ÛbS!K¨Á¾ljT¨,ˆµÍ@œÏ”0’δÁÒÔ‘Õp«–Dõó®­ë{ÛõaË0Øù²Z 2FaÇ×U_Ú®:Ug6ý&äü¬ ”H<ºº&ŠzŸ¬ô&je©Dª•?z,Õâ9k HÈ"ò£÷üM¾©ÊvÊ#méî>JF—Z²¼> endobj 424 0 obj << /Type /XObject /Subtype /Image /Width 255 /Height 263 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 431 0 R] /Length 1739 /Filter /FlateDecode >> stream xÚíÝ;SÛJàÃõlTÀmW”ž1é3œz= Rß"rMᨽ“Ÿ@•’Ú•›[ñçî¾´Z=VZKûf•Â!|«}œ=zXJÓ K’@Ð%Io~’…\pÓr nêß~%þZ]îëßZ_6u-úsðïª%{pºl”õo³ñà þGé?:mõw*í¿‰þ)þj±†a ý/eãôÉײ|ÕÀçØ·S}¨ÊQ{TŽ|X1V š3¬€¬Q(ÇdúíŠ|÷a}t>pÍTZ(KC…×<}•|Òû¤Ûõúü'5þ ˜@E.‘RkÕ§[¿íøûòx?ɧ/8"­h·`kåàX¬×|>%h|æª>È._ú¢èý§‡ñýOñaÝå‹éñ'õÞ»Êæ_ðææm‚4rº¿¢žû¼¦«áÇ}ªÃ™osþ!'ŸÔŸãüÿä6ÿÌ:óOá?=Z6DþÊ÷?¿ç–jÿó>Œ_µÿ÷]áeÉó ࿟Öúž|lgæûØáJ¹¿ íï} H®"Û~šú—‡7wþM¾ïôÙAnÿ Ù®ÿíMþ³Ó¿ yíCUû¾øÜá'¿<Ðå͉¿MYì5õ±íþOª?Ï‹Yú €{?½a“O°íg|¾7õ‘eËýŸ½ãÏ¥Ï'ÿ]_üqé§"ûè‹¿µøcÙÿ[ÎÅóŸu]ƶlùòÔÏ'õoDÿ{ù(>¶7Fù$ ÿ~‹d"àÕ—±X„"Äc!¦/ðæóP|>¦_ éžNñé¹qZñMŸ×ÿùûºúg;$Aý,˜äöãËø£ú¼µ½ È{üWó±óOô£ßô«TÉÒ¦ú¸:*ƒÇÔÌTÿò s±>VB Ãd Ð)ééT_ Ål6@˜~ 0>™ ‰N˜ Fûbø´~èúŸ±ºÿûÿSS¡8ÿNð1âù7j¬/,/>w?{ïYŽ~|€¼þ|L”åêþQ¬ÿçÐÇ|Ðÿ¯år)6úÈÿÒâ€kŸ­$A‡hlá%Våöú‰ð___ÿÜ݉€w¿>~?ÞÝ*5PóÍëßøø{å')s_iX.o¯Zõoîïð‡ñeûßqÿJöÿí?ÅÿwÆOEÿ»­üÑñg„_ÆŸ#¯~x÷ëËø_‹?cçŸ ¾•ùo´oiþ¿ývò¯èOð«} T? av²xªëWå Lž ¡ûBêEKâOëøýK‹H 5Ô¤øÛØÿVÕö›•Ÿ6ÿÔö?Å‘?¥þ³>«ä¨ýeþ¡úÍúgÄðYú]õÏû³ÿ©Ÿ¶ýVüqè—ƒ~Èwÿìÿ‰óoôÏ/ÿñã·ò6âi¡°Ñ¨´ÿ`yA 2j#ÛùêgüvþÚ/Û¹lÿžü£º ûÝ~\î•úìsó}¿fþáÉ×ç?^âß¼òŸ)"E?ú¶üj˜_‘jÑÇÕUÉAüö¥@^}õ˜…BØ ZôÊ;„)?ÆgÉ6h~íRœ~èí¾¦ÿ‡óùø÷ëz‡Xœ£¦ùO£pÈwþãÇï<”yô‡‚Ä9 DWhÁÄŽ( îƒá6ü uWXÌ?òd8÷å)r_>âñ¿Ü×î‘O÷€‹vþÓåwM~·?ûl>öá§:Ÿ÷ÿÚ%"îâOÛ㟿EÌÕøùOô£ßÊÜžÿμùºSaÞ|MþãôüIü‡ ‚ú.Ï?˜ä?¾üÐÛý°ý_—ÿxÿóʼ_ýYúÕ[ qÿé˜3õ/k©H™Ž`Ç~ç‚ø½9h0ÂàØoÞ!Hü³<ˆûêRD `ôi|’ )wèy3¬ãûÚ~¨®ÌÓøÏâþ{/üžûÿ}4?mù&ñ‡û…½øs¢¯¿ÿäÈøkž 1ŸuÀblþÕßÔÓüÿLïBÐ×ÞÿÖWþC«ßMþ‘õï Üÿø£ú—]—â`½ÿ¼Û;ÊÌ|ƒûoÌÈçòj`¶Šºçÿ¢Ã÷ò¸;ýý×S_~wþúþÿÑæÓç_„ñ•ç_x{þƒæùr·àÚæp».ãÎu¹Ï¡}þEù“ûÔ^Ó0Ï«(À Ÿænüœ`À§wÆwäóôû,1tåçi:àó³;óóÒYûâ¾ôî|R€¿ø•»öé>·~ûüríïŠÞöçpç³}ž¾ñÇ àÌ/ŠÁøó£pç{“ø[¸òo0ÿn|Î?Û§Ó éïç_ùÌ»üMbyœËóãó¿£Î×>«ÑõóÇØþg°ç? ‚.IvIþZÂÒaendstream endobj 431 0 obj << /Length 48 /Filter /FlateDecode >> stream xÚc``ø ‡.,,|ýúõåË—kkkmll€ÄçÿMën?g£`˜º”endstream endobj 425 0 obj << /Type /XObject /Subtype /Image /Width 452 /Height 324 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 432 0 R] /Length 2934 /Filter /FlateDecode >> stream xÚí½z£8ÇyiÇOr£w è¼ãÜÀfs Iê-âmÝlÒ«RM§»}9 0`ÁÍclc~>GGÒß:òv»öò#[{ùñ¶òòã„ð}ùHŸM Šð;,_ßK/Ÿ{!Â…~êò~Xzù ö=áj› Oø±x/ý¼¶+„BØ,Ǫxå¡‹ÇÓþç*¡ö'|8½hG|l#ÌF'$”i›—{|pmæZa†G0ïøÒñÊΙ»ƒ»Õ¡à%“’ç~ŒA˜¡éÐ/|ÕhËìnà_s7|É-„oo-„öï„X3ªyYFnÊ„äǸ›á <…`½?ßBøñ51!]>¢ñÀ,xáUQrN&Äûà´ÇàìaRBêpA˜Õq%ûv¦Ì²¶1Ú— øêÍ ßG ¥'„„R“{ÂŒ}•½•oÒŽ¥mÐHÛѳ0Ñnø’Ä ÑÃÆ‚" O‹#ü§@êš!¼{‹ŸÊØâ?7À—ÑӚ߯D}^ÞEÂå‹kíÜô½Å?+ýbÍoñõÏ~•åµV…P…P…P…P…P"|~]r ®ÿïUþU]¿Rê—jóx•]jÙáÓê Ÿ…pá„?÷k'Üï_ºs/àÚ7ÆÜøþÆTç˧'¬¶¿†ê ò¶÷Ç3äÍ#S>ºmoBu3áé&!ü l„yåR¹®<7Dˆ”šÝm¡Ò¹ÒFãɧ€w¸Õ9N㥛ÐhNW“í ñ°fM&,…gÖ·¹Õ†[ÀøÕIVô›š*’¾‘Pc¤{p"륈ö|áÀ°Z ¦"üIhm„ÎNm6T·ÚPMGH/Bx‘cÏM„F…„z Â-qüj%¬â¹ š!!w±7´øú,–ŽJøÄcŶH“C ¡ö0 äðrC{Ƚ6Í'7Ôî5r,å²Þž·ûft½„Lö,„B(„B(„B(„q„Üù4¤e(œ/ù$ÒÌ„8d…PŸˆ[B8!ôÿ«1…ᱡ& ‡†Èá1§•åà¦0`ª^¢iˆ92FAïOHã]À‘jP†«ÚÉ¥Û0!½¤>µÛU©òð•‡°Š†ÃQFÌQ´Ð¼‡q¿4èÏïä¥à Ž0gëôWGãâž„$´åèáHhhgnB‚ð‘…i“³a=!ûY$!ø)Öb$¬v¼ U „†…š†—!t^ܹ!º¥ñõP‘nÞJ‘† ûx)Õ88Ù0Œ4B8>an¼Ö ¤/j!nú²Œ˜“2éÛÃ÷¼ÇüR8A¡âò‚l8P\–ñ¡ ¡ aJ„ÖÚòì<öäV6êài…»S áL„¥:G´gψ#,ð©é„E,!p%H@@Ƨ,èþÊÐß³Ei/^~I˜¸uQ–µÃ&@hÑÁT¸ Æ‚³•»Ã&|%ìW€¶…ž[½¸œÀŠƒ ‘‚6Š6h·ÒÇ"ÄFd´§Um„%ùjY¨” Ë{©íGŸI¡”-S&/¥Úéëa/ª¤lèªà9¡êIȱÔ&SÑŒpõd|¤6°´A{Dš«„ÔâÇ„iÄRªlØA"ظª‡®OS·×¹Oƒ­úl)„÷[X•n0º“½XÂÂNÑŒÉX…P…pé„6jA£Ùj`Ÿu™J]û9a‰‡û‹T¢~B•_’ÛŠþ„©jm8’€ŸF‰¥?ŒŠ[z†u"û•‹OVks®Zmiï“ÞVòèÞ’×M˜žÖ¦¼ŠQ lh®‚4E­r®yl²Z[Hx©ÅF“t¦§µ5½ÀFÒ“:±¡jS˜’ÔÚ|,õ„d!{ðú2I­Í·‡u=´þpa‘FÑë½›$µ6ßkkÖCú†Æ·ŽtôÚ’W¢b:Ÿë[ÜSÈÂQ‹õÛPÆøB(„B(„­Z[C­±~suÈÛªµ¥BØP¢n$l*QÉž+Qްô}ÐXB5ͨPãµ6žÐÆõaACaê®Yž®Ñ¥µá8«t¯m8r£ÖÆóÚHOsÓ¢øˆR~¶ÎkëÖÚxLÉ3äRÑi,O ¢ƒ —H©(M[µ6ÖspžãˆŽ; ¡=xB¯ÏÐ\·NB÷D"´6ABöRœH²FcCÅŠpA¯JGkc/eÂ*B¨†—vžkmIÖZ›“×\,å9—>ÒÀ\·²ÍKC­tý‚> D´6žõU·`n-°6aì/íuÂ@kÃÏõDÞ¤ç-„B(„B(„B(„B8˜Ð4nÎöû–dW3P«4W3[9!.8–ÓŠeÚº…”û¦¸š®¶ƒ‹•ñŠe~Y¥k’$¹šÙú M°Éo&Lr½¶‹„†ÖJ˜Úzm—l8,¨¦º^Ûø„I­×F‘æÌKi5È}ÜjfÔd…„T‡µ‡²šÙ* e53 ¡ ¡ a„§ùEYOê;M$ÉÒK„|·7aš–…-O WB•`†%NÁoêÝ š‰QÐÂ;85?\‚§còV’–4Á§g9BË ˆÐ´b ïÆ¦•aÖ ]V)çZƦ•a¹~B¿’—uë$'Ü}6i”—N›Cóû‡!!Íâ)Ï¥¥–c©_¼¬Ÿ §Ì!uû}mè­Gíá ÂyrHûÒô.œÙæc)¯Qg›„1^:Oé@°=¤I{e³â‚]=€YrH{zé{ÞB(„B(„B(„B(„J”ê›8:·ÖvOÂy´¶¾„gZ›Ïì@8‹ÖÖ›ÐkmÊý ðh±’ÇUQËaÌ£µõ% uNå“8ÓËZZj(bMºy´¶„Ê­¹î­j$ŽF©.ó(QU ’|YÌð?Px=ª—N¬Dõ%ôJTMˆk”ûå¯\þaa{Ø0%%jý„¥*N Ãì8É!j-ÕÚ Oè„Dˆ¥Ei"ÓÖÚê–!ÓR{ˆi±±‘F´6!B!B!¹·\„p¹„ÿc²˜l„KS°ùÖ‡”™rHÇK¡ûMø¦Ò $ÔjŽ KÅ1„ê"áàkœ‹ÑžU,!§©Îâl ã²J1užšëδ‚™rHVÄWé¥`2H6Ã%º*Íy †“–€US2TáÔ– +⋊Œ4 B¥„Šø&åÝõs¦ K¥ˆ"ÊK%?jLóâÚ¸KJ£Õ½ 'ΰÄÞ̳Š&$åº>€ÀŠSÚ1žp– Kñõ Ñ8ä^„gX*¨ˆ/BÔC2Z O»ÚGKcgÉ!­n"’Ð'‘šÀ¨†ÚCi¸=Œ%œ:‡NÏIžÆÎ!­nþxm%ük»à„/­„Û…vŽ×V„P…P…P…P…PS#|]g ·ë,R…P…P…P…P…PÓ#ü³»+ÿ8Ö¥E}#„Sþ=áÓ„z°ûâ…P…ðw Ì6ûýfbÂ,»ðØfÂ]¶ßm¦&Ìðÿ½Ñ‚V§ßÝÞfWmwîØ[ªw©\w²l37áfrÂl¢úWíàVÇ%Üí''„Ûjo³£Z¹›—0Ûìg¨‡YM˜e+´aÖ´áì­Å”õZ‹MM¸›•[ü)[ jñ1ÒáÌ‘Æ÷Ú6S÷ÚvYõÞgæöpõ=ojÙI$ðâ{á%Â÷Ãá°Z/­Ø*Veµ„ooï¿¡ÄR!\áSç4²ñ»§¬MAø:áÓ]X„P…P…P…P…PS#\}VÐçÛJ‹'|[;aP¾>¾—^>÷„P…0 ÂC£¼–^>›wé»§5—ÿ!Å`£endstream endobj 432 0 obj << /Length 46 /Filter /FlateDecode >> stream xÚc``øÿÿÿëׯ/_¾\[[{ýúõÐÐÐY³f)($&*(0Œ‚Q0¬ü{Cendstream endobj 427 0 obj << /D [429 0 R /XYZ 110.854 636.116 null] >> endobj 61 0 obj << /D [429 0 R /XYZ 110.854 611.21 null] >> endobj 65 0 obj << /D [429 0 R /XYZ 110.854 586.674 null] >> endobj 426 0 obj << /D [429 0 R /XYZ 110.854 188.395 null] >> endobj 428 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F40 126 0 R /F54 188 0 R >> /XObject << /Im26 424 0 R /Im27 425 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 438 0 obj << /Length 1391 /Filter /FlateDecode >> stream xÚ¥WmoÛ6þž_a*'¾éåc¤k·ZÐö#Ó±Yò$yNPì¿ïŽGÚrìÔk ÃБ:Þ;Ÿ;ñI?>áË]5sÛ€eÓ–;¶Xä,-äó¿'¬MyÿÔ%û°6ֻ͜/ªº&ò¶–'DõÖÇEäÇÔ~s»­æw<Ÿƒ06/¸“òÓè´™{+m;µB3\ØÜæ Ø}qÂŽç$°[Óù=‘òÒûÈñ¾m¾Mr{F²ñüfɦƒëspÞlØ;–þ¼_ú¼öûÕþ]¾Ï1¢G‡ÝWDn—Þª¥ñv4í©šô*Ÿ@æŒçÔ]Æd‘9ÎO‰NÞTw›ÎÖ©XÀ§ÅUgÍP5w´ºn†®Â{‹ª¡§¡‡Ç$ÿD ¤’‘ô9Gý‚ÙWí+èÉ='8ÈÐü,ÚeLkà–œå9ßaÞÉð}˲¨‡ mZVþ9,-Ÿ’DtÎ]¿@î¦\Gž¡®ÛçѺkï:³¢M2äSä2ÚZz]b¤ýiã­ððK«ÙTê¨z 8;¤ žÒNH¢´é]æd‘8Ë]5@}‘0¥3ïûЫ&,Q¹çë·Õ€èŒb±vzkiÑÛЂ3É4Õ‘,x4´gÄ>d©isdx¥Ó‰>po—Cê¤f:-¼t¹Ž‘“™ÎìÁÅ¢?[ûrÊ“1_2L}O/Ím»üæÒö–vwmP7ÝP?¢ß r×`¶´Í+„HM™¦Ò4äaÝ_©@2ei{–¦¾ÚR½»Z°7¶–cÚgœŽŽà)Ëù Ï÷­ë8Z8Te™ô‡VvX¶sÒ‡±Â2'_$ ŠÎóƒle‡@±¿{”aG¡28rr HõãÏwc ˜‘k”›0íÞvw“@¾ÿe<›y°yb´dœ ?^^uSžGß…«pî$®â$Á”ÈþÇ$)–äù×aðÚà¬Ë‰tvÉ"2 ­ƒa@îÊh×–0ľiª¿7–¶³²{p/Jã‘ XªÁƒŽJÆå  •ð&9Cⵡì‰Ýª`y¢<§SÀ¡OVÁ‰¹}‘@HÈϸHÛ­@ǦÁ¸…Ýæðkz%™«Attᣠfž38wöSü?Á-Õendstream endobj 437 0 obj << /Type /Page /Contents 438 0 R /Resources 436 0 R /MediaBox [0 0 612 737.008] /Parent 439 0 R >> endobj 435 0 obj << /D [437 0 R /XYZ 110.854 636.116 null] >> endobj 434 0 obj << /D [437 0 R /XYZ 110.854 183.091 null] >> endobj 436 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R /F40 126 0 R >> /ProcSet [ /PDF /Text ] >> endobj 444 0 obj << /Length 1800 /Filter /FlateDecode >> stream xÚ]Ó8𽿢©D?çî 8Ë!q@O: x‰w‘Æ%I)ý÷7öØÙv7Û.hµêx<ç{ÌæþØœ1J´’óT¤„±t^nflŽßæú{ö|5{úJd@Nr¥æ«kÿùªú”ÈÅ’QJ“×W/?<ûðâõÕ‹goK®hòöêãêù»…¤É@£—‰ä‹/«7³—+8ÏZ%Àœ —‘rÉ%Éiz‰>Ó„g|¾dJ8Òù÷yÜ¡xØ÷QJDäÓ« ×ó¿ììýlþþVHÐÐ.¹&)ËÝÃúøL}Ußì:ƒZK(†‹w»a»¶×øûOgoºb©ïiÔ›F%O”Ö—îÍ2¢Têb$ÍùyY¯Z0LN“mÁ-@à' åÉÞ ¦¨*z³à*ù±`*1]Ñ ²õÈ=.L;tµéÝž¾·º=“SA²L…“¯­Eš¹8# ô‹$O&˜("A# òµè&Ø(J8c¿ÂÆ>Ȇÿš4ð?u1pÆ|$õ¬æK)4¹óPI¤Lý!‹eÊxb†l ²,©ÛÁ®1¬XòúmÝîëêÆx××í ‚Žô¾¸,p`ÂÙtŠdL’Ö¶ ­Ö`àÄ (iŠ¡¶m¿®·xâW3ìiñfœ9‡'7Cé©=2©{DöõM[¦”› 7¾p>«;DµÅÆôN+Ìi· ÜÚ/xé!òÚÔM>òÊäÚ'uÈÛú'¢+ÓÚÁ!ªzéå§'‚w¦lX²¤h+úÝת7AKJ‹ä• Û!…q‹ŸÅfÛ˜)ï…€àçB•g¤"ŒÖ•ôˆrT&"éî/2§ë ¦B-£@šðI¨H/Ç™$\ÕVœÀ‡hô‘÷ç»”äúr ’ª#¥q­Ñÿ¸ÎœjœZëpœäiöøÚ0íBžç ‰âÇÁä”U´ƒ°ãc©*ÚÒôä¿B8f0h+uþ~R?ʧ4#:gƒŠC˜(öëÜðÎtÒ–²y´eeúÒ´U1™=3“—Œy|ÙKÆ$ÁñuŽŸ8þ £–%66N:4N€»·p“0à¡W )¿ èðëŠLhδïu\pÒœà èÊ"|Ðóä$…°ã&¤ ýÖ‘Ô…c/„†ŠÒo›âà‹šÈ“][™wb]Ð'$W\‡œ†”ûzX„ˆ*6vçò–C: ¸ß¶ƒ/ÅHTZÍ6¸ëk¨Ðt§Un‰¬¦³€ÔуìÏâ™D3d"¨¡/q8× &5ÜÇ5Ž ´(Lù‰€ê–=2*8$åôRT(q·ûö0·1¾»yE&ÀqÓ½ bÜ ý&2Ov”ßÝ–z–ûu]®ŒÑé=Õõ{».@GntN –r’Ñü7OÂX£O²ØËØ¥qh#ÐÔº}vð%¼îÚu<}¡ãa®^ru)I ¥.šæñÕdb>áâ Âßæ Xø|Á’p±î%L5,iL5‘"}iæùÒl·ËÆßû‡iÜØ¤Og Ó~!%©•íBš¬.£yãhu‡_ „ìú]Ñ4‡ ’`&€¼™à·ÞlLUCø´ßmMWÛ.d.”æø2^SiæÚj÷³®aÊëJpÑ¢qEJo\·bnˆ{rl…Ük¥Ïi—v³…ü _©Jî~¼í궬ëñÇAª4é˵…w¿S÷b©<ò1ÅÚQ±S?àGï9Ò08„«þX€ûC?˜ ÁÌt×J@vk‚”+ùB6æsµvBò£<Ž19QTž…Ò€Ô>[{Äug7îàànXJ]gØ„OÇÑË•˜µ½Å–Û+ˆn#Ik‡Û²RÔ¡Æu“Fo /ƒ·ƒäI¹†U9˜°DݸùeÂÝa?H羊•¨mëÝxw+M¬A€ò9~Ñ䜈À¼ N“©Á.ˆ&›¡7Í5NW8eñÐO{(Œ]÷Ì/‚ÔÞ‰ý¨@îÈ`S|s~ë!|Pô„ül ;cqÈ0›}1N÷opâÕäXCzðPGÖˆõÙ•ÿnjP>:êÐöô}J’ûTñɉ2"ñÍéÜ ‡ŽÂOyèÑJÄ·ºO_輚Ñù›̹|¾˜Q7³ñÑ-›ÙÇÙí»S9aʽœåäÜ‹á™WGÜ%TLÇB_~}»øœù?uïX€endstream endobj 443 0 obj << /Type /Page /Contents 444 0 R /Resources 442 0 R /MediaBox [0 0 612 737.008] /Parent 439 0 R >> endobj 433 0 obj << /Type /XObject /Subtype /Image /Width 232 /Height 153 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 445 0 R] /Length 1099 /Filter /FlateDecode >> stream xÚíœÍnã ÇGò=‡*×(ê4y²eÕk+µÚ««ceþË„YLŒ_Æ3‡\ÊÊX.À޶-è“-LezƾZ™š¹]9&n+X]g>ëlÓÌöÂuæ. FUœfêl§31²§)®¶-ÝÆT&ö„ƒ™[dîðx“¹™Þ†LÉ4Ä”KسÚ-æíuÕ$¯Wg_Ù¡«8&º 7s^ë5™‡W¸´I*cÃ|Ý— †ntõ¥`°:~_”iµæå‹7ü»œ]²e~òÊËÍå¬õ~,Ì|ºsóYœyÜ|GL)Ø™t𘂽œkã›…™›‹ÆøL @áÎÄ ÷ñªô¸²¶¡$sCõùñxÌ÷ÆUX¶4óÄê;0ÿ§ëón̺rƨŠÙ¶%5ðSô³v1da^±­&€†˜]§+ ×)<1³WPå¬Ïª¶›)Ym™&U(»å´mm÷Æštâíµ»f`[äQ<‰yݶ óD¬)E¥vfíª“‹l;  åföø öK¯äµíoêãë‡?ßY¥ <´î{‘ùU–™X;ÉÎ4z.ÌL¬…MH1`æg„šê,Íì¬m.À|ÓÕ­UiÅM¿4JÇ› φ+¤žµêàKb¶\Ê>_VHÔßêêŒ×ªËfÚÀ•ÓSBқǯzÞ=˜F-ˆˆ)Í4„”¡ ɾ×1š Ö®SRò]’5kHŽe÷x7èLU2ÜïÝ÷åÿ~³ç¯Øþ³A‡ÒïEšð4ðdËendstream endobj 445 0 obj << /Length 40 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~][[»îöóË—/3Œ‚Q0jU»endstream endobj 441 0 obj << /D [443 0 R /XYZ 110.854 636.116 null] >> endobj 442 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F40 126 0 R >> /XObject << /Im28 433 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 449 0 obj << /Length 669 /Filter /FlateDecode >> stream xÚUMo£0½ó+8ô0þäãØO5»•ºm‘v¥n.8)*jˆÚ¨êß“„¦d©rðØz~3óÆyÃØ„`n{ÌC„xv¼´ˆm~Ïö&úiD–{Á|€£P;š·×£ä~§ÁO.gç·Ç·§—³Óã«©Cž\Íë)Ç“?€ åΦÑë<‚$&? $8ƒø@æ ÐÙ Ž‘Š1<¶y|Gℎç' aê\«ˆöUJÕSÇ9æE–(mâû:}3ÑBÕéR.TóÐHÒK|hŽpĹ×rÁ­»XY¦’Ë«´êˆQõd§(ë´È+³{oYhÒ|fyÊà*ªT)µ¬ ¨ˆ5Ór[8@¦µZFëJd o[n­Þêƒ-_O´Ìc¨‹r¸Rë•ú„}úFÆQ¯™tŠíåôžëQÿM;Û714ŒÍ×ZÛIí¹ (÷q¨Xè·°¿Xà‹t±ÒÊØ w8³9K«2“ë4_lö&_ÚL´9hTkVi–îÔ„¿G2ÃÚó"" ž¬† °F[ÂlŠ€MqB@¡9ò ›â|m RäûX=  Ãn¿Ø;–Ö—^,Š™9òØæÐ-ihŸÖeßìzõcÔ „[S´ø¯“»I\¯êrÕI[ÌÍúK -—Û¹í _ŒÌ!=Aøò|o 8ú1ùtЩ/endstream endobj 448 0 obj << /Type /Page /Contents 449 0 R /Resources 447 0 R /MediaBox [0 0 612 737.008] /Parent 439 0 R >> endobj 440 0 obj << /Type /XObject /Subtype /Image /Width 203 /Height 163 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 450 0 R] /Length 866 /Filter /FlateDecode >> stream xÚíÛMn£0ð'd•õìf‰’ *9€|‘f¤YvÅšE¥\`=öøC0ÅðžÕÉØ)*D¿ú#þã4‘¡ðÉÑí¼ÝäèEœ‚r9a•ó5<(Ê¥õåÒ¢•Îï½åB;Œ¯VAk±±&{ÿ£ó]ø\1½²Yiª]ŠÞ?§(ž:¨4MòWÕèÇ äAU²òlö%Ò)J¦ Ð@L"¦è×¼®(MhÌ»jª\Ï{}ÆÆ´¨“ƒ~¢JWì„ó‰Rå«J×îé}ЧmTT-4º¦ìcº[*r€<’+=}NÊÞyÌ$ÌcÎÉx‰Ü-ì)¥k©‹^Ôuàeùc¯-[ZÅöKûñ‹®ü•Ÿt×Iß‹rHpÏ3:…÷=£Wžúþmi ˆªpÐ…ZéUy˧°¢¤)\%ñýRæäÍ (…³ÈW¹-—!‹òŽÛ/¹wꚮņ¾¯éÿöÌt-6˜éÌ(µÜ¨o5`+fjµv‹Jmµ‡ªÈ¶š+ºÅnt-f9´)•áf•»ÅÂ~T-ÀBeª~ß/ùgËá_Í—zæç‘@Ü~!^¿娲¼úç<ý¯XQ"«d%²úßs‘W&«¦ÞHÀ©È·Ž|Š®þ™Ý@ÕE_4ƒd…YE˜:éVc)}S|üŠn1\e¡.rhS*\Øsrç)`ë¡Ýû ×/òìf$#)ˆ«ÿ2ó¥(ä¹D'aîã)ÛrŸ¡Íc³Ü×{n;ªDs_ç€{à)óÜwGÂÿ¦È}§ÈWRÄjî;ÖE¬æþtÃS&¹Öûb-÷ƒ‘ÌÙQ…>÷Ë'ðE)ÊVýßüKÊ<ð‰2|eørR4?èJøfrOZÜ'+̇ r‹Ít´c+÷/¨.¼ÂIšÞ¿|ý1òHFü¸’a¶Ìªð¢%‡²ÿlÇßbõmÛ;%ÿûÿmÛ¹²ÿ\ìR„û¶íL‰Ä¿ú„ß´¥Z9î—Hü«}õY¯H‰ƒMJÿc¤1q¸.ÑøÇTâñO¦„ñïÖþŒBñ½o”ÔÿólT|ü›jèÑQÂõþæ~Q¾ŽòãY ”> stream xÚc``øÿÿÿáÇ _¿~][[ûùÓºÛÏ/_¾Ì0 FÁp‰Ø/endstream endobj 446 0 obj << /D [448 0 R /XYZ 110.854 636.116 null] >> endobj 447 0 obj << /Font << /F37 124 0 R /F54 188 0 R >> /XObject << /Im29 440 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 456 0 obj << /Length 2360 /Filter /FlateDecode >> stream xÚ­YÝÛ¸Ï_áG=óø)Q½§\°×¤ ®@²‡;àÒÙâÚBeÉ•ä8ûßw†CÊÒZ›] …±9‡Ãùø‘+V~b%gÖèUªR&DºÚ߈ýþ½Š­¼ùùþÍ¿¨ ØYnÌêþÁO¿/ÿLôz#8çÉûwŸÞ~z÷þû·×ixòñÃçûŸÿ¹Ö<ùx¬:Ñzý¯û¿¿¹»‡Eh}e-3ZAû™•#ãFeœåVC#e6•Èÿ¼VwÅî°†)iâš¡{ĦIªžHEß·»ª\IýK5ˆ£ BYõ§ºx¤NµÉàŽÔù ï£NïvCÕ64U1¤oÛó0—{^mDÆŒÉá«™ÖÆkYÜD ¶Þ˜Ô&¿¯-OP¸J“]ÑPãÜÊpp(éÇ_ฮ; (dØ÷E§À9³M Œ™ Œí)¨‚Û‡ë¾ñþcÕÔ¼TåÞ…öÐÒ·?¹]õð8Ó öe3Æm6˜úUJ÷°<)Î5ŠÐÀªù–_TOm­7H`lé» ì»Î…Cb`'…õs¦‘©`"aÇEY.E–XŽn8´åxx tO²ûC»–&¹4Aņ¶+-¸¡Ô³ížºvß°iÁ×7àTM)Z •¼­×5ÅP¡ä¯kaW?®S“ÀÚ2WÉÅÑ ï^FÝ·DoßxQ¾­¨ÁR¦à)øköÍó#˜ÿ^HðŸ]!v©°Cã·Þ… w÷ólˆåÿ%ÇÛs<.h“ÃDÓ ÄëófxZÄuФR_FG!Ÿ!½`™J£$ p7"S:¾âêøŠ‹ÏpAd»ÚôʉÎ"üuÑÑÔäH?T€G;¸wC¥"–>˜<0àK!’æ"⊗ë|¢u¬‚äP?KSàeøkµYPt¿6IÐðסkÏ{|Bç–ÔÎÄÿp¼{GÔæ|ÜÒÒtIñ,d;n'/Ú¦É۞Ƨ¯Üҥȓ4=½É|éAš½9è[íOçÁ׆±ÞPfêІë±ZJ Šñ,&“¿,A&²˜‘@†&iôTò¼Xe EÀ´yµØjG7h6t –ðøEzÝÚõM{Þú^-úF&ã ƒŸ\â¡Xz¯Ì ¾ñRˆ¾øÏÿC-ÉVendstream endobj 455 0 obj << /Type /Page /Contents 456 0 R /Resources 454 0 R /MediaBox [0 0 612 737.008] /Parent 439 0 R >> endobj 453 0 obj << /D [455 0 R /XYZ 110.854 636.116 null] >> endobj 451 0 obj << /D [455 0 R /XYZ 110.854 521.399 null] >> endobj 452 0 obj << /D [455 0 R /XYZ 110.854 380.278 null] >> endobj 69 0 obj << /D [455 0 R /XYZ 110.854 152.482 null] >> endobj 454 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 461 0 obj << /Length 1300 /Filter /FlateDecode >> stream xÚ­WmoÛ6þî_a&-’¢,l‚IW [k Ò|%Æâ¢O¢ëEþûîHʯÊ<`ƒ?èx:ïž;>'Óq?:¦4$‰ˆÆ1 ¥ñ8«FtlOã^úut=M>ð)˜“™ãù£Ù>Ïï½Èh†ÞíÝû/ï¾ÜÜÞݼûäL„Þ§»¯óëÏ~z€MBYäE˜½ŸÃ!ö|ž$DDäWNî ƒÞ2`™…ñ%ûpLI]´cœD”]>Ÿr²ØÚ4´s4:©ý 8›2—­•ïµz¶ÒRjU¥Kyhó€`°t ÉшD‘0¾`×¼•ΖèdMU¥unW7‡‹ YiÕÔ]ý4žYBâYï96ž‹Ruštr•¶©n JÊÀ|bÌÃK¥e5ß®$– M Z>ëW7ämº¹nÓ:+l$º]Ë×½×¹¬6ŽmD Ç@Ô/G,F«4{:H>¯vl¥C#xTeiÅE£‹pvÅ3q¹ÚøíÖ‹Ê—GV½8™1ãç±ieÚ§ž«VfòÖÕdbŸ“u×î¥ÉBÕ«²ÉÒr À‰Ô™3iÒf$¹P꫃\ÒÜaruTpДW‡ìª|\ þ›óX_tX¦kÝÞU“ËWm“ ´÷Oè“v{)åÕZ»’¿Ù6kW«ôG_DYB̲GÂx|ójŠ&‹æ‚[‚ù”ðYb̾‡"ü –ëVZê‹‚TÔ.n ´ª—v•:eS–éªS‹Òm¹U²M[èámOI’ 8¬7½Þ=uáÞ7+Y»WبÊʦwo<¾™‡^+»ÔU¡»>ž,·~,<2Ð†ß ôÊYhâŒzë[U+ðÔ!g½·  µR-ñœgm-tcµimצ±0ó©§tg_¨ª’¹Jµ´öY¡Ê¼í½7ñ¢K–pçÒˆÃe(-¤}æª[•éVæP†(œAƒÕ8z-mçà@´fÔÛp›…‹J;XÂöï{ÜADœ#|}° ô_¯³Í½OW.xf™»…ÊaØzÑ)bväó·¶Y¶i¶qŒ÷ ð_ìôneX|fxÿ¤µOêèö¡-ö¯˜zßü$ôœú{²é÷îýĽŸ¹Ï¡ ŸÍ©ÍÐÈQð–FìØ€bHtnÛ/†*Jû4ÄŒ‚í·Ø–Z™.„…2æ‘lÖZMáÈBáœ0šFl¦ Ù-¦Q‚¾3vô½Â#ñ4q—ØÎˆs¦ z³£)¹Ÿ‚œãÍ1ÔÆ¹ëÔÙ|@¨¤.'Ck;+ÕYÍÎ#ïï%ØlzG­°µê éœmÔà‡ƒ-ÑÒžD°û-–ر̺f4òþ\›ºÂ{À°Üo9NJƜИ9¬N× b %Ñ”;Ó>{tÙEuÚ:&( Ç[7Ž¢8Jp%/ánJR#Ù¢*B :ûÒEôÆ—¢àî4npìŒÚ^Ãý͉Ÿ}k¶ ܸïºÔg=õ9m¸Qp"bö}¨ ø?ãþOü5ºÇù(…dÊÆCûíþxà²}ý~0ng„B À‡o~öߦ- Ñ$I.}ñoÐßÏ/xŒendstream endobj 460 0 obj << /Type /Page /Contents 461 0 R /Resources 459 0 R /MediaBox [0 0 612 737.008] /Parent 439 0 R >> endobj 458 0 obj << /D [460 0 R /XYZ 110.854 636.116 null] >> endobj 459 0 obj << /Font << /F37 124 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 465 0 obj << /Length 694 /Filter /FlateDecode >> stream xÚUMSÛ0½çWø(Ï`!É’,–i õ¡3mNbOm b»)ÿ¾«‡@éø°«õÛݧ§µL#(%X ÉTbJe4o&4òÏïhô>MÎóÉéUšk!¢üÞ¥ç‹ˆÇ %„ ëéåÝÙÝÅõôâì&N˜ èfú-?ÿs‚¾FQÆ—ñ¯üãä2‡&¾ª<ÿ@瘌Ȅq¬‰<†t–±(¡‚Yhôoˆoö8a4„‚§Ó&%Ñ3¹D·ÛZŒà4…ZLaIµÅÖã'äªZëÒ«À“ BÔ/¾ ýÃÐ{ßÜ{ûum–ë¢Ñ{ ¼S¡=JÛ7Ͱä¢X)ú>×Ϧ·,©Býªè½WµÞ>liÁÂÒrÎ&à‡n›XZ§W0CÏ hÆ0ã"´Iæ¦iŠvá/˜µ¦gúÊ„öNPß9yœ Týuf]†à¦Z,ËþĶs¡q¦Æ1‡æ¶dkì¶Tz€' ½ÿASœIõš&”u4ÁV}÷Fy žä!mUW]ÿFíTƒT:€ºaæ÷„ã„òUÕ…ÁÎÊyáÕ»rÎkuœ Tü¦2"]ƒbÞE]?ÅIšeöÞ{[•aµ=ž÷ô¡;¸Q[Öêcí}„û®ÞׇÃÇ—±×úÖÆ[ÖyÙu~Ñ™&À„À\½ 61h“Ô¥µb*PYC"OÑN¤í;8¡ š¶þå²lËuQŸÀJÂ~î}tfú•÷ o 5ä/cŠdË”sdus«„sv·ËU3ºûH8Øù.¯®­÷©“H»9°®hJjÁ;ñ…žÌàßnb ÷ÎP/<¤¨íÚ‹§PÑ–uBIñ|œ.h¯ •µi—!ÉCÈÙg¼/ Þ¿ãÆ[ &‰ zì’;ú×øŸ«¨ñendstream endobj 464 0 obj << /Type /Page /Contents 465 0 R /Resources 463 0 R /MediaBox [0 0 612 737.008] /Parent 439 0 R >> endobj 457 0 obj << /Type /XObject /Subtype /Image /Width 211 /Height 152 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 466 0 R] /Length 739 /Filter /FlateDecode >> stream xÚíÛÍnœ0à‘e…so9Zl <€µø*µR=qö¡/ÐC»þ ,Kgܦ™Ùl«ˆ/¶Þ,Æ ½ØkQÝ-öžLE[cÆåšï°ô§R3EÛ F7m=G©¥Oñk’P{oî³ÅÖÇ–`½ G¤8JwHJœ”Âöå>éÀK’Pܡ£·#@œ>§¤owÉK Döû’1{Røç7%•;ë¡[K×Ë9)UÅ@xAœ‘ÒätSQªá†Ô5ç2¡•o‹oM€ß–Îæ^&1ÓA–‹äSSj"éü¼+Ôÿ=—ãV÷ncËK]S"œòä¯5_¨ãWº†mè¥4NÍË7Úø>K_i¯Áÿ¶¤An®xð¥‡þ­.|ctß÷©Q’F’éУI-=ôýتb’&Ê=麬T®M¯$ùî¥1·é¥1²ó©À ‹ëü3’–;@—†øI Y¨ÒÑm&YôqW¨ˆ¥˜åƒu§UjTEÔ{á¬ÕC<±RY¯ ÖV¸’ôRœ,f)<+ÔÞ ’É$;$ÉÿD•Ü0¹~[K¡÷°ÇiÕ{IlE-UI =h±sÏ,¥ÊŽYAp>åÒÅ8¥Ù(;Ÿ¨ç½í@Ÿ÷ônÙàš{HÂ[HÝ’V )/¥«°õBŠ@JW•‹…@ú¢ò…TLoÿVÒ¾ç¤>߇êS’ÜKÒf›L IÎ’$—h2"%÷b!åó?ËñRÞ¡’Ô3,KˆÒv¡ÒÇÿ¢ÃÒv¡"v •Ä—v •ô—OáåøÖ‚´S¨üÓ™æÀ$u¿”ªyÂÕ½úm»P!Kf£M¦„”*M&MŸ%#^Is¡ŠÍ¿€ÄÈr¤BõøqþWÃK,±ÄK,±ÄK,±„ ùÏ$ÒKÓgÉ%3~&‘3‚%–Xb‰¥ãÒ—O¤‘Iå>3_L2äq-}$ß5û¤üö²ûs]ºƒÇK¿.ÍR„endstream endobj 466 0 obj << /Length 43 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~][[ûùÓñë/_¾Ì0 FÁp»@endstream endobj 462 0 obj << /D [464 0 R /XYZ 110.854 636.116 null] >> endobj 463 0 obj << /Font << /F37 124 0 R /F54 188 0 R >> /XObject << /Im30 457 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 473 0 obj << /Length 2066 /Filter /FlateDecode >> stream xÚµËrã6ò>_¡#U5b€àcsòÌØ)ïN’ª±¶æ°›-QË©T<úûô )Ѷ.)Øèn è¤füÔL©ÀOl8‹Lä+ÍV»jƿ癃þóáÓòÃOw&v?µv¶ÜÐöåúž/TÞÃí×ÛÏËûß~™/´ ¼»û¯· Þüö…/÷߀e®ï÷o÷HU:L•Æó?–ÿþp»ɬ”I߆àWÔqŒ ǹСŸ¤~à[¢6O3~û¥ßÌd±’Ua4S±¯Õ´Uy™¯º¢z«Š2o̪µXU4h°ÕMÔ3[@ ñÃ4|ÏàÓÆ7ÚöŠMºû÷*±qâuYû,Ð6ëJA'Ædû}Y¬²®¨±ÍZá­ù»Ï›MÝìx±iò?yÕ•G>¦8cHá‡6oÆ<-9 '‡~~E…ÿšœfÀWuƒ_å­‹ÆùËŸ/"¥¼å<2sÉYËö°Š#ïX½BSñ$Є1¤˹±^ñUË >Ôqä[«Å“wóøJÙ%]˱ßçˆë§¹ ¼¼kù°Ñ…¨ ñ£(‘ÃþE–C8Z_ë‘ý¢FËøRde ñd"ËAd¢ÈqÝ^ð¡{@•Þ=ÀÛ»8]”†â" ¡‹†×aIò—vþÒoúËZ?JS±ÃÜÄæGÞ9ð.¯ð™1¾Mlï³…Q½|8ÿkÑvgÉu"Ôä¹?‘`‘ö“0¹.ù­&É(ùCßà] ’ßW’þw¶ºKd»!ýÁn±ùL7í§Ê\‘ü*õ£À¼üËmÞ`¼jÈIR¯{A׌ålaÂTœ+¤(ï‰É/¢%-Šª-ÖÂ+n† !À8•Nè‰Ø%Y6@yO§“]Lä¿>…ô˜ê ~ÛbW”–QA¤½“4ðöI`,ÚËQïþµîŠÍÏð¯æÐdU*¯!ãí°¦¸(ëú™ê¼öÊ♚ E×2°ª«CÕåÍ>k:!Uüýõ¿ßçaÈu=×Ö{Á:gTè}ª»-ÓûË ¹œ"i©¸Ä^æo•ÍuàýU<Í¡zt}.7õái{–Ø.nm—ïÔŒ³ls•…ÃC(é°MZ›ŽüHíÈ(h=ë¿ÐάZåkÆlò¬ãЀE½áï#™PwÜSWûè¸ÔcÚ÷c®¬G;ÀþBv¢­€>òŠ{Ÿë‡âbBåÇúÓà°Øp·Ÿä‚¢`ŒÃAû 3ö’¹~Æ}ÖA0Tíh»‘>‰u`’B†å²âXv\Fé>k;ˆ›âæ}”„rtbÝÑ€¢U”×@ sàÛ·‰á®6ÛåŒ:õe@gNE…vB1sÜÜe2vÓ"ë}^N½Tœ?v±ŠÄO¬`.yf¯6ò¶…0¡µAWûC‡cƒŠžch9öGó§¬;9tÃ_ÉYŒ¶kj^Ž•±E— –·û|eƒ†!C£ÎæP" h‹¦#–“Ìô“@Už¯[棡PíKÑ­¶ g»š¦H C˜Bª°MV2½¿\Ô sŽæ¤ËÞ¢ ŽêÚ©7±ñ¨ñ]Îò¾ê[ßÛ~êŒ Øé&úÁ¸ NvÁPÇ׌À$éÛ]ðï µ|½?2ˆLTF¼|$DuYu ½ÚÊËu„iø… …Ht XÙ…b2g†Þì*‹J©9ñ"…iÕäT´±†eŒz½ÇñÔò¶X»Sõ#RWtåY¡íiëÁqT°Ðjm^ØoÀŽHS¾WÎ¥‘rYÿÓ¼O—ƒ¯c¹¡+t9†ðÈŒÜDYï±¾c_„Aü;¸9 Ëʶvb5-TÁ47ƒ/Võn‡^º”AN(;’+çŠ JúÍQ¦ø ö“4•~d±Ÿ€}SC³ÃиÔ,5¾îÝÁ•øónR³ÄObå·õ¡\óé"e¥ˆºEHý)!m î0€8˜û\“D&½ÆdcòåëÌŸ°@s’\cAìGÊ1¾%Ö3‘þøuú# åpËP] æ'hIÐ;qZúˆ¸ØÕ›H´«¨gáúÔ;I‘¿® -’ÔO‚hd¹ž%.ʸ€K@ðzab_¦Â_Îá5êA™8£Uѹî˪:\-Í'Q]Mdž<¯¡KƒŒœ2#‰yè‡ÇzޏMzìG®ä»!Ц*ƒkt9óî6¾Zˆo8Y®l_ïû‰{5©¯ìé^Åx¼¤Ià÷¿õöe¶ÊåîCCº[ÈŸQ%tá¿ÕYqvŸõY?b8GÃëM¥ïõm€K¿õïѵ8ù— äâ8DWþËÄ6¿ÛoµôÛ¥sÂÃáq褢º² ÿ³M·¯Ï0¬î2ú£(t…Pne|'Ø6Lýü‡‘‘êÛ2~S VBßœ-@u­‹Ž:Ð …B[ÆðS¬ŸÑÛ;'KšÁy3¦sóL͘´Ÿ²Žóˆ*4²Ó.H—o“èG.©Ôе;ÐÌ ÐsÅ îX…’e_·…¼dŒ4èG2*@S資·‘B=áÍ}Ó2rP_pYÈwø@70½hÔ?týPo<ñ >r;x-md<-·}°^–«àíJülZ|ÂMT™¥ë4Àîhz$2êBO|a…K¼ç-•4$pdˆ{|E%åýß^Ó*ñ˜ºãÌ3ñoßC·þt躺-§÷ÔˆÕ{©ùîßà!Œ“endstream endobj 472 0 obj << /Type /Page /Contents 473 0 R /Resources 471 0 R /MediaBox [0 0 612 737.008] /Parent 474 0 R >> endobj 470 0 obj << /D [472 0 R /XYZ 110.854 636.116 null] >> endobj 73 0 obj << /D [472 0 R /XYZ 110.854 611.21 null] >> endobj 77 0 obj << /D [472 0 R /XYZ 110.854 509.587 null] >> endobj 467 0 obj << /D [472 0 R /XYZ 110.854 336.362 null] >> endobj 469 0 obj << /D [472 0 R /XYZ 110.854 159.504 null] >> endobj 471 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F40 126 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 478 0 obj << /Length 570 /Filter /FlateDecode >> stream xÚ”ßo›0Çßù+P´˜„ã›Ç.?¦lU§6LÓ´í&¢LÙ2Mýßwذ%išL<øl|÷½óa°)~`P"9³Ã $¡½(,°Í÷Ýî­÷Ö›ØN8‰8·ãL—_îz@)uæ“ëÉ(žÝ¼u=ŸSg:»žÌyu36Æxv‡ˆ Òùp7kwÁg8LºßâwÖ$ÆÈFT %á,@û9=èõ¤Ç|”Ï.ñ‚€@Xñ–ÕiaöÏÓjòÝ4_§ót.šqž¬ÕÊõBÌ“d¸lL¯É›ÞÒL®ÌÐ:th›bXÇF uœ…*Ф\ªÖ>FÅRÓôÜ‹[oïæËUÚEËê{µ3æB•YÞ õª¤iÒMÙé{Mš]s ¦÷ϵÿe¾ÁØjóË Ãm½æe¦ÎK©Tµ­zÄ—DF¾FªZ礧¿Û³eR¤OÝ\Æ“atX˜jÛÔôÏjk¬‡äGºï5휾êL™O¸{jwŽZ8ÂÖâ‚‘ÐØWÊé4_m7©iYî.™|¬óreÌæ¡b7àΉ^9êh@|”â„ÁË}z¦×{ê3€K½ŽÂ „¸BD˜ß–K].ÄíG› 4³oãî£%°€í„sÙ/gEöXY·–}û×· ßÜJ﹓/ÉóÚûÿj÷©¢RuÞäª4 *3crþBôæ'—QÇü:GÔ> ’âè.åÿÔVñKàÅ—ìæ™IRendstream endobj 477 0 obj << /Type /Page /Contents 478 0 R /Resources 476 0 R /MediaBox [0 0 612 737.008] /Parent 474 0 R >> endobj 468 0 obj << /Type /XObject /Subtype /Image /Width 755 /Height 558 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 479 0 R] /Length 44512 /Filter /FlateDecode >> stream xÚì½AwãF’-Œ‘ÄööùhΙ-‡C¾oK;–&yËb"å­¦KòÛÚ%ÏßÿâÞˆLd‚,›ê¶ÝžR±T" ‚ qãFU}¹}¹½±Û×_nÿŠÛÉ‘üɹ}‘üɹ}‘üɹ}‘üɹ}‘üɹ}‘üɹ}‘üÉ‘ü—ÛÉ‘ü—ÛÉ‘ü—ÛÉ‘ü—ÛÉâ›}ÁÛüKnÿýEçÿU’¿uéÛg-ùñ¯üïóÖù¿²è?gÉ_¬Í¿ÌÚ´öóW¼+lûW¼ÿœ%5ltî/xÿ6¼Ê¿¢Ò¿ oÿŠJÿFvRææŒí_çþ­é|¼û×ß¿-·û¿„ôߔηӗÿ×[œ·äÛ´nR¹ö_­óíÑy“õè’Ê·ÿbËãÞP”8—u¡òî_pß¾;?¶­;+ì8 öý[Ðù­|ÅkW¹ê«\ãòQpþýg=Pmß^sÇèªëmÕF©ËƒŠ“a„(þÜû7¡ó?]3JÒV×?U…_-пFåÛ7¡óº¢‰ÎGK“T_þ½Pe ü‰÷oÄÎ_ã«ÂÚÈwu°ù?]Ë/g¬icûçÝ¿ ߦ“µ¯°æ^[ÀÐRµ¶/éö¹ë|ë°ÂÊ÷T;É"ù¯tK›Mþ1®¹ü=—õÏ_çéUަóî' ã8³¾ãK¾æþÑ÷îMÄçÛÉÎoihDü×EáÏ"Pý?s—fçim`çP^Í|;Åÿ¤UÖ}þ؃Ñt¾M:/ßy{9ØãÕi]†?ø~üüó°¶ÂŽ“µQu›Ü{‡yð‡ß»ÏÝ«,üù’ßþ$^=öVɹÛâ‘æO¸?w¯RÃò“??"rÆ'}AŽ pÆý矷TÔ8…ã×OÀ—´Í¶³øÿö³÷*cÚµ„?&•ÛÒhÀÒ‚‰ü'ý&rR­™—Œ‹s…Ê¿èiÞ¥‰ÁCؽ|Ò›ˆÏ·'P#ÛNA«Éì `Ù¦í,Çâ¼ÿüÑ}ÓN½Í¼÷(s•¿k³(Öø§1ͪ½ ŸöIî$ŸñWÏÍù½ïmŒß„sW¦ x34î´¾düƒt>¦Â?wÏ1“;9Žm!‘òÅ Ø/­Ñïz'ÙÐù_†áá¡z¸ëŸŸû§þ¹ïŸîžä^þ=Éñ¼:ìåQÿcÿt{¾ÃýóÓÝÏþÝîùÈÅ?;ïêýýÝäþt‡û»õÓ±Þ­å0dŒ£"ä»(j>Ä/¾È±zºûïåÀÇþ:?6OÇÍj%?öÿ¸ÒÛ1>’»=_ãmƒÙ³ü½îWG½øg¯ó/®~X­Ö›ÕZþoä¿<–ǽü[ñ7îäG^ßãé~Xo6kœ¸ZËùÎßïžÁæMèüF„ ­Þï)|yJ—2Þã²WÝßã å³?BZò£†ã¿Ï½~þzõì|¿¢žáË㡊òHYˆÀ×+•/´Ò0&+ž­F‚³`…iòûÜ‹ÆãòoÁ·¹[¯«¥|cêj?à»Sñ½|û«ýf¹ÜÐ]­öWƒœu"œãþFž+×ÕqÀ,¸Ú¬x¿²û«Ír³ßOÏ/ºÇÜÛàmo@ç›~µ©–{.©bv TˆzÍUîj³^ÄÈl¸Ú¯pÒn½ìa6|V‰´®ö4VW{ßÑî¯öKyçž_rÚËýfýìü»»ÍªZЄִ#°"°¶bj–kój¹YE…ë+™ûåf‰öнÌΆհ^-*yÏ£pÜì6ûõb¹[^ÁXÉóxü7ï÷ö¼ÿ8¬—«?@A7û6_<™Õa#†ey/r‹¿Ä"»‘ñØËÈlöW²îŠéYCÞ"àúÚì)4 Ïjµ“9#³A–ï.Õ\"V¿qÏ‚Í9¾;ÿîn%j¼¬®Ñ3±åÕÕR”W Hx½Üì®k<®V˃ˆãj·ZrÊêfU­—ëêêx%o«x Ú§=îo䢻år¡¯¹To0£j÷¯ÜËJހηõ°Ó}µ®Vù¦Z-EÊ;yÿÜ/¯–rD$}#VF”üJ$Š3o6W¢ýòÚzuµƒQßa äý¢ï»Ån›tØ@–˜°F0;tXíÖ^´~õì¼kž ¿«}µ®nDÀ"¾›ÕÕAž Ðy±6Ë~)#±¿ZË2¼—) §hþ•œ´{¾“¥V†Df„ Ú¡ÚËÈ 2RëõrÀ v˜ãÖkî§î±yàöøtþ8'ýr\®*ñ(öP핪óf S"/ˆ—«…xûÍC¼ù¹{$þ ~µ<;˜÷Íòj…7´ô‚hn`Là0Ú¾ìü½H®Íþó¶6¦óõÝê ËáAtV„/ûÅN¾¸ˆ`³ÜßÈÒ)žÏò(3aƒ#Ö®»ˆ[¤u…Q¹•ßËȈºËÛdû¹‹íÅàugºâü_ÛÖ{ÕýÙûž‹÷ñó¶6¦óͳ8ŒË#lÈ^¤ ý‡ýÐ Ön%J¾Ybί67"Î=L?\÷«õ•ÌÅú bßlD̲RÀ™„/ÆH¦Ãâ¨ï»8@°ù{lƒ‹8ŠïŽ9ÝãCÕ¹}+:/Âĺ). öêxZÜÇ+yiEC"aØWØMÉw±—™W'ºT¹“9ÄÝÛ"ÊØ›<:î‡uÜ>ÌÿÓί߂ÿ¶‡`÷{¬›jssÜ­×°ó¸-ì¦ÄÞÈb¹‹.Fd³”®Ž2®v{q8wk%oÞÀÚˆ/.Z-«² $t‘ Dâè8®t©Ý#"ªvˆ!𠬋ÞÓµ‘d-~ :ÿ°/D伇o³†Î÷“# ¾ÏRÖ̃,ð=Å=Ä}ß[_¨¹¸øûúôpFemØ]-±ò®°cœm o†ÆL¿îS÷ ÿ˜}§ºcn+~þüØ<Á‹YCI¹“Úìè§È^(¸‡ÙŠY_r•»ÃvfÀÖKô¶® ï•Ø&‘»¼MÌ<œÂ5— ¨û‘†{­¶FeÜËRjk†žaˆd@ijYõoAç{ »c¹æ®‡»:âQØ U”*»gä~þQƒPXø‚{. Ù3]rd !ˆõ‘ffgO»£­žŠ-w >kô!éFm>ÿ¸MËÌ"6ê@ðã@ãÈR¬ Ãfa‡†¶¹;sÖ «að@Ôx£)D hÏ¡Ø0–°‡°§áp`”õäu™EÂñ-ìaßi®ƒ±yn!÷1Å*/ kK½ªÑŽ‚:rÃÉ3Lðƒ^€›"f¶ÝõS¥Ç¼ù/DТëHgà6Jü£kâZrýüëaÝÇ»ÆqéŒ ÑLèîsÅ]=ò%)&Æ›°_©dÊߨú®mw:¬7Ìà®Ìrè<ÀjÁwyMËC³fÄ@“¾½ž¶gþó¯‡uµÉØX:öh¹>.vœóZ1Œ¯ºJ£ oÂþsMK5˜îsE`Ðw$‡ã†{YDbµ×7­#¶KüM&e²|þ{X¢>ÔÄ7šáب 4K²7¢ËîF³á"ìã6¢×\¹Æeàˆë;i}蜯¾]™ûN=?2Ùµ_ëlÂàñ#÷Ç^­i¾4|s\½‰=컇?þþ™¸ýÍ·|öõ°­û廿äß÷Ù×Ã~áŸÿé|[l|‘üŸj狪W—•IîÌѱ<çìmü"ùßÒù AßZg421ð‰ñi¤¨ç‹-îö’ÂéÛ6Ý·©el³õ²c" Ìoú<}bÆ%øêaK•ÿ„În^Êðé[û{¨|ûêaÛ¢Ð{tÉAªåS­ÔT¨M½K3Žk®òí© l]{ÆÊgDYÅféÆ´ÅœpS=m{ÞeŠ£šO´œlâM°iµYAf[°âæŒÜ©TvÌ x›𺴳A;íß“3DÅaÝ\éß×G;™™¸òµS~Nî4Y¡4Erƒ“jš'þöÔ;jóe{tŤß”o£$J­)}´mÚ2%w%·Ë%¹ä8#R× ´…Êg<Û¹ ›¸ïǹҿ ;?FߢuÉFf:3F‰?´åi#Åh{²M(h239çB¦ôãgß7ДÙO¢jñGn¥sîÄqÖ!Ù d·ZW¾¿ÙüBØÙE³ó?û^™ºäù(Ü6cþh #ë|dΤ'/L–+WáÂèYsÌÁÉßñ¹ï¤2²¬(Êœô?Wù¶ÐùìÍ'žaæ:¶3—¾ÍiN‡xúgÞ9[åÜIo—±ôKÆÉ}tÉ_ÛºËÖÍ1SùbÒÚÒje[¯lüyë|Üδ³=èdE¦5ôÅM¬?ùΩ ê·äÖ”ÁšÑAœieH¼.Ùyüü™B£êúRå[7#4KróÅÌà©ßÞf1š1c£kg›Ò¬U—Æ›K÷5©À[Ðy•ÆKÚÈÒIæ$_^Û, i¼ªõ˜vQ)¼æÓ¯ÒÐù¯±Ø%´Óx½vÜSÊm—È^Îg2ö\0ëlLÎÎË\ç³hñ4œ/eü¢hÚùÙÛy~Åk7jcÑø•G+*`u]éí4Ss;9àd7¾žâí©¡/cmY<ÔO»²ÈŽû¿õv¡Î·äÄU.èŒ}¿ºž\m¶)šŽLq„ñÛÛè€ë©?]»,Ž?Ÿ%…õÉw Å[l ók>”‰“¿ÊOóãɡåv¾ºnEá³™µÚ™šìdé'=ôÃäXº‘ô²ÒwƒazŒ[²˜U©—ñˆù.arœâNªi¾ï¼ÿøQî¿¿ÿ06¸ï¼Ü5rØlò×Ïwòt§­<äx+LJß÷øÃßÚùy—ú6ÐhR óŸHÜoñ”An¯)Z Àu‘æ ÖÖÑ7ᤩ¾Ú^»ŸÐ?ck3efçuÚ3»„ÂúPç‡a½ÜÜ>´=OG†üõÐÏžçþÇt³óvîaA­ ø¯úʉÄå©n[ªMŽF¶Û©ª¼‰y'õ­…ܪ–øÅû*^äÄ·É£e¿Œá˜WÙç·‡Ù-ô…ÛÍìÀÝe:ߪW¯*j¾*?ÆC;\SœèüB«#—&ºæ6é3/I ß+µ'÷?$5Uçì|κž¼N?wæ½êü¤×÷*q}."¿¸+æ@Ÿîu ŸwòüG9ïîùYŸ?ÿ¾Çû'>¿ô¹†ÇK|›Iç¢ÎCÂíö+õáMò:.ðñ´·Ú˜ƒ< Çöƒz§jº óÐ~Uú¤òcáÛËï‹d£›oš“úßxk.±6mô£o ;yQçÍ=§8Õöfè‚©“u§û-ÆŸ`ç!M(}{’”]¹ÍmP§ŽFæëþüo¸Õù“ù‹ãìøüÄúxñ³u—X›˜j†~¶´6ŽK(ìE;éü¨â„ˆªÚ2”Ðò" ­3u^…‰É=zg»¨—©‘ˆkçQ;sºˆ=pÉG—;7êýY_>ž½ž|l¹¾xôͯã½Ë}üŸ^.ÓùÐ=,íüµüVßFcDÌÚ\cpl£kÎIŠÔ|¯MŒ]²óò ]z®§ÐO;éü„WÈB=Y’°M¼>æ¾û‡æ¼O­²ç§¯g§LGÍ'=yÛoÇ_2W¯2~Þ£.ÖyõIœÚù‘‹è–¦¿åÖVu^]yÚùØY1K“üW®ó?©?ÏVÃbc´èíë øBݵÉ÷Lß»á5·óÎþÝðÏß>OlûÙøY]›öþBI3:'ܦÒB«I£Ÿï¤¦®.QµómÒyy?—Œë&aîf›,»áËï»ìµ¸¹ }©¸ÿÔíîC¾wº?Ø ,úûGÑ–Ku~R9WÂÇ©ßHB‚´st+…ê³5´uí©VǤÓ,Q;kD1UºÉP„;àÙ®‹ÌŽÄ;D7‡*{áTÒ…ušLHö†tÉa8{\t>Ø0âÿnØÅ¡‡Î_nçÛ$Ü)׿1û1×òƒ,ùértkJu˜/²cŽbÍAà®Í;ûX¬òc1Çã³ÑV3Ñá^•]æüt<xˆ}!ÝЗ£”Å`Š M–Ýþ}åþñßÃÎ.Uõ¯ðmrt]{R­P`}'—2v–rAKÿ}™a‹‰3¹¡c;Ãæ—aἯ•‹Ö&Ýîã î*HÿD‘9ÐüE~¬°û¯ˆöœ{ç­õé:÷´6:LÕpÿ8^²“J ß–½]Úh•Ç\é'ý€“®ýwô‡ Í‘@Pc†$I¡ÈvÊ4Fo3ËUùb¤¹Âæßw´‡J¿Z`EC@³:PÚ»õ^s­Ëå.q83\gGêþCaˆÌÚ¨Î_hm S›{vydfÌ¥ç œ‚ù¥ìŽ”œ•Ôªj²ò©/ã,øK¾×²Xe“Iíþƒ­·´ñ¢^"sØ{‘w¥«êá†z_ÝÈÁj(½É¡\~Å*_ÌM¼@ÈÖú¨óÑ ^hmŠBœþ•êrrøï4L:ŒsÕÓ®±lðê2}OžÍËXÓ&ˆ•Âl©óÑ_«¦ó¡Wߥډ^‹²÷;¹ë)i9WF#Ñïªß°%ó•5ôg•ý¬þ«Î*]è|²ów/×ùY®Ã¹ÓÐnfvÚiI0Á6·gë13Ìj6‚³~é\f¹Æ"|Oßi¸yˆ¾}—Ãâ°ÃÀj}¯ÒÇqx—‹3.Ê\ˆ¥ø³ pº<—ø—ìtî©Î'ßæá±½Ô΋Þ> §;æè£gýÕ¯‡‡#Ú¸†5Zí ïÊp·~Ø÷Ïk¶ª£ÊËûžîÖâ… Ç¾_ãjû»AΖ“×G¹Úñ¾~zØ?îäùfÿ€×ä…ãÃ~/ç òïá8àÞLóXô8Úy‘°(þØ–Ã"ÚwØõC<.9µ$37å{¯OZ¥b'õo¸Ä³ §‰ÎG^e=Þ_¬óhž³‡‹rwÇGøuw·ÆEÃÈTÝõw÷wòpgS"¢>œ¼O¤.oÝóÍýÓ¾—‡ƒ5葟-yðü–ýг¹Ï|€\ü÷ªó)øðoµŠN,Œyô»®¤2ªóxQìþî&×ßBŒ'nJ&íp÷+ÆÆNŸ¨ÎWUÒùù Uß&\lçûpzó!4ñqSÜé‹òë‡6¢>Lç?d¯6á¹5ñí¸×èA}ÿáPú/U¨ hÛWÉR zßÛª[:áÅÎí¬úO¾£\ú=Ñšéük|›\R^þ5¡áO”¿—Cƒ›¤j'¿7¯ÓÇ™D鳡lNšÎ³ßSôÀvRM×6¸’wXæÄÊÀ« fq*D~+‚Sš“èÜ®g¢ÙzK7;/:ïÂÝå:/Ú Œ®òû7¡Ã?ßñp-²é¼ÀiAc«lòm@N¿èø;ø]Ýtòȇ]òðx¼áû;üÆçñöJÐÏÄ¿“TÚѪäŹ àˆ•Žß™Å_hïYrFûçq‡¸(wRÿžùðøïªóAWØ‹¬Ùù_¾q¾éD$5nh­÷h\ðƒ<äœä"ïpxpï̓ùíü#Bo %\»ƒœ܆ÛzÑæ0l9.ü‡ßx ¿B‡Ç2¥ô:™]|ê‚Å*“~ê#ˆjL¡Ð÷ŸØªÿk‚žÓÎ"áÖæ‹Û@ç=”N$ÑŠ$ •µšœÁ^ üE{!G „X5ôÉ·ÙÁD@ÇÅ\Àê6 y¾8\Ë5êªÙÒ¨àcš`*DhÎRåEøÁéÓ.Ä” q›I¦a7ÌD>åß‘ð«#N_I™ZÁéûòO»ØÚ˜ëüa –{?ÈL©Àµ…]¤H†ÑÃrð;ó»“?¿“‘:ø­‡i‹&,|ÿW«Â!`=¯à±ˆÈ³:XF&›Œ-^ÁÌR¦Ø¬Ë­/B}örÿI1ô…jÎí[Ïß>„>•¬°úyÐù¯ÑùFu[¾>&{èhfE<2ëE"òºÆƒÎad 5üo¢ÿ6²ìîd^l‡m€-Éûn!+ÆápXtÃVì<ôcG÷ Õx¹Î=µ«æ¾øzœù*¨"=QaXâZ%}›¨ó#ƒ(ôa¼_fára‘¹Øþ…z•bm\CûÔžác3üú¶öŒžQsÿ ”ÞÑMÞ픡ûôxD?É}B÷Ý=ëyŠBz Éð`D+Ùs¢ô²×§ós´PL=ñjöúÃìéŸÓûÞåïÛ]ž‡;ïàq‹{Çùsî ˆ¨™01°ò ýK˜ŠiøÆ¢¿Içe ùDü²¾†k¯Ú.OÅÚà¸ÃEÚq.áµz6føÍâÛCD ~äío?>Þÿøãóýñv<Þ—÷éö8;# nf™ßüxæOO/Þ<å—yܽË?ð±íŸ/ÎI‰?#„Ó¢ Ž ƒ§•A9qO:%,ï-ü˜ö°"[Ñõ æ ^y13H¾»^ˆ­ÏƒE„¶]}G@V8›LXz¬žìüýãã7Óïù·§w»ïÿ&ÏeD0*ÓûGw“{ˆ÷{’·ìv”Üßä=;J WÅݯÜàÎù¸“÷ÜÜð |ûã=Ëeï퀼ò¤‚×§÷?Þã?Pž?ºáéÒ=lû,‚×RèÔÐ{Q•§ ?ÈvêÈ}ý`ëãwÄÿŪuƸ“bß!XJ>,dÞl^üœ@߆ۀŽ÷eâ.d*¯9þ—¢û>Ê\·G!&ØÓ¢`uU•/î ›®‹5½F¾±@ûäÛÈ`ÕåDYUEÔ‹®ƒ…ï‹z ߟâð!ºY rÃs÷¦ç˜yP|E’ýï¬Pû?Àè]jçw‹DS NcTy1=ƒmo ŽÓpõe:2ßFüy±êâüÓ²™jd뱉‚oCÁSíáß4µùÁsÇ\çN=-‘ü­û_w“ö›í¥¾HRéÌÓ¶ðt½Q/ÄyÞsE„w¢ ûå–¾M×> ˆU]#bÐ,`qäˆ GŒ˜aÝà‡píæv#IŒbc*lW›$?Z%N†1ºÄŽÑFrž¬~zœ²hc*»ìjÅ»ËÇ3vÈÑ—ÒüÜq\à×îbìüùÐpíƒö IÒè3Œ@/$˜…¡£ãù@~½oÓNJóˆ<®š®ëÀé}Vñž·XÛ§ W0‹ÞènþS²øªóV+žkG—Sâ]éKõÎÙ)ñ½öl¢¶hÛ‰½*^I¯Ó4©&T=[ O'Þ+}ÊWÓ§ì^Ÿ†ÔE ¾é4Tw²nè\½q^Æ@‹/jùÞF½Ž@úÞ«(ƒì¥œƒîÐà»w úã]Ñ- peÐ8hˆ*×'êü¼ZÓ•4‰é"¥|³Âÿ6ã«:¥ˆÌßßžgøÍóÆ3茳Ä>å5:ßöˆJbúÃñ µQ•w=ïèxÓÐëC*ì7–ÿ80²³%tfÐéËDgˆ‘xXsØÝ®N><¬WŒÑë1J¾Íè[Æ'1žá-p‡¥*ÈÊ÷O0ºœãÈeÄsʤYJ¿ôãðïš¡ÿØÔ¹‘ KCߣwÃaÐ •XåRçam ‡¯iž`tS)NwHŒÚ "£#ôذyÝ»2VD¿Æ3¦£Ö&‡FeÍ+#›KY›U ´9`¥=á]›1϶9¼tbþ'¥Ï Ç2öµ‰´Ov¯ÀÛ´<#ïÜ-Á{]ºA£X\t—Ëá¡NwðmÔ*Öñ[÷˜7ЋAÊIv]µc€?0ü«QèBßí§vɛŬ’!êf:Ÿ¼Ç™Žç5?… ΗvÆ‹‘áóy1Sù •˜SUpFØôx|EÜÆõC3X8¾ pëÔs¤­ñ _Â#š… CÅï#¿Í­²Ümuˆ°YÈQS*T`Z~øE2­jg^˜àι±C|­Mḛ̂…cFÓ8™‘¶(gžhÚܶt"m&îiHsþÂ’pi 6§õœ°Õã¥Ö&ÙùàÔÝpH@0…4Ä¢Q{h4¢glA”˜pw·¶žZ¢ ‚ç Á¥é¸]…éaÔ†Cc—P»Ÿø&M¬º¶Â¶sZÎ*Xp ÎÖ¹è7ô6'Bˆ¥8ÇbŒ²…5r^çük%j4þu»×`‰ûP‹2/ÔsG¥Þ¼ù}?nLJÔ3à‚è?ôó@ƃ¥ ƒ¥W¨òMcñ¸¨…4Fc›co™ªhûÕòQç'æË‚Ü.g¡Ûœ˜ËMÌ‚cN|<­Lôá4|Ž™Ê‘V¬-Y³Ç)'ÈîuRí³úŽôlj7y3j bÎáIäÃ)køÆ>«Ž_O33&PÄ]bÀ¸b Kr³€gÙÀÒTÁœ˜ÐåËøNTHv¾-¼Ä|¹,]D7Õ€N@ÚÞ–äFæùb=£÷ióµ£ to]N9S€Oîv[ïÕ»³H½k¼Ÿ¬€&_Õ´Þ¢@ÐÛN³íCX ¨Æâ»Cô&0ŸÎÌÖbhv s‚•çnÍsóàÕ«‡CÛØ ÀሾÍXpí3";7#yœDUΛ‰Ï«¤ƒ,=÷±äY̬ /;r»ãÅ:?>u'(ƒ¡Ûìû&LóTx¸ Ürzÿn½³Ž`âÛ„ ;§K×l‘¬u‘ftáü–\ÅÆ@„úñ"1xIÿrP;?æl¯­m ±0æ±éXTÍU~Fô’6Ã'Å+ ä?Q˶9#d±§8´ýÝåv^‘ºà!F#"ѹèMGë;…q;}5`…å¬k¢±“}ÁB^«7O /q†ëwhÑu™¾é+ ¬(ðãéåwÑ·1o(Úù±u%‘š+HŽ'.éwUïÇ‚²-(õç Ë—»¢ÁèÎö8hOȘ§I¼ÍeyXÛ'7m–EbÑaš0˜¿×XR.æ{3wuÔy‘©˜òX÷-Š ÈL!S®E¡Ë µ¦jèç ŒP8{¦ßsß&$'% œs&¨Y‡”6«ñ G^Ω|¾'Ë™bÛ¢%Á¹#³…9{gcü;—û6­ë4(¬à¦ÇÐ|!¨— G3Û÷h˜у̷‘¿åØ&Dä+·‡æv 1:È”,pp¸FÌ^V×ââ6mP°‘e^ÖXå0¾é|«4×?€$±WýO&¾©t{IT²ã 'õ8qØÞ´)ÊhÚÎv~ÊŸMs¯}]¬’ˆVâ^©¶†áá†0>®¥ r²­¾×Ñ1ìÁq•ˆÛ4ÈB ß HO@_¸F Ö‡ƒ—Vì<áÊ+vJãžÁB;>zE†Lþ<¹GXÔŸÕ"YE;«¦3­ÉH1ÚÜ—Û“u8’æKkfÑ¬Š¥œSéã~(×›ñqÑU¯X ÆÂà‹p‡ˆöcB°‰aâ)[â4zàÞFã64å$ŸBòõ"l:;„…¶Ó‚^¥3Ç)yMÓ&VCÇôm(†­QªU$Wk3ÂQÖýDð2ã\ aêpGâelO¸QǬMßÛžð2Wy>x–XtË+“ÞÀúÆ2¶G_·µŠ,Cä.Ž÷WÙÜNqè<|øCuÍÀäk˜z¦e€C"ÚÎkï¡Îdp1÷ÎýTˆQbù An„_ø¥¶¤'À¬ð3­µSî¤Í±ÃAî}Ž…{™:ÿd»„X+œy:E#ƒäؤq/ÛIŸzPçš "\C¥ànR|Ÿmr8H[woóÎ:?"nø6—”]½]ˆ›Þ"c ÖFüz8ME‡r†÷àÆ•yÙ)¨~ÅL’®*’z‘`ŠÜ¿o2òYµa›ï\_2úã—½lÛÙ¶ O:ɼñóþ˜QýfëvRúóŽñyF#‰¤„Ëî ľ˜uñÔJ:#X C1f«¹#[Ô Ð¶03LšÃb­k „i±¨î뛘jÔÍììo)[õmðÑMºÎ¯RѰò¢éÈ»ŠäEëåÀÂ##+hQq) ÞÃÌ~ãlc•b•ºÂºD®VEž£D(=+kÛ|‡;–5ºmÖ)e92.άLõLO¾ÖåóMO¼,z`:ÿÌT„f‚‚*½B¬éÊw.†+½íŠ·Y13’ö°cïÂb³­üuëa¥›:};?\‹µ©†­è<ãø dÕÕƒ;¨X¹Âa7ߦ¥µ!Ñ +gÌ(¿˜ ˜µ_:uýÆ1 ¬yó Y¢ªMn?)m›_‘“ÒÊš‚5<ÓQƒÓc]3W<ˆÚÿÞ>¼I{a§†DÓ ¡¯q+Иk£{[Tº&®ð9ìŒ:?÷#~1ŇۼáRj?yÒ+R…Ófñû¶-†nÆ«ßF‹ãŠÁI®ûÔô£UÛ¥Äî¢èA¬ ¤´($pc‰8e0ÐMP,˜·ä‰7È Õ÷ˆÛĈU\qe1ÆIh2ßÂŒFp"x¦£B,‰×R!ÅÑ­ïswÑ…ªuy|Þ2ÉÍóS®-ZCÎÚ·çüù"r¯fNî6fÝ.óÅkò°–“ƒ'¯«!òô- ‹9šÿR |ÔùX'7ÖhyëqzfvCÜ 0Gº-ö„«Ñ¬+^P“±n=‹Qâ¼Åif´3‚×vÞM2¹’Ù"`[*3E>sÿgþ¼^ä¥ ºr†Dþ!KÜfÁyŸÙ²Ý+ìüØ7F; Ábè½FTX¯ˆ0o5UÇäxoAÂkĵQŽy͜Ǽú5®ÚÅà`¢|`bë°oœVˆ• °}?éaŒ¿Ñ+²Ä·ÖMkÖ£¼i¶‰£}Ê”ÿ“Ζ£Ý«øm×öŠäk´´`0ïºVÑÔÉ­§dBøffçÝÎ Q¨Ói4äH—‘Á€-úHAÝf)£r§ÃI a;óæUÏþmÿÔƒvjxîö(‘|æó»9"*R­ì1¸‰ä…žg=+YUÏÇ Âá§;œ=¬Aãß“®JÞÿŒ7Éõ@¨„|ºã•Ö¸„^‘@–¥gð$‰ðþx»ÕÉö:,1¯¢öš™Ðº©94-Ö±²‚ÚifD~ÞE“x0 Gwð ª<`âñM<ŒôõãFŽì7zšœuä©öúf•nG{.¯âúÒ1{98æoû^Ä~›°¶ÿOÏîãk8TÃ} »4VŸc\] 0Èà —á÷–™jÀ¡: ‰P¼üFd1Ê€´ë"lMuàf‹¼6äZ`”ÆÅ±Ux%'YÊ€3Ó<¯Wòo#?ëõê¸?î7›õj?@®kˆBŽoìu‘ÎþÈ{y$o“sðO„†×pà(W Ë{Ö<óˆ·¯y Þ0¬ãõôÞÎrÂWÚïÅPm6ÿ)Šq›J*:] í+ø*{]«o©…¤j˜ #V7ÇèWœe]ª dUæÁŠ‘HV5g˜y)¼F¸¨Äüz]V:ƒ¥ 8Æõ”"§ÜÖ*P¨ï^z Ùˆ°ôÂSQãUß¹îy+ñíW:,xÓš/n8ròcÃùÙpàqÆ ã@µ_¯þóV{í6÷½®·¯ÑyÄF©óâuëÚ|²36- v‚̳ó©“×˰¦ºÙ6b笨"ùu÷È»¾öòÀ°²Î€ÜØj¬Xk&\B:Ñç®ELWWз”~³êå‹C€Ëª1\]õ0‡Õj±ZW»ã•HvÕ/qp'»Úà=«+ ÅFGF®U­v«çÄ©÷xe½Öóð£¢Ö´Wëõ*ލvîrî> ”Pú”`ÔVƒ­d~܃v¶êœUÊbb|cÐΟowâÑ€0Ö¦|òPyñm†z+RÇ Ð·éÆ÷VÑqX½b?Ô£·0[—Õ€×Ãú°ZìªõzYÝlvË«CµÙTÕHa¸–ù_‰¯–b÷+Ñü«Ã•èóî(cp%®ªÍ¾ZUËJ¿ZɹòÞýrµ[.WX ºD=e ýç’ë¨èÿFVævf¹oÄ>©ÉÛïÿS­M\a½eÀ/ç·i?tÊm Á•h(c†U6êÕ˜»côÞâDCÒù뮂°É5QùÝB½JXø™9x6c°Ø\ÉLå#ÄL!8“o~¹®®–WÚJ%VäJÖHQ_Ø 9¾ª6»õRæÄAtýçíeäååêx#z%²¿êå7²8\­e¦ìW˜ûAux£sau„‰\¹tìÕ͉K0ŒL?`%vÖ†…2@ákúŒô†Íf=¥‘Rª%Ja3MJ ä–н·ðQômFì™D^p$u'E¼J @*€žÏeYZ7¥‰_+$º*$f¡[‹†4²Šîe„È—ëå väJ¬ør#ÎÍJdy³­_‰îïq¢Ü/å·Ìø;K,Õr#v]ÆJ|$9ãu¤y»I+a¯é£nöº1£óÉY+…ÿÆpÄiêÛè,å]î^WHv1ñiÄt&ój£ÓŠ{ÐêJÌl`[Ämž#×mgÔÄ~ðÍ›D…«).‰´ÚðDå¹§JH'~ŸwǽˆJ,Ëöy iÞÀ°À·–Ñ8B“—{ñi°¼®imV‡ÍN\œ¥œ/‡7qƒä=W-y.£DóOç‘Û°ãÆ6¨…¾Oòæ²!3´VÅÇiïoc «“ý8¾ª6°c‰6¹kHp¦|d¢1ô#“Jjƒ‚”¾±kŠU† %Ë\ ÈCÕ ©Ð¼ŠUË™íÒAaò¦ò‘Ô)D‚¹hç¡¿À¨Üˆø— Øç5¤xÐðÌ$½Ù‰çE\ûƒ Ëè¸8”2Fòk±YáuQôŠ~Ž\åJžàݺ^C…á¥Ã¬]Â1 ¶£ÍßÐâØr Óå¸ÿŽ{ØØ=ºs¯×ù ŽQH…š5äóƒÆ áô@±h]Ã=ì˜ù6ã„á‘C·°ô[°]Ä&×$Àå¥1&¼ªÅBëÉÊÇDx¦óµØÑ\Yd¯D·ÅrˆK³„´nàç¯`mäè’ý¤µYÓúÈ›Ääˆ®ÃærŸÞüÍ’¾ |Ôž»TšyóÃÞ«“ŠXÃQc?tàËïéÝ 2¡{Xà®hl-£ûè^Y®wÊuç pÀHšq xƒ]«¿ýÞòg•ñ^kØœñ"¼7óžºQ÷ôûÉþd?_²ªf¦ËÊ#¤ê´>‚¦ ÃâŒÔÉpTqËïSÕÚ\m–X!÷° âš‹)·.@VM±äË—ÝåQ¬È_\ñþ÷ÕÕlðèp~³çF&”ÛÓÆ3×þ¥O cÏÀÜfÕ¯±gå\ØkÀsCÇŸÖF|J>õNt—ç¤XMÉùoHEóE-tÕ1¹)¶bIA«“šì|cEè°®ÖrŒµüih‚©¸‚0ã˜Õà¦û… éÔÖ‡5>îÛ¡‹|¸†±à²È=¼˜Œ£ni÷1¬ØÇ;}º+*:“¨œ+æüHÃ2ð-x¦7ÙÓóüW£µN¡Î›äÇhç_Åéÿå-‰463!ªßZ2¨{W5H:'¬N*ãt"j¬ 1 i,·Á’jˆ$fL-ju>úÝ`%ÎJÂMCE#”­­o©Ñ­¼ˆ¦W7{sº7ô Ê·çÚÓNS)×=÷ 2(pÇiÜ)VõÔW%Þo˜a(r/‹,ƒgü þ^3ɲÞh¸òÈèAë&DP—ª2ï.ÇÓ‡ló{R'' 5‚" Á)×dD}|L{X§è‘ø¢#i7bäd4Nô”ŒIå:L´@<+ÊMgŒ›ò°Ôùwjp÷º‚ò©‹Íͽê÷šQêøZUçÃ4pÄwQßdÐÌš†óFiÓFƒõ›§‘¡XSÅ{nµ,ùB7Ç"fSK,¯ØˆËãó­³ZW¯Ë ÖV%©¾ab„hêèç³nò}©óÌê¶zmÙKd»˜pAõ=²³•Òàb+Û(yˆW>'£¢çÄKv+,ƒ¸P¾A#YÇ&ƒŠ¨[s±bK„tÕžéB*>]ñAsÐrª;yxíGµSfÌ5ÖôáÞ"dG ê÷øX Wj>ë?osXÏ•Â+úI‰îä¥4NZ»À­+c•جv1VÏ¡ˆðÆ@/î‘¶Š`ù…S5¨H£s¯µTèh§À…ÅÃe„M° $!ù6£«ßÿ±ôžßÌî¿þú6ò©ã6‘ ÁGƉKXÐS¬’pyE hÁÃ⦋V>n2é‰Ìì¼,.‡êz%뇪A`%"ˆÀ,j$eÇ‚ÍÊXV¬¾³S‹¦¥àÊË͈{X”™ÿ5ùXÅ·ùh¸„‡ûÎ&~Û_¦ó§>˜6'»N¤R÷)ðÏG‚±n*¤<±óˆ˜DŸ«ëfÁ ‰ÃŠõ;Gœè±ß¡ZÇkLÁP±ØšÛD6£Ä¦õ×%dÍ)Òbw©oà ¢z욢¡!–¯nl¿3íQ/Ñï)í|[`98 !tòJɰ¨h\šx¥®ët±1\O˜b•m^ñøW”ýŒEñò<,w@°Ôz}Þ®x€NýšÆ‚öCYü&Úù„1 àù÷ȸ¢ôrë›j¾k¢p¤a 8êÕ¼­%ÄVgAëoÕ’YZjòm"¿ª+[dŸ»ÇKYÿy¡S]Dü_ÁÝ×:bLY9@ªmM[($Õ0)Þ,m2•¯ÒYµŽý!\˜q]ÈÊz@« ¯ èq÷h>ªXÁ„.Ý|åY –Ÿb•ÜÑHk3¦²11ØNœ¶„jë­-né¤H d¹c:Ÿï°:«ì “E;+<Ìê"":óÒš^¡,3„¨"vÊW®ie 5Ç3¦gðÞLçÅÔûND â,’pÓ«$‡í¥š]Ó‘ÇǪ”ØZ¤Ö’ðX —vŠÛÌéÅÊï;Óù‹ní)RöUùÄ¢5´r÷)Úù9ñp‡Zm‹…‹Ï«Ó”4Ô'ªÉ™?/: ;ð6Að*e û$Gêf‹—Åm š„–!N²ÔèE«3§XeQ˜Ý–µÞYáYÁ;£ÏÎ'O;1 µe‘O^=î ÒËX{Rl[àòE/äîãzu{ª`ˆüŒ€ÛÈ~bu°ÏxT¿;ñmô¶PkÓ5à©g&V–W–æ”PÓS»Z{:«ï±ÖÂ'ƉX,Ë*±M$nlUºŒ¼²¤Ï£½j'J¸©>§ÌÛ‰1=ÏÌ”ÁGÕù᜔¼)h9‡zZm¬ÈJŸ hbˆR]n·ÏŸø6‹¡2kCßf±ãÓa+@¥µ®wu£Õ÷Ü-0(­°‡Á ôžÈ}ŠÛgÉ ’Ã9W÷ÙŠä4J îq^@îæÕ;3jwVå'ÞEF_\'EtâK½µ’ _@ä ¥-GšÈ„®À„3¾ì¤`m`[¶•ø×íˆz| ýÜ¢±êûA;ôh%„ÐbµNc‡Ü·‰|.ûòùרVǾŒÙØ´Ÿê˜ÝfÇfUl'ÏçõúÙk¬ÒÞ]Œ=Àƒq5É»ö1~Fˆ¼‚ "Ž4ÎÚp§ØùwRà³Á¾ÉwÜWhÆ=,˜mgy㋎•à.óçsª¦v^›·Chó-ÍÄæYДÚ:ñ—j–Úb‰ÓçåKó D`Ì>އK¸û õ¡ôÛMêYÔÅã6–5}JmTWµö°‹vþ—ÄWItA£]ƒq(ÏP0º„š0„&q#*q±¨i¦°Q*X4 zFúsÆœ´Ù¨ŒmYa6ž)اjŸi}ç“àÄÍ ý˜[ÆÄüA,ñe:¯_©Her£¤áâ¥/.xŸÑq8b.›oæ:ß[å7k6¹Iêc8ˆ™rèø8ň á ×Á±±zS zÉ'SZ“´ ¶‰6:6´HžK[ènƘǻ¶§i·Ö–¤ùtÛy‚q7^¶‡µˆ™FΕP˜!sºxáªØ´vD#ÇZal9)­D6•úÀx¤q,6÷$V¹çÅ ÆÊçµ¢æÑ ¨S³ñÔá¥=]á&ïŒÎOÍrTêné6é¤+Ãl±Ëæœ?ÖÅ]Z'ÕF߆¨½F¹!˜ÅÖ…‹Åðz¬WÂw©B-r}ଠRà|ûgí´ý%r‚È÷êìá¶™ J¸`¤\á³/3¢ nÔ1Q"¶™ÂO}H š·\@cùØ•|Ýg곦ÓЛ6Dj#w¹µ£ÎóKÃ4Z>OàÀ`œäµ¹hŒ{ÂzàÄXeÒyM¨Ú’«èŠÌ‚üFÉÏÍC­Ibf«ig½Áu+×ó‰W÷÷mIç?ž3½y8ÅDõí›qlé…Xê¼}b›»²ç;ÁLµûãe•ȾxVç?=kØb†R”£\ñ‰°YãY.L(nû >°ÂèÈ l"%C ýògE9Öv¶1::M»3g;}ÆY/6«9!p[ýOLÛmý?gX³çê_²}NåÍã¼&F˜#ýë¡ii| kŽH»®-ùnŒÂÖGŽrHÏüy׌™ú@A‰¤m%‚fvÑíB‹;5 5û¢*Ø Kd lZùì>%…s'1Ë1·.òÓ|írbÕ¢7É8ãëngáy«†b”æÄg:¡^Œú;¯¾A”Å©¤ŒeE°{iãck5¥xƒMxoÄ!ò˜±,¥Ý ‘Ûj?6€jt‡,×?¨®gþEý'}Û3 Ьí2–•ã³kKŽÄb_™Ñg·³ö»¯ç¥âËs¾3;5ôn G´e¤áTå#[Ú…ñyû !ÄæZ µô)h×ÄîNaѽœx‰S¬ÒJ»Q³p Ë®lƒ‰6c'¼æ˜Xiš„‡²ú 6í©ÝU­_0–#J%P¬N§Š9&º­IoóÙ?6?«\Hè *´1§òÇ" “úvv³åz®òé"3 2RϺ}‰’Ò–÷бdAY°îÖÐË[ÿˆ1û˜rR2Aðô¡Fýew¸6uÙÇÂí9Ðcµ>¥žPî Àyä¾A‰á<«´ïT°K­lûX}•œÌÈ(7§¦‡`ê¯[î/·àP«±Êc•Y£‰#'ß·Í"4%Ëܘ–íi×p¹ÎËÅ{&¸µ½™'®.|„¸ër§…Z?å¤Lç³zØ: Ò#@Ø«”~’’µÖ[z6V^ÏuÛ‚ÐÆ•gÕšË2#"-‘¼é|ƒ†½$ZÅ(º1#ÛCûÚ¯ÕJm+Ž¡«Š8MFvYpÝÆm‚?i‘1~ŠA.âç/D}àü¾áÖÒ7úõ}¯ˆzîÊ0a[ýÁàóÚÝ/Úù„·yÜVׇE‡j±ÛV‹ªò×ÛŠåÜè’ŒJ5zï©â˜„ëÚ}¼QRÒšdg!Æmì;UdN̺q8®£ò¾d~I´ 4ó\ý³F·•®„UƆe+÷Œa(ëâÛyœsòjK®¹Ä,ti\y&uפ$)Ú¿((æÎ–UM­°™rR¥o£Ø7¨ä·H~@è ®9Ž’éCé­âØG²D&c"ŠŸUkMÆW ^VÆ>0ƒ‹[Œ¶²BKZ]W2¶0>Uu=Î-|’ØO:+€°ŒZÎø,¸`lOw%ƒÜ…Ýëø¯WîçFóDÓ¦étåÕF±L†(³³âì«yØÛ{üAí<ž0* ÈÁÂ+Á+‚µQ¨·yÆm„ú˜5Ý(ŒG©ócäà®È‡~M¾V‡¯`•Œ¿uûÄ›…jðg©oQãxêE¹YG#?ͬÆ3µãI,¿ìƒ‘yT‰Õ”-ß½¢]ˆrdp^yȸ½qÆ|N˜õ7p5ߦÍêa‰=èDòÍ‹£s€ÁWÈÆ"øÂòOà–Ü­5Á$©é‚¶n2;y9J DôÄQ<Úðù¶*y²`~þ™ˆ$XN¼_È ·cÀ¡ýAE–/™ /i8&ëòr& ëa/²ófmšÙn#0¼0óƒä‚3·2õú ŸÅm"öÀCàÈK5‚á:Ô×aØ.êEþx#›3j“2"[ˆ{ëÌFÈ}j+$NÔôWôeè#ꀧ–F^JÔŸíÔx¥Á{Pvø—jmfÝ]ÒòרÎn|)¢E®zû´Ã…ŒÐÔ £)3C“o üäç¯# ÛPîµ6”¼2QÎloèJCöq4¬%2ŒôwöÙ®r ïÍ;kíA¶ÞäÛt,߇ܽÆ0™?!Ô„ˆ6[gˆ@Ë2à©LÌÎs}½†Ä¿Òµ³A^ó_m«¼£Yüõ¡µAÕÚT?áÝÕõi°iù,]˜YN BÜZ_öµÓŽía­\] b Ø$ÄÙaNŸR*NµLƒ:—þ›Y±¢©[˜÷†¥ø‡k@Dü&¾ÜÃ*Ùº¦BšÎreãBÖÀtV¹€å›)ø6[õƯ©Ä•ŽÉOêÏ»J‹‚KŽEê¼"Z¾‹+l((]ÆR£O™D‹õ Ûö>¾JçÏ Ö7´üöåñ )»•ÕZ†¸~WÔö¼Põ;)4wA§#±=¼ß¿ÉB­¼e&4±(‰€FGvòmÚ)5çˆ)DziÒÁD…ÛÍr&óÕ±-ƒe‘:z,]õÉÊæåÛ£ñ%ÀKãóœ2ÏRW¨—²ØZÓR:ôxÅE§CUÞÐ}ªó‰ëãC`§ 1‚džÕ9ü Á %ƒU,kHº±¬:2.£%n¦~R%Çy–q*›äN¶yBFEOy¶h#5Sy—ºæœº0‰†ø×Áš—Æ*»€Jòzr#¯¬ÙÞX¯”b•¶ô5Sÿô÷…§ÕØdvimîH#f«r8Ä©hMã6t`YŒÏ½¼­ˆî›Â,­;Óv4›œ ŸûþùùC™pmgI•É)g±™©+aîÌO¦ÇH‹}éA·‹Ýe¾Íî™å“ÜÀjÐýÖ1¨ç7±.#JŠU6SX¯ZÍf Ú‹Jë Q&“…6T`«w+Z4e‰ñ¬ÃQD÷åáôÒÖæy¨<±jc¥»Ÿúç ’7ªKù‘Ô–á$&01­çMxÆOà—ø:ßö h S v=Ô±4 xñócŠÛôÄ©2ýÄaTNQ¥AƒÓü"9x=Í‹Ój,‰uF©«äS¯Ì6oˆœôq‚ùyÚnœ`9<¯ùzB%|ºúD5û¥Œ ½Ì ‹ž“ \›§°´ŸT¸Ô·aÍâƒ\à¸ì± v­ŽwaêÆBç[ÛíÆXåÇ©ÏHt ­=IІޱL$ÿSòa½*ó½ì´ÆÄá7õÊœ¬nÞŸ·h¸5ÎFB ÈÁo¿Î8%Œ)k5­"yb1÷ç­ ÏËÌXM±9/Õyyg+\ìºÀb 5EÐV×$tñÜΣ?l£]eú¬æŠ„®M”?Œ¼FÈH¬åŒ,T·ÇÑÎ3ú€·Ù~ÇM½¸ ècfŠÆý^5§n?Y°3¶™PÛ9óesûäèѧ5a×\·!G‡FɹT”f‚¾Ž–dÒ˜gã2tqÌÃ~œ° ™Q/ÝêÊ]cÿÌëØ)…†‰ͯM­Žò=ì^ɱ•‘;’móçØopüÌzhxØßûµïtŒÔλ±Yß­‡‡~=  ·†ãÏ\ã©|ÄݰîŸñNðo?ÉkýÆ8ºqÜÎ=ÞõWêîõQ>aÝÿo]?ü6V²ÂöÆ*Ñ]´SVøÚZ*¥ðöÎ’S±g‹×JËsG>õ 6cÜ—ÀVL<ùà3f´†—޹XÅKc¢Ö’GÏ’û¸¬ŸÐÎÜüüm€içAø÷7ö?=É®ç‹ó|<|‹3Ñ&´àžèü%Ü}æò~`ã,@qªÜáPEþ®±æRžÎ¥B9Nö°½·ø×A ‹\qÑ ÐÚØ!çŸ7÷âY¿twNbv°ifbìlÂ@çq:É¥ É^uFÖŵ“àýÉÇß?¿Û8s€—"Z[­D¦y ÙpÍi$ÅÚŽø©¥—²ÔD;?á*Õ:9¶ËT[²=Ø5z—bØMêþ²ÆœI­QÃO¢ÂÀ5G⧸MìBÞÄÅ™tÚˆ*†RAkÉFµû’Áa›ŸÕ3Çþ b4¨’^0çEb9 íòbÝÄ«Zð°‰Mrµdz˜>šœlÔùn¸íñؤq¡ÎOL¡š”RУÅç•íÊ t”{Þ7‘ª<¤š‘ WÉ–-à™Ppæ€Ú-†kø‘ÈM¡[,ñlÖpªÓ.kš†iB0J3¥3‹è>ù÷ì<÷rõŸRöÌæb)IdÉÿê  øîk]ë*„CÕ M³“QmªZšÝµ\&&Ç7Ò@xGL¿#t‚>škH~?‡ ó¾þúºrkàòìšñ­tZnÌè¡’p¬uC›¹|˜ ³ø¼Ì°þW× ßÝ„ëj±@j·èvC½¥Âe ×å£S*:¥A 6Ùj¾ ®Þcß2†UuX5iËþqmVå48,2àLU(F™ rE*bl¯ bîL“‘­ñD•æ“1€*–´—na/ü×®–ïb:ï_É,¤ðR”ë7 á?Xëtg;;ë^ÁonyØ {ªïwL|{(•?,Ýb ÈÓ£ ÿ YÅ ž†T(öâdäÎ[‡;E÷iݨ·æ'Φ é kN- Ês©Ä¦\¯j“Å»¯µ£f‚D4©¶°B£Zàü:½7âºNaAÆ@e¤J•¬Ú¡’…£DVqômÀ6`jäo$ßìšk¸<ÞšÇiI˜º«l ÁL±1®‘Òï¼…½@$ öþ¶±ÊK8"#t©ÍóÀÒ±€m«¢ sæfל©‡•é ÈÕÚ;àtùb+vPO Õ!X⃵Y¬ì¯+ç¡é×$ØÄ‚už˜"R0á"•/qAÚ;£[ ÚEûV#8õ×Qç=VUô£So+¬üQ°‹l=Ö„ÈìÃýt4†Jú®‚”Ë´ÃØ†÷ô0 ·yM7jFÌ¢E\?Clâ:¤6£l¿¥?±'òœ»Ø¯v›(4¼µ·Ö‘„zëez{kŽLƺZ æhØÀ ø K´U0¨QҖؾщä>’ Šè­Ðú—¯mÛ:£Ê/0uPÿ Šo "ÂB1¼D`h¢•-ª•c*¥)4µÐЫTvæ»&¦™^É‚çEè¸6öB÷4û©œCÙ†}øîÔ·Q¯Rì|u}`à 8‰o–àÎÀ„ÁR½ÚËÁÅÔÜH)AoÖ\ìØ.(YfcÝÖ:£’n3@gM;¼7îM{³F\›tÌ#²;íÚCˆÿU_#A÷Bå¶ÙKý u §ßi’Œ+ÂÎë>Íù˜fzt¯aA×~7º3W°©ëb‹búšW߯€Hƒ;ñmž+fÀaU€4耩ÄNŠ|NH‡1G·Âô;R¹jå7ô¶×ñΰIJã!þ¯S€½-ƒºØÅ¦nÕñÒ`àÏ¿Õv°²Âr©}W¡º6 <2/A¨Ô#Ñj0è~¤9R‚å! ÌOí œ°ó)ë“Î|…Î?G싨ròZä†Ë öŠxî`~ÕûŽV <ÕÜjú&¦Ã1ÄJFB4Êå­9‚Òƒ†ŠQ¤ÅÌtþ™ù+zú¡ Ö†@'ªENk5ÓÔÛ„Ø›ßE;„ÿ o †YýnÁG.©Ö7Ñön.4‘[Ö®«n¸Ï©¿¿í ˜|_eÜÃFÖu}ˆÛzmÛmJòhÇQo]æ•æÜ}ã" ´ÞŠ]^¢û­û/?X-r„gê'i´¾Iž‰/'Fú6Ü«j©mÙzÙ7˜(ðZ×U.Q ïlÍcf„þ<þ&ý ×I†L¯c­bñFdætM—WBÕt}ïÒâÇ}ë÷wÃÝÐ?ß 1¸÷;¨Om˜a¥õ‰:ô(QӸ´ŒnáLçÙ¼IåTŒ%“dT…k€Ø3­qZ©oæC0±¦â™š-}«u\I½•žÄ”0_tÞèvmKf…ÖæÏ»_b?ÇÍJ£í™6ÐÆˆJ±:ÝÓè™<Ö¶«¤c¯U|ºÀRçïú'¶3x”˼ʩ{÷V2&tä%×”µ‰pd³µ —ùóïx§`З¡w(cðyÆLý:p­SCÄ]¢iì”Y×OXâöƒÖ®M’€¶ÇÐ{Æ‹VÓùA}›±öDKkdˆ´ì±T¥±@ÉàR„„Ξ&å´cA£ßBý1è?ýy‹ÞGІËc•Ú±‘i×ËÀgíÔXÖ0$ S‡ ÈÔ}êN;ÓDNmÒS3×µH}e#᥄õ»RhH¶À¹ÒeL¡}°~JVÁðU—:ùÒ±úe °@ˆ¥o#Ö&(ÐJ1„>6JÔaº_qZ›ê•{G·w¶›>B›Ù‹±ý>cÊ_U'…“¿ûÉag¼ã÷¿/÷lÊöj­bS½«Õ±´¦’FÌ¢ÍzXÔYNJ–!û;k5ðÆ2†ðµÔû32º™!u[Â>B=ì†QÚFœ#'c›Lî­J^«üG%6ç=xÿûKÞ à?°ml2ÁÆûÈ @ÂäTÉÒ¥µ[w˜¹‡ÙSN^¯œIÃd`X‹Õ}§U'ª³5ÓÔÖI#|Âऎ¨ŸÇ×t)ýGmà’?ÿ;ßò(1wÕ0eu°îð~Ú†XHƒÑsFҹÂl0Çæ 2°P…‰Aó,ºÀ`gÕõZªà!]´¹ˆ>[ú‘Iê¼B¨>F.œ]{yNÊýsRk‡ñŸäÜüɉEÖ(¼t‹Ùh,Á²ˆt°Îž­£)VsR ˜)–α‹$ƒJ:å›­g-ïHÝ;X+b ~2¤aƒ±9¨?ÿ}¬4×€v{aßÀ>·¤")É1òR‰±hÕüiçå¥ãoj¶°Ö¢Ä-£©•7f]†ÔÔT£”Cêf;UÑi‹îÖ!Nß&øCP´2v(ÛFƒgZdÌ<›R÷ZØÓ&•ÖÑÑ— Öþ‰±zÛñ{[ãêXÛùªÎ¼íDi4¿ ´f<›%ëïŒvùc&ðém[^t<{›è;K áÉÚ0,b|9ƒ¶ÂVF]é §E?LIjäÈl`ômDºžÑâ65Õ¢Fð a¤kô8$g;aÄ‚ý;—î-Vl>þ|^DÐ^β’#çzx¦N®¨O¨çE-—™Ÿ3<éêi'%{4ÚðÔž]¯bЬ‰M˵í•á#·iqÂ|ß 3ƒ Š1â…_ÈûFÒzyÌ&C”5ÓRg훎k¹; øÅ'ü·Ié#ÿw—wòJÄ1m¡»‰Ò7UjälHî•`NmbìbsØA:#´ž><±¿%WÎjÝívÚ;ˆeÅ}ì˜EV«OÕíþ ¿$;JÑLøbÒÅò\¡ ë­ÀÙÞ±dýºJurj`P"4%ìä˜Ë'|gª^Ƕ˹> vÓv¢ 8«ôc:?£/ÀÌîwóŒùmÆ=–>ztòtl§ˆ2Å5f˜ò!OÊ3˜kL_¢0Rãúgóm-ë”ÌÈŒM² p7 9ÛÅÎËc®°:³”´MIbqˆ›«Æu\auÖ71ÐñxyÜÆµy)tëæÆ‚’¶=Û Ój–fla'Tó:Ólˆ}ØÔs[àÎÒ’Ýàã|ï"ìXö¹$OPÔWK\¥Úy"°ºJCÙÉpÙC˜kÐa…µ:9ƒØMûp3(];ÒJ"bfváͯà1k'·%§)XÆóúŒv^]‘ /)ý8SúvŠÏ†LOYfoуöYÉŸ\0Â'´„05? ư m“¥ÏkómÄÿW½Fp®ZìØ‰À±ovEëÃQ±¬4B`¾Ó 6®Ó&‰”œ1(X›þùî¡~~NIœËí|”ð8«›L@nyÆvæ ž–¬Œm^»4_9ÆÂ„ãy•úRg\Ⱦ‹1KÈ©oî#ç4tnQÖ`ð)n3Ðg×TÁb B‘(ûs4äl×2ƒX}C’Ôö]Ó¥<ÌÀõÞ­†nµîuw)MD¯IIÇÖ|Ê©lÌ}ﶤ,ØðÛIæY!MÉßæ­>8#·ŠE°·6NÆŒoô® ‹ð5jz$‚;ÚV8(ºŸÞ¤¸ ñ]àf?€¡aÕzÇcDþÀºRÔŽv´Q†õv– PT4k¿ˆh5$rLv^£ómÎ^×Å!p9“‹;ep;­ËkT‹.‘"oWÐæëIšsYUæ³¶€q ÷–ÅN).ƒÑÍiA1æ©WIÌ€¿K¾ ]Hx ÿ31¨qïD"Å$0;YשY-¡þš&M¡Ø@ŒÙ³ÅÖ‡¸9z¼œ»o´Ú¸1Ò·ÓJÙºìkóŠç².« PÎ)®[WVTºœ0XG±uçkœRÏ…–TvN!^·ûVÍh𣠾GÐJ/eFÚäÛ(ë¯Õì’)Y«N»ÁÃõž•C:‰¼…»}gtÜÀéþÖÓ«#0²Ö‹W䤿Ny[Ò ™<\î@~ªÜ(–úÎ‹É ‚ÇB½•r,&Â8¦ªLö]Rh Õ&†T GúŠˆ6¶6âU!!FÚÃ’lìœûþªé ¿Öò íTê[­™72È…¥*"¼%r]s‘üórü|ᢸbÉKEsiµÍ7MEiâŒN¶6WùôAe‹”± ÇNU™ðç@"Úð+XmWg=©|¡1>*7XˆùÝ×É·QMX["C嘱²f66X–RC@ºZ{w¾W­'Ô³1N¾Í¨yXK‘)L[[”øXjÁB®Æ¸Í·´Jòm+w¦[Ä”j†ƒ·5Úa%6ƒ§U0³2½v(°ÔˆF†zËv1 ðŠø|Á2›÷îȶ—%‘© tæÏç­$æÞzé„¶Yþ8çŒLÄî©*Ói–9Û`K¬õjˆË׿³<0X“wÛ $ߦIh.EV1‹pœb#-²·1ð*k­…¡5`„évÛ’ë“@°8¼¢KiQW;9E9yš‘#ìS©¸X'þ¼ŒÍzj;d ºí&~(ú¥$jÔ¬*³×âÀåhèÆ©~A€¡'BhÅ ø«Ó8 ‰> 6SÙ5H”$Ÿ& Oå²½·XbQ"Ú#.$ˆUöÚn;D÷øX¯ÖùD5çýnµ =Pú’ÜŸcÏ£¥s?Îj3ë•1 =7ÎÊ…]Ë€­ÕÓZ¨ÒcÔš°W;¯ÿ·ÑH§y WÍ”­Ö¤Õ©|Âpå\3UmW(•U0i¤XãÙ+2Æ*ÜáÂzØÜöù^Ó—„ï“É>1ô§DøcV8=ñžò}>r„¥SÆvF‡Xi²l ¹ŽJígëª× kEÀKG"똼5þùèÛ e…|½Uà‚˜œ Yñk ©Òç+ò%Ž&™Ó²Ø4VXN4ÏÅ}±ÎWU¤±SòÌDn¾)ŸóºçÔQ2Ã=ñ³§0ýKæŒúvj‘C“oñïc=|½¡­“˜Å—×^)ÎtpÐù?&\%t¾ÑzBð© ÔÑs[eI]p6…èµBùçgu$ÎP:1ŠÉ”÷u`Öײõ¥3rü*Ç×è’Î# V¶©oÊŒÉËÍ2R”ÐXKÞ¼ÃëäqgÚƒLä4hï³~RÓhJ«y¯}—,E­ e:«°¥G«:ñ6Ðy…Ë-Pêkë OgË^ðÍÂujÄgÑ!­ Öq…ŸÕ ±Ÿ°EÌ´ÆÄ ˆÛ½\¾‡%ý¦ ¥³›HÆ[[_ǬGF¹“m~£ØŒÝ+ã‘mË-ÁuÈÚÌÙDx±qŒpä¤ÌˆD”›¶z –½`[$‚qŽt^cë¶HDþ°ýà¦n©*ï·Õ,ÖÄ Kˆ>“Ì(jÁg\pëÈQÛÙV*Ö"bÖ×?‹íì—ãçÇ­X“Úúšw ÂÛŠñ¯®Éûî*œÒ–ÄRÓ75zú4Þ˜÷–;Ó¡uÆ2fQbÍI1/ÄŒ”q†YÜiÔDQ]H)ÒÆ 7.cœ ?ÏLÚ.¶äpDb…¢H³qüBû»Ex³ö@·VÝaoΩ~kÛ» ÑÍ/ðøñ9)r ‚T¹¥Ý©ÚÖ¨ªå8H¯kyÞß#_D‹Ö4Ÿ¢™œ×Œ“)Š_â ¥²E‰GEl",l Mó¯Y>§¼!Z1¢ ud Ñ:Å*— (×bD8°”Å‚Ví A%/ µµ¬ôÊ9 -CÃÔ3±‹å²;)ÃO£Qÿ~¸??šš+íéV ÚI:KþÙkö;ø©šõ¬MÄ˙ʻL”ųÔ[±h>w&üкŒ(é|KŒ·WŽjå gëMNiýnC«¬µ# ¨7†hocNJVØnáÙ<aÔq…m8øNì6É®¯p©\ûÜ"÷±3´•jãè`Û¹[å7!î)´w¯ŠUnIsjDâmIŧÀÖ(¯Ûóœ™qïTræO+AžÌåÑm≔,ñ„©Wi½ µ< +u‘6´ÖnZCnðÿƲDuªG…’©óÜËÊŠ:)¤ÃÑ$0Z3¹Ê-CúÌ:Æç"URLôj”8(?X;ûñµøÞ[²‚«µC8 ?%/öe×Vù²Y°Ý«¡Hû°,Â<– žZw~ïZ†^ ~â¦sb·h)ô#8¥è?OĪeF™jÀQ•FkJ†Ú©†]ÓUL¢vzÑ ÊëåhìbÍ“\LkZ1'@ßiõ=öX‰üªÚ@¾Õ”6YÚÙJ…Öf«:ß²ëÁÌ›œõlÛ¢·J›‘E3‹³å°›3íXs>î\;b°‰åÇôƒäA,ÈѪÌȦ¥õ°‹ÝÙ>Z›Åî‰A¿E½ ú W+l“âh‰·7äÝ€8Ñ" î¤`ç•ÈÝšqym êmåLÚà Õ5Zò^“êúÄo'¼BÙ3ò=Íf}Ú„îäÝídçG®cÊVOoZ‹ ¼1¬þÑ{g w ;# i’ΪFD^ÁÚÛªk}l¼Æøâ­ÇX—ZE¾£Ia«D& Üu]ÊI½Â·Ù~¥íSFH›NLj&u]>NU>Jn,ãi3ÜßÄ9qꮫŒÖe:¯ÂèÛЫ $ë” -×Á&Ÿă‘ê›;Ì\ç[òˆâW°6`ÚéDòž<7‹Ú$Ï€0—Ù äÀ!–ö'•¡¬>tã³îß"`xwÍxqÜfKBpkz"Új­¾<¾VߦÕ–²y™·9™¬ÈœäèòYó\yîšz7ë`ÖN:?:똉¬æT[‡þ(]¦ul»¬‰zÕw‘59Xг†´ÑÊQÈ5‰´H)úH¯`uÀ^s€Mb¬•?ÏhuBˆÔš»±^áÏWº“m'…ÁPN} (È·jç¨2!îNzl(×(¬WõDó¥_tr°ÙµmØ·?¾ŇJú _°Ñ¨NyóH"f-æ-ª|$aê]ÖÙ«ùÁÆ›?o‹ùó¿YøþmÒùÑdÁ'xé‰q®Ø(ÍvV¿ÒV/GG•”³Ù¤zÉj)¦¸ ò ¬s1PȰa‘:mhh–[9,`,L±š¤ó]$ýU²À!î‹lc¬(kZ+¡¦”îË÷dåé·’3‹ÿ­™€ßàh…à3Þæ~N›á¥nnDÚ¢ÑÛx*âö4%~¦×Øô?–@­×ÍK·±ÂôN¯Åñ´Â^k:âžVy+AíÛÔ‘Y,2…Ö>’þjÈT24Yëí˜úž §½Ñ‹à‡‘iݹ)ºz®aœºR|þWsR|òçg8ÇÎmËNågŒÇl9=_ö”ŒS¨ìk3l·ynçÒ)Ækª$0F¾CžI†÷ómd„«V¥œë²&bõ±¦Ÿ@EI0ކ +­;©]ÜC‰Žj²òŸì•éjb{ü5D« >ÇU޼«u®h_îö?©ò…S¦Ä³ÜúH¤A{öMóƉùV9]Y뵘Qþix~ò¸;­Qì]}|²&‡¬1B¡n:Û[»ók®¾U0z^ÎÉÐ7†‹²Š2NôJ=æC¢ûD« >Ãäe“•Sͤü/¿ªògËžÎv¡´ÞEØalËÆ‰YÜæC°½eÇÞ?J£«,3V0¥Þr){Â0‡Û¼c#™…@†÷lÕgAÝÈ‚¨X2©…ŽàbÎ %nHt6ž¯#?³.âñyaH-ü>ÝÉ+ ¾´ó(“HòÇ Ï^üKU¾mÏt^ $ÊzÐ $5­æy¬¦%h›)`5BDr[ƒòÈEöG–^ú`Òmý†)&ƒ €zh!̸ËwV"ïZ!§Š,­lr¥´}V茹§\áäû%ö€T>K:ÿÉXeü¤óµq¹wûþ©ï÷wýÓ<“ƒw¤jïŸAüÞƒOä÷Fÿþÿ=Gò÷Á˜áŸŸžžîåÜ'y|ñ¸üƒ\^Ë¿ ˜ãŸîÖøT{“|Rÿ´pÕ'Á?Lqã>"nUq1DÀ4±„¶§Ñ_aÐÎÚ)’N'Í€*_®U@¯«ÝÐ`óÎ4 ©MQ°©õšÜ–zR³€ÄfTè‰ —ø[ã¶ëBd„?½“š?é|³¿£8äûw ÐRºÃñøKNZ‹tîä”û»û½—#O"àÏû'HZÝ‘\xâEž•f-ï¥Lå2ò†{ù4¹ì=.}£¾< ‰)nC,±WÌ  ‹]o¦út]¢ŠP¯ŸLº¾Ö9ô@üG…Z¨¶-UŠÒ˜k±vz«Ø|^FÄ\ˆ3Ê ÍJ~€Uuì”$:³óc8['• ~ŠU~k} äûB»ïDš"þ»;9¼G“ƒýÔÌE"Qy—A‰€ö;¸îŒ‰¼á s¿î ñ]žŸEâø„þŽ—À?0! w˜,"\ZgƒM ¨ç»·Ae†SèûÄs÷äû‰uB¾Ä…ÃÆÅï´Û…‹ñy­È„Ô‡íù; ïaðÈv-Æ.¨õ±xSƒº»?»6Õ Q˜ŸˆÏç‚Ïtþie·ü[íx€ŸÕj~ÙëÙ££¾´NÇö€¿Žž¿ñ8½ñ¸J¦Û1]iû·QìAD7Ÿ]äÙQê(â1"ß ÛÉ3zëaÉ0$R]€W°[lÙÈÖ£PíàÔÀ-j²‡##¯Éœf%þÄ[Ö±‘™î/K¬ÑêèÏëÜýºà3;ßÿ}?lÖëͳ|åµ`ܯ{9²>ÊÿÕñ¸—#ýzów9†óöû½œ·—G«ã~%ÇV{9&ïÛ¯pæ~CrÛx$×–Óåžïýûc»Æ r ~.ó©|mø7ĸM«Øâ<(imyg¼JZWÐ(¸ö] Ln4 õÑÆ x·¨PŒ)mÞìP´CçQ}¯U™È”Ã÷$BrèuçàƒÁœ´Ë­vr"D0ÒÉžõ*KÁç:¿Y«š‰dñ¥ù{µWýÄk"Zx‰: A)w<Àaülö¼Ã<¡ê‰¸Ðj 2ã²kÚ¯Žã áãÖœ;{>ñËû\ç™7†í·Ö¯ÁK AŠ…;JmbükõÈ€1ƒÎøÀÆ£y3 1YàG×-˜ŸUk£å¯>2ÓÚtZ)¤`µ0!¦}®òLåÂLð“Î=$µ¡Ê®Öüòòx³ê¡Ø&‘4Ã!rD¤kˆGtXŽsÜ qüS€‚ÆK4q¿çõ(Ú•Ç+GµX2\%~ö c½šì|û\+‡™×|Tjj ÑU4‘‚Œ]ì?wRæÏsõd] Ú©.HBrØ@g_5Ì,*Û/ÔÆ8XYûgGÚŽ8wRA+âô¬Pbj2f¦/Cˆ»ã†“FåˆKc¥ÝO:6-k3±$3Ä0¼’§jµ¬¦.´µò„·1¾+ëQ‹·vª,ÄÔÆµH«ÊTß©¶Vµâ’†ÞE•çˆßr"½TŸì|;ËI ~Òùz âR TƵ¹4{Úy¾´W…æë°%=VMø"x/0Sø{mö"Ç«6Š&hP³¿Ò·É¬u¨Žz=Î9Y”åPÚÃÚNQ¹%•â@S.Fä ês@Ü{pfmêŸ5eY¿ÆOM§´`ÊúÕÆ«•õdóðF·¡=:Úð éÂ[æ)•661ÿÖæßÎ ~òçe……¾‹’›‘ÀˆúäáÿßÞ×t·+ÛÊK7/Sk9ëy|ÜÔ+b0MS¢3Í)iÞ‰œžZ qûï?Ô®* @ɱNîuØGþDA”]( õ±÷¦‚§ÙÃJËW鲜’7¸¡ë¢b;ÞËüA·éækÙã‹ÎÉ×Iƒk°ÀÀ´õ9>¶‹œdF¥4ä  •›r½g¦•X›¯ö.—ÌzÄÈz ï^UîʬÃbrWΊ¹(`ö».S:1n+VÕv%Õmºõ(zÏÏO ~¨óôC‚ÒËÍ›\ØbÖQÒ]Ø#rZت®ÔžÃwìÕ-i Ã¤üófÎCèB!Éòǰ•‡Ä7X 6üÙrdiDÊIÑNQ©Ã•tA( ¥õ>ñגﺯ’vT]#6V¹Ý2ͶN*'¥€‰Ià¨g.”Z«¸µÆìâ1@¿•,à+Þ,ˆA.$Û1q"¯Ãœ1ïÞ…y.º¡ýCüº*\¿Íq›ç`÷…hççP½« ‹¤Á>õJŒöXl«ÅfW°HÑR´0ø$¹«F#Ê„"7°!ic6çø_?¹p5Ì«k®0£ oäØÚH~¾E•©T0mQ¸ºeü.nó®ë„Å-5fÔˆíæŠÑãâ›^±NwL}òQ»>9©Žå„–ݘÆKªÈ¹Ç»ïk¦‘HH¡ÏÁtªoX&ôCÛà“£É©(hY´Œà·CV¿5]—€ch\£ø¨¿ÒˆÂ7=Má¼añWláæôBœ© ® õ[ÅÚHž¸—Q¬¢·[.9… "=é>ã¬j¨¬1ãÞ@à9½š¼ª_Q&°§làv˼4 Ä$è¶b|!†ñҾĭ@wÒ"ÄQbÆêï)Ôz•ÚyøóÕ¦båc‰q8L¶<ÈD4¾áèZE— -©Qr­¬È²‡‚CJS±itR5œÆœ8i´˜pdCiá)mi¬A åJU¥;è~§øYÝ%/F>à2wxü[¼f܃¸—•hç¥&ÝP•_…ó"Î šd¥+A ä¹$g%à°¼àMÛ D°ë’pªâ~–η´ %åÍë\VÔh/(&Æá/²/âÌ4,¢+U’MoÙAiæ¼£¢ü΀ ‚w ,ØÌ9ïó7\h•„Ô7bŽpnìŠ 'r+ hËAÞ•éä°O`›y7»T$Í€U|d%F¿"ê%¦[¢âpMöÒÈ\˜¼b8©lÇ•²êè'ÔÜ3Âóô|;Ïþ¼ ^œ#ÆiÑ{râ±ÑjY*l¸a6ž«ƒ‚|Y#²4sLÌÖÕFŒü›ÚD—%ÓÐìxAßHfÄiç·€o¥™3#Ø0ß#ãÏtÌdΑ-icæ3ïÑH}È“~åÏÜiĺ\t ¢’”ŠzžMÆ‚¦þ´ºi¥Ä(Êõ¹b;š’ïóm–´›Av™ ÑÚJmÈ_§@ð\\¤ï$¼ÎïJáÌû+ÍÞ¶pO+ÙŒ!ŠÉËl<ßo´‡š#W]-á¯òÄp!þE†g„;Å4ôÎÀ‰0Í RW†±D/E±¸ÆŒ9‘_I.6ÊŸÈ —¯jª$îÀz»@¼%«œõeî:°-;æ £ÍU«ÌRW¹DGÙ=¸gõ.[¶ ­ˆÔXÒ!,Ê+É»J®Ž¬Ó†}r¨9 L´9å!¯GÜ–F™› .Ø&¶1sÙ³òÜà¢Aâ>OcÑ´:pk*ø­F–º³ad7¶ÜABønÒ+2ãòê^{)ÏܤÝ+ðÅ.¶(DèVÒ‘¶•X\-ɘnÛJ˜¡—–•-ó› ®r ÇSzýƒÿô,~_%‹PQ‚b.1ÇJ¶U0;IKz¯•hòØDÆ*8õbÀÙýá5£‚̶/­ÄÙ)›c%ËÜ·ÌWêÛÜï"ZÒ£þ%u3$}­›ZØz·Fçg\žÌÖ†~H½§bç븥ZDóC…µI.)jYAWÂSlèBáÛ O;©ðt\õçwéØÅbg¹xàtoŸË­Ã–‚ë8:¿•œÐ6ÁÁ£fÉ ù½bçßIýüWà¯Òš`©%p9]­^}¬?:ò7?2«T—’­XZqaá0‡†¹²ªc(/ŽÛ0FÎ…”5>Í«ÿó÷ÙK¼d¡›­°Y0ÇR¢ºRýÂ…G BÞJ³G͵w’ Ä9 $X j‚E7øÇ)Õ|d¸ÖW™°g%%ŒOF1èmËåÜҹ̂Œé„ø¼zRÏÐùï§ÖùÙ7‹ ´gT˜qbŠ „µt¸f&v ˆ15Fï=#õVÒ~ŒŠ²ÕFA%l¬…sO J˜}x¥È€[Í6*.}] ¾ cÕJùéx•0N¼É ŸT‹òÁW^*×Ô±–÷Ú¿‡ü¬b«n‡=#èÆì€ 4Vö†V\»ÄfLœI)‘×x?»K0yšìµZ¨™]Þ=<±û>9ÿÁ¼ùïÑyî¥h·)Y ÉŠ=q¯<·¨òÎ~%l_¨·‘*îÿsK+HE]P ƒä"7B­¸vd«%òº¥Å§:‰ûƒA[þgˆÿ¡vþÓ3pÌ´qOªÞSõ»TÔómÐýä @G~9CÉɱâÍ.6•×{[moqèèø6\?Ïy<á㕽 Ç@ZJê ì±eíTç%VI,vâÿ,àpÏÙ–A¹à™Ö5¯ßhúq+\e5 Ú¸?¡.ˆÐËØ‚ÃzE½Þ?¯ö!kÿC­Pø.g¬Ê€wܹÎzǽR=ÓÆfëÀ¶ *ZØk-1Ò‡5Ó(sQæV‘øj®Å_¡o  ‡’õu‚®¥K?¬cß`^ÊØæÞ?7PÚ íKh­§tþˆð"~\&”;§áÓm¯šO(èŽÙ‚¥÷›•=ólr¯væOGBÖy²óŒ- B'áŇ4¼Ÿ¹WÀ´Aö…«Å¹óµVâofX*óøöx¼ ÈÈÿÏÒùP’¬*/áãz²6ËÒ Ì_FyþôŠ2xå¾ ñm$>š 2Ëà«f¯ºgJ¯ú3™8žiîjƒÅ_‹Î¿cfZÅÛ’ZXÖ÷=sÔJW9eâoæÖJL¯µÄ`ƶ'"NÀ·lð-¾R‚ÇŸþ¶T9¹ ªxäúeݱʗ} †ÕhËÍÃ+ð&‹ú/Ù 0*¨dG1±ƒséŒÎ3“—`<»W0\ñŒÓxÊéGák&Ád”4½1#ºÃ;.0c§F‰L„C­ä‡õþÓ“'Žx¸$õ©¶ÜšgyŽÁO°:ªÄvw€AgØ·×f›;¥„.—üôexFâ÷Ÿ3É r¬=œéVý¯@ Fs@Á¸’Ê>–§rËH®p†ì¾Û2^+³/À{jåÏ] TþspÌF÷Ôù6”1~›øÚÀÑUSt¤Ð–i_·l ˜µ«Ó–ðZÙ‡$Ò%5ÛÌ•ÉYA€‹:/áŸí«(D»!êLh¸ìc9#$ô[\Y+ ™ ¤}B+ŸÒ^Üû§c÷Áp ±SŸå—oxF‚¥[(çßÀx*Ù=lÏ)TŽ¡‡¦W ¡RVa@IFŸaœJAZn™«‘x¤&“Wý+ $LzBÒz•2‚½D~V5³™×¼â &BÍà+Ò ŠZâ-Ã?ôí… ÇúútÜÜDÀh¹ŽŒòÃ*Ÿ‘C-@bZ7œé5./¤TˆE„Öüwî ä>øŽËV‘.â^I& aï^X@ØŸçjæœjo ‘ÖM¶“é+ÊHI)g‘d­»ÌÖ $Yvzm™Ùuh%iÿžA >©g椆f|ÀcüÃ[Ü“è¦{ß[žØP"9…“‹‡ýPDh:OË}ðZÕƒwö€áæõJ#µªÅʈÐÄýM !ÈQŒ˜à+·¯¢µ™v”y¿%ôDrS–)!€‰5*K¸å“+ö¹O3ÌîžQâç=ÃÎ+4ªzç®ðVÜÁÚC ©É’† @dœ õˆ¡È>‘âà¼m§ Ò qƒ~)„»Vœ0 Áõ0µó‰zA&Ûå+˜öˆÍ÷õ+ê…ïBFZyj.²DÁ>y0ÝÈJàAÿ8âó¾E)ÛrûL†—HZŽíüSu>±özëXúcÃã¾E–áȗ輓¢‚­P¤s¿”¶ªŽ Öd“ÐÌhVØ ÷€2‚5·R¶Ž:­LMàñ 5J>$µ]áŠâb›šñZ…*¹æ>)yøºí“×Óã6‚8ÿϤÇ%¦d&ê5ÊYÞæZ7¾y)84é:(/ `P\Ât ZéDÁ.ìå±qÙnNˆ‚¥;ùI/Á žsRªóKÂñxEí¯QƯ@Ùu>º8Tðà=*{¶‰H Î|× øª–öðZQ£Œê¾ëŸÅäõ†ú­¹÷=óÕ5ƒ T~ï6k4hø¥]%÷ôý¯ö_ë]³®èÅù~Óà$ó6¾FovéŒsúZWéCôÖèçÅ!ñãµL Ò1g‘å²1X¦Nµ.sQ•À(èK΀“ÎSòjûØÎo?Ưd; ­ØƒbûBf›à”T*¸f¶]¾åuHÛŸ·™Íôu9»œÝÇ߇ËK<;ÌâƒûË=Œ?³Ã}¼‹·Ù}|õ_¡ñ(ýšÍîy0,ŽÂ9g3¼íp˜Éñô’ψO¤×p*|ËÇÄ#ô§Ìølñ EMdÔZ ý;FÆÍ{”œËØJ¹©P &¬Ÿ?•É‹1Zß÷Y¡š˜˜™¾±ÓŒ ù.ÈŽŸË–Ù¤Kê„_)÷T<î—­î¨ùqé·T݈±‘±ÿkÉEã™ -Ñξí2½ÒQ«Î‹oóŽx ›u9%×};FžÐA£mÿÈøóD˜‰Ú¦-C ;fä³z«C<³´cô]ךZýô„Ô¯ y‰¤¶Œ,„LÚõ@w±e@÷é(©‹.åa©ÞFXJg‚ $¥¸Yœo)#ˆ:}tï |`@‰³ÙZåÄdÒR³Ãõ¶îAœøå$/Kr‹]}'ð”uB˜Y:ÞÇ®>UÊœVÂÞ¸ÆL˜¼¶Œœ€@œÓŽ;…V¤Ti½—j'4ðÈÆUz¹†³FLžÒ¹t}¤®Ì'x•¿„γfèU$ï¸-4›©[ñóVB^ Æ/Ø$·U>)Öùðá2¤îà®pLøo:pÊœD†l’D­‰¦ µy)FÛömB„ nd:ÃØÃÌoÆ„Ó ä–¼äI² Q¶BRo§,¥è–å2p`2U#g:êÊ(.|½ÒfÃ-ú¶ ­¸Òʃš™LÐN1<©h½Î3óˆÔ²:Ù "AÄ}”R†×IµW^òà '˜N¼•x·ä 4 Ô3‘ûq¸ý’ Âk¡VFtb+àÛà‰tÌ·\¨¼dÀëžü,©h}R]å/ãÛ¸ðÿ¾«Î3`KéÖYþø¿0~Âïæ1¶}c±6Ê<òÝu&^Ø.~pËéJx•#Ñyÿ`Tói‘SõçN1—â/È«ÌQœ‡‹¥¼b¸[VkñçO´OV oišž=øE|¦FVB*7Þl—ªø¡…úÕ4ÃC7Žnéµb¤ Á›ª ­«ü:;?à‡ñîˆ/& ’è9kŸB¦áƒãŸlÐüðb ƒÞûù6ÞV@åkÜ,mÉæ‹¹Ï*Ÿé;5†í hgDÞ\í•^zÜë¤ËŸ©CQ®2"ßÆÚŒ“Zj4<ÔÞRyæiKœbp¼\M $òàŠ·ø$øœÜd#$ïo£øø¡¨˜ ÎÛd¹I¸‡¬€ƒ|»Í²ùAÌ ÒïÆL¹†Í$7M9#u"÷#‰Û´ÖÐz›4×qJ½™ùg²Zû$/^PS¶^ó;$÷),—š<Μ™¢¢Á^á)=#¿ˆoㇼïe¥ˆås³éàTãÌ‚­ô C'´,HÉÄâɤæ™û*³H|QÜÆ—u†áˆ(¬`÷14À!SI*Š2“8[”v–µ¬¨'2öNoŸF²Â5±Ãú“Â8œÆ²~V[cŠä¼·*¯‹B©ò¶P¥Èçó®Á• ¬øKĬ W;ª¹ ¥Îg«’µÄ;8[òã;˜u9QkÛÕº¬Êôg![%µóãŠÏk´Þ$yƒ©\ŹSÔ×f,ÊÉ +ŸR㟻´ZgŠš²”ÎX'-]ù8’èAÁ45ˆ¾ ÉöJºÙã}nð'¬Q¶¢Ó´½äy¶¼?^=z³¦ÚN òmƤóÁ´Y7З†~(ç\NuW 4kÀC;³ÄqcŽòLÞ}Z¶=ïýi¶‹_Qç}b2 ®Ãâ×Ê;¥_êNUËz,d]`ÊÚ`MüR8 vZÞl’©ÿèÆáU†Rç‹Bñ’iÜ*!I<×'†»é›Ò*|B Ùø›eÕ¶UXÛÎÒ~vNgÎ}ºI܆¹5'D^KÿQ6ç~“»I)1_°½Ÿ.–=bÊ.ÔìÓgZÊ$ðîˆ4´ˆ=p]åhVXº'öâ¸ä ä4ÙÚGZ(aÈ\©wÆ›¡§¶UîîÁ¤3f»¼‹²nN@^qï܈ªû¢ÄÐ y/&>…&SÛåYJ$<¬ò~ȦíMh8hl¸(BvB­wäý€ ŽêçÇRÝGÿháãï kÿ„f`ï_Oˆ8Û»ÛédR*¡;îuæ^ôùáõp4QwÎ"Ä54çþÉ8fßu;'˜ã3ÌÙ9?”õ3#³æUnÐ|µþõb­Í$^D ÏÖÆMâ³Åd `ȼyŠíS¥®æü$'ÕØz_äZåÚ¸³³swÌTùÓ¢QÖIÜçú0Þ’?ñþ»t>0Â4Z—ETtµ>>ÐÅó,ħ‹×‰o9”ÖXí½ôF<Сå ’~øª·´¡aHÛêZÄì<É÷¢>c•?3’?——~”ÎC Ñ̃#w·S¬°f!е Îi²ÔãÆç2Ò\D˜ÉpÿÓ6æÚ€óÑ~Í“æ>‘ý;og q˜@À4Ñæm™DñÇñ›ŒÐ9¨M&Iõ Ï™s¹LÀ”úe Ÿf_þÎ)CpÑ…ï>‡ñÁ°;–r¼û‰9)(úI’§Iˆfî΢¤'ç3<áÉ9ÿ¾ vªOóPèü”Lýeeœ+…i¬wŠºQ3˜¼O )ðfkV`oœRùŸéUBò“™êü9­¦ÜÅ57¾ŠËÓò׬½ñç£>*:Ùùø_’¼=VØ[ÒùÛ¤ó!˜üwàê?h¬>Õ²ÎzSѦœ×óÃ.áx´2×'ÂmTýD¯òLX’Îu½AÏèB˜‰ä£¡Áï`ç=™ò]&“ìü4Nû6ÓI`߆¾Õ2x“ åÀ­Îû< <[~˜T·5(ŸÜXªûŒ±p§ªà““í]‰Ç6Ìv¤»†'»|ýxVÙ¢ Ò×’4;›)’¿qÜÇ0žXe‘ÇS®[?Èg»Â›·ÉŽaE’Ú*¯{€äCš„¯·…•š"±5€C=ð#ªúPöÃðm–‘Ù> òy©å¼+AïleŸ/ðØ$Ÿø"7˜tãÊI¹º½Ù·m{s³ft¾§ïø„¾vëøl·#ÈÂ.a:ÐÇ'øÚžIPµí~}³¿¡§×ô ^Þïè »b™ÄÓ«¤ÁiéɾЇ‚ß¿ eü½Àf\Ää}QNаã«(Žj¿†pé»ZCŒôµ&x—xk÷7òzœ%‰÷×ëëëk’ëzGãâ´7×=Fõëëø¦&~AÔkz/}JœŽ}߯q<¦ëv^ŽÓHÓ‡)¾60´â a_Ì–KW ìk*vf6›+>#¦aC×ÌfÃ.+1ÝnD€ï‰8rƒ¶–/¥¾ÍÊ.…ƒ]¿ýtºRã,Uj”+,{•lÎèþEè<'3j\ï ÖVØ^²Þm“mD4ÄÆÜ_ ‘< ¢à–æ å03 ox n°Q%Ê`f.gE‡ ßc$¬6½dh®„ùÇuò;ÛyI‰|æû÷_Ã_‹ÛL~D5ðÑy°-b¿Ä®ã†#ÄØ±"ÖÒ}%±àVwXVù–i´É¨´Õ•îʼn>ΡŲ0°f_qèŒW׊ãqT ™Ï¡úØÜˆÎëŒþü*Hoà_ŒLÎ_„ä%ƒúç†=‘†…$E±"ÂÃ&Æke‹V“bé|¹ð‚Š0}%œM}ÃauÂÍyÇìÒ)ÅÈ€>tŽà|›ÀþÝàK˜tÊوק<¬t+;õ,²[Ä}lQBA üClþ´ñÊðºw×;cïeÈOÜIiÊåŠÖÓÉ™T- éË`?bëxYÑ“V`7˜”‚9a 9_‚~ý!yðµ»0l¡ôvÒÀ;àÏÿT¬Ô1p«±âKP^q¢U “s¾?ûXI»’ì b¹1ÛÏŠ?µÄo»Î†ÈóEGøbÞœ×;7Dvù¹Ü:ZÇ€$"ÃNœ'ÉKÕÂYúý#tÞ€¤ÛŸêŽh|fÌnŠCILbñ¶PùÁÖ"÷Çåyýä~:âÄÙ,I^*w¬ä¹ŠðGàÛøb¥Õù“*ïÚXþP(Xœ!rΪwCÒí’c¾hâçq?ù_ëÎÔ¼°ä'3-ÉOxØ_÷m¾M–Åà õ~@å]ìLox(ÀÌÝ`JJ4ûc¿¿èÄ/ I·ÎÏÊI¥:† *&\µ@<±ŸqeÃ_]aßPKàžšÒv ßµ7UÓ2Yø¿èW¿7ýf'Çè{ÓÞ´U¿Y7»v~3çƒU_Åwʦ%oàSUÍnƒ“ôôæu|@#z¡DŸ‡Ó¡–ª6™úœÇ¯ñ¦ø¶]³F£áÍ>>IÄlzñÙ=‡ç/…lœøÂ‰,üòÌâtœÄåb ¿¿¼¼©øLˆÈ/ïùLPóx<¡C3°ƒþ\8Éò>~*Ÿè½çC—ÄyNLéñ¯:÷í˜z¡ÛX^”M+}YÃÊü©¢7ÉRïü=Þž?œ8ÙÑæK÷#Aœ >Çŵè ò?gc˜&¸`Ø}.°Qˆ"é–˜s m iÄ4Q §d…#Cœx ܉¾ž« ÇÑ„ðmXÝñ Nœdî †!°˜±tê„^fP„ QŸ…B YZ©ìJ(XÖ2äèxب 欌WVXïˆC3Ç\ftð2È¢}ZXí´9*•Û«àÍ92ÿN(—è:ÿq4µ6ªkøf‚aé°ùÄtZåм͙B"&£ÝÒùÑÔè5ïKøÏRÜ*‘`H3íÖÞ?"ñŒMl4èç&vÁ¼8ƒ,Ž»/äp¯/¨(‚·8ý™“ÎlÎRB øð0À3¼Š¨}ŽcC>®„ŠNKÂXpÌR,eÈYZ‘ÒÄcŠ Ú7U>‡…üQÔ¬¥,TÞ& øª v_p¾‰%T±%Ë'÷…Ö†SÈc¥Ê‡‚8͆ÐJ•÷'U>¤Ï š–¡žiìÿ5h†î¸`/JD,–ülÈíh‰ÚÊê¶ÁóSä2qïǵ“ …Y0À%bï‚?3 t¾`>Ê’ fô=hú5”¤wG*ŸR»ã©î+9xÍzkfÁŸ¢ãJNzéÔ«ÿo3о”ë)–“̵Y¨NÖ§ÑXç/¾¤ .B·¾G|÷žc¹ñ© ‹ó¸{y9>ç€î}|~Oo>¨ î鯧»¿¿Oc ÇŸ‚À‚ú{Œ£AŽ Ó{ï/ïÓí’NüXzFH£Ÿ0ôªÝá ƒ×ªèO¼•ÊØ79©±T÷ù·OÒ·ªó³Ç/[åßš=~âu§ËôþŠ5ëü8pÌâÿóö»á—såÓµþó³‹2Ž·÷îÏMÍN†'ƒÉ¯ûõobÖíüûӥȡE]åHzYçÏ‘ªüt§kâA"úE´=¿‰´}¹Ö•ó£mÒwöÝqT¿ ̸æ/rð>—¤·áÃw''~i;qªÒËÔ¸ªóápñ`ø]=ÃúFIufÄíM­ý|BçÃY­5#NŒÆ·y{áŽmM&Ä…qØ1ñ«ZKu움^±ÖBƒK}6m#{%¹¿ð^·jE­ÍŽëçÛÑp"_5]ÞÚUÿöªŒ‰èk‰qÈmê×­@žó kaë]®Ñ–ãýJœxؼÎ4ÛãÒߌ)VI¾ßE)w—ø(”::¸^£¼bm‚‰'œyy÷²ÒÂÌU­6ë¢I’ö³LÈÛ‹0ˆÏÅ›ø¾V¼Êqø6aàÛk&ÊLCÈÇVƒ•lm‚ct±éí Ð•äS¯õ o©üd’ÝÌÔ”/¦NcïŒbÜëø3U\›"A¾M‘Îóu.?Ä'5u‹àEÇÀ^-óA™Ãoé÷táƒ:aòç»;ž±&cBÌx¶\’oSvWVNx«ë| )y±‹’10\£Þf<Èÿþ"ç=@8 ¢L³\E;WQC<4s ‡…ª¾Þ[ʽðƒf„øÍlxíJ]) )ñ¬ó·ƒ\fÞÑ ÿ{õm` ˆv1½%¹ØUv¶ ‹=À5ñzrÁÉk7¹ª|Þµ:’Û‚‚¨™Ø*=À8,û²þÖü?‹xÒ…#.æ&ÝŒÚ_‚’ÇbºXhÜPýyÒ5ôÚ4ê¼òdšÄ:O_ðmðg˜ŒÐõ—é Eç?Ëô¾½P»;0,ÁÙͧ+ïn< /¼‡UCMÿç-I¾,Øk°~¦¾Øy²7$¤IÐ²× ²w9$¦SO<œ,ùÛI¼ºhtžœuñmãØ)l=Æ‚«3¤pôZê*¯GQõá]ZÛHZ¤p$»ƒ‰¿ZÝý¤ƒ–|›×.š¥E\‰(h‘Í»k1Ñy¹^¦dC`|⬱Î{ÙÃ:'6†Råú4ðØipÓì:µÜ¡6–î{¬mBÕAá¢Z’[gëiÍO.d7tKÏEç' Õt‰§G}qø6·ÊÆ9¥¥›|¡@ï€]‹K÷á¦Óù÷bçi–›iN£ì23ïÿ°Ïþþmø7 ’ŠÇý}èuÃ?Ó…¾öëhåI´Ñšdò¯å.yDç™6AôXVg8qé^éG_(Í]ÜHø©Ç‚CÎ4ïØ·ñ£al|{aø¶£Äã?Es[¬ïµUU|›h¾!¤…Ø7ÉÞå^µ:O—-•:O¶i² Pèkœq×É”Éü{õm¦˜4úk:?"”•äÛØà\_°2¥zovR^ö—4fAö+lÞí×­65à!/’Yܧñú°¾M<Ïµê¼ØyXš–Iˆ Vä\ÂÀ:ïúýxâóä­iLeB:ï¶“òF£c3ÃÆLoi‹:U{Únö{µ<3¡Æ™ÀÜL°E ôŒ¼ô)üøöƒZ© Ñ 4G“éÀŸW;÷åËHüù·Þí d´à:$k£¥4©øcP}C+¬ÑùTµVVkyÔÞú6ee¶EI•ø6ñ‚…Îs”8Ç´¼+K±j®³µ&/ŽªoÞ­ufE½“ÖCå˜1-šTbr~ÆBb =ÍÌÈw¢óŸ¾†p;×€€/‘rQL<´SæéÙ…-,3¥}ytÖùÙ°Æ/¥¼ÄŸ—u¾èV7é,Øù¸Â†1è|à'8 ´/=Za,–iò¹¹ã¨?ܽ»VaÊž·`Š2•r]ö°÷tÛ´(¿Ö>+|ÄMç܈âó%´)Rkæ¹?þZ/„Ù…¡ · ÇZ¿íÝ×Þè|±„Yá8nSäFü°ÄÁ…5ºïǃúöBKuÓRx„K³Sy¨Îß9‹‰cK«äi8xÛYLWH²ç´‡uÉŸ/Y–m©¸ÖŒ§êÃÖA’]†pbñá¾QPÚùpDÈN±ÊkãÛ A#òÎo£=¬—=ì¶(E ©Þêãxß^„()&¾ÎõÍÃú¢› `§^î´Df6°ò¦ÕJÕù惜yØìÉØ®À  óŸÂˆâó*Î ›:Qؾ’tÞ(eùáÝŸkëÏçRú²sG>æÚ䤊*Ÿ¢]K°>vþ@øÿ5ßæ ï£ÿ0ÇÃ3z««h¡óìj ÔQ|^øa€“S‡óDÀŸ×J§A…w0 vw®èùTOÿ£{Ø7k&G§_kF?Ù¯+B5¡¬¯×ªã³7à^;HÂÁ½~½ãh×ߨFÖÄêN¼î×}<³±ñ7¾™ý7Ý<¿a˜ùS@Þ¶{Œ»nÁ ¿Þ»2K”hg¿°ÿ³¯ïÖ}®õø¯;Þ®¯ üF‹¡oÖk±¯×óëI–¸ìe(q´ïãom˜šµ_ÖÕuÝ{ ÑáÁd_nLEæ µ#Ñ».zÃÀŽõ<‡ÂòÛÀ”e(ûbV¾¼@†Èá>Bð¶»OO!BEÿ¼üÿuk“[:¾€åO ’{«‹á´v0«D‰¥0Py¼ „"zæ–Ô:$z‹Uòï•¥48ãuHˆÒ€5×oB ììl¨¼‰‚ݦÉ:G){²×™þ„ÓñùRô~óõÒî¥O* ÚÆ†·;ÇN_iʃ±Ûá’b8¦±(?æÎ=¨òå_£K¶¼ô>œÄŸ/D_8»/ð^zFœç.13ìp=Üy ÖlëëÙ(„“òÖ6Li¯¹ÎØ(„\s5Ø>ä+à¡ø¼}Ç{y÷RWYŽw'|ç Læêa˜å*w­áÄ:âOº@Ñ9˜³?Ÿ7¢7H:/R饮’-hç-†YHC&‰dM¿b˜ QfоK\#ƒ=‚?¥ò¡\ŠEƒ}›¥ Š;‹¾Ø ¿¼û¤óÞb©§¶f£`w†Ò(©¼=óñj0PùpÚµ²‡¿‘“J¢Ï«Ñ­êeÜÓNê Çã ¤ˆ|»_S }½[_Ó³›½Ýé@¿Ó¯õžƒ“x¦¡ý›=…òop’<Âã5Å×qÒÞ~Q ”ãüüE¿®¯w&- _¢GVþ•‡UÑû—+u'ÖæW¼}«ö@Dï^®¥¡ÿ NDòà“?Ÿ­º‚3ç#áh›[(¾åíþÄæøÄГ›èâù7ëmXôv5{¡:¯Øv“?’gxìƒ úöÁ—”»ëôKƒOzðúýmüyˆþ¸Ìç%Ýë¬ë«®»«ãý‡®ûúÏ?,ñüÃêkͯ×õ²î:º—ãñFÏãxï¶ñõÐýsÕÇñ>ŽïãË!§{zÞÖtüê8OÛÇãNžËñZïqœß÷¡]~MãpžoV:‘è¡_Ð=Çmâ:·mù¶î?×-žë¡~Û§×{ü⛾CÌc~ÒÛÛ6 éÇõ3†Ãíyåè—:=ZÝ7LrÙ°Çÿþ=ì|k·ûJ±ÆÉøž›=ø]qƒOx´ºþK†©;0) á]^ž¸¿PT@ô'÷Ûu‡o“ûÏq0ããÃ(ùÝõ~¾ëx³ÿìâƒ}¼ÉsÜÇ»›x·»‘q7y<ïãÝr÷z³ÿ²³÷ûÁóoÞËùv彎{Tç©€çIy¹•†CO® ⓇóøÃQ6ðK¾}úò9Äß×_Ê›ø?ƒçæözðå §ï͉¯ž~ºvÃqŸµ6Î=MòRÝóÓDùc†O~ÝÛ£Ö&< Ð-W¬ÂwO%ŒÃ»Üð„Û: ŸeFfã¼¹cØžÓ_ËT³2{ÒðÔ½û¤T¯6¸;éá°yرJ^ Šýª?kùð¤áäöö'ˆ¾ÐùAv´:lkû·­ ã†Íž8\;8žêõû•Õù¿‡µ ¹µ9×» òô«þ nâL‡›â—£ç¤óœ8i”6•[Š"Þ³¶$hÛ<œžŽÛÎ§Öæa`ÛñïVZêpÈÃm"§|¾Tåp(  Jžé0:_ðKŒX熱 ¾ì7%YÕÚHéöm¼­Úwƒ*~þý èø3gkàJàþôAÔàÎý¬äTµÎ£µù”Òu¶Ë­†Sfix(ª‹çq¸ˆð`I‰¬ÒÛB®Ý*£žXÞ ?j;’0éà‚â²Óx? &#ÿçJé g:œÀw& B 3~É%ÕŸ5¦ ¨“©©•Òg‚ƒŒo>k™î,U-NYåGìÛ($¡¨4ݺeZîNkÚ:œ ð<áöLƒé–KäC²óŒt8‰3Š¢t<¼ågû.5ö¥à)«üˆu^à¹4ÝKp$SÒùi®X£ÒϪÕ3¾˜ppá¦Æ’‹ïBÃ¥SO&„â–ëY4¼`KÕNðo©êmô:¯°=j¦MšºE®XSWh<΀:aH#W6,S‘4;+ BõGu¼aÁVNt>À·Q€TvmÆëÛxÞ”ª]Œ sjé’ÈÎg8H¿u‹8§a‘€ÅxYàË@APƒE=¯)ÁÇ{zvËó¹^i-Ò,y%¯”·Ìœ‘´mJ[ý-|§Z¡hîÌvÞ£ŒCýyW4©Xn²Ô¹[¯4Ä?³wÅH“Øu>¥m‹ÁØ}›¢í%òñé?©é‘Ò{º‡õƒÎ¬*Ÿ½SfO¦Dô%•‘Ä~ΰþCO2³RcÏI‰š{îÊåõª¶‡ ÓÕ;ÐùÔ¸ºü#ÇmÜlo˜‡ua·Íá|‹Aæþ6¾M‰Mh:ü}/v¾›]X@—¢ü¯ãP½Ò©8ø‚À;ØtK* ߯Җ·h©öã÷m¤t¯À÷ÉèPÕÇJÁß¶ÛÎà.Û.FÚtŒ†œÌ¥}§éÁŒÐìݸ­Mòm‚"è?èVò=àÇlçï\i,ÔN¼f–ŸS8¿Y å[’ÎëÄJˆ¤Ñû6Û7#…öeÑ 9œ/—´`2^ù󞈄“ƒ0TR¿Õ!³”Üÿ |Õô;£—y™ %î@ÇQâŒIu¢'÷Î…e§š=ËPIliµþ¬ø`‹þþ¾M6@«Ùñ¼òPâ”ɨ%E z^Jÿ\)ö¡œ¢/ÍïÍ}iV€ÔúÑû6©= öHi=|·ô0‰ÛœB¢ »mÙ©g:³ 0¾@ÔË-ó×+13õRc¯1+¢Ä¥×gœGï¾vúúáÂlAm{¯©Ý \õa1¡¤hñ% EŸ>é ËÅ]}-±7QbïKΤª]Ôy…Θ%ˆn‰ÅpäŠVl¼ •¦ Ê \5+-O›Ù½ÂØí¼'8Ù=0d¯™¿ûªß÷;$¯û>A•ÌÞ_¶YWëݺ"Ôe)èBËHÁð‡î±fÛkϼžã ôöø!9h :®wŠçÜ~ioFîÛ¼Ù­£h!:`h™@”Û½€/·ûýgUÚÛ]³&¼Þ~·&Ðäù~]Ñ7›+ünÖMJ¬ø¼mœªk@(¯|7ô8{u³oW©®’q›ø¿GîÛ¬"¾SÁ÷• -G} I»¿nÛTíû†€“Y† ¾ÞõQí)³(øÕ„ÏÌSù%¹¡ë¨m¿¬!|ÀžÐÛéT[µn_ˆ|-g·çÀû³•Ùa¼3°ÿŒ²t÷²¬=Vb¨1Ý$ù3Ǿ‡Õê÷’fc›)âȆv)ão†£5Úy /˜Q”³G_âàŽ›‘ûó60iÜúÕ62DtsCî1W2Ùd˜Ô\¥oð±Âð”ÎBtþß·ÚKý«ß.ãÏá Oî/õè%!Qœ~á—<P3ÜÓ›ñ0ÜÿžÑ%øÌúKnåǤ'ÿV¼ßþ~·ÿlÀ?´endstream endobj 479 0 obj << /Length 40 /Filter /FlateDecode >> stream xÚc``øÿÿÿ*ÏÐUÛV…憮š´*Ô3ôÿíÿ £`Œ§ endstream endobj 475 0 obj << /D [477 0 R /XYZ 110.854 636.116 null] >> endobj 476 0 obj << /Font << /F37 124 0 R /F54 188 0 R >> /XObject << /Im31 468 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 485 0 obj << /Length 1328 /Filter /FlateDecode >> stream xÚWKoã6¾ûWèHÇ(‘í)m’EÚÅ›ØC·ŦmaeÑ+ÉMüïw(’Š„(qàƒ‡äpføÍS4"ð£¥K‘FÏ0¥Y´Ú/hä~?¢@ý½øc¹¸¼å9°c%D´Üôח둈JA7Ÿoþ\Þ}ù'Lt{÷ùæÁ‘W_®q}w,1•èŸû;{JYª(JUüßò¯ÅÍ4;£¸”X¤è7Ì Œ Ï V2"Ã2c–ÿmS—;m5]ÞÂ{_NÃDPϲiͳcšˆà s&®°ÿFšð5Ô‹VW7òù$gÓ$¿°)ÁÐÓ®\휖‚voV2u¨óGFGþpëÕ±itÝõ^Ìr†èµ;|<¹ÿá6Ä\ 0Ô„4EßbIPTÔŽøyÔ—ÖíÊÖmþ3õkÁ¯ÁáBAÏ O^YˆçâÖsͧ/A+³ßÛëâtó^¨AcÄŒŠsÞ— ïUðf*(ÔÛ{½×ûG@ l¥>ð5g„ÈW‘c.ƒ3rrÈšüƒõW±üýVÙ“}0H›Öò64"Ž9Ï&nZµéñ¨+So}L˜<Ú˘ T>ß–•~èM¸.‹ÊlÝapÄ£@WnÏz¾¯^@ï˶+~ØÚ¤ƒØ¾þ€¢ƒ6‡ª÷Ø=6o?\àŒ#œ¹v`×îž0î`ej×4mm´çÞù뵩W™ÀÈ´Y”!ÅŸ¾7ßÌe.ë×¾ºÍ¥ B5?÷u`8ãg©áÙмû¡Ø£ŸðÜ<%Rõ> endobj 481 0 obj << /Type /XObject /Subtype /Image /Width 472 /Height 346 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 486 0 R] /Length 3585 /Filter /FlateDecode >> stream xÚí±rÜ8†ûÎ*»ê”ÌÕ•—`ËU®}‚“r¨ÎÜÄ ˜‰ƒËÖ©/Ø­{g+:r¢Dà@/ ª­}ƒM/¹# r8Cl Œ9qä~ƒfwÿ†“çm×Q½Ëßíúmd­t•Xk¬Wu»¾Š¬@’õz9F±ÆëÃ-oN¬‰uZP?ۻ߼O è>µZVPT>‚úa4¬¨dUÄðÍ ¨±§ÖÍ Ê+ áÍÕ¢K%ë|¤žòÌú#f xõa8æ­v\ͪvúeÅ_ÿî76½ÀsÔ}›µêcýT ¬o„× y¯O×ú¡~Ê;+VŒ~Yß‚ìHé¯PÒ)VŸÁi¾Ø$(Ú¬ ycdí&Ý¿0Khš3ç`‚i¥ ³¤œT'ÖhXãƒ1Fc*ÖwWÛh¢Åxøùš÷¿Ú•Ñ·Ojl-±&ÖÄzÐ6Äz—XkbÝ6kŽ-K¬A³þÉ­þK«x ŠêFÅZÙ«Ž°ßœÃ«¸²þ§—a:«xÚ+  ÕüâÄêä€ŸŽ²:E§ýíëׯ?K{0¹7=²b¿ ߃Ã#u`-ð¤´Vˆ•ñ¬Ú ¯â…ox44¬ê÷‚\í±|ZV€†5#ñaeJý@âÒØcõ*~ú] (YeŸ–-VÛW9Ê*¨üçâÃÚ]¿–å«í«cÅX_Y,ÝY‹Œ$›¬Ù!k1»4;Ö­ƒ><-6ýõóçÏ?7ù}XÇ&ŒÊʇibS[V,“s:u“è:•s°«3ÉJ•skfÇ|=|‚ìXQG²J]2«¥¯›Õ26­Ó‡u.¶Àªò«]-1QÆÉ¶#aíØU76¬ÿüŸc3í[ÃJg¾v=¶?ªc«-°Ú;Ū‡”,Yÿ{ëÔα’ÙK¬“|xÚ±á›KÈjØ[ë~øçggâ~¿8ë~;¬{ZÖ³C¤}(>Lݯgû}õîUïà~¶?»ÝCµÝžáÖ‹—vŒUú— «R¬æín¤úÅžb} e›Ô$Q‹u/ºïLn{ìQ±©öè箦±¨ßN³V/<šÕ´kßùzد·£YÎ×)šµ8¬›ÎY›ö‚c-²b(B¾…f‡mko–¬2Åà Κ¶q8pV*{kðaR“Xë0뎋®±’ٓ탛µ]/ë¹û±ÕÕ§ÉJfoë·’vÌô¢•ΞbuÓtÔ¬sŒ…'ÖÄšXWÍÚ3^DÊ =KKbe훈Œ”µPó9eQèe&5k³¨PÝbî××…drÙD™Eîà «|<†õßÎí×ò“®_ Öçö­c路úuìùú‹ó…Ûv•±<_m7ë=™½q¸hos±^³^ ±Ö˧]lúRÙf¼ºãnǶ»?`ЦØ;U7A‚Õ2çtX™å±Ýì>vYùó3sf5ìÑ×Ã5kîÆ*ïLÖWÏÏOò/¸½ŸöúYÇ­ìW¬ú—sãí¼,;¬\Î9²ö¼²2ÜrÎ8}l;Ñ“mÖgÑžY {|¸z›jVôa>ғűÝTf>vYŸð½g–§ë=ç+ú°5+šì°¾Âžuc5ìye­²…-+éö²>å.¬¦=Ϭܖ­Ü·YŸô ËíóµiÏ+«ŒMÌ‚õ­|$cmÙS¬ŽÅõQVŒO˜p˜«|Û¬Ò…™«iO±>бNª‡Õ ̱ü:ÍýÜÕ$Vå_wTµË^`¬ê¥ÎÉ;:'Öfކµe/0Ö9úBÀº#Í™‰U„t[©ãŸõK.*}‘uÄ‚®œ&²¾ru󱊑çuõ?•?k½+—¬\ØØRâ+h¥#Åpå-•bíÚ‹±ªÂPO0>ù|­•ŠáúV¹„ÅÊ«.ž”ψ TUÜ ³rÍŠ~GÁjÖÿëÉÚqfV2~ÒNÜí×¥cSu(+Elzõ*pVÂ8ÜaŸ„>¼|lÑ’4¿¢‚~çDΑ·‰9GL/gÓ;îÓÛVÒº©É¯¤õ0^—bëšjÿBsuYË(Y+q]1½\àïª_!S›ZH1'k«^R·éõ0à†·6kwżýúý QÔþ›D?š§wº“ϳ³(È—âî‘„cS!·:$§ZH1¯¼¼|Ùbe¬Å«Zsœ•û`ýóååë–»²6CPE‹5ËaÍeŽ•ýZýt÷aD½0òkÑ©Paù06ÍÏú»h¿!룸¹³âR"£n*DÎi³¶rÎqV4…ª7;Ï<ìÃ?¼ÆŽ})XqcÓY§ÖÃõ WY‘ˆõ÷ê„½ÄøDÆ:p1c¦r¶Š±\Uè4>ü²¾þ^³æË³Ê%LͿұþvIÎ:݇s¬üñµÁб)€óÕóGéÂ/›œ3µÐõ Alb”>Üä׉õ°Áª;Ÿ¯ tΡd¥«ýÏëe¶Eÿâþ¥çé5ÝE›5S¥ÄpDŽ@«Ë1îßu³Šôšéò?°¹fcÜpxµˆE¿Šª74®§aŸ0±fõ€L8¬Í4옑X[ÖÂ¥–8hŒˆÕ˜†•vqq'_,6}顤b5¦a•# «kΙ@-xtg\«Iþ\Nr0µˆØC¿òåYëz8ÇÕÍÒÏ"e­'H¥÷2/>,ãp¬"Xb²÷ÆZI y¾Ÿ‚­_Õšo¬¹ý`8Ë`Í+÷_YËeÄ&N›B[{iæŽì,ZÖ Ö…‡ÌªÝ$Öî2â¥b+gm/#ŽšÕXFÌòZ¬ÇÉj.#Æ ƒü¢µ„»V`5jÉŠÉ;Væ‹U¯Qæ›a+ÙJµº+—ëL—í×)ZÝ–•-îÃ=Z} ¯k-^Y`Zsæ…µ¯Œ… _ ­Îs Í¯hº)Z}eµÿ$­¾6Ö)Z=iº¤_ æéÖ£_ãfµûl<úKᓹvݬÁžþˆÙL¬½Õ#eUÙ›‡ÄÊNjص²æÛ`ÅzI~–Q,K„Ñ‚}}¬XçÆççG vûØ´8k=àUKö‘“°v㈇ê–“²¨_õ 9kpšNF.+’ÕˆMêzd±)8Mgä Á£{Ò¯ýúu¬ÍúáèYõÃÒ¯Íè´ãU'»þ•~Õ¡žõ/Ö‹†57/ƒ£j~z ÑŠµºÉÊqþNÛ[±V7Yó¾Ze.Öy´ºÁÊaG«·.1w46yfG«×«€éóµ/çøf=®ÕaðšaÔúu&ÖC­>4¹¾¾kò×êC“ë«d G«Ï›×ê3ær­nÆZë\ú5rÖ–~œÕÔ¯¬9M¢díׯѳ¶µkü¬pj|týš'Ö8cÓ© tÏS7i¡Ž MÇ~e›¥~•9gYÖ/ƈd{)½µê׿¢ÞV×Ð^¥~Ý«úªŠ˜Y›Š†±¸YÍ‹„q‹¯l³ÿüëÀœÂ¼9'*Yõ«¾øâ¬ƀ¿Ýkmׯ ´¬íõÃâ±ü:+g´¬Ý5z¯¾)­Þѯ,f­ÞùØ¥Y}juëõÃ+Öêæõ‡‡—%¬[«›uÓðr“h´úˆeDñÔÉ5±zdeíQjslêcñ}+–×å #çxc mþõ=ã zÄÅo —ßçÜ•”é¬=p¡ÎÉ러3諼¶\ÍŠñʲÊúÐè×úͦ±ú•ñ€Xs¬†~ ‚µû\ØD6ÿÊCÊ9 ä'…Ô¯9¨¿4ú• Ž;^ŸŸ7_º;TŽ;wíÆú“´y7ŠuÄxSË^`¬ÒÙ>ÝP±¶ì…¦éÐÄkË^h¬h垎մ«8Á>d›Zö¼kºqÓLõ±Ý Éq¬crŽioV>žUœ`”úÕ°ëNÐÖþ†=¿Z]}½: ULƱýT^”¬†½9êááJØ8¶yGÆjØó:'©Å uYYU¿V§©~mìùÓꮬ»û‘ú5·µçU¿:±¾¿©_s[{¾µzÃ:V[¿Ï ¯?ܲGÏú¯s×Ö¯éîÈìѳҵ»2°–XkbM¬‰5ZÖ2±&ÖÄšXkbM¬‰5±ÆÁZdrS ²"3v¨¿‚ê_õT,¬xøà€껵³ ³3:Öj(ÑEë~­và¦üW¾Õþ"ñ_ðéu² W³â ä.A^¬¨·c¥¬ú¬­PêOc¨}ðVô…¯Uùp»_…Ge]EL>‡¡ëÃH—uX‹2SýºæœSô±¬°~V›2Ó‡ûb“ôc›`•±©ŠF:Å”ÇrN›Öšs,¬©¤pf-d©¼VØkÒ¯‰Õ±}hÖøa}¥}3X/"gÝ•j_{ðÄŠ'Ö˜Y ðÌšIµ†Ên+¬Õ]ì¬EQ³–›a…¬êW¡Ç‹ù‡X|±¾»º2Y³êÖø°…Èæï_É rvеâÌóüÝQVõxV¡¦ûµâlû0z°Ñ¯ ú° ôv¾â{iö«p‰06uúU².t¾–òå½± ëY ±ÉwØa]4çÇá ëá-±&M—XXÏi3°ÞÄzQ>Å?fú°Vê–Xkb]!ëÅCüM³æ[h’õzC¬M»~Yk%Öĺ~Ö+£]_EÖÚ@ï®¶ÓþIÈž!endstream endobj 486 0 obj << /Length 63 /Filter /FlateDecode >> stream xÚc``ø ‡.,,|ýúõåË—›ššúúúnß¾ýùóçÚÚÚu·Ÿþßê:iÒ$†Q0 †hºpendstream endobj 482 0 obj << /D [484 0 R /XYZ 110.854 636.116 null] >> endobj 480 0 obj << /D [484 0 R /XYZ 110.854 406.336 null] >> endobj 483 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F40 126 0 R /F46 134 0 R >> /XObject << /Im32 481 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 492 0 obj << /Length 2115 /Filter /FlateDecode >> stream xÚ¥XÝã6ß¿"oçU–?öå°ÝéM¯×+v´Àõ<±’øÖ‰Ëîîü÷GŠ’ídœÉE€˜¢(‰¢È)‰‡ŸXÁY¦ãE¢&D²ØÞˆý>/õÏ7?¬ß|ÿ Rg¹Ö‹õÖ _—ÿ‰ôr%8çѧûŸï߯ùq¹’šG?ß"òÝ/ˆøðøD–"‹þýñ{…Œsi¾üïú§7÷kX™”RYÆt¬€¾¢N\©”³<‹HX–H”¿®êzo@‘,‰ÖK¥£êëýׇª6ŸLm6݇ª¨›vëèKUîLG¢•%ÞŸK¡#Ó>×V‡ª.Zjt ‰tÓ¿˜v¹X‰”iÃ7fq¬^´[®â4‰aaÅudû(:5mg‰SÔ5n!Å“¨9uUs ÝÇ’ˆ >JlšÃ:¼H³%®Ÿ@GuÑu¦]Æ<º†È#ÛP‡±ÖWNcîuMœ®l¥F+¤yôÅÐwS‰ø_o;¢ºâóRðÈ„{ËûÔ6»¶8PC¯Ns$Zsª‹—ù= 2ß?€«Ž«œºþx»`rÒ{z§êŸŸÆ…Ÿ¤1KÃdÕ‘|–´âÎe붺:z6þK½²˜%Y>ªu?ë « ÍY¢´Åh2—,ÎôÙœ«ï=2a¹:÷žsþkÇÐPà+š£¿ìúÖP¯^)` Œq!¢w»%Ä«s± O ö:³+-Y‹[»Ê™Ôa뤃¥i@Å™ÈâHNf/™bzpÿW×Iâ…? yÑ2¸Î ½ó;‘Š }è+2a‘‹HuÇïEÐ (‚  ¤¿ |5ígbo›–ˆ×2tàݾé»…E ›<‚löÅqgØeƒ p@jãL»Þv·äLJ¸†€džY–›IØL°8$í“ÙTÛçê¸óYvEÔz™Æƒ¥¦Ãg×)üªM÷|ÉôVG9Üdþ ù[I~5±oð# ÷˜A K‚>ï›ÃS3HOš‡¢¥¼Uú1~ìàk´ÎÌi¢>Êœse„¬Ö{ ÁÖ*Õ¬1 FpSpàì’jy)#€bm~¦SkV–„¤C¯ Mp%Toª6=ùtªB¢UQoM`5ôÝì›ÆúÞmÛî%‹Ð}Ãpƒ¯ÅáT›;ŸÏ©Ã‡PI-ˆ· TaÔ¤P¡€ø›º/ÍŒ‘A“j¼Ñö˜%*<è_Õ¦ml³õ9ú7<ZkÏfÓ ƒY:7öXŽƒƒô¯¦Ýâ1¿Dy&åQY©Åõô 'g r{ÒZ‚¡æÐŠ`µ…©èXçë°Ÿp› £…:ò%`újÊŠ’›H϶ñ}=†pß`°A Ö‹M@Š”¢O·o›~·'©”xAx8]lèUŒé6 u ˆÿ‰+uïgtúÒœæf™÷ªIf‹¾Á4Pa8{äÊù(4ëʺÂÿ¾pN…29xÊ¢a(O,0S_—Dûàô²ä÷$* »¤÷“\MJIG‰KÕ^º¿_WûüåëÑÖ'WÆí…_µ«5 ad[?Se/Ä: å®/jb‹ƒïÚìÅ©TšQɲ™4 ¤`"WߞIJÛILûl4ë3qnŽ%ør•@¾C×)'øÙÜ‚+nö~¼u\î…eé7¦´De7RÚ+õ„LýQqíJ P"»DR“K*´ÆK*4¢ƒ¬!/NçÞ.µŽÔ¹Œ>53~ç rÄ’†®¤¸ïÏÅéôÝèŸo)ëA¯D ÂJðÜçümo<%¯R÷8D—É+ï†"æ°ÃäVupîoÆ @çÐREî‘ µ¨Âê­éúöH:Ä •Òåä%Xꌩüü.1^ƲjÎW¨”›€‘/È^>#¨„ÅP…¬àZ¡²øÖ‘Þ|yÿ?‚!F> endobj 489 0 obj << /D [491 0 R /XYZ 110.854 636.116 null] >> endobj 487 0 obj << /D [491 0 R /XYZ 110.854 449.169 null] >> endobj 488 0 obj << /D [491 0 R /XYZ 110.854 271.799 null] >> endobj 490 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 496 0 obj << /Length 1579 /Filter /FlateDecode >> stream xÚ•XYoÛH ~ϯ0‚+•:‡Î‡>d›d‘n ñb±hû K£X¨,i%9NPä¿/9œñ¹î"@‡CrH‡ü(—Oüñ çÌ‹ÊÐã<œdË3>¡¿ïKýyöûììõµŒ@ÝK‚`2+ôñYþÅ ¦.gŒ9·Wï¯ÞÎn>þ1uEÀœë›÷W·D^|¼$âòæ3¨Lyì|ú|ƒR.ü„;Ÿ~›½;»šg JƱøè#áXE×jºÂ÷žÒg7òBÿ¤žžÏÅiÿ\zL„¤§S™|ž¢^ S7„åeZ5wDÊ¢Š²R$ù†‰ÀyWâ¾çû¶ðb÷¤;”C¥ˆ>¿U•ÊŒù Z®ÁÞ¹QÍšå2­sÚõÊÕ˜±jÛxþí2‘ìyíWóu™ßÙ«ý¼1ñgM]”6¶6ÕÕ#ÖÎ_zÃÃ`ËËü6Ý#í_¯úîuYÍÈÁ² _ÖZƒœVißùÂ&OïÞ¼1™™•W˜ JÑØÕ/õÁó'c_kˆØ “Ÿdÿó€:<¶ª§'ݳJÎÉ]y2ö?^BD‘À^N]‰Ýåš®ªmÍôOO#w‚Ó˜g°àÇÚîLP´Ì”eüÜJFyÑ62hÖxkâ­ÉE³ê2E7¹È®ù‘´>MÍÓ©bl›vÕZ%0'B+µ]“ÙZ·uMo‹±ÔéRkrÓ®SVçÿ4+¢é½ÚµªŒÑÖèùÈMvîx€œ~ Bd,‰µÚW°ëònÕ)BÊÀõÅióW_ÖwD E÷p1\€ B› ®˜„= ò½Hm ÌÐŽ`yèI.áOÀ™8û<B€kqL#/téÅñQG‡Îl‰â¾“æ÷S8i=¤wš%¦ ÑJ§m,[‹ýÃdmAx$aœÁ¢Øœ){rPäp™~Ÿræ(ÃΚœÞ 诌I5åóPÎ+å3‰›‚ΙDŽBÒ“Q´W‡ð(p£¥ªÑ‰ˆvò\ÕÕ#îb”æé =‚lX¤Fk­Hž¯–­•)">4)’U Êï.Xq ¥*b—5­Þ& æÜã?MGlÈëó®4æ}ç{!¿§>KyƒÏ²îI·Î^Qˆks0oêßð“` m­°»ÐÒÐÄTd¬Zb(4}YUÝ#‰ª²6æ(ʃ'—PR<ˆ·oŽc‚ke»·¢‰qy¬âÄc¶Û²´ªzjN=gEÀNµUš™VÖU뺣Õêªß„¶;³ŽFÀæ…20§ ®$ç0úæÕˆ W¡'Bÿá~±ð¥Ç™M\Ö)[thSŒPŠˆ¬i±t7/¡¹›f•Q%ºg½(³…1‘Ö¤<7Šý"í}œ¸6š]€£7?ƒ–E¡:j`µi‡XޤŽVŠe]s×¥K9†pÒ©¢éÔ+’®EÄN7”¹‘a2¨Ñµ‚^zN!G´3~Þ5v”Aí9öcBJáØkÈT)&Y9rtäH|…zÿÔªV•Ь["vŠHY—$š9T!ñEoU…=I p…?Ú¶U™Áõ›2è‡1dQQ2á¬5z܉©Ÿ+ÞÁ®Øß Ò(p¸#Öb¯º‘“-š^éNábk¡Ýh÷ÆõO=V¶˜EžÖ™µo–jXh Â-\ŠRN ¬&JAWÔ¬‚V{EíA_±Ç%¹û7ÓVL$s½¡Åán«JèHçb8ü¬tm„Ÿú$<ùÿm³?‘endstream endobj 495 0 obj << /Type /Page /Contents 496 0 R /Resources 494 0 R /MediaBox [0 0 612 737.008] /Parent 474 0 R >> endobj 493 0 obj << /D [495 0 R /XYZ 110.854 636.116 null] >> endobj 494 0 obj << /Font << /F37 124 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 500 0 obj << /Length 1792 /Filter /FlateDecode >> stream xÚ¥XÝoÛ6Ï_a{Š!)’û¶®I‘­è€ÔÃ0¬{P$9"K†$× †þï»ãQ²e;M·!@x"ä}üîƒ3b&g‰V3&„™eë 1£¿‡Ù@ýrñvqqyÅÀάֳÅÒm_äz ÎyðéêÃÕO‹›ïç¡Ô<¸¾ùpõ‰È?¾#âÝÍ-°ÌEüz{ƒ«B*+-ç-~¾¸ZÀÍ$T”$L«ègÄÃ3”ŠYn^âç³0fF½È'#¦„|ù~1. ñ9%OMÔ—ïÊöCÙõóЀ©XNcø%­¶Ñ—«f]\–My™_Ð(©ˆA3¡˜RÚfÍzÖ~û«®¨Š¬‡£_ùóîÚf×Ùú žÈýaƶI³‡Q¿,–XIËm“Ñòx }þ—íWOº}°ÉØhzö¶ï¼ u³#ê©ÙžGôù \x是¸r„;cXl€;f‘×g®ùuy¿m ‚™5L úø­+ë{"û•gXÌ#øçve~_ôÇ@îMg¤Ó"yßÀ¨Œ*añPB|F#Á’DŒ :wUY£: ‰ÂAÍ’>Áq÷mº¦Iª×H%ÁÎso»‚–ÐμÌ Ã™„ºdWÖËæŒ"ðUìyFLâé}C‡w…¿n·*à¢v%±=m¼À/‚åD"0”M˜•j‚ýÏœË 7IäeZ5èUi‚²£9ïÔ«Çë²*>yÈ"›‡—ÁÍ’øºÆ„“Aà€®èi…¤âËþQh"òi÷ §‹„a‰K.D—p=ª×1[8ð‚¼ÙôeS a,ûîÌMàš8ñ÷,»»æñ¼g’Ñ}ÝöŽpÍŽ S`c£dœi7ÝÞÏòöý!«Ð,RjÄ#òG(ÿA`r¨Îø.ì"˜8 åÃTÓ–`7¹+ûQÎêH¸Âà¢r1U@›Ü𠾦L.t-‘d2ÆèŠ™"'ËïŽ ïÎ(.¡â¨^Ca™áêÛa¸p#N¬ R"¢ ßÍGdã¬Ç%­ì¼Pn…pe•Oˆ”§€)¥YÈŒÎfOo@uŸf-àÁÔ‡á“lÖ¡—„?¯ÎϤÿýqŽj©cqt$ÎÀ‘xÄ‘‰£àmã<óVÁƒk¢ò²ÛTéÓ8=̶·‰²¦1Å«²hÓ6[•YZM¥À3­Ó£8‘hnP*Öû«$`Ä‘"8V§¶‚9ŸáiCG§¬›Öï€,±C0+=_·j0ì:úlêêiÓ¹’Úu‹1„Y$@³*'VÀiëÈGìíËl[¥-}îŸ0~§,žsÎ“Ž˜àŒiψ8ÁƧe W êk"³Ôg¢½}+çnÕTžìéR º¾ÝfýX~‡6n37ò>u}±véh«µ‚’’ŠØÚg .î‹v‰q•fžÇáOGxQç§ÆÈÃ1Øðçc®èÒµ§|v‰¨EÁ4U¢S³UÓ¸ûb>` SfCXÔÃbCãvà΋MQç¤|65pkëb³© °¸hƒÞ¹#žˆ~KYïï?õñ²©*b§œbdPÌ…Óõ¦*:4éŠKär#|g`äsA¹–Ë×¹=>O‹P¬Xb„ç뛑óÞ Hœ*È~ }K5Jêd’\ cMpæ…±ÛY¹|ò…‚†½pÖÔQº¢›Ús¬|¥™*JŒëÜ=ÔW1 ÍÝ÷XÅÀc!Þ ©Å–I5íîΚ_±x0éÉcáè& 2iÏ ŠBóé€$“ØePª-ºmå…5Þ‰9õFböi6{ûu´’VMû¡ßÈKï;Á¡›‰^‡ ÐjŸ íp:0œ©³¢ë©>êiÁ €Ñ©$·®¡ù&6R&øc.0{lIŠ ;tÌö¹þ/$艪ãKí̆3 €YŽTÇÆiûWÝÙH³‰žDš«U’:q1¹»ìGC}”¨RKT1w /€*WçÊŸr ö¼ÙÞU~G‰éÁ{V&”˜6±xƒÛ Ú›às±‹§§jDã¿ß®t>®¾-ïï4Ü<›y$S£É¾aZm¡ùŽóG<á3#÷4àðòâvnzФÛ`¡¡4„-¦•“4tçê´P‡ZÒÄDU¡UÚ«*žØ•Åßëyi§9–!L“à#6LUåÒF¸>Ù£0®>n«œ„ðà -ámÂÍÔ­w®ÙsÕœ^lõ}Šÿn©j?Y¤Àe5è®xà[ÔïÙC2—Üè{WJÏÝ¿méò^7šqƒ2Òº(ûß¿óü×·>D¹UñK÷¿øC×?Ħô{endstream endobj 499 0 obj << /Type /Page /Contents 500 0 R /Resources 498 0 R /MediaBox [0 0 612 737.008] /Parent 474 0 R >> endobj 497 0 obj << /D [499 0 R /XYZ 110.854 636.116 null] >> endobj 81 0 obj << /D [499 0 R /XYZ 110.854 381.25 null] >> endobj 498 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 504 0 obj << /Length 339 /Filter /FlateDecode >> stream xÚ’MOÃ0 †ïý9¶‡fv'éh‡ ÓжH€¢eTh }ðÿIÓu›†¦¢\üñ:~ìøƒ ¸%Å´ÔQ³·U„¬;Ÿ¬·î£kÆÒx9ψ˜{å®zŠ)IâE1)n\9½MRAËI±èÌ«iÞy9÷’mü0/Û, •aL2yqwQá|çJZËIIo_Àé…i¯LÑXžl ÀO›i¯¶À¥0­š­pmISœÚ>»ŽuŽÐ²ŽÊ•Ð,ÿŽf›®Ö–,–kÌZÝå¥åÍÆ%’âM]ŸÏŽ8Xv¼%J«­Üí¨HG u hþàHÿœ4Û] ×n‹¸QêPÙ ž`Ü,6u÷¶”jÂÎqûèéœ!ðúU2¡ApqS-ëÝö|©ÐÏÀ7—Ș¡†WrƒÊÁOö N ¦øendstream endobj 503 0 obj << /Type /Page /Contents 504 0 R /Resources 502 0 R /MediaBox [0 0 612 737.008] /Parent 505 0 R >> endobj 501 0 obj << /D [503 0 R /XYZ 110.854 636.116 null] >> endobj 502 0 obj << /Font << /F37 124 0 R >> /XObject << /Im26 424 0 R /Im27 425 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 511 0 obj << /Length 2165 /Filter /FlateDecode >> stream xÚ­XKÜ6¾ûWô-àVDQOìÉvÆÎ$H ìq‰Ó­ŒZêHj{fýÖ‹’ú1öŒÈb‘U¬úêÁV«þÔJ©0È“x•ê4P*]•ûWjÅ+7úõÕÛÍ«ßë Øƒ"IV›{Ú¾©þôR­Â0ô6·ÿñ×Qzßþrón#ãO·7¿on~âÙŸüh>½ùí·Ûß?ÀF¥ãÌKbÿ¯Í/¯n6 ™•Òy$±†ñ3ê8Ƶã\GqP„¤~$´ÚoWnøéô#\­éÄJ·ŠÓ•Ê‚H]¿•¯r¯~”ÛÜýmËQÆ}mÛÑVr³ùºmoöûºÝžß„ê .âï]ø"è(™• ¯˜|³« K_%ÞÎFÛ32¯ÝÚŠÔê}'ËÖBïñ`QùÒ­z?N¼ÎW¡·íñ@¸œS‘òu×ñ©_M;2iìDÞ×™gÍhyÞZ<à+³oü$Aã5Èîqƒ±ñ_ëj‹ì8þ: sïöÞ_kØúÔqz‡‘G,GÇÁò`ÜÉÀ‰`ÆùT&ÔíthÏs84uiƺk‡×@Òz–XaêÃ¥G6;¸{iv¥”\qxœa¨_È$ˆóüq QêHÞ¶#£­:–xV‰’ü…Š^XUiOÊ_Í_'¢Tæ•ÝÞ’Ña㎉† C½?4–Iݤ<ŒʧØYqZþ&áÇÀG1á–ëˆDÀC×?¼FzN¸«žÅ•ÎtPDѤìŒÚµ[ZâP·C]|ÖÉ•ã$Pi*G!Â@>‡_Ô×#+]ÞžBeëC¼­¹ qC|[æŸíü ±´XË·íFþlmk{ÓðäpìÝ`ù2¢ß%! ÁjÀYyxF»‡±.<ÓVL¬GþVy –Xò‡®wp)¯ßC*8öÄãÅt,`("iÖ&N;â@U.ƒŽõ¢ó2ZîxdÄöP¹fÛgP %¶ÿ³n!9­SLâeó×We*È´cÓë°ð~î5„/èˆpPá3|Hü옜8æµÓÖWÞ‚Ö³e CÓ4O¼PÙ¡Þ¶€fòŠJBHù§cÄ`„LˆP^GŒŽ@…qŠ dùRW.Ä o+÷ÂÀÞã5?‡aTbx1'VŽþÃÆ”²A´I Ûƒ{%]œùéŠn°'Ó€ þŽ;ƒ²˜.’(áâÀ`Yú‚ÿººrìV˜:Ò¬Ç'>o‹|[öÓΚJdv÷g‡8Ô]ê=Cs$E X”Ð ÅY†-Ê÷Ø5$IqrE®Ž (=¨¨qÛŽü‡Ds×Gž¤0dãTˆKW-‰ ˆ+-Š£y jdzÂÎIK3´–rÀ[ƒ!¤#Èí0š}¬£Bª`”³­Œ©"Â`o„’‚ÂÎÇ-Âd QÜd-Õuh+nØ;-]˜ö\Öat'Bªº‡l‡¹ûÒG—q!™þ¸y“‹Åïli&T;xi¼8Â4üäq Ö9«=s67ý䧉÷í”ÅÝTìÝv4[!vp‰š—BZÒõ¢ó³nS+K“FáF\ýà0¾ PÀ`ë+îàSÓ€ÝË8Í\³7HÒMckHàÒ ^ô/e>ÚLõ³ÈOò&.`#½·ã®«l¦ÉÍÚ½7a½”GÏ•>M’âSGÞ”J´¤$VòEc`d$‘äÍç6”]‹ÝÉ–KžÀÉXî:J‚@£äL§ZÙ]ïí )šÃ–ëáj~¢ešú¿î$MdG3!m %ÂÄýמ€Q¡ƒ,zñy’¼/j Ôô ü7½óæLö®€¸\8)Îu+©q¸úà‹£ì%¿P„A˜ß~ð½ÁšB¾pN¹ìjÄÅNorMË_i¯_Kž¤®éFÐ%ëïºý]÷¶{”E†’šW¡/ï9Äô×òuÅ{ fî𛹎#;}¤.;}\¼xfBÀ¤PÔÞ4CG‰ûu!q¿.À!ØÒËá­l¾ò$MÒ Ë 1çüƼJeu™ç!/ß9: ò\MGqܸ¦ n7_¨ó±›HñÎÌ%ì©üÄó8òlàbþZ 45¸eÛ9I}wÜŠXãV§![÷Ü&U—.ÂLåϽ=ØLt$Ú\[C¶“Ù¥¡»&ºH©¥¦ÈÓ4Ð1öÜøºè¦…ÊŠ¨ãð áNà%Â>G‘Éo\'õö8ŽÙ¢(†½iȰÆoË_6°Al¢¶ñ¤ûÙ Ì]Ën îo1‰Qã€Çñç[ÇŸóóàTÑ©´VõphÌ“Ë$ò]tÔb¹zû\—%oÆpî÷W‘“p°sy–쎳t­¸êœ%'•&Af«5äÓä»)*ÒA¬¢oývüRšüƬòN,0Ÿ:óïÉÿî×ÿ«ƒendstream endobj 510 0 obj << /Type /Page /Contents 511 0 R /Resources 509 0 R /MediaBox [0 0 612 737.008] /Parent 505 0 R >> endobj 508 0 obj << /D [510 0 R /XYZ 110.854 636.116 null] >> endobj 85 0 obj << /D [510 0 R /XYZ 110.854 611.21 null] >> endobj 89 0 obj << /D [510 0 R /XYZ 110.854 524.432 null] >> endobj 506 0 obj << /D [510 0 R /XYZ 110.854 192.702 null] >> endobj 509 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F40 126 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 517 0 obj << /Length 1555 /Filter /FlateDecode >> stream xÚXM“Û6 ½ûWø(ÏÔ ?D‰ê-iv3›NšdÇÓt¦é–µ¶¦¶äHrœý÷Ò–-mÜÙƒHðá^1åð'¦BpftÜý±¸{K³O³dï_øððÇ;Ø(TœFZÏþY¼ŸÜ-àdrJÃt¬`ü‚;Aq4ç2fOnég “©œÎ³<ý6 œÎú6Yâ&†Ù«‡RÓ·õäódúùì¢pçÍ¥a‰ÈPïå}åšß—ëCSP’¹‘ É릩gRGGš¾9t]]µ×™ 8H¤dÚ˜[qŠ”iAz3FüÜ»UŽ~%&z®4ØØ™äÑ÷™Ð‘[Ê¢Uñ•sY«“fC£|kÛ¶hYªÎr[ùASØ®Àp^ÝǼw<Ëtšy'Žåj=<*:ÚVVmgÁ±–v^8n$KRå7ÖO´¡Û­;‚ËF`ÎbljSón²Ù<ÎDt‘Õ"„É»Ûo ˆBÁU€-\âÑS½ÝÒå”Õš´ózååvëe£ßrhhtÁ)¡£(~>)TÝ;:ͽ·Úy»˜)•?NÐ P@\$¿ñáo\ÂMv R±XÈÛõ%ã2!=‡ `Š!‚:rõäftÀ{ð7†Ñ|U6EÞ•a¥¢[JÎêâŽFÍl‹'€„#†Š‘ÌÚhÊõ¦£ñµËìÿÄU}¬^ðcX¬À¥±‚ZMã$$°î›õ4 ßMÎìƒç‹,>å\¡Z&˜ôtûec;DÙú¯ˆ¥Ï—™€2Z­ ¯öàáxí,GJ‰ez ¨Ç77¸îÎæ¬ÈÔ•4•szª?ké›×»}ݧ¤¾’S¨¾¦ŠUçªsÝØ-Iö¶éýsÇÀOP¶)írë HD»¢ÛÔ+oßV«‘ëu§VEåóBn¶#iQ1ÓÂܾ=É2È ¼á)?ŸÙ¨ð2žGIoWx"ñÞs<°¡ÑÆúµ}S´T±}Å%¶ î&˜3£ž}D¸þK·®YÀ¥¥GÈþ°Ü–¹G‹-÷M‰iwW ÚL} š×h¤Í.‹}Ë6Ï}¸cI™˜øKðÍ/û=œ`‰îQ°ojà£Ýs£²Äuw‡ö`·ÛgRø^ZêZ.KÉ´-Æ×e^WOÔû›$cŠËÐß4d4ÇâZU ›„^(ßÐ$tDRÈs;*|lž áÁ‚¶T¯2Pâõ+U–À¡°Ž|¤(‡Rm:’Y Ð’`e[/À¸.ÒŒe"õNÍG¼¦áì4– Ø„â¡CÖU®“:*_ i Ä.Ñ>º^ï|»(LÊxvABøé9\ö½pQ­ÀI{ÄBë'ŽË’Àvifϯø­¡ü„vÌ‚gØy:µëw ©ÀM¤ÁnÕ0jFêvwˆœ'2,£ªÆð„txÇïï“” —ûàF¸µŽÀq™™~ÂA…r ›Ï™w“p$|èf U æ²zª›]8vY:’cÈß¡yP²ÿ$8ë•m°è^ g¹+àŽ»Ö‹+‚…ðšúylÊ.Äþ“½Æ¶zlo-®9—2÷ƹy/”:ÏAìÒ²"aéU-}ÖÛz麧߸çÀêÂÏ'÷ýhí ÓC·±†±~ÀÓ–¾„-(¨NãT÷~q}ýëHda›òmBåp6­ÏqP—ÐPÿ”ð÷¤f" œé²†F}ÖFY> endobj 507 0 obj << /Type /XObject /Subtype /Image /Width 196 /Height 80 /BitsPerComponent 4 /ColorSpace [/Indexed /DeviceRGB 255 518 0 R] /Length 438 /Filter /FlateDecode >> stream xÚíÙ]n„ à ‰èC}6Ĭœ ë؇öõþG(ƒ °[ °µ £É|ò#’užŸ¢B5×™;!x‘𪙚)L[ˆ©H8Õ¬‚¨8;P¦—}Õ„ 0êAx«)èßËi„‡©S] úà‰‚ÓmÇ<€á‰’=HaT•О2Ô9°]ôÒ¨*Iû†¯'öCŽ¥ z ¡sÏX½¾f(ðÀ8ŒÓ%}¤×z­ î^7 Î%°Ã` YN°ïµ€ÓÖ0ðûOÜ>°ÿbm½º/=QæÝé_ážiªbÝ‘MïÕ¼§›Ð„&4!KxÙâÕÉsÛ“Ý¢‘™CÂ'Y¨§…‡™ï›ïÃ+´Ýãâ q™‚ü¹ á¡)HRè2 @ !ÈA@!¨&`#(¡;2G@@•»+¤Sá ˜ä# öY\ˆlƒô3ÇÏÖøqXÛ›!DÏ%©›.$<º ®€[ÊŠÏ´Ù·~+$­|+xûÖ笭^Xlx…ú-Ùâ2ûBOZH!2sÛ/5¡ M8«Pÿ Gu¡}-;ƒøVè{œŠŠ#šø«Åiuendstream endobj 518 0 obj << /Length 37 /Filter /FlateDecode >> stream xÚc``øÿÿÿáÇ _¿~}ùòåÚÚZ†Q0 FRæ Kendstream endobj 514 0 obj << /D [516 0 R /XYZ 110.854 636.116 null] >> endobj 512 0 obj << /D [516 0 R /XYZ 110.854 350.76 null] >> endobj 513 0 obj << /D [516 0 R /XYZ 110.854 259.461 null] >> endobj 515 0 obj << /Font << /F37 124 0 R /F40 126 0 R /F54 188 0 R /F46 134 0 R >> /XObject << /Im33 507 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> endobj 524 0 obj << /Length 1979 /Filter /FlateDecode >> stream xÚ•XKÛ6¾çWø(5Ë·ÄÞ’vl‹´Aj Úd[»«Ö IÞ­ÿ}g8ÔË+Ç) XCj8Î㛡ĂÃO,„à,3za•eBØÅöðF,è÷Ï¢£~zónýæÛ÷*væŒY¬ÂòõîÄ.W‚sž¬ï_®¤áÉ/ï~¼û~éÏ÷w?¯ï~ Ñ§ÏK s>¿ýøñþç°P(&Æ.ÿZÿøæn ;“R*Ë˜Ñ è+êtŒ«ŽsêgV"ÿuUË ôH³¤}*pÉãÞoò=MæuŸQ‘o߃9†ÅN0kÓ(ŽßÏd™1ëddz\)g’u·Éñ´Ù—[Úäy) ìTæ›}1³—àš©LGA«]YÛ¶ôÕÌ–©`©‘óž™äå Lš”Û'Ú ûz× g)‹•t–éT/VB3­MX?lvTIëñ©A^¦ð48fòxˆš/š>ú²jËê±ð AÆ×*iZ_;b-«™“Ë42Ìü'7|0ŒÄŒO™q¶7|8 Ê 3¦;  ¯È`¢c]¢öä‡6NÞðŠsÌŠÎ)[ªÚU”ø³#8…6 ÙPfš–6´åSgDòj)Lr¦Q[ŠÈE KOMQÇ…yÓ¤h°i8³€íu692­-6KÉ“SÛú ÂupŠtºw 2Í:Eɸ½pJ8ÅL‚ò@CºßW´ÃÖŽ`ã¦W£W°Éi4vDC/ý=cü^h¸™b©s““³™K•¤ë° iój[2åu$z›=oHQ©{›àV_ªR3§:ŒÈ«Ý\p&¼ý%ƒg–ñ4ÇÿFùb•Z@¯€êœ™0]?.:òó‡žU2—¡ã:íQ úE?í“X¹ØlEp&oà6h&%S©ú2`¯—OŒ¤–É3DCLœZšóÇ¢ÎÑèMWô¤ÐΗr÷X´˜ŽZ'g¢×»âOÎeUÐ(§GS´QúMk¿-v§ºh:öû"ºMóq\YÁ”ìüvó¬"Åc¨–»ŒTçGt:B°„ÃCâ#!0}áxh‘Íßk+_—EÕ†h…ɶ¨eå÷þñŒÁ‚ÙÇEr—úð —ßEay”´)è¹+¶û¼îÑ„´çT@e†b´¯ãÜSÙŒ‰\Êt_D?d†`ºÄˆÜÔu¨þ 0<£3hîLOò:ùñäTÐHCÿX燀¨1]©†Pµ“c¾Gç‚ ^ààßüpܲҤ| 7º,(H/ÿ}ÛÅwg‰ ,Ú4D6§ãÑ×ms±º7¦»0Ä”†zÆM[ÏþŸbÆ^«Žoâ¶k8ã„õ\EÓ€**š‚2Bm·ƒ‰—T$Ø:ð‰¥_peÓœâÚ(Ä„˜ ›8í»%û}ÏØÄ®ÅªW!Ù4@õC𙉠"A™ßyÄú8‡Lá©JÜ\w'˜éÍ5²Ø H{ ó¤bZÈÛ=-b°´Ä q¢0©º²œühÏ@ê¤ŽØ®Ä )‡4)S. «BÍÖà _µuÞ€¾NiùÙåS]>S7‹®§tq'»@¦’ ü„·!€e¶!KpºÚŸ‰ XÏÞ¥H×%pÖ4D9é›W•¶Æ€5¦mà&G@ôÀ`01„róÊéxÝÐX_];¾®¾ hAnÔ×ï¡Qò ;©ñÛRdI8ùÕ’+™–é×”\Î8ð±ä¾…ÔØ‹À†ô("áãuÕ9™Bw/lhí|ú{„ÏšõX`UÄÓ Æ×qf;_L°òÊ@Ö‡^¹9u`¨úȉÐE¢i\{C*8 çÔÄ×Ô旅×ÚÉIL h`]ÿª—”÷q3”¸<)æ°ÒhÈ¡ÑmLñ¬»=áZÒÀB5?gšÌiíoÚ8]Ó$äWf&½Cû”·ñEÚi¸t)€˜‰„‡“!êlle|3XYqoDãé•qƒº˜ñÅõž0Su¿9më̓AÈÓkœµÌ]4ö¤3ÔÙš¼‚·ó³ì®F²+°@Ä›PUO½bê‰Ùøù²mŠýC°›$h¯Ê7—=ã_Ñupª~ÑK8—¼`”§´ÆûY\¸â00ð1›u)ŸØü¢¬K&ø?µ ¬œ%÷-mì‡;DÈÊH·ï? ¸x»G…cÈ*–‰É±cp+“ 2€€­ H€ö¡!2ß7žÞ^= 0Ž s»X¾ÄX¥ÁeM¹›+þZCíW_×ú>±_âQ.\†¢3 WmšŽßç´Ê`®&дë'èÆ6$÷æ¥;ì”À#7_ËC =~„?OˆóêÂmc1 pêxD³168;Â\RG#âTh~K¼fQ”w5=úN8ÓQ f¾Õ¨‰À3€ôVÉ/Ô3ÛXà + ù™ˆMü´’o·ô!%¬ÛœgPŽV)¦=NŒÚ]Íð+—<—9½ÿf!ðS—USlœ­*6ƒŽÌŽî•Øî¢`¼!6ETªé?ÝÁ.œL„a’"OCŸr It5¼Ò+Ïõ¹"͘K¿âkðZ Xp³)¹ù¡÷?®{Á|endstream endobj 523 0 obj << /Type /Page /Contents 524 0 R /Resources 522 0 R /MediaBox [0 0 612 737.008] /Parent 505 0 R >> endobj 521 0 obj << /D [523 0 R /XYZ 110.854 636.116 null] >> endobj 519 0 obj << /D [523 0 R /XYZ 110.854 501.328 null] >> endobj 520 0 obj << /D [523 0 R /XYZ 110.854 288.683 null] >> endobj 93 0 obj << /D [523 0 R /XYZ 110.854 97.688 null] >> endobj 522 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R /F40 126 0 R >> /ProcSet [ /PDF /Text ] >> endobj 529 0 obj << /Length 1776 /Filter /FlateDecode >> stream xÚ½XKÛ6¾çWøVˆ>õHOycÛ& R)Ðô µå¬Y2$9»‹¢ÿ½3œ¡-Ùr7½t÷À9ä<8óÍÐj&á_Í”’"uv›X(ÏVÛGjFÿ_gúùÑóå£'¯Mì"sn¶ÜøíËõQ<_()e´¼ú}¾ÐNF¿>ÿéÕ‹%Ó®^½[¾zI_ï?Ì-̽ùðìíÛ«wo`£26‰\2ÿsùÓ£WKLJ™4Π/¨sê§±F~¯ªgÊ ÃPU¡YÙOs•FåúKÑ“f/ª¼ëˆ|Y¬ª¼Íû²©OÕ’³…™Òi|*±4u&=·¼)@¤uÑg)uÛõôÑõÅŽ¨fCãm[öeý…>rêb®a…‚%@¯Ø Kû†Æu±*×,²²¯ó®8Ùi£MÛlùè›ruƒ~ðFYaÑ£ ;íwCEœ¥#Ä|a`êc·Ï«ê~»è1±–§öÅÃ1ë¦è˜£é‰ènò¶ Õ¼ž+Ýó®f»…‹òô¦Èû}[ð!·e?¥xÒ[ÐÐ’Xt ‰“¨ìi¶»iöÕšèë‚ÆuÑ–¨ê7”\ð"9 )o˹3ïÞ·å®ì¸WÞqi]mhGJ&“|´ô\ñ`©‰åÀR+²ÔÏ〗¦¨aMÌ^ ¬ÌÚ› ã¹™°Í„e2ˆ|·k›ÅHGçuܵeÞ#“Î8°:Ømãè5Ý´´PàÇ]¾ÝUêi3"¸B¢€8„ˆÑiœïö»]Óöü±j›ªºÎÛ.‚‘°ùzÊ©gkøàèŠïó7~±þ„ðåsíGX7–"øPŽë²ÛUù}G_9 U~]THÆh ZÌÜ>/ýnÞðYk³ÍËš··E3³ÇHºÂs JF°`*Ò×çÖÁ$[[÷ êw4Mx!*Îe#IW¨—ÍtÀ½tÀI„TYÔì["ð”9ÏÚ¶ñ³Ï÷}ßðaþJÓ)Þ˜Ã\¨@„æ p"‰§9‰éA¹˜PGêaâÀ'Ž4‡ÄÉAâÀé]ìCqSÏkûŽ)jàØ§yÎ/5ï‚G˜€p/ZΣ󢤜2uXm¤p~¾ý2 ä‡7#^å>ÕÉó’.´P\)?vTzœ ¸ Dyw, ƒÒù *¯×“eÓêä;ʦFCÒ/›Ÿæ©DHÕ:¬)³üà * òŸ¼†žæ¸71"V–@õª{î‘$%PÆ0ûŠ­¢ã’·ö]ËÌi8=0J!Þü 3v÷uŸß…0Eb“q2wO'œgáʬyÈ{Ú ­Éƒ-“2Bê˜ø¼“GŽ’Ó>ZÄ’K ßñ»|[Ðì_Þ­„Ó#[¤ôžé[^í§ý»˜ü‘Ït*âÌŒÿž¸? òDÆÀŸ“%žïPx0PÇ…gÛ@z‚©CÜ—Ý ÏzÐ"Rz«ã‡Ã#¼žÀÞÓ )¢ñdTUˆ;*ªšæ+RPl{š¹½ T‘£Çp ‚QE;EdMÓÛ"¯;âÍy¼¢•uµ²ôõ& ¯€8„8ò”õÉ*¸ä2´ž:‹]ÑM”7èzµt½ð‘·(_ö󢾪 \Öy"+‹Øªÿ’É2Ž™Ý_¤VGŒ°rÀ Á’ÆéyÒƒ[1ØÏOÇš7l|lñក®œÝfŒIüF {vhjü,œ°Ù¦@-Æ€ 5tÊb X NTBÖ™8{Ih % Ô¯2È¡jPx{^¥7ï§x°™0‰=y„|9@ Õ÷¦ßªY§ˆo;kR’Z‘ÊäG¡Ç=R‰g¦'¨ê‘'¥Pò^ôžS¾Tdêøbº¬»>¯WSeKi;(D¥ÚX8"×ÃOâˆC€© „Í쳪k°ë‘ýƒ®JŠØ©q[Åñd)C€âG'Ì„h²ÔÌàHî-0ó…E>$X´ëošu7fãàÊŽ) O¦cpÁÂÉ£Bº -Áøåòºi&«P6 w6'Ç@Ç’fÌñ> endobj 526 0 obj << /D [528 0 R /XYZ 110.854 636.116 null] >> endobj 525 0 obj << /D [528 0 R /XYZ 110.854 426.654 null] >> endobj 527 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R /F40 126 0 R >> /ProcSet [ /PDF /Text ] >> endobj 533 0 obj << /Length 1177 /Filter /FlateDecode >> stream xÚ•WKoÛ8¾çWø(W|é±·¦MŠ´h¶È èÛ=(mµ%C’“¶Aþû9”bÙrœ ‡Œ†Ã™ù†ó2…ðGg”†$‘bñˆPÍŠõáßYO}>;ÏÎþ¸ä1ˆ“TÊY6·×³ò_/ò†¡—]ýãL†Þ_çŸ.Þg޾¹º¸Î.>à××_ïãÍ»/_®®?ÂEÊEìÉÄÿ/ûtv‘etŠ' ‘‚}Ä^0è%&HF§äcBcŽI$¬¬…èauúç7].T÷~•·­Dx¾?ßv]]!ïÁø>c”H6 ¨ BH{?(̽*_+€ÉL|Æ—Í­Ð݈ðF»Ý¨¦™ûÚèµîôš’_«nY—#7¥l$5}K”ÑÕ]ýC ´j:{)˜¸õ8eT-ŽZs¨Kݨ¢Ó}t‚¶Ë;õ:3E]Íõ¢Ý¨â´‡}k{ŸÆŸjÊÚƒóÐJì?‘UݬóÕã A¸8ä+·/ñßÅipýñuÁ*Õ<ß®ºS–Þ`Ö‘¼*–5Ø”ċɀô¢›¼„‚ŽŒ^9å”Üq Oø¡»{=#‚ÃA‹ Oc+ö=”á¥^l…=" °(~” Ê¡Éñ £žãÿnéÄ3ŸK+ËgÒJÓœaåPÂÀÅ€óÄ2=Þ1žé:ºŽ )  ±S]" Æ„¤CË™ì¤&åõü8Ï#¯ÞÔ-~è ÿ#l{Ùç])¤Ë¼ËoóV¬IïÒ§Ò3omΔùø™¯7+õÖpÒ^UäÍëÕ c§«²Šz½Î«²Hëã÷0dʸ–r§'Ç_„îm'E9]A™UE¿]ÖÛU‰GËÜg¡wg|U{Ú!Ï}z˜ëæäÎÉW[…i6êá<„B~aX·›‰L z™ÝdžÛp%‰1 •y¨X0‹ÔéÝé>‡úc “&q’Ã+jˆ«!úΜ<ò„p;blMæEDD9©WÂZöAÈ„$2”£|@hd¿Ê i¢˜$ñÉÌ8;=è)'!‹PîøÐîmšV^ºÑøf> endobj 530 0 obj << /D [532 0 R /XYZ 110.854 636.116 null] >> endobj 531 0 obj << /Font << /F37 124 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 537 0 obj << /Length 1575 /Filter /FlateDecode >> stream xÚ½ÉnÛFôî¯H šÌÂá’›“ØÓ& \-Ðô@SckZ‰TÉ‘e·È¿÷½yCj£ã"‡Ú€ù8o߇¿b"g¹N&©J™é¤Z‰ ýþ9é¡Î^ÏÎ^^ª ÈY¡õdvëÙgóߢ4ž Îy4»ú5žJÍ£Ÿ^¿¿x3 ðõÕÅÇÙÅ[zût'pöîúüÇ«ï€Q¨$‹tÿ>{v1Íd”Ês¦ðæô„S•qVä )ËS‰ôO›:[ÔôòüÝa¥bœË@2í6kÓV˲ëˆô@P®˜‚i·µ®ZÄ ¹ˆºµ©ìgc::p Š0;yþ½¹="¨M,u´¥—­ßÇâišæÑU&L¦,̳ €„%‰öÊ›M y™Xèè¡\­—æûxšˆ,Ú¢à\E‹2–<ºG¼!ÚÎ8l,¢ºf$$BgŒg*8êìç֮¬³÷f,()ÐfLÏ„ˆÎïb•¶&­ËG²©tÎÔÎ6õ œž”˜ÉT&Š §±€!8¸GzRá0L€^ûéÊ©‚ØH&~6USÏÑa¥wƒ1Q£”È£²ªÌº‡ÃsiJBCI`åy\Ãß» †)œøù$‚ÍHŒ^µƒà·(ÝŽã¤|h= öð>tŠg>txR•Ë%„ldîóœ)™‡òØŽÔOÆÄ° y ÌôÙ¶>>r½Ùž<ߟÃYXX¾”ª U6غ³ó`ž)ýZZª’PEB3ÍÅaQUÀ ¼1¯FæŸà8ˆóç& Ôg"äó· 7™”Áëåf}YƒÙÏ£œžßmé9/]9Ô©ÈaÁþpƒË J¹ÄùA—åGK^†éQ·ÍrI=JûŽüP̲ÈÏQ|G>, ’6/â|dùNŽ­±¯C‹;" ázÚ%$,¹½² ÷LÈ,†v±çmKÖ½Þ8‡ëûxU½-QùdªsÛÿ5S~FúÄ8²´·ÒÖ÷>ˆúgû%Þm)˜>eÿ!ß~CŽaú›£ ²«Mû†fEyñœÈò™k>÷x#s©*ñ¾ãyNÅ[ó½¹KzŸšV›í‘Ì.\ÑN™¾Œ˜×}»¢zD‘~RÑ bbðóŒ„Q§˜“v,ƒkì Ï<ÝÇÆÙ [¥Paˢ\"äk54À¾3¹Û]švàüî*TϘìí®'œöaz؇"ÂZ™ôŠ3)“ݯúG"wN–È~îcAââ*:_v N$F?i £_ÈšzùH„‡+ q! ÙžÍï¯à‚íÆ¾Ú4gÙ`ÒØª‚/ ÁÔágS0‡÷Öò}ky´´u8¶áäh[…áfÃó³”jôó‰3ž~ó:`p–}´!O}e'“ÙA¦gÞ$=Œê©IiÁž|%Z‚Ãçÿe»ÿ5‹Â· ‹+Y&zw{‡cXÚ®¬«`A¸ÍPòpÚ¡y«À¸Y7uð© /Í}Ÿv«oHÀ°ú0ø·G)„¿@¼(‡usœê¾¡žZA²È™H“çv˳ÿœøw®\âendstream endobj 536 0 obj << /Type /Page /Contents 537 0 R /Resources 535 0 R /MediaBox [0 0 612 737.008] /Parent 538 0 R >> endobj 534 0 obj << /D [536 0 R /XYZ 110.854 636.116 null] >> endobj 97 0 obj << /D [536 0 R /XYZ 110.854 538.948 null] >> endobj 535 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 544 0 obj << /Length 2265 /Filter /FlateDecode >> stream xÚ¥YÝã6ß¿"À-pÐø,Y’í¾ín§‹éݶ‡i{Àõ<±fb¬cçü1éô¯?R¤œØãùŠ<ˆ–(‰ÉIE¬"ø‰•Q˜jµ2± …0«ÝáXÑïÛÊS÷qûîo?Æ °‡™Ö«í›¾-þ˜õFDQl¯ÿ½ÞH¿|üéêÓ–é›ë«Ÿ·W?Ð×?oÖ ú>ß|øòåúçÏ0QÄ* L´þïö§wW[Ø™„ŠÓ4Ô*úq<ãÆsn@üÔÈ×øe*!__WÄa$ ñ¹£Ã ==z8×g/ëÛöxŠÙ%¡X*NW)ÃTÆnVS¯7±’AÎmYw}^ï,MŸl”¨Ð¤éÅnOw:4QÆ,Í-Ùï-»*ï:î+ÿжÍZêàôqèû¦þŒ93l¿oŠ1d$Caü&¼.²Af8$Œ+cV¡B¥ q5õ÷Ï^ œ+‘¼Ü©¬*2[Kí.¯*[×L8)]O»ip?lÝ/È*t e§…½ÁÞ…yºù>_Ë(xX ØÙŽxgy5,i(“a&ôË¡þòB¾±X…p]ÞØv¿´Ž7xöB• ‰™‹õj‰ƒ²£vè¬ëQ ©ÑéÀ°¦ë#S¢([»ëKgªðéìê<®@ lIk£áLe2”¿µwMk¿£3¦húÓ#–¸O¢ƒnß UA´E ~Ïem©ƒ6‚î½-óÛÊ.jZ…Q*Ïwÿ[¤£Í(9|‰Eõ'¡Îž. "œöånÏ¢õp‚n&Énh[67pe#B“d“ƒ]Þ—‰è¾ ›PlÄK>.“Fçzƒ ¡Û¦)ynrhŠòî‘hwÁÐæÇcÛáêz[=²ŽŒÁ5÷C[w,ëàûöy便“ V øC'Õd¥ŸþÈ„A‰¦†=€7Q ;Okb<2kCm¾ÛYÄ#äõŒ`Jží´o:^³ÎL•ÌïSpŸŸKÍÄP3LÂDSH"‡Î‚ߤŒ—\ @„ŽáøHãÐý/µïOÔyŸ/Yl•ŒŠ„=íÖÛݾ.ÿ7ØïáveÀ €-•rÄ€J“¨[UÏñ¢–uo­ímËôø–‚Éðã2Œ’º.9‰ K‰N,Ÿ&/fäxC—Q¯hlÞ¦„á“È1ÌpÊ"“4LG§Ñ]øEÆî‡„~÷qòø‰G’QtfžEÉ(ó‘‡K^Ü{†ë[ò víÍþ=j÷MmCÓ&(à“§i¬gÃ.ûpžwŸÓUH€©ˆBíÛû•'o>`ciÆD¶^¨BXŽë„,$¥mYßsM0ÜVåŽè/ìw3©`È/eòZÒŽ|¤Ù(ÌbÁòÁ!„IØ¡!v¦âÎç¡Ã©8rj8‹Æ‘¼µÔwûHmaï\¤ªž: ê¢PLê/w ÕV ®›×uÃÓn™“B¤-&ñ‹ì·Œcï^±Â(w—sÞ#ôïÛüp€h¡]Ì×2®ïh𱈠ЌV‹¸|zù7ì·ô•ÓàèT¸¸Ó„VçÅà ¡¶¬wÕPà‘R †ÖÁQ"UÀSý€õÅÒ§³›Ëºd¢QHõð×yßÄuy}·¡W!ôÎÝ­aæ >qíg -qo×1ˆ („5#Dš0›‚ߤššf³ÇÊúÜÒåfV` / b Ÿlæý,í<œýa)ºòÐw‡Û/ÜO¬¡&6cÚ¸P_†é`Ÿ¯- ªÊ@Û}ºH+B™ÎLà¡ùf—×S™O“œ?ʼn·.¢GoÁÊs2{¸*ÛSZ ãž[´CY Ä©pš¶è@—,ÿ°…Kñ"W»pàÅ×TPa{¼ˆ“,ÍKíò9' ¦gÔTt÷¶Ýå>—cÙ5gn³h# ŒèäáOC’ª&áÒÖIøSü~…*°È[Ë×u‰u@ù›åË10 E"ßåD¢Åx•»z76dƒ”Ç1zØýlcCi11ySò0tÜÙ àR4±ß·Ör÷xDü*gG¤]ÜÃKþº·5Ù‘+L”9WÎfl¼=²{yk%Ý,6æ]kÁÊ‹Ñ1œ”RO­Ÿëà¸µÞæù5 hˆ•O-x<¢õu1•¬ç—½"ÀÖÌç]ý»3&±mh(_ÝñnìnR³ápò¯Èãü§¤j‡.è“aØLfñm¿üÚ˜ÆæÅX€o¾ˆþÕöêûna±¤–âb1÷øpóðÅÈh¨bÅÖëƒ* •O€2#lÓãÀ]S1`êÉ…sUÇ´pæ,£ʤbœ—L&@´Ëëékf‰¹>V"À=õê$ %dÜo‚(˜uúZ¦­ÆL{Rg>øj:šÐÔüÙl;}iHƒÐÝé½Àx<ÏžÉÿÀœUüVÓÛÖfVâÎ ñŤñ/)nêßæ¸|=êŃ«O³0IçO Œ7rêépó?¢»g)g)¡”¾ð€¡©QB—8›‹ ÒÏ ï'üè¾ü(?Ó¨‚˜«×Túêß.ÿ¢e´Jendstream endobj 543 0 obj << /Type /Page /Contents 544 0 R /Resources 542 0 R /MediaBox [0 0 612 737.008] /Parent 538 0 R >> endobj 541 0 obj << /D [543 0 R /XYZ 110.854 636.116 null] >> endobj 539 0 obj << /D [543 0 R /XYZ 110.854 386.094 null] >> endobj 101 0 obj << /D [543 0 R /XYZ 110.854 228.676 null] >> endobj 540 0 obj << /D [543 0 R /XYZ 110.854 113.578 null] >> endobj 542 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 550 0 obj << /Length 1522 /Filter /FlateDecode >> stream xÚåX_oÛ6ϧ0°=È@¥‰)Qyk»¬H‡vEf Ö=(2±¥L’ãºC¿ûîxGG¶ìäiOCëH÷ïwwŠ˜Äð'&BÄ‘Vr’¥Y$D6©ÖbB÷OýzñfvñÓ/iìQ¡Ôd¶pÇgó?ƒlŠ8ŽƒÙõÓ0QqðÛ›÷WogLß\_}œ]ýL«O7S {ïn^øpýñ©ÌƒLLÿš½¿¸šÁͤTªu¤d ôu¸ƒ=‹(k~¶m¹#RËY&òH©âÀ2Ìç0UºrÍT T4 Uª‚Ïh H¶5½Ús¯M¿læ™JIšâv¹š ÐÊ]G{­Y€GèxãÅX~ÉJÒfÛlî–OqÊ¢f'Ї!Ö’sÌÇþ|íÁ÷%I2g „L!6k¢œ M{ßÑ2÷Á´‰°²ÌÄqs; G·rP&q,Í…uC¬V2Õ`c*#!%¢'Ž”{ÛÞM‰‹„ì†ÍÛ²³U¹rÉKÀ¯K_ÓŠŒÒ {ØvᩇàHå[VkVN ŸJÅòMÝÒ>\NCgç¼8ÖC™ ½×ƒ\qRÅyáSâ¼+¥’g_“ô¹ÁL¨»¬`PÁ>÷D=gXßííWïUlÄøÎGóòDi ½ÔíÒ"öÓ4áá MShI´Ceˆ§²€«aÏçX)ð•y2ºÝq±æû†ÚÊLšñÄ=çÝ‚û»ÝŸp½žÏÊc Ot,aÕ5gd뵜ÇgÄ™Kê‘ÀVB ÜðÏuyuØõP¬ -sö˲÷o LÖ#W#ƒO#¾âvGœ¬[xBýSù-½tZdÂû¶í!èére¿™9†@*®p¤7Õ²¶oX”sl#ü©T£|zìûR&º«5£ÂSè$ÐÄ—$¥)p°W8ÛUñ4Äb;…a/U~ŠE‹} £AÂx¬ræ¥~Ç*ìŠÍÇÄ¢>¨ƒE³ZQnqcužSt$Šä óÆt¾«Z¦ª¦mMÕ¯v—'\!¡·eò5áö{ š?>Nóÿ~,þØôÖÁ,!èŽk¶ÒƒÞõŒ'êr_®I>hIxOw¤oÍ¢iùz¨Z×;iïØ® >åa5«Ž ÍÛ¤_íêi†ßoò ;ÍT0,e¢­æsŒ\Zñó H ‹òåhmÊš·¨8 ¢«ÊtÝQ* Ã“èS¥ u‰£tN*)¯€Oµ]Ïíîi—gÕq¡É‚Ò7°Ëù*B%f0ü•ÞWôâçꂵÑN›q-[7s»à!»kÖ£qºéx븾㌽ŸÝkƒþ*[TÖ<Ýs½Vñ0*ŽßGåXòù‰&µ(¦ü¹ªñâ0þÏ endstream endobj 549 0 obj << /Type /Page /Contents 550 0 R /Resources 548 0 R /MediaBox [0 0 612 737.008] /Parent 538 0 R >> endobj 547 0 obj << /D [549 0 R /XYZ 110.854 636.116 null] >> endobj 545 0 obj << /D [549 0 R /XYZ 110.854 400.912 null] >> endobj 548 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R /F40 126 0 R >> /ProcSet [ /PDF /Text ] >> endobj 554 0 obj << /Length 1358 /Filter /FlateDecode >> stream xÚ½WYÛ6~ß_a }Šá¥+oIº 6EÒ`k š>È2w-D‡!Ñë,‚ü÷Îp(_ÒÆéK``9"gÈoîY1ãð3!8K#=‹UÌ„ˆgE}%fôû<¨?®^.®ž½V °³,Šf‹;'¾XýÄóPp΃ÅÍßóPF<øóåÛëW OßÞ\¿_\ÿN_nçöÞܾx÷îæýJ'A,çÿ.Þ^]/àe¥Ò”EZýœ18C©YÆ|Î"wÚÝÏòöÍ^B²,Íf¡Óñ;Ít<¡Ùbm·-¿¼ZçeóÎØu»¢½"¯ªsØ¡¿œ3.@çÀ.™JäĤy ƒ|ÙÎE<à·e½©Lm›Û²mˆ­½CTÏ^ƒK— -X,…¿ÔyÑuíîåÖÚ¶y~Ó”öc¹º7öÖ$|‚DrÅ×^¸ìé¢í:SXä/h°¾ŒÀ¬ši°%2.ç’[ Üi”nMƒ:¤¥¡b[/M×·µñŒw´îüùn.x7þÛÒn¿+m±¦½~»1]Qå}oz6µŒƒ×h£¶#^ƒ_r4Õo°“¥(:Üüð¦íáQ•Åîq·îÇ/|×¢3¹õ9-™ËØá# –ùpCEäb®À_ÎîŽõ#f‚3:€ÒJ»u‰!ï¦3ý¶Î—ÕãÊ•ùĹl ºAKpC];×[Û•ÞìÃy{çÏ4_‹îÛun‰Zç(¹/”ÀzÞ²dL –V<ÁèlЪZÃioM¾¢( ÷Ð#½+ñ¾‡²¹¶$Y…"’ÎV%ÆWõH_w][ŸÈ|èʺ´tŸÃŒ0ÒˆÅMQ®<íÂÆíuGgPû©°8‡¹ïÁõ]·"ƒw+’.spõ·Ømç©S\«'iüü¼þð,b©—jTL y¹¼ ŸŒ‰Ï•¨“ªÂõ„êÇ+Š«˜ó}¡Úûê¬+‹ä‰…ÃC ï…½²f"ŽcTvdÊâLÜõmƒßÃ7¸õßøÒ)€ÇÚŸ¼ñ¬Æb?J }…à™XÇ÷¾õEEBta+–¤v[­è³1ÆS.Æa-Öysï™±EÑáÚïÔCÓ)r– ¥"ÊsO$åy2•” ¡HXe§F>NŽQd†0]h•‚D,Y=ògè>žžÿ½Æ7ò)?¤,M2ïé5{Z0)ÕO׿(øþ¿>‹5V"åÎuc%…ëÆ¸‘ÓgÕZúÆî+E]÷yà.òmïEÛ-íúËøY#Ái¨ŽÏaõ0ÔHØ÷§qxQÎoª¼0çt˜ÏÚ®¼/›¼òÇçSQDŠLÕkJÊÕ‰ Æákxãx6»@ðˆÉ$öìØ¯óL¡a†êÛŠÌÔÓ·užAjÓµËÊuÙzÔ¥Ý]‰ T¾µm ú ù¨cxã;&4z$Ž71¬ˆÎi9®høMs€Š“ムCé@zç÷ޤØH°:wû׆g}y¡AËqÉ<”¦8¸sÃÛÞ éÑH»g#Ý¡À¡dU‘k}e‹¨ïj§9.Kc­ñBE?1@+±ˆGÇ£/œŽ ?:[‹8aI¬†{iS ô6ý ³yª~<ò“Ð-]í³³»DsÃì‰ÎAs •ˆÄy?=”Ó‹¦ÓPð Ä0Ô}§A(ÅÒ,ý¹%Ò­˜š δ£)a÷í|œ§™·Ý<äñüÂiýuGë*·ùû0¤™œrå‰ÈÈÀgÓP?ŒWx÷'ñ¢Ý6AÛüh‘ãAdÚ \2!’Kƽøoú;(*_endstream endobj 553 0 obj << /Type /Page /Contents 554 0 R /Resources 552 0 R /MediaBox [0 0 612 737.008] /Parent 538 0 R >> endobj 551 0 obj << /D [553 0 R /XYZ 110.854 636.116 null] >> endobj 546 0 obj << /D [553 0 R /XYZ 110.854 591.041 null] >> endobj 552 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 559 0 obj << /Length 1552 /Filter /FlateDecode >> stream xÚÅXKÛ6¾ï¯0P‘ИáS=5»Ý›"i°5I²¥µ…Ø’!QëM‹ü÷9”d9òºí¡…‡äµaL<‰p,&ª»^ª|µ>µWÀ¦¢ƒ7åý=ÕnÃbéfQë\7öb9Æðœj?MÓD'Ÿ¨¢³4¯²¥Y#vB ¨i¸¿Ù°ßç¦ËÜ÷V¹É±sa›ØR ‹3l`$;hvwUŽ…3]òf»Ì<ÊÚ,í+oÙTUf«f;}q®Üµ´tJW¶¨f×Oî»ÇŸïA›Ábòÿñ)`@ÎÜå1¦»çÀ°«gDñÑÍîZl+òv¥&ð­› åb~¶‘¹WºÕ ;ºV³6­ö—ˆt&©p棃>·39Î\6œz‡<•®ŸO=lv¶ãµ§Öj–=î,ÌšÁW`–{osÛ‹/O¾Æóž ä¹ä8û·È_›ž{Cendstream endobj 558 0 obj << /Type /Page /Contents 559 0 R /Resources 557 0 R /MediaBox [0 0 612 737.008] /Parent 538 0 R >> endobj 556 0 obj << /D [558 0 R /XYZ 110.854 636.116 null] >> endobj 555 0 obj << /D [558 0 R /XYZ 110.854 340.292 null] >> endobj 557 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 564 0 obj << /Length 1677 /Filter /FlateDecode >> stream xÚXYo7~÷¯Ò<¬€Šá±Ü#( ØŽ8EÒÂU éÃ^¶‘v…=¢¨Eþ{g8¤´+¯£ 0`r‡CÎÁ9>JÌ8ü‰™œEÚŸ*`B³ls!fô÷qæf?]\-/^¼V!°³XëÙòÞl_æyÁ|!8çÞòöÏùBjîý|õöæziçw·7ï—7¯èë—»¹´7w—ïÞݾ…òC/ðç/ß^Ü,A2)¥¢ˆi_Áü uãB…œÅ‘“€EDþ§U]® ”ôâ5Ø{\•ŠùÚrtåç˦©wW}×ÕÕËëºj»¦Ïº?Êü¡èhóèh)9ãZÚ훢[Õù|áóÐkWõ\joWágà%i=Úû„ÿ ËQt-9[È@0€9Âg>(cTe2R°ŽIš2I×Sêë˜éØ· äI—|àšï^¦Æ˜‹ ­W,Në®&A©è%o“nU%K®ï‰ÚMzQÈ€éÐéAÒ'$ûóeh¹Ú>ÝÇ2rƒ‚KÇX7†ç²© €ƒïep*űêJø4ËF9Iw`\Îá«üLÔÛªkʪ-³ö{$DÞÎrmú¶#–¼ÈÖISŒ„mût]fD:èJFù|`”Òrè`ðMEŠÏB%œöÖâ¼E#‹Û®e(eÊ®¥Éà.\ÑHæj~.HDæ‹GQ2aŒæL ñÈ–qÊÀL–ç‰ ™•ea§ ¾!Ó:ž-H>YË™6kÍÃÌMïÞø9ì »gMÔ"æ3åê‘sͯEwUV9¸Ôºòeé‰J BšØŠ¿^knñ†@}Ý78pg]ÑÜÏ÷’¬À8f•Øv†^uôe2¶¬’*_DKhX×–ÇD<ðxó.ZZ+­p `:Doë{Ì&ùˆ¢­~kâ’ÒšGPßPÎÃBmá2wákí½Fzm¹ Óº¤26*8z·**ZhëM‘Öù¿boÛm[´´DšÂ$KPÃT{ 6­/d[Œ”¥²ÙPÕ½rGèÀ#MÑã:´GêÑãðeIåãBMãá*†Ì#߃+”Œžh2ŠÇ,P± ŽaH>Μ…c^‚k-*‚ëmq^ß–‚Zâ˜5EÒvy¤­§‡D@†{¼1³ 2ûëͶ®(‹f^œ0 £`"\¡CiÒ@AÁ5!¤Tx¼À“‹B&sîçd³]›ØÑ±©Ó¸ ,%R(h ‘@çMB!9Æv[dåý~B= }åÛkÄÉæPNn-l$å46¸­²æºî«)T  ¬ËØm$Яs•Z‘Y²^›ËüS$ÙÊjTn ‹4ÔOáK‰º.è—†HÇl®à\6¦ÅuS7"ýåµQ@m6¤ÎÖ¯MÊD’š%³¤¢Ý™1{(I{U¿™ †õS’Ѓ‚ G["‘ÿaBVàê*±kdNn÷Vv¯Û0LRüÆfV§_•`äzOüß°^Õv_ÑuN!È”àÝD ±íµo˜ÆÄ6‘„†¼ß¤4/vD6Ñ_„/Yøç: RÎÎð Ÿé®b×5¢mS„ °èxÔqýßÝ;1N&Àvx™ýöSÒËwœÆç;R8WʈE±p9s½JÊʶÜÑ–“"xØ))pL~þ§A­ää(‡ä˜Hç˜ îêÔ CÈò㊂¬#ËðìkõLA¼©‘ÿžïžM¤È— ¿=yiG)“W± VÿûÎÈó%ˆ82 ãM¾;¯ÞS)_<„ò*B¬° Œ¿ âVþâžCCˆ§-À{eû!AM ÀÉoǤý}K‡ŠÛIÀ ù €O@?æêüãÒ€mSRãEDÞY⟷D¢Šh öuaæ`Xk¹òšÆª¶kUAe1¢^cjeØ'LŽ­×÷©õÙBN»k(ª©Îhê»â’„±¬Ê®LÖå?F"¨ÍÂÄ"Cš ßÛCojì®t\AAæƒZ,¢Å €ê¡ýíçö F„ºO``€X|æÙÕ‡¢*šd=¡ò¶o¶µÁ¡˜p|È9øÌ3ׯöÁŠQÆî‰ S‡r ›ég»"›ÀqÈ‚èäw#½ÊÝk×þt1|û^™^u®ï4‡'à@ùÓ7áD튡xîÍvþ‡ ü]HGzdÀTO Cóè\ýAç?ÝU¼endstream endobj 563 0 obj << /Type /Page /Contents 564 0 R /Resources 562 0 R /MediaBox [0 0 612 737.008] /Parent 538 0 R >> endobj 561 0 obj << /D [563 0 R /XYZ 110.854 636.116 null] >> endobj 560 0 obj << /D [563 0 R /XYZ 110.854 535.844 null] >> endobj 105 0 obj << /D [563 0 R /XYZ 110.854 151.828 null] >> endobj 562 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F40 126 0 R /F46 134 0 R /F21 262 0 R >> /ProcSet [ /PDF /Text ] >> endobj 568 0 obj << /Length 1742 /Filter /FlateDecode >> stream xÚÕXÛnÛF}÷Wè‘ÂÍÞÉuŸìÄ œ"iáH¦´DID(Rå¥Njäß;»³”HšŠ¢(°†Ë½ÌåÌ™Y²…?6cŒ’XÉ™š0¦gËÝ›áß§Y'ý|v¹8{þJD0¥f‹µ[¾XýèyÈ(¥Áâú·yÈ ~¹|sõbáå›ë«w‹«—øôëÍ\ÂØë›‹·o¯ß½†…LÈ(ÐjþÇâÍÙÕNF¥D%È'Ôé&†"¢ÄÄMbÍíüÓª~˜Ç4Hç¡:Ø&sNƒ¿æLu#ušVRAVàH³M­fÏ_Ž»1*ˆfÂïÙdŸ/ªª¼»l›¦,ί‹¬ù­6is“.qñ@N%èËüâÔÿ9Ùíó´;1iì*°‡C<”˜…L)žú„<Ž‚}•͹íá_ÒøA|ª²ä6ŸRÛ(Qé^%Mò‘*º,Û¢M¨s"÷ îæŒI'e`d–äÙßé @±*%óP‚K/òº|ÃFS_}Ð7DƒY*´7X»SO˜Â9a±™rw~ëBpÂF9ÑFÍa†ÍÁ‰CÁ’ªé¨¿(‹º©Ú¥ýÄñ!§á ôÀ¼b…‰Q··uúg›MþGÚ:õï&•aà‚XŸÀàû´¹ÌŠUVlê)GÄštft=7ŒÄ€¾n×\°`YM•Ô ©PÁ¾½Í³%¾ê®Æ¡][7(ÝÚ( ¬ÒežTÎÍŠ:[¥(#:ìyRûõ8;i²²8 *ƒæ ÅQjè¿u™ç¥Uâlµã ÎœÅÁ¦Ý/ën(EÁû¤¦Ä_¯œÜzá`#Ècí~…ߥާËlmfŽÎ([çtpp_ÓroMª1¢ë²BNܹïh(ýrA$ãS¥š£Â¡†ûyŽI™œ`Ò”EcÅ1Qô]z¸ýÕÔþá:O6à°Zk?é|*àVaDPo >:7Ãj<̬؃NÊü¢”òM[ù:äÏ,©™• ôêô#}Ró˜˜CÂöQj¡`:$Öø”ä9 ˆI˜yŒI*×£ù‹9$«¥[å<ÃzúÚVè2$¥sÓ³)„ª®„«¬J—Îm$‰º‰6[&œ~Ü«nlQ燂e  ŒÝÜ·@—ëlc™aÊ/€C ôJà·®'±õr™Ø¤©P˜Æ]¬\«ö”#mÕ:8z;»é+€ÔDBÌúØ8Л0¬Ë"K™M’å5ŽZØÙß4YnQêp*FÜ l ¼² ¥?·êØý¸4;4\#òÓ<€´ŸÀ£pÂZig'ÓÐoDObDÊõ÷D>ÔÐß;K8#jèÖû^급£Ç—ÃÇôë„Gî}ʸ=ñýQ,Êj—ä_}xcè}†½ä×É&úc{"¸<‚À²¢cc‡ ÒIlr¢Œx"K讉ô®îœ­k6ý1nرl«eŠÃE²›¤d¦lŸ5d¹oi¡¡Ú:2ig_9&l5ä`êËo!¡¢Ç~âO¸gÖÔ”×®móß /òÖ÷=Z=ÊÕÀ lJxn',‡ÎÊqÝUÈ#$û=ä­¯ˆ<²-{¹©’Ý.­pr¼Wd›ªºG×VE6dYÝŸpìñc`#ö°ÅGèàö þ¶µOó“àHöÔBd:ÂÅ ÏÈü¯¯—´¹»oÇug…× ¨ W†H¡dõ°Ôó¤SZÀš;5¾v­Ew”X|ÂN;f/1·Iâ›»¬ÙúÅMÝmNðÀ¤ŠcB€Äl/9ÂÖšIhņ­>%£I$̓=ò/T *»Ëôö 4.5žSg».ê\r†¾æ CË.ö6Õ;®QtTJÆ‚’$f¶ Ó(%úAZ¸q&S4 õF˜c— ´înAã. Ìen§‰8ÌuQ`¦ÆÝå$Ìâ¸w½‡$oÒªØà=Þ}5ÁÌ`†ÐaJ[$ŽCyì_‡ÁD|R¼nÂ;4 ÃæÀß–üm9m›m ¿€|‡šò~ cgÙS‚Ù/üý’Û«ü8çÈZSZÿë m¿^tßFªj¬iz¬9uI¡½KJvØ/E¡v c¥a¹¶#ÉdE¢šèH=‰©‰;'{.ìW¥ŽC"È úÂªÃÆÝ6-F(V4û!¥®Ût4©£ýwt3\yL¬þßF’´{Ä6”G¼ t7‰ ÈA{³ëÁ"k:«ÇÙãë„ÿœç3‘O!ÔY[z…Ë{ôöè7Û;å”°endstream endobj 567 0 obj << /Type /Page /Contents 568 0 R /Resources 566 0 R /MediaBox [0 0 612 737.008] /Parent 571 0 R >> endobj 565 0 obj << /D [567 0 R /XYZ 110.854 636.116 null] >> endobj 566 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F14 570 0 R >> /ProcSet [ /PDF /Text ] >> endobj 577 0 obj << /Length 1750 /Filter /FlateDecode >> stream xÚÕX_oÛ6ϧðÛ¤¡âDR¤¤¾µ]Z¤C»!3Ö ëd™Ž…Ú’!ÉK³O¿;éHŠwC_Š1y<òŽ÷çwGñE |ÁyÌ2•,´ÔŒs½(÷|AŸ~ôÓÅËåůe ì,Wj±ÜØíËõŸ#Çq°¼ú=Œ„ŠƒŸ_¾½|µtãë«Ë÷ËËiöËu˜íÍõ‹wï®Þ¿\&i uø×òíÅå$“R2˘J$ŒQÇ3FRJ¦„‚f™çø¹f1Üâì¹ l"OX’(d¶÷3=¼?;ÂHƒʦÞT74ŽÖUkʾjjšßâ 'ŒgY?1ã°€g-·†G’„`2ãN\T쪢›9.ˆÌq5’-yÚ&ä*ø»Z›Ž(M½»£QáxŠ]oÚºè«P'²Z¨‹½mš–=)¹ˆtÎDœ;+i+·8vUYðÎá7m±ß›6T*`a”I\Õ(C xšÜVëÓ‡lQªýagö¦îé<”Ÿ|‚ÒÊfmžR)1ƒò°³h«bµs” o­ò ë«ÝŽHEYš®3k7ëfŒÎ3ÍT,œ=×E_|ŒU|ïW˜ñ/pP/Õ¹ÛöŒ8’xèvs&R>²[Ýô³:0¡³žr–J(lšTQªYg‹(L€ˆê˜)»ØÞ,üðúÍi[²8IO ÚÎSŒ;¸ª«¾‚ýÇ…f}³qÙ\AlÐø·0ÞKÝTQ )‘$ç’ø05RqÒo >l F¹ÖA?>ÒˆTÕ]_Ô¥¡*@-[Sôf±•';"ãM즾#þƒ»‡ç–‹Öx)Î,r*XÝ™‚€RroB’TŸq¢Á¤} ZVeG‹+™hh­ŸÅ ž(ˆå®.ù`o|mÊ™ É!È÷‰yoúm³&AUGBJ¸¿YcêÆªµ <›‰D²$ã£$=+?e1—N~Q£@8ü·(• ܳ%ºWÇÖ°Üo­ß8y¶74x–{Wó¦5ŽÔ7n©‹Ïœ&C—tG„?‘£©‹GŠÂHn͇®N—·E(âª"ee0$‘ðñ`Z„c¤â ÖÈwìNz˜½Ó£›‰¡îXnmæ/xÊ”£óÒ* éw¤âTa Ycá`¬VwôÛû“6Ínׄ¾ë"•mŤ*ØL^C°ešŸKlQÄÅ—Vé³lb¹p|&ø\ÿótª±byšþ'=‡¡_{sÀ€Ëþ úž+¿¹«]°@®Ø Ñ)¾³éú©¶ ~tSVãXX€…ÕÝd¯…´iÕ®Œî÷hí”Ï&B4¿G€÷Àc™[…ˆDPÐPY_chÛöè'Ÿ ¬ÝîÄÊÁ¦«ÑzÔ%Íiv>>oCÛïžÏ„g’³z¨¯ÔDbñz³ýc_}~ѶÍíËcßûv‘m;ßHÖ³$¨­¥ë$'©~SñZ¿Nœs'sdð=ЭmŸ, ¸³÷†mG†*>…™‡­‰JXEÂÅ×óo%¡…xNµ¥Úмs+<àDØØ«vMWXŽ=MœÅÄ0ûqÚlf×}ö#¥rç²ÅVõcí…¹{à^xa[¹*:ÌU‘p_æ€k¨ðUn‹Ë| íÀ)óqÇ8óE"È 2¿ [ÛÕ¾Ù¾õÓyîŸd˜ÅÅzMƒï—£ìgsÏÆ©Ë3/Ìÿ‹ ·_  Ê¡QÍ}ï7@Œ™§ <«¼À§¡$I™NÀ'J¤dß”Hì òœªe¢ˆàHàVâ®! N°Àj_äaamhé¸ë‰0ì(àˆq›(›Lø;ïq–zÿP—ì‰ã?}àég\׃§ïÂS"—»¢s8°60iÈù ›)$ zø ¿ ±4þ‚7®`9fLÁ«ýÉwî2L“àîàĿښò›m¤„;T°D¤_òˆÁ ùÓòGÈAV˜”ždè7)éY€”bæKC zäÞ{½ÕÜnÆêCª†-xhC‡¦4ëcÊ40³ß8Ôà‡}Fá±Ö öÛ­q/6éê,öÛ‘…{dì|o‰ ¡IpI–=zKÃYR‰‰(›!„¿¿1}º²GÛŸÓ³]Š ˜@ü¤„‘öÜ{› ¼m ¶ –“Òk+½³Ÿw¤òŸw¢'s(L+9H"÷u/qéýÄgÒFY„kŦ§‡ô€Œ°r22š#æþ£ä¤Ž*ðNšŸ‹î³rÿ.ý†½endstream endobj 576 0 obj << /Type /Page /Contents 577 0 R /Resources 575 0 R /MediaBox [0 0 612 737.008] /Parent 571 0 R >> endobj 574 0 obj << /D [576 0 R /XYZ 110.854 636.116 null] >> endobj 572 0 obj << /D [576 0 R /XYZ 110.854 502.555 null] >> endobj 573 0 obj << /D [576 0 R /XYZ 110.854 105.669 null] >> endobj 575 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F40 126 0 R /F46 134 0 R /F14 570 0 R >> /ProcSet [ /PDF /Text ] >> endobj 582 0 obj << /Length 1443 /Filter /FlateDecode >> stream xÚ­koÛ6ð{~…Wìƒ T¬ø”T`úH‹´hWdÆ0 ëEbl¡¶HrÜ èß‘GZ’-ÇÃ00Çã½x/ÑY?:£4"‰3Å¡TÍòÍáïûÌC/^/.^¼ã1“TÊÙâÖ^__5iEÁâê¯yÈdüþúÃå›…ƒ¯¯.?/.ßâîËõ\îýõ«OŸ®>¿‡‹”‹8PñüÛâÃÅå$£Rš…‚’|zÆ÷Œaõ=CǼMS"X¼¡‘=þ…¼®nË¥y‹y¨ ªz3–•2g¬²”k-åÁöíx«q±¯Zž¡Œ OäȃûK?-Ɉ‹m»¬sÜà=XÕÍ&[#‡pBs<‰F8BÈ€žOÓÃY’R‹3q7°èÀØGðÅÏ#ÿ¹–·ŽàëºÕY“¯ÜÖ±hqÙ9ï9n¿ãoþò®!ýyæ¥Ým›ªgð„cP(t†¥n“†æÙ®©M2O„À}¶Þºä¡£ÄŒù\¨&²K’4ŽÝù3¯ò.¡Þ¨3LÏäÍ)'Œ©ãç=HV(ŒÝ@Ç ÓØÒ}®»2ÇðˆCQÈ: 6‡±5Ê`F5Ê­²­+¤ék]G¶Ü˜“nNLV4%A}ŸªýÇÊ EÔÞ3ÃRƒ¢²ªpÎ`©M¼¡3ºÕ¶Å^Qv@æ%ívW®×Uu‡À;ê-/0›hL¤LG~aÏ 2\œÛ» }i·Û²Åuì:@ ëz–wÛ›u™#<´þ9  ûu+ÏiÔ;@É¡²è g«ŠÑDXól½6‚™RA]å‹ €¡¯`[ß"e†[¯YOéßÅ`ŒZ†¸Ðn6e…b@ôÃnÕh´m§ïÚ‰r¶Ñ•ICË&»©çT‚LøÓä°á˜BœÊ‚=¬Ð `µ‡ÍræÁë÷ò8Sû^b'Ñꆓ/ÞtÐæÏyʦæM]™]n› «‡A~Òݪ.Ú‰öÈ|{ªëºˆDIúôHò궳DžXve±ÔÂeIfŸÙîZ\óFCæ& ¤S zÛzNyV9–m[.\i;ùàf(ŽeW»™q+ÇO; s™RlÇ)â}ò½KbcÝIæ¡HyðÎD‚Íj* l~d›;̦z.2.¼ˆUV-õTøMÏL&ÁR_‘ÿÓ¬„a³JF'¤ÄP¹…¿L²¦™àÏ)Q u4ý[¦õT+Ó¤÷š±Â„ÆÜËœˆXFâÿ1ÐA‹˜BºÓ£œµÝöaœél$؉á MW“ f85À+“˜ŠCÜvüVÂMÉ€Ë2XaP›Ã)ëuóý9Ö¯‡z‹øU6g‘«Jã…6Ü*‡Íža}²‚»F-EPÔ6]Ú9wq(hË&ÛllÃS:M×BÆ(Fƒ…'=Ò 6áiÖ eü«D6­‰b}UVæ3íÞ8§vý v+U}ÖøŽæî»(Ó¦ZDºÓè "Ú+-"¬?ÂçtÏ÷”ÚØâR—ŒIêÚªÁ í2冥è> endobj 579 0 obj << /D [581 0 R /XYZ 110.854 636.116 null] >> endobj 578 0 obj << /D [581 0 R /XYZ 110.854 247.404 null] >> endobj 580 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F14 570 0 R /F46 134 0 R >> /ProcSet [ /PDF /Text ] >> endobj 586 0 obj << /Length 1444 /Filter /FlateDecode >> stream xÚÕXKÛ6¾ï¯0Ú=H@Ĉ¤HI4i7Á¦HZ¤>hzez-D– ‰Ú‚ü÷9¤mÙr6is)°†ä 9œçÇ¥³þèŒÒ˜d"™I. ¥rVn.è ÿ>Î<õëÅËùÅÓW<v’ 1›¯¬ø|ùW ÈÆq̯ÿ #&âà·—o®~ž;úýõÕ»ùÕ/8úý}˜ÀÜë÷/Þ¾½~÷)OÒ@fáßó7Ws8•âYFDÂ>£ŽgŒ1ƒsÉq¸!T¤Ñ ­ &Ná†ÕÇù¶è dhN¡¹5©.ª¦Ç‘MOC4ʆ90ÅÍÞvù½cžÈÊ,%9O¾ªŽ$ýl²Ž˜ý!‹ƒAOœ!R’æÞê>\"—·°˜É±avJØPšPD–û‚¶·ÏØ™KJNDîøÛz9åY !Gw3FnPd*·½ÿ½Z 5Ò6Ôv‡[⸶ۛR)Hž&£<ôõž% |¨–=’º5_”kU~tS¶±í¬¯o«vpÜþ6Cãï zä*³´PÐ\­‹X®š#QW.íƒwo#³HS"Àć×F‘…ùd~Ø*œÀ[Ñ80Am–°ðæÁR«5j‰Ó¶îvÈG÷°ÙE\ãÒ]U×(´ð‡Ø¤Dzw]£ÆÚ3x¹@œ¸ïÌLæ{O‰ïÏ€ ¶d:QgÏ1ª¥‰;Hæ§þx»²p“Ð?‡•Êv¥,÷!}doNÌol`S¡/B™Ï½/TÔN*Ží“®+Þ´z»åý‰cÈ×+} 1’ýDúìøvíhÜtP×]¾8„ÂNÊNúÝÐÐXÓNé¡sî¸<£íwÃP"ßÈbqvXn}ÔçÉš¥ýaÙ† ö¸ ¾7Ž_3ð8àÌ— )ôI–zô…aÊ0â7è§PƒÛÝëól×¢Ú ÓƒÚñ¥Ó­àDÞØÒ>ªFžª|Mp6<€bOpì‚7Ô ¤–í‘ÌDµÑÖÐ;F˜ï¿PWhND*¿W]ÐøW•ŸœñƒòC§Êχ˜¦ÇŠT”~“çŸáW÷PùËJ׈Imš2 E]4¥:„ʇ(Ö­GB'-ÜLº~š±&AϼÙ)xÆÑo,AÇéK"¥çºj”"'Q!àÅC!*’„Àcÿ1#?úß‘!W…6endstream endobj 585 0 obj << /Type /Page /Contents 586 0 R /Resources 584 0 R /MediaBox [0 0 612 737.008] /Parent 571 0 R >> endobj 583 0 obj << /D [585 0 R /XYZ 110.854 636.116 null] >> endobj 584 0 obj << /Font << /F37 124 0 R /F54 188 0 R /F14 570 0 R >> /ProcSet [ /PDF /Text ] >> endobj 591 0 obj << /Length 1799 /Filter /FlateDecode >> stream xÚÕXÁŽÛ6½ïWøVˆ‘”(©·$ÝN‘4ØM‹¦Y¢×DdÉ¥l¶Eÿ½C©•,oœC X“Ãáp8||3]„ðG”†$£…à‚P*ÅáŠ.ðïÓ·~¾z¾¹zú’' N²8^lvvú¦ü#Ë Ã0ج[®X¿<}ýbãÚ7ë뷛런÷îfìÕͳ7oÖo_ÁDÊ£$ÙòÏÍë«ë ¬ŒNñ4%qÄ¡ýˆ;^qÅ㌰$…† ©`—ô)'sví–htfKCšœº“,I.;C0ÇöφìFv}[cLº½ÄÆ¡)ÕÇ0d²Äþç%‹ƒ¼êÝð®m'3Ц6nû6ïTãìd·oJb܇ $$Š³ÅŠqÂEj×^ï–+‰à¾éM# ÊuÓ¡ –Æ#ê”4Kƒ?ðO¶­*¥ÝK<}ý$›®XÒ4èÜ Îpâ ‹ u0²¼6 Üw{Uߢ÷4!±ñžF$Š„õÞE!J] 1}V<Ì‚uí§(íæäÚ8Ë¢ìÁÎfÉã@}ÁκîZUkU¸ wªª°•ë% ´º­Oܨ¥‰Âõ<œø|rfï“c„uº¼.äøØ[•o+òM‹ ˆ+9…å*ŽIHÿ %IšÜ…$¶ƒííÂ7o^ ÉRS @M˜‚«s˜¾8‡¯76²;yíÀú®ßVªÀö¯ËŒMw°®U§òJý…vN·à\b$bÉ¥û¡e! q§ß°—K6n@»315[)”¬ 33bð—ë¦Ö ÂC&Ì!ÂðqaH¢{k으ªìÕ…vÙ·Ķ=Uµ‰Áê @|\VŒÑ Ù™_ææàèC Â18´Ewh/´³·ÎL¸[Rs2³Ó Pd!66=ß'Œâ>QÁOÞʉ۱u{Ø1å£4 rìó¶SE_åNWÎ ÷iÑ´'¹ÝMo­žAṺ¡Sp—mIM©©Kío©tÑìœØà—S˜ªÕq˜í× ÈŒ2 I¡¸> endobj 588 0 obj << /D [590 0 R /XYZ 110.854 636.116 null] >> endobj 587 0 obj << /D [590 0 R /XYZ 110.854 505.111 null] >> endobj 109 0 obj << /D [590 0 R /XYZ 110.854 364.71 null] >> endobj 589 0 obj << /Font << /F37 124 0 R /F14 570 0 R /F46 134 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 595 0 obj << /Length 1180 /Filter /FlateDecode >> stream xÚ½WKsÛ6¾ûW0“ Õ !<øì-NWiãt\v¦¶ÓIÚæ˜$8|TÖ¿ï R–LE9utÀb±Àî~»ø@1‡Â9ŒQ¾Š0:Y}Áü=9“ôÓÅez±þ("0'I8é½ÙžæºáÊc”R7Ýü¾òx@Ý/—Ÿ®>¤V¾Ý\ݤW?àì—Û•ºëÛ÷Ÿ?on®a#~äFtõwúéâ*Ï”ˆcøäáL†ÞdéqŸ$Ô„OI`V»go¯çÔñLÆÔdå‡ó‰€áeV$²yý¬d^6˜ÁðX pSlQøPɾ/úã À ' ãçÐá$$¤bgäßúQVÕnî;í—¹;5¢É…±/P8ôE+;9XeŸue; ü¥¼²úAÙõAu“êÑ eÝVE]4ƒ,•u¢îq,döˆ4ÅŠîV`²ñ‰¯¡„ ·eþP—›i˜ÈÊÕ[;̤‡³rÀq[Vv˵“8}P*G©Ì ‰K¬ujl'ÅB:Ö˜DMcöEˆ6 =ôˆÁä¼ìŠ ðÜé)ue“£>ë ¬‡ÙÖáæí«ÍN‚HØšYµiòâ Ú"¤$ä“Ý\M8õ^u(@ µ LM9` ÉœÂóÇ ØÓÕI æ#>‚‰¹ÌZi[é(¨Ä'”&ßPgF€!ê¬{CIÚÛ²‡0"tÎzPªêuÎå ?Œú„Í×vê¡“õ”´®.A|Ø ªžÚc[–Ò•€ öüý'2ØK£³¬Èñ?OÿLÊC´3äy€ÁDž\¿˜üDñ/2É¿Ìk2MË瘰õ€æ´ïnK'„‡ŒIdŽKkÄ&úó·qv|ÛyâÖc? tg5ØzšnxìÞíP¹Ü!LÇ7ú•Þ0Þ;Có8/Ú߸–M£l8ú)BR cGѶóÚÀŒ²Ë—Ú—šLÁižù§~:`œS­U]#ßš×ÚPžæ®Å>Í*{·™âMÃüÒdú²M´%^Ñ–ÖÌx ËG 8‹Èÿ†2s¸²ÑA™á]ó¡çb@0o½­Ci"s3±O/ÖhY'x=fØ&1ßÓ9P Tا¾ûca¾ À¨ì­NûZš'ļ¨®Í¼¡ÕûØ|—ØÍXùxÿ𘉥‹÷×[xx;e¬/ÇaPö 2 ¼"xÛš¡ ·)÷ÿ_šyûưF¥2Y­ïÊFóŶìOqL%Û¶h,7™o¥nͯQ•þ¬„WÃxDãµEaƒƒé-˜.ÑB½Ã1Õ0wj†ÒXëãß,ÀþvA7,@dסäáC\N+Í ­Ìž^ì;UAA)‰Î?gÿ(üö:Ïendstream endobj 594 0 obj << /Type /Page /Contents 595 0 R /Resources 593 0 R /MediaBox [0 0 612 737.008] /Parent 571 0 R >> endobj 592 0 obj << /D [594 0 R /XYZ 110.854 636.116 null] >> endobj 113 0 obj << /D [594 0 R /XYZ 110.854 611.21 null] >> endobj 593 0 obj << /Font << /F37 124 0 R /F46 134 0 R /F54 188 0 R >> /ProcSet [ /PDF /Text ] >> endobj 569 0 obj << /Length1 795 /Length2 667 /Length3 532 /Length 1237 /Filter /FlateDecode >> stream xÚSU ÖuLÉOJuËÏ+Ñ5Ô3´Rpö Ž44P0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22°25çRUpÎ/¨,ÊLÏ(QÐpÖ)2WpÌM-ÊLNÌSðM,ÉHÍš‘œ˜£œŸœ™ZR©§à˜“£ÒQ¬”ZœZT–š¢Çeh¨’™\¢”šž™Ç¥r‘g^Z¾‚9D8¥´&U–ZT t”‚Бš @'¦äçåT*¤¤¦qéûåíJº„ŽB7Ü­4'Ç/1d<8”0äs3s*¡*òs JKR‹|óSR‹òЕ†§B盚’Yš‹.ëY’˜“™ì˜—ž“ª kh¢g`l ‘È,vˬHM È,IÎPHKÌ)N‹§æ¥ ;|`‡è»¸º¸º:jCã,˜™WRYª`€P æ"øÀP*ʬPˆ6Ð300*B+Í2×¼äü”̼t#S3…Ä¢¢ÄJ.` òLª 2óRR+R+€.Ö×ËË/jQM­BZ~(ZÉI? ´©% qˆЩúI‰ÉÙÅ9‰Å`aLÿ99åWTëY*èZší344S077­EUš—YXšêé¢`j```añpriQQj^ 8aÃÆOˆwjjEj2×ÍkùÉÖ-YÓ·µ­¬s]|a«>çÏk_Þd?±£nvfJm°é¼@Åô’%¯>ÚÚwX<û¢„W²õTá¢-’½~=q_ ¯ÙÚµ`YÄ„Óýz7‚Å+›»¦ñþÓVåy¸0lÆœÖGÒVû‹ÏêTÖ¹ùE¹þϼ”NQ‹÷}¿w[H+h’–’”ùÍìwÅÄ+ï>¿,ÿiGýôã¶ÉïÎÞòñ /vëR¿˜fÇô%ñۮش²‹µŸ9¼òâQ¹DÊÿžýÑod;”ÚU? ^Vñµ«Nºúú©vñK¯{~­ñçäÚ/ëtôî…Ã-Çé÷7¸ï“õ‘9ñØ8ã·Ô m¿i"é÷Œ™6=Û!y:ëIèÆõ†íÿ_°K-­û±,1{Îö)².oª —ï¶ý*Þ[«ç½mFäû%»s_Û-j(lå¦sÿÏùœ~gغŒ|K·~›¶#£ïµ¾øÓ·&g®]p_ò¸!—GrnM`ìv®^ÿD·l½ŸÞë>Z`æ,ø&Á¦ûüãÈÝ7ƒ×ÆÛÎìÉ{Ø·úìeYÓã/ï-àpìòçpý3ËLXcµ:säɘ٧OËÍÛýyÍ1÷#ýu¬Óä”,™™ÿ¦U)MùÊPÅãPQÆÆSÝÚüµÂó—ÊÖi’Þ‰÷_µ]7`tçžlx~FóqéFÉDZIî8´>÷ö±ßùîÌéè»Æy§éjå&/Ÿž“ÿEí…Zþ [%ÿI¾óZÒ¼«×ÎÙØ/Ÿçy-¶ÇÉ—#ߘU)Ð)õÜïçãw¿px»Çkû>WÏõ÷§ë-˜Tµ2~U]Ùg¯«‡ßÍX­÷³òZà‰jEO-Z˜_ØÈ¬¼±ÊèÆ?ÖŒ›J vMOýÜ7J§]8áîf°øþí’»vÁ_¸¹‹üÖ„7xÄh›t*ÉÌ€BÀ5jÀ°0 9'5±¨$?7±(› íF«„endstream endobj 570 0 obj << /Type /Font /Subtype /Type1 /Encoding 596 0 R /FirstChar 15 /LastChar 110 /Widths 597 0 R /BaseFont /DEDEEA+CMSY10 /FontDescriptor 598 0 R >> endobj 598 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /DEDEEA+CMSY10 /ItalicAngle -14 /StemV 85 /XHeight 431 /FontBBox [-29 -960 1116 775] /Flags 4 /CharSet (/bullet/backslash) /FontFile 569 0 R >> endobj 597 0 obj [500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 ] endobj 596 0 obj << /Type /Encoding /Differences [ 0 /.notdef 15/bullet 16/.notdef 110/backslash 111/.notdef] >> endobj 297 0 obj << /Length1 776 /Length2 1036 /Length3 532 /Length 1599 /Filter /FlateDecode >> stream xÚíRkXUFÅGÊ@¼ZgÓ VÜevaYvp¹¬n°Äe½Ê:s&fgh˜Ýv[Ä21“2³@Ɉ›¦ )¦ryQSIKÑ­¼˜™¢b‚·ÌÇ'úY¿zšóç|ßûž÷¼óžÏ‹‰*qz9TÑ+‹Ä ¦Ñ¨Å(àö(Šðùa Ô±M…ëX¨b¹Ü¼b$Ä 2…ÔW!•!|F§["%•^a‚A’ ( !04:68 LG‚x# k%I‚¸Á f@Æq"œÀX°¦â3èIMéi {ÜÆéO d28SÀkȦp&qš"-‡zÄ'šænƒœ—ÃÖpq•‘$£u†Aù¡¤þ†ë iù“AÒ,d€†Æ!C §.„Íi N ÃQ5«# LI¥Å~"ÔïqŸÈPfˆÇ,– ô:2õ!…wÂå7äÃ'TáýçÓ1:‚bµ–tЧì¡Zü´æBb3H@E(*æˆÜz²KvY…Ñ8A¥‰ÔèFgA¸!â*)°ŠAáÐ  ™sì#¢h–;¸dV=Í ƒïê/>)ƒ£Æ…ÅÈßÿ$4”6[…¾ ”H9eÔ/Ȥ芿çSÄëF¨R4@æ êbF†;4C\JOj=Á ¡bˆ½•ÆW¿¶©jMYVDé©òÑ‚Œ©ùÛWŸ8˜½/?PtíBàø³LõwZøÂM×l×׈.y×#¿ôÁõÒKîUÊL›5Þ'»ÍÕöìAñ§ñcz°k‰KG66yÎPðÞû‹éÕÞ=?Lï»h:8zwÔU±¬Äýú:Dzs­ne¥­­ò”$èqzu.?.¹ÿÿæŒo'Ý»wá÷G9î =˜•ç0e×È…Þ[BL^Þ×'P÷ÑgÖÚx‹u©_a•!ó.8ÏÉi4|ÒžY{WÉ¿kB뎵Óí䪢߰©h–f‰÷W5¶‰fùâ£Ôìö’¿mÈÙ"Yª K¸\§=çÝT±ÿPi¸[Å»ŽI¶•ªtFÝÖ:™ì65p¢‹2±S R×Û·˜7t¥ÖgŽ—ôOÛ©ð/h¹xù»¼ù¶êëÛý§e¾üŽGÚzQ—v¦5 {ÔÁÈŠdË©€Š½¶ã“<7áÚLa즴e‘ek –^ùØÜryå ñ¨¢ÌúÛÊšcúBfØí¹²o¦ ‘¿¬¹¢—uÙs¯$YÄ,©k8B1Tç®~«IR÷ê2i`bÊÖàíq[·Y?\ÙÓ{ÎoÚ{Ë…s{[‡Ü==âͼ¬G«ï´Í5:»FÔœH°SWÊóÏ¿DÈ;Þ©ßêjœ´èË—ƒÜwúùîœX¡ÄU¯µ¢äbïu#Úøxm‰¡bŸÐÙªKñ²O±iܾVßžBÙjÓsÖ¨Xþö–æ-ðÉêl›³ÏŸÇFÝ-QPñ/««È™#Ï;Þ½•7¥³y»àÌ<Ùþ¢õxÈOÅ1Kî]<=`|Ë­ùúº“?ðÕè5âs“'ëM;«=êÇ]N‹:ºñôŒy)³Ëº¦“W]óÆ|Üד8Z¢c<Œ‹N¬‚·–¯wÙã–ÙT—ˆà¥.ûÎZÖÚQ©)ý(jâæ,lcAn™}õd5›ýlßÅþcêØmïÚºèÍ{Fî¿úBvJKwㇳê“fÈF´Œ+pŽ,u Á„Ùqg…ÝÏ[÷hr&–; »{‹š¹ƒýrªðín¥Gy¯wVAÎÍÀ7.•8¬½vẕ†‚Ö!÷U Ävm®¯gûÙ]}Å*Oß~”L‹:¾ãÑý‡‰± *Ч%màó%¦þI•Aµ9ßžñ»l•…š&åõí05Ó÷R‹²D.¼yͯ./û ý‡ò¿ÀB#¡ŽaiƒŽICþ²XÅendstream endobj 298 0 obj << /Type /Font /Subtype /Type1 /Encoding 599 0 R /FirstChar 62 /LastChar 62 /Widths 600 0 R /BaseFont /BFDDEE+CMMI10 /FontDescriptor 601 0 R >> endobj 601 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /BFDDEE+CMMI10 /ItalicAngle -14 /StemV 72 /XHeight 431 /FontBBox [-32 -250 1048 750] /Flags 4 /CharSet (/greater) /FontFile 297 0 R >> endobj 600 0 obj [778 ] endobj 599 0 obj << /Type /Encoding /Differences [ 0 /.notdef 62/greater 63/.notdef] >> endobj 261 0 obj << /Length1 793 /Length2 1151 /Length3 532 /Length 1736 /Filter /FlateDecode >> stream xÚíRkTSWÅqäYRyuÒQ*ä!d0aRÑðBîI¸šÜ‹7 Ô¨èBQ@jXH¡‚¶)ˆ >¨ ŠVE…Fb±ŠÄ1ФLÀºº†þœù5kîùs¾ýí³¿}÷9”…a|7‚ÇÃ@“»ÑÝélà£3€qO£‘( ä(Žä èÞÞ^à‹$ `°m9›Éb3™$ ðÇ•*Nƒ%þK'I,À‘B 0"'@©QC(>.D¡\é8 X7yBÖA$’!âN¢Ó‚ å ŠQŒDôÄÃD8`}€‘¤Ä­dHÈŒ¦À’)›KÑ$‚c%@ ˆD ÅÓ ÑËÃÖtñÀ$‰$T ”ŸJê}•(càÒÄ$9$@Ž@›N‚Ì…@M’Nïòä *ä`b ntOwšç•¢ ˆ„¡ra $28…C ™îĘߔª?‡Ëñç~þÛÕN5Ã(&W&B@û=UÓ¯!¨l ¹Óht#Ѹ>î6N¶ âЉƒé!P’hF)“ RéŨPatLuÇp¹ñ0&“D8Aš¼W/ J L6‰~€*ž|{Æô&±?þ—‹+RÝUý£Íe‹yKK‹ù³G„ƒ1±3ÚKÚZ¬¤G³žè\úë?¹·øUorã,mðuŒ<¼Ç¬²»kܾ9ãúy!²øñ!ÒÆ’sÁù0²¿7§ãÝP^†ëÊÛícŠ_}ò«ŽÜr¿s³Þ¢È{oIÈÌ®ãÏ7ióG–T¶ zô…—T¯Ö…™:‘¼°ºq;_¶õܪxÛGwuÞ9²Œl†Ô35]ïàJoÀ õ™÷vG- ïPö·*ê[3”34³¬iÔˆWصحø“óiÎ¨ÄæÉ³­w»Uæ6?ŸŒ°vªL¾vòšûìÖJü\†Áò¤&§ÁÜõåê/+ʨ6åÍ\|”S{lŒš ŒÉíù2Š™¡Ý±¥£)L¡¿ÓgI9öò±6°ÅóF´«c¿A³ ´¦<Éê“ÏOÿ&¤àî§ÏÕúïúy<—Í`Wœ•Ïò,·®MŒ!Ù!)c†ÇìÌ‹ ˜/<Üw„ª,-Ü-)HÝ6÷èéZàÝò×3(‹ŸÌræÓE©5ͺ4ñ­Õ®¹ÆU/{½-æ}Nkü&Iìûv}FnŸêi4ã>™9wEAxêõm¥ê€ˆjvˆ,ó5ÒMaæbÕ™w¡ÊÁ3Ó*‹ +į¤åOØQè#”ý‘¬U3vn,}ÒÔ:¦Âëo_òô¤Ïù{ôØè¨ãTúlÎËA«n‹­®{I¼m¶3rG‚òV?dD"4ßx¾œõ~OœI‚KŠwB]G­Æ T ìM]ko§˜ù¾ñpIõ«¯Z”: ÷##¸ç¯¥y;Ÿ ÎàýË&v ©¤õQEÚ?œïŽ‹ù[ŠÉõe7sçlÏÔGÕX(†4Þ`›¿Ùw¶]ÔC6¬>7,òÔ6=Ïvs=µßû…¾+:ˆ5 §màK+=¼Ú³²GgùÕ-“Û+|VßP§›. =•x63?â´IÐõõ¶¿¤/jn rn6>á§’7=ŠýÚi{þñ+!"Ç•Ýsxrõ»2®Ù¢â¡_‘à܉{á—³ú^¯õ¥_wh”5'Y;½|w;)ðˆ>!ã”~‰ÇpÓÛÀZ—ÙÄÄ‹Ê3ßuK[¹üdÛ‡V~ qŽY²Ì#ýâò 7„É?b"Û†b©ø¦dBŸþºÎ¥^×g5U«Ìž^ˆ½'¹Üc/tÿ¾íRŦ{£Ÿèx?•Ûm6AñI?ëoíÉÅ[H»Ý‚ JŽrª–Õç!{ûäÊçßY:\4;èþCóÂÕÚ²Ãu±¦Ë“²4E¦õ»Ýæw>¼’r›é•P1Ûd{Ÿ>>å-™Rôj—ÍÙáMW‡û—YØ‘,Õи:‰Ê<´|—ס ,}lHók¸Õ~1nm*½½Óñ³5ç‹ º³ë¶Ýì>ÔìܹFQRõ™G^ÛúÞ«ÙwÒ4ûR5Íú—¼Þ{gü3Nh*µ¦ßÚÏëËP¯Í¤ý‡éÿÿB r\* 6“þ@¨mendstream endobj 262 0 obj << /Type /Font /Subtype /Type1 /Encoding 602 0 R /FirstChar 60 /LastChar 62 /Widths 603 0 R /BaseFont /CABACB+CMMI12 /FontDescriptor 604 0 R >> endobj 604 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /CABACB+CMMI12 /ItalicAngle -14 /StemV 65 /XHeight 431 /FontBBox [-30 -250 1026 750] /Flags 4 /CharSet (/less/greater) /FontFile 261 0 R >> endobj 603 0 obj [762 0 762 ] endobj 602 0 obj << /Type /Encoding /Differences [ 0 /.notdef 60/less 61/.notdef 62/greater 63/.notdef] >> endobj 605 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl 22/.notdef 30/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 141/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 157/.notdef 159/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj 188 0 obj << /Type /Font /Subtype /Type1 /Encoding 605 0 R /BaseFont /Courier >> endobj 134 0 obj << /Type /Font /Subtype /Type1 /Encoding 605 0 R /BaseFont /Times-Bold >> endobj 126 0 obj << /Type /Font /Subtype /Type1 /Encoding 605 0 R /BaseFont /Times-Italic >> endobj 124 0 obj << /Type /Font /Subtype /Type1 /Encoding 605 0 R /BaseFont /Times-Roman >> endobj 127 0 obj << /Type /Pages /Count 6 /Parent 606 0 R /Kids [117 0 R 132 0 R 168 0 R 176 0 R 180 0 R 186 0 R] >> endobj 196 0 obj << /Type /Pages /Count 6 /Parent 606 0 R /Kids [194 0 R 202 0 R 209 0 R 215 0 R 224 0 R 228 0 R] >> endobj 237 0 obj << /Type /Pages /Count 6 /Parent 606 0 R /Kids [235 0 R 241 0 R 248 0 R 255 0 R 259 0 R 268 0 R] >> endobj 279 0 obj << /Type /Pages /Count 6 /Parent 606 0 R /Kids [277 0 R 286 0 R 291 0 R 295 0 R 303 0 R 308 0 R] >> endobj 317 0 obj << /Type /Pages /Count 6 /Parent 606 0 R /Kids [315 0 R 320 0 R 327 0 R 335 0 R 341 0 R 349 0 R] >> endobj 356 0 obj << /Type /Pages /Count 6 /Parent 606 0 R /Kids [354 0 R 361 0 R 367 0 R 373 0 R 380 0 R 386 0 R] >> endobj 395 0 obj << /Type /Pages /Count 6 /Parent 607 0 R /Kids [393 0 R 400 0 R 406 0 R 416 0 R 420 0 R 429 0 R] >> endobj 439 0 obj << /Type /Pages /Count 6 /Parent 607 0 R /Kids [437 0 R 443 0 R 448 0 R 455 0 R 460 0 R 464 0 R] >> endobj 474 0 obj << /Type /Pages /Count 6 /Parent 607 0 R /Kids [472 0 R 477 0 R 484 0 R 491 0 R 495 0 R 499 0 R] >> endobj 505 0 obj << /Type /Pages /Count 6 /Parent 607 0 R /Kids [503 0 R 510 0 R 516 0 R 523 0 R 528 0 R 532 0 R] >> endobj 538 0 obj << /Type /Pages /Count 6 /Parent 607 0 R /Kids [536 0 R 543 0 R 549 0 R 553 0 R 558 0 R 563 0 R] >> endobj 571 0 obj << /Type /Pages /Count 6 /Parent 607 0 R /Kids [567 0 R 576 0 R 581 0 R 585 0 R 590 0 R 594 0 R] >> endobj 606 0 obj << /Type /Pages /Count 36 /Parent 608 0 R /Kids [127 0 R 196 0 R 237 0 R 279 0 R 317 0 R 356 0 R] >> endobj 607 0 obj << /Type /Pages /Count 36 /Parent 608 0 R /Kids [395 0 R 439 0 R 474 0 R 505 0 R 538 0 R 571 0 R] >> endobj 608 0 obj << /Type /Pages /Count 72 /Kids [606 0 R 607 0 R] >> endobj 609 0 obj << /Type /Outlines /First 7 0 R /Last 87 0 R /Count 6 >> endobj 115 0 obj << /Title 116 0 R /A 114 0 R /Parent 87 0 R /Prev 111 0 R >> endobj 111 0 obj << /Title 112 0 R /A 110 0 R /Parent 87 0 R /Prev 107 0 R /Next 115 0 R >> endobj 107 0 obj << /Title 108 0 R /A 106 0 R /Parent 87 0 R /Prev 103 0 R /Next 111 0 R >> endobj 103 0 obj << /Title 104 0 R /A 102 0 R /Parent 87 0 R /Prev 99 0 R /Next 107 0 R >> endobj 99 0 obj << /Title 100 0 R /A 98 0 R /Parent 87 0 R /Prev 95 0 R /Next 103 0 R >> endobj 95 0 obj << /Title 96 0 R /A 94 0 R /Parent 87 0 R /Prev 91 0 R /Next 99 0 R >> endobj 91 0 obj << /Title 92 0 R /A 90 0 R /Parent 87 0 R /Next 95 0 R >> endobj 87 0 obj << /Title 88 0 R /A 86 0 R /Parent 609 0 R /Prev 75 0 R /First 91 0 R /Last 115 0 R /Count -7 >> endobj 83 0 obj << /Title 84 0 R /A 82 0 R /Parent 75 0 R /Prev 79 0 R >> endobj 79 0 obj << /Title 80 0 R /A 78 0 R /Parent 75 0 R /Next 83 0 R >> endobj 75 0 obj << /Title 76 0 R /A 74 0 R /Parent 609 0 R /Prev 63 0 R /Next 87 0 R /First 79 0 R /Last 83 0 R /Count -2 >> endobj 71 0 obj << /Title 72 0 R /A 70 0 R /Parent 63 0 R /Prev 67 0 R >> endobj 67 0 obj << /Title 68 0 R /A 66 0 R /Parent 63 0 R /Next 71 0 R >> endobj 63 0 obj << /Title 64 0 R /A 62 0 R /Parent 609 0 R /Prev 47 0 R /Next 75 0 R /First 67 0 R /Last 71 0 R /Count -2 >> endobj 59 0 obj << /Title 60 0 R /A 58 0 R /Parent 47 0 R /Prev 55 0 R >> endobj 55 0 obj << /Title 56 0 R /A 54 0 R /Parent 47 0 R /Prev 51 0 R /Next 59 0 R >> endobj 51 0 obj << /Title 52 0 R /A 50 0 R /Parent 47 0 R /Next 55 0 R >> endobj 47 0 obj << /Title 48 0 R /A 46 0 R /Parent 609 0 R /Prev 31 0 R /Next 63 0 R /First 51 0 R /Last 59 0 R /Count -3 >> endobj 43 0 obj << /Title 44 0 R /A 42 0 R /Parent 31 0 R /Prev 39 0 R >> endobj 39 0 obj << /Title 40 0 R /A 38 0 R /Parent 31 0 R /Prev 35 0 R /Next 43 0 R >> endobj 35 0 obj << /Title 36 0 R /A 34 0 R /Parent 31 0 R /Next 39 0 R >> endobj 31 0 obj << /Title 32 0 R /A 30 0 R /Parent 609 0 R /Prev 7 0 R /Next 47 0 R /First 35 0 R /Last 43 0 R /Count -3 >> endobj 27 0 obj << /Title 28 0 R /A 26 0 R /Parent 7 0 R /Prev 23 0 R >> endobj 23 0 obj << /Title 24 0 R /A 22 0 R /Parent 7 0 R /Prev 19 0 R /Next 27 0 R >> endobj 19 0 obj << /Title 20 0 R /A 18 0 R /Parent 7 0 R /Prev 15 0 R /Next 23 0 R >> endobj 15 0 obj << /Title 16 0 R /A 14 0 R /Parent 7 0 R /Prev 11 0 R /Next 19 0 R >> endobj 11 0 obj << /Title 12 0 R /A 10 0 R /Parent 7 0 R /Next 15 0 R >> endobj 7 0 obj << /Title 8 0 R /A 6 0 R /Parent 609 0 R /Next 31 0 R /First 11 0 R /Last 27 0 R /Count -5 >> endobj 610 0 obj << /Names [(Contents) 129 0 R (Doc-Start) 119 0 R (page.1) 121 0 R (page.10) 226 0 R (page.11) 233 0 R (page.12) 239 0 R (page.13) 246 0 R (page.14) 253 0 R (page.15) 257 0 R (page.16) 266 0 R (page.17) 275 0 R (page.18) 284 0 R (page.19) 289 0 R (page.2) 174 0 R (page.20) 293 0 R (page.21) 301 0 R (page.22) 306 0 R (page.23) 313 0 R (page.24) 318 0 R (page.25) 325 0 R (page.26) 333 0 R (page.27) 339 0 R (page.28) 347 0 R (page.29) 352 0 R (page.3) 178 0 R (page.30) 359 0 R (page.31) 365 0 R (page.32) 371 0 R (page.33) 378 0 R (page.34) 384 0 R (page.35) 391 0 R (page.36) 398 0 R (page.37) 404 0 R (page.38) 414 0 R (page.39) 418 0 R (page.4) 184 0 R (page.40) 427 0 R (page.41) 435 0 R (page.42) 441 0 R (page.43) 446 0 R (page.44) 453 0 R (page.45) 458 0 R (page.46) 462 0 R (page.47) 470 0 R (page.48) 475 0 R (page.49) 482 0 R (page.5) 192 0 R (page.50) 489 0 R (page.51) 493 0 R (page.52) 497 0 R (page.53) 501 0 R (page.54) 508 0 R (page.55) 514 0 R (page.56) 521 0 R (page.57) 526 0 R (page.58) 530 0 R (page.59) 534 0 R (page.6) 200 0 R (page.60) 541 0 R (page.61) 547 0 R (page.62) 551 0 R (page.63) 556 0 R (page.64) 561 0 R (page.65) 565 0 R (page.66) 574 0 R (page.67) 579 0 R (page.68) 583 0 R (page.69) 588 0 R (page.7) 207 0 R (page.70) 592 0 R (page.8) 213 0 R (page.9) 222 0 R (section*.1) 130 0 R (section*.10) 488 0 R (section*.11) 513 0 R (section*.12) 519 0 R (section*.13) 520 0 R (section*.14) 545 0 R (section*.15) 546 0 R (section*.16) 573 0 R (section*.17) 587 0 R (section*.2) 163 0 R (section*.3) 164 0 R (section*.4) 165 0 R (section*.5) 166 0 R (section*.6) 199 0 R (section*.7) 265 0 R (section*.8) 271 0 R (section*.9) 274 0 R (section.1) 5 0 R (section.2) 29 0 R (section.3) 45 0 R (section.4) 61 0 R (section.5) 73 0 R (section.6) 85 0 R (subsection.1.1) 9 0 R (subsection.1.2) 13 0 R (subsection.1.3) 17 0 R (subsection.1.4) 21 0 R (subsection.1.5) 25 0 R (subsection.2.1) 33 0 R (subsection.2.2) 37 0 R (subsection.2.3) 41 0 R (subsection.3.1) 49 0 R (subsection.3.2) 53 0 R (subsection.3.3) 57 0 R (subsection.4.1) 65 0 R (subsection.4.2) 69 0 R (subsection.5.1) 77 0 R (subsection.5.2) 81 0 R (subsection.6.1) 89 0 R (subsection.6.2) 93 0 R (subsection.6.3) 97 0 R (subsection.6.4) 101 0 R (subsection.6.5) 105 0 R (subsection.6.6) 109 0 R (subsection.6.7) 113 0 R (subsubsection.1.1.1) 171 0 R (subsubsection.1.1.2) 173 0 R (subsubsection.1.2.1) 183 0 R (subsubsection.1.2.2) 191 0 R (subsubsection.1.2.3) 204 0 R (subsubsection.1.3.1) 205 0 R (subsubsection.1.3.2) 206 0 R (subsubsection.1.3.3) 212 0 R (subsubsection.1.3.4) 218 0 R (subsubsection.1.3.5) 219 0 R (subsubsection.1.3.6) 232 0 R (subsubsection.1.3.7) 238 0 R (subsubsection.1.4.1) 244 0 R (subsubsection.1.4.2) 245 0 R (subsubsection.1.4.3) 251 0 R (subsubsection.1.4.4) 252 0 R (subsubsection.1.5.1) 264 0 R (subsubsection.1.5.2) 282 0 R (subsubsection.1.5.3) 283 0 R (subsubsection.1.5.4) 288 0 R (subsubsection.2.1.1) 300 0 R (subsubsection.2.1.2) 305 0 R (subsubsection.2.1.3) 311 0 R (subsubsection.2.1.4) 312 0 R (subsubsection.2.2.1) 324 0 R (subsubsection.2.2.2) 331 0 R (subsubsection.2.2.3) 337 0 R (subsubsection.2.2.4) 338 0 R (subsubsection.2.3.1) 344 0 R (subsubsection.2.3.2) 351 0 R (subsubsection.3.2.1) 376 0 R (subsubsection.3.2.2) 377 0 R (subsubsection.3.3.1) 389 0 R (subsubsection.3.3.2) 390 0 R (subsubsection.3.3.3) 402 0 R (subsubsection.3.3.4) 403 0 R (subsubsection.3.3.5) 412 0 R (subsubsection.3.3.6) 413 0 R (subsubsection.4.1.1) 426 0 R (subsubsection.4.1.2) 434 0 R (subsubsection.4.1.3) 451 0 R (subsubsection.4.1.4) 452 0 R (subsubsection.5.1.1) 467 0 R (subsubsection.5.1.2) 469 0 R (subsubsection.5.1.3) 480 0 R (subsubsection.5.1.4) 487 0 R (subsubsection.6.1.1) 506 0 R (subsubsection.6.1.2) 512 0 R (subsubsection.6.2.1) 525 0 R (subsubsection.6.3.1) 539 0 R (subsubsection.6.4.1) 540 0 R (subsubsection.6.4.2) 555 0 R (subsubsection.6.4.3) 560 0 R (subsubsection.6.5.1) 572 0 R (subsubsection.6.5.2) 578 0 R] /Limits [(Contents) (subsubsection.6.5.2)] >> endobj 611 0 obj << /Kids [610 0 R] >> endobj 612 0 obj << /Dests 611 0 R >> endobj 613 0 obj << /Type /Catalog /Pages 608 0 R /Outlines 609 0 R /Names 612 0 R /PageMode /UseOutlines /URI << /Base () >> /ViewerPreferences << >> /OpenAction 118 0 R >> endobj 614 0 obj << /Producer (pdfTeX-0.14d) /Author (http://tix.sourceforge.net) /Title (Tix Programming Guide) /Subject () /Creator (LaTeX with hyperref package) /Producer (pdfTeX14.d) /Keywords () /Creator (TeX) /CreationDate (D:20011129215900) >> endobj xref 0 615 0000000001 65535 f 0000000002 00000 f 0000000003 00000 f 0000000004 00000 f 0000000000 00000 f 0000015497 00000 n 0000000009 00000 n 0000261868 00000 n 0000000054 00000 n 0000015556 00000 n 0000000084 00000 n 0000261795 00000 n 0000000135 00000 n 0000022105 00000 n 0000000165 00000 n 0000261709 00000 n 0000000216 00000 n 0000030615 00000 n 0000000273 00000 n 0000261623 00000 n 0000000324 00000 n 0000044996 00000 n 0000000387 00000 n 0000261537 00000 n 0000000438 00000 n 0000055160 00000 n 0000000488 00000 n 0000261464 00000 n 0000000539 00000 n 0000068452 00000 n 0000000578 00000 n 0000261340 00000 n 0000000624 00000 n 0000068512 00000 n 0000000660 00000 n 0000261266 00000 n 0000000711 00000 n 0000079232 00000 n 0000000741 00000 n 0000261179 00000 n 0000000792 00000 n 0000086884 00000 n 0000000822 00000 n 0000261105 00000 n 0000000873 00000 n 0000097874 00000 n 0000000922 00000 n 0000260980 00000 n 0000000968 00000 n 0000097934 00000 n 0000001020 00000 n 0000260906 00000 n 0000001071 00000 n 0000100779 00000 n 0000001132 00000 n 0000260819 00000 n 0000001183 00000 n 0000117182 00000 n 0000001215 00000 n 0000260745 00000 n 0000001266 00000 n 0000136117 00000 n 0000001330 00000 n 0000260620 00000 n 0000001376 00000 n 0000136177 00000 n 0000001415 00000 n 0000260546 00000 n 0000001466 00000 n 0000146900 00000 n 0000001532 00000 n 0000260472 00000 n 0000001583 00000 n 0000153170 00000 n 0000001651 00000 n 0000260347 00000 n 0000001697 00000 n 0000153230 00000 n 0000001747 00000 n 0000260273 00000 n 0000001798 00000 n 0000211615 00000 n 0000001846 00000 n 0000260199 00000 n 0000001897 00000 n 0000214924 00000 n 0000001980 00000 n 0000260086 00000 n 0000002026 00000 n 0000214984 00000 n 0000002076 00000 n 0000260012 00000 n 0000002127 00000 n 0000220425 00000 n 0000002193 00000 n 0000259925 00000 n 0000002244 00000 n 0000226156 00000 n 0000002287 00000 n 0000259836 00000 n 0000002338 00000 n 0000228900 00000 n 0000002373 00000 n 0000259745 00000 n 0000002425 00000 n 0000236818 00000 n 0000002476 00000 n 0000259653 00000 n 0000002528 00000 n 0000247151 00000 n 0000002577 00000 n 0000259561 00000 n 0000002629 00000 n 0000248761 00000 n 0000002690 00000 n 0000259483 00000 n 0000002742 00000 n 0000003263 00000 n 0000002785 00000 n 0000004038 00000 n 0000003399 00000 n 0000003976 00000 n 0000004099 00000 n 0000002837 00000 n 0000257607 00000 n 0000003789 00000 n 0000257514 00000 n 0000257699 00000 n 0000003667 00000 n 0000010602 00000 n 0000010663 00000 n 0000010725 00000 n 0000005804 00000 n 0000004228 00000 n 0000257423 00000 n 0000006156 00000 n 0000006311 00000 n 0000006471 00000 n 0000006631 00000 n 0000006791 00000 n 0000006951 00000 n 0000007111 00000 n 0000007266 00000 n 0000007426 00000 n 0000007586 00000 n 0000007746 00000 n 0000007899 00000 n 0000008059 00000 n 0000008218 00000 n 0000008378 00000 n 0000008533 00000 n 0000008693 00000 n 0000008853 00000 n 0000009008 00000 n 0000009168 00000 n 0000009328 00000 n 0000009482 00000 n 0000009642 00000 n 0000009802 00000 n 0000009962 00000 n 0000010122 00000 n 0000010282 00000 n 0000010442 00000 n 0000012840 00000 n 0000012902 00000 n 0000012964 00000 n 0000013026 00000 n 0000013087 00000 n 0000012519 00000 n 0000010810 00000 n 0000012655 00000 n 0000015616 00000 n 0000016310 00000 n 0000015678 00000 n 0000015435 00000 n 0000015739 00000 n 0000015319 00000 n 0000013185 00000 n 0000019553 00000 n 0000019615 00000 n 0000016194 00000 n 0000015837 00000 n 0000019430 00000 n 0000022166 00000 n 0000022043 00000 n 0000022228 00000 n 0000021927 00000 n 0000019731 00000 n 0000257335 00000 n 0000023891 00000 n 0000024478 00000 n 0000028044 00000 n 0000025821 00000 n 0000025883 00000 n 0000023775 00000 n 0000022339 00000 n 0000257816 00000 n 0000024368 00000 n 0000025711 00000 n 0000028105 00000 n 0000027982 00000 n 0000028167 00000 n 0000027866 00000 n 0000026038 00000 n 0000030553 00000 n 0000030676 00000 n 0000030738 00000 n 0000030491 00000 n 0000030800 00000 n 0000030375 00000 n 0000028265 00000 n 0000032374 00000 n 0000034199 00000 n 0000034137 00000 n 0000034260 00000 n 0000032258 00000 n 0000030911 00000 n 0000034027 00000 n 0000036675 00000 n 0000036737 00000 n 0000038344 00000 n 0000039355 00000 n 0000036613 00000 n 0000036799 00000 n 0000036497 00000 n 0000034402 00000 n 0000040403 00000 n 0000040465 00000 n 0000038228 00000 n 0000036910 00000 n 0000039232 00000 n 0000040280 00000 n 0000042902 00000 n 0000042840 00000 n 0000042964 00000 n 0000042724 00000 n 0000040607 00000 n 0000257933 00000 n 0000044934 00000 n 0000044872 00000 n 0000045056 00000 n 0000044756 00000 n 0000043075 00000 n 0000047148 00000 n 0000047600 00000 n 0000050270 00000 n 0000047538 00000 n 0000047660 00000 n 0000047032 00000 n 0000045167 00000 n 0000047416 00000 n 0000050331 00000 n 0000050393 00000 n 0000050208 00000 n 0000050454 00000 n 0000050092 00000 n 0000047815 00000 n 0000052422 00000 n 0000052484 00000 n 0000052306 00000 n 0000050565 00000 n 0000253180 00000 n 0000255036 00000 n 0000054229 00000 n 0000055220 00000 n 0000055281 00000 n 0000055098 00000 n 0000055343 00000 n 0000054113 00000 n 0000052582 00000 n 0000054965 00000 n 0000059873 00000 n 0000057566 00000 n 0000058746 00000 n 0000059935 00000 n 0000059811 00000 n 0000059997 00000 n 0000057450 00000 n 0000055485 00000 n 0000258050 00000 n 0000058626 00000 n 0000059694 00000 n 0000062350 00000 n 0000062412 00000 n 0000062288 00000 n 0000062473 00000 n 0000062172 00000 n 0000060167 00000 n 0000064560 00000 n 0000064498 00000 n 0000064622 00000 n 0000064382 00000 n 0000062584 00000 n 0000065959 00000 n 0000066021 00000 n 0000065843 00000 n 0000064733 00000 n 0000250982 00000 n 0000252701 00000 n 0000069839 00000 n 0000068573 00000 n 0000068390 00000 n 0000068635 00000 n 0000068274 00000 n 0000066119 00000 n 0000074725 00000 n 0000072155 00000 n 0000072217 00000 n 0000069723 00000 n 0000068746 00000 n 0000072035 00000 n 0000074786 00000 n 0000074848 00000 n 0000074663 00000 n 0000074910 00000 n 0000074547 00000 n 0000072347 00000 n 0000258167 00000 n 0000075828 00000 n 0000075890 00000 n 0000075712 00000 n 0000075021 00000 n 0000077482 00000 n 0000078318 00000 n 0000079292 00000 n 0000079170 00000 n 0000079354 00000 n 0000077366 00000 n 0000075975 00000 n 0000078195 00000 n 0000079047 00000 n 0000081485 00000 n 0000083006 00000 n 0000081423 00000 n 0000081547 00000 n 0000081307 00000 n 0000079524 00000 n 0000084180 00000 n 0000084242 00000 n 0000084118 00000 n 0000084304 00000 n 0000082890 00000 n 0000081645 00000 n 0000083995 00000 n 0000086944 00000 n 0000088776 00000 n 0000089716 00000 n 0000086822 00000 n 0000087006 00000 n 0000086706 00000 n 0000084447 00000 n 0000090889 00000 n 0000090827 00000 n 0000090951 00000 n 0000088660 00000 n 0000087104 00000 n 0000258284 00000 n 0000089599 00000 n 0000090707 00000 n 0000092847 00000 n 0000092909 00000 n 0000092731 00000 n 0000091121 00000 n 0000093953 00000 n 0000095555 00000 n 0000097812 00000 n 0000097995 00000 n 0000093837 00000 n 0000093020 00000 n 0000095432 00000 n 0000097692 00000 n 0000100717 00000 n 0000100840 00000 n 0000100601 00000 n 0000098152 00000 n 0000102978 00000 n 0000106935 00000 n 0000114619 00000 n 0000106873 00000 n 0000106997 00000 n 0000102862 00000 n 0000100951 00000 n 0000106743 00000 n 0000108758 00000 n 0000114557 00000 n 0000114680 00000 n 0000108642 00000 n 0000107140 00000 n 0000114437 00000 n 0000117243 00000 n 0000119268 00000 n 0000117120 00000 n 0000117305 00000 n 0000117004 00000 n 0000114836 00000 n 0000258401 00000 n 0000121169 00000 n 0000122149 00000 n 0000119206 00000 n 0000119329 00000 n 0000119090 00000 n 0000117416 00000 n 0000123201 00000 n 0000125974 00000 n 0000123139 00000 n 0000123263 00000 n 0000121053 00000 n 0000119427 00000 n 0000122032 00000 n 0000123022 00000 n 0000127456 00000 n 0000128158 00000 n 0000126035 00000 n 0000126097 00000 n 0000125912 00000 n 0000126159 00000 n 0000125796 00000 n 0000123420 00000 n 0000128883 00000 n 0000128945 00000 n 0000127340 00000 n 0000126257 00000 n 0000128042 00000 n 0000128767 00000 n 0000130728 00000 n 0000132795 00000 n 0000136238 00000 n 0000136055 00000 n 0000136300 00000 n 0000130612 00000 n 0000129089 00000 n 0000132667 00000 n 0000135929 00000 n 0000140288 00000 n 0000138119 00000 n 0000138057 00000 n 0000138181 00000 n 0000137941 00000 n 0000136470 00000 n 0000258518 00000 n 0000142777 00000 n 0000141707 00000 n 0000141769 00000 n 0000140172 00000 n 0000138292 00000 n 0000141587 00000 n 0000143966 00000 n 0000144028 00000 n 0000142661 00000 n 0000141912 00000 n 0000143843 00000 n 0000146776 00000 n 0000146838 00000 n 0000146714 00000 n 0000146961 00000 n 0000146598 00000 n 0000144158 00000 n 0000149592 00000 n 0000148555 00000 n 0000148617 00000 n 0000148439 00000 n 0000147059 00000 n 0000150654 00000 n 0000150716 00000 n 0000149476 00000 n 0000148702 00000 n 0000150531 00000 n 0000153291 00000 n 0000154292 00000 n 0000153353 00000 n 0000153108 00000 n 0000153415 00000 n 0000152992 00000 n 0000150846 00000 n 0000258635 00000 n 0000199124 00000 n 0000199186 00000 n 0000154176 00000 n 0000153526 00000 n 0000199004 00000 n 0000204830 00000 n 0000200840 00000 n 0000204768 00000 n 0000204892 00000 n 0000200724 00000 n 0000199316 00000 n 0000204625 00000 n 0000207421 00000 n 0000207483 00000 n 0000207359 00000 n 0000207545 00000 n 0000207243 00000 n 0000205048 00000 n 0000209418 00000 n 0000209480 00000 n 0000209302 00000 n 0000207643 00000 n 0000211553 00000 n 0000211675 00000 n 0000211437 00000 n 0000209565 00000 n 0000212308 00000 n 0000212370 00000 n 0000212192 00000 n 0000211773 00000 n 0000258752 00000 n 0000215045 00000 n 0000216969 00000 n 0000214862 00000 n 0000215107 00000 n 0000214746 00000 n 0000212501 00000 n 0000217785 00000 n 0000217846 00000 n 0000217723 00000 n 0000217908 00000 n 0000216853 00000 n 0000215218 00000 n 0000217606 00000 n 0000220301 00000 n 0000220363 00000 n 0000220239 00000 n 0000220485 00000 n 0000220123 00000 n 0000218064 00000 n 0000222630 00000 n 0000222568 00000 n 0000222692 00000 n 0000222452 00000 n 0000220596 00000 n 0000224176 00000 n 0000224238 00000 n 0000224060 00000 n 0000222803 00000 n 0000226094 00000 n 0000226217 00000 n 0000225978 00000 n 0000224323 00000 n 0000258869 00000 n 0000228838 00000 n 0000228962 00000 n 0000228776 00000 n 0000229024 00000 n 0000228660 00000 n 0000226315 00000 n 0000230902 00000 n 0000232691 00000 n 0000230840 00000 n 0000230964 00000 n 0000230724 00000 n 0000229122 00000 n 0000232629 00000 n 0000232753 00000 n 0000232513 00000 n 0000231075 00000 n 0000234661 00000 n 0000234599 00000 n 0000234723 00000 n 0000234483 00000 n 0000232851 00000 n 0000236756 00000 n 0000236694 00000 n 0000236880 00000 n 0000236578 00000 n 0000234821 00000 n 0000238942 00000 n 0000239004 00000 n 0000238826 00000 n 0000237004 00000 n 0000248920 00000 n 0000250276 00000 n 0000258986 00000 n 0000241110 00000 n 0000241172 00000 n 0000241048 00000 n 0000241234 00000 n 0000240932 00000 n 0000239102 00000 n 0000243059 00000 n 0000242997 00000 n 0000243121 00000 n 0000242881 00000 n 0000241358 00000 n 0000244872 00000 n 0000244934 00000 n 0000244756 00000 n 0000243232 00000 n 0000247089 00000 n 0000247027 00000 n 0000247212 00000 n 0000246911 00000 n 0000245032 00000 n 0000248699 00000 n 0000248822 00000 n 0000248583 00000 n 0000247323 00000 n 0000250869 00000 n 0000250653 00000 n 0000250438 00000 n 0000253092 00000 n 0000253068 00000 n 0000252862 00000 n 0000255438 00000 n 0000255408 00000 n 0000255197 00000 n 0000255545 00000 n 0000259103 00000 n 0000259221 00000 n 0000259339 00000 n 0000259409 00000 n 0000261977 00000 n 0000266001 00000 n 0000266040 00000 n 0000266078 00000 n 0000266255 00000 n trailer << /Size 615 /Root 613 0 R /Info 614 0 R >> startxref 266508 %%EOF Tix8.4.3/docs/pdf/pguide-tix4.0.pdf0000775000122200012240000250247007404566764017127 0ustar jeffhjeffh00000000000000%PDF-1.2 %âãÏÓ 1 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Width 252 /Height 213 /BitsPerComponent 8 /ColorSpace 2 0 R /Length 9780 /Filter /FlateDecode >> stream H‰ä—Žƒ¸…k'„÷ã›ÄÇI ­®´ÒÒ¡C€?Çv>ŸÿðFÿÎÿÿ¯øGìE÷רàmeþ.cÚ©™éô%Ì·Èk^¶_ÙyØ#V±Z5_йVúw\43úÙLYæF;{]ÈÞ!ôÙâa…çÖ-ú¢ÍïìþÏ5×Núþ7~1-ô"ÛÎ,jø9»w^â Ö3`ëÛAOÖ±ª@ÞÊcp½²³ÈÈð ·a™*Xô‡Ðah ô¥¤sn÷ä,?Ê-0Ã3…"Ô÷E¼a^sµ|>’µ`WÇ;5ËBoú =#ÝdÎä‰^ Ýå²k)ß…ýV¡+ÎÌqï®»2ü]Èã}‰ #*/ôIw$·–‚º“LeEzˆd{ÌYw{vI⿱OOê\‹¸Foã;âí»î üú ¥Âë'ÁÇ[Ùâ ìÏ*ý)uûÌJzã¨ü+öÝ`v[2¹_["^­{z¾3Èw¯/±(ñÈÌë>Ó§˜Ï°ú>ÚΰêņŠÚ–•ݑɟuy‰˜Ê7¹W\÷M¹Cä;{Ù²YšC6³"¦Í’•~Õè# x» E¤ÇåÁñ`ötg­>º“?ª$¿‘e7‹'G±©Æ‹3NóݦŠ·ä;}‚NsÏŸq—x‹&ùNÎ{·tÒý40›¹Ðû=æ=¸Íé#L ¥¯iÎ/æôYÈK2êÞsy3˜*Úsrc´ïzÔ~M @_žéŠã*>$jäºó‘ ³$à‚É †ïibÃDñ¬Œ -±{dÏ™!Gý)Ó„WvíUØr $5ï’—Îô) OúéÝTŸHàRÊ{ ß~%dÏÙºs¼rW“"¹Á¯äîg ޶c°è¤ûˆº£Þt—q‘—\û¿èç_ÈÍÂôH|ø$»ãWr}ö¦û Ÿu_È—ý;ùŸug¸³ƒ{ æ¿ßÈQw?ÎQÿ û™|Q5È™ÿ®{ÊÌ{–Ø\å¯ü=ècn‰‘¯º?ÐÍ^æÅ¢û¡H&òñ‘üúÈ >«4›]*®ºðÐBÎy*^0·ò,åÅ`šEb\X#æêIj$r§ßê»Coš§¨ÜÏæÿ[™@…ÍcKÄÃågòŸu÷[ ÑpvúÐ=U“¬,ä«;yŽáýb_ާ…þ8~!GÏ¥^!Fó[Ù¥¡M®Z|&qñèz{T×â1=ñèÝ“'â¡ßéyµ×&qT ±,[ç;æ…Øè`Ìñý.XWÞ¾‚ã[‘þN^"?9=|Ì9Joºƒå«%¼·YZÜÁIfªçyOñ«–u.o '“øîQŠº§<ó– ¶‚²Ð'ò`GòÓ+Nº#9пèžçÐ÷G©øª»§á#=ðèN}üUùlÅIroîÑ_Éù`‡N }Тצ;%ݽ£ß²O>œ‰ºƒx%F˜ø£‚ª}ä’Ü•ºÒ41kÀå9½Á¡D<êN£˜θ£ºèÐUwó9§Øêß÷1Üì¢èù@ŸÞlp9èØwÝ¥Œ“? Ÿ~ ü=%0YpxÄbéQ)ÏAòe9+À1Ê-„ð‡E«ît÷IŸ†- fñ¾ýœßNN9å‚=¶Ïè°AqÚrÃx“ÑI#ƒ1ãFɺ›ÓvòÅ£™‡¹Æôçg£H,ÿ—Go…ïe'ëN1ÿ·©i1ÒLnLXîYÍDoÃ<é`ƸyB™×hÆ Mþy¾ÖZJí#­É‘ þÓŸ‰~ZôŸþéߨ‡D—ñäZRf}ÔNéS}OŒ0·ðg—‚¦aŸn[¿g€NäsÄWÛûF°ße8lFà§Ûä¯ùè§ŸèçËøÙ?êS¨eÑRÚ±}]ú\_"ÿ®ôWg®åº>s뇲*š&}J|?\óØBœä®ëš.¹ê5Ž«n.Ã#U3Žtª|¦á›3X—Rˆ¯ÅÀÑØ·¼ ¹+‘ÛñPzìjTwDǨb˜‘ÛüŸzùP§³ìÛÿk0|l’¼š·ê®·<¦ú ¥eJkXÃ…MŸðÁóUŸó`˜3ìRãtÐLã3ô¯µµV©ÒEõ¢î´¡{ÿ7¾µÙPvU}˨%ãNqñjw–2*žìÀ¾ß º²îSœDÑ·kü•°¾ú—NpçnùÒê Г\?ղǨ꣮㨂‹Æi·Y1FNqö™WÙÜuwÝsJ»ÿÞjö¤ü5ïQú[“qæ±…\ÎjšüuT'ï©uÛé­nhq×MÒF®Ñí1q«îƒk·Àç׌éA¡æ7 Ù§ÏÆ™=ÿ4ªˉ<Œ6Ý›:vÝ7zï!>锑µþÉöÄìKÅË’´Äˆü)]CF9úS®ùœKu/5KNÙ6òdÝ9t§TýySÈo%—í'ÚB~ ûäh¦à4wÈ嫟»ëï£zK1tO0@®-­äº½{‹Þ1¶Vû|7ò©|²'t¾e\¿&Ãå Î<Ñp Ùm«÷ŸF±|öðEáó|÷\G÷i–¬Ù¢³KͱÀÖl§öØT¸Ô/úm©Ûrâ4ûjÀ¡›’ÓüºkvÿaT7¿ï :²sÐ ½Æ»ëNËNºÛ/AÜa‘cÔ7ò©.ìgjöeðãö®{Óôþ<ªØˆ®y¬ïžÙY[ºÄ>Û'¨Ž»æc æ=jº=ÚãbÏ+Ó$g¿†›r¸náqgŸú먺ù»µínfô6ÐËã|§õ˜¿g,Žß=°Ø“t×$²‘‘%Ïäâ³[UlWžm‘gͼ²/·”Þ®É4”ÒÞ(Ù#¼J? &g¯Êþ¦ >h°Wgÿ:j¼pf:Ëg[ÄŠðFìë¥äˆGö»TkhVÝ3yÓæ´Šuí]A˜ï’"ïÕí›îª¼-eþD^uÇØßÆݵêJÖ{VC2œ²‹å–³f[ôªbÕ˜·Ðy0Ûžö$¼1f€û¾ž¢^ç…¹v]Cw''í`HY“îR,»´ñÛÒ(y ø-jq÷˜7Ñ¡Æ=y£V`Ó²IBªJœèU÷^Æú¶y£ëJ+¶:§…îoéÝ[c·D^Ñ$Ý1×Ñiž³¹Â‡ºö7OS~®B¬Æ òf}n£-Õ‘É(óý†÷Ê~ÔýLŸ«6ä:^§ýBžOÜ•7ÝφMU¬·‘DOÓëfs!™"¿èîÎâ–uϱÑœt×5la]Ø-°‡ðOº¿LG1M‚¶€NNmÕ#Þ’îO27Xªñ)â±G¸ÖÓ²F=-ËìwÍÉ®¶/ºwÒ‚´n6# ^¾¸wŸº;ù*9[/ïäJ¯kXúUw /ÒÓ¶ÿ¸Í ×»ÃG'z xC§(íßÈeŸLŠ—ugŸ½¡<ê>–µ+Ÿè“ì_’ðd7øGòð€Öú]w º}né:u§'Ð=ɽĉÎÞœ¿}£wÝí¾—^EÐ}¾ÿóšíZä©Cäçä'½ {§,ˆù·üý]÷꺞,Эþ÷*WéwÝGwËEyÔÝ/K¢—˜Ý¡œïô=ÕÍÒmäøµ¹îFïì;<¹Ú¾Ueÿ¡”LÕÔ§³î‰=éN´Ç·/¡«íì·„ñí!îj›êÞ@÷§ˆ×ºŽì÷0‡1–"¦îíQ÷5â“îE‹ûoƒì¨—¸Ò†]C÷»5f•Çu·)Ò¾Jaß(úº§A*óÔ]÷ GEcwK¶›äU÷|oMþìg~#OQ?Û[Ë< $];è¾Ö§]÷Í¡û.y¢vúõõ¾«‡åNæôö[exÑÝWsTC÷À:×Eæ«þSu÷=/f‚]Èu?µHC÷^ᔾ¹0µ¦¨¹ÅÄæÉîk/ä+RöväõÞ–ñ.[Ä‚ÿ™®{YÙcŃâ2ô¾oÍó²X‹Z®ðM-‘ë…'ròv¾Â‚qÆUØ8¦¬;”h” Ö–ý(tŠüˆZ¬Ÿ×¨_À<™*¥Ës»žæoÃ"ïì ržTyp•B(%ÊéÝ1Y'í)tßà£ëç…½ >Î÷£î&ÐïºçúMT¦·{ß/ô¤Ôl+P›?LÝiÕ}í‚ó©ÁÎ7ÒŸu‡(ÿ´»²änRÖ´nXgNÊ·¹Òô5Ó3^É9¡P)Ⱦ-]ÿGy™(¶®êPÔ€"^¹ÿÿ¿ÍbpÚCÚÄI›ÅÞˆÅsöÚ•žƒ¾Ÿ†>Ù¾yñŒþB¾³'ñA]Ï`òÆKPu£Z­£HމÙõÂ.Ê»Yö°HrÝÝ”¿é^ž$¹<)âAþ®;ýî`O`%³4¸Ç@ëWUé½TeúwÝ£P¬-‚^ ˆ~¾Ìu ¦ŸÀJ³ôñ¸ØÜŸktúªœcþäIìt›.׬Lnès æáò^,nÆOÂÕ…žu÷¾.%Ç/þK7Ò$ïs?‹þáIpû ð…í›*ñoøšæŒæO¥uÌ ù<¶¢ü˜oÙ¯úuÎÌÑÛz꫺Íö°,¼íaýtÏ“Ùìv©¹\LS:?rMЗÏ‚Y`ý$¹ÿ}t=×VEƒ›R\J“^FQ»ôœŸŠÏݨª.ÇÊî^[Ø*%Ûð»©}ýùé<Èõ87SQ^¾”MŸä#yåýP’Ã}æV–Ѱ,KàÄ}í®wéuŒÎ°3Å£"ŽúÐóÞûÝ[­>kOžËɾÀZ¬§õ1™Ì û‡ZÜþ™‡³³Vb.êÙC(ž|âNrú'r¦Ç"¿ÙÉ)Ev½ ]½ç¢ø‘ÎÖZ\ΰ×~$t÷Tà‰ $ö½õÏ×X®À[Ùû •?í§Ia«¬;ÏýÃ&—‹>¥¸‹Ð«²äò׿£ñ B¯º·Mê…~Ñ}Op©®èmã綪Ѵ8 !§ëîÊÉ+ò©äsyÂ\DÜѤ§CÀÇtåù|Ó=2].Nî5îÐ=Õ¼œüˆâUö>è_ȇè®{Qq)í7?ü&“£lýâ[°»ßeô|øs¶öJ±±kÊËì—±tÁzEh_ȃ^ÙÑØ=> Z°&¡·aº¯èl1;ŒnwANkº·‹îå«î[¡tÙßcÝéÍŒcJØÑ=éIwmï#éî2«îz0ÈNƒþ¶qñÖnQÝJµ³×~߯ü›îª ³w°Ý[°‹Å_uGé Dõœâ\èmðaÖžuy¥ojø²öóØåM•÷«îÃuÇÜœý‹î{°'ýWrÓ}x?u·|­iÎd¿ïã6þÈ“}gÅÜ'Fºç¶tqýû ªß•ý]w<ÙwÝÛnùúM÷µâÙ¥vÝ™|¨×ûXÈ…=5æ+ß7zjì kzËñ^Mw¿ îì9EoŸ©ãíqîã.]NÍô›ä()Õì¸ëÞÝõ»ºßtÏçºî™NLŸïõ]wzü·é^C÷¥8¬Ž_òÅFÞQ»¹¡U1³Ïx§ÆœÒýAøE÷Ú{Ö]̯ë{#Ç]÷z£<°ï}‰U$×EÙMô |Óèïd£/XKZàxÈN]÷\ä"×-=mÖ½ÉïgKïi.WÉž‡ ï#ën3f¨Ü™ÜáÏ„|.IMða/sÿØó³G§^ßèkÁ~´ƒ±ƒ­¹'^³üª{Ý;é^AWiC}!gø9±µŠ`Äý¸²Wîl.ä-ëÞª‡¼³ïÍà®{ÎtÝéÁä}%$Ÿ8vD8>*®{ï}MªË¹oºGtºÿ×ò¯ì‘îªo 8Þ³îœÄY’£÷<#ZÖõ¼[tŸÚk¿Wú6|¥ÆÝó-Èw ×–îuo5Ì¿ #(½h¤=6›ŸÈ‡ëÎú‹îój8Ùy’~_ú“}×ÝûºZÊ{"o›çɇ¢;“KŒÞ] ÑÔ—¿ÒÕ}K-q®’ÛߘÞ÷mßtOèK{¡û®Šz_«mMˆt“Aºà;ûÕñ„ÞŠ»É…7ÝÇXûn)±yݧUMó_zÚ´%h–îëð@¾¶¸ì}5?Œb‰úìë’ù3ùdŸ¯­ìº“ë!yÑ=Ï÷Ýýè¢û.ût×´'•¾oËû¡/4! ö¹6Ñÿ®;ò|äGËÊ&ÏãÆ®meŠõ‹îmWþÛvO~™ÍõØ—½Íˆv}álÀ¦ÿÝÉ ënôÉõlû1r!äY÷— ilgVÝÛË>îØÖÔµì¹[—?€º99ÍÙ¿.Ä{Á¤{ZgŽyèIwŠ-̺· ßöf5Šõ¢{+í¦tþ·[•cAãÝðép²ÏÃ&ºÿÑñ…û|Êuâ–EwJ™´zJÏ´ÜËz›Hwu#·ú¬ûi”;ýRá1 Z³]{ïïý7p¡—GÓ"ô&–ñðbߘîüÔýQG4u¾“;ôÔ˜7zÒ}g¬¾nûîÂó6)0Ö9·!ò袠²ßÚù+y³¹Ñ`IŽçgèÑÒh¨ {Kºoø[‡OôÑ×ª× yÖ’îâzÛm´fOÝãl|ݼ5¼Õ÷e}cãÀ®×ïä]uÍkŠüìøÖ¬Ïyó|´†7Ý7rw$kÛ±¸îÔÁ[ŒƒŽîö”çûz ½µü‹îX“¯¿èÞ6Ýúzêžjܑm¢­ÀJ®ƒsOÄ3S–$½—r²#b„µMë×ÄŽšíÞtowÝËVã–*‘ªû+;“KFsò%Þs¦‡8(ñiÑ$ÿ®»ÅÓoßj¼G&oý²-Iº_2ýZ#ý'–ë 61:³î3Ӛκû]"~ ý’èÓ¢úÕíz®LÜÓ{ žš™Ôî„îï½Ívò®;¨ÒŸEe>ãÝ÷¸‡çÏà×\çYþÔÓíVv'™çffÑ<³›î/íàò#”½›z|›4^69ÖÝB`‡äø"]‘+»_¶;ô7Ý L|Û¶. Y÷Vn=ì¦9‘3»z~yR}Çž\¿ëäÑÊ{– }ǵžËqÑÝèå%gºÄ^6«¡—6ÍÉaŸvËvRß?`áÿâzݾD[“ãýdC'§‡äºEÚ•¼ÚºÔèè3û¯ä‘çq¯ñz ºsù‚$àÆôµêÎ=ì‚ßþ°b¦§tbºÏ\·E¨;>^ÔÝßé½Õݦ(h%”CÞËÁZé˜Ê:Ù?åñe09Š3ÛžÐ,ɯ‹Lÿ7Ýýz±¯œS¿ÐCwÝQâ=W媸)vÝoѾ®±'ò»îNœëJüô;]õýκC#ßno¹€²öSw8u_èk¦?úºeÇ{uw7V¯7z{Qr0Ýõ;°<ÚÊŠú³Ìm–Ñý#ÕäXZXÝõh»¸‹îm'_t§aÒ´-¨‰9t§bÈ%{‹w'׎—É»ˆNtœ¥ãc9ÁŒ\ ,è„~zþ™'¶¶•ºœn׈¾ºGO{£OºSs“«»×ƒ‹úð.ßϳ¡ãg² ½­ è²¥¼4œç?tH)²Èo^1/!·Š¶t©ô/hIw{›RŸ­ÊÎþRßón ™_óo,Ä$º.ÙL/ŸâGôÿ™pó ÔÒ޺Ჺ‡£Œ9rQS±uâ¶£ÄßÂô§î9lâRr-˜¿(?Õzxß:0÷´OÏ C¢-ûE₵G˜MDyÌÓ}žíýZX”¼ pÝsà&íkÖÝÂýÐÝ»§·E%˜6ÃþFïŸËs’‘me,Nÿ2(E{¶VA–|GðilC_£öשßMìUé—´nYÏu¯•ï–rgi}IÙÈs"sF VØþšó¢›ñéìøZ¨ÝþJ*§>§Òpv´,`--gü€æ,=¿ŽD5®äÀX÷5æþLìêÞã|mŠŠ=ÿiØÑÓóÔæjáãàæ7ŸùXÚû-–¬Zr+<ƇUþðšŽ} m³²g³ã“eû²ìaKI¤5éž’€D<·SÙ{š¾Ø{¨ªësáÞ¼¥ÉØ/c.ÙÃòFE¯*Ì'øLucÔM®ZkhYG_ê¢{³àö„C€¿Ö½…îË(9Ú ‡GÅ`roç¾b—öŸØíì tÐoì;ùZìvÝÛ2Îj÷£¯Úž(9WŸ³Ñ«ñ pâÖÓºy_…oìTã„îåºãUwl9þOôuc¿¤ºåùÈÉ™U}.½>$ÜQØ×^£áý®»÷Á¨ì¡<îüHºã¢¼e¯v×ýdÿNÿázÖ}Îkô!ä>A‹Ogœ^¾?±s&í¢;,žßhëï®Õ•¾ììõ&vZm‡!·ÖÖ¢³ýE'WÝmû™þ+¶¼è=²îcÕÝÈ%¶Åñ‹îú>ü_þO~™-FŽÂP”Í0U™ÿÿÞíbq9éôÓÐ]K\st…_Ûtös +õAêî‰nDÎaƒ¦3>ïµú*Êß“W§».,B«>ÍìVw…0½Ì¬ûÞݵÔ·Yòͺs2ÂÈé(²zßÕ‹º*ºàòžÙE÷º°«Ç³!’Žhuʾ s¦#Ê–¾RkE›4?à6 ´c+û °0DŸ/%ÆbßÞT:˜£O5ǺE3ÓÏXx—ã\’›šAcž5Ð}ŸþI²§ÚîÀ~Ô<²ð[ÖQŠCUÊ¢cÌvUtÏN÷­|gÝçô`k›$H½pØãò˲7ØY׳Õ3Ý£è¾'oUkÇ·Ð× µMò¬^wO«»ø¹XÔñq§Ï¼q®'ö†ì¥5×ÀÝ ìÑé^zù/º/Nù]øÌËj9ÓÛóž§‚~›ñ®ìZK)r“WQ¬;ø{{–å"wdG£ ïª;’«îø°I‘,nym_÷}KŽ=Üøf4WýQ˜Y÷HizãõGÙ+ë~¡Ç@¬£Ý«g÷O¦¼¹Ó}®çç¡+¶Õëa—3y»¡RL8À϶`Ý‹<ºÆÝ¤×º†=ª®kãz>}K÷#}ÂÖ²k‰kÝu¿zȺ*O*ÍT7DîÃÞt/ržŒîo<ú’Ø4Éuø&^¯äòÒеg@=lq>/äm"‡¸ÑØë·ž¯tÄXW ›L ewnš´¸?F+—¸ŒèíÉgzËž>éžU÷2‘›¿i§¢»ø-®õ¼{Ý•]V•º8!Ü#ºoiˆI:YéB$myzeO¶°;’e'‡¼Úê ê®®QÑëà•»ÑÝZ“V¥d÷6áŽØ·äyÖ=‹)¬î7½ŒÀ9$bi’»LMƒ»evÔL„ÞÄùU÷¨õ¼œ÷ftçpW™=Sçé9ºIïj³wô¤{þ¬;²—Â)» ¨«Lªã¾€½tK™égÝ©Ô6¸ZQl0hé ‹wâ3z òª»‰€Ikôq¾Y÷9ý¬»8~ñÇÑ`/–¦*!ƒðïÆhÔËXݱrgòVM] ìo‘×y<ï\ݬûƒHO4IVÝ¥°«V÷bÎûÕØJ÷ºKM; ÂËÄy¤ï!Ó+ûÐ}ø|›t7^–LÏôQÎ{žº™ 6-ÔÃ#0£-s`E[M àfnÒ]ÿ*%–ÈÁ®D^OÉû‚í-±Ó=x>ï{ÝmÈWúèt?±+yN-ötÎAòm"ù ÏOÁÛ ¤ù@ôµ¤%öZ­îkÜ*!õͽlÁ–|ÑÝ\òº#ùgŸ¶ãj«`ø®ð^¤—¤÷ø‡ºi™u§„hÈUvòx<ñ رJ–öu7ÉOu‡÷Eõ9ðtO7ì’ÇGS½YÐJùnìJv¤¯&²îu…Ž”ó˜Û¹´fPgrº›È9ú»"ÕM:±oèI÷,짺ΟÖ½QISŸ"BòZíf{¥Æ‡t7ÊSj“/ž¼Ùeœò¢»kd–®F¯+ýgö‰>5£»lG7Šu+ñUã¢è ä)h!KNŒ²ÏM‚;Ò0ö}½c×â&¡â@ÿD÷/ý â¼SÁ£×#ù€kÑê§]ìb豉Q¨µ® ?¨Z_èß[Þ)YßëôXÌàKØx|†²ÎbW.îåj¥À?zúk)œ,}Ý£uþé)VzŒ/æ#¦Ž’ïŽè±Þ2°®;ä>úà-M»ò»%zÕ³'<:ï@ŽøãÅ -¶Ý¨¢½½ìªíÌ®áJÜΚûƒþU„_ÅðM”¥D|5ì÷Ÿ¬Í C"âûÃ[Œî‚¬ëW×=Aq0ØmBOæØœŸÔ·ªîŸŠyùÝd­½D÷Aöæ«Ñ”v” Qw°C‰zà±ÐáÞÏ=‡twå¢Ó]÷)-­‰tô{ôºÛ»>Èî£Ý6&¡ö£À‹$üE¾@}/á¡ ŠÜÅ1½e^QôÎÑûíə޵°?Ö]VÖø öA_úœ€E-–kåŠMë;ù(å*¹\WßÐ;…ŽÐIB(¡ßtU‡ÎärqüœûŸy|Œ…d†jÈÕB_á‰Uuß»­ÕÝ縺wöþê³j>\ô¥dÉÍ]ÿq=ô,XÎ\ù2ìW–o½I¼r/‡rÿ»ÑúM}P¢Ì׿a8†™³×=ù7¡NàgÝí¼ÕlÈ¿×öêïc[CúZ­™ò+®ØKÏ c2]ƒh*}Ë#ód,9Gu 56TR|wSv«öÒjØ ð†-IÆ)w^¯u>v¬»ÚæDÿ¢4ú¬c/ýJh}÷½Õq9`Õ—_¯þ ×ëÕfJ‚|£wø)ôS2–KA'ù–È?C¦b5é™¶!}¦ïo@¿°o²¼ü‰ìãQõÕ S_à­áÖì¶½ZxÔôÕIú×0"ÅÐ&0R`îŒWÓ¸”Æ«‡®ûG~ž(¶HºˆqeiQgíM'Cµ®Ð[ÝãF÷¹`rFJì °M`‡M9 dv 8U€]E½Â îÚSÔòâ›S£ÁÒã½D<5P>²<þ¹grüMbbâ?û%¿dò KãÿÅÇçý7ÆC÷ä½Ú+Æ &ûÉ=zlù au¢ßĺ¿áð²æÞ=T„œ.8ÝWûáߎ\d>«ÿÔ´iùò3vúcrOzûrô«)È—ûɼœ²s‹æTvpdGY~D—Ó×SöÕ=Å!¿,§ÌeŽœí÷%bXHÅá“D µ‘Óý¦Ôº± ó™cÌîi–þZÿ=î»ËpfqsÁö6âgv]Ï~Æ»Gú„-{rô_澉~Šûãí-k„·ÒfÇî‚Ág€¬Î'ìèo^÷v÷ˆd¾YMgÝ͹öKdKï~µ½Œ<á;ÇÞÇ·˜-í"Å&¸zÝýdÑ-½N_=×°Ç}ïǼL}rÓ´ïoèîìþæIgÅ;Ýã·¸ÿ`ø’lùÕÏSú³î&Hß9àY÷øIîûãsZÐNw.déWYÁD¨ŽKÚ1±?ËS:>8;ϲan··½îcO\ØeüÖB¬+.ÑO®ïâû‡}EÏ~¿ççqüÉäûG¹´í Y¼üÓÓi¼>ÙºÎtrëÂ&I>yÄ6æV˜ öz>þöÇo?’íã¢ü²ÑÜødéïÌlÎç«}·æÂãÅ™žrœê¾”ÑÝúiùÝ÷ï)ŠïÈåâ“ð•hÎÎ`Ϭûq™(oû5íê“·º;Ÿ iîüJžÞ]8­³¹b·–\ms³Ñxþé°wyþ°íéí¶m#€×Ðû»††}¾‡½»<‘ßî}Î1²=|ž©oÐãÝcW–^›ä.X”`³ -}N£³šØ®±n˜/BM„›œŠ Ó.éÖHx2¸Îiä'ò€Hhå¸Ýæd+dT$Cᦣ|D¸”†gÎCtO¬ÏÆ”ªZ´{¹B?=7³ Ø’¹ˆ%i"ãð‰¡é Þ2Ú*’®lwº¬¶’õÇ#N[%‹À6’ÔöI`îðœ?ЋK${-fwE8I¤ªÃhËâ¡sèByYN~Ünmb×ý°dÚÌ‹úaÊG˯Sä8ÙÑ#@J+ä´Üχ=û²`&'Èþ*ëþô¡ËA3ޏ™›{Êz×_ö“KÝÿÒŽyêï=|Ëþ?áÿ<þgÖë> endstream endobj 4 0 obj << /Length 257 >> stream BT /T16 1 Tf 0.24 0 0 -0.24 198.72 651.06 Tm 0 g /GS1 gs 0 Tc (Tix)Tj 177 0 TD [(Programming)-31000(Guide)]TJ ET q 252.0001 0 0 212.976 198 376.6199 cm /Im1 Do Q BT /T15 1 Tf 0.24 0 0 -0.24 300 278.58 Tm [(Ioi)-13000(K.)-14000(Lam)]TJ ET endstream endobj 5 0 obj << /ProcSet [/PDF /Text /ImageC /ImageI] /Font << /T15 6 0 R /T16 7 0 R >> /XObject << /Im1 1 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS1 2 0 R >> >> endobj 2 0 obj [/Indexed /DeviceRGB 15 10 0 R] endobj 10 0 obj << /Filter /ASCII85Decode /Length 56 >> stream !!!$!s8N'!rr<%Nrr<%NJqF%&!.k1N_o'@lJcLCS!!*$!!.oe&zz~> endstream endobj 12 0 obj << /Length 5635 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc 0 Tw (2)Tj /T14 1 Tf 0 117 TD (0.1)Tj 153 0 TD [(Ab)-2000(out)-23000(This)-22000(Man)]TJ 493 0 TD (ual)Tj /T15 1 Tf -646 114.0002 TD [(This)-19000(man)]TJ 179 0 TD [(ual)-16000(is)-18000(the)-20000(programmer's)-16000(guide)-18000(to)-19000(the)-19000(Tix)-18000(library)]TJ 911 0 TD [(.)-31000(I)0(t)-19000(tak)]TJ 150.9999 0 TD [(es)-19000(y)]TJ 74 0 TD [(ou)-18000(though)-19000(a)-18000(step-)]TJ -1314.9999 50 TD (b)Tj 22 0 TD [(y-step)-17000(tutorial)-16000(ab)-1000(out)-17000(the)-17000(di\013eren)]TJ 608 0 TD [(t)-18000(widgets)-17000(and)-17000(functions)-17000(a)]TJ 473 0 TD (v)Tj 19.9999 0 TD [(ailable)-14000(in)-17000(the)-17000(Tix)-16000(library)]TJ 458.0001 0 TD 26 Tc [(.I)26000(t)]TJ -1581 50 TD 0 Tc [(also)-13000(co)]TJ 121 0 TD (v)Tj 21 0 TD [(ers)-15000(ho)]TJ 108 0 TD [(w)-13000(t)0(o)-13000(write)-14000(new)-15000(widgets)-14000(using)-13000(the)-14000(Tix)-13000(In)]TJ 728 0 TD [(trinsics)-15000(ob)-2000(jecr-orien)]TJ 358 0 TD [(ted)-15000(programmi)]TJ 272.9998 0 TD (ng)Tj -1608.9998 50 TD (in)Tj 34 0 TD [(terface.)-18000(The)-13000(accompan)]TJ 414 0 TD (ying)Tj /T13 1 Tf 88 0 TD [(Tix)-13000(R)]TJ 102.9999 0 TD (efer)Tj 67.0001 0 TD (enc)Tj 59 0 TD [(e)-14000(Manual)]TJ /T15 1 Tf 181 0 TD [(is)-12000(a)-13000(collection)-12000(of)-11000(the)-13000(Tix)-12000(man)]TJ 526.9999 0 TD [(ual)-10000(pages.)]TJ -1472.9999 48.9998 TD [(It)-14000(describ)-1000(es)-16000(all)-13000(the)-14000(options)-14000(and)-13000(other)-15000(details)-14000(of)-13000(the)-14000(Tix)-14000(widgets)-14000(and)-13000(functions.)]TJ /T14 1 Tf 0 161.0002 TD (0.2)Tj 153 0 TD [(Other)-23000(F)]TJ 231 0 TD [(ormats)-22000(Of)-22000(This)-23000(Do)-2000(cumen)]TJ 747.9999 0 TD (t)Tj /T15 1 Tf -1131.9999 115 TD [(This)-14000(do)-1000(cumen)]TJ 256.9999 0 TD [(t)-14000(i)0(s)-14000(also)-14000(a)]TJ 176 0 TD (v)Tj 20 0 TD [(ailable)-12000(b)-1000(oth)-15000(p)-1000(ostscript)-15000(and)-14000(HTML)-15000(format.)-17000(The)-15000(p)-1000(ostscript)-16000(format)]TJ -452.9999 50 TD [(is)-17000(a)]TJ 65 0 TD (v)Tj 20 0 TD [(ailable)-16000(at)]TJ /T12 1 Tf 189 0 TD (ftp://ftp.xpi.com)Tj 373 0 TD (/pub/)Tj 109 0 TD (tix-4)Tj 109 0 TD (.0.ps)Tj 109 0 TD (.gz)Tj /T15 1 Tf 66 0 TD [(.)-26000(The)-18000(HTML)-17000(format)-16000(is)-17000(a)]TJ 472.9999 0 TD (v)Tj 19.9999 0 TD (ailable)Tj -1532.9998 49.9998 TD (from)Tj /T12 1 Tf 98 0 TD (http://www.xpi.com)Tj 395 0 TD (/tix/)Tj 109 0 TD (doc/t)Tj 109 0 TD (ix-4.)Tj 108.9999 0 TD (0/ti)Tj 87 0 TD (x.boo)Tj 109 0 TD (k.htm)Tj 109 0 TD (l)Tj /T14 1 Tf -1124.9999 160 TD (0.3)Tj 153 0 TD [(Organization)-23000(of)-22000(This)-23000(Man)]TJ 762 0 TD (ual)Tj /T15 1 Tf -915 115.0001 TD [(Chapter)-19000(1,)]TJ /T13 1 Tf 218.9999 0 TD (Intr)Tj 69 0 TD (o)Tj 19 0 TD (duction)Tj /T15 1 Tf 152.0001 0 TD [(gets)-19000(y)]TJ 110.9999 0 TD [(ou)-19000(started)-20000(with)-18000(the)-19000(Tix)-19000(widgets)-19000(b)]TJ 644 0 TD [(y)-18000(describing)-20000(their)-19000(basic)]TJ -1213.9999 50 TD [(options)-14000(and)-14000(op)-1000(erations.)-19000(Chapter)-14000(2,)]TJ /T13 1 Tf 653.9999 0 TD [(Container)-15000(Widgets)]TJ /T15 1 Tf 341 0 TD [(,)-14000(describ)-1000(es)-16000(the)-15000(Tix)-13000(widgets)-15000(that)-14000(can)]TJ -994.9999 50 TD [(b)-1000(e)-18000(used)-17000(to)-17000(con)]TJ 271.9999 0 TD [(tain)-17000(other)-17000(widgets)-17000(and)-17000(main)]TJ 528.0001 0 TD [(tain)-14000(their)-17000(geometry)]TJ 353 0 TD [(.)-26000(Chapter)-18000(3,)]TJ /T13 1 Tf 252.9999 0 TD [(TList)-17000(Widget)]TJ -1405.9999 48.9999 TD [(and)-18000(Display)-17000(Items)]TJ /T15 1 Tf 334 0 TD [(,)-17000(describ)-1000(es)-18000(the)-18000(tabular)-16000(listb)-1000(o)]TJ 531 0 TD [(x)-15000(widget)-17000(and)-16000(the)-17000(Tix)-16000(displa)]TJ 516.9999 0 TD [(y)-15000(items,)-16000(whic)]TJ 244.9999 0 TD (h)Tj -1626.9998 50 TD [(are)-18000(used)-19000(b)]TJ 193.9999 0 TD [(y)-17000(man)]TJ 118.0001 0 TD [(y)-16000(Tix)-17000(widgets.)-29000(Chapter)-18000(4,)]TJ /T13 1 Tf 512 0 TD (Hier)Tj 79 0 TD (ar)Tj 37 0 TD (chic)Tj 69.9999 0 TD [(al)-17000(Listb)]TJ 136.0001 0 TD (ox)Tj /T15 1 Tf 40 0 TD [(,)-18000(describ)-1000(es)-20000(ho)]TJ 253.9999 0 TD [(w)-17000(t)0(o)-17000(create)]TJ -1439.9999 50 TD [(a)-20000(hierarc)]TJ 164 0 TD [(hical)-20000(list)-19000(structure)-23000(using)-19000(the)-21000(TixHList)-20000(widget.)]TJ 911 0 TD [(Chapter)-21000(5,)]TJ /T13 1 Tf 220.9999 0 TD (Sele)Tj 70 0 TD [(ction)-21000(Files)-20000(and)]TJ -1365.9999 50 TD (Dir)Tj 60 0 TD (e)Tj 17 0 TD (ctories)Tj /T15 1 Tf 121 0 TD [(,)-12000(describ)-1000(es)-16000(ho)]TJ 244 0 TD [(w)-14000(t)0(o)-14000(use)-14000(the)-15000(\014le)-14000(and)-14000(directory)-14000(selection)-15000(widgets)-14000(in)-14000(the)-14000(Tix)-14000(library)]TJ 1197.9998 0 TD (.)Tj -1639.9998 50 TD (Finally)Tj 126 0 TD [(,)-12000(Chapter)-14000(6,)]TJ /T13 1 Tf 232 0 TD [(Tix)-15000(Obje)]TJ 158 0 TD [(ct)-14000(Oriente)]TJ 183 0 TD 15 Tc [(dP)15000(r)]TJ 79.9999 0 TD 0 Tc (o)Tj 19 0 TD (gr)Tj 35.0001 0 TD (amming)Tj /T15 1 Tf 144 0 TD [(,)-13000(describ)-1000(es)-16000(ho)]TJ 244.9999 0 TD [(w)-14000(t)0(o)-14000(use)-15000(the)-15000(Tix)-13000(ob)-2000(ject)]TJ -1221.9999 49.0001 TD (orien)Tj 89 0 TD [(ted)-14000(programming)-11000(library)-13000(to)-13000(create)-16000(new)-14000(classes)-15000(of)-14000(Tix)-13000(widgets.)]TJ ET endstream endobj 13 0 obj << /ProcSet [/PDF /Text ] /Font << /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 18 0 obj << /Length 8890 >> stream BT /T11 1 Tf 0.24 0 0 -0.24 126 628.26 Tm 0 g /GS1 gs 0 Tc (Con)Tj 204 0 TD (ten)Tj 159.9999 0 TD (ts)Tj /T15 1 Tf -301.9999 216.0002 TD (0.1)Tj 95.9999 0 TD [(Ab)-1000(out)-14000(This)-14000(Man)]TJ 305 0 TD (ual)Tj 96.0001 0 TD 20 Tc [(.)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 1069.9998 0 TD 0 Tc 0 Tw (2)Tj -1470.9998 50.9998 TD (0.1.1)Tj 133 0 TD [(Other)-15000(F)]TJ 144 0 TD [(ormats)-12000(Of)-14000(This)-14000(Do)-1000(cumen)]TJ 462.9999 0 TD (t)Tj 49 0 TD 20 Tc [(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 681.9999 0 TD 0 Tc (2)Tj -1566.9998 51 TD (0.2)Tj 95.9999 0 TD [(Organization)-13000(of)-13000(This)-14000(Man)]TJ 472.0001 0 TD (ual)Tj 91 0 TD 20 Tc [(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 907.9998 0 TD 0 Tc (2)Tj /T10 1 Tf -1628.9998 95 TD (1)Tj 62 0 TD (In)Tj 44 0 TD [(tro)-1000(duction)]TJ 1519.9998 0 TD (7)Tj /T15 1 Tf -1563.9998 50 TD (1.1)Tj 95.9999 0 TD [(What)-13000(is)-14000(Tix)-18000(.)-20000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 434.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 1036.9998 0 TD 0 Tc (7)Tj -1470.9998 51 TD (1.1.1)Tj 133 0 TD [(Tix)-13000(for)-13000(Application)-13000(Programmers)-13000(.)-21000(.)-20000(.)-20000(.)]TJ 752.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 584.9999 0 TD 0 Tc (7)Tj -1470.9998 51 TD (1.1.2)Tj 133 0 TD [(Tix)-13000(for)-13000(Widget)-14000(Dev)]TJ 358.0001 0 TD [(elop)-1000(ers)-11000(.)]TJ 169 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 810.9998 0 TD 0 Tc (9)Tj -1566.9998 50.0001 TD (1.2)Tj 95.9999 0 TD [(Getting)-13000(Started:)-19000(the)-15000(TixCon)]TJ 525.0001 0 TD [(trol)-12000(Widget)-21000(.)-21000(.)-20000(.)-20000(.)]TJ 360.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 584.9999 0 TD 0 Tc (9)Tj -1470.9998 51 TD (1.2.1)Tj 133 0 TD [(Creating)-13000(a)-14000(TixCon)]TJ 342.0001 0 TD [(trol)-13000(Widget)]TJ 248.9999 0 TD 20 Tc [(..)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 746.9999 0 TD 0 Tc (9)Tj -1470.9998 50 TD (1.2.2)Tj 133 0 TD [(Accessing)-15000(The)-14000(V)]TJ 301.0001 0 TD [(alue)-14000(of)-13000(a)-13000(TixCon)]TJ 305.9999 0 TD [(trol)-13000(Widget)-31000(.)-21000(.)-20000(.)-20000(.)]TJ 372 0 TD 20 Tc [(....)-1000(...)-1000(...)]TJ 337.9999 0 TD 0 Tc (10)Tj -1449.9998 51 TD (1.2.3)Tj 133 0 TD (V)Tj 28 0 TD [(alidating)-11000(User)-15000(Inputs)-18000(.)-20000(.)-20000(.)]TJ 499.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (11)Tj -1545.9998 50.9999 TD (1.3)Tj 95.9999 0 TD [(Accessing)-15000(The)-14000(Comp)-1000(onen)]TJ 467.9999 0 TD [(ts)-14000(Inside)-14000(Mega)-14000(Widgets)-22000(.)-20000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 644 0 TD 20 Tc [(....)-1000(...)-1000(...)]TJ 337.9999 0 TD 0 Tc (12)Tj -1449.9998 50 TD (1.3.1)Tj 133 0 TD (Sub)Tj 68.0001 0 TD [(widgets)-32000(.)-20000(.)]TJ 233 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 1015.9998 0 TD 0 Tc (12)Tj -1449.9998 51 TD (1.3.2)Tj 133 0 TD (Sub)Tj 68.0001 0 TD [(widget)-13000(Names)]TJ 297 0 TD 20 Tc [(..)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 951.9998 0 TD 0 Tc (12)Tj -1449.9998 50 TD (1.3.3)Tj 133 0 TD (The)Tj /T12 1 Tf 85.0001 0 TD (subwidget)Tj /T15 1 Tf 210 0 TD [(Metho)-1000(d)-27000(.)-20000(.)]TJ 232 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (12)Tj -1449.9998 51.0001 TD (1.3.4)Tj 133 0 TD [(Chaining)-12000(the)]TJ /T12 1 Tf 249.0001 0 TD (subwidget)Tj /T15 1 Tf 210 0 TD [(Metho)-1000(d)-24000(.)-21000(.)-20000(.)-20000(.)]TJ 293.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (13)Tj -1449.9998 50.9999 TD (1.3.5)Tj 133 0 TD [(Con\014guring)-13000(Sub)]TJ 293.9999 0 TD [(widget)-13000(Options)-15000(Using)-13000(the)]TJ /T12 1 Tf 479 0 TD (-options)Tj /T15 1 Tf 188 0 TD (Switc)Tj 98 0 TD 20 Tc [(h)-6000(...)-1000(...)]TJ 257.9999 0 TD 0 Tc (14)Tj -1449.9998 50 TD (1.3.6)Tj 133 0 TD [(Con\014guring)-13000(Sub)]TJ 293.9999 0 TD [(widget)-13000(Options)-15000(Using)-13000(the)-15000(Tk)-13000(Option)-14000(Database)-25000(.)-21000(.)-20000(.)-20000(.)]TJ 1022.9999 0 TD (15)Tj -1449.9998 51 TD (1.3.7)Tj 133 0 TD [(Caution:)-17000(Restricted)-15000(Access)]TJ 527.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (16)Tj -1545.9998 50 TD (1.4)Tj 95.9999 0 TD [(Another)-14000(Tix)-14000(Widget:)-17000(TixCom)]TJ 551.9999 0 TD [(b)-1000(oBo)]TJ 94 0 TD 20 Tc [(x)-4000(...)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 803.9999 0 TD 0 Tc (16)Tj -1449.9998 51.0001 TD (1.4.1)Tj 133 0 TD [(Creating)-13000(a)-14000(TixCom)]TJ 355.0001 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x)-11000(Widget)]TJ 206.9999 0 TD 20 Tc [(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 660.9999 0 TD 0 Tc (16)Tj -1449.9998 50.9999 TD (1.4.2)Tj 133 0 TD (Con)Tj 73 0 TD [(trolling)-12000(the)-14000(St)]TJ 254.0001 0 TD [(yle)-14000(of)-13000(the)-15000(TixCom)]TJ 335 0 TD [(b)-1000(oBo)]TJ 93.9999 0 TD (x)Tj 61 0 TD 20 Tc [(..)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 499.9999 0 TD 0 Tc (17)Tj -1449.9998 50 TD (1.4.3)Tj 133 0 TD [(Static)-13000(Options)]TJ 301.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 1015.9998 0 TD 0 Tc (17)Tj -1449.9998 51 TD (1.4.4)Tj 133 0 TD [(Monitoring)-12000(the)-15000(User's)-15000(Bro)]TJ 475.9999 0 TD [(wsing)-14000(Actions)]TJ 277 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (18)Tj -1545.9998 50 TD (1.5)Tj 95.9999 0 TD [(The)-14000(TixSelect)-14000(Widget)]TJ 434.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 1015.9998 0 TD 0 Tc (19)Tj -1449.9998 51 TD (1.5.1)Tj 133 0 TD [(Creating)-13000(A)-14000(TixSelect)-15000(Widget)-27000(.)-20000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 752.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (19)Tj -1449.9998 51 TD (1.5.2)Tj 133 0 TD [(Sp)-1000(ecifying)-13000(Selection)-14000(Rules)-20000(.)]TJ 527.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (21)Tj -1449.9998 50.0001 TD (1.5.3)Tj 133 0 TD [(Accessing)-15000(the)-14000(V)]TJ 287.0001 0 TD [(alue)-14000(of)-13000(a)-14000(TixSelect)-14000(Widget)-12000(.)-20000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 691.9999 0 TD 20 Tc [(....)-1000(...)-1000(...)]TJ 337.9999 0 TD 0 Tc (22)Tj -1449.9998 50.9999 TD (1.5.4)Tj 133 0 TD [(Sp)-1000(ecifying)-13000(Complex)-12000(Selection)-14000(Rules)]TJ 687.9999 0 TD 20 Tc [(..)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 628.9999 0 TD 0 Tc (22)Tj /T10 1 Tf -1607.9998 95 TD (2)Tj 62 0 TD (Con)Tj 84 0 TD [(tainer)-14000(Widgets)]TJ 1455.9998 0 TD (23)Tj /T15 1 Tf -1539.9998 51 TD (2.1)Tj 95.9999 0 TD [(TixNoteBo)-1000(ok)-28000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 434.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 1015.9998 0 TD 0 Tc (23)Tj -1449.9998 50 TD (2.1.1)Tj 133 0 TD [(Adding)-13000(P)]TJ 173 0 TD [(ages)-14000(to)-14000(a)-14000(TixNoteBo)-1000(ok)-30000(.)-21000(.)-20000(.)-20000(.)]TJ 579.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (23)Tj -1449.9998 51 TD (2.1.2)Tj 133 0 TD [(Keyb)-1000(oard)-14000(Accelerators)-18000(.)-20000(.)-20000(.)]TJ 527.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (24)Tj -1449.9998 51 TD (2.1.3)Tj 133 0 TD (Dela)Tj 82.0001 0 TD [(ying)-12000(the)-14000(Creation)-14000(of)-14000(New)-14000(P)]TJ 499.9999 0 TD [(ages)-30000(.)-20000(.)]TJ 171 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (25)Tj -1449.9998 50 TD (2.1.4)Tj 133 0 TD [(Changing)-12000(P)]TJ 213.0001 0 TD [(age)-14000(T)]TJ 101 0 TD [(abs)-14000(and)-14000(Deleting)-13000(P)]TJ 347 0 TD (ages)Tj 91.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (25)Tj -792.9998 105 TD (3)Tj ET endstream endobj 19 0 obj << /ProcSet [/PDF /Text ] /Font << /T10 20 0 R /T11 21 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 23 0 obj << /Length 11484 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc 0 Tw (4)Tj /T9 1 Tf 1413.9999 0 TD (CONTENTS)Tj /T15 1 Tf -1351.9999 117 TD (2.2)Tj 95.9999 0 TD (P)Tj 27.0001 0 TD (anedWindo)Tj 205.9999 0 TD (w)Tj 71.0001 0 TD 20 Tc [(.)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 1145.9998 0 TD 0 Tc (26)Tj -1449.9998 49.0002 TD (2.2.1)Tj 133 0 TD [(Adding)-13000(P)]TJ 173 0 TD [(anes)-15000(Inside)-14000(a)-13000(TixP)]TJ 339.0001 0 TD (anedWindo)Tj 206 0 TD [(w)-13000(Widget)-20000(.)-20000(.)]TJ 260.9999 0 TD 20 Tc [(....)-1000(...)-1000(...)]TJ 337.9999 0 TD 0 Tc (26)Tj -1449.9998 50 TD (2.2.2)Tj 133 0 TD [(Putting)-13000(Widgets)-14000(Inside)-14000(the)-15000(P)]TJ 534.9999 0 TD (anes)Tj 121 0 TD 20 Tc [(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 660.9999 0 TD 0 Tc (27)Tj -1449.9998 50 TD (2.2.3)Tj 133 0 TD [(Setting)-14000(the)-14000(Order)-15000(of)-13000(the)-15000(P)]TJ 480.0001 0 TD (anes)Tj 110.9999 0 TD 20 Tc [(..)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 725.9999 0 TD 0 Tc (28)Tj -1449.9998 50 TD (2.2.4)Tj 133 0 TD [(Changing)-12000(the)-15000(Sizes)-15000(of)-13000(the)-14000(P)]TJ 505.0001 0 TD (anes)Tj 117.9999 0 TD 20 Tc [(.)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 693.9999 0 TD 0 Tc (28)Tj -1545.9998 50 TD (2.3)Tj 95.9999 0 TD [(The)-14000(F)]TJ 109.0001 0 TD [(amily)-11000(of)-13000(Scrolled)-14000(Widgets)-19000(.)-20000(.)]TJ 551 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (28)Tj -1449.9998 50 TD (2.3.1)Tj 133 0 TD [(The)-14000(Scrolled)-14000(Listb)-1000(o)]TJ 356.0001 0 TD [(x)-13000(Widget)]TJ 203 0 TD 20 Tc [(...)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 757.9998 0 TD 0 Tc (29)Tj -1449.9998 49 TD (2.3.2)Tj 133 0 TD [(Other)-15000(Scrolled)-14000(Widgets)]TJ 462.0001 0 TD 20 Tc [(..)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 854.9998 0 TD 0 Tc (30)Tj /T10 1 Tf -1607.9998 92 TD (3)Tj 62 0 TD (T)Tj 28.9999 0 TD [(abular)-15000(Listb)-1000(o)]TJ 281 0 TD [(x)-14000(and)-15000(Displa)]TJ 264.0001 0 TD [(y)-13000(Items)]TJ 965.9998 0 TD (31)Tj /T15 1 Tf -1539.9998 50 TD (3.1)Tj 95.9999 0 TD [(tixTList)-13000({)-14000(The)-14000(Tix)-13000(T)]TJ 386.9999 0 TD [(abular)-13000(Listb)-1000(o)]TJ 243 0 TD [(x)-14000(Widget)-22000(.)-20000(.)]TJ 256 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (31)Tj -1545.9998 49 TD (3.2)Tj 95.9999 0 TD (Displa)Tj 115.0001 0 TD [(y)-12000(Items)-22000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 319 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 1015.9998 0 TD 0 Tc (32)Tj -1449.9998 50 TD (3.2.1)Tj 133 0 TD (Adv)Tj 74.0001 0 TD (an)Tj 42.9999 0 TD [(tages)-13000(of)-14000(Displa)]TJ 267.9999 0 TD [(y)-12000(Items)]TJ 174.0001 0 TD 20 Tc [(...)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 757.9998 0 TD 0 Tc (33)Tj -1449.9998 50 TD (3.2.2)Tj 133 0 TD (Displa)Tj 115.0001 0 TD [(y)-12000(Items)-14000(and)-13000(Displa)]TJ 344 0 TD 13 Tc [(yS)13000(t)]TJ 72.9999 0 TD 0 Tc [(yles)-23000(.)-21000(.)-20000(.)-20000(.)]TJ 221 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (33)Tj -1545.9998 49.9998 TD (3.3)Tj 95.9999 0 TD [(Creating)-14000(Displa)]TJ 286 0 TD [(y)-12000(Items)-13000(in)-14000(the)-14000(TixTList)-14000(Widget)]TJ 599.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (34)Tj -1449.9998 50 TD (3.3.1)Tj 133 0 TD [(Creating)-13000(Displa)]TJ 284.9999 0 TD [(y)-13000(Items)]TJ 177.0001 0 TD 20 Tc [(..)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 854.9998 0 TD 0 Tc (34)Tj -1449.9998 50 TD (3.3.2)Tj 133 0 TD [(Setting)-14000(the)-14000(St)]TJ 252.0001 0 TD [(yles)-14000(of)-13000(the)-15000(Displa)]TJ 316 0 TD [(y)-13000(Items)-16000(.)]TJ 184.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (35)Tj -1449.9998 49 TD (3.3.3)Tj 133 0 TD [(Con\014guring)-13000(and)-13000(Deleting)-14000(the)-14000(Items)-12000(.)-20000(.)-20000(.)]TJ 752.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (36)Tj -1449.9998 50 TD (3.3.4)Tj 133 0 TD [(Cho)-1000(osing)-13000(the)-14000(Orien)]TJ 352.0001 0 TD [(tation)-14000(and)-14000(Num)]TJ 293 0 TD 13 Tc [(b)12000(e)13000(ro)13000(fR)13000(o)]TJ 169 0 TD 0 Tc [(ws)-14000(or)-14000(Columns)-22000(.)-20000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 502.9998 0 TD (37)Tj -1449.9998 50 TD (3.3.5)Tj 133 0 TD (Ev)Tj 49.0001 0 TD (en)Tj 40 0 TD [(t)-14000(Handling)]TJ 212 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 1015.9998 0 TD 0 Tc (37)Tj -1449.9998 50 TD (3.3.6)Tj 133 0 TD (Selection)Tj 204.0001 0 TD 20 Tc [(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 1112.9998 0 TD 0 Tc (38)Tj /T10 1 Tf -1607.9998 91.0001 TD (4)Tj 62 0 TD (Hierarc)Tj 156 0 TD [(hical)-14000(Listb)-1000(o)]TJ 244.9999 0 TD (x)Tj 1138.9998 0 TD (41)Tj /T15 1 Tf -1539.9998 50 TD (4.1)Tj 95.9999 0 TD [(TixHList)-13000({)-14000(The)-14000(Tix)-13000(Hierarc)]TJ 505.9999 0 TD [(hical)-14000(Listb)-1000(o)]TJ 214.0001 0 TD [(x)-14000(Widget)-29000(.)-20000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 391.9999 0 TD 20 Tc [(....)-1000(...)-1000(...)]TJ 337.9999 0 TD 0 Tc (41)Tj -1449.9998 49.9999 TD (4.1.1)Tj 133 0 TD [(Creating)-13000(a)-14000(Hierarc)]TJ 336.0001 0 TD [(hical)-14000(List)]TJ 191 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (41)Tj -1449.9998 50 TD (4.1.2)Tj 133 0 TD [(Creating)-13000(En)]TJ 220.0001 0 TD [(tries)-15000(in)-14000(a)-13000(HList)-14000(Widget)-12000(.)-20000(.)-20000(.)]TJ 532.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (41)Tj -1449.9998 50 TD (4.1.3)Tj 133 0 TD (Con)Tj 73 0 TD [(trolling)-12000(the)-14000(La)]TJ 261.9999 0 TD (y)Tj 21.0001 0 TD [(out)-13000(of)-13000(the)-15000(En)]TJ 241.9999 0 TD [(tries)-12000(.)-20000(.)]TJ 155 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (43)Tj -1449.9998 49 TD (4.1.4)Tj 133 0 TD [(Handling)-12000(the)-15000(Selection)-14000(and)-14000(User)-15000(Ev)]TJ 650.9999 0 TD (en)Tj 40 0 TD 20 Tc [(t)7000(.)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 625.9999 0 TD 0 Tc (44)Tj -1545.9998 50 TD (4.2)Tj 95.9999 0 TD [(Creating)-14000(Collapsible)-12000(T)]TJ 410.0001 0 TD [(ree)-14000(Structures)-17000(with)-13000(TixT)]TJ 453 0 TD (ree)Tj 86.9999 0 TD 20 Tc [(..)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 499.9999 0 TD 0 Tc (44)Tj /T10 1 Tf -1607.9998 92 TD (5)Tj 62 0 TD [(Selecting)-13000(Files)-14000(and)-15000(Directories)]TJ 1539.9998 0 TD (47)Tj /T15 1 Tf -1539.9998 49 TD (5.1)Tj 95.9999 0 TD [(File)-13000(Selection)-14000(Dialog)-12000(Widgets)-26000(.)-20000(.)-20000(.)]TJ 660.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (47)Tj -1449.9998 50 TD (5.1.1)Tj 133 0 TD [(Using)-13000(the)-15000(TixFileSelectDialog)-12000(Widget)-30000(.)]TJ 752.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (47)Tj -1449.9998 50 TD (5.1.2)Tj 133 0 TD [(The)-14000(Sub)]TJ 153 0 TD [(widget)-14000(in)-13000(the)-15000(TixFileSelectDialog)-21000(.)-20000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 825.9999 0 TD 20 Tc [(....)-1000(...)-1000(...)]TJ 337.9999 0 TD 0 Tc (49)Tj -1449.9998 50 TD (5.1.3)Tj 133 0 TD [(The)-14000(TixExFileSelectDialog)-12000(Widget)-19000(.)-20000(.)-20000(.)]TJ 752.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (49)Tj -1449.9998 50 TD (5.1.4)Tj 133 0 TD [(Sp)-1000(ecifying)-13000(File)-14000(T)]TJ 311.0001 0 TD [(yp)-1000(es)-14000(for)-14000(TixExFileSelectDialog)]TJ 603 0 TD 20 Tc [(..)-1000(....)-1000(...)-1000(...)]TJ 402.9998 0 TD 0 Tc (50)Tj -1449.9998 50 TD (5.1.5)Tj 133 0 TD (The)Tj /T12 1 Tf 85.0001 0 TD [(tix)-21000(filedialog)]TJ /T15 1 Tf 318.9999 0 TD [(Command)-29000(.)-21000(.)-20000(.)-20000(.)]TJ 349 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (50)Tj -1545.9998 49.0001 TD (5.2)Tj 95.9999 0 TD [(Selecting)-14000(Directories)-15000(with)-13000(the)-15000(TixDirT)]TJ 701.9999 0 TD [(ree)-13000(and)-14000(TixDirList)-13000(Widgets)]TJ 539.0001 0 TD 20 Tc [(...)-1000(...)]TJ 208.9998 0 TD 0 Tc (51)Tj /T10 1 Tf -1607.9998 92 TD (6)Tj 62 0 TD [(Tix)-16000(Ob)-3000(ject)-14000(Orien)]TJ 362.9999 0 TD [(ted)-13000(Programming)]TJ 1176.9998 0 TD (53)Tj /T15 1 Tf -1539.9998 49.9999 TD (6.1)Tj 95.9999 0 TD (In)Tj 37.0001 0 TD [(tro)-1000(duction)-14000(to)-14000(Tix)-13000(Ob)-2000(ject)-15000(Orien)]TJ 568.9999 0 TD [(ted)-15000(Programming)-21000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 506 0 TD 20 Tc [(....)-1000(...)-1000(...)]TJ 337.9999 0 TD 0 Tc (53)Tj -1449.9998 49.0001 TD (6.1.1)Tj 133 0 TD [(Widget)-13000(Classes)-15000(and)-13000(Widget)-14000(Instances)]TJ 720.0001 0 TD 20 Tc [(.)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 596.9998 0 TD 0 Tc (54)Tj -1449.9998 50 TD (6.1.2)Tj 133 0 TD [(What)-13000(is)-14000(in)-13000(a)-14000(Widget)-13000(Instance)-22000(.)-20000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 752.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (54)Tj -1545.9998 50 TD (6.2)Tj 95.9999 0 TD [(Widget)-13000(Class)-14000(Declaration)]TJ 498.0001 0 TD 20 Tc [(..)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 951.9998 0 TD 0 Tc (55)Tj -1449.9998 50 TD (6.2.1)Tj 133 0 TD [(Using)-13000(the)-15000(tixWidgetClass)-13000(Comma)]TJ 621.9999 0 TD 20 Tc [(n)20000(d..)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 694.9999 0 TD 0 Tc (55)Tj -1545.9998 50 TD (6.3)Tj 95.9999 0 TD (W)Tj 40.0001 0 TD [(riting)-12000(Metho)-1000(ds)-29000(.)-20000(.)-20000(.)]TJ 394 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 1015.9998 0 TD 0 Tc (57)Tj -1449.9998 48.9999 TD (6.3.1)Tj 133 0 TD [(Declaring)-13000(Public)-14000(Metho)-1000(ds)-22000(.)]TJ 527.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (58)Tj -1545.9998 50 TD (6.4)Tj 95.9999 0 TD [(Standard)-14000(Initialization)-11000(Metho)-1000(ds)-14000(.)-20000(.)]TJ 660.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (58)Tj -1449.9998 50 TD (6.4.1)Tj 133 0 TD [(The)-14000(InitWidgetRec)-14000(Metho)-1000(d)]TJ 527.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (58)Tj ET endstream endobj 24 0 obj << /ProcSet [/PDF /Text ] /Font << /T9 25 0 R /T10 20 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 27 0 obj << /Length 1821 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (CONTENTS)Tj /T15 1 Tf 1628.9998 0 TD 0 Tw (5)Tj -1470.9998 117 TD (6.4.2)Tj 133 0 TD [(The)-14000(ConstructWidget)-15000(Metho)-1000(d)]TJ 590.9999 0 TD 20 Tc [(..)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 725.9999 0 TD 0 Tc (60)Tj -1449.9998 49.0002 TD (6.4.3)Tj 133 0 TD [(The)-14000(SetBindings)-14000(Metho)-1000(d)]TJ 493.9999 0 TD 20 Tc [(.)-1000(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 822.9999 0 TD 0 Tc (61)Tj -1545.9998 50 TD (6.5)Tj 95.9999 0 TD [(Declaring)-13000(and)-14000(Using)-13000(V)]TJ 411.0001 0 TD [(ariables)-13000(.)-20000(.)-20000(.)]TJ 249 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (61)Tj -1449.9998 50 TD (6.5.1)Tj 133 0 TD [(Initialization)-11000(of)-13000(Public)-14000(V)]TJ 449.9999 0 TD (ariables)Tj 173 0 TD 20 Tc [(.)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 693.9999 0 TD 0 Tc (62)Tj -1449.9998 50 TD (6.5.2)Tj 133 0 TD [(Public)-13000(V)]TJ 157.0001 0 TD [(ariable)-13000(Con\014guration)-13000(Metho)-1000(ds)]TJ 595.9999 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 563.9999 0 TD 0 Tc (64)Tj -1545.9998 50 TD (6.6)Tj 95.9999 0 TD [(Summary)-11000(of)-13000(Widget)-14000(Instance)-15000(Initialization)]TJ 820.9999 0 TD 20 Tc [(..)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 628.9999 0 TD 0 Tc (65)Tj -1545.9998 50 TD (6.7)Tj 95.9999 0 TD [(Loading)-12000(the)-15000(New)-14000(Classes)-13000(.)-20000(.)-20000(.)-21000(.)-20000(.)-20000(.)]TJ 660.0001 0 TD 20 Tc [(....)-1000(...)-1000(....)-1000(...)-1000(....)-1000(...)-1000(...)]TJ 789.9998 0 TD 0 Tc (66)Tj ET endstream endobj 28 0 obj << /ProcSet [/PDF /Text ] /Font << /T9 25 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 30 0 obj << /Length 122 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc 0 Tw (6)Tj /T9 1 Tf 1413.9999 0 TD (CONTENTS)Tj ET endstream endobj 31 0 obj << /ProcSet [/PDF /Text ] /Font << /T9 25 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 33 0 obj << /Length 6349 >> stream BT /T16 1 Tf 0.24 0 0 -0.24 126 627.54 Tm 0 g /GS1 gs 0 Tc [(Chapter)-31000(1)]TJ /T11 1 Tf 0 231 TD (In)Tj 104.9999 0 TD [(tro)-3000(duction)]TJ /T14 1 Tf -104.9999 263.9998 TD (1.1)Tj 153 0 TD [(What)-23000(is)-23000(Tix)]TJ /T8 1 Tf -153 130.0001 TD (1.1.1)Tj 171 0 TD [(Tix)-18000(for)-19000(Application)-18000(Programmers)]TJ /T15 1 Tf -171 108 TD [(The)-18000(acron)]TJ 187 0 TD [(ym)-16000(Tix)-18000(stands)-18000(for)-17000(Tk)-18000(In)]TJ 463 0 TD [(terface)-19000(Extension.)-30000(Tix)-17000(is)-17000(di\013eren)]TJ 618.9999 0 TD [(t)-19000(things)-18000(for)-17000(di\013eren)]TJ 363.9999 0 TD 0 Tw (t)Tj -1632.9998 50 TD [(p)-1000(eople.)]TJ 62 72.9999 TD [(If)-20000(y)]TJ 69 0 TD [(ou)-21000(are)-21000(a)-20000(GUI)-20000(application)-19000(programmer,)-20000(that)-20000(is,)-22000(if)-20000(y)]TJ 981.9999 0 TD [(ou)-20000(earn)-21000(a)-20000(living)-19000(b)]TJ 347 0 TD [(y)-20000(building)]TJ -1459.9999 50 TD [(graphical)-14000(applications,)-13000(y)]TJ 445 0 TD [(ou)-15000(will)-13000(appreciate)-15000(Tix)-15000(as)-14000(a)-15000(library)-14000(of)]TJ /T13 1 Tf 689 0 TD (me)Tj 50.9999 0 TD (ga-widgets)Tj /T15 1 Tf 186 0 TD [(:)-19000(widgets)-15000(made)]TJ -1370.9999 50 TD [(out)-13000(of)-13000(other)-14000(widgets.)-18000(T)]TJ 421 0 TD [(o)-13000(use)-14000(a)-13000(crude)-15000(analogy)]TJ 390 0 TD [(,)-11000(i)0(f)-13000(the)-14000(widgets)-13000(in)-13000(the)-14000(standard)-14000(TK)-14000(library)-13000(are)]TJ -811 50 TD (bric)Tj 68 0 TD [(ks)-17000(and)-17000(mortars)-16000(for)-17000(a)-16000(builder,)-17000(the)-18000(mega-widgets)-15000(in)-17000(the)-17000(Tix)-17000(library)-16000(are)-17000(w)]TJ 1338.9999 0 TD [(alls,)-16000(windo)]TJ 197.0001 0 TD (ws)Tj -1604 50 TD [(or)-16000(ev)]TJ 92 0 TD [(en)-16000(pre-build)-16000(kitc)]TJ 304 0 TD [(hens.)-25000(Of)-16000(course,)-17000(these)-18000(\\bigger)-15000(comp)-1000(onen)]TJ 757.9999 0 TD [(ts")-15000(are)-17000(themselv)]TJ 300 0 TD [(es)-16000(made)-15000(of)]TJ -1453.9999 49.0001 TD (bric)Tj 68 0 TD [(ks)-18000(and)-17000(mortars,)-18000(but)-18000(it)-17000(will)-16000(tak)]TJ 576.9999 0 TD 18 Tc (em)Tj 71 0 TD 0 Tc (uc)Tj 40.0001 0 TD [(h)-16000(less)-18000(e\013ort)-19000(to)-17000(put)-18000(them)-17000(together)-19000(than)-17000(plan)]TJ 823 0 TD (ting)Tj -1579 50 TD (bric)Tj 68 0 TD [(ks)-14000(on)-14000(top)-14000(of)-13000(eac)]TJ 287 0 TD [(h)-14000(other.)]TJ -293 74 TD [(The)-14000(Tix)-13000(widgets)-13000(not)-13000(only)-13000(help)-13000(y)]TJ 585 0 TD [(ou)-13000(sp)-1000(eed)-14000(up)-14000(the)-14000(dev)]TJ 362.9999 0 TD (elopmen)Tj 150 0 TD 12 Tc [(to)12000(f)-1000(y)]TJ 96.0001 0 TD 0 Tc [(our)-13000(applications,)-11000(they)]TJ -1256 49.9999 TD [(also)-14000(help)-14000(y)]TJ 195 0 TD [(ou)-14000(in)-15000(the)-15000(design)-14000(pro)-1000(cess.)-22000(Since)-15000(the)-15000(standard)-15000(Tk)-14000(widgets)-15000(are)-15000(to)-1000(o)-14000(primitiv)]TJ 1333 0 TD [(e,)-12000(they)]TJ -1528 49 TD [(force)-17000(y)]TJ 124 0 TD [(ou)-17000(to)-17000(think)-16000(of)-16000(y)]TJ 297.9999 0 TD [(our)-17000(house)-18000(as,)-17000(b)]TJ 284.0001 0 TD [(y)-17000(using)-16000(the)-18000(same)-16000(analogy)]TJ 469.9999 0 TD [(,)-15000(millions)-14000(of)-16000(bric)]TJ 303 0 TD [(ks.)-28000(With)]TJ -1478.9999 50 TD [(the)-14000(help)-13000(of)-13000(the)-14000(Tix)-13000(mega-widgets,)-12000(y)]TJ 646 0 TD [(ou)-13000(can)-13000(design)-14000(y)]TJ 279.9999 0 TD [(our)-13000(application)-12000(is)-13000(a)-13000(more)-13000(structural)-14000(and)]TJ -925.9999 50 TD (coheren)Tj 136 0 TD [(t)-15000(manner.)]TJ -74 73.0001 TD (Moreo)Tj 113 0 TD (v)Tj 21 0 TD [(er,)-12000(the)-12000(Tix)-11000(library)-10000(pro)]TJ 392.9999 0 TD [(vides)-11000(a)-11000(ric)]TJ 179.0001 0 TD [(h)-12000(set)-12000(of)-11000(widgets.)-17000(Figure)-11000(1.1)-11000(sho)]TJ 558.9999 0 TD [(ws)-11000(all)-10000(Tix)-11000(widgets)]TJ -1326.9999 49.9999 TD [({)-9000(there)-11000(are)-10000(more)-8000(than)-9000(40)-9000(of)-9000(them!)-16000(Although)-9000(the)-10000(standard)-10000(Tk)-9000(library)-9000(has)-9000(man)]TJ 1357.9999 0 TD [(y)-8000(useful)-9000(widgets,)]TJ -1357.9999 50 TD [(they)-13000(are)-12000(far)-12000(from)-11000(complete.)-17000(The)-12000(Tix)-12000(library)-11000(pro)]TJ 859.9999 0 TD [(vides)-13000(most)-11000(of)-11000(the)-13000(commonly)-9000(needed)-14000(widgets)]TJ -859.9999 50 TD [(that)-10000(are)-10000(missing)-8000(from)-8000(standard)-10000(Tk:)-16000(FileSelectBo)]TJ 861 0 TD [(x,)-10000(Com)]TJ 129.9999 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x,)-8000(Con)]TJ 115 0 TD [(trol)-9000(\(a.k.a.)-16000(SpinBo)]TJ 336.0001 0 TD [(x\))-9000(and)]TJ -1536 50 TD [(an)-11000(assortmen)]TJ 237 0 TD [(t)-10000(o)0(f)-10000(scroll-able)-11000(widgets.)-17000(Tix)-10000(also)-10000(includes)-11000(man)]TJ 818 0 TD [(y)-9000(more)-10000(widgets)-11000(that)-11000(are)-11000(generally)]TJ -1055 49 TD [(useful)-15000(in)-14000(a)-14000(wide)-15000(range)-15000(of)-14000(applications:)-18000(NoteBo)-1000(ok,)-15000(FileEn)]TJ 1037.9999 0 TD (try)Tj 51 0 TD 14 Tc (,P)Tj 53 0 TD 0 Tc (anedWindo)Tj 206.0001 0 TD [(w,)-14000(MDIWindo)]TJ 262 0 TD (w,)Tj -1610 50 TD (etc.)Tj 62 74.0001 TD [(With)-14000(all)-13000(these)-16000(new)-15000(widgets,)-14000(y)]TJ 541.9999 0 TD [(ou)-14000(can)-14000(in)]TJ 168.0001 0 TD [(tro)-1000(duce)-16000(new)-14000(in)]TJ 271 0 TD [(teraction)-15000(tec)]TJ 226.9999 0 TD [(hniques)-15000(in)]TJ 186 0 TD [(to)-14000(applica-)]TJ -1455.9999 50 TD [(tions,)-13000(creating)-13000(more)-12000(useful)-13000(and)-13000(more)-12000(in)]TJ 709 0 TD (tuitiv)Tj 100 0 TD [(e)-12000(user)-14000(in)]TJ 150.9999 0 TD [(terfaces.)-19000(Y)]TJ 195.0001 0 TD [(ou)-13000(can)-13000(design)-13000(y)]TJ 279 0 TD [(our)-13000(applica-)]TJ -1434 48.9999 TD [(tion)-10000(b)]TJ 104 0 TD 10 Tc (yc)Tj 49 0 TD 0 Tc [(ho)-1000(osing)-10000(the)-11000(most)-10000(appropriate)-10000(widgets)-11000(to)-10000(matc)]TJ 818.9999 0 TD [(h)-10000(the)-11000(sp)-1000(ecial)-10000(needs)-12000(of)-10000(y)]TJ 407 0 TD [(our)-10000(application)]TJ -1378.9999 50 TD [(and)-14000(users.)]TJ 815 105 TD (7)Tj ET endstream endobj 34 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T11 21 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R /T16 7 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 37 0 obj << /Length 5664 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc 0 Tw (8)Tj /T9 1 Tf 1022.9999 0 TD [(CHAPTER)-14000(1.)-32000(INTR)]TJ 394.0001 0 TD (ODUCTION)Tj ET 0 G 0 J 0 j 0.338 w 10 M []0 d 1 i q 0.9228 0 0 -1.0837 0 0 cm 396.969 -376.19 m 396.969 -342.434 l 403.72 -366.063 74.262 13.502 re 396.969 -359.312 m 403.72 -359.312 l 403.72 -382.941 74.262 13.502 re 390.217 -376.19 m 403.72 -376.19 l 403.72 -349.185 74.262 13.502 re 403.72 -332.308 74.262 13.502 re 396.969 -342.434 m 396.969 -325.556 l 403.72 -325.556 l 396.969 -342.434 m 403.72 -342.434 l S Q BT /F1 1 Tf 7.476 0 0 8.779 384.999 404.017 Tm (CheckList)Tj 0 -2.0833 TD (DirList)Tj 0 -4.1667 TD (Tree)Tj 0 2.0833 TD (DirTree)Tj ET [0.045 2.25 ]2.25 d q 0.9228 0 0 -1.0837 0 0 cm 359.837 -204.037 74.262 13.502 re S Q 0.675 w []0 d q 0.9228 0 0 -1.0837 0 0 cm 339.584 -177.032 189.031 -40.507 re S Q BT 7.476 0 0 8.779 409.918 210.139 Tm (Virtual Base Class)Tj ET 0.338 w [0.045 3.002 ]3 d q 0.9228 0 0 -1.0837 0 0 cm 133.676 -639.483 74.262 13.502 re S Q []0 d q 0.9228 0 0 -1.0837 0 0 cm 224.815 -632.732 m 214.689 -632.732 l 228.191 -605.727 74.262 13.502 re 224.815 -598.976 m 214.689 -598.976 l 228.191 -615.854 m 214.689 -615.854 l 228.191 -622.605 74.262 13.502 re 228.191 -639.483 74.262 13.502 re 319.331 -639.483 74.262 13.502 re 302.453 -632.732 m 319.331 -632.732 l 228.191 -598.976 m 214.689 -598.976 l 228.191 -632.732 m 214.689 -632.732 l 319.331 -588.849 74.262 13.502 re 319.331 -571.972 74.262 13.502 re 319.331 -555.094 74.262 13.502 re 319.331 -538.216 74.262 13.502 re 319.331 -521.338 74.262 13.502 re 319.331 -504.461 74.262 13.502 re 302.453 -582.098 m 319.331 -582.098 l 309.204 -582.098 m 309.204 -497.71 l 319.331 -497.71 l 309.204 -514.587 m 319.331 -514.587 l 309.204 -531.465 m 319.331 -531.465 l 309.204 -548.343 m 319.331 -548.343 l 309.204 -565.221 m 319.331 -565.221 l S Q [0.045 2.25 ]2.25 d q 0.9228 0 0 -1.0837 0 0 cm 228.191 -588.849 74.262 13.502 re S Q []0 d q 0.9228 0 0 -1.0837 0 0 cm 228.191 -582.098 m 214.689 -582.098 l 228.191 -477.456 m 214.689 -477.456 l 228.191 -484.207 74.262 13.502 re 228.191 -393.068 m 214.689 -393.068 l S Q [0.045 2.25 ]2.25 d q 0.9228 0 0 -1.0837 0 0 cm 228.191 -399.819 74.262 13.502 re S Q []0 d q 0.9228 0 0 -1.0837 0 0 cm 309.204 -393.068 m 309.204 -342.434 l 315.955 -342.434 l 315.955 -382.941 74.262 13.502 re 315.955 -366.063 74.262 13.502 re 309.204 -376.19 m 315.955 -376.19 l 315.955 -349.185 74.262 13.502 re 309.204 -359.312 m 309.204 -342.434 l 315.955 -342.434 l 315.955 -399.819 74.262 13.502 re 309.204 -393.068 m 315.955 -393.068 l 309.204 -376.19 m 315.955 -376.19 l 309.204 -359.312 m 315.955 -359.312 l 491.484 -409.945 m 484.733 -409.945 l 491.484 -416.696 74.262 13.502 re 484.733 -409.945 m 484.733 -426.823 l 228.191 -443.701 m 214.689 -443.701 l 228.191 -460.578 m 214.689 -460.578 l 228.191 -467.33 74.262 13.502 re 228.191 -450.452 74.262 13.502 re 315.955 -450.452 74.262 13.502 re 315.955 -433.574 74.262 13.502 re 403.72 -433.574 74.262 13.502 re 315.955 -416.696 74.262 13.502 re 302.453 -443.701 m 315.955 -443.701 l 309.204 -443.701 m 309.204 -409.945 l 315.955 -409.945 l 309.204 -426.823 m 315.955 -426.823 l 390.217 -426.823 m 403.72 -426.823 l 477.982 -426.823 m 491.484 -426.823 l 491.484 -433.574 74.262 13.502 re 309.204 -342.434 m 309.204 -325.556 l 315.955 -315.43 74.262 13.502 re 309.204 -325.556 m 309.204 -308.679 l 315.955 -308.679 l 309.204 -325.556 m 315.955 -325.556 l 214.689 -632.732 m 214.689 -271.548 l 318.791 -237.792 m 309.204 -237.792 l 318.791 -244.543 71.427 13.502 re 228.191 -271.548 m 214.689 -271.548 l 302.453 -271.548 m 315.955 -271.548 l 309.204 -271.548 m 309.204 -254.67 l 315.955 -254.67 l 315.955 -278.299 74.262 13.502 re S Q [0.045 2.25 ]2.25 d q 0.9228 0 0 -1.0837 0 0 cm 228.191 -278.299 74.262 13.502 re S Q []0 d q 0.9228 0 0 -1.0837 0 0 cm 315.955 -261.421 74.262 13.502 re 218.064 -291.801 m 214.689 -291.801 l 228.191 -291.801 m 218.064 -291.801 l 302.453 -291.801 m 315.955 -291.801 l S Q [0.045 2.25 ]2.25 d q 0.9228 0 0 -1.0837 0 0 cm 228.191 -298.552 74.262 13.502 re S Q []0 d q 0.9228 0 0 -1.0837 0 0 cm 315.955 -298.552 74.262 13.502 re 309.204 -237.792 m 309.204 -254.67 l 315.955 -332.308 74.262 13.502 re S Q BT 7.476 0 0 8.779 135.811 682.03 Tm (Primitive)Tj 11.25 -4.1667 TD (FileSelectBox)Tj 0 2.0833 TD (ExFileSelectBox)Tj 0.4167 2.0833 TD (ButtonBox)Tj 11.25 -0.0833 TD (StdButtonBox)Tj -11.25 -6.1667 TD (LabelWidget)Tj 11.25 -2.0833 TD (Control)Tj T* (FileEntry)Tj T* (LabelFrame)Tj T* (OptionMenu)Tj T* (Select)Tj 0 10.4167 TD (ComboBox)Tj -11.6667 -12.9167 TD (Meter)Tj 0 -10.4167 TD (ScrolledWidget)Tj 32.5 2.0833 TD (FileSelectDialog)Tj -32.5 6.25 TD (PanedWindow)Tj 0 -2.0833 TD [(Shell)-9194(Balloon)]TJ 11.25 -2.0833 TD [(DialogShell)-6055(StdDialogShell)]TJ T* (PopupMenu)Tj 21.25 2.0833 TD (ExFileSelectDialog)Tj -32.5 -19.1667 TD (VStack)Tj 0 2.5 TD [(VResize)-7862(ResizeHandle)]TJ 11.25 -6.6667 TD (StackWindow)Tj 0 2.0833 TD (NoteBook)Tj -0.1111 2.0833 TD (ListNoteBook)Tj 0.1111 4.5833 TD (ScrolledWindow)Tj 0 2.0833 TD (ScrolledTList)Tj T* (ScrolledText)Tj T* (ScrolledListBox)Tj T* (ScrolledHList)Tj T* (ScrolledGrid)Tj /T15 1 Tf 0.24 0 0 -0.24 219.36 167.94 Tm [(Figure)-14000(1.1:)-17000(The)-15000(Class)-14000(Hierarc)]TJ 539.9999 0 TD (h)Tj 22 0 TD [(y)-14000(o)0(f)-13000(Tix)-14000(Widgets)]TJ ET endstream endobj 38 0 obj << /ProcSet [/PDF /Text ] /Font << /F1 39 0 R /T9 25 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 41 0 obj << /Length 10539 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(1.2.)-31000(GETTING)-13000(ST)]TJ 359.9999 0 TD (AR)Tj 59 0 TD [(TED:)-12000(THE)-15000(TIX)]TJ 293.0001 0 TD (CONTR)Tj 153 0 TD [(OL)-13000(WIDGET)]TJ /T15 1 Tf 763.9998 0 TD 0 Tw (9)Tj /T8 1 Tf -1628.9998 117 TD (1.1.2)Tj 171 0 TD [(Tix)-18000(for)-19000(Widget)-17000(Dev)]TJ 485 0 TD [(elop)-2000(ers)]TJ /T15 1 Tf -656 100 TD [(On)-19000(the)-19000(other)-20000(hand,)-19000(if)-18000(y)]TJ 449 0 TD [(ou)-18000(are)-19000(a)-19000(widget)-18000(dev)]TJ 376 0 TD [(elop)-1000(er,)-21000(Tix)-18000(pro)]TJ 282.9999 0 TD [(vides)-19000(an)-18000(ob)-2000(ject)-20000(orien)]TJ 392 0 TD [(ted)-19000(pro-)]TJ -1499.9999 50 TD (grammi)Tj 140.9999 0 TD [(ng)-10000(en)]TJ 94 0 TD (vironmen)Tj 170.0001 0 TD [(t,)-11000(the)-13000(Tix)-12000(In)]TJ 222 0 TD [(trinsics,)-13000(that)-13000(is)-12000(carefully)-12000(designed)-14000(for)-12000(the)-13000(dev)]TJ 811.9999 0 TD (elopmen)Tj 149.9999 0 TD 12 Tc [(to)12000(f)]TJ -1588.9998 50 TD 0 Tc [(mega-widgets.)-16000(If)-11000(y)]TJ 334 0 TD [(ou)-12000(ha)]TJ 98.9999 0 TD (v)Tj 21 0 TD [(e)-11000(dev)]TJ 90.9999 0 TD [(elop)-1000(ed)-13000(widgets)-12000(in)-11000(C,)-12000(y)]TJ 398.0001 0 TD [(ou)-11000(will)-10000(kno)]TJ 195.9999 0 TD 11 Tc [(wh)11000(o)]TJ 84 0 TD 0 Tc [(w)-12000(slo)]TJ 90 0 TD [(w)-11000(and)-12000(painful)-10000(suc)]TJ 312.9999 0 TD (h)Tj -1625.9998 49.0002 TD [(a)-13000(pro)-1000(cess)-15000(w)]TJ 207 0 TD [(ould)-13000(b)-1000(e)0(.)-18000(I)0(n)-13000(recognition)-13000(of)-13000(the)-14000(di\016culties)-13000(in)-13000(widget)-13000(dev)]TJ 987.9999 0 TD (elopmen)Tj 150 0 TD [(t,)-12000(the)-14000(Tix)-12000(In)]TJ 224.0001 0 TD (trin-)Tj -1569 50 TD [(sics)-18000(includes)-17000(man)]TJ 321 0 TD [(y)-15000(t)0(o)-1000(ols)-17000(that)-17000(dramatically)-14000(cuts)-18000(do)]TJ 611.9999 0 TD [(wn)-16000(the)-18000(e\013orts)-18000(required)-18000(to)-17000(dev)]TJ 555 0 TD [(elop)-17000(new)]TJ -1487.9999 50 TD [(widgets.)-25000(With)-16000(the)-17000(Tix)-15000(In)]TJ 473 0 TD [(trinsics,)-17000(the)-17000(rapid)-16000(protot)]TJ 455 0 TD (yping/dev)Tj 184 0 TD (elopmen)Tj 150 0 TD [(t)-14000(o)0(f)-16000(widgets)-16000(is)-16000(\014nally)]TJ -1262 50 TD [(feasible:)-18000(y)]TJ 184 0 TD [(ou)-13000(can)-14000(write)-15000(a)-13000(new)-14000(widgets)-15000(in)-13000(the)-15000(matter)-13000(of)-13000(hours)-14000(or)-14000(ev)]TJ 1015.9999 0 TD [(en)-15000(min)]TJ 126 0 TD (utes.)Tj -1263.9999 73 TD [(With)-12000(the)-13000(Tix)-12000(In)]TJ 289 0 TD [(trinsics,)-12000(y)]TJ 174 0 TD [(ou)-12000(widget)-12000(co)-1000(de)-13000(can)-13000(readily)-12000(b)-1000(ecome)-12000(reusable.)-18000(Tix)-12000(also)-12000(pro)]TJ 1033.9998 0 TD (vides)Tj -1558.9998 50 TD [(a)-11000(set)-12000(of)-11000(rules)-12000(and)-11000(mec)]TJ 384.9999 0 TD [(hanisms)-9000(that)-12000(allo)]TJ 309.0001 0 TD 9 Tc (wy)Tj 59.9999 0 TD 0 Tc [(ou)-11000(to)-11000(dev)]TJ 165 0 TD [(elop)-12000(widgets)-11000(that)-12000(are)-11000(in)]TJ 421 0 TD [(ter-op)-1000(erable)-12000(with)]TJ -1339.9999 50 TD [(other)-15000(widgets.)]TJ 62 72.9998 TD [(In)-17000(P)]TJ 81.9999 0 TD [(art)-16000(I)-17000(o)0(f)-16000(this)-16000(man)]TJ 313 0 TD [(ual,)-15000(w)]TJ 112.0001 0 TD [(e)-16000(will)-15000(talk)-16000(ab)-1000(out)-16000(using)-17000(the)-17000(Tix)-16000(widgets.)-26000(The)-17000(discussion)-17000(of)]TJ -569 50 TD [(writing)-13000(new)-14000(Tix)-14000(widgets)-14000(will)-12000(b)-1000(e)-15000(carried)-14000(out)-14000(in)-14000(P)]TJ 878.9999 0 TD [(art)-14000(I)-1000(I)0(.)]TJ /T14 1 Tf -878.9999 161 TD (1.2)Tj 153 0 TD [(Getting)-23000(Started:)-31000(the)-22000(TixCon)]TJ 849 0 TD [(trol)-24000(Widget)]TJ /T13 1 Tf -1002 115.0001 TD (Pr)Tj 43.9999 0 TD (e-r)Tj 50 0 TD (e)Tj 17.0001 0 TD [(quisites:)-16000(you)-13000(should)-13000(b)]TJ 382 0 TD [(e)-12000(familiar)-11000(with)-11000(Tk)-13000(widgets)-11000(and)-13000(pr)]TJ 591.9999 0 TD (o)Tj 19 0 TD (gr)Tj 35 0 TD [(amming,)-12000(or)-12000(r)]TJ 236 0 TD (e)Tj 17.0001 0 TD [(ad)-12000(the)-13000(Tk)-12000(b)]TJ 199 0 TD (o)Tj 19 0 TD (ok)Tj -1610 48.9999 TD [(along)-15000(with)-14000(this)-15000(b)]TJ 296.9999 0 TD (o)Tj 19 0 TD (ok)Tj /T15 1 Tf -253.9999 74 TD [(Before)-20000(delving)-18000(in)]TJ 318 0 TD [(to)-17000(the)-19000(deep)-20000(philosoph)]TJ 404.9999 0 TD [(y)-17000(o)0(f)-18000(the)-19000(Tix)-18000(widgets,)-20000(let)-18000(us)-19000(\014rst)-20000(ha)]TJ 673 0 TD (v)Tj 21 0 TD [(e)-18000(a)-18000(quic)]TJ 148.9999 0 TD (k)Tj -1627.9998 50 TD [(example)-14000(to)-16000(demonstrate)-15000(the)-16000(usefulness)-17000(and)-16000(con)]TJ 868 0 TD (v)Tj 20.9999 0 TD [(enience)-17000(of)-15000(an)-15000(Tix)-15000(widget:)-21000(the)-16000(TixCon)]TJ 697.0001 0 TD (trol)Tj -1586 49.0001 TD [(is)-14000(basically)-14000(an)-14000(en)]TJ 310.9999 0 TD [(try)-15000(widget)-15000(that)-14000(displa)]TJ 400.0001 0 TD 14 Tc [(y)14000(sav)]TJ 107 0 TD 0 Tc [(alue.)-20000(Next)-15000(to)-14000(the)-15000(en)]TJ 370.9999 0 TD (try)Tj 51.0001 0 TD [(,)-15000(there)-16000(are)-14000(t)]TJ 217.9999 0 TD (w)Tj 29.0001 0 TD [(o)-15000(u)0(p)-14000(and)]TJ -1487 50 TD (do)Tj 43 0 TD [(wn)-14000(arro)]TJ 139.9999 0 TD [(w)-13000(buttons)-15000(for)-13000(y)]TJ 280 0 TD [(ou)-14000(to)-13000(adjust)-14000(the)-15000(v)]TJ 325.9999 0 TD [(alue)-13000(inside)-14000(the)-14000(en)]TJ 316.0001 0 TD [(try)-15000(widget.)]TJ /T8 1 Tf -1105 140 TD (1.2.1)Tj 171 0 TD [(Creating)-19000(a)-19000(TixCon)]TJ 460 0 TD [(trol)-18000(Widget)]TJ /T15 1 Tf -631 100 TD [(The)-13000(follo)]TJ 162 0 TD [(wing)-9000(co)-1000(de)-13000(demonstrates)-13000(ho)]TJ 485 0 TD [(w)-11000(t)0(o)-12000(create)-14000(a)-12000(TixCon)]TJ 381 0 TD [(trol)-11000(widget)-12000(and)-12000(sp)-1000(ecify)-13000(its)-12000(options:)]TJ /T12 1 Tf -941 115 TD [(tixControl)-20000(.lawyers)-20000(-label)-21000(Lawyers:)-20000(-max)-21000(10)-21000(-min)-21000(0)]TJ 0 50 TD [(.lawyers)-20000(config)-21000(-integer)-20000(true)-21000(-step)-21000(2)]TJ /T15 1 Tf -87 114.9999 TD [(This)-15000(example)-14000(creates)-18000(a)-15000(TixCon)]TJ 574 0 TD [(trol)-14000(widget)-15000(that)-16000(let)-15000(us)-16000(to)-16000(select)-16000(the)-16000(n)]TJ 683.9999 0 TD (um)Tj 58 0 TD [(b)-1000(ers)-16000(of)-14000(la)]TJ 170.0001 0 TD (wy)Tj 51 0 TD [(ers)-16000(w)]TJ 95 0 TD (e)Tj -1632 50 TD [(wish)-14000(to)-14000(b)-1000(e)-14000(allo)]TJ 267 0 TD (w)Tj 29 0 TD [(ed)-13000(in)-13000(this)-14000(coun)]TJ 266.9999 0 TD (try)Tj 51 0 TD [(.)-18000(\(Figure)-14000(1.2\))]TJ -551.9999 73 TD [(Let)-15000(us)-15000(examine)-13000(the)-15000(options:)-19000(the)]TJ /T12 1 Tf 599 0 TD (-label)Tj /T15 1 Tf 145.9999 0 TD [(option)-13000(sp)-1000(eci\014es)-17000(a)-14000(caption)-14000(for)-14000(this)-15000(widget.)-20000(The)]TJ /T12 1 Tf -806.9999 50 TD (-max)Tj /T15 1 Tf 104.9999 0 TD [(option)-17000(sp)-1000(eci\014es)-20000(the)-19000(maxim)]TJ 498.9999 0 TD [(um)-14000(n)]TJ 95.0001 0 TD (um)Tj 57.9999 0 TD 17 Tc [(b)16000(e)17000(ro)17000(fl)17000(a)]TJ 158.0001 0 TD 0 Tc (wy)Tj 50.9999 0 TD [(ers)-18000(w)]TJ 97 0 TD [(e)-19000(can)-18000(c)]TJ 134 0 TD [(ho)-1000(ose.)-31000(The)]TJ /T12 1 Tf 233.0001 0 TD (-min)Tj /T15 1 Tf 105 0 TD (option)Tj -1535 50 TD [(sp)-1000(eci\014es)-17000(the)-16000(minim)]TJ 352 0 TD [(um)-11000(n)]TJ 91.9999 0 TD (um)Tj 58.0001 0 TD 1 Tc [(be)1000(r)-14000(o)1000(f)-13000(l)1000(a)]TJ 153 0 TD 0 Tc (wy)Tj 51 0 TD [(ers)-15000(w)]TJ 94 0 TD [(e)-16000(can)-15000(c)]TJ 128 0 TD [(ho)-1000(ose:)-22000(although)-14000(w)]TJ 337 0 TD 16 Tc (ew)Tj 62.9999 0 TD 0 Tc [(ould)-14000(lo)]TJ 125 0 TD (v)Tj 21.0001 0 TD 15 Tc [(et)15000(oe)15000(n)]TJ 125 0 TD 0 Tc (ter)Tj -1599 50 TD [(a)-14000(negativ)]TJ 167 0 TD 13 Tc (en)Tj 53 0 TD 0 Tc (um)Tj 58 0 TD [(b)-1000(er,)-13000(realit)]TJ 177 0 TD [(y)-13000(dictate)-15000(that)-14000(the)-14000(lo)]TJ 367 0 TD (w)Tj 28.9999 0 TD [(er)-14000(limit)-11000(m)]TJ 182 0 TD [(ust)-13000(b)-1000(e)-14000(zero.)-19000(The)]TJ /T12 1 Tf 313 0 TD (-integer)Tj /T15 1 Tf 189.0001 0 TD (option)Tj -1535 49 TD [(indicates)-17000(that)-16000(the)-18000(n)]TJ 365 0 TD (um)Tj 58 0 TD 1 Tc [(be)1000(r)-14000(o)1000(f)-15000(l)1000(a)]TJ 155 0 TD 0 Tc (wy)Tj 50.9999 0 TD [(ers)-17000(m)]TJ 102.0001 0 TD [(ust)-15000(b)-1000(e)-17000(an)-17000(in)]TJ 224 0 TD [(teger;)-18000(that)-16000(is,)-17000(w)]TJ 296.9999 0 TD [(e)-17000(resp)-1000(ect)-18000(the)-18000(la)]TJ 286.0001 0 TD (wy)Tj 50.9998 0 TD (ers')Tj -1588.9998 50 TD (righ)Tj 71 0 TD [(ts)-10000(not)-10000(to)-9000(b)-1000(e)-11000(c)]TJ 228 0 TD [(hopp)-1000(ed)-11000(up)-10000(in)]TJ 232.9999 0 TD [(to)-9000(decimal)-8000(p)-1000(oin)]TJ 273.0001 0 TD [(ts.)-17000(Finally)]TJ 186.9999 0 TD [(,)-8000(since)-10000(la)]TJ 149 0 TD (wy)Tj 51 0 TD [(ers)-10000(seem)-10000(to)-10000(go)-9000(in)-10000(pairs,)-10000(w)]TJ 440.0001 0 TD (e)Tj -1632 50 TD [(set)-14000(the)]TJ /T12 1 Tf 135 0 TD (-step)Tj /T15 1 Tf 123 0 TD [(option)-12000(to)]TJ /T12 1 Tf 179 0 TD (2)Tj /T15 1 Tf 22 0 TD [(,)-13000(whic)]TJ 107 0 TD [(h)-13000(indicates)-14000(that)-13000(when)-14000(w)]TJ 434.9999 0 TD [(e)-14000(press)-15000(the)-14000(up/do)]TJ 317.0001 0 TD [(wn)-13000(arro)]TJ 138.9999 0 TD [(w)-13000(buttons,)]TJ -1456.9999 50 TD (w)Tj 29 0 TD 14 Tc (ew)Tj 61 0 TD 0 Tc (an)Tj 42.9999 0 TD [(t)-14000(the)-14000(n)]TJ 123.0001 0 TD (um)Tj 58 0 TD 1 Tc [(be)1000(r)-12000(o)1000(f)-13000(l)1000(a)]TJ 151 0 TD 0 Tc (wy)Tj 51 0 TD [(ers)-13000(to)-14000(go)-13000(up)-14000(and)-14000(do)]TJ 352.9999 0 TD [(wn)-14000(b)]TJ 89 0 TD 13 Tc (yt)Tj 50 0 TD 0 Tc (w)Tj 29.0001 0 TD [(o)-14000(eac)]TJ 91 0 TD [(h)-14000(time.)]TJ -1066 73 TD [(As)-20000(sho)]TJ 126 0 TD [(wn)-19000(in)-18000(the)-19000(example,)-19000(y)]TJ 403 0 TD [(ou)-18000(can)-19000(create)-21000(and)-18000(manipulate)-17000(a)-19000(Tix)-18000(widget)-19000(in)-18000(the)-20000(same)]TJ -591 50 TD [(manner)-17000(as)-19000(the)-19000(standard)-19000(Tk)-18000(widgets.)-31000(The)-19000(options)-18000(of)-18000(the)-19000(widget)-18000(can)-18000(b)-1000(e)-19000(sp)-1000(eci\014ed)-20000(during)]TJ ET endstream endobj 42 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 43 0 obj << /Type /XObject /Subtype /Image /Name /Im2 /Width 133 /Height 32 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 243 /Filter /FlateDecode >> stream H‰ì–‹à Eï›ìïü:×µ`é&Vç–x“Ú‡¯@¨÷KKÓ¸:­éL* Ü ˆ°Cl âÜnj…`:@3!€HÁ È4· ^kZÜ‘çv„Ø*(þ‚u\ÔÁž·¦ìiyCBÄÝþéxk…pï N;zi˜4Âf]Ây÷Ò3D¶Ñi28%X>"a4C謄–W!|'50Q@°(1q'0/2fv¹ ÏnÜ"§#j͘ÆÚñ9‘¯¢É´ Âò?ainD~"4 ÂÂp]À¾,½€--q=$k× endstream endobj 44 0 obj << /Type /XObject /Subtype /Image /Name /Im6 /Width 133 /Height 32 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 243 /Filter /FlateDecode >> stream H‰ì–‹à Eï›ìïü:×µ`é&Vç–x“Ú‡¯@¨÷KKÓ¸:­éL* Ü ˆ°Cl âÜnj…`:@3!€HÁ È4· ^kZÜ‘çv„Ø*(þ‚u\ÔÁž·¦ìiyCBÄÝþéxk…pï N;zi˜4Âf]Ây÷Ò3D¶Ñi28%X>"a4C謄–W!|'50Q@°(1q'0/2fv¹ ÏnÜ"§#j͘ÆÚñ9‘¯¢É´ Âò?ainD~"4 ÂÂp]À¾,½€--q=$k× endstream endobj 46 0 obj << /Length 6379 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (10)Tj /T9 1 Tf 1028 0 TD [(CHAPTER)-14000(1.)-27000(INTR)]TJ 389 0 TD (ODUCTION)Tj ET q 132.984 0 0 31.968 257.52 686.02 cm /Im2 Do Q BT /T15 1 Tf 0.24 0 0 -0.24 246.48 664.02 Tm [(Figure)-14000(1.2:)-17000(The)-14000(TixCon)]TJ 435.9999 0 TD [(trol)-13000(Widget)]TJ ET q 58.5144 0 0 27 192.54 601.24 cm BI /W 65 /H 27 /BPC 8 /CS /CS2 /F /Fl ID H‰ì’Û€0Céÿÿ´—)Ð2 ofºéàØêÌ––.ÿÇ4αæûEWtô*Ëâ®Jµ±¡»š™"x§¦ €{S¿z˜<ê• `·ó°O ¥æo \ÈÑ- ¹C㛺›¬ßßÝåK´ 0´Âá EI Q q 17.9712 0 0 13.4784 435.54 614.74 cm BI /W 15 /H 15 /BPC 8 /CS /CS3 /F /Fl ID H‰ŒÊA Ä@ÜþÿÏ¢`” ±·IjÖ6Þ*µè {Txá ¤ÏœýP7§ Û¦F§ EI Q q 18 0 0 13.5332 435.54 578.74 cm BI /W 18 /H 13 /BPC 8 /CS /CS3 /F /Fl ID H‰”ÈA Á±þÿgUe…‹>6<4wrz­!ÆfÃÿh‹Qb0L¸§ EI Q q 121.4854 0 0 26.973 269.04 560.74 cm /Im6 Do Q 0 G 0 J 0 j 0.45 w 10 M []0 d 1 i 255.54 610.24 m 282.54 592.24 l S 2 j 277.548 597.732 m 282.54 592.24 l 275.551 594.737 l S q 49.4767 0 0 27.0149 314.04 623.74 cm BI /W 51 /H 29 /BPC 8 /CS /DeviceGray /F /Fl ID H‰Ú¹sЂ|’éZþCµ þÓ] ¦¬œ=£Z½2bŸX0øµü'@´¢ã?ʧÁ *ÙL EI Q 0 j 277.548 597.732 m 282.54 592.24 l 275.551 594.737 l h 336.54 619.24 m 336.54 592.24 l S 2 j 338.34 599.44 m 336.54 592.24 l 334.74 599.44 l S 0 j 431.04 614.74 m 395.04 587.74 l S 2 j 401.88 590.62 m 395.04 587.74 l 399.72 593.5 l S 0 j 431.04 578.74 m 395.04 565.24 l S 2 j 402.414 566.082 m 395.04 565.24 l 401.149 569.454 l S BT 0.24 0 0 -0.24 229.2 538.26 Tm [(Figure)-14000(1.3:)-17000(The)-14000(Comp)-1000(osition)-11000(of)-14000(TixCon)]TJ 726.9999 0 TD (trol)Tj -1156.9999 131 TD [(the)-17000(creation)-18000(of)-16000(the)-17000(widget.)-27000(Alternativ)]TJ 706 0 TD (ely)Tj 49 0 TD [(,)-17000(they)-17000(can)-17000(b)-1000(e)-18000(c)]TJ 281 0 TD [(hanged)-17000(b)]TJ 167.9999 0 TD [(y)-17000(the)]TJ /T12 1 Tf 113.0001 0 TD (configure)Tj /T15 1 Tf 213 0 TD (widget)Tj -1530 50 TD [(command.)-14000(In)-10000(addition,)-9000(options)-9000(can)-11000(also)-9000(b)-1000(e)-10000(sp)-1000(eci\014ed)-12000(in)-9000(the)-11000(option)-9000(database)-10000(or)-10000(as)-10000(X)-10000(resources.)]TJ T* [(Here)-15000(is)-14000(an)-14000(example)-12000(that)-14000(pro)-1000(duces)-16000(the)-14000(same)-13000(result)-15000(as)-14000(the)-14000(previous)-14000(co)-1000(de)-15000(fragmen)]TJ 1445.9999 0 TD (t:)Tj /T12 1 Tf -1358.9999 114.0001 TD [(option)-21000(add)-21000(*lawyers.max)-19000(10)]TJ 0 48.9999 TD [(option)-21000(add)-21000(*lawyers.min)-19000(0)]TJ 0 50 TD [(tixControl)-20000(.lawyers)-20000(-label)-21000(Lawyers:)-20000(-integer)-20000(true)]TJ T* [(.lawyers)-20000(config)-21000(-step)-21000(2)]TJ /T15 1 Tf -87 114.0001 TD [(In)-15000(\014gure)-15000(1.3,)-14000(y)]TJ 270 0 TD [(ou)-15000(can)-15000(see)-16000(the)-16000(comp)-1000(osition)-13000(of)-14000(TixCon)]TJ 695 0 TD [(trol:)-19000(it)-15000(is)-14000(made)-14000(out)-15000(of)-14000(a)-15000(lab)-1000(el)-15000(widget,)]TJ -965 49 TD [(an)-13000(en)]TJ 97 0 TD [(try)-15000(widget)-13000(and)-14000(t)]TJ 298 0 TD 0 Tw (w)Tj 29 0 TD [(o)-13000(button)-13000(widgets.)-19000(Widgets)-13000(that)-14000(are)-14000(comp)-1000(osed)-13000(of)-13000(other)-14000(widgets,)-14000(lik)]TJ 1208.9998 0 TD (e)Tj -1632.9998 50 TD (TixCon)Tj 137 0 TD [(trol,)-11000(are)-13000(called)]TJ /T13 1 Tf 272 0 TD (me)Tj 50.9999 0 TD (ga-widgets)Tj /T15 1 Tf 186.0001 0 TD [(.)-17000(Most)-13000(widgets)-12000(in)-12000(the)-13000(Tix)-12000(library)-12000(are)-12000(mega-widgets)-12000(\(xx:)]TJ -646 50 TD [(and)-14000(as)-14000(y)]TJ 153 0 TD [(ou)-13000(kno)]TJ 122 0 TD [(w)-13000(this)-14000(b)-1000(o)-1000(o)0(k)-14000(i)0(s)-14000(a)0(b)-1000(out)-14000(them!\).)]TJ /T8 1 Tf -275 140 TD (1.2.2)Tj 171 0 TD [(Accessing)-19000(The)-18000(V)]TJ 407 0 TD [(alue)-19000(of)-19000(a)-18000(TixCon)]TJ 409.9999 0 TD [(trol)-19000(Widget)]TJ /T15 1 Tf -987.9999 99.9999 TD [(The)-18000(TixCon)]TJ 226 0 TD [(trol)-16000(widget)-17000(allo)]TJ 283 0 TD [(ws)-16000(the)-18000(user)-18000(to)-17000(input)-18000(a)-17000(v)]TJ 454.9999 0 TD [(alue.)-27000(There)-19000(are)-17000(sev)]TJ 364 0 TD [(eral)-18000(w)]TJ 114.0001 0 TD (a)Tj 20 0 TD [(ys)-17000(to)-17000(read)]TJ -1462 50 TD [(this)-15000(v)]TJ 102 0 TD [(alue)-14000(in)-14000(y)]TJ 157.9999 0 TD [(our)-14000(program.)-19000(First)-15000(of)-14000(all,)-13000(TixCon)]TJ 615.9999 0 TD [(trol)-13000(stores)-16000(the)-15000(curren)]TJ 382 0 TD 16 Tc (tv)Tj 52 0 TD 0 Tc [(alue)-14000(in)-14000(the)]TJ /T12 1 Tf 209 0 TD (-value)Tj /T15 1 Tf -1518.9999 50 TD [(option.)-17000(Y)]TJ 173 0 TD [(ou)-14000(can)-14000(use)-14000(query)-15000(the)]TJ /T12 1 Tf 392 0 TD (-value)Tj /T15 1 Tf 144.9999 0 TD [(option)-13000(b)]TJ 151.0001 0 TD [(y)-14000(calling)-12000(the)-15000(command)]TJ /T12 1 Tf -774 113 TD [(.c)-22000(cget)-21000(-value)]TJ /T15 1 Tf -25 114.0001 TD [(this)-16000(command)-13000(will)-14000(return)-17000(the)-16000(curren)]TJ 669 0 TD 17 Tc (tv)Tj 53 0 TD 0 Tc [(alue)-16000(of)-15000(the)-16000(tixCon)]TJ 334.9999 0 TD [(tro)-15000(widget)]TJ /T12 1 Tf 203 0 TD (.c)Tj /T15 1 Tf 44 0 TD [(.)-23000(The)-17000(follo)]TJ 201.0001 0 TD (wing)Tj -1567 50 TD [(command)-11000(sets)-15000(the)-15000(v)]TJ 362 0 TD [(alue)-13000(of)-13000(the)-15000(widget)-14000(to)-13000(a)-14000(new)-14000(n)]TJ 531.9999 0 TD (um)Tj 58.0001 0 TD [(b)-1000(e)0(r)-13000(\(100\):)]TJ /T12 1 Tf -865 114 TD [(.c)-22000(config)-20000(-value)-21000(100)]TJ /T15 1 Tf -87 112.9999 TD [(The)-18000(second)-18000(w)]TJ 255 0 TD (a)Tj 20 0 TD [(y)-17000(t)0(o)-17000(access)-20000(the)-18000(v)]TJ 315 0 TD [(alue)-17000(of)-16000(TixCon)]TJ 278 0 TD [(trol)-17000(is)-17000(to)-17000(use)-18000(the)]TJ /T12 1 Tf 331.9999 0 TD (-variable)Tj /T15 1 Tf 213 0 TD [(option.)-28000(This)]TJ -1412.9999 50 TD [(options)-14000(instructs)-15000(the)-14000(TixCon)]TJ 525 0 TD [(trol)-13000(widget)-14000(to)-13000(store)-15000(the)-15000(its)-14000(v)]TJ 513.9999 0 TD [(alue)-13000(in)]TJ 121 0 TD [(to)-13000(a)-14000(global)-12000(v)]TJ 227.0001 0 TD [(ariable)-13000(so)-14000(that)]TJ ET endstream endobj 47 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /XObject << /Im2 43 0 R /Im6 44 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS2 48 0 R /CS3 49 0 R >> >> endobj 48 0 obj [/Indexed /DeviceRGB 1 50 0 R] endobj 50 0 obj << /Filter /ASCII85Decode /Length 12 >> stream \[f6N!!!~> endstream endobj 49 0 obj [/Indexed /DeviceRGB 3 51 0 R] endobj 51 0 obj << /Filter /ASCII85Decode /Length 19 >> stream \[f9Ns8R"UDZBb;~> endstream endobj 53 0 obj << /Length 7229 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(1.2.)-31000(GETTING)-13000(ST)]TJ 359.9999 0 TD (AR)Tj 59 0 TD [(TED:)-12000(THE)-15000(TIX)]TJ 293.0001 0 TD (CONTR)Tj 153 0 TD [(OL)-13000(WIDGET)]TJ /T15 1 Tf 742.9998 0 TD (11)Tj -1607.9998 117 TD 0 Tw (y)Tj 21 0 TD [(ou)-13000(can)-14000(read)-13000(it)-13000(at)-14000(an)]TJ 359 0 TD [(y)-13000(time.)-16000(Also,)-13000(b)]TJ 272 0 TD [(y)-13000(assigning)-13000(a)-13000(new)-14000(v)]TJ 351.9999 0 TD [(alue)-12000(to)-14000(this)-13000(global)-12000(v)]TJ 359 0 TD [(ariable,)-12000(y)]TJ 168.0001 0 TD [(ou)-13000(can)]TJ -1531 49.0002 TD (c)Tj 17 0 TD [(hange)-14000(the)-15000(v)]TJ 211.9999 0 TD [(alue)-13000(of)-13000(the)-15000(TixCon)]TJ 343.0001 0 TD [(trol)-12000(widget.)-18000(Here)-15000(is)-14000(an)-14000(example:)]TJ /T12 1 Tf -485 116 TD [(.c)-22000(config)-20000(-variable)-20000(myvar)]TJ 0 49 TD [(set)-21000(myvar)-21000(100)]TJ /T15 1 Tf -87 115 TD [(In)-10000(some)-10000(situations,)-10000(y)]TJ 368 0 TD [(ou)-10000(ma)]TJ 109.9999 0 TD 9 Tc (yw)Tj 60.0001 0 TD 0 Tc (an)Tj 43 0 TD [(t)-10000(t)0(o)-10000(b)-1000(e)-11000(informed)-9000(imm)]TJ 380 0 TD [(ediately)-7000(when)-11000(the)-11000(v)]TJ 341.9999 0 TD [(alue)-10000(of)-10000(the)-11000(TixCon-)]TJ -1302.9999 50 TD [(trol)-15000(widget)-15000(c)]TJ 231.9999 0 TD [(hanges.)-23000(T)]TJ 184 0 TD [(o)-14000(accomplish)-14000(this,)-16000(y)]TJ 365.0001 0 TD [(ou)-14000(can)-16000(use)-16000(the)]TJ /T12 1 Tf 281.9999 0 TD (-command)Tj /T15 1 Tf 189 0 TD [(option.)-22000(The)-16000(follo)]TJ 315.0001 0 TD (wing)Tj -1567 50 TD [(line)-11000(causes)-12000(the)-12000(TCL)-11000(pro)-1000(cedure)]TJ /T12 1 Tf 556.9999 0 TD (valueChanged)Tj /T15 1 Tf 272 0 TD [(to)-11000(b)-1000(e)-12000(called)-11000(whenev)]TJ 350 0 TD [(er)-13000(the)-12000(v)]TJ 136 0 TD [(alue)-10000(of)]TJ /T12 1 Tf 129 0 TD (.c)Tj /T15 1 Tf 55.0001 0 TD (c)Tj 16.9999 0 TD (hanges:)Tj /T12 1 Tf -1428.9999 114.9998 TD [(tixControl)-20000(.c)-21000(-command)-20000(valueChanged)]TJ /T10 1 Tf -87 132 TD (Disablin)Tj 174 0 TD [(g)-13000(Callbac)]TJ 191.9999 0 TD [(ks)-15000(T)]TJ 88 0 TD [(emp)-1000(orarily)]TJ /T15 1 Tf -453.9999 100 TD (No)Tj 51 0 TD [(w,)-21000(if)-19000(y)]TJ 128 0 TD [(ou)-19000(w)]TJ 92 0 TD (an)Tj 43 0 TD 19 Tc [(tt)19000(o)-1000(c)]TJ 109 0 TD 0 Tc [(hange)-20000(a)-20000(v)]TJ 186.9999 0 TD [(alue)-19000(from)-18000(within)-19000(the)-21000(program,)-19000(y)]TJ 616 0 TD [(ou)-19000(ha)]TJ 106 0 TD (v)Tj 21 0 TD [(e)-20000(t)0(o)-20000(disable)-19000(the)]TJ -1352.9999 50 TD (callbac)Tj 124 0 TD [(k.)-27000(The)-18000(reason)-17000(is)-17000(that)-18000(the)-17000(callbac)]TJ 619 0 TD [(k)-17000(runs)-18000(whenev)]TJ 268 0 TD [(er)-18000(y)]TJ 73 0 TD [(ou)-17000(\(as)-17000(w)]TJ 159.9999 0 TD [(ell)-17000(as)-17000(the)-18000(user\))-18000(mak)]TJ 373.0001 0 TD (es)Tj -1617 50 TD 15 Tc (ac)Tj 53 0 TD 0 Tc [(hange.)-22000(In)-15000(particular,)-15000(if)-14000(y)]TJ 458 0 TD [(ou)-15000(mak)]TJ 136.9999 0 TD 13 Tc [(ea)-2000(c)]TJ 84 0 TD 0 Tc [(hange)-16000(within)-14000(the)-16000(callbac)]TJ 449.0001 0 TD [(k)-14000(pro)-1000(cedure)-17000(and)-15000(forget)-15000(to)]TJ -1181 50 TD [(disable)-16000(the)-16000(callbac)]TJ 337.9999 0 TD [(k,)-16000(it)-15000(will)-15000(recursiv)]TJ 314.0001 0 TD [(ely)-17000(call)-15000(itself)-16000(and)-16000(en)]TJ 373 0 TD [(ter)-17000(an)-16000(in\014nite)-15000(lo)-1000(op.)-24000(T)]TJ 409.9999 0 TD 15 Tc (oa)Tj 56 0 TD 0 Tc (v)Tj 21.0001 0 TD [(oid)-15000(this)]TJ -1512 49.0001 TD [(problem,)-12000(y)]TJ 193.9999 0 TD [(ou)-13000(should)-14000(use)-15000(the)]TJ /T12 1 Tf 332.0001 0 TD (-disablecallback)Tj /T15 1 Tf 362.9999 0 TD [(option.)-17000(Here)-15000(is)-14000(an)-14000(example:)]TJ /T12 1 Tf -801.9999 115.9999 TD [(tixControl)-20000(.c)-21000(-command)-20000(addOne)]TJ 0 99.0001 TD [(proc)-21000(addOne)-21000({value})-20000({)]TJ 87 50 TD [(.c)-22000(config)-20000(-disablecallback)-19000(true)]TJ T* [(.c)-22000(config)-20000(-value)-21000([incr)-21000(value])]TJ T* [(.c)-22000(config)-20000(-disablecallback)-19000(false)]TJ -87 49 TD (})Tj /T15 1 Tf -87 116 TD [(The)-14000(pro)-1000(cedure)]TJ /T12 1 Tf 277 0 TD (addOne)Tj /T15 1 Tf 144 0 TD [(adjusts)-14000(the)-14000(v)]TJ 232.9999 0 TD [(alue)-12000(of)]TJ /T12 1 Tf 133.0001 0 TD (.c)Tj /T15 1 Tf 56.9999 0 TD (b)Tj 22 0 TD [(y)-13000(one)-14000(whenev)]TJ 244 0 TD [(er)-15000(the)-13000(user)-15000(en)]TJ 247 0 TD [(ters)-15000(a)-13000(new)-14000(v)]TJ 219.9999 0 TD (alue)Tj -1576.9998 48.9999 TD (in)Tj 34 0 TD (to)Tj /T12 1 Tf 50 0 TD (.c)Tj /T15 1 Tf 44 0 TD [(.)-17000(Notice)-14000(that)-13000(it)-13000(is)-13000(necessary)-15000(to)-13000(set)]TJ /T12 1 Tf 628 0 TD (-disablecallback)Tj /T15 1 Tf 362 0 TD [(here)-14000(or)-13000(otherwise)]TJ /T12 1 Tf 322.9999 0 TD (addOne)Tj /T15 1 Tf 144.0001 0 TD (will)Tj -1585 50.0001 TD [(b)-1000(e)-13000(in\014nitely)-12000(recursed!)-20000(That)-13000(is)-13000(b)-1000(ecause)]TJ /T12 1 Tf 703.9999 0 TD (addOne)Tj /T15 1 Tf 143.0001 0 TD [(is)-13000(called)]TJ /T13 1 Tf 156.9999 0 TD [(every)-14000(time)]TJ /T15 1 Tf 201.0001 0 TD [(the)-14000(v)]TJ 90.9999 0 TD [(alue)-12000(c)]TJ 103.0001 0 TD [(hanges,)-13000(either)]TJ -1399 50 TD (b)Tj 22 0 TD [(y)-14000(the)-14000(user)-15000(or)-14000(b)]TJ 268 0 TD [(y)-14000(the)-14000(program.)]TJ /T8 1 Tf -290 139.9999 TD (1.2.3)Tj 171 0 TD (V)Tj 36.9999 0 TD [(alidating)-19000(User)-18000(Inputs)]TJ /T15 1 Tf -207.9999 100 TD [(Sometimes)-9000(it)-11000(ma)]TJ 299.9999 0 TD [(y)-9000(b)-1000(e)-11000(necessary)-13000(to)-11000(c)]TJ 330.0001 0 TD (hec)Tj 57.9999 0 TD [(k)-12000(the)-12000(user)-12000(input)-11000(against)-10000(certain)-12000(criteria.)-17000(F)]TJ 754.0001 0 TD [(or)-11000(example,)]TJ -1442 50 TD (y)Tj 21 0 TD [(ou)-13000(ma)]TJ 113 0 TD 12 Tc (yw)Tj 62.9999 0 TD 0 Tc (an)Tj 43.0001 0 TD [(t)-13000(t)0(o)-14000(allo)]TJ 144.9999 0 TD [(w)-12000(only)-13000(ev)]TJ 171.9999 0 TD [(en)-15000(n)]TJ 78 0 TD (um)Tj 58.0001 0 TD [(b)-1000(ers)-13000(in)-13000(a)-14000(TixCon)]TJ 307 0 TD [(trol)-12000(widget.)-18000(T)]TJ 253.9999 0 TD [(o)-13000(d)0(o)-13000(this,)-14000(y)]TJ 205.0001 0 TD [(ou)-13000(can)-14000(use)]TJ -1459 50 TD (the)Tj /T12 1 Tf 72 0 TD (-validatecmd)Tj /T15 1 Tf 276 0 TD [(option,)-14000(whic)]TJ 224 0 TD [(h)-14000(s)0(p)-1000(eci\014es)-17000(a)-14000(Tcl)-14000(command)-12000(to)-15000(call)-14000(whenev)]TJ 759.9999 0 TD [(er)-16000(the)-15000(user)-15000(en)]TJ 250.0001 0 TD (ters)Tj -1582 50 TD [(a)-14000(new)-14000(v)]TJ 140 0 TD [(alue.)-17000(Here)-15000(is)-14000(an)-14000(example:)]TJ /T12 1 Tf -53 115.0001 TD [(tixControl)-20000(.c)-21000(-value)-21000(0)-21000(-step)-21000(2)-22000(-validatecmd)-19000(evenOnly)]TJ 0 100 TD [(proc)-21000(evenOnly)-20000({value})-21000({)]TJ 87 48.9999 TD [(return)-21000([expr)-21000($value)-20000(-)-22000(\($value)-20000(%2\)])]TJ -87 50 TD (})Tj ET endstream endobj 54 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 57 0 obj << /Type /XObject /Subtype /Image /Name /Im3 /Width 133 /Height 32 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 243 /Filter /FlateDecode >> stream H‰ì–‹à Eï›ìïü:×µ`é&Vç–x“Ú‡¯@¨÷KKÓ¸:­éL* Ü ˆ°Cl âÜnj…`:@3!€HÁ È4· ^kZÜ‘çv„Ø*(þ‚u\ÔÁž·¦ìiyCBÄÝþéxk…pï N;zi˜4Âf]Ây÷Ò3D¶Ñi28%X>"a4C謄–W!|'50Q@°(1q'0/2fv¹ ÏnÜ"§#j͘ÆÚñ9‘¯¢É´ Âò?ainD~"4 ÂÂp]À¾,½€--q=$k× endstream endobj 59 0 obj << /Length 8060 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (12)Tj /T9 1 Tf 1022.9999 0 TD [(CHAPTER)-14000(1.)-32000(INTR)]TJ 394.0001 0 TD (ODUCTION)Tj ET q 58.5009 0 0 27 197.6402 651.92 cm BI /W 65 /H 27 /BPC 8 /CS /CS2 /F /Fl ID H‰ì’Û€0Céÿÿ´—)Ð2 ofºéàØêÌ––.ÿÇ4αæûEWtô*Ëâ®Jµ±¡»š™"x§¦ €{S¿z˜<ê• `·ó°O ¥æo \ÈÑ- ¹C㛺›¬ßßÝåK´ 0´Âá EI Q q 17.9671 0 0 13.4784 440.5843 665.42 cm BI /W 15 /H 15 /BPC 8 /CS /CS3 /F /Fl ID H‰ŒÊA Ä@ÜþÿÏ¢`” ±·IjÖ6Þ*µè {Txá ¤ÏœýP7§ Û¦F§ EI Q q 17.9959 0 0 13.5332 440.5843 629.42 cm BI /W 18 /H 13 /BPC 8 /CS /CS3 /F /Fl ID H‰”ÈA Á±þÿgUe…‹>6<4wrz­!ÆfÃÿh‹Qb0L¸§ EI Q q 121.4575 0 0 26.973 274.1226 611.42 cm /Im3 Do Q 0 G 0 J 0 j 0.45 w 10 M []0 d 1 i 260.626 660.92 m 287.62 642.92 l S 2 j 282.628 648.412 m 287.62 642.92 l 280.632 645.417 l S q 49.4653 0 0 27.0149 319.1122 674.42 cm BI /W 51 /H 29 /BPC 8 /CS /DeviceGray /F /Fl ID H‰Ú¹sЂ|’éZþCµ þÓ] ¦¬œ=£Z½2bŸX0øµü'@´¢ã?ʧÁ*ÙL EI Q 0 j 282.628 648.412 m 287.62 642.92 l 280.632 645.417 l h 341.607 669.92 m 341.607 642.92 l S 2 j 343.407 650.12 m 341.607 642.92 l 339.807 650.12 l S 0 j 436.085 665.42 m 400.094 638.42 l S 2 j 406.932 641.3 m 400.094 638.42 l 404.773 644.18 l S 0 j 436.085 629.42 m 400.094 615.92 l S 2 j 407.466 616.762 m 400.094 615.92 l 406.201 620.134 l S BT /F2 1 Tf 12.6 0 0 12.6 468.54 669.52 Tm (incr)Tj 0 -3.2143 TD (decr)Tj -25.3571 2.5 TD (label)Tj 13.5714 3.9286 TD (entry)Tj /T15 1 Tf 0.24 0 0 -0.24 216.24 588.18 Tm [(Figure)-14000(1.4:)-17000(Sub)]TJ 282 0 TD [(widgets)-15000(inside)-13000(TixCon)]TJ 404.9999 0 TD [(trol)-13000(Widget)]TJ -1062.9999 129 TD [(The)-19000(v)]TJ 110 0 TD [(alue)-18000(parameter)-18000(to)]TJ /T12 1 Tf 350.9999 0 TD (evenOnly)Tj /T15 1 Tf 192.0001 0 TD [(is)-19000(the)-19000(new)-19000(v)]TJ 233 0 TD [(alue)-18000(en)]TJ 132 0 TD [(tered)-20000(b)]TJ 132.9999 0 TD [(y)-18000(the)-20000(user.)]TJ 235.0001 0 TD (The)Tj /T12 1 Tf 89.9999 0 TD (evenOnly)Tj /T15 1 Tf -1475.9999 50 TD [(pro)-1000(cedure)-20000(mak)]TJ 275 0 TD [(es)-16000(sure)-19000(that)-18000(the)-18000(new)-18000(v)]TJ 419.9999 0 TD [(alue)-18000(is)-17000(ev)]TJ 176.0001 0 TD [(en)-19000(b)]TJ 82 0 TD [(y)-17000(returning)-18000(a)-18000(m)0(o)-1000(di\014ed,)-17000(ev)]TJ 489 0 TD [(en)-18000(n)]TJ 80.9999 0 TD (um)Tj 58.0001 0 TD [(b)-1000(er.)]TJ -1581 50 TD [(The)-13000(Tcl)-13000(command)-10000(sp)-1000(eci\014ed)-15000(b)]TJ 534 0 TD [(y)-13000(the)]TJ /T12 1 Tf 104.9999 0 TD (-validatecmd)Tj /T15 1 Tf 274 0 TD 0 Tw (m)Tj 35 0 TD [(ust)-12000(return)-14000(a)-13000(v)]TJ 247 0 TD [(alue)-12000(whic)]TJ 168 0 TD [(h)-13000(i)0(t)-13000(deems)-13000(v)]TJ 220.9999 0 TD (alid)Tj -1583.9998 50 TD [(and)-14000(this)-14000(v)]TJ 182 0 TD [(alue)-13000(will)-12000(b)-1000(e)-15000(stored)-15000(in)-13000(the)]TJ /T12 1 Tf 467 0 TD (-value)Tj /T15 1 Tf 144 0 TD [(option)-13000(of)-14000(the)-14000(TixCon)]TJ 385 0 TD [(trol)-13000(widget.)]TJ /T14 1 Tf -1178 159.9998 TD (1.3)Tj 153 0 TD [(Accessing)-22000(The)-22000(Comp)-2000(onen)]TJ 759 0 TD [(ts)-21000(Inside)-24000(Mega)-21000(Widgets)]TJ /T8 1 Tf -912 123.0001 TD (1.3.1)Tj 171 0 TD (Sub)Tj 91 0 TD (widgets)Tj /T15 1 Tf -262 100 TD [(As)-19000(w)]TJ 95 0 TD 18 Tc [(eh)18000(a)]TJ 79 0 TD 0 Tc (v)Tj 21 0 TD [(e)-18000(seen)-19000(in)-18000(section)-19000(1.2.1,)-17000(the)-18000(TixCon)]TJ 654 0 TD [(trol)-17000(widget)-18000(is)-18000(comp)-1000(osed)-18000(of)-18000(sev)]TJ 568 0 TD [(eral)-18000(widgets:)]TJ -1417 50 TD [(one)-16000(lab)-1000(el)-16000(widget,)-15000(one)-17000(en)]TJ 446.9999 0 TD [(try)-16000(widget)-16000(and)-16000(t)]TJ 303.9999 0 TD (w)Tj 29.0001 0 TD [(o)-15000(button)-16000(widgets.)-25000(These)-17000(\\widgets)-16000(inside)-16000(mega-)]TJ -780 50 TD [(widgets")-12000(are)-12000(called)]TJ /T13 1 Tf 352 0 TD (subwidgets)Tj /T15 1 Tf 201 0 TD [(in)-11000(the)-13000(Tix)-11000(terminology)]TJ 406 0 TD 14 Tc (.W)Tj 66 0 TD 0 Tc [(e)-12000(will)-10000(often)-12000(ha)]TJ 251.9999 0 TD (v)Tj 21.0001 0 TD [(e)-12000(the)-13000(need)-12000(to)-12000(access)]TJ -1298 48.9999 TD [(these)-17000(sub)]TJ 168.9999 0 TD [(widgets.)-22000(F)]TJ 194 0 TD [(or)-15000(example,)-14000(sometimes)-13000(w)]TJ 459.0001 0 TD [(e)-15000(need)-17000(to)-15000(c)]TJ 200.9999 0 TD [(hange)-15000(the)-16000(con\014guration)-15000(options)-15000(of)]TJ -1022.9999 50 TD [(the)-14000(sub)]TJ 132 0 TD [(widgets.)-19000(In)-14000(other)-15000(cases,)-14000(w)]TJ 471.9999 0 TD 14 Tc [(em)14000(a)]TJ 88 0 TD 0 Tc [(y)-12000(need)-15000(to)-14000(in)]TJ 216 0 TD [(teract)-14000(with)-14000(the)-14000(sub)]TJ 346 0 TD [(widgets)-15000(directly)]TJ 284.9999 0 TD (.)Tj /T8 1 Tf -1538.9998 139.0001 TD (1.3.2)Tj 171 0 TD (Sub)Tj 91 0 TD [(widget)-19000(Names)]TJ /T15 1 Tf -262 100 TD (Eac)Tj 65.9999 0 TD [(h)-16000(sub)]TJ 100 0 TD [(widget)-16000(inside)-15000(a)-16000(mega)-14000(is)-15000(iden)]TJ 520.0001 0 TD [(ti\014ed)-16000(b)]TJ 129.9999 0 TD 15 Tc (ya)Tj /T13 1 Tf 74.0001 0 TD 0 Tc [(subwidget)-16000(name)]TJ /T15 1 Tf 284.9999 0 TD [(.)-24000(Naturally)]TJ 207 0 TD [(,)-14000(the)-16000(lab)-1000(el)-15000(and)]TJ -1381.9999 50 TD (en)Tj 40 0 TD [(try)-16000(sub)]TJ 131 0 TD [(widgets)-17000(inside)-15000(a)-15000(TixSelect)-17000(widget)-15000(are)-16000(called)]TJ /T12 1 Tf 819.9999 0 TD (label)Tj /T15 1 Tf 124.0001 0 TD (and)Tj /T12 1 Tf 82.9999 0 TD (entry)Tj /T15 1 Tf 110 0 TD [(,)-14000(resp)-1000(ectiv)]TJ 185.0001 0 TD (ely)Tj 49 0 TD [(.)-25000(The)]TJ -1542 50 TD (t)Tj 15 0 TD (w)Tj 28.9999 0 TD [(o)-19000(button)-19000(widgets)-20000(are)-20000(called)]TJ /T12 1 Tf 534.9999 0 TD (incr)Tj /T15 1 Tf 106 0 TD (and)Tj /T12 1 Tf 86.0001 0 TD (decr)Tj /T15 1 Tf 107 0 TD [(b)-1000(ecause)-21000(they)-20000(are)-20000(used)-20000(to)]TJ /T12 1 Tf 489 0 TD (incr)Tj /T15 1 Tf 88 0 TD (emen)Tj 94 0 TD [(t)-18000(and)]TJ /T12 1 Tf -1549 50 TD (decr)Tj /T15 1 Tf 88 0 TD (emen)Tj 94 0 TD [(t)-13000(the)-14000(v)]TJ 120 0 TD [(alue)-13000(inside)-14000(the)-15000(TixCon)]TJ 413.9999 0 TD [(trol)-12000(widget)-14000(\(see)-15000(\014gure)-15000(1.4\).)]TJ /T8 1 Tf -715.9999 138.9999 TD (1.3.3)Tj 171 0 TD (The)Tj /T7 1 Tf 114.9999 0 TD (subwidget)Tj /T8 1 Tf 248.9999 0 TD [(Metho)-2000(d)]TJ /T15 1 Tf -534.9999 100 TD [(All)-19000(Tix)-19000(mega-widgets)-18000(supp)-1000(ort)-21000(the)]TJ /T12 1 Tf 658 0 TD (subwidget)Tj /T15 1 Tf 216 0 TD [(metho)-1000(d.)]TJ 185 0 TD [(This)-19000(metho)-1000(d)-19000(tak)]TJ 315 0 TD [(es)-20000(at)-20000(least)-20000(one)]TJ -1374 50 TD (argumen)Tj 157 0 TD [(t,)-13000(the)-15000(name)-14000(of)-14000(a)-14000(sub)]TJ 369 0 TD [(widget.)-21000(When)-14000(y)]TJ 295 0 TD [(ou)-14000(pass)-16000(only)-13000(one)-15000(argumen)]TJ 474.9999 0 TD [(t)-14000(t)0(o)-14000(this)-15000(metho)-1000(d,)-13000(it)]TJ -1295.9999 50 TD [(returns)-15000(the)-14000(pathname)-13000(of)-12000(the)-15000(sub)]TJ 587 0 TD [(widget)-13000(whic)]TJ 215 0 TD [(h)-14000(i)0(s)-13000(iden)]TJ 153 0 TD [(ti\014ed)-14000(b)]TJ 127.9999 0 TD [(y)-13000(that)-14000(name.)-16000(F)]TJ 275 0 TD [(or)-14000(example,)-11000(if)-13000(.c)]TJ -1357.9999 50 TD [(is)-14000(the)-14000(pathname)-13000(of)-13000(a)-14000(TixCon)]TJ 526 0 TD [(trol)-12000(widget,)-14000(the)-14000(command:)]TJ /T12 1 Tf -379.0001 110.0001 TD [(.c)-22000(subwidget)-20000(entry)]TJ /T15 1 Tf -146.9999 109.9999 TD [(returns)-15000(the)-15000(pathname)-13000(of)-13000(the)]TJ /T12 1 Tf 527 0 TD (entry)Tj /T15 1 Tf 123 0 TD (sub)Tj 61 0 TD [(widget,)-14000(whic)]TJ 227.9999 0 TD 14 Tc [(hi)14000(s)]TJ /T12 1 Tf 78.0001 0 TD 0 Tc (.c.frame.entry)Tj /T15 1 Tf 319 0 TD [(in)-14000(this)-14000(case.)]TJ ET endstream endobj 60 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2 61 0 R /T7 62 0 R /T8 35 0 R /T9 25 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R >> /XObject << /Im3 57 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS2 48 0 R /CS3 49 0 R >> >> endobj 64 0 obj << /Length 7607 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(1.3.)-31000(A)]TJ 126.9999 0 TD [(CCESSING)-14000(THE)-14000(COMPONENTS)-15000(INSIDE)-14000(MEGA)-14000(WIDGETS)]TJ /T15 1 Tf 1480.9998 0 TD (13)Tj -1545.9998 117 TD [(If)-16000(y)]TJ 64.9999 0 TD [(ou)-16000(call)-15000(the)]TJ /T12 1 Tf 212.0001 0 TD (subwidget)Tj /T15 1 Tf 211.9999 0 TD [(metho)-1000(d)-15000(with)-16000(additional)-14000(argumen)]TJ 605.0001 0 TD [(ts,)-16000(the)-16000(widget)-16000(command)-14000(of)]TJ -1156 49.0002 TD [(the)-17000(sp)-1000(eci\014ed)-18000(sub)]TJ 305 0 TD [(widget)-16000(will)-15000(b)-1000(e)-17000(called)-16000(with)-15000(these)-18000(argumen)]TJ 757.9999 0 TD [(ts.)-24000(F)]TJ 92.0001 0 TD [(or)-16000(example,)-15000(if)]TJ /T12 1 Tf 270.9999 0 TD (.c)Tj /T15 1 Tf 59 0 TD [(is,)-17000(again,)]TJ -1484.9999 50 TD [(the)-14000(pathname)-13000(of)-13000(a)-14000(TixCon)]TJ 484 0 TD [(trol)-13000(widget,)-13000(the)-14000(command:)]TJ /T12 1 Tf -337.0001 131.9998 TD [(.c)-22000(subwidget)-20000(entry)-20000(configure)-20000(-bg)-22000(gray)]TJ /T15 1 Tf -146.9999 132 TD [(will)-9000(cause)-12000(the)-11000(widget)-10000(command)-8000(of)-10000(the)]TJ /T12 1 Tf 678.9999 0 TD (entry)Tj /T15 1 Tf 119 0 TD (sub)Tj 61.0001 0 TD [(widget)-11000(of)]TJ /T12 1 Tf 175 0 TD (.c)Tj /T15 1 Tf 53.9999 0 TD [(to)-10000(b)-1000(e)-11000(called)-10000(with)-11000(the)-11000(argumen)]TJ 531.0001 0 TD (ts)Tj /T12 1 Tf -1619 50 TD [(configure)-20000(-bg)-21000(gray)]TJ /T15 1 Tf 393 0 TD [(.)-17000(S)0(o)-14000(actually)-13000(this)-14000(command)-11000(will)-12000(b)-1000(e)-15000(translated)-14000(in)]TJ 879.9999 0 TD [(to)-13000(the)-15000(follo)]TJ 200 0 TD [(wing)-11000(call:)]TJ /T12 1 Tf -1326 132 TD [(.c.frame.entry)-19000(configure)-20000(-bg)-21000(gray)]TJ /T15 1 Tf -146.9999 131 TD (whic)Tj 82 0 TD [(h)-16000(calls)-16000(the)]TJ /T12 1 Tf 207 0 TD (configure)Tj /T15 1 Tf 213 0 TD [(metho)-1000(d)-15000(o)0(f)-16000(the)]TJ /T12 1 Tf 276 0 TD (entry)Tj /T15 1 Tf 125 0 TD (sub)Tj 60.9999 0 TD [(widget)-17000(with)-16000(the)-16000(argumen)]TJ 464 0 TD (ts)Tj /T12 1 Tf 48 0 TD [(-bg)-21000(gray)]TJ /T15 1 Tf -1475.9999 50 TD [(and)-14000(c)]TJ 98 0 TD [(hanges)-14000(its)-14000(bac)]TJ 255 0 TD [(kground)-14000(color)-14000(to)]TJ /T12 1 Tf 315 0 TD (gray)Tj /T15 1 Tf 88 0 TD 0 Tw (.)Tj -694 74 TD (W)Tj 40 0 TD [(e)-17000(can)-18000(call)-17000(the)]TJ /T12 1 Tf 269.9999 0 TD (subwidget)Tj /T15 1 Tf 212.9999 0 TD [(metho)-1000(d)-17000(with)-17000(other)-18000(t)]TJ 380.0001 0 TD [(yp)-1000(es)-18000(of)-17000(argumen)]TJ 306 0 TD [(ts)-17000(to)-17000(access)-19000(di\013eren)]TJ 361.9998 0 TD (t)Tj -1632.9998 50 TD [(metho)-1000(ds)-13000(of)-14000(the)-14000(sp)-1000(eci\014ed)-16000(sub)]TJ 515 0 TD [(widget.)-18000(F)]TJ 173.9999 0 TD [(or)-13000(example,)-12000(the)-15000(follo)]TJ 374 0 TD [(wing)-11000(call:)]TJ /T12 1 Tf -915.9999 131.0001 TD [(.c)-22000(subwidget)-20000(entry)-20000(icursor)-21000(end)]TJ /T15 1 Tf -146.9999 131.9999 TD [(calls)-11000(the)]TJ /T12 1 Tf 159 0 TD (icursor)Tj /T15 1 Tf 164 0 TD [(metho)-1000(d)-11000(o)0(f)-11000(the)]TJ /T12 1 Tf 263 0 TD (entry)Tj /T15 1 Tf 120.9999 0 TD (sub)Tj 61.0001 0 TD [(widget)-12000(with)-11000(the)-12000(argumen)]TJ 450 0 TD (t)Tj /T12 1 Tf 26.9999 0 TD (end)Tj /T15 1 Tf 77 0 TD [(and)-11000(sets)-13000(the)-12000(insert)]TJ -1321.9999 50 TD [(cursor)-15000(of)-13000(the)]TJ /T12 1 Tf 243.9999 0 TD (entry)Tj /T15 1 Tf 123.0001 0 TD (sub)Tj 60.9999 0 TD [(widget)-14000(to)-13000(the)-15000(end)-14000(of)-14000(its)-13000(input)-14000(string.)]TJ /T8 1 Tf -427.9999 164.0001 TD (1.3.4)Tj 171 0 TD [(Chaining)-19000(the)]TJ /T7 1 Tf 335.9999 0 TD (subwidget)Tj /T8 1 Tf 250 0 TD [(Metho)-2000(d)]TJ /T15 1 Tf -756.9999 104.9999 TD [(Some)-10000(Tix)-10000(mega-widgets)-10000(ma)]TJ 493.9999 0 TD 9 Tc [(yh)9000(a)]TJ 74.0001 0 TD 0 Tc (v)Tj 20.9999 0 TD [(e)-10000(sub)]TJ 89.0001 0 TD [(widgets)-12000(that)-11000(in)-11000(turn)-11000(con)]TJ 431 0 TD [(tain)-11000(sub)]TJ 143.9999 0 TD [(widgets.)-17000(F)]TJ 189.0001 0 TD [(or)-11000(example,)]TJ -1442 50 TD [(the)-15000(TixExFileSelectDialog)-13000(\(section)-15000(5.1.3\))-13000(widget)-14000(con)]TJ 957.9999 0 TD [(tains)-14000(a)-14000(TixExFileSelectBo)]TJ 474 0 TD [(x)-15000(sub)]TJ 98.0001 0 TD (widget)Tj -1530 50 TD (called)Tj /T12 1 Tf 121 0 TD (fsbox)Tj /T15 1 Tf 110 0 TD [(,)-16000(whic)]TJ 109.9999 0 TD [(h)-16000(i)0(n)-17000(turn)-17000(con)]TJ 246.9999 0 TD [(tains)-17000(a)-16000(TixCom)]TJ 292.0001 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x)-15000(\(section)-17000(1.4\))-16000(sub)]TJ 340.9999 0 TD [(widget)-18000(called)]TJ /T12 1 Tf 257.9999 0 TD (dir)Tj /T15 1 Tf 66 0 TD (.)Tj -1638.9998 50 TD [(If)-16000(w)]TJ 73 0 TD 16 Tc (ew)Tj 63 0 TD 0 Tc (an)Tj 43 0 TD [(t)-15000(t)0(o)-16000(access)-18000(the)]TJ /T12 1 Tf 281.9999 0 TD (dir)Tj /T15 1 Tf 82.0001 0 TD (sub)Tj 60.9999 0 TD [(widget,)-16000(w)]TJ 177.0001 0 TD [(e)-16000(can)-16000(just)-16000(\\c)]TJ 234 0 TD [(hain")-15000(the)]TJ /T12 1 Tf 188.9999 0 TD (subwidget)Tj /T15 1 Tf 212 0 TD [(metho)-1000(d.)-23000(F)]TJ 197.0001 0 TD (or)Tj -1613 49 TD [(example,)-20000(if)-20000(w)]TJ 256 0 TD 20 Tc [(eh)20000(a)]TJ 81 0 TD 0 Tc (v)Tj 21 0 TD [(e)-21000(a)-20000(TixExFileSelectDialog)-18000(called)]TJ /T12 1 Tf 629.9999 0 TD (.file)Tj /T15 1 Tf 110 0 TD [(,)-20000(the)-21000(follo)]TJ 188.0001 0 TD [(wing)-18000(command)-17000(will)]TJ -1286 50 TD [(return)-15000(the)-15000(pathname)-12000(of)-14000(the)]TJ /T12 1 Tf 511 0 TD (dir)Tj /T15 1 Tf 79 0 TD (sub)Tj 60.9999 0 TD [(widget)-14000(of)-14000(the)]TJ /T12 1 Tf 253 0 TD (fsbox)Tj /T15 1 Tf 123 0 TD (sub)Tj 61 0 TD [(widget)-14000(of)]TJ /T12 1 Tf 181 0 TD (.file)Tj /T15 1 Tf 110 0 TD (:)Tj /T12 1 Tf -1232 132 TD [(.file)-21000(subwidget)-20000(fsbox)-21000(subwidget)-20000(dir)]TJ /T15 1 Tf -146.9999 132.0001 TD (Moreo)Tj 113 0 TD (v)Tj 21 0 TD [(er,)-20000(the)-19000(follo)]TJ 219.9999 0 TD [(wing)-16000(command)-16000(con\014gures)-19000(the)]TJ /T12 1 Tf 570.0001 0 TD (dir)Tj /T15 1 Tf 83.9999 0 TD (sub)Tj 61 0 TD [(widget)-19000(to)-18000(ha)]TJ 237.0001 0 TD (v)Tj 20.9999 0 TD [(e)-19000(a)-18000(b)-1000(order)-19000(of)-18000(the)]TJ -1326.9999 50 TD [(gro)-1000(o)]TJ 79 0 TD (v)Tj 21 0 TD 14 Tc (et)Tj 46.9999 0 TD 0 Tc [(yp)-1000(e)-14000(with)-14000(a)-13000(b)-1000(order)-15000(width)-14000(of)-13000(2)-13000(pixels:)]TJ /T12 1 Tf 0 131.9999 TD [(.file)-21000(subwidget)-20000(fsbox)-21000(subwidget)-20000(dir)-21000(configure)-20000(-bd)-21000(2)-22000(-relief)-20000(groove)]TJ /T15 1 Tf -84.9999 132.0001 TD [(The)-21000(c)]TJ 109 0 TD [(haining)-18000(of)-20000(the)-20000(sub)]TJ 345 0 TD [(widget)-20000(command)-17000(can)-20000(b)-1000(e)-21000(applied)-19000(for)-20000(arbitrarily)-18000(man)]TJ 984.9999 0 TD [(y)-18000(lev)]TJ 91.0001 0 TD (els,)Tj -1592 48.9999 TD [(dep)-1000(ending)-13000(whether)-15000(y)]TJ 378 0 TD [(our)-12000(widget)-13000(has)-13000(a)-13000(sub)]TJ 372.9999 0 TD [(widget)-13000(that)-13000(has)-13000(a)-12000(sub)]TJ 389.0001 0 TD [(widget)-13000(that)-13000(has)-13000(a)-13000(sub)]TJ 390 0 TD (widget)Tj -1530 50 TD [(that)-14000(has)-14000(a)-14000(sub)]TJ 259.9999 0 TD [(widget)-14000(...)-17000(and)-13000(so)-14000(on.)]TJ ET endstream endobj 65 0 obj << /ProcSet [/PDF /Text ] /Font << /T7 62 0 R /T8 35 0 R /T9 25 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 66 0 obj << /Type /XObject /Subtype /Image /Name /Im8 /Width 142 /Height 87 /BitsPerComponent 8 /ColorSpace 67 0 R /Length 635 /Filter /FlateDecode >> stream H‰ì—rƒ †¥èÜû?ñ¬€HH@Üù߬W`ä+ „LÓ3¤úÏ»u})²‡'z^õÒ<ŒFašÐV¾ÐyM£ý“/HS²¢<¯Ðm/֘ͰŽ çB¦˜f7#G|¯¦¹T4ªþêcþÌ7cÙ=¶ÉŒÐøe4¨/Á¶4þ…<ç˜Ã)4؈˜æC“€a1™SˆÆ[ñ :áçaÐÀ´qIóÑɲÐ46åÓD ÛÜï·6hƒeº¢‰çåÓD{iMΤf;.Bd\ãaÓîô«MƒÅè³³f/šÜ£À­m³4&d1l^Ró­rî~ÜÛþjŽné\šŸ"E4ë­4ËN³}èý×4¿ÙZÍv€C³ß'G¡ÑÚâ 4fÙ84ßÉK> stream H‰ì׋vƒ `1uîýŸx-w0Ô $Šó?ë銞úµ ¦é–QgL¾0Þ‡æBTñˆhÊ õàYss¼Â2¡£âA ^nõè“_ó{±…ÊP¾sNÁìâgP.©Ç²rï…×*~|ôzîŒït–0>™ÍŸye îa‡Ìû Ö®ÞÑâ'äAÒûKº¥¼AÄÏexro¼ø€JÊ#¸!>c÷íZðiïp?ÃæK¯ÇÛö…Ž/½ÓŽÝ×ûlçgô#ÅçcløluAF©vñ¥2ýŠ3+Ô•¼øMªkÊxl:Ž‚GÇn‚§î¿xCe8<·‡%Vm{õ)íö²g{v²ÄyMiÍwÁÿ0%ï#á÷WYGÂ/ÌøßîY<þÝk ‹×[ÎAñV_Æ›_¦ ÿ¹Þ_…¯áõÿ ÿ~؉?ë#á…”À¯!ßñh°ñ3؇ÿ˜Rø•Œþ)ø"e“†Š÷…±…»º¿yOÖš't•uesžVóÈ„MÊFrÂV,•Ž´]*ã3Ð¥’ëKhšò4fEüÐ-ñØ›>üÂ!<‹]Ïc'w•W ©«#^.é`Z*Yò"v•Wċݤ8ì·hFnÌFn‰Ñ͈2Ù•!{VÏ´“òWÑxƒžLúáeö°M-·c½¾®æÁ­TzÒCôq‡bÅ74f¡·‚{ †oé*Sj‚aħ©Ã‡‰ð›ipY¼³&ß|Öš?ÞU¢ßüYøÊšÏa‚ä„=¾TÆøW@£K%×mŽô6…ûÕå3W1òø-ñv…”½±áÃ/³؅ð<öæ®òì4u•×JŽŸÆJ‚?S›Eˆ¦Ìxð¼¹1^•R>"š/Œ‹åO€Sø endstream endobj 70 0 obj << /Length 6420 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (14)Tj /T9 1 Tf 1022.9999 0 TD [(CHAPTER)-14000(1.)-32000(INTR)]TJ 394.0001 0 TD (ODUCTION)Tj ET q 141.984 0 0 86.976 155.28 617.1 cm /Im8 Do Q BT /T6 1 Tf 0.24 0 0 -0.24 187.2 595.14 Tm [(\(a\))-11000(Unaligned)-10000(Lab)-1000(els)]TJ ET q 189 0 0 91.008 300.48 616.94 cm /Im4 Do Q BT 0.24 0 0 -0.24 361.92 595.14 Tm [(\(b\))-11000(Aligned)-10000(Lab)-1000(els)]TJ /T15 1 Tf -695.9999 124 TD [(Figure)-14000(1.5:)-17000(Using)-13000(the)]TJ /T12 1 Tf 401.9999 0 TD (-options)Tj /T15 1 Tf 188.0001 0 TD (Switc)Tj 98 0 TD [(h)-14000(t)0(o)-14000(Align)-13000(the)-14000(Lab)-1000(els)]TJ /T8 1 Tf -975 143 TD (1.3.5)Tj 171 0 TD [(Con\014guring)-19000(Sub)]TJ 397 0 TD [(widget)-20000(Options)-18000(Using)-19000(the)]TJ /T7 1 Tf 648.9999 0 TD (-options)Tj /T8 1 Tf 224 0 TD (Switc)Tj 131.9999 0 TD 0 Tw (h)Tj /T15 1 Tf -1572.9998 104 TD [(As)-16000(w)]TJ 92 0 TD 15 Tc [(eh)15000(a)]TJ 76 0 TD 0 Tc (v)Tj 21 0 TD [(e)-15000(seen)-17000(ab)-1000(o)]TJ 189.9999 0 TD (v)Tj 21 0 TD [(e,)-15000(w)]TJ 74.0001 0 TD [(e)-15000(can)-15000(use)-16000(commands)-13000(lik)]TJ 435 0 TD 15 Tc (e\\)Tj /T12 1 Tf 53.9999 0 TD 0 Tc (subwidget)Tj /T13 1 Tf 211.0001 0 TD (name)Tj /T12 1 Tf 113 0 TD [(configure)-20000(...)]TJ /T15 1 Tf 283.9998 0 TD 21 Tc [("t)21000(o)]TJ -1570.9998 50 TD 0 Tc [(set)-15000(the)-15000(con\014guration)-13000(options)-14000(of)-13000(sub)]TJ 641.9999 0 TD [(widgets.)-19000(Ho)]TJ 218 0 TD (w)Tj 29 0 TD (ev)Tj 39.0001 0 TD [(er,)-14000(this)-14000(can)-14000(get)-15000(quite)-14000(tedious)-14000(if)-13000(w)]TJ 602 0 TD 14 Tc (ew)Tj 61 0 TD 0 Tc (an)Tj 42.9998 0 TD (t)Tj -1633.9998 50 TD [(to)-14000(con\014gure)-14000(man)]TJ 306.9999 0 TD [(y)-12000(options)-14000(of)-13000(man)]TJ 305.9999 0 TD [(y)-12000(sub)]TJ 95.0001 0 TD (widgets.)Tj -646 73.0001 TD [(There)-18000(is)-17000(a)-16000(more)-16000(con)]TJ 372.9999 0 TD (v)Tj 21.0001 0 TD (enien)Tj 93 0 TD [(t)-17000(and)-16000(terse)-19000(w)]TJ 248 0 TD (a)Tj 19.9999 0 TD [(y)-16000(t)0(o)-16000(con\014gure)-18000(the)-17000(sub)]TJ 407.0001 0 TD [(widget)-17000(options)-16000(without)]TJ -1224 50 TD [(using)-19000(the)]TJ /T12 1 Tf 190.9999 0 TD (subwidget)Tj /T15 1 Tf 215.0001 0 TD [(metho)-1000(d:)-28000(the)]TJ /T12 1 Tf 253.9999 0 TD (-options)Tj /T15 1 Tf 194 0 TD (switc)Tj 91 0 TD (h.)Tj 69 0 TD [(All)-18000(Tix)-19000(mega-widgets)-17000(supp)-1000(ort)-20000(the)]TJ /T12 1 Tf -1013.9999 50 TD (-option)Tj /T15 1 Tf 165.9999 0 TD (switc)Tj 91 0 TD [(h,)-14000(whic)]TJ 131 0 TD [(h)-14000(can)-14000(b)-1000(e)-15000(used)-14000(during)-14000(the)-14000(creation)-15000(of)-13000(the)-14000(mega-widget.)]TJ ET q 396 0 0 -0.96 125.976 424.476 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 414.66 Tm [(Program)-15000(1.1)]TJ /T15 1 Tf 273 0 TD [(Using)-14000(the)]TJ /T12 1 Tf 189 0 TD (-options)Tj /T15 1 Tf 188 0 TD (switc)Tj 90.9999 0 TD (h)Tj ET q 396 0 0 -0.48 125.976 410.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 401.22 Tm [(tixControl)-20000(.income)-20000(-label)-20000("Income:)-21000(")-21000(-variable)-20000(income)-21000(-options)-20000({)]TJ 86.9999 50 TD (label.width)Tj 392.0001 0 TD (8)Tj -392.0001 50 TD (label.anchor)Tj 392.0001 0 TD (e)Tj -392.0001 50 TD (entry.width)Tj 392.0001 0 TD (10)Tj -392.0001 49.0001 TD [(entry.borderWidth)-18000(3)]TJ -86.9999 50 TD (})Tj T* [(tixControl)-20000(.age)]TJ 414 0 TD [(-label)-20000("Age:)-21000(")]TJ 391.9999 0 TD [(-variable)-20000(age)]TJ 371.0001 0 TD [(-options)-20000({)]TJ -1090 50 TD (label.width)Tj 392.0001 0 TD (8)Tj -392.0001 50 TD (label.anchor)Tj 392.0001 0 TD (e)Tj -392.0001 48.9999 TD (entry.width)Tj 392.0001 0 TD (10)Tj -392.0001 50 TD [(entry.borderWidth)-18000(3)]TJ -86.9999 50 TD (})Tj T* [(pack)-21000(.income)-20000(.age)-21000(-side)-21000(top)]TJ ET q 396 0 0 -0.48 125.976 243.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 140.88 219.3 Tm [(The)-18000(use)-18000(of)-17000(the)]TJ /T12 1 Tf 290 0 TD (-options)Tj /T15 1 Tf 191 0 TD (switc)Tj 91 0 TD [(h)-18000(i)0(s)-17000(illustrated)-17000(in)-17000(program)-16000(1.1,)-17000(whic)]TJ 675 0 TD [(h)-17000(creates)-19000(t)]TJ 196.9999 0 TD (w)Tj 29.0001 0 TD [(o)-17000(Tix-)]TJ -1535 49 TD (Con)Tj 73 0 TD [(trol)-14000(widgets)-16000(for)-15000(the)-16000(user)-16000(to)-15000(en)]TJ 549.9999 0 TD [(ter)-16000(his)-16000(income)-14000(and)-15000(age.)-22000(Because)-17000(of)-14000(the)-16000(di\013eren)]TJ 865 0 TD [(t)-16000(sizes)-17000(of)]TJ -1487.9999 50 TD [(the)-14000(lab)-1000(els)-13000(of)-12000(these)-15000(t)]TJ 353.9999 0 TD (w)Tj 29 0 TD [(o)-13000(widgets,)-13000(if)-12000(w)]TJ 261.0001 0 TD [(e)-13000(create)-15000(them)-12000(haphazardly)]TJ 477.9999 0 TD [(,)-12000(the)-14000(output)-13000(ma)]TJ 286 0 TD 12 Tc [(yl)12000(o)11000(o)12000(kl)12000(i)12000(k)]TJ 168.0001 0 TD [(e\014)12000(g)]TJ -1576 50 TD 0 Tc (1.5\(a\).)Tj 62 74.0001 TD (T)Tj 27 0 TD 16 Tc (oa)Tj 57 0 TD 0 Tc (v)Tj 21 0 TD [(oid)-16000(this)-16000(problem,)-16000(w)]TJ 361 0 TD [(e)-17000(set)-17000(the)-18000(width)-16000(of)-16000(the)]TJ /T12 1 Tf 422 0 TD (label)Tj /T15 1 Tf 125 0 TD (sub)Tj 61 0 TD [(widgets)-18000(of)-16000(the)]TJ /T12 1 Tf 277.9999 0 TD (.income)Tj /T15 1 Tf 168.9999 0 TD (and)Tj /T12 1 Tf -1582.9998 48.9999 TD (.age)Tj /T15 1 Tf 100 0 TD [(widgets)-13000(to)-13000(b)-1000(e)-14000(the)-13000(same)-12000(\(8)-13000(c)]TJ 494.9999 0 TD [(haracters)-15000(wide\))-13000(and)-12000(set)-14000(their)]TJ /T12 1 Tf 534 0 TD (-anchor)Tj /T15 1 Tf 165 0 TD [(option)-12000(to)]TJ /T12 1 Tf 178 0 TD (e)Tj /T15 1 Tf 35 0 TD (\(\015ushed)Tj -1506.9999 50 TD [(to)-15000(righ)]TJ 123 0 TD [(t\),)-14000(so)-15000(that)-16000(the)-15000(lab)-1000(els)-15000(app)-1000(ear)-15000(to)-15000(b)-1000(e)-16000(w)]TJ 668.9999 0 TD [(ell-aligned.)-20000(Program)-13000(1.1)-14000(also)-15000(do)-1000(es)-15000(other)-16000(things)]TJ ET endstream endobj 71 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /T6 72 0 R /T7 62 0 R /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /XObject << /Im4 68 0 R /Im8 66 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS4 67 0 R >> >> endobj 67 0 obj [/Indexed /DeviceRGB 15 73 0 R] endobj 73 0 obj << /Filter /ASCII85Decode /Length 44 >> stream kih5NEcT%6_>jQ9e'leGs8S4DOa_b.o()>Ozzzzz~> endstream endobj 75 0 obj << /Length 9001 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(1.3.)-31000(A)]TJ 126.9999 0 TD [(CCESSING)-14000(THE)-14000(COMPONENTS)-15000(INSIDE)-14000(MEGA)-14000(WIDGETS)]TJ /T15 1 Tf 1480.9998 0 TD (15)Tj -1607.9998 117 TD (suc)Tj 56 0 TD [(h)-12000(a)0(s)-12000(setting)-12000(the)]TJ /T12 1 Tf 287.9999 0 TD (entry)Tj /T15 1 Tf 120 0 TD (sub)Tj 61.0001 0 TD [(widgets)-13000(to)-11000(ha)]TJ 240 0 TD 0 Tw (v)Tj 21 0 TD [(e)-12000(a)-11000(width)-12000(of)-11000(10)-11000(c)]TJ 292.9999 0 TD [(haracters)-13000(and)-12000(a)-11000(b)-1000(order-width)-13000(of)]TJ -1078.9999 49.0002 TD [(3)-14000(pixels)-13000(so)-14000(that)-14000(they)-15000(app)-1000(ear)-14000(wider)-14000(and)-14000(\\deep)-1000(er".)-19000(A)-14000(b)-1000(etter)-16000(result)-14000(is)-14000(sho)]TJ 1292 0 TD [(wn)-14000(in)-13000(\014gure)-15000(1.5\(b\).)]TJ -1230 74 TD [(As)-17000(w)]TJ 92.9999 0 TD [(e)-16000(can)-17000(see)-17000(from)-15000(program)-14000(1.1,)-16000(the)-17000(v)]TJ 626.9999 0 TD [(alue)-15000(for)-16000(the)]TJ /T12 1 Tf 229.0001 0 TD (-options)Tj /T15 1 Tf 190.9999 0 TD (switc)Tj 91.0001 0 TD [(h)-16000(i)0(s)-16000(a)-16000(list)-16000(of)-16000(one)-16000(or)]TJ -1293 50 TD [(more)-13000(pairs)-14000(of)]TJ /T13 1 Tf 104 99 TD (subwidget-option-sp)Tj 351 0 TD (e)Tj 16.9999 0 TD [(c)-14000(value)]TJ /T15 1 Tf 139.0001 0 TD (..)Tj /T13 1 Tf -549 100 TD (subwidget-option-sp)Tj 350.9999 0 TD (e)Tj 17.0001 0 TD (c)Tj /T15 1 Tf 29 0 TD [(is)-9000(in)-9000(the)-10000(form)]TJ /T13 1 Tf 241 0 TD (subwidget-name)Tj /T12 1 Tf 284 0 TD (.)Tj /T13 1 Tf 22 0 TD (option-name)Tj /T15 1 Tf 225 0 TD 18 Tc (.F)Tj 53.9999 0 TD 0 Tc [(or)-8000(example,)]TJ /T12 1 Tf 216 0 TD (label.anchor)Tj /T15 1 Tf -1500.9999 50 TD (iden)Tj 75 0 TD [(ti\014es)-15000(the)]TJ /T12 1 Tf 171 0 TD (anchor)Tj /T15 1 Tf 144.9999 0 TD [(option)-13000(of)-14000(the)]TJ /T12 1 Tf 249.0001 0 TD (label)Tj /T15 1 Tf 122 0 TD (sub)Tj 60.9999 0 TD (widget,)Tj /T12 1 Tf 146 0 TD (entry.width)Tj /T15 1 Tf 254 0 TD (iden)Tj 75.0001 0 TD [(ti\014es)-15000(the)]TJ /T12 1 Tf 170.9999 0 TD (width)Tj /T15 1 Tf 123.0001 0 TD (op-)Tj -1592 50 TD [(tion)-13000(of)-14000(the)-14000(en)]TJ 243.9999 0 TD [(try)-15000(sub)]TJ 130.0001 0 TD [(widget,)-13000(and)-14000(so)-14000(on.)]TJ -312 72.9998 TD [(Notice)-14000(w)]TJ 159 0 TD 14 Tc (em)Tj 66.9999 0 TD 0 Tc [(ust)-13000(use)-14000(the)]TJ /T13 1 Tf 210.0001 0 TD (name)Tj /T15 1 Tf 111.9999 0 TD [(of)-13000(the)-14000(option,)-12000(not)-14000(the)]TJ /T13 1 Tf 403 0 TD (c)Tj 17.0001 0 TD [(ommand-line)-15000(switch)]TJ /T15 1 Tf 375 0 TD [(of)-13000(the)-14000(option.)]TJ -1405 50 TD (F)Tj 24 0 TD [(or)-18000(example,)-18000(the)-19000(option)-17000(that)-19000(sp)-1000(eci\014es)-20000(the)-19000(b)-1000(order-width)-19000(of)-18000(the)]TJ /T12 1 Tf 1163 0 TD (entry)Tj /T15 1 Tf 126.9999 0 TD (sub)Tj 61 0 TD [(widget)-19000(has)-18000(the)]TJ -1374.9999 50 TD (command-li)Tj 215 0 TD [(ne)-10000(switc)]TJ 141.9999 0 TD (h)Tj /T12 1 Tf 36.0001 0 TD (-borderwidth)Tj /T15 1 Tf 273 0 TD [(but)-13000(its)-12000(name)-12000(is)]TJ /T12 1 Tf 280.9999 0 TD (borderWidth)Tj /T15 1 Tf 252.0001 0 TD [(\(notice)-13000(the)-13000(capitalization)]TJ -1199 49 TD [(on)-13000(the)-13000(name)-12000(but)-13000(not)-13000(on)-12000(the)-14000(command-l)]TJ 715 0 TD [(ine)-10000(switc)]TJ 153.9999 0 TD [(h\).)-18000(Therefore,)-14000(w)]TJ 297 0 TD 13 Tc [(eh)13000(a)]TJ 74.0001 0 TD 0 Tc (v)Tj 21 0 TD [(e)-13000(used)-14000(the)-13000(capitalized)]TJ -1261 50 TD (v)Tj 21 0 TD [(ersion)-16000(of)-16000(\\)]TJ /T12 1 Tf 193 0 TD (entry.borderWi)Tj 307 0 TD [(dth)-19000(3)]TJ /T15 1 Tf 107 0 TD [(")-15000(i)0(n)-16000(program)-14000(1.1)-15000(and)-16000(not)-16000(\\)]TJ /T12 1 Tf 503.9999 0 TD (entry.borderwid)Tj 329.0001 0 TD [(th)-19000(3)]TJ /T15 1 Tf 84.9998 0 TD [(".)-24000(T)]TJ 84.0002 0 TD (o)Tj -1630 50 TD [(\014nd)-14000(out)-13000(the)-14000(names)-13000(of)-13000(the)-14000(options)-13000(of)-13000(the)-14000(resp)-1000(ectiv)]TJ 893.9999 0 TD [(e)-16000(sub)]TJ 95 0 TD [(widgets,)-13000(please)-15000(refer)-14000(to)-13000(their)-14000(man)]TJ 606.9999 0 TD (ual)Tj -1595.9998 50 TD (pages.)Tj /T8 1 Tf 0 137.0001 TD (1.3.6)Tj 171 0 TD [(Con\014guring)-13000(Sub)]TJ 391 0 TD [(widget)-13000(Options)-12000(Using)-13000(the)-12000(Tk)-12000(Option)-12000(Database)]TJ /T15 1 Tf -562 100 TD (The)Tj /T12 1 Tf 90 0 TD (-options)Tj /T15 1 Tf 193 0 TD (switc)Tj 91 0 TD 1 Tc [(h)-17000(i)1000(s)-18000(g)1000(ood)-16000(i)1000(f)-17000(y)]TJ 257 0 TD 0 Tc [(ou)-18000(w)]TJ 91 0 TD (an)Tj 43 0 TD [(t)-18000(t)0(o)-18000(s)0(p)-1000(ecify)-19000(sub)]TJ 291.9999 0 TD [(widget)-19000(options)-18000(for)-18000(one)-18000(or)-19000(a)-18000(few)]TJ -1056.9999 50 TD [(mega-widgets.)-20000(If)-14000(y)]TJ 340.9999 0 TD [(ou)-15000(w)]TJ 88 0 TD (an)Tj 43 0 TD [(t)-14000(t)0(o)-15000(s)0(p)-1000(ecify)-15000(the)-16000(sub)]TJ 353.9999 0 TD [(widget)-15000(for)-15000(man)]TJ 279.0001 0 TD [(y)-13000(mega-widgets,)-13000(it)-15000(is)-14000(easier)-16000(to)]TJ -1105 50 TD [(use)-15000(the)-14000(Tk)-14000(Option)-14000(Database.)]TJ 62 72.9999 TD [(Options)-12000(in)-12000(the)-12000(Tk)-11000(Option)-12000(Database)-12000(can)-12000(b)-1000(e)-12000(sp)-1000(eci\014ed)-13000(using)-12000(the)]TJ /T12 1 Tf 1122 0 TD (option)Tj /T15 1 Tf 142.9999 0 TD [(command)-9000(and)-11000(the)]TJ -1326.9999 50 TD [(pathname)-13000(of)-13000(the)-14000(widget.)-18000(F)]TJ 485.9999 0 TD [(or)-13000(all)-13000(the)-14000(Tix)-14000(mega-widgets,)-12000(it)-13000(is)-14000(guaran)]TJ 733.9999 0 TD [(teed)-14000(that)-14000(the)-14000(pathname)]TJ -1219.9999 50 TD [(of)-13000(their)-15000(sub)]TJ 207.9999 0 TD [(widgets)-14000(ends)-15000(with)-14000(the)]TJ /T13 1 Tf 411.0001 0 TD (name)Tj /T15 1 Tf 112 0 TD [(of)-13000(the)-14000(sub)]TJ 178.9999 0 TD [(widgets.)-19000(F)]TJ 191 0 TD [(or)-14000(example,)-12000(if)-13000(w)]TJ 292.0001 0 TD 14 Tc [(eh)14000(a)]TJ 75 0 TD 0 Tc (v)Tj 20.9999 0 TD [(e)-14000(a)-13000(mega)]TJ -1488.9999 50 TD [(widget)-13000(called)]TJ /T12 1 Tf 250 0 TD (.a.b.megaw)Tj /T15 1 Tf 231 0 TD [(and)-14000(it)-13000(has)-13000(a)-13000(sub)]TJ 290 0 TD [(widget)-14000(whose)-13000(name)-13000(is)]TJ /T12 1 Tf 407 0 TD (subw)Tj /T15 1 Tf 87.9999 0 TD [(,)-12000(then)-14000(w)]TJ 147 0 TD [(e)-13000(can)-14000(b)-1000(e)-14000(sure)]TJ -1412.9999 50 TD [(that)-14000(the)-14000(pathname)-13000(of)-13000(the)-15000(sub)]TJ 534.9999 0 TD [(widget)-14000(will)-12000(b)-1000(e)-15000(something)-12000(lik)]TJ 512 0 TD (e)Tj /T12 1 Tf -899.9999 99 TD (.a.b.megaw.foo.bar.)Tj 416.9999 0 TD (subw)Tj /T15 1 Tf -563.9999 100 TD [(Therefore,)-11000(if)-9000(w)]TJ 259 0 TD 9 Tc (ew)Tj 56 0 TD 0 Tc (an)Tj 43 0 TD [(t)-9000(t)0(o)-9000(s)0(p)-1000(ecify)-10000(options)-9000(for)-9000(it)-9000(in)-9000(the)-9000(Option)-10000(Database,)-9000(w)]TJ 905.9999 0 TD [(e)-10000(can)-9000(issue)-10000(commands)]TJ -1263.9999 50 TD (lik)Tj 45 0 TD (e:)Tj /T12 1 Tf 101.9999 99.0001 TD [(option)-21000(add)-21000(*a.b.megaw*subw.op)]TJ 634.9999 0 TD [(tion1)-18000(value1)]TJ -634.9999 49.9999 TD [(option)-21000(add)-21000(*a.b.megaw*subw.op)]TJ 634.9999 0 TD [(tion2)-18000(value2)]TJ /T15 1 Tf -781.9999 100 TD [(Notice)-14000(that)-14000(it)-14000(will)-12000(b)-1000(e)-15000(wrong)-13000(to)-14000(issue)-15000(the)-14000(commands)-12000(as:)]TJ /T12 1 Tf 146.9999 99.0001 TD [(option)-21000(add)-21000(*a.b.megaw.subw.op)]TJ 634.9999 0 TD [(tion1)-18000(value1)]TJ -634.9999 50 TD [(option)-21000(add)-21000(*a.b.megaw.subw.op)]TJ 634.9999 0 TD [(tion2)-18000(value2)]TJ /T15 1 Tf -781.9999 100 TD [(b)-1000(ecause)-17000(in)-15000(general)-15000(w)]TJ 378 0 TD [(e)-15000(will)-14000(not)-15000(kno)]TJ 253 0 TD [(w)-15000(whether)-16000(the)-16000(sub)]TJ 338.9999 0 TD [(widget)-15000(is)-15000(an)-15000(immediate)-12000(c)]TJ 458 0 TD [(hild)-15000(windo)]TJ 192.9999 0 TD (w)Tj -1620.9998 48.9999 TD (of)Tj /T12 1 Tf 47 0 TD (.a.b.megaw)Tj /T5 1 Tf 231.9999 -15 TD (1)Tj /T15 1 Tf 19.0001 15 TD (.)Tj ET q 158.4 0 0 -0.48 125.976 161.196 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T4 1 Tf 0.24 0 0 -0.24 137.04 154.26 Tm (1)Tj /T6 1 Tf 18 12 TD (suc)Tj 49 0 TD [(h)-11000(a)-13000(decision)-10000(is)-12000(left)-12000(to)-12000(the)-12000(mega-widget)-10000(implemen)]TJ 759 0 TD (to)Tj 31 0 TD [(r)-10000(and)-11000(ma)]TJ 140 0 TD 12 Tc (yv)Tj 47.9999 0 TD 0 Tc [(ary)-11000(in)-12000(di\013eren)]TJ 220.0001 0 TD 11 Tc (tv)Tj 42.9999 0 TD 0 Tc [(ersions)-10000(of)-13000(the)-11000(same)]TJ -1353.9999 39 TD (mega-widget)Tj ET endstream endobj 76 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T4 77 0 R /T5 78 0 R /T6 72 0 R /T8 35 0 R /T9 25 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 80 0 obj << /Length 9202 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (16)Tj /T9 1 Tf 1022.9999 0 TD [(CHAPTER)-14000(1.)-32000(INTR)]TJ 394.0001 0 TD (ODUCTION)Tj /T15 1 Tf -1355 117 TD [(Program)-10000(1.2)-11000(demonstrates)-11000(ho)]TJ 528 0 TD [(w)-11000(the)-12000(Tk)-12000(Option)-11000(Database)-11000(can)-12000(b)-1000(e)-12000(used)-12000(to)-11000(ac)]TJ 797 0 TD (hiev)Tj 74 0 TD [(e)-12000(the)-12000(same)]TJ -1461 49.0002 TD [(e\013ect)-16000(as)-14000(program)-12000(1.1.)]TJ ET q 396 0 0 -0.96 125.976 681.756 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 671.94 Tm [(Program)-15000(1.2)]TJ /T15 1 Tf 273 0 TD [(Using)-14000(the)-15000(Tk)-13000(Option)-14000(Database)-14000(in)-13000(Place)-15000(of)-13000(the)]TJ /T12 1 Tf 855 0 TD (-options)Tj /T15 1 Tf 189 0 TD (switc)Tj 90.9999 0 TD 0 Tw (h)Tj ET q 396 0 0 -0.48 125.976 667.836 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 659.22 Tm [(option)-20000(add)-22000(*TixControl*lab)]TJ 568.9999 0 TD (el.wi)Tj 109 0 TD (dth)Tj 215 0 TD (8)Tj -892.9999 49 TD [(option)-20000(add)-22000(*TixControl*lab)]TJ 568.9999 0 TD (el.an)Tj 109 0 TD (chor)Tj 215 0 TD (e)Tj -892.9999 50 TD [(option)-20000(add)-22000(*TixControl*ent)]TJ 568.9999 0 TD (ry.wi)Tj 109 0 TD (dth)Tj 215 0 TD (10)Tj -892.9999 50 TD [(option)-20000(add)-22000(*TixControl*ent)]TJ 568.9999 0 TD (ry.bo)Tj 109 0 TD (rderW)Tj 109 0 TD [(idth)-18000(3)]TJ -786.9999 100 TD [(tixControl)-20000(.income)-20000(-label)-20000("Income:)-21000(")-21000(-variable)-20000(income)]TJ 0 48.9998 TD [(tixControl)-20000(.age)]TJ 414 0 TD [(-label)-20000("Age:)-21000(")]TJ 391.9999 0 TD [(-variable)-20000(age)]TJ -805.9999 100 TD [(pack)-21000(.income)-20000(.age)-21000(-side)-21000(top)]TJ ET q 396 0 0 -0.48 125.976 549.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T8 1 Tf 0.24 0 0 -0.24 126 509.7 Tm (1.3.7)Tj 171 0 TD [(Caution:)-25000(Restricted)-17000(Access)]TJ /T15 1 Tf -171 101.0001 TD [(In)-11000(the)-12000(curren)]TJ 231 0 TD [(t)-13000(implemen)]TJ 206 0 TD (tatio)Tj 85 0 TD [(n)-9000(o)0(f)-11000(Tix,)-10000(there)-13000(is)-11000(no)-11000(limits)-9000(on)-11000(ho)]TJ 571.9999 0 TD 11 Tc (wy)Tj 62.0001 0 TD 0 Tc [(ou)-11000(can)-12000(access)-13000(the)-12000(options)-11000(of)]TJ -1156 50 TD [(the)-11000(sub)]TJ 129 0 TD [(widgets.)-18000(Ho)]TJ 217 0 TD (w)Tj 28.9999 0 TD (ev)Tj 39 0 TD [(er,)-11000(man)]TJ 136.0001 0 TD [(y)-9000(options)-10000(of)-10000(the)-12000(sub)]TJ 347 0 TD [(widgets)-11000(ma)]TJ 202.9999 0 TD [(y)-9000(b)-1000(e)-11000(already)-10000(used)-12000(b)]TJ 341 0 TD [(y)-10000(the)-12000(mega-)]TJ -1440.9999 50 TD [(widget)-14000(in)-13000(sp)-1000(ecial)-14000(w)]TJ 346 0 TD (a)Tj 19.9999 0 TD [(ys.)-18000(F)]TJ 92 0 TD [(or)-13000(example,)-12000(the)]TJ /T12 1 Tf 295.9999 0 TD (-textvariable)Tj /T15 1 Tf 297 0 TD [(option)-13000(of)-13000(the)]TJ /T12 1 Tf 248.0001 0 TD (entry)Tj /T15 1 Tf 122.9999 0 TD (sub)Tj 61 0 TD [(widget)-14000(of)]TJ -1482.9999 48.9999 TD (TixCon)Tj 137 0 TD [(trol)-12000(ma)]TJ 133 0 TD [(y)-12000(b)-1000(e)-14000(used)-14000(to)-13000(store)-14000(some)-13000(priv)]TJ 510 0 TD [(ate)-13000(information)-10000(for)-14000(the)-13000(mega)-12000(widget.)-18000(Therefore,)]TJ -780 50 TD (y)Tj 21 0 TD [(ou)-18000(should)-18000(access)-21000(the)-19000(options)-18000(of)-18000(the)-19000(sub)]TJ 741 0 TD [(widgets)-19000(with)-18000(great)-19000(care.)]TJ 482.9999 0 TD [(In)-18000(general)-19000(y)]TJ 225 0 TD [(ou)-18000(should)]TJ -1469.9999 50 TD [(only)-16000(access)-18000(those)-18000(options)-16000(that)-17000(a\013ect)-18000(the)-17000(app)-1000(earance)-18000(of)-16000(the)-18000(sub)]TJ 1168 0 TD [(widgets)-17000(\(suc)]TJ 225 0 TD 18 Tc [(ha)18000(s)]TJ /T12 1 Tf 94 0 TD 0 Tc (-font)Tj /T15 1 Tf 126 0 TD (or)Tj /T12 1 Tf -1613 50 TD (-foreground)Tj /T15 1 Tf 242 0 TD [(\))-12000(and)-13000(lea)]TJ 157.9999 0 TD (v)Tj 21.0001 0 TD 14 Tc [(ee)14000(v)]TJ 70.9999 0 TD 0 Tc [(erything)-14000(else)-15000(in)]TJ 277.9999 0 TD (tact.)Tj /T5 1 Tf 101.0001 -14.9999 TD (2)Tj /T14 1 Tf -871 179.9999 TD (1.4)Tj 153 0 TD [(Another)-23000(Tix)-23000(Widget:)-31000(TixCom)]TJ 890.9999 0 TD [(b)-2000(oBo)]TJ 153 0 TD (x)Tj /T15 1 Tf -1196.9999 115 TD (The)Tj /T13 1 Tf 87 0 TD (TixComb)Tj 164 0 TD (oBox)Tj /T15 1 Tf 105.9999 0 TD [(widget)-15000(is)-16000(v)]TJ 199.9999 0 TD [(ery)-16000(similar)-13000(to)-15000(the)-16000(Com)]TJ 421.0001 0 TD [(b)-1000(oBo)]TJ 93.9999 0 TD [(x)-14000(widgets)-16000(a)]TJ 208.0001 0 TD (v)Tj 19.9999 0 TD [(ailable)-13000(in)-15000(MS)-16000(Win-)]TJ -1299.9999 50 TD (do)Tj 43 0 TD [(ws)-18000(and)-18000(Motif)-17000(2.0.)-29000(A)-18000(TixCom)]TJ 560 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x)-16000(consists)-19000(of)-17000(an)-18000(en)]TJ 347.9999 0 TD [(try)-19000(widget)-18000(and)-18000(a)-17000(listb)-1000(o)]TJ 434 0 TD [(x)-18000(widget.)]TJ -1478.9999 50 TD (Usually)Tj 134 0 TD [(,)-16000(the)-17000(Com)]TJ 187.9999 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x)-15000(con)]TJ 98.0001 0 TD [(tains)-17000(a)-16000(list)-17000(of)-16000(p)-1000(ossible)-17000(v)]TJ 443.9999 0 TD [(alues)-16000(for)-17000(the)-17000(user)-18000(to)-17000(select.)-28000(The)-17000(user)]TJ -957.9999 50 TD (ma)Tj 56 0 TD [(y)-11000(also)-12000(c)]TJ 132 0 TD [(ho)-1000(ose)-14000(an)-12000(alternativ)]TJ 346 0 TD 13 Tc (ev)Tj 50.9999 0 TD 0 Tc [(alue)-12000(b)]TJ 108.0001 0 TD 13 Tc (yt)Tj 50 0 TD 0 Tc [(yping)-12000(it)-13000(in)-12000(the)-13000(en)]TJ 310.9999 0 TD [(try)-14000(widget.)-17000(Figure)-13000(1.6)-12000(sho)]TJ 472.0001 0 TD [(ws)-13000(t)]TJ 74 0 TD (w)Tj 28.9998 0 TD (o)Tj -1628.9998 50 TD (Com)Tj 86 0 TD [(b)-1000(oBo)]TJ 93.9999 0 TD [(xes)-10000(for)-12000(the)-12000(user)-13000(to)-11000(c)]TJ 348.0001 0 TD [(ho)-1000(ose)-13000(fon)]TJ 169 0 TD [(ts)-11000(and)-12000(c)]TJ 139 0 TD [(haracter)-13000(sizes.)-18000(Y)]TJ 300 0 TD [(ou)-11000(can)-12000(see)-13000(fro)-11000(the)-13000(\014gure)-12000(that)]TJ -1136 49.0001 TD [(a)-14000(listb)-1000(o)]TJ 135 0 TD [(x)-13000(i)0(s)-14000(p)-1000(opp)-1000(ed)-15000(do)]TJ 268 0 TD [(wn)-14000(from)-12000(the)-15000(Com)]TJ 322.9999 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x)-12000(for)-13000(fon)]TJ 153 0 TD [(ts)-14000(for)-14000(the)-15000(user)-15000(to)-14000(c)]TJ 338.0001 0 TD [(ho)-1000(ose)-15000(among)-12000(a)-13000(list)]TJ -1311 50 TD [(of)-13000(p)-1000(ossible)-14000(fon)]TJ 259 0 TD (ts.)Tj /T8 1 Tf -259 143.9999 TD (1.4.1)Tj 171 0 TD [(Creating)-19000(a)-19000(TixCom)]TJ 476.9999 0 TD [(b)-2000(oBo)]TJ 127.0001 0 TD [(x)-17000(Widget)]TJ /T15 1 Tf -775 101 TD [(In)-17000(program)-14000(1.3,)-16000(w)]TJ 334 0 TD [(e)-17000(set)-17000(up)-17000(a)-16000(Com)]TJ 288 0 TD [(b)-1000(oBo)]TJ 93.9999 0 TD (x)Tj /T12 1 Tf 37.0001 0 TD (.c)Tj /T15 1 Tf 59.9999 0 TD [(for)-16000(the)-17000(user)-18000(to)-16000(select)-18000(an)-16000(animal)-14000(to)-16000(pla)]TJ 707 0 TD [(y)-16000(with.)]TJ -1519.9999 50 TD [(If)-14000(the)-15000(user)-15000(is)-14000(just)-15000(a)-14000(dull)-13000(p)-1000(erson)-15000(lik)]TJ 622.9999 0 TD 14 Tc (ey)Tj 53 0 TD 0 Tc [(ou)-14000(and)-14000(me,)-12000(he)-15000(w)]TJ 302.0001 0 TD [(ould)-14000(just)-14000(press)-16000(the)-15000(arro)]TJ 424.9999 0 TD [(w)-14000(button)-14000(and)]TJ -1402.9999 50 TD [(select)-16000(a)-15000(pre-designated)-16000(animal)-12000(suc)]TJ 621 0 TD [(h)-16000(a)0(s)-15000(\\dog".)-20000(Ho)]TJ 281 0 TD (w)Tj 29 0 TD (ev)Tj 38.9999 0 TD [(er,)-16000(if)-14000(he)-15000(w)]TJ 186.0001 0 TD (an)Tj 43 0 TD [(ts)-15000(to)-15000(try)-15000(something)-14000(new,)]TJ -1199 50 TD [(he)-18000(could)-18000(t)]TJ 189 0 TD [(yp)-1000(e)-18000(\\mic)]TJ 167.9999 0 TD [(ky")-16000(or)-17000(\\sloth")-17000(in)]TJ 315.9999 0 TD [(to)-17000(the)-19000(en)]TJ 170.0001 0 TD [(try)-18000(widget)-18000(and)-18000(he)-18000(will)-16000(get)-18000(to)-18000(pla)]TJ 619 0 TD [(y)-17000(with)-17000(his)]TJ -1462 50 TD (fa)Tj 33 0 TD (v)Tj 21 0 TD [(orite)-13000(animal.)]TJ ET q 158.4 0 0 -0.48 125.976 161.196 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T4 1 Tf 0.24 0 0 -0.24 137.04 154.26 Tm (2)Tj /T6 1 Tf 18 12 TD [(In)-11000(future)-10000(v)]TJ 167 0 TD [(ersions)-10000(of)-11000(Tix,)-12000(there)-10000(will)-12000(b)-1000(e)-11000(explicit)-10000(restrictions)-9000(on)-11000(whic)]TJ 863.9999 0 TD [(h)-11000(sub)]TJ 84 0 TD [(widget)-10000(options)-10000(y)]TJ 255.0001 0 TD [(ou)-11000(can)-11000(access.)]TJ -1434 39 TD [(Errors)-11000(will)-11000(b)-1000(e)-11000(generated)-9000(if)-11000(y)]TJ 434 0 TD [(ou)-11000(try)-11000(to)-11000(access)-10000(restricted)-9000(sub)]TJ 463.9999 0 TD [(widget)-10000(options)]TJ ET endstream endobj 81 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T4 77 0 R /T5 78 0 R /T6 72 0 R /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 82 0 obj << /Type /XObject /Subtype /Image /Name /Im5 /Width 253 /Height 119 /BitsPerComponent 8 /ColorSpace 83 0 R /Length 972 /Filter /FlateDecode >> stream H‰ì—»« †WÜõÿòÝRÌšSÑvà{Neäa¼¢X‡Éd2™L_‹R9øU§<üÌy7Y¯U¯U·‚?¯Ë2Îüü7î’ÄÛÕÙMàWï!K |±³õôÑH­åð=|±_)ñx´Ã_9ãð¾ÄðÈ)o­×·ðñ÷3‘HÂCþ'›ôouápް~šTWíy«ÂÙíÞí‹à;9»<—¾¯:"ƒ¿¸osFá׉*†ïéŒÀKóÄ»•ÆÛÕÙa|æ)nõZ,pv+øÑ2x­2ø·„‹yGõ„÷up6R±rEü{yø ~#*©NiâN^ÀéþßäH³UþyíqÙœðº*„_…àÄÚáÁý0Ä YÞ*Ç•ÐRíYæKàa8ü;4™ÌWÁ…§­!ððÒÞ49‹;‘î"ï6á‘ð€G€Ú­’ðÚ„÷ò“ðïÉ-áöKß¾†f> ,„æ}„ÇHÂ?Y“[È-H„¯ÝSàýºÏÁCX rð1Ô /ÀO)xô{kÂV‡§°©°~¤ài¬²ðýªåàiâ_©WÏßÈuÁo\/¿ÝG?ra@r#ƒmu\ÃáQSày°#àÁŸÞ/qîîÝð×Ac0~'7 üÐî X·QÓÿ†ð0lÞß~W ><ýÃð¾Ò)+x~M2g¶ºAôãáGPÊà ÞàUÂ/LºàFé­÷µKaG)ùÌ'’μãù ï‡@~c±ÊOûB`1xZñÙiqö7»ø6‹3åàÓ/șڣ;ÅàAßË6ÖuùIÀÏf*–¼F¼V¼V¼V¼V¼V¼V¼Vi…ÿ/À%¹ endstream endobj 85 0 obj << /Length 6754 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(1.4.)-26000(ANOTHER)-15000(TIX)-13000(WIDGET:)-13000(TIX)]TJ 690.9999 0 TD (COMBOBO)Tj 221.0001 0 TD 0 Tw (X)Tj /T15 1 Tf 695.9998 0 TD (17)Tj ET q 189.72 0 0 89.28 228.96 629.02 cm /Im5 Do Q BT 0.24 0 0 -0.24 238.8 607.14 Tm [(Figure)-14000(1.6:)-17000(The)-15000(TixCom)]TJ 449.9999 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x)-11000(Widget)]TJ ET q 396 0 0 -0.96 125.976 594.156 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 584.34 Tm [(Program)-15000(1.3)]TJ /T15 1 Tf 273 0 TD [(Creating)-14000(a)-14000(Com)]TJ 292 0 TD [(b)-1000(oBo)]TJ 94 0 TD (x)Tj ET q 396 0 0 -0.48 125.976 580.476 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 571.86 Tm [(tixComboBox)-19000(.c)-22000(-label)-20000("Animal:")-20000(-editable)-20000(true)]TJ 0 49 TD [(.c)-21000(insert)-21000(end)-21000(cat)]TJ 0 50 TD [(.c)-21000(insert)-21000(end)-21000(dog)]TJ T* [(.c)-21000(insert)-21000(end)-21000(pig)]TJ ET q 396 0 0 -0.48 125.976 521.916 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 140.88 493.38 Tm [(Of)-17000(course,)-18000(sometimes)-15000(w)]TJ 437 0 TD [(e)-16000(don't)-17000(w)]TJ 175 0 TD (an)Tj 42.9999 0 TD [(t)-16000(t)0(o)-1000(o)-16000(man)]TJ 186.0001 0 TD [(y)-15000(sloths)-16000(around)-17000(us)-17000(and)-16000(w)]TJ 468.9999 0 TD 17 Tc (ew)Tj 64.0001 0 TD 0 Tc (an)Tj 42.9999 0 TD [(t)-16000(t)0(o)-17000(limit)]TJ -1478.9999 49.0001 TD [(the)-16000(range)-16000(of)-15000(the)-16000(user's)-16000(selections.)-24000(In)-15000(this)-16000(case)-16000(w)]TJ 887 0 TD [(e)-16000(can)-16000(do)-15000(one)-16000(of)-15000(t)]TJ 312.9999 0 TD (w)Tj 29 0 TD [(o)-15000(things.)-22000(First,)-16000(w)]TJ 325.0001 0 TD [(e)-16000(can)]TJ -1554 50 TD [(set)-15000(the)]TJ /T12 1 Tf 137 0 TD (-editable)Tj /T15 1 Tf 209.9999 0 TD [(option)-13000(to)]TJ /T12 1 Tf 180.0001 0 TD (false)Tj /T15 1 Tf 123 0 TD [(so)-14000(that)-14000(the)-15000(user)-15000(cannot)-14000(t)]TJ 451.9999 0 TD [(yp)-1000(e)-15000(i)0(n)-13000(the)-15000(en)]TJ 239 0 TD [(try)-15000(widget)-14000(at)-14000(all.)]TJ -1340.9999 50 TD (Alternativ)Tj 186 0 TD (ely)Tj 48.9999 0 TD 16 Tc (,w)Tj 57.0001 0 TD 0 Tc [(e)-17000(can)-17000(use)-17000(the)]TJ /T12 1 Tf 263 0 TD (-validatecmd)Tj /T15 1 Tf 278 0 TD [(option)-16000(\(see)-18000(section)-17000(1.4.3\))-16000(to)-16000(c)]TJ 547.9999 0 TD (hec)Tj 58 0 TD [(k)-18000(input)-16000(the)]TJ -1438.9999 50 TD (input.)Tj /T8 1 Tf 0 138 TD (1.4.2)Tj 171 0 TD (Con)Tj 97 0 TD [(trolling)-19000(the)-18000(St)]TJ 347 0 TD [(yle)-17000(of)-19000(the)-18000(TixCom)]TJ 448.9999 0 TD [(b)-2000(oBo)]TJ 127 0 TD (x)Tj /T15 1 Tf -1190.9999 100 TD [(The)-18000(TixCom)]TJ 239 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x)-14000(widget)-17000(can)-18000(app)-1000(ear)-18000(in)-16000(man)]TJ 523.9999 0 TD [(y)-16000(di\013eren)]TJ 171.0001 0 TD 18 Tc [(ts)18000(t)]TJ 65 0 TD 0 Tc [(yles.)-29000(If)-16000(w)]TJ 181.9999 0 TD [(e)-18000(set)-18000(the)]TJ /T12 1 Tf 179 0 TD (-dropdown)Tj /T15 1 Tf -1453.9999 49.9999 TD [(option)-12000(to)]TJ /T12 1 Tf 176.9999 0 TD (true)Tj /T15 1 Tf 99.0001 0 TD (\(whic)Tj 98 0 TD [(h)-13000(i)0(s)-12000(the)-13000(default\),)-12000(the)-13000(listb)-1000(o)]TJ 482 0 TD [(x)-11000(will)-11000(only)-12000(app)-1000(ear)-12000(when)-13000(the)-13000(user)-14000(presses)-14000(the)]TJ -856 50 TD (arro)Tj 73 0 TD [(w)-13000(button.)-19000(When)]TJ /T12 1 Tf 315.9999 0 TD (-dropdown)Tj /T15 1 Tf 210.0001 0 TD [(is)-14000(set)-14000(to)]TJ /T12 1 Tf 157 0 TD (false)Tj /T15 1 Tf 109.9999 0 TD [(,)-12000(the)-14000(listb)-1000(o)]TJ 195.0001 0 TD 13 Tc [(xi)13000(sa)13000(l)13000(w)]TJ 138 0 TD 0 Tc (a)Tj 19.9999 0 TD [(ys)-13000(sho)]TJ 110 0 TD [(wn)-13000(and)-14000(the)-14000(arro)]TJ 290.9999 0 TD (w)Tj -1619.9998 50 TD [(button)-14000(will)-12000(disapp)-1000(ear)-15000(b)-1000(ecause)-15000(it)-14000(is)-14000(not)-13000(needed)-16000(an)]TJ 894.9999 0 TD (ymore.)Tj -832.9999 73 TD [(There)-13000(is)-12000(also)-12000(an)-11000(option)-12000(called)]TJ /T12 1 Tf 538.9999 0 TD (-fancy)Tj /T15 1 Tf 132.0001 0 TD [(.)-16000(I)0(t)-12000(i)0(s)-12000(set)-13000(to)]TJ /T12 1 Tf 222 0 TD (false)Tj /T15 1 Tf 120.9999 0 TD (b)Tj 22 0 TD [(y)-12000(default.)-17000(When)-12000(set)-13000(to)]TJ /T12 1 Tf 420.0001 0 TD (true)Tj /T15 1 Tf 88 0 TD 11 Tc (,a)Tj -1606 50.0001 TD 0 Tc (tic)Tj 45 0 TD [(k)-12000(button)-13000(and)-12000(a)-12000(cross)-14000(button)-13000(will)-11000(app)-1000(ear)-13000(next)-13000(to)-12000(the)-13000(en)]TJ 980.9999 0 TD [(try)-13000(widget.)-17000(The)-13000(tic)]TJ 345 0 TD [(k)-13000(button)-12000(allo)]TJ 234.0001 0 TD (ws)Tj -1605 50 TD (y)Tj 21 0 TD [(ou)-12000(to)-12000(select)-13000(again)-11000(the)-13000(v)]TJ 414.9999 0 TD [(alue)-11000(that's)-12000(already)-12000(in)-11000(the)-13000(Com)]TJ 548.0001 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x.)-15000(If)-12000(y)]TJ 109.9999 0 TD [(ou)-12000(press)-13000(the)-13000(cross)-13000(button,)]TJ -1187.9999 49.9999 TD [(the)-14000(en)]TJ 111 0 TD [(try)-15000(widget)-14000(will)-12000(b)-1000(e)-15000(cleared.)]TJ /T8 1 Tf -111 138.0001 TD (1.4.3)Tj 171 0 TD [(Static)-18000(Options)]TJ /T15 1 Tf -171 99.9999 TD (The)Tj /T12 1 Tf 89 0 TD (-dropdown)Tj /T15 1 Tf 213 0 TD (and)Tj /T12 1 Tf 83.9999 0 TD (-fancy)Tj /T15 1 Tf 147.0001 0 TD [(options)-17000(are)-18000(so-called)-16000(\\static)-17000(options".)-27000(They)-18000(can)-17000(only)-16000(b)-1000(e)-18000(set)]TJ -533 50 TD [(during)-14000(the)-14000(creation)-14000(of)-14000(the)-14000(Com)]TJ 567 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x.)-16000(Hence)-15000(this)-14000(co)-1000(de)-15000(is)-14000(v)]TJ 411.9999 0 TD (alid:)Tj /T12 1 Tf -985.9999 104.9999 TD [(tixComboBox)-20000(.c)-21000(-dropdown)-20000(true)]TJ /T15 1 Tf -25 106 TD [(But)-15000(the)-15000(follo)]TJ 233 0 TD [(wing)-12000(co)-1000(de)-15000(will)-12000(generate)-16000(an)-14000(error)-15000(b)-1000(ecause)-16000(it)-14000(attempts)-14000(to)-14000(set)-15000(the)]TJ /T12 1 Tf 1158.9999 0 TD (-dropdown)Tj /T15 1 Tf -1453.9999 50 TD (option)Tj /T13 1 Tf 129 0 TD (after)Tj /T15 1 Tf 98 0 TD [(the)-15000(Com)]TJ 157.9999 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x)-12000(has)-14000(already)-13000(b)-1000(een)-15000(created.)]TJ /T12 1 Tf -391.9999 105 TD [(TixComboBox)-20000(.c)]TJ ET endstream endobj 86 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /XObject << /Im5 82 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS5 83 0 R >> >> endobj 83 0 obj [/Indexed /DeviceRGB 7 87 0 R] endobj 87 0 obj << /Filter /ASCII85Decode /Length 34 >> stream e'lcpIX_=srr<$!NK&q"f]MMclMpnb~> endstream endobj 89 0 obj << /Length 8183 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (18)Tj /T9 1 Tf 1028 0 TD [(CHAPTER)-14000(1.)-27000(INTR)]TJ 389 0 TD (ODUCTION)Tj /T12 1 Tf -1330 117 TD [(.c)-22000(config)-20000(-dropdown)-20000(true)]TJ /T15 1 Tf -25 118.0002 TD [(The)-18000(restrictions)-18000(of)-16000(the)-17000(static)-17000(options,)-17000(although)-16000(anno)]TJ 970.9999 0 TD [(ying,)-16000(nev)]TJ 168 0 TD [(ertheless)-19000(mak)]TJ 250 0 TD [(e)-15000(sense)-18000(b)-1000(e)0(-)]TJ -1450.9999 50 TD [(cause)-18000(w)]TJ 143 0 TD [(e)-17000(don't)-16000(w)]TJ 175 0 TD (an)Tj 42.9999 0 TD [(t)-17000(our)-17000(in)]TJ 144.0001 0 TD [(terface)-17000(to)-17000(suddenly)-17000(c)]TJ 385 0 TD [(hange)-18000(its)-17000(st)]TJ 216 0 TD [(yle.)-27000(If)-16000(sometimes)-15000(a)-17000(button)-17000(is)]TJ -1106 50 TD [(there)-17000(and)-16000(sometimes)-14000(it)-15000(disapp)-1000(ear)-16000(all)-15000(b)]TJ 709 0 TD [(y)-15000(itself,)-16000(that)-15000(will)-15000(certainly)-15000(create)-18000(a)-15000(lot)-15000(of)-15000(confusion)]TJ -709 50 TD [(and)-12000(mak)]TJ 157 0 TD [(es)-10000(the)-13000(user)-13000(w)]TJ 228.9999 0 TD [(onder)-12000(wh)]TJ 164.9999 0 TD [(y)-12000(h)0(e)-12000(should)-12000(buy)-12000(our)-12000(soft)]TJ 434 0 TD 0 Tw (w)Tj 29 0 TD [(are.)-17000(Also,)-12000(as)-12000(y)]TJ 258 0 TD [(ou)-11000(will)-10000(see)-14000(in)-11000(c)]TJ 260.0001 0 TD (hapter)Tj -1532 49 TD [(6,)-13000(ha)]TJ 89 0 TD [(ving)-13000(some)-13000(static)-14000(options)-14000(will)-12000(mak)]TJ 610 0 TD [(e)-12000(the)-15000(life)-13000(of)-13000(widget)-14000(writers)-15000(a)-13000(lot)-14000(easier.)]TJ -637 74 TD [(Accessing)-17000(the)-15000(v)]TJ 281.9999 0 TD [(alue)-14000(of)-15000(the)-15000(Com)]TJ 294.9999 0 TD [(b)-1000(oBo)]TJ 94.0001 0 TD 13 Tc [(xi)13000(s)-2000(v)]TJ 98.9999 0 TD 0 Tc [(ery)-15000(similar)-12000(to)-15000(accessing)-16000(the)-16000(v)]TJ 532 0 TD [(alue)-14000(of)-14000(the)-16000(Tix-)]TJ -1363.9999 50 TD (Con)Tj 73 0 TD [(trol)-12000(widget.)-17000(The)-13000(Com)]TJ 395.9999 0 TD [(b)-1000(oBo)]TJ 93.9999 0 TD [(x)-10000(has)-13000(these)-13000(four)-13000(options,)-11000(whic)]TJ 532 0 TD 13 Tc (hw)Tj 65 0 TD 0 Tc [(e)-12000(discussed)-14000(in)-12000(section)-13000(1.2.2:)]TJ /T12 1 Tf -1159.9999 49 TD (-value)Tj /T15 1 Tf 132 0 TD (,)Tj /T12 1 Tf 22.9999 0 TD (-variable)Tj /T15 1 Tf 198.0001 0 TD (,)Tj /T12 1 Tf 21.9999 0 TD (-command)Tj /T15 1 Tf 186.0001 0 TD (and)Tj /T12 1 Tf 79 0 TD (-validatecmd)Tj /T15 1 Tf 263.9999 0 TD 15 Tc (.Y)Tj 55.0001 0 TD 0 Tc [(ou)-12000(can)-12000(use)-13000(these)-14000(four)-11000(options)-12000(to)-12000(access)]TJ -959 50 TD [(the)-15000(user)-15000(input)-15000(and)-14000(resp)-1000(ond)-15000(to)-15000(user)-15000(actions)-14000(in)-14000(exactly)-15000(the)-15000(same)-13000(w)]TJ 1187.9999 0 TD (a)Tj 20 0 TD [(y)-14000(a)0(s)-14000(discussed)-16000(in)-14000(section)]TJ -1207.9999 50 TD (1.2.2.)Tj /T8 1 Tf 0 145 TD (1.4.4)Tj 171 0 TD [(Monitoring)-18000(the)-18000(User's)-18000(Bro)]TJ 650 0 TD [(wsing)-20000(Actions)]TJ /T15 1 Tf -821 101 TD [(When)-13000(the)-14000(user)-15000(drags)-13000(the)-14000(mouse)-12000(p)-1000(oin)]TJ 665 0 TD [(ter)-14000(o)]TJ 84 0 TD (v)Tj 20.9999 0 TD [(er)-13000(the)-14000(listb)-1000(o)]TJ 218 0 TD [(x,)-12000(the)-14000(listb)-1000(o)]TJ 217.0001 0 TD [(x)-12000(item)-12000(under)-14000(the)-14000(p)-1000(oin)]TJ 395 0 TD (ter)Tj -1600 50 TD [(will)-15000(b)-1000(e)-17000(highligh)]TJ 285.9999 0 TD [(ted)-16000(and)-16000(a)-16000(\\bro)]TJ 273.0001 0 TD [(wse)-17000(ev)]TJ 119.9999 0 TD (en)Tj 40.0001 0 TD [(t")-17000(will)-16000(b)-1000(e)-17000(generated.)-27000(If)-17000(y)]TJ 474 0 TD [(ou)-16000(w)]TJ 88.9999 0 TD (an)Tj 43 0 TD 16 Tc [(tt)16000(ok)]TJ 106 0 TD 0 Tc [(eep)-18000(trac)]TJ 147.0001 0 TD 17 Tc [(ko)17000(f)]TJ -1578 49.9999 TD 0 Tc [(what)-15000(items)-14000(the)-16000(user)-16000(has)-15000(bro)]TJ 513 0 TD [(wses)-16000(through,)-15000(y)]TJ 287 0 TD [(ou)-15000(can)-15000(use)-16000(the)]TJ /T12 1 Tf 281.9999 0 TD (-browsecmd)Tj /T15 1 Tf 233 0 TD [(option.)-21000(Here)-16000(is)-15000(an)]TJ -1314.9999 50 TD (example:)Tj /T12 1 Tf 87 118 TD [(tixComboBox)-20000(.c)-21000(-browsecmd)-20000(mybrowse)]TJ 0 50 TD (....)Tj 0 98.9999 TD [(proc)-21000(mybrowse)-20000({item})-21000({)]TJ 87 50 TD [(puts)-21000("user)-21000(has)-21000(browsed)-21000($item")]TJ -87 50 TD (})Tj /T15 1 Tf -25 118.0001 TD [(When)-16000(the)-16000(Tcl)-16000(command)-12000(sp)-1000(eci\014ed)-17000(b)]TJ 653 0 TD [(y)-16000(the)]TJ /T12 1 Tf 110.9999 0 TD (-browsecmd)Tj /T15 1 Tf 233.0001 0 TD [(option)-15000(is)-16000(called,)-15000(it)-15000(will)-14000(b)-1000(e)-16000(called)]TJ -1059 50 TD [(with)-14000(one)-14000(parameter:)-17000(the)-15000(curren)]TJ 569.9999 0 TD [(t)-15000(item)-13000(that)-14000(the)-14000(user)-15000(has)-14000(highligh)]TJ 595.0001 0 TD (ted.)Tj -1103 73.9999 TD (The)Tj /T12 1 Tf 86 0 TD (-browsecmd)Tj /T15 1 Tf 232 0 TD [(is)-14000(useful)-14000(b)-1000(ecause)-16000(it)-13000(giv)]TJ 410 0 TD [(es)-14000(the)-15000(user)-15000(the)-15000(p)-1000(ossibilit)]TJ 442.9999 0 TD [(y)-13000(o)0(f)-13000(temp)-1000(orarily)-12000(seeing)]TJ -1232.9999 50 TD [(the)-14000(results)-16000(of)-13000(sev)]TJ 306 0 TD [(eral)-14000(c)]TJ 97.9999 0 TD [(hoices)-15000(b)-1000(efore)-15000(committi)]TJ 414.0001 0 TD [(ng)-11000(to)-14000(a)-13000(\014nal)-14000(c)]TJ 250 0 TD (hoice.)Tj -1006 73.0001 TD (F)Tj 24 0 TD [(or)-12000(example,)-11000(w)]TJ 251 0 TD [(e)-13000(can)-12000(list)-12000(a)-12000(set)-13000(of)-12000(image)-10000(\014les)-13000(in)-12000(a)-12000(Com)]TJ 681 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x.)-16000(When)-12000(the)-13000(user)-13000(single-clic)]TJ 500 0 TD (ks)Tj -1612 50 TD [(on)-14000(an)-15000(item)-13000(on)-14000(the)-15000(Com)]TJ 427.9999 0 TD [(b)-1000(oBo)]TJ 94.0001 0 TD [(x,)-13000(w)]TJ 75.9999 0 TD 14 Tc (ew)Tj 61.0001 0 TD 0 Tc (an)Tj 43 0 TD [(t)-14000(t)0(o)-15000(sho)]TJ 141 0 TD [(w)-14000(a)-15000(simpli\014ed)-12000(view)-15000(of)-14000(that)-14000(image.)-18000(After)-15000(the)]TJ -843 50 TD [(user)-14000(has)-14000(bro)]TJ 220 0 TD [(wsed)-13000(through)-14000(sev)]TJ 311.9999 0 TD [(eral)-13000(images,)-11000(he)-14000(can)-13000(\014nally)-12000(decide)-14000(on)-13000(whic)]TJ 747 0 TD [(h)-13000(image)-11000(he)-14000(w)]TJ 239.0001 0 TD (an)Tj 43 0 TD [(ts)-13000(b)]TJ 66.9998 0 TD (y)Tj -1627.9998 49 TD (double-clic)Tj 193 0 TD [(king)-13000(on)-13000(that)-14000(item)-13000(in)-13000(the)-15000(listb)-1000(o)]TJ 553 0 TD (x.)Tj -684 73.9999 TD [(The)-12000(follo)]TJ 161 0 TD [(wing)-8000(is)-11000(some)-11000(pseudo)-11000(Tcl)-12000(co)-1000(de)-11000(that)-12000(do)-1000(es)-12000(this.)-17000(Please)-12000(notice)-11000(that)-11000(the)]TJ /T12 1 Tf 1208.9999 0 TD (-browsecmd)Tj /T15 1 Tf -1431.9999 50 TD [(pro)-1000(cedure)-16000(is)-15000(called)-14000(ev)]TJ 393 0 TD [(ery)-15000(time)-13000(the)-15000(user)-16000(single-clic)]TJ 501.9999 0 TD [(ks)-14000(on)-14000(an)-14000(item)-13000(or)-15000(drags)-14000(the)-15000(mouse)-14000(p)-1000(oin)]TJ 705.0001 0 TD (ter)Tj -1600 49.0001 TD [(in)-16000(the)-18000(listb)-1000(o)]TJ 226 0 TD [(x.)-26000(The)]TJ /T12 1 Tf 148.9999 0 TD (-command)Tj /T15 1 Tf 191.0001 0 TD [(pro)-1000(cedure)-19000(is)-16000(only)-16000(called)-17000(when)-17000(the)-18000(user)-18000(double-clic)]TJ 924.9999 0 TD [(ks)-17000(on)-16000(an)]TJ -1490.9999 50 TD (item.)Tj /T12 1 Tf 0 119 TD [(tixComboBox)-20000(.c)-21000(-dropdown)-20000(false)-21000(-browsecmd)-19000(show_simple)-20000(-command)-20000(load_fullsize)]TJ 0 50 TD [(.c)-21000(insert)-21000(end)-21000("/pkg/images/flowe)]TJ 700 0 TD (rs.gi)Tj 109 0 TD (f")Tj -809 48.9999 TD [(.c)-21000(insert)-21000(end)-21000("/pkg/images/jimmy)]TJ 700 0 TD (.gif")Tj -700 50 TD [(.c)-21000(insert)-21000(end)-21000("/pkg/images/ncsa.)]TJ 700 0 TD (gif")Tj ET endstream endobj 90 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 91 0 obj << /Type /XObject /Subtype /Image /Name /Im7 /Width 177 /Height 47 /BitsPerComponent 8 /ColorSpace 92 0 R /Length 435 /Filter /FlateDecode >> stream H‰ì—ërƒ …7­­¦Ö¾ÿãÆŠ"ì Ã4Ûñ “? ‡/»ToºùÒÜZo¾äøÝ—w¾äøÃ,}U§æ†?IQêÕUú¬5¶½x<î*Ò ÏJžê^ø‹Ñ0›sAºG`~•>+yª{]ÀõÀ+‚`XÆK´^^éŸ ËÎãH€³”gÏNë8Waø;jªΚV†¬ðU‘€ÛOÐÊ‹€³†m”¯5ÈJ‡RðÍ|%Þx1pÚ“À°ŸÂ£ÀA!Ñ|!޼8I˜HÀ¨‡&ˆûX*Œ€‰w^’áØ.ÃàexËî± ‘ÿ|_EÝÚáü¤Â(~`Æ<}Ó§·ÄÒ¸Êrwñ çžLÀ´Â™˜k "/W„ôZK+¼Ÿ¸é 0{èÊÀ y4§¼?é¬Àáל"º‡ù½JÀæH(À-¹ö>ìùßVó7 «^]¥ÏJžê^˜÷ XX¥ÏJžê^¸·J_U穹!`?r,çUåø¯{lÔÜZpk9ö¦‡`›ß endstream endobj 94 0 obj << /Length 5985 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(1.5.)-31000(THE)-14000(TIXSELECT)-14000(WIDGET)]TJ /T15 1 Tf 1607.9998 0 TD (19)Tj ET q 173.448 0 0 46.08 237.6 672.02 cm /Im7 Do Q BT 0.24 0 0 -0.24 250.08 650.1 Tm [(Figure)-14000(1.7:)-17000(The)-15000(TixSelect)-14000(Widget)]TJ /T12 1 Tf -517 184.9998 TD [(proc)-21000(show_simple)-19000({filename})-20000({)]TJ 87 50 TD [(#)-22000(Load)-21000(in)-21000(a)-22000(simplified)-19000(version)-21000(of)-21000($filename)]TJ -87 49 TD 0 Tw (})Tj 0 100 TD [(proc)-21000(load_fullsize)-19000({filename})-20000({)]TJ 87 50 TD [(#)-22000(Load)-21000(in)-21000(the)-21000(full)-21000(size)-21000(image)-21000(in)-21000($filename)]TJ -87 50 TD (})Tj /T15 1 Tf 62 118 TD [(As)-11000(w)]TJ 87 0 TD [(e)-10000(shall)-10000(see,)-12000(all)-9000(Tix)-9000(widgets)-11000(that)-10000(let)-10000(us)-11000(do)-10000(some)-9000(sort)-11000(of)-10000(selections)-11000(ha)]TJ 1165.9999 0 TD (v)Tj 21.0001 0 TD [(e)-10000(the)]TJ /T12 1 Tf 95.9999 0 TD (-browsecmd)Tj /T15 1 Tf -1431.9999 50 TD [(option.)-23000(The)]TJ /T12 1 Tf 239 0 TD (-browsecmd)Tj /T15 1 Tf 232.9999 0 TD [(option)-16000(allo)]TJ 197.0001 0 TD [(ws)-14000(us)-16000(to)-16000(resp)-1000(ond)-17000(to)-16000(user)-17000(ev)]TJ 507.9999 0 TD (en)Tj 40 0 TD [(ts)-17000(in)-15000(a)-16000(simple,)-14000(straigh)]TJ 402.9999 0 TD (t-)Tj -1619.9998 49.0001 TD (forw)Tj 79 0 TD [(ard)-11000(manner.)-16000(Of)-12000(course,)-13000(y)]TJ 451 0 TD [(ou)-10000(can)-12000(do)-11000(the)-12000(same)-11000(thing)-11000(with)-11000(the)-12000(Tk)]TJ /T12 1 Tf 683.9999 0 TD (bind)Tj /T15 1 Tf 99 0 TD [(command,)-9000(but)-11000(y)]TJ 293.0001 0 TD (ou)Tj -1606 50 TD [(don't)-9000(w)]TJ 132.9999 0 TD (an)Tj 43.0001 0 TD [(t)-9000(t)0(o)-9000(d)0(o)-9000(that)-9000(unless)-10000(y)]TJ 348 0 TD [(ou)-9000(are)-10000(v)]TJ 138.9999 0 TD [(ery)-9000(fond)-9000(of)-9000(things)-9000(lik)]TJ 362.0001 0 TD (e)Tj /T12 1 Tf 25.9999 0 TD ()Tj /T15 1 Tf -1686 50 TD (and)Tj /T12 1 Tf 81 0 TD [("%x)-21000(%X)-21000($w)-22000(%W)-21000(%w")]TJ /T15 1 Tf 349 0 TD (.)Tj /T14 1 Tf -430 166 TD (1.5)Tj 153 0 TD [(The)-22000(TixSelect)-24000(Widget)]TJ /T15 1 Tf -153 115 TD [(The)-13000(TixSelect)-14000(widget)-13000(\014gure)-13000(1.7)-12000(pro)]TJ 638.9999 0 TD [(vides)-13000(y)]TJ 125 0 TD [(ou)-13000(the)-13000(same)-13000(kind)-12000(of)-12000(facilit)]TJ 472.0001 0 TD [(y)-12000(that)-13000(is)-13000(a)]TJ 183.9999 0 TD (v)Tj 20 0 TD [(ailable)-10000(with)]TJ -1439.9999 50 TD [(the)-13000(Tk)]TJ /T12 1 Tf 135 0 TD (radiobutton)Tj /T15 1 Tf 252 0 TD (and)Tj /T12 1 Tf 80 0 TD (checkbutton)Tj /T15 1 Tf 252 0 TD [(widgets.)-18000(That)-12000(is,)-13000(TixSelect)-13000(allo)]TJ 568 0 TD [(ws)-11000(the)-13000(user)-14000(to)-13000(select)]TJ -1287 50 TD [(one)-16000(or)-15000(a)-16000(few)-16000(v)]TJ 264 0 TD [(alues)-15000(out)-15000(of)-16000(man)]TJ 308.9999 0 TD 13 Tc (yc)Tj 52.0001 0 TD 0 Tc [(hoices.)-24000(Ho)]TJ 194.9999 0 TD (w)Tj 29.0001 0 TD (ev)Tj 38.9999 0 TD [(er,)-16000(TixSelect)-17000(is)-15000(sup)-1000(erior)-17000(b)-1000(ecause)-17000(it)-15000(allo)]TJ 717.0001 0 TD (ws)Tj -1605 50 TD (y)Tj 21 0 TD [(ou)-13000(to)-14000(la)]TJ 140 0 TD (y)Tj 21 0 TD [(out)-12000(the)-15000(c)]TJ 161 0 TD [(hoices)-14000(in)-14000(m)]TJ 206 0 TD (uc)Tj 39.9999 0 TD [(h)-12000(less)-15000(space)-14000(than)-14000(what)-14000(is)-13000(required)-15000(b)]TJ 649 0 TD [(y)-13000(the)-15000(Tk)]TJ /T12 1 Tf 172 0 TD (radiobutton)Tj /T15 1 Tf -1409.9999 48.9999 TD [(widgets.)-30000(Also,)-18000(TixSelect)-18000(supp)-1000(orts)-19000(complicated)-16000(selection)-19000(rules.)-30000(Because)-19000(of)-17000(these)-19000(reasons,)]TJ 0 50 TD [(TixSelect)-20000(is)-18000(a)-19000(primary)-18000(c)]TJ 456 0 TD [(hoice)-19000(for)-19000(implemen)]TJ 356.9999 0 TD [(ting)-15000(to)-1000(olbar)-19000(buttons,)-20000(whic)]TJ 489 0 TD [(h)-19000(often)-19000(ha)]TJ 195 0 TD (v)Tj 21.0001 0 TD [(e)-19000(strict)]TJ -1518 50 TD [(space)-15000(requiremen)]TJ 312 0 TD [(ts)-14000(and)-14000(complicated)-12000(selection)-15000(rules.)]TJ /T8 1 Tf -312 145.0001 TD (1.5.1)Tj 171 0 TD [(Creating)-19000(A)-19000(TixSelect)-16000(Widget)]TJ /T15 1 Tf -171 101 TD [(Program)-12000(1.4)-13000(sho)]TJ 296.9999 0 TD [(ws)-14000(ho)]TJ 103 0 TD [(w)-13000(t)0(o)-14000(create)-15000(a)-13000(TixSelect)-14000(widget.)-18000(A)]TJ 612.9999 0 TD [(t)-14000(line)-13000(1)-13000(o)0(f)-13000(program)-12000(1.4,)-12000(w)]TJ 462 0 TD [(e)-14000(create)-15000(a)]TJ -1474.9999 49.9999 TD [(TixSelect)-14000(using)-14000(the)-14000(the)]TJ /T12 1 Tf 434.9999 0 TD (tixSelect)Tj /T15 1 Tf 209.9999 0 TD (command.)Tj ET q 396 0 0 -0.96 125.976 233.436 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 223.62 Tm [(Program)-15000(1.4)]TJ /T15 1 Tf 273 0 TD [(Creating)-14000(a)-14000(TixSelect)-14000(Widget)]TJ ET q 396 0 0 -0.48 125.976 219.756 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 136.56 211.14 Tm [(tixSelect)-20000(.fruits)-20000(-label)-20000("Fruits:)-21000(")-21000(-orientation)-19000(horizontal)]TJ 0 50 TD [(.fruits)-20000(add)-21000(apple)]TJ 414 0 TD [(-text)-20000(Apple)]TJ 282.9999 0 TD [(-width)-21000(6)]TJ -696.9999 48.9999 TD [(.fruits)-20000(add)-21000(orange)-21000(-text)-20000(Orange)-21000(-width)-21000(6)]TJ 0 50 TD [(.fruits)-20000(add)-21000(banana)-21000(-text)-20000(Banana)-21000(-width)-21000(6)]TJ T* [(pack)-21000(.fruits)]TJ ET q 396 0 0 -0.48 125.976 149.196 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q endstream endobj 95 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T14 16 0 R /T15 6 0 R >> /XObject << /Im7 91 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS6 92 0 R >> >> endobj 92 0 obj [/Indexed /DeviceRGB 15 96 0 R] endobj 96 0 obj << /Filter /ASCII85Decode /Length 64 >> stream !!!"eR@.#R<<*!ue'lbe*Zf!.BLbQ_oCMR&IX\H&Y5eM%o()@$It+f2ZN't*~> endstream endobj 97 0 obj << /Type /XObject /Subtype /Image /Name /Im10 /Width 299 /Height 72 /BitsPerComponent 8 /ColorSpace 98 0 R /Length 803 /Filter /FlateDecode >> stream H‰ì— –ƒ Åèîýo¼Uþ1ÁˆhÑͼ¶´)™´Ã œÆ|{ß ôçÐÈ`Ø#/†OÚ¨ªU%FU‰ÙWe(rôåIgªî»Æ<‘\Õ‘Z| Ò¤ªRUbž¤ `o”>£lÒh›ú²ªÕA·ª’þ؇ªFgÕòU°0Ú‡íY-þé†ì—é:¡Š\¢×E¤ ñ¼ÒUHÐß:rUÔ×¶*^SvÚ%DU6á0Ö“ª¨ [hѤg\5‹3ªò=7«aSP·©róF±*.Rs|å8GnO l¼WëMºâ£›z„ªôÂGÕܲU=CUðª¨Mû£ÊލªÒ˜sï9ŸzrU+aš-ÔØ«&ïUJ¤jR8U%EU‰i¤j~9-UµÛ<z¤KUíÒ›Fj«ê· ËÌ*瀧47Œ´4ªJiiT•(ÒÒ¨*Q¤¥QU¢HKÓ¿*¨M0‰+•ÉT˜ÿ®ËT­_Y•#RUžÿ^¤¥aTÑŸYÆéc¬*80JªJ^'ˆUUÅ©SÅãT}jó”*ˆ-¸_ÊÖ™_—Kc OŒSED úGU¸G¨(·2!ÄÝQE[©R•Ì‚}–UI"Б$ª©Ê;RUàÊ+¶kÁÆJU5¡Ñòª²bÁŸ úbU¾*cé U¸FiUQ zÆ·UùªÆª¶×!¦ªp®/V~ ZÕfAï©r¤õo©rÛ ]Uè×£÷ªM¦ßL.,ZøWJ+¿&uqJ•°-¨2±ªI¢Êûàªj _¦’-ÀâfLÝW±PŸRe F•»’ú«à”möU¥ª’©ŠåöªÉÝøEv³¶ 2¶O©²ŠJ 0|:ù‰%7 Úêm]±ú6ªÎpÃÀDUíÍÂÄrI|Ž*JÚG«Šü¯êTUâU•8Á'ª’£ªTUŒ¦ªÄÑŒùiÆÜˆ†‘šªêÏÔÜ0RKUíLuICUÿU%FU‰QUb°ªAáÉT}{2}“ª¢0ì‘Ã'­ªªJŒªSVe8ø#/¦ô¿ôQÇŸ§rü endstream endobj 99 0 obj << /Type /XObject /Subtype /Image /Name /Im9 /Width 112 /Height 147 /BitsPerComponent 8 /ColorSpace 100 0 R /Length 663 /Filter /FlateDecode >> stream H‰ì—‹’ƒ EUìþÿ'o]/rÃØ-wj5Z8 L¦é)š-Z¾-‚fñÉ™ä–óà™ðfN{W#¶eÁ»‹z•¼»ã©m9^vÏ9޵Ý[VS§æý¡îð2û2O˜ç6-þã-ÿèhá±#NÃ2–Ø÷‹8}{VÅó­y)Z\ò4¡Ûxåf'òž¶H=¯ÒvÏ÷Is·„ˆÉ\Çgš=Wt_1,ÞçJæ1ÑðØýÏ»Oh[OÕ)@Dyïj,âPcÏ+æï <çÅÜ·âñM·û—™ ¼³gͼ÷…ÿDßÂ@Óp+è×x®â•ŒþæDÅÓêÅñdy+¾†¼ .‚xê@½Ãs«Ëxn-¢΋Ý'v=@5xx/ T¼œúò^ZfÆ^ƒ÷Å<~G>Ú§›xÂ{ÕŽÇwmÍ oÜì,'1-¼ÔwudÛ^0²3]"y޾9_Ô´ñ¨SÉ?NVþáy1Oë/¯ÓzØ“Ï5xç¼+¼oá¡Òy%…SûS_ÞcãeðþOx}ñ¥¹½xÙw^öB§ì¬H˜þN|ÖÔÌc ˆê€ú·Vs†ó¤Ä~_E@x”å²þ•jÏ4d¦¼¸þ¢Åx‚ãeMûKœ¿5,ZÈõ ¿˜ðÄjÌÊ?©ûœ÷Ñà}¯s>Âú!ð®Ç§çÆçàYñ˜´Ë–ç¡}y·ª‡VS7p6‚§©@ù`.uÀØ(ÿêºA²¼TŒ•y5gÃxÊ3‚WÄDægŸóf/§…­ööÏs&¯û§çÂ=³~0Òà ÞàɼÉ\ÏWð8Íâ“3É-Ï›%ÉOÎtÐò~§÷ô+ÀñEÍ£ endstream endobj 102 0 obj << /Length 6981 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (20)Tj /T9 1 Tf 1022.9999 0 TD [(CHAPTER)-14000(1.)-32000(INTR)]TJ 394.0001 0 TD (ODUCTION)Tj ET q 198.0106 0 0 47.5199 170.4 604.2601 cm /Im10 Do Q BT /T6 1 Tf 0.24 0 0 -0.24 227.28 582.42 Tm [(\(a\))-11000(Horizon)]TJ 178.0001 0 TD [(tal)-9000(Orien)]TJ 137 0 TD (tation)Tj ET q 79.2214 0 0 103.7673 384.96 604.1896 cm /Im9 Do Q BT 0.24 0 0 -0.24 395.04 582.42 Tm [(\(b\))-18000(V)]TJ 88.9999 0 TD [(ertical)-17000(Orien-)]TJ -88.9999 39.9998 TD (tation)Tj /T15 1 Tf -604 116.0002 TD [(Figure)-14000(1.8:)-17000(The)-15000(TixSelect)-14000(Widget)]TJ /T10 1 Tf -517 134.9998 TD [(Lab)-1000(el)-15000(and)-15000(Orien)]TJ 340.9999 0 TD (tati)Tj 74.0001 0 TD (on)Tj /T15 1 Tf -415 101.0001 TD [(As)-16000(sho)]TJ 122 0 TD [(wn)-16000(in)-15000(program)-14000(1.4,)-15000(with)-15000(the)]TJ /T12 1 Tf 537.9999 0 TD (-label)Tj /T15 1 Tf 146.0001 0 TD [(option,)-15000(w)]TJ 172 0 TD [(e)-16000(can)-16000(put)-16000(a)-15000(lab)-1000(el)-16000(next)-16000(to)-15000(the)-17000(button)]TJ -978 50 TD (sub)Tj 61 0 TD [(widgets)-17000(as)-17000(the)-17000(caption)-16000(of)-16000(the)-17000(TixSelect)-17000(widget.)-25000(W)]TJ 938 0 TD [(e)-16000(can)-17000(also)-16000(con)]TJ 260 0 TD [(trol)-16000(the)-17000(la)]TJ 186.9999 0 TD 0 Tw (y)Tj 21.0001 0 TD [(out)-15000(of)-16000(the)]TJ -1467 50 TD [(button)-12000(sub)]TJ 195 0 TD [(widgets)-12000(using)-11000(the)]TJ /T12 1 Tf 323 0 TD (-orientation)Tj /T15 1 Tf 272.9999 0 TD [(option.)-17000(The)]TJ /T12 1 Tf 228 0 TD (-orientation)Tj /T15 1 Tf 273.0001 0 TD [(option)-10000(can)-12000(ha)]TJ 243 0 TD (v)Tj 21 0 TD 11 Tc (et)Tj 44 0 TD 0 Tc (w)Tj 28.9998 0 TD (o)Tj -1628.9998 49 TD (v)Tj 20 0 TD (alues:)Tj /T12 1 Tf 123.9999 0 TD (horizontal)Tj /T15 1 Tf 235 0 TD [(\(the)-17000(default)-15000(v)]TJ 251.0001 0 TD [(alue\))-16000(or)]TJ /T12 1 Tf 158.9999 0 TD (vertical)Tj /T15 1 Tf 176.0001 0 TD [(,)-15000(and)-16000(the)-17000(buttons)-17000(are)-16000(lied)-16000(up)-16000(accord-)]TJ -965 50 TD (ingly)Tj 87 0 TD [(.)-19000(Figure)-15000(1.8\(b\))-14000(sho)]TJ 344.9999 0 TD [(ws)-15000(the)-16000(output)-15000(of)-14000(a)-14000(TixSelect)-15000(widget)-15000(whose)]TJ /T12 1 Tf 795.9999 0 TD (-orientation)Tj /T15 1 Tf 277.0001 0 TD [(is)-14000(set)-16000(to)]TJ /T12 1 Tf -1505 50 TD (vertical)Tj /T15 1 Tf 176 0 TD (.)Tj /T10 1 Tf -176 136.9999 TD [(Creating)-14000(the)-15000(Button)-14000(Sub)]TJ 524 0 TD [(widgets)-13000(and)-15000(Con\014guring)-13000(Their)-14000(App)-1000(earance)]TJ /T15 1 Tf -524 101.0001 TD [(After)-13000(w)]TJ 136 0 TD 13 Tc [(eh)13000(a)]TJ 74 0 TD 0 Tc (v)Tj 21 0 TD [(e)-13000(created)-14000(the)-14000(TixSelect)-13000(widget,)-12000(w)]TJ 600.9999 0 TD [(e)-14000(can)-13000(create)-14000(the)-13000(button)-13000(sub)]TJ 494 0 TD [(widgets)-14000(inside)-12000(the)]TJ -1325.9999 50 TD [(TixSelect)-14000(widget)-14000(b)]TJ 339 0 TD [(y)-14000(the)]TJ /T12 1 Tf 107 0 TD (add)Tj /T15 1 Tf 79 0 TD [(widget)-14000(command)-11000(\(lines)-14000(2-4)-13000(of)-14000(program)-12000(1.4\).)]TJ -463 72.9999 TD [(The)-11000(\014rst)-12000(argumen)]TJ 322 0 TD 10 Tc [(tt)10000(ot)10000(h)10000(e)]TJ /T12 1 Tf 141 0 TD 0 Tc (add)Tj /T15 1 Tf 77 0 TD [(command)-7000(is)-11000(the)-11000(name)-10000(of)-10000(the)-11000(button)-11000(sub)]TJ 705.9999 0 TD [(widget.)-17000(Additional)]TJ -1307.9999 50 TD (argumen)Tj 157 0 TD [(ts)-18000(can)-19000(b)-1000(e)-19000(giv)]TJ 246 0 TD [(en)-19000(in)]TJ /T13 1 Tf 113 0 TD (option-value)Tj /T15 1 Tf 239 0 TD [(pairs)-19000(to)-18000(con\014gure)-20000(the)-19000(app)-1000(earance)-20000(of)-18000(the)-20000(button)]TJ -755 50 TD (sub)Tj 61 0 TD [(widget.)-21000(These)]TJ /T13 1 Tf 273.9999 0 TD (option-value)Tj /T15 1 Tf 234.9999 0 TD [(pairs)-15000(can)-15000(b)-1000(e)-15000(an)]TJ 280.0001 0 TD [(y)-14000(o)0(f)-14000(those)-16000(accepted)-16000(b)]TJ 387 0 TD [(y)-15000(a)-14000(normal)-13000(TK)-15000(button)]TJ -1237 50 TD [(widget.)-19000(As)-15000(sho)]TJ 271.9999 0 TD [(wn)-14000(in)-14000(program)-12000(1.4,)-13000(w)]TJ 390.0001 0 TD [(e)-14000(use)-15000(the)]TJ /T12 1 Tf 175.9999 0 TD (-text)Tj /T15 1 Tf 123.0001 0 TD [(option)-14000(to)-14000(put)-14000(appropriate)-15000(text)-15000(strings)]TJ -961 49.0001 TD (o)Tj 20 0 TD (v)Tj 20.9999 0 TD [(er)-14000(the)-14000(three)-16000(button)-14000(sub)]TJ 423 0 TD (widgets.)Tj -401.9999 74 TD [(Notice)-15000(that)-15000(w)]TJ 250.9999 0 TD [(e)-14000(also)-14000(set)-15000(the)]TJ /T12 1 Tf 254.0001 0 TD (-width)Tj /T15 1 Tf 145 0 TD [(option)-13000(of)-14000(all)-13000(the)-16000(button)-14000(sub)]TJ 504.9999 0 TD [(widgets)-15000(to)-15000(6)-14000(c)]TJ 255 0 TD (haracters.)Tj -1471.9999 50 TD [(This)-15000(w)]TJ 125 0 TD (a)Tj 20 0 TD (y)Tj 19 0 TD [(,)-15000(the)-16000(three)-16000(buttons)-16000(will)-14000(ha)]TJ 483.9999 0 TD (v)Tj 21.0001 0 TD [(e)-16000(the)-16000(same)-14000(width.)-23000(If)-15000(w)]TJ 423 0 TD [(e)-15000(didn't)-15000(set)-16000(the)]TJ /T12 1 Tf 296.9999 0 TD (-width)Tj /T15 1 Tf 146.0001 0 TD (option)Tj -1535 48.9999 TD [(for)-14000(the)-14000(button)-14000(widgets,)-14000(they)-15000(will)-12000(ha)]TJ 647.9999 0 TD (v)Tj 21.0001 0 TD [(e)-14000(di\013eren)]TJ 165 0 TD [(t)-15000(widths,)-13000(dep)-1000(ending)-15000(on)-14000(their)-14000(text)-15000(string,)-13000(and)]TJ -834 50 TD [(the)-14000(result)-15000(w)]TJ 215.9999 0 TD [(ould)-13000(lo)-1000(ok)-13000(less)-15000(esthetically)-14000(pleasing)-13000(than)-14000(buttons)-15000(with)-13000(same)-13000(widths.)]TJ -153.9999 74.0001 TD [(The)-15000(output)-14000(of)-13000(program)-12000(1.4)-13000(is)-14000(sho)]TJ 603 0 TD [(wn)-14000(in)-13000(\014gure)-15000(1.8\(a\))]TJ /T10 1 Tf -665 135.9999 TD [(Accessing)-15000(the)-15000(Button)-13000(Sub)]TJ 544 0 TD (widgets)Tj /T15 1 Tf -544 102.0001 TD (W)Tj 40 0 TD 9 Tc [(eh)9000(a)]TJ 70 0 TD 0 Tc (v)Tj 21 0 TD [(e)-10000(already)-9000(seen)-11000(the)-11000(concept)-11000(of)-9000(sub)]TJ 575.9999 0 TD [(widgets)-10000(and)-10000(ho)]TJ 266 0 TD [(w)-9000(they)-11000(can)-9000(b)-1000(e)-11000(accessed)-12000(in)-9000(section)-11000(1.3.1)]TJ -972.9999 48.9999 TD [(|)-16000(when)-17000(w)]TJ 198 0 TD [(e)-17000(create)-18000(a)-16000(Tix)-16000(mega-widget,)-14000(some)-16000(sub)]TJ 701 0 TD [(widgets)-17000(are)-17000(created)-18000(for)-16000(us)-17000(automatically)]TJ 741.9998 0 TD (.)Tj -1640.9998 50 TD (F)Tj 24 0 TD [(or)-17000(example,)-17000(the)-18000(lab)-1000(el)-17000(and)-17000(en)]TJ 535.9999 0 TD [(try)-18000(sub)]TJ 133.0001 0 TD [(widgets)-19000(inside)-17000(a)-17000(TixCon)]TJ 450.9999 0 TD [(trol)-16000(widget.)-29000(W)]TJ 282 0 TD [(e)-17000(can)-18000(access)]TJ ET endstream endobj 103 0 obj << /ProcSet [/PDF /Text /ImageC /ImageI] /Font << /T6 72 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /XObject << /Im9 99 0 R /Im10 97 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS7 98 0 R /CS8 100 0 R >> >> endobj 98 0 obj [/Indexed /DeviceRGB 7 104 0 R] endobj 104 0 obj << /Filter /ASCII85Decode /Length 34 >> stream kih5NEcT%6_>jQ9eC;uuJ:R\"s1lFc~> endstream endobj 100 0 obj [/Indexed /DeviceRGB 7 105 0 R] endobj 105 0 obj << /Filter /ASCII85Decode /Length 34 >> stream kih5NEcT%6_>jQ9e'lcpIX_=srr<$!~> endstream endobj 107 0 obj << /Length 7922 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(1.5.)-31000(THE)-14000(TIXSELECT)-14000(WIDGET)]TJ /T15 1 Tf 1607.9998 0 TD (21)Tj -1607.9998 117 TD [(these)-15000(sub)]TJ 167 0 TD [(widgets)-15000(in)-13000(a)-14000(m)]TJ 268.9999 0 TD [(ultitude)-12000(of)-13000(w)]TJ 230.9999 0 TD 0 Tw (a)Tj 20.0001 0 TD [(ys,)-13000(including)-13000(using)-14000(the)-14000(sub)]TJ 484 0 TD [(widget)-15000(metho)-1000(d.)]TJ -1109 73.0002 TD [(One)-12000(thing)-10000(ab)-1000(out)-10000(the)-11000(sub)]TJ 434 0 TD [(widgets)-11000(w)]TJ 176 0 TD 11 Tc [(es)11000(a)]TJ 65 0 TD 0 Tc [(w)-10000(i)0(n)-10000(section)-12000(1.3.1)-8000(is)-11000(that)-10000(they)-11000(are)-11000(\\static",)-11000(meaning)]TJ -737 50 TD [(they)-20000(are)-19000(created)-21000(when)-20000(the)-20000(mega-widget)-17000(is)-19000(created)-21000(and)-19000(they)-20000(remain)-18000(there)-20000(for)-19000(the)-20000(whole)]TJ T* [(lifetime)-12000(of)-13000(the)-15000(mega-widget.)]TJ 62 72.9998 TD [(The)-19000(TixSelect)-18000(widget)-17000(tak)]TJ 472 0 TD [(es)-19000(us)-18000(to)-17000(a)-18000(new)-18000(concept:)]TJ /T13 1 Tf 468 0 TD [(dynamic)-20000(subwidgets)]TJ /T15 1 Tf 376.9999 0 TD [(are)-18000(sub)]TJ 134 0 TD (widgets)Tj -1512.9999 50 TD [(that)-12000(can)-13000(b)-1000(e)-12000(created)-14000(on-the-\015y)]TJ 531.9999 0 TD [(.)-17000(After)-13000(w)]TJ 165.0001 0 TD [(e)-12000(add)-12000(a)-12000(new)-13000(button)-12000(in)]TJ 393.9999 0 TD [(to)-12000(the)-13000(TixSelect)-12000(widget,)-12000(w)]TJ 472.9999 0 TD [(e)-13000(get)]TJ -1563.9998 50 TD [(a)-16000(new)-16000(sub)]TJ 185 0 TD [(widget.)-24000(The)-16000(name)-15000(of)-15000(this)-16000(new)-16000(sub)]TJ 636 0 TD [(widget)-16000(is)-16000(giv)]TJ 234 0 TD [(en)-15000(b)]TJ 77.9999 0 TD [(y)-15000(the)-17000(\014rst)-16000(parameter)-16000(passed)]TJ -1132.9999 50 TD [(to)-14000(the)]TJ /T12 1 Tf 123 0 TD (add)Tj /T15 1 Tf 78.9999 0 TD [(metho)-1000(d.)-18000(As)-15000(the)-15000(follo)]TJ 379.9999 0 TD [(wing)-11000(co)-1000(de)-15000(demonstrates,)-14000(w)]TJ 488 0 TD [(e)-15000(can)-14000(access)-16000(this)-14000(new)-15000(sub)]TJ 460.0001 0 TD (widget)Tj -1530 49 TD [(using)-14000(the)]TJ /T12 1 Tf 179.9999 0 TD (subwidget)Tj /T15 1 Tf 210.0001 0 TD [(metho)-1000(d:)]TJ /T12 1 Tf -286 128.0002 TD [(tixSelect)-20000(.s)]TJ 0 49 TD [(.s)-21000(add)-21000(apple)]TJ 305 0 TD [(-text)-21000(Apple)]TJ -305 50 TD [(.s)-21000(add)-21000(orange)-21000(-text)-21000(Orange)]TJ T* (#)Tj 86.9999 0 TD [(Mmmm...,)-20000(let's)-21000(make)-21000(the)-21000(widget)-21000(look)-21000(more)-20000(educated)]TJ -86.9999 50 TD (#)Tj 86.9999 0 TD [(by)-21000(using)-21000(French)-21000(words)]TJ -86.9999 49.9998 TD [(.s)-21000(subwidget)-20000(apple)]TJ 436 0 TD [(config)-20000(-text)-21000(Pomme)]TJ -436 49 TD [(.s)-21000(subwidget)-20000(orange)-21000(config)-20000(-text)-21000(Orange)]TJ /T8 1 Tf -104 158.0001 TD (1.5.2)Tj 171 0 TD [(Sp)-2000(ecifying)-17000(Selection)-17000(Rules)]TJ /T15 1 Tf -171 104 TD (F)Tj 24 0 TD [(or)-9000(simple)-8000(selection)-10000(rules,)-11000(y)]TJ 463.9999 0 TD [(ou)-9000(can)-10000(use)-10000(the)]TJ /T12 1 Tf 259.0001 0 TD (-allowzero)Tj /T15 1 Tf 227 0 TD (and)Tj /T12 1 Tf 76.9999 0 TD (-radio)Tj /T15 1 Tf 140 0 TD [(options.)-16000(The)]TJ /T12 1 Tf 241 0 TD (-allowzero)Tj /T15 1 Tf -1431.9999 48.9999 TD [(option)-12000(sp)-1000(eci\014es)-15000(whether)-15000(the)-14000(user)-14000(can)-14000(select)-14000(none)-14000(of)-12000(the)-14000(c)]TJ 1025.9999 0 TD [(hoices)-14000(inside)-13000(the)-14000(TixSelect)-14000(widget.)]TJ -1025.9999 50 TD (The)Tj /T12 1 Tf 87 0 TD (-radio)Tj /T15 1 Tf 146 0 TD [(option)-15000(con)]TJ 191.9999 0 TD [(trols)-15000(ho)]TJ 138.9999 0 TD [(w)-15000(man)]TJ 124 0 TD [(y)-14000(buttons)-16000(can)-16000(b)-1000(e)-16000(selected)-17000(at)-15000(once:)-22000(when)-16000(set)-16000(to)-16000(true,)]TJ -687.9999 50 TD [(the)-13000(user)-14000(can)-13000(select)-14000(only)-12000(one)-13000(button)-13000(at)-12000(a)-13000(time;)-11000(when)-13000(set)-14000(to)-13000(false,)-12000(the)-13000(user)-14000(can)-13000(select)-14000(as)-13000(man)]TJ 1630 0 TD (y)Tj -1630 50 TD [(buttons)-14000(as)-14000(he)-15000(desires.)]TJ 62 73.0001 TD [(With)-15000(these)-17000(t)]TJ 231.9999 0 TD (w)Tj 29.0001 0 TD [(o)-16000(options,)-15000(w)]TJ 224.9999 0 TD [(e)-16000(can)-15000(write)-16000(a)-16000(program)-14000(using)-15000(t)]TJ 549 0 TD (w)Tj 29 0 TD [(o)-15000(TixSelect)-16000(widgets)-16000(for)-16000(little)]TJ -1125.9999 50 TD (Jimm)Tj 104 0 TD [(y)-7000(t)0(o)-10000(\014ll)-9000(up)-11000(his)-10000(lunc)]TJ 324.9999 0 TD 10 Tc [(hb)9000(o)]TJ 77.0001 0 TD 0 Tc [(x.)-17000(On)-10000(the)-11000(Sandwic)]TJ 332.9999 0 TD [(h)-10000(side,)-11000(w)]TJ 154.0001 0 TD [(e)-11000(set)]TJ /T12 1 Tf 89.9999 0 TD (-radio)Tj /T15 1 Tf 141.0001 0 TD [(to)-10000(true)-11000(and)]TJ /T12 1 Tf 207.9999 0 TD (-allowzero)Tj -1431.9999 50 TD (false)Tj /T15 1 Tf 110 0 TD [(.)-16000(That)-11000(means)-11000(Jimm)]TJ 358 0 TD [(y)-8000(can)-11000(select)-13000(one)-11000(and)-11000(only)-11000(one)-11000(sandwic)]TJ 669 0 TD [(h)-12000(among)-9000(b)-1000(eef,)-12000(c)]TJ 280 0 TD [(heese)-13000(or)-12000(ham)]TJ -1417 50 TD (sandwic)Tj 142 0 TD [(hes.)-22000(On)-15000(the)-16000(V)]TJ 261.9999 0 TD [(eggie)-15000(side,)-15000(w)]TJ 230.0001 0 TD 15 Tc (ew)Tj 62 0 TD 0 Tc (an)Tj 42.9999 0 TD [(t)-14000(t)0(o)-15000(encourage)-16000(Jimm)]TJ 381 0 TD [(y)-12000(t)0(o)-15000(consume)-14000(as)-16000(m)]TJ 343 0 TD (uc)Tj 40 0 TD 13 Tc (hv)Tj 57.0001 0 TD 0 Tc (eggie)Tj -1560 49 TD [(as)-14000(p)-1000(ossible,)-13000(so)-13000(w)]TJ 296.9999 0 TD [(e)-14000(set)-15000(the)]TJ /T12 1 Tf 168.0001 0 TD (-allowzero)Tj /T15 1 Tf 231 0 TD [(option)-13000(to)]TJ /T12 1 Tf 179 0 TD (false)Tj /T15 1 Tf 109.9999 0 TD 17 Tc (.W)Tj 69 0 TD 0 Tc [(e)-13000(also)-13000(set)-14000(the)]TJ /T12 1 Tf 249 0 TD (-allowzero)Tj /T15 1 Tf 232.0001 0 TD (option)Tj -1535 50 TD (to)Tj /T12 1 Tf 52 0 TD (false)Tj /T15 1 Tf 124 0 TD [(so)-15000(that)-15000(Jimm)]TJ 247 0 TD [(y)-12000(cannot)-16000(get)-15000(a)]TJ 261.9999 0 TD (w)Tj 29 0 TD (a)Tj 20.0001 0 TD [(y)-14000(with)-15000(eating)-15000(none)-15000(of)-15000(the)-15000(v)]TJ 500 0 TD [(egetables)-16000(\(see)-17000(program)]TJ -1234 49.9999 TD (1.5\).)Tj ET q 396 0 0 -0.96 125.976 282.636 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 272.82 Tm [(Program)-15000(1.5)]TJ /T15 1 Tf 273 0 TD [(Sp)-1000(ecifying)-14000(Simple)-12000(Selection)-14000(Rules)]TJ ET q 396 0 0 -0.48 125.976 268.956 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 260.34 Tm [(tixSelect)-20000(.sandwich)-20000(-allowzero)-19000(false)-21000(-radio)-21000(true)-21000(-label)-20000("Sandwich)-20000(:")]TJ 0 49 TD [(.sandwich)-20000(add)-21000(beef)]TJ 457 0 TD [(-text)-21000(Beef)]TJ -457 50 TD [(.sandwich)-20000(add)-21000(cheese)-20000(-text)-21000(Cheese)]TJ T* [(.sandwich)-20000(add)-21000(ham)]TJ 457 0 TD [(-text)-21000(Ham)]TJ -457 100 TD [(tixSelect)-20000(.vege)-20000(-allowzero)-20000(false)-21000(-radio)-21000(false)-20000(-label)-21000("Vegetable)-20000(:")]TJ 0 49 TD [(.vege)-21000(add)-21000(bean)]TJ 392 0 TD [(-text)-21000(Bean)]TJ -392 50 TD [(.vege)-21000(add)-21000(carrot)]TJ 392 0 TD [(-text)-21000(Carrot)]TJ -392 50 TD [(.vege)-21000(add)-21000(lettuce)-20000(-text)-21000(Lettuce)]TJ ET q 396 0 0 -0.48 125.976 150.636 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q endstream endobj 108 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 111 0 obj << /Length 8238 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (22)Tj /T9 1 Tf 1022.9999 0 TD [(CHAPTER)-14000(1.)-32000(INTR)]TJ 394.0001 0 TD (ODUCTION)Tj /T8 1 Tf -1417 117 TD (1.5.3)Tj 171 0 TD [(Accessing)-19000(the)-18000(V)]TJ 390 0 TD [(alue)-19000(of)-18000(a)-19000(TixSelect)-17000(Widget)]TJ /T15 1 Tf -561 100 TD (The)Tj /T13 1 Tf 89 0 TD (value)Tj /T15 1 Tf 109 0 TD [(of)-17000(a)-17000(TixSelect)-17000(widget)-17000(is)-17000(a)-17000(list)-17000(of)-17000(the)-17000(names)-17000(of)-16000(the)-18000(button)-17000(sub)]TJ 1148.9999 0 TD [(widgets)-18000(that)-18000(are)]TJ -1346.9999 50 TD (curren)Tj 113 0 TD [(tly)-16000(selected.)-23000(F)]TJ 264 0 TD [(or)-14000(example,)-14000(in)-14000(program)-14000(1.4,)-13000(if)-15000(the)-15000(user)-16000(has)-15000(selected)-17000(the)-15000(apple)-15000(button,)]TJ -377 50 TD [(then)-13000(the)-12000(v)]TJ 182 0 TD [(alue)-12000(of)-11000(the)-13000(TixSelect)-13000(widget)-12000(will)-10000(b)-1000(e)]TJ /T12 1 Tf 646 0 TD (apple)Tj /T15 1 Tf 109.9999 0 TD [(.)-16000(I)0(f)-12000(the)-13000(user)-13000(has)-12000(selected)-14000(b)-1000(oth)-12000(the)-13000(apple)]TJ -937.9999 49.0002 TD [(and)-14000(the)-14000(orange)-14000(buttons,)-14000(then)-15000(the)-14000(v)]TJ 636 0 TD [(alue)-13000(will)-13000(b)-1000(e)-14000(the)-15000(list)]TJ /T12 1 Tf 363 0 TD [("apple)-21000(orange")]TJ /T15 1 Tf 307 0 TD 0 Tw (.)Tj -1244 74 TD [(The)-19000(TixSelect)-18000(widget)-18000(supp)-1000(orts)-20000(same)-17000(set)-19000(of)-17000(options)-18000(as)-18000(the)-19000(TixCon)]TJ 1236 0 TD [(trol)-17000(widget)-18000(for)-17000(y)]TJ 308 0 TD (ou)Tj -1606 50 TD [(to)-16000(access)-17000(its)-16000(v)]TJ 256.9999 0 TD [(alue:)-22000(the)]TJ /T12 1 Tf 181 0 TD (-value)Tj /T15 1 Tf 146.9999 0 TD [(option)-15000(stores)-17000(the)-17000(curren)]TJ 438 0 TD 17 Tc (tv)Tj 53 0 TD 0 Tc [(alue,)-15000(whic)]TJ 183.0001 0 TD [(h)-16000(can)-16000(b)-1000(e)-17000(queried)-16000(and)]TJ -1259 49 TD [(mo)-1000(di\014ed)-16000(using)-18000(the)-18000(cget)-19000(and)-17000(con\014gure)-19000(metho)-1000(ds.)-29000(Y)]TJ 941.9999 0 TD [(ou)-17000(can)-18000(also)-17000(use)-19000(the)]TJ /T12 1 Tf 379 0 TD (-variable)Tj /T15 1 Tf 214.0001 0 TD (option)Tj -1535 50 TD [(to)-20000(sp)-1000(ecify)-21000(a)-21000(global)-19000(v)]TJ 392 0 TD [(ariable)-19000(to)-20000(store)-22000(the)-21000(v)]TJ 405.9999 0 TD [(alue)-20000(of)-20000(the)-21000(TixSelect)-21000(widget.)]TJ 586.0001 0 TD (The)Tj /T12 1 Tf 91.9999 0 TD (-command)Tj /T15 1 Tf -1475.9999 50 TD [(option)-11000(sp)-1000(eci\014es)-14000(a)-12000(TCL)-11000(command)-9000(to)-12000(b)-1000(e)-13000(called)-11000(whenev)]TJ 955 0 TD [(er)-14000(the)-12000(user)-13000(c)]TJ 219.9999 0 TD [(hanges)-13000(the)-12000(selection)-13000(inside)]TJ -1174.9999 50 TD [(a)-19000(TixSelect)-20000(widget.)]TJ 396 0 TD [(This)-20000(command)-17000(is)-19000(called)-20000(with)-19000(one)-20000(argumen)]TJ 805.9999 0 TD [(t:)-28000(the)-20000(new)-20000(v)]TJ 244 0 TD [(alue)-19000(of)-19000(the)]TJ -1445.9999 50 TD [(TixSelect)-13000(widget.)-18000(There)-14000(is)-13000(also)-12000(the)]TJ /T12 1 Tf 644 0 TD (-disablecallback)Tj /T15 1 Tf 362 0 TD [(option)-12000(whic)]TJ 209.9999 0 TD 12 Tc (hy)Tj 56 0 TD 0 Tc [(ou)-13000(can)-13000(use)-14000(to)-12000(con)]TJ 313.0001 0 TD (trol)Tj -1585 48.9998 TD [(whether)-15000(the)-13000(command)-11000(sp)-1000(eci\014ed)-14000(b)]TJ 606 0 TD [(y)-13000(the)]TJ /T12 1 Tf 106 0 TD (-command)Tj /T15 1 Tf 188 0 TD [(option)-12000(should)-13000(b)-1000(e)-14000(called)-13000(when)-13000(the)-14000(v)]TJ 630 0 TD [(alue)-13000(of)]TJ -1530 50 TD [(the)-14000(TixSelect)-15000(c)]TJ 271.9999 0 TD (hanges.)Tj /T8 1 Tf -271.9999 140.0002 TD (1.5.4)Tj 171 0 TD [(Sp)-2000(ecifying)-17000(Complex)-17000(Selection)-17000(Rules)]TJ /T15 1 Tf -171 99.9999 TD [(If)-18000(y)]TJ 67 0 TD [(ou)-18000(w)]TJ 90.9999 0 TD (an)Tj 43.0001 0 TD 18 Tc [(tt)18000(o)-1000(h)18000(a)]TJ 133 0 TD 0 Tc (v)Tj 21 0 TD [(e)-18000(more)-18000(complex)-17000(selection)-19000(rules)-20000(for)-18000(the)-19000(TixSelect)-19000(widget,)-19000(y)]TJ 1094 0 TD [(ou)-18000(can)-19000(use)]TJ -1449 50 TD (the)Tj /T12 1 Tf 72 0 TD (-validatecmd)Tj /T15 1 Tf 276 0 TD [(option.)-19000(This)-14000(option)-14000(w)]TJ 401 0 TD [(orks)-15000(the)-15000(same)-13000(as)-15000(the)]TJ /T12 1 Tf 389.9999 0 TD (-validatecmd)Tj /T15 1 Tf 276 0 TD [(option)-13000(of)-14000(the)]TJ -1414.9999 50 TD (TixCon)Tj 137 0 TD [(trol)-15000(widget)-17000(whic)]TJ 298.9999 0 TD 16 Tc (hw)Tj 68.0001 0 TD 0 Tc [(e)-17000(discusses)-19000(in)-16000(section)-17000(1.2:)-23000(it)-16000(sp)-1000(eci\014es)-18000(a)-17000(command)-14000(to)-16000(b)-1000(e)-17000(called)]TJ -504 50 TD (ev)Tj 39 0 TD [(ery)-15000(time)-12000(the)-15000(user)-15000(attempts)-13000(to)-14000(c)]TJ 567.9999 0 TD [(hange)-14000(the)-15000(selection)-14000(inside)-14000(a)-14000(TixSelect)-14000(widget.)]TJ -544.9999 73 TD [(In)-17000(the)-18000(example)-16000(program)-15000(1.6,)-17000(the)-18000(pro)-1000(cedure)]TJ /T12 1 Tf 819 0 TD (TwoMax)Tj /T15 1 Tf 147 0 TD [(will)-16000(b)-1000(e)-18000(called)-17000(ev)]TJ 302 0 TD [(ery)-17000(time)-16000(the)-18000(user)]TJ -1330 50 TD [(tries)-13000(to)-13000(c)]TJ 157.9999 0 TD [(hange)-13000(the)-13000(selection)-14000(of)-12000(the)]TJ /T12 1 Tf 473.0001 0 TD (.fruits)Tj /T15 1 Tf 165 0 TD (widget.)Tj /T12 1 Tf 150 0 TD (TwoMax)Tj /T15 1 Tf 142.9999 0 TD [(limits)-11000(the)-13000(maxim)]TJ 310.0001 0 TD [(um)-9000(n)]TJ 89.9999 0 TD (um)Tj 58.0001 0 TD 1 Tc [(be)1000(r)-11000(o)1000(f)]TJ -1547 50 TD 0 Tc [(fruits)-12000(that)-13000(the)-12000(user)-14000(to)-12000(c)]TJ 418.9999 0 TD [(ho)-1000(ose)-13000(to)-12000(b)-1000(e)-13000(2)-12000(b)]TJ 271.9999 0 TD [(y)-12000(alw)]TJ 96.0001 0 TD (a)Tj 19.9999 0 TD [(ys)-11000(truncating)-12000(the)-13000(v)]TJ 340 0 TD [(alue)-12000(of)-12000(the)-12000(TixSelect)-13000(widget)]TJ -1146.9999 50 TD [(to)-16000(ha)]TJ 96 0 TD (v)Tj 21 0 TD [(e)-15000(n)0(o)-16000(more)-15000(than)-16000(t)]TJ 313 0 TD (w)Tj 29 0 TD [(o)-15000(items.)-23000(If)-16000(y)]TJ 234 0 TD [(ou)-15000(run)-16000(this)-16000(program,)-15000(y)]TJ 422 0 TD [(ou)-15000(will)-15000(\014nd)-16000(out)-15000(that)-16000(y)]TJ 413 0 TD [(ou)-16000(can)]TJ -1528 49 TD (nev)Tj 62 0 TD [(er)-15000(select)-15000(a)-14000(third)-14000(fruit)-13000(after)-14000(y)]TJ 513 0 TD [(ou)-14000(ha)]TJ 100.9999 0 TD (v)Tj 21.0001 0 TD [(e)-13000(select)-16000(t)]TJ 159.9999 0 TD (w)Tj 29.0001 0 TD [(o)-13000(fruits.)]TJ ET q 396 0 0 -0.96 125.976 362.076 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 352.26 Tm [(Program)-15000(1.6)]TJ /T15 1 Tf 273 0 TD [(Sp)-1000(ecifying)-14000(More)-14000(Complex)-12000(Selection)-15000(Rules)]TJ ET q 396 0 0 -0.48 125.976 348.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 136.56 339.78 Tm [(tixSelect)-20000(.fruits)-20000(-label)-20000("Fruits:)-21000(")-21000(-radio)-21000(false)-20000(-validatecmd)-20000(TwoMax)]TJ 0 49.0001 TD [(.fruits)-20000(add)-21000(apple)]TJ 414 0 TD [(-text)-20000(Apple)]TJ 282.9999 0 TD [(-width)-21000(6)]TJ -696.9999 50 TD [(.fruits)-20000(add)-21000(orange)-21000(-text)-20000(Orange)-21000(-width)-21000(6)]TJ T* [(.fruits)-20000(add)-21000(banana)-21000(-text)-20000(Banana)-21000(-width)-21000(6)]TJ T* [(pack)-21000(.fruits)]TJ 0 98.9999 TD [(proc)-21000(TwoMax)-20000({value})-20000({)]TJ 65.0001 50 TD [(if)-21000({[llength)-20000($value])-21000(>)-21000(2)0(})-22000({)]TJ 65 50.0001 TD [(return)-21000([lrange)-20000($value)-21000(0)-21000(1)0(])]TJ -65 50 TD [(})-22000(else)-21000({)]TJ 65 50 TD [(return)-21000($value)]TJ -65 49 TD (})Tj -65.0001 50 TD (})Tj ET q 396 0 0 -0.48 125.976 183.756 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q endstream endobj 112 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 114 0 obj << /Length 6922 >> stream BT /T16 1 Tf 0.24 0 0 -0.24 126 627.54 Tm 0 g /GS1 gs 0 Tc [(Chapter)-31000(2)]TJ /T11 1 Tf 0 231 TD (Con)Tj 204 0 TD (tainer)Tj 337 0 TD (Widgets)Tj /T15 1 Tf -541 239 TD [(In)-15000(addition)-15000(to)-15000(pro)]TJ 330 0 TD [(viding)-14000(some)-14000(nice-lo)-1000(oking)-14000(in)]TJ 498 0 TD [(terface)-16000(elemen)]TJ 259.9999 0 TD [(ts,)-15000(Tix)-15000(o\013ers)-16000(some)-15000(useful)-15000(w)]TJ 504.0001 0 TD 0 Tw (a)Tj 20 0 TD (ys)Tj -1612 49.9998 TD [(to)-12000(organize)-13000(the)-13000(elemen)]TJ 406 0 TD [(ts)-12000(that)-12000(y)]TJ 153 0 TD [(ou)-12000(create.)-19000(It)-13000(do)-1000(es)-13000(this)-12000(b)]TJ 431 0 TD [(y)-13000(pro)]TJ 94 0 TD (viding)Tj /T13 1 Tf 123.9999 0 TD (c)Tj 17 0 TD [(ontainer)-13000(widgets)]TJ /T15 1 Tf 296 0 TD [(,)-12000(whic)]TJ 105.9999 0 TD (h)Tj -1626.9998 50.0001 TD [(are)-14000(widgets)-14000(designed)-15000(to)-14000(con)]TJ 500 0 TD [(tain)-13000(whatev)]TJ 213.9999 0 TD [(er)-15000(y)]TJ 70.0001 0 TD [(ou)-13000(w)]TJ 85.9999 0 TD (an)Tj 43 0 TD [(t)-14000(t)0(o)-13000(put)-15000(in)]TJ 191 0 TD [(to)-13000(them.)]TJ -1041.9999 73 TD (Di\013eren)Tj 142 0 TD [(t)-18000(con)]TJ 95 0 TD [(tainer)-17000(widgets)-18000(ha)]TJ 320 0 TD (v)Tj 21 0 TD [(e)-16000(di\013eren)]TJ 166.9999 0 TD [(t)-19000(p)-1000(olicies)-16000(as)-18000(to)-16000(ho)]TJ 335 0 TD [(w)-17000(they)-18000(arrange)-17000(the)-18000(widgets)]TJ -1141.9999 50 TD [(inside)-18000(them.)-31000(In)-19000(this)-18000(c)]TJ 417 0 TD [(hapter,)-20000(w)]TJ 177.9999 0 TD [(e'll)-17000(talk)-18000(ab)-1000(out)-19000(TixNoteBo)-1000(ok,)-18000(whic)]TJ 640 0 TD [(h)-19000(arranges)-19000(its)-18000(sub)]TJ 335.9999 0 TD (wid-)Tj -1570.9998 50 TD [(gets)-15000(using)-14000(a)-15000(noteb)-1000(o)-1000(o)0(k)-14000(metaphor,)-13000(TixP)]TJ 702 0 TD (anedWindo)Tj 205.9999 0 TD [(w,)-13000(whic)]TJ 137 0 TD [(h)-15000(arranges)-15000(its)-14000(sub)]TJ 324 0 TD [(widgets)-15000(in)-14000(non-)]TJ -1368.9999 50 TD (o)Tj 20 0 TD (v)Tj 20.9999 0 TD [(erlapping)-14000(horizon)]TJ 316 0 TD [(tal)-14000(or)-14000(v)]TJ 135 0 TD [(ertical)-15000(panes,)-15000(and)-15000(a)-14000(family)-12000(of)-14000(\\Scrolled)-15000(Widgets",)-14000(whic)]TJ 1005.9999 0 TD [(h)-15000(attac)]TJ 128.9999 0 TD (h)Tj -1626.9998 50 TD [(scrollbars)-14000(to)-14000(their)-14000(sub)]TJ 396 0 TD (widgets.)Tj /T14 1 Tf -396 168.9999 TD (2.1)Tj 153 0 TD [(TixNoteBo)-2000(ok)]TJ /T15 1 Tf -153 116 TD [(When)-13000(y)]TJ 140.9999 0 TD [(our)-13000(need)-14000(to)-13000(put)-13000(a)-13000(lot)-13000(of)-12000(information)-10000(in)]TJ 693.9999 0 TD [(to)-13000(y)]TJ 71.0001 0 TD [(our)-13000(in)]TJ 106.9999 0 TD [(terface,)-13000(y)]TJ 166 0 TD [(ou)-13000(ma)]TJ 113.0001 0 TD [(y)-11000(\014nd)-13000(out)-13000(that)-13000(y)]TJ 297.9998 0 TD (our)Tj -1589.9998 50 TD (windo)Tj 107.9999 0 TD [(w)-14000(has)-15000(to)-14000(gro)]TJ 227 0 TD 14 Tc [(wi)14000(n)]TJ 78 0 TD 0 Tc [(tolerably)-14000(big)-14000(in)-14000(order)-15000(to)-15000(hold)-14000(all)-13000(the)-15000(information.)-18000(Ha)]TJ 973.0001 0 TD [(ving)-13000(a)-15000(windo)]TJ 234.9998 0 TD (w)Tj -1620.9998 50 TD [(that's)-16000(10000)-14000(pixels)-16000(wide)-16000(and)-15000(5000)-15000(pixels)-16000(high)-15000(do)-1000(esn't)-16000(seem)-16000(to)-16000(b)-1000(e)-16000(the)-17000(p)-1000(erfect)-17000(solution.)-23000(Of)]TJ 0 49.0001 TD [(course,)-15000(y)]TJ 160 0 TD [(ou)-13000(can)-14000(\\c)]TJ 171 0 TD [(hop)-14000(up")-13000(y)]TJ 182 0 TD [(our)-14000(big)-13000(windo)]TJ 250.9999 0 TD 13 Tc [(wi)13000(n)]TJ 77 0 TD 0 Tc [(to)-13000(a)-13000(set)-15000(of)-13000(smaller)-13000(dialog)-12000(b)-1000(o)]TJ 506 0 TD [(xes,)-13000(but)-14000(the)-15000(user)]TJ -1346.9999 49.9999 TD [(will)-12000(most)-13000(lik)]TJ 225 0 TD [(ely)-13000(\014nd)-14000(it)-13000(imp)-1000(ossible)-12000(to)-14000(manage)-12000(20)-14000(di\013eren)]TJ 782.9999 0 TD [(t)-15000(dialog)-12000(b)-1000(o)]TJ 197.0001 0 TD [(xes)-14000(on)-14000(their)-14000(desktop.)]TJ -1143 74.0001 TD [(The)-20000(TixNoteBo)-1000(ok)-20000(\(\014g)-19000(2.1\))-19000(widget)-19000(comes)-19000(in)]TJ 824 0 TD [(to)-19000(rescue.)]TJ 213 0 TD [(It)-20000(allo)]TJ 116 0 TD [(ws)-18000(y)]TJ 84.9999 0 TD [(ou)-19000(to)-20000(pac)]TJ 181 0 TD [(k)-19000(a)-19000(large)]TJ -1480.9999 50 TD (in)Tj 34 0 TD [(terface)-16000(in)]TJ 170 0 TD [(to)-15000(manageable)-14000(\\pages")-16000(using)-16000(a)-15000(noteb)-1000(o)-1000(o)0(k)-16000(metaphor:)-21000(it)-15000(con)]TJ 1077.9999 0 TD [(tains)-16000(m)]TJ 139 0 TD [(ultiple)-14000(pages)]TJ -1420.9999 49 TD [(with)-15000(an)]TJ 139 0 TD [(ything)-14000(y)]TJ 151.9999 0 TD [(ou)-15000(w)]TJ 88 0 TD (an)Tj 43 0 TD [(t)-15000(o)0(n)-15000(them,)-14000(displa)]TJ 315.0001 0 TD [(ys)-15000(one)-15000(at)-15000(a)-15000(time,)-14000(and)-15000(attac)]TJ 499 0 TD [(hes)-16000(a)-15000(tab)-15000(to)-15000(eac)]TJ 292 0 TD [(h)-16000(page)]TJ -1528 50 TD [(so)-14000(the)-14000(user)-15000(can)-15000(bring)-13000(it)-14000(forw)]TJ 516 0 TD [(ard)-13000(with)-14000(a)-13000(single)-14000(clic)]TJ 377 0 TD [(k)-13000(o)0(n)-14000(the)-14000(tab.)]TJ /T8 1 Tf -893 147.9999 TD (2.1.1)Tj 171 0 TD [(Adding)-19000(P)]TJ 234 0 TD [(ages)-20000(to)-18000(a)-19000(TixNoteBo)-2000(ok)]TJ /T15 1 Tf -405 102 TD [(The)-18000(example)-16000(program)-17000(in)-17000(\014gure)-18000(2.1)-17000(creates)-19000(the)-18000(TixNoteBo)-1000(ok)-18000(widget)-17000(sho)]TJ 1343 0 TD [(wn)-18000(in)-17000(\014gure)-18000(2.1.)]TJ -1343 50 TD [(In)-16000(the)-17000(\014rst)-17000(three)-18000(lines,)-16000(w)]TJ 462.9999 0 TD [(e)-16000(create)-18000(the)-17000(noteb)-1000(o)-1000(o)0(k)-16000(widget)-16000(and)-16000(t)]TJ 649.9999 0 TD (w)Tj 29 0 TD [(o)-16000(pages)-17000(inside)-16000(it.)-24000(While)-16000(w)]TJ 490.0001 0 TD (e)Tj -1632 50 TD [(create)-17000(the)-15000(pages,)-16000(w)]TJ 352 0 TD [(e)-15000(also)-15000(set)-16000(the)-16000(lab)-1000(els)-15000(on)-15000(the)-15000(tabs)-16000(asso)-1000(ciated)-16000(with)-15000(eac)]TJ 948.9999 0 TD [(h)-15000(page)-15000(and)-15000(use)-16000(the)]TJ /T12 1 Tf -1300.9999 50 TD (-underline)Tj /T15 1 Tf 231.9999 0 TD [(option)-13000(to)-14000(indicate)-13000(the)-15000(k)]TJ 429.0001 0 TD [(eyb)-1000(oard)-14000(accelerator)-15000(for)-14000(eac)]TJ 488.9999 0 TD [(h)-14000(page.)]TJ -1087.9999 73 TD (Eac)Tj 66 0 TD [(h)-16000(time)-14000(w)]TJ 164 0 TD [(e)-15000(create)-17000(a)-15000(page)-15000(in)-14000(the)-16000(noteb)-1000(o)-1000(o)0(k)-16000(using)-14000(the)]TJ /T12 1 Tf 777.9999 0 TD (add)Tj /T15 1 Tf 81 0 TD [(metho)-1000(d,)-14000(a)-15000(frame)-14000(sub)]TJ 379.0001 0 TD (widget)Tj -726.0001 105 TD (23)Tj ET endstream endobj 115 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T11 21 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R /T16 7 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 116 0 obj << /Type /XObject /Subtype /Image /Name /Im11 /Width 321 /Height 207 /BitsPerComponent 8 /ColorSpace 117 0 R /Length 2565 /Filter /FlateDecode >> stream H‰ì— ‚‚0 E3Rñþ7¡[Ò%,mØÌw§(Ï×M[þ¸¼v÷ó3,xM_õ×|<³ÿù¯½ÿ×pÞÖ2ÿË ³\…ßæ·`púÚñš :ÏnË_¯Ù¼ÓÀïÁvxÙÁ⦰ïð¬²#.‘à ¿Ñ?…½îP%G4Üu¿t20]k¿ŠF)DH÷¢Z‘=¢‚ÆÄûÄMÝj`r7ÿ2´?FDQ§À”_w€è>“n±Í@zÖ™45°.`i/®E*Ñ#®d iÕF³>\30Cv.ŒG\h$&}xÛ,œ ‚ÔÀL¼ÕSHí9&Û‚î“ì< c}‚oxIÂ/b²Ã/ð¸uàSsâ“È#¢¶F lË¢ù†H²``‚P L³d`¡<3ð[VzýKŸ÷ªÝçðW)~ÿ›¶ß¢bjåOKõ>k;‚¶Vö§YÊßßÌñ»ýº8 Ƙw÷˜9]Ov™L~3œú´?{Ó]OvLc 8ÏBF …ó){÷j“Yxi_Ws.F0Y2­ÇŽçÇn§êÜ@‰«< c @üÌ¿bÒšä¨`¡úB+éÉÖvDXW,Ö܇yi€; ¥åJôÿ Ï»z-w2¦êáá D·ézé÷cÚ‚ÛÆJ®˜ÔD÷M¢*î;øq pšpÍx2;ÃÆ7 †¨RR+ vI–ªWÞ†“ òØÞ@4A`9Œ‰Fúcã™j‰¬)ûxºôd=´†10éÁ”àJôfMzË ‚„{®-Cý5x—¬/‚¶0–z0)F[*_Úƒs€†öË •“_ìÞÒû)$Ƭ˜OD®_çkV,L!tÞMGÃ)`aÐL5.]ŸL€ÃîÔ ¤C Ò€ºCCŠ‹˜*À0º¥¤ðBçò™'‘nIÒ­'ëvªaŸDºåÑÕÀ¦¨QsŒïçæϾK¹ŒÇøØŒã1>6£Ø5°1j`cÔÀƨQ£6F lŒØ5°1j`cÔÀƨQ£6F lŒXɇ©wwG‘ pdpoEøMf à®Á6àî~ºç퀽ۀ»(ÀT÷pÏ6ÐöƒmG¸¶/ê‚ýü¦@t ¶ânZ Ðq‹”5Ð $›ZWx@YÁ¯ü¤æ·PÙº:þÓöä¬nh˜|kH×…µˆèO"lkï HŽ©ì7ŽëŠHî¹ü&^Ö öà÷ÙD@Ú@ "–ø©Ö¬éÂ6p»ðÛPÒÀ°")Ä•ÈÖp¦íGäúðóc sƒÇXƒ‘Cݰ¿à‰c &“M"å-0žCà%žDˆZ»—1x&b–1ö†»4~À=ûID4`ׄ…´ûµN~‘(@÷ îè¯Á6@ lxoß1?d ? pŒápsÅ‚ù=ÙÀÓ£6F lŒØ5°1j`cÔÀJÒua-w7p‰¡Ÿ¼áåÀ]ƒmÀÝ ütÏÛ{ ¶w7P €%¨îà hõÆŸø ©èZRÚÉ{M@˜Þß|ж ºÛ€½Vî>©µòÜkvy€1p ýö0€ ¬Ü½8@øœ pçhmóÎÙ.:ÿAÜCîÚîô_L˜å|™+BMÿ WDá#® 9€;gáùFŒˆb¦}щuGJˆÖLê$2Ïá#p\°Å@0”ÕæòÖ|ÁíÏÁu¸6m"2€¸?àÞu`h Ö’mz( ÷>‰„9àd€ 1?±'< €Gÿ:@4‰I—âJ뀟¦ÅJ?‰TÆA°T[$Z­¤¾¥u¨à’O"~—š……BúhÒaó€Òî–3°w|§¥%lDp×`p%ÉÚÇ,! Ð_ƒmÀ… Ü‘K¼ŽÛ3Žo˜2P‚Ÿ8Æp ¸¹bÁüžlàéQ£6F lŒØ5°1j`%麰–»8ŠÄP€O^Šð rà®Á6àî~ºç퀽ۀ»(ÀT÷pÅ W¨îÇÕÀ0UËG®HÓû›Ú¶D×`°ßÀù6‚qýÖ`²Ëœˆé·‡Üo ³„Ï™› ŸtkH— 5ÁYKìõe® 5MüoÞNmÂG ]r› Œ÷‡ßè #…x rÐ/¸N"ó >Çõ÷ ù^ì RyõÜþ\€kÓÁ@,ý—_Øa Lí; Mï1e`‡YøT€ 1¿fa?Ø™>y€hIB5Ó:à§iq€G<‰Ä ZƘȂÇÇ”ø;„ši*·ä“ˆ×Åfa™>štØ<`Ç„…´ûÅ ìßii Q€Ü5Ø\ÉÀ°®Œ GÈô×`p!wä¯càöŒã[ æ‡ ”àgŽ1\nn X0¿'xzÔÀƨQ£6F lŒXIº.¬åîŽ"1à“×"ü£¸k° ¸»Ÿîy{€`¯Á6àîʰÕÀ}ÁËèá«»@°Ÿßà­/ß]ƒiÛyÎôÖœ*U*Î=7÷þ …žc #²JAÃDÌÀƒ ^Ãb ®+ÏFâ?ZU}!ñ±¡kH×…µX‡ÉÀá›ã D=ð"W€ß+¶ãz€¯ ÝÔ…ÿþÎ1ÐPf¤€ÀËà @êá€k38exà˜va˜·c¾ÀCgáb6ë þé¬S±µŒ(Ì}\af¦ã,DÔú¼ú:0nã$Bæe_ÉDìÜ$Ò àžD9²Œ ƒ¡!³ Ð?ØoÚwÑ'‘“›¿…ýÏ€³×÷Ïÿßß³9 endstream endobj 119 0 obj << /Length 5728 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (24)Tj /T9 1 Tf 888.9999 0 TD [(CHAPTER)-14000(2.)-32000(CONT)]TJ 408 0 TD [(AINER)-14000(WIDGETS)]TJ ET q 224.712 0 0 144.864 211.44 573.02 cm /Im11 Do Q BT /T15 1 Tf 0.24 0 0 -0.24 241.2 550.98 Tm [(Figure)-14000(2.1:)-17000(The)-15000(TixNoteBo)-1000(ok)-13000(Widget)]TJ -480 141.9998 TD [(is)-14000(created)-17000(for)-14000(us)-15000(automatically)]TJ 553.9999 0 TD [(.)-17000(This)-15000(frame)-13000(sub)]TJ 303 0 TD [(widget)-15000(has)-15000(the)-15000(same)-13000(name)-14000(as)-14000(the)-16000(page)-14000(\(the)]TJ -856.9999 50 TD [(\014rst)-15000(parameter)-14000(passed)-15000(to)-14000(the)]TJ /T12 1 Tf 539 0 TD (add)Tj /T15 1 Tf 80 0 TD [(metho)-1000(d\).)-18000(W)]TJ 224 0 TD [(e)-13000(can)-15000(use)-15000(the)]TJ /T12 1 Tf 250.9999 0 TD (subwidget)Tj /T15 1 Tf 211.0001 0 TD [(metho)-1000(d)-13000(t)0(o)-14000(\014nd)-14000(out)]TJ -1305 50 TD [(the)-14000(pathname)-13000(of)-13000(this)-14000(frame)-12000(sub)]TJ 569.9999 0 TD [(widget)-14000(and)-13000(pac)]TJ 275 0 TD 14 Tc [(ke)14000(v)]TJ 75 0 TD 0 Tc [(erything)-14000(w)]TJ 194 0 TD 14 Tc (ew)Tj 61 0 TD 0 Tc (an)Tj 43.0001 0 TD [(t)-13000(t)0(o)-14000(displa)]TJ 185.9999 0 TD [(y)-12000(o)0(n)-14000(the)-14000(page)]TJ -1403.9999 50.0001 TD (in)Tj 34 0 TD [(to)-15000(this)-16000(frame)-15000(widget.)-24000(Lines)-16000(4-10)-15000(of)-15000(program)-15000(2.1)-14000(sho)]TJ 957.9999 0 TD [(ws)-17000(ho)]TJ 106 0 TD [(w)-15000(t)0(o)-16000(create)-17000(the)-17000(widgets)-16000(inside)]TJ -1097.9999 50 TD [(the)-14000(\\Hard)-14000(Disk")-13000(page.)-18000(Creating)-14000(the)-15000(widgets)-14000(inside)-14000(the)-14000(\\Net)]TJ 1093 0 TD 0 Tw (w)Tj 28.9999 0 TD [(ork")-14000(page)-14000(will)-12000(b)-1000(e)-15000(similar.)]TJ ET q 396 0 0 -0.96 125.976 452.796 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 442.98 Tm [(Program)-15000(2.1)]TJ /T15 1 Tf 273 0 TD [(Using)-14000(The)-14000(TixNoteBo)-1000(ok)-14000(Widget)]TJ ET q 396 0 0 -0.48 125.976 439.116 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 430.5 Tm [(tixNoteBook)-19000(.n)]TJ 0 50 TD [(.n)-21000(add)-21000(hd)]TJ 239.9999 0 TD [(-label)-20000("Hard)-21000(Disk")-21000(-underline)-19000(0)]TJ -239.9999 50 TD [(.n)-21000(add)-21000(net)-22000(-label)-20000("Network")]TJ 654 0 TD [(-underline)-19000(0)]TJ -654 99 TD [(set)-21000(frame)-21000([.n)-21000(subwidget)-20000(hd])]TJ 0 50 TD [(tixControl)-20000($frame.access)]TJ 587.9999 0 TD [(-label)-21000("Access)-20000(Time:")]TJ -587.9999 50 TD [(tixControl)-20000($frame.write)]TJ 587.9999 0 TD [(-label)-21000("Write)-20000(Throughput:")]TJ -587.9999 50 TD [(tixControl)-20000($frame.read)]TJ 587.9999 0 TD [(-label)-21000("Read)-21000(Througput:")]TJ -587.9999 48.9999 TD [(tixControl)-20000($frame.capacity)-18000(-label)-21000("Capacity:")]TJ 0 50.0001 TD [(pack)-21000($frame.access)-19000($frame.write)-19000($frame.read)-20000($frame.capacity)-18000(\\)]TJ 86.9999 50 TD [(-side)-21000(top)-21000(-fill)-21000(x)]TJ ET q 396 0 0 -0.48 125.976 296.796 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T8 1 Tf 0.24 0 0 -0.24 126 250.74 Tm (2.1.2)Tj 171 0 TD [(Keyb)-2000(oard)-18000(Accelerators)]TJ /T15 1 Tf -171 104.0001 TD [(Note)-12000(that)-11000(in)-11000(line)-10000(2-3)-11000(of)-10000(program)-10000(2.1,)-10000(w)]TJ 686 0 TD 12 Tc [(eh)12000(a)]TJ 73 0 TD 0 Tc (v)Tj 21 0 TD [(e)-11000(indicated)-11000(the)-12000(k)]TJ 295.9999 0 TD [(eyb)-1000(oard)-11000(accelerators)-13000(for)-11000(the)-11000(t)]TJ 524.0001 0 TD (w)Tj 28.9998 0 TD (o)Tj -1628.9998 50 TD [(pages)-12000(using)-12000(the)]TJ /T12 1 Tf 287 0 TD (-underline)Tj /T15 1 Tf 230 0 TD [(option.)-17000(The)-12000(v)]TJ 248 0 TD [(alue)-12000(of)-11000(this)-12000(option)-11000(is)-12000(the)-12000(p)-1000(osition)-12000(of)-11000(the)-13000(c)]TJ 734.9999 0 TD (haracter)Tj -1499.9999 50 TD [(to)-18000(b)-1000(e)-18000(underlined)-18000(in)-18000(the)-18000(string,)-18000(where)-19000(zero)-19000(represen)]TJ 949 0 TD [(ts)-20000(the)-19000(\014rst)-18000(c)]TJ 233.9999 0 TD [(haracter.)-31000(When)-18000(the)-19000(user)]TJ -1182.9999 50 TD (presses)Tj /T12 1 Tf 140.9999 0 TD ()Tj /T15 1 Tf 168.0001 0 TD (or)Tj /T12 1 Tf 53 0 TD ()Tj /T15 1 Tf 190 0 TD [(the)-16000(\\Net)]TJ 157.9999 0 TD (w)Tj 29 0 TD [(ork")-16000(page)-15000(will)-15000(b)-1000(e)-16000(activ)]TJ 420.0001 0 TD [(ated;)-16000(on)-16000(the)-16000(other)-16000(hand,)-16000(if)]TJ -1159 50 TD [(he)-13000(presses)]TJ /T12 1 Tf 190.9999 0 TD ()Tj /T15 1 Tf 165.0001 0 TD (or)Tj /T12 1 Tf 50 0 TD ()Tj /T15 1 Tf 186 0 TD [(the)-13000(\\Hard)-12000(Disk")-12000(page)-12000(will)-11000(b)-1000(e)-13000(activ)]TJ 623 0 TD [(ated.)-17000(The)-13000(TixNoteBo)-1000(ok)]TJ -1215 50 TD [(widget)-17000(will)-16000(automatically)-13000(create)-19000(the)-18000(k)]TJ 705 0 TD [(eyb)-1000(oard)-17000(bindings)-16000(for)-17000(these)-18000(accelerators)-19000(for)-17000(us,)-18000(in)-16000(a)]TJ -705 48.9999 TD (w)Tj 29 0 TD (a)Tj 20 0 TD [(y)-12000(similar)-10000(to)-13000(what)-12000(the)-14000(men)]TJ 468 0 TD [(u)-11000(widget)-13000(do)-1000(es,)-13000(so)-13000(there)-14000(is)-12000(no)-13000(need)-13000(to)-13000(set)-13000(the)-14000(k)]TJ 822.9999 0 TD [(eyb)-1000(oard)-13000(bindings)]TJ -1339.9999 50 TD (ourself.)Tj ET endstream endobj 120 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T15 6 0 R >> /XObject << /Im11 116 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS9 117 0 R >> >> endobj 117 0 obj [/Indexed /DeviceRGB 7 121 0 R] endobj 121 0 obj << /Filter /ASCII85Decode /Length 34 >> stream !!!#Qf?0q^J6Q)E\[f9Ns8R"UDjXm=~> endstream endobj 123 0 obj << /Length 7302 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(2.1.)-31000(TIXNOTEBOOK)]TJ /T15 1 Tf 1607.9998 0 TD (25)Tj /T8 1 Tf -1607.9998 117 TD (2.1.3)Tj 171 0 TD (Dela)Tj 110 0 TD [(ying)-18000(the)-18000(Creation)-19000(of)-18000(New)-19000(P)]TJ 680 0 TD (ages)Tj /T15 1 Tf -961 100 TD [(If)-15000(y)]TJ 64 0 TD [(our)-14000(noteb)-1000(o)-1000(o)0(k)-15000(con)]TJ 317 0 TD [(tains)-15000(man)]TJ 181.9999 0 TD [(y)-13000(complicated)-14000(pages,)-15000(it)-14000(ma)]TJ 491 0 TD [(y)-13000(tak)]TJ 93 0 TD [(e)-15000(quite)-15000(a)-15000(while)-14000(to)-15000(create)-16000(all)]TJ -1146.9999 50 TD [(widgets)-13000(inside)-12000(these)-13000(pages)-13000(and)-12000(y)]TJ 581 0 TD [(our)-12000(program)-11000(will)-11000(probably)-11000(freezes)-15000(for)-12000(a)-11000(few)-13000(seconds)-14000(when)-12000(it)]TJ -581 50 TD [(p)-1000(ops)-15000(up)-15000(the)-16000(noteb)-1000(o)-1000(o)0(k)-15000(for)-14000(the)-16000(\014rst)-16000(time.)-19000(T)]TJ 778.9999 0 TD 15 Tc (oa)Tj 56 0 TD 0 Tc 0 Tw (v)Tj 21.0001 0 TD [(oid)-13000(em)]TJ 122 0 TD [(barrassing)-14000(momen)]TJ 331.9999 0 TD [(ts)-13000(lik)]TJ 90 0 TD [(e)-14000(this,)-15000(w)]TJ 155.0001 0 TD [(e)-15000(can)]TJ -1555 49.0002 TD [(use)-15000(the)-14000(\\dela)]TJ 237 0 TD (y)Tj 21 0 TD [(ed)-14000(page)-14000(creation")-14000(feature)-14000(of)-13000(the)-15000(TixNoteBo)-1000(ok)-14000(widget.)]TJ -196 74 TD [(When)-17000(w)]TJ 153 0 TD [(e)-17000(create)-18000(a)-16000(page)-16000(using)-17000(the)]TJ /T12 1 Tf 482 0 TD (add)Tj /T15 1 Tf 81.9999 0 TD [(metho)-1000(d,)-16000(w)]TJ 195.0001 0 TD [(e)-16000(can)-17000(sp)-1000(ecify)-17000(the)-17000(optional)-15000(parameter)]TJ /T12 1 Tf -974 50 TD (-createcmd)Tj /T15 1 Tf 231.9999 0 TD [(so)-14000(that)-14000(w)]TJ 170.0001 0 TD [(e)-14000(only)-14000(need)-15000(to)-14000(create)-15000(the)-15000(page)-14000(when)-14000(the)-15000(user)-15000(w)]TJ 860 0 TD (an)Tj 43 0 TD [(ts)-14000(to)-14000(see)-15000(it.)-18000(This)-14000(is)]TJ -1305 49 TD [(illustrated)-14000(in)-13000(program)-12000(2.2:)]TJ ET q 396 0 0 -0.96 125.976 594.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 584.58 Tm [(Program)-15000(2.2)]TJ /T15 1 Tf 273 0 TD (Dela)Tj 82 0 TD (y)Tj 21 0 TD [(ed)-14000(P)]TJ 81.9999 0 TD [(age)-14000(Creation)]TJ ET q 396 0 0 -0.48 125.976 580.716 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 572.1 Tm [(tixNoteBook)-19000(.n)]TJ 0 50 TD [(.n)-21000(add)-21000(hd)]TJ 239.9999 0 TD [(-label)-20000("Hard)-21000(Disk")-21000(-underline)-19000(0)-22000(-createcmd)-20000(CreateHd)]TJ -239.9999 49 TD [(.n)-21000(add)-21000(net)-22000(-label)-20000("Network")]TJ 654 0 TD [(-underline)-19000(0)-22000(-createCmd)-20000(CreateNet)]TJ -654 100 TD [(proc)-21000(CreateHd)-20000({frame})-20000({)]TJ 86.9999 50 TD [(tixControl)-20000($frame.access)]TJ 587.9999 0 TD [(-label)-21000("Access)-20000(Time:")]TJ -587.9999 49.9998 TD [(tixControl)-20000($frame.write)]TJ 587.9999 0 TD [(-label)-21000("Write)-20000(Throughput:")]TJ -587.9999 49.0001 TD [(tixControl)-20000($frame.read)]TJ 587.9999 0 TD [(-label)-21000("Read)-21000(Througput:")]TJ -587.9999 50 TD [(tixControl)-20000($frame.capacity)-18000(-label)-21000("Capacity:")]TJ T* [(pack)-21000($frame.access)-19000($frame.write)-19000($frame.read)-20000($frame.capacity)-19000(\\)]TJ 87.0001 50 TD [(-side)-21000(top)-21000(-fill)-21000(x)]TJ -174 50 TD (})Tj 0 98.9999 TD [(proc)-21000(CreateNet)-20000({frame})-20000({)]TJ 86.9999 50 TD (...)Tj -86.9999 50 TD (})Tj ET q 396 0 0 -0.48 125.976 380.076 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 140.88 359.22 Tm [(In)-17000(line)-15000(2)-16000(o)0(f)-16000(program)-15000(2.2,)-15000(w)]TJ 500.9999 0 TD [(e)-17000(use)-17000(the)]TJ /T12 1 Tf 183.0001 0 TD (-createcmd)Tj /T15 1 Tf 234 0 TD [(option)-16000(to)-16000(sp)-1000(ecify)-17000(that)-16000(the)-17000(pro)-1000(cedure)]TJ /T12 1 Tf -980 50 TD (CreateHd)Tj /T15 1 Tf 186 0 TD [(should)-12000(b)-1000(e)-13000(called)-11000(when)-13000(the)-12000(\\Hard)-12000(Disk")-12000(page)-12000(needs)-13000(to)-12000(b)-1000(e)-12000(created.)]TJ /T12 1 Tf 1184.9999 0 TD (CreateHd)Tj /T15 1 Tf 186.9999 0 TD (tak)Tj 58 0 TD (es)Tj -1615.9998 49.0001 TD [(one)-13000(argumen)]TJ 231.9999 0 TD [(t,)-11000(the)-14000(frame)-11000(sub)]TJ 286.0001 0 TD [(widget)-13000(of)-12000(the)-14000(page.)-17000(As)-14000(w)]TJ 451.9999 0 TD [(e)-13000(can)-13000(see,)-13000(program)-11000(program)-12000(2.2)-11000(is)-13000(not)]TJ -969.9999 50 TD (v)Tj 21 0 TD [(ery)-14000(di\013eren)]TJ 203 0 TD [(t)-16000(than)-14000(program)-12000(2.1,)-13000(except)-16000(no)]TJ 548 0 TD 13 Tc (ww)Tj 71.9999 0 TD 0 Tc [(e)-15000(can)-14000(issue)-15000(less)-15000(commands)-11000(during)-14000(the)-15000(set-up)]TJ -843.9999 50 TD [(of)-13000(the)-15000(NoteBo)-1000(ok)-14000(widget)-14000(and)-14000(the)-14000(in)]TJ 633 0 TD [(terface)-14000(can)-15000(b)-1000(e)-14000(started)-15000(up)-14000(more)-13000(quic)]TJ 645.9999 0 TD (kly)Tj 53 0 TD (.)Tj /T8 1 Tf -1331.9999 136.9999 TD (2.1.4)Tj 171 0 TD [(Changing)-20000(P)]TJ 288 0 TD [(age)-19000(T)]TJ 134 0 TD [(abs)-19000(and)-20000(Deleting)-16000(P)]TJ 468 0 TD (ages)Tj /T15 1 Tf -1061 100 TD (T)Tj 27 0 TD 11 Tc (oc)Tj 49 0 TD 0 Tc [(hange)-13000(the)-13000(information)-9000(in)-12000(the)-13000(tabs)-12000(of)-12000(the)-13000(pages,)-12000(w)]TJ 885 0 TD [(e)-12000(can)-13000(use)-13000(the)]TJ /T12 1 Tf 245 0 TD (pageconfigure)Tj /T15 1 Tf 294.9999 0 TD [(metho)-1000(d.)]TJ -1500.9999 50.0001 TD (F)Tj 24 0 TD [(or)-13000(example,)-13000(the)-14000(follo)]TJ 374 0 TD [(wing)-11000(command:)]TJ /T12 1 Tf -294 98 TD [(.nb)-21000(pageconfigure)-19000(hd)-21000(-label)-21000("Fixed)-21000(Disk")]TJ /T15 1 Tf -104 97.9999 TD (c)Tj 17 0 TD [(hanges)-19000(the)-18000(lab)-1000(el)-18000(from)-16000(\\Hard)-18000(Disk")-17000(to)-18000(\\Fixed)-17000(Disk".)-30000(T)]TJ 1039.9999 0 TD [(o)-17000(delete)-19000(a)-18000(page,)-18000(w)]TJ 343 0 TD [(e)-18000(can)-19000(use)-18000(the)]TJ /T12 1 Tf -1399.9999 50 TD (delete)Tj /T15 1 Tf 145 0 TD [(metho)-1000(d.)]TJ -83 74.0001 TD (Y)Tj 28 0 TD [(ou)-10000(should)-10000(a)]TJ 202 0 TD (v)Tj 20.9999 0 TD [(oid)-8000(using)-10000(the)]TJ /T12 1 Tf 237.0001 0 TD (pageconfigure)Tj /T15 1 Tf 293 0 TD (and)Tj /T12 1 Tf 76.9999 0 TD (delete)Tj /T15 1 Tf 132 0 TD 15 Tc (.Y)Tj 55 0 TD 0 Tc [(our)-10000(users)-11000(will)-9000(just)-10000(feel)-10000(anno)]TJ 481.0001 0 TD (y)Tj 20.9998 0 TD (ed)Tj -1608.9998 48.9999 TD [(if)-15000(the)-17000(in)]TJ 148 0 TD [(terface)-17000(c)]TJ 154 0 TD [(hanges)-16000(all)-15000(the)-17000(time)-15000(and)-16000(noteb)-1000(o)-1000(o)0(k)-16000(pages)-16000(app)-1000(ear)-17000(and)-16000(disapp)-1000(ear)-16000(ev)]TJ 1201.9999 0 TD [(ery)-17000(no)]TJ 115.9999 0 TD (w)Tj -1619.9998 50 TD [(and)-14000(then.)]TJ ET endstream endobj 124 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 125 0 obj << /Type /XObject /Subtype /Image /Name /Im12 /Width 216 /Height 235 /BitsPerComponent 8 /ColorSpace 126 0 R /Length 634 /Filter /FlateDecode >> stream H‰ìÖn‚0a*à|ÿ'Þ E¨Ò+w‰Sè²ü_¨Œª:ZaïþìÁ„?K§D!¹’Ké ƒ® ;®+,U-žÍ©Å '®ÏÝÄÞÞÔµå*ïÑÚ ƒ®,ÚÑU×ñ[bõÏs‰’Þ}µ>éú=ó6Wt|z£kaÖÔøX™¸êz¸Fu×ät´¼º\‹;u«ëö£{E¤å×f×ð/jƒké7žqM?œÆKw-ÃñÚFW7Ýã©ÿÝuÛnsÖè˜,¯ì×ô!ëiW4ìšœ~ÁÕ?®w¥þÒêî¶Z|mÃùõ[ÓŽ÷ÃS=^ Ä6|ö®±·kx¯Ûäk×/o¾mìêzgi×Ò]¡×â¹ò]aÞÒ¹ýZ;áàz÷<Ÿ®õσ¡)¤ÁÓïÃдEt®¦ß/]y§‹•.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹UI®f¨-ÌõÕuiä:s»¹®3WÃmp]?eêÊ®b]—¾¶,Wœ.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹•.VºXébU’«j s}u]Ú¹ÎÜn®ëÁÌÕp\×ÏGÙ‡º²«X×¥¯-˧‹•.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹•.VºXéb¥‹•.V£+t•ãêÔEH+]¬t±ÒÅJ+]¬t±š»Îet慠iâÚ{˜,v-’+¹”žPWŽÓR¥WréÁ„ùÿ\ß 1qK endstream endobj 127 0 obj << /Type /XObject /Subtype /Image /Name /Im13 /Width 214 /Height 235 /BitsPerComponent 8 /ColorSpace 128 0 R /Length 730 /Filter /FlateDecode >> stream H‰ìÖr‚0DQ"Úúÿ_Ü΀…'YMÖï›Öj »9µvÝgMÚzOæÁþ~Ä$yd£÷—Píl>U•rÓeW÷3ÙýÕzo]'ªj®ðúSº¿„jóÙ@Õ÷Óãr½ô÷ŽÜßÝŸÔ¶ªpè%ÕìõiÕÓ_Y>W³¾j†êûñÇß×°2__†Õ–ªì=Z£š¾ûAµ\Ÿ^„#Ūۿ¤ UîŒU?cLûŒ/—OÆsŠîÜI5ì­¹*^’S¸Hña¡îK/ÕKªøqªV•¹TQ–R©?ê•«T’­wbÆZ¬º_k¤Ê½'T\÷.Õ†ªøN}_ýŒ¾3Õ:£U¹÷‚·We׎®JËÉ­m5¥û»©ZïgÝ9ãç¾tn1—K»³³sÓŒw`:5˜KUjÝÙÙ„.þ]¡ªhA…J% ò[P½…êï?cƒ³Õ¬ úæÚàl5¨¼A…êÑ òæ ªë8 ÎVÃg‹ZP¡R ¨üT¨T*¿*•€ÊoA…J% ò[P¡R ¨üT¨T*¿*•€ÊoA…J% ò[P¡R ¨üT¨T*¿*•€ÊoA…J% ò[P¡R ¨üT¨T*¿*•€ÊoA…J% ò[P¡R ¨üT¨T*¿*•€ÊoA…J% ò[P¡R ¨üT¨T*¿*•€ÊoA…J% ò[P¡R ¨üT¨T*¿*•€ÊoA…J% ò[P¡R ¨üT¨T*¿*•€ÊoA…J% ò[P¡R ¨üT¨T*¿*•€ÊoA…J% ò[P¡R ¨üT¨T*¿*•€ÊoA…J% ò[6S¥aŽ¢4Ý0‡Q šƒÞ¨ª[P¡R ¨üT¨T*¿*•€ÊoA…J%,T—S—úúîUÝA&¨¶ÞÌ¿Í\•›$ìcôþPím>Q•Ôè#û˜ûÛûÖ½ù`Â+Ô endstream endobj 130 0 obj << /Length 6267 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (26)Tj /T9 1 Tf 888.9999 0 TD [(CHAPTER)-14000(2.)-32000(CONT)]TJ 408 0 TD [(AINER)-14000(WIDGETS)]TJ ET q 162 0 0 176.256 159.6 531.94 cm /Im12 Do Q BT /T6 1 Tf 0.24 0 0 -0.24 207.36 510.18 Tm [(\(a\))-11000(V)]TJ 79.9999 0 TD [(ertical)-10000(P)]TJ 131.0001 0 TD (anes)Tj ET q 160.488 0 0 176.256 324.96 531.94 cm /Im13 Do Q BT 0.24 0 0 -0.24 366.48 510.18 Tm [(\(b\))-11000(Horizon)]TJ 179.9999 0 TD [(tal)-9000(P)]TJ 74.0001 0 TD (anes)Tj /T15 1 Tf -730 125.0001 TD [(Figure)-14000(2.2:)-17000(The)-14000(TixP)]TJ 389.9999 0 TD [(ane)-14000(Widget)]TJ /T14 1 Tf -915.9999 140 TD (2.2)Tj 153 0 TD 0 Tw (P)Tj 43.9999 0 TD (anedWindo)Tj 331.0001 0 TD (w)Tj /T15 1 Tf -528 117.9999 TD (The)Tj /T13 1 Tf 89 0 TD (TixPane)Tj 151 0 TD (dWindow)Tj /T15 1 Tf 186 0 TD [(widget)-17000(arranges)-18000(arranges)-17000(its)-18000(sub)]TJ 599 0 TD [(widgets)-17000(in)-17000(non-o)]TJ 306 0 TD (v)Tj 20.9999 0 TD [(erlapping)-16000(panes.)]TJ -1351.9999 50 TD [(As)-11000(w)]TJ 87 0 TD [(e)-12000(can)-11000(see)-12000(in)-10000(\014gure)-12000(2.2,)-10000(the)-11000(P)]TJ 496 0 TD (anedWindo)Tj 205.9999 0 TD [(w)-10000(widget)-11000(puts)-12000(a)-10000(resize)-13000(handle)-10000(b)-1000(e)0(t)]TJ 590 0 TD (w)Tj 29 0 TD [(een)-13000(the)-11000(panes)]TJ -1407.9999 49.0001 TD [(for)-14000(the)-16000(user)-16000(to)-14000(manipulate)-13000(the)-15000(sizes)-16000(of)-15000(the)-15000(panes)-15000(in)]TJ 934 0 TD (teractiv)Tj 137.9999 0 TD (ely)Tj 49.0001 0 TD [(.)-21000(The)-15000(panes)-15000(can)-15000(b)-1000(e)-16000(arranged)]TJ -1121 49.9999 TD [(either)-15000(v)]TJ 139 0 TD [(ertically)-13000(\(\014gure)-14000(2.2\(a\)\))-14000(or)-13000(horizon)]TJ 611 0 TD [(tally)-13000(\(2.2\(b\)\).)]TJ -688 74.0001 TD (Eac)Tj 66 0 TD [(h)-14000(individual)-12000(pane)-14000(ma)]TJ 387 0 TD 12 Tc [(yh)12000(a)]TJ 77 0 TD 0 Tc (v)Tj 20.9999 0 TD [(e)-13000(upp)-1000(er)-15000(and)-13000(lo)]TJ 262.0001 0 TD (w)Tj 28.9999 0 TD [(er)-13000(limits)-12000(of)-13000(its)-13000(size.)-19000(The)-14000(user)-15000(c)]TJ 552 0 TD [(hanges)-14000(the)]TJ -1455.9999 48.9999 TD [(sizes)-15000(of)-13000(the)-15000(panes)-14000(b)]TJ 351 0 TD [(y)-14000(dragging)-13000(the)-14000(resize)-16000(handle)-13000(b)-1000(e)0(t)]TJ 581.9999 0 TD (w)Tj 29.0001 0 TD [(een)-16000(t)]TJ 89.9999 0 TD (w)Tj 29.0001 0 TD [(o)-13000(panes.)]TJ /T8 1 Tf -1081 157.0001 TD (2.2.1)Tj 171 0 TD [(Adding)-19000(P)]TJ 234 0 TD [(anes)-20000(Inside)-18000(a)-19000(TixP)]TJ 457.9999 0 TD (anedWindo)Tj 277.0001 0 TD [(w)-19000(Widget)]TJ /T15 1 Tf -1140 102.9999 TD (Y)Tj 28 0 TD [(ou)-18000(can)-19000(create)-21000(a)-18000(TixP)]TJ 400.9999 0 TD (anedWindo)Tj 205.9999 0 TD [(w)-18000(widget)-18000(using)-19000(the)]TJ /T12 1 Tf 376.0001 0 TD (tixPanedWindow)Tj /T15 1 Tf 323.9999 0 TD [(command.)-30000(After)]TJ -1334.9999 50 TD [(that,)-13000(y)]TJ 122 0 TD [(ou)-14000(can)-14000(add)-14000(panes)-14000(in)]TJ 363.9999 0 TD [(to)-13000(this)-14000(widget)-14000(using)-14000(the)]TJ /T12 1 Tf 445.0001 0 TD (add)Tj /T15 1 Tf 78.9999 0 TD [(metho)-1000(d)-14000(\(see)-15000(program)-12000(2.3\).)]TJ -947.9999 74 TD [(When)-13000(y)]TJ 141 0 TD [(ou)-12000(use)-14000(the)]TJ /T12 1 Tf 196.9999 0 TD (add)Tj /T15 1 Tf 78 0 TD [(metho)-1000(d,)-12000(there)-14000(are)-13000(sev)]TJ 390.0001 0 TD [(eral)-13000(optional)-12000(parameters)-12000(whic)]TJ 535.9999 0 TD 13 Tc (hy)Tj 57.0001 0 TD 0 Tc [(ou)-12000(can)-13000(use)]TJ -1461 49 TD [(to)-15000(con)]TJ 113 0 TD [(trol)-15000(the)-16000(size)-16000(of)-15000(eac)]TJ 337.9999 0 TD [(h)-15000(o)0(f)-15000(the)-16000(pane.)-22000(The)]TJ /T12 1 Tf 365.9999 0 TD (-min)Tj /T15 1 Tf 102 0 TD [(parameter)-15000(con)]TJ 261.0001 0 TD [(trols)-16000(the)-16000(minim)]TJ 287 0 TD [(um)-11000(size)-16000(of)]TJ -1467 50.0001 TD [(the)-12000(pane)-12000(and)-11000(the)]TJ /T12 1 Tf 312.9999 0 TD (-max)Tj /T15 1 Tf 99.0001 0 TD [(parameter)-11000(con)]TJ 257 0 TD [(trols)-11000(its)-12000(maxim)]TJ 272.9999 0 TD [(um)-7000(size.)-18000(These)-12000(t)]TJ 292.0001 0 TD (w)Tj 28.9999 0 TD [(o)-11000(parameters)-12000(con)]TJ 306.0001 0 TD (trols)Tj -1569 50 TD (ho)Tj 43 0 TD 14 Tc (wm)Tj 79 0 TD 0 Tc (uc)Tj 40 0 TD [(h)-14000(the)-15000(user)-16000(can)-15000(expand)-15000(or)-15000(shrink)-14000(a)-15000(pane.)-21000(If)-14000(neither)-16000(is)-14000(sp)-1000(eci\014ed,)-16000(then)-15000(the)-16000(pane)-15000(can)]TJ -162 50 TD [(b)-1000(e)-15000(expanded)-14000(or)-14000(shrunk)-15000(without)-13000(restrictions.)]TJ 62 72.9999 TD [(In)-12000(addition,)-11000(the)-12000(-size)-13000(parameter)-11000(sp)-1000(eci\014es)-14000(the)-12000(initial)-10000(size)-13000(of)-11000(the)-13000(pane.)-17000(If)-12000(it)-11000(is)-12000(not)-12000(sp)-1000(eci\014ed,)]TJ -62 50 TD [(then)-15000(the)-14000(initial)-12000(size)-15000(of)-13000(the)-14000(pane)-15000(will)-12000(b)-1000(e)-14000(its)-14000(natural)-14000(size.)]TJ 62 74.0001 TD [(In)-15000(program)-13000(2.3,)-13000(w)]TJ 328 0 TD [(e)-15000(set)-16000(the)-15000(initial)-13000(size)-15000(of)]TJ /T12 1 Tf 419 0 TD (pane1)Tj /T15 1 Tf 123.9999 0 TD [(to)-14000(100)-14000(pixels)-15000(using)-14000(the)-15000(-size)-16000(parameter.)]TJ -932.9999 48.9999 TD (W)Tj 40 0 TD [(e)-14000(don't)-14000(set)-15000(the)]TJ /T12 1 Tf 278 0 TD (-size)Tj /T15 1 Tf 122.9999 0 TD [(parameter)-14000(for)]TJ /T12 1 Tf 262.9999 0 TD (pane2)Tj /T15 1 Tf 123.0001 0 TD [(so)-14000(it)-14000(will)-13000(app)-1000(ear)-14000(in)-14000(its)-14000(natural)-14000(size.)-20000(Ho)]TJ 709 0 TD (w)Tj 28.9998 0 TD (ev)Tj 39.0002 0 TD (er,)Tj -1604 50 TD (w)Tj 29 0 TD [(e)-16000(use)-17000(the)]TJ /T12 1 Tf 181.9999 0 TD (-max)Tj /T15 1 Tf 103.0001 0 TD [(option)-16000(for)]TJ /T12 1 Tf 198 0 TD (pane2)Tj /T15 1 Tf 125 0 TD [(so)-16000(that)-16000(the)-17000(user)-17000(can)-16000(nev)]TJ 449 0 TD [(er)-17000(expand)-17000(the)-17000(size)-17000(of)]TJ /T12 1 Tf 401.9999 0 TD (pane2)Tj /T15 1 Tf 125.0001 0 TD (to)Tj ET endstream endobj 131 0 obj << /ProcSet [/PDF /Text /ImageC /ImageI] /Font << /T6 72 0 R /T8 35 0 R /T9 25 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R >> /XObject << /Im12 125 0 R /Im13 127 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS10 126 0 R /CS11 128 0 R >> >> endobj 126 0 obj [/Indexed /DeviceRGB 15 132 0 R] endobj 132 0 obj << /Filter /ASCII85Decode /Length 44 >> stream lg*kVEH/n6_Z0Z:s8W,Je'i_nIG endstream endobj 128 0 obj [/Indexed /DeviceRGB 15 133 0 R] endobj 133 0 obj << /Filter /ASCII85Decode /Length 44 >> stream lg*kVEH/n6_Z0Z:s8W+II=9Sne(`X3JqARSzzzzz~> endstream endobj 134 0 obj << /Type /XObject /Subtype /Image /Name /Im14 /Width 276 /Height 232 /BitsPerComponent 8 /ColorSpace 126 0 R /Length 1110 /Filter /FlateDecode >> stream H‰ì׋Vâ0QJ(ëÿñ }gžiSaæ,º4E“kôp°ÇkjO`Õn¬îw蘩Ɏ|BùÕ5špDŽh‘ޤIuHý”’«[˜l·áﺥÉ3W×_ëÑÕ5šdŽiÂcLB¸w4}ÆeWm%5L®‹Ý•Éìù±¢I¡³ži¿&áÒ±û×=ëÖ?<úCÝE]Þ0IÞ]›V<ÿ”x”FW2ü r|Ü$uFÁÆí$ï±8­X“I·²ñXu“i­‹{dâó3J~çwL–¿øoar ¸DV5éÿ¤9>l’ûJe®…ã8ß8¦w]“øØ.L¢÷™ÄÑHök2»I]aµídÇ&õÊ›¤vÐ/7IÓ„Ç&“†¥ŽýÍ]Ý`²ö|þR=Fÿ÷Ms²Ó`Ñß;Í©ýú·å~¢‰&©4aš0M˜&L¦ Ó„iÂ4aš0M˜&L¦ Ó„iÂ4aš0M˜&L¦ Ó„iÂ4aš0M˜&ì9“S©^î&¨cr®mrsÏš¼º˜å7}Ãdƒ h’Õ„£špT޾l®­0¥êxä›×ò@fŠÑáB&Ov«š´N)ú¦åL™@hãÕMúoÂp1÷?–0a¬kroõLÆS7«éOh-“[ˆf°ú‹)ESÅŒJï±¥'°Æuòæ”V˜@¼ËhÂW¾­o2<†)ÍžocrgšŒ¿F^>-÷ûø-pÝ=öÞø ¯ï<;M£špTŽjÂQM8ª G5áè“&ç2½º˜M&ð¤I¡½n²Åž3ùŽ4aš0M˜&L¦ Ó„iÂ4aš0M˜&L¦ Ó„iÂ4aš0M˜&L¦ Ó„iÂ4aš0M˜&]§¡V“¡Ó¿®ŸV“¡›&çïl4¹<Éé;L.ÿ÷Þ¹æ~Âî™Ô¾Œ«4Þ;šŒýôs&µ¯äz5Aš0M˜&L¦ Ó„iÂ4aš0M˜&L¦ Ó„iÂ4aš0M˜&L¦ Ó„iÂ4aš0M˜&L¦ Ó„iÂ4aš0M˜&L¦ Ó„mg^ ×JÏä^ÕMB~¨˜£Ü<»T›™„ÌZî›´oÚþnèîŠëÇèØõyrÿ1Œ/ ³×;Zɶ2ÀÝ‚fÔ±0{ÕÜdü2ɳKµ½Iÿ!^e|¬{U¯‡åÙñ+ж‘Ét+Ü4n ¼ì#M’?ñäuÒ~ÉøQ“¾Ùb§ûd¶Ç&ŽÍ^—8{qæÇ˜ ï¦m8Æ=¶ ýiÓ›ÍâN,šï0M˜&L¦ Ó„iÂ4aš0M˜&L¦ Ó„iÂ4aš0M˜&L¦ Ó„iÂ4aš0M˜&L¦ [š4]š\L:‹C—&W“ÎÂ{çšû Ó„iÂ4aš0M˜&L¦ Ó„iÂ4ay“ó—1©=­ª¥M¾=MMj_»;(69Ø!2©=™47IÕdG>¡üê4IŒhÂM8òkÒäÊ|B7V÷Ù ­ÿûú. endstream endobj 136 0 obj << /Length 3492 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(2.2.)-31000(P)]TJ 122 0 TD (ANED)Tj 121 0 TD (WINDO)Tj 152 0 TD 0 Tw (W)Tj /T15 1 Tf 1212.9998 0 TD (27)Tj ET q 207 0 0 174.024 220.56 544.02 cm /Im14 Do Q BT 0.24 0 0 -0.24 247.92 522.18 Tm [(Figure)-14000(2.3:)-17000(Output)-15000(of)-13000(Program)-13000(2.3)]TJ -508 157.0001 TD [(more)-13000(than)-14000(300)-13000(pixels.)]TJ ET q 396 0 0 -0.96 125.976 464.796 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 454.98 Tm [(Program)-15000(2.3)]TJ /T15 1 Tf 273 0 TD [(Adding)-14000(P)]TJ 173.9999 0 TD [(anes)-14000(in)]TJ 125.9999 0 TD [(to)-14000(a)-13000(TixP)]TJ 176.0001 0 TD (anedWindo)Tj 206 0 TD [(w)-13000(Widget)]TJ ET q 396 0 0 -0.48 125.976 451.116 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 442.5 Tm [(tixPanedWindow)-19000(.p)]TJ 0 49 TD [(.p)-21000(add)-21000(pane1)-21000(-size)-21000(100)]TJ 0 50 TD [(.p)-21000(add)-21000(pane2)-21000(-max)-21000(300)]TJ 0 100 TD [(set)-21000(p1)-21000([.p)-22000(subwidget)-19000(pane1])]TJ 0 50 TD [(button)-20000($p1.b1)-21000(-text)-21000(Button1)]TJ 0 48.9999 TD [(button)-20000($p1.b2)-21000(-text)-21000(Button2)]TJ 0 50 TD [(pack)-21000($p1.b1)-20000($p1.b2)-21000(-side)-21000(left)-21000(-expand)-20000(yes)]TJ 0 100 TD [(set)-21000(p2)-21000([.p)-22000(subwidget)-19000(pane2])]TJ 0 50.0001 TD [(button)-20000($p2.b)-21000(-text)-21000("Another)-20000(Button")]TJ T* [(pack)-21000($p2.b)-21000(-side)-20000(left)-21000(-expand)-21000(yes)-21000(-fill)-21000(both)]TJ 0 98.9999 TD [(pack)-21000(.p)-21000(-expand)-20000(yes)-22000(-fill)-20000(both)]TJ ET q 396 0 0 -0.48 125.976 273.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T8 1 Tf 0.24 0 0 -0.24 126 216.42 Tm (2.2.2)Tj 171 0 TD [(Putting)-19000(Widgets)-17000(Inside)-18000(the)-19000(P)]TJ 726 0 TD (anes)Tj /T15 1 Tf -897 111 TD (Eac)Tj 65.9999 0 TD [(h)-16000(pane)-17000(w)]TJ 170 0 TD 16 Tc [(eh)16000(a)]TJ 77 0 TD 0 Tc (v)Tj 21.0001 0 TD [(e)-16000(created)-18000(using)-15000(the)]TJ /T12 1 Tf 366 0 TD (add)Tj /T15 1 Tf 81.9999 0 TD [(metho)-1000(d)-15000(i)0(s)-16000(essen)]TJ 287 0 TD [(tially)-16000(a)-16000(frame)-14000(widget.)-25000(After)-17000(w)]TJ 563.0001 0 TD (e)Tj -1632 50 TD (ha)Tj 43 0 TD (v)Tj 21 0 TD [(e)-14000(created)-16000(the)-15000(panes,)-15000(w)]TJ 407 0 TD [(e)-15000(can)-14000(put)-15000(widgets)-15000(inside)-14000(them.)-19000(As)-15000(sho)]TJ 700 0 TD [(wn)-14000(inside)-15000(program)-13000(2.3,)-13000(w)]TJ 461 0 TD (e)Tj -1632 50 TD [(can)-14000(use)-15000(the)]TJ /T12 1 Tf 220 0 TD (subwidget)Tj /T15 1 Tf 210 0 TD [(metho)-1000(d)-13000(t)0(o)-14000(\014nd)-14000(out)-14000(the)-15000(name)-13000(of)-13000(the)-15000(pane)-14000(sub)]TJ 820.9999 0 TD [(widgets.)-19000(Then)-14000(w)]TJ 304.0001 0 TD [(e)-15000(can)]TJ -1555 48.9999 TD [(just)-13000(create)-15000(new)-14000(widgets)-13000(as)-13000(their)-14000(c)]TJ 603 0 TD [(hildren)-13000(and)-13000(pac)]TJ 281 0 TD [(k)-13000(these)-15000(new)-14000(widgets)-13000(inside)-13000(the)-14000(panes.)-19000(The)]TJ -884 50 TD [(output)-14000(of)-13000(program)-13000(2.3)-12000(is)-14000(sho)]TJ 517 0 TD [(wn)-14000(in)-14000(\014gure)-14000(2.3)]TJ ET endstream endobj 137 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T15 6 0 R >> /XObject << /Im14 134 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS10 126 0 R >> >> endobj 139 0 obj << /Length 7287 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (28)Tj /T9 1 Tf 888.9999 0 TD [(CHAPTER)-14000(2.)-32000(CONT)]TJ 408 0 TD [(AINER)-14000(WIDGETS)]TJ /T8 1 Tf -1296.9999 117 TD (2.2.3)Tj 171 0 TD [(Setting)-18000(the)-18000(Order)-18000(of)-19000(the)-18000(P)]TJ 651 0 TD (anes)Tj /T15 1 Tf -822 105.0002 TD (Usually)Tj 134 0 TD [(,)-14000(when)-15000(y)]TJ 156 0 TD [(ou)-14000(create)-17000(a)-14000(new)-16000(pane,)-15000(it)-14000(is)-15000(alw)]TJ 563 0 TD 0 Tw (a)Tj 19.9999 0 TD [(ys)-14000(added)-15000(to)-15000(the)-16000(b)-1000(ottom)-13000(or)-15000(righ)]TJ 570.0001 0 TD [(t)-15000(o)0(f)-14000(the)-15000(list)]TJ -1443 49 TD [(of)-14000(panes.)-20000(If)-14000(y)]TJ 243.9999 0 TD [(ou)-14000(w)]TJ 87.0001 0 TD (an)Tj 43 0 TD 14 Tc [(tt)14000(oc)14000(o)14000(n)]TJ 142 0 TD 0 Tc [(trol)-14000(the)-15000(order)-15000(in)-14000(whic)]TJ 390.9999 0 TD [(h)-14000(the)-15000(panes)-15000(app)-1000(ear)-15000(inside)-14000(the)-15000(TixP)]TJ 644.0001 0 TD (aned-)Tj -1551 50 TD (Windo)Tj 121 0 TD [(w)-11000(widget,)-11000(y)]TJ 205 0 TD [(ou)-12000(can)-12000(use)-13000(the)-12000(t)]TJ 283.9999 0 TD (w)Tj 29 0 TD [(o)-12000(optional)-10000(parameters,)]TJ /T12 1 Tf 417.0001 0 TD (-before)Tj /T15 1 Tf 163.9999 0 TD (and)Tj /T12 1 Tf 79.0001 0 TD (-after)Tj /T15 1 Tf 131.9999 0 TD [(,)-11000(for)-11000(the)]TJ /T12 1 Tf 154.0001 0 TD (add)Tj /T15 1 Tf -1585 50 TD [(metho)-1000(d.)-17000(F)]TJ 190.9999 0 TD [(or)-14000(example,)-12000(the)-14000(call:)]TJ /T12 1 Tf -86.9999 131 TD [(.p)-21000(add)-21000(pane2)-21000(-after)-21000(pane1)]TJ /T15 1 Tf -104 132 TD [(will)-12000(place)-14000(the)-15000(new)-14000(pane)-14000(immediately)-11000(after)]TJ /T12 1 Tf 775 0 TD (pane1)Tj /T15 1 Tf 109.9999 0 TD [(.)-17000(The)-14000(call:)]TJ /T12 1 Tf -780.9999 131 TD [(.p)-21000(add)-21000(pane2)-21000(-before)-20000(pane1)]TJ /T15 1 Tf -104 131 TD [(will)-12000(place)-14000(the)-15000(new)-14000(pane)-14000(immediately)-11000(in)-13000(fron)]TJ 797 0 TD 14 Tc [(to)14000(f)]TJ /T12 1 Tf 77 0 TD 0 Tc (pane1)Tj /T15 1 Tf 110 0 TD (.)Tj /T8 1 Tf -984 162.9999 TD (2.2.4)Tj 171 0 TD [(Changing)-20000(the)-18000(Sizes)-18000(of)-19000(the)-18000(P)]TJ 684 0 TD (anes)Tj /T15 1 Tf -855 104.9999 TD [(If)-15000(y)]TJ 64 0 TD [(ou)-16000(w)]TJ 89 0 TD (an)Tj 43 0 TD 15 Tc [(tt)15000(o)-1000(c)]TJ 100.9999 0 TD 0 Tc [(hange)-16000(the)-16000(sizes)-17000(of)-15000(the)-17000(existing)-15000(panes)-17000(or)-15000(c)]TJ 756.9999 0 TD [(hange)-16000(their)-17000(maxim)]TJ 349 0 TD (um)Tj 57 0 TD (/m)Tj 56 0 TD (i)Tj 10.9999 0 TD (nim)Tj 68 0 TD (um)Tj -1594.9998 50 TD [(size)-15000(constrain)]TJ 243.9999 0 TD [(ts,)-15000(y)]TJ 80.0001 0 TD [(ou)-14000(can)-15000(use)-15000(the)]TJ /T12 1 Tf 279 0 TD (paneconfigure)Tj /T15 1 Tf 297.9999 0 TD [(metho)-1000(d.)-19000(F)]TJ 193 0 TD [(or)-14000(example,)-13000(the)-15000(follo)]TJ 376 0 TD [(wing)-12000(co)-1000(de)]TJ -1469.9999 50 TD (c)Tj 17 0 TD [(hanges)-16000(the)-16000(size)-16000(of)]TJ /T12 1 Tf 339 0 TD (pane2)Tj /T15 1 Tf 124 0 TD [(to)-15000(100)-15000(pixels)-15000(and)-15000(adjusts)-16000(its)-15000(minim)]TJ 650 0 TD [(um)-11000(size)-16000(constrain)]TJ 314.9999 0 TD [(t)-15000(t)0(o)-15000(n)0(o)-15000(less)]TJ -1444.9999 50 TD [(than)-14000(10)-13000(pixels:)]TJ /T12 1 Tf 104 131 TD [(.p)-21000(paneconfigure)-19000(pane2)-21000(-size)-21000(100)-21000(-min)-21000(10)]TJ /T15 1 Tf -104 131.0001 TD [(Notice)-17000(that)-17000(after)-17000(y)]TJ 348 0 TD [(ou)-17000(call)-16000(the)]TJ /T12 1 Tf 214 0 TD (paneconfigure)Tj /T15 1 Tf 300 0 TD [(metho)-1000(d,)-17000(the)-17000(P)]TJ 268 0 TD (anedWindo)Tj 206 0 TD 16 Tc [(wm)16000(a)]TJ 101.9999 0 TD 0 Tc [(y)-15000(jitter)-17000(and)]TJ -1437.9999 49.9999 TD [(that)-14000(ma)]TJ 146 0 TD [(y)-12000(anno)]TJ 121 0 TD [(y)-13000(the)-15000(user.)-19000(Therefore,)-14000(use)-15000(this)-14000(metho)-1000(d)-13000(only)-13000(when)-15000(it)-13000(is)-14000(necessary)]TJ 1161.9999 0 TD (.)Tj /T14 1 Tf -1428.9999 185 TD (2.3)Tj 153 0 TD [(The)-22000(F)]TJ 173 0 TD [(amily)-25000(of)-22000(Scrolled)-24000(Widgets)]TJ /T15 1 Tf -326 119 TD [(With)-14000(plain)-13000(Tcl/Tk,)-13000(the)-15000(widgets)-15000(do)-14000(not)-14000(automatically)-11000(come)-13000(with)-14000(scrollbars.)-20000(If)-13000(y)]TJ 1452.9999 0 TD [(ou)-14000(w)]TJ 86.9999 0 TD (an)Tj 43 0 TD 14 Tc [(tt)14000(o)]TJ -1582.9998 50 TD 0 Tc [(use)-18000(scrollbars)-18000(with)-17000(the)-18000(text,)-19000(can)]TJ 600.9999 0 TD (v)Tj 20.0001 0 TD [(as)-17000(or)-17000(listb)-1000(o)]TJ 207.9999 0 TD [(x)-17000(widgets,)-18000(y)]TJ 226.0001 0 TD [(ou)-17000(will)-16000(need)-18000(to)-18000(create)-19000(scrollbars)]TJ -1055 49 TD [(separately)-16000(and)-14000(attac)]TJ 371 0 TD [(h)-15000(them)-14000(to)-15000(the)-16000(widgets.)-21000(This)-15000(can)-15000(b)-1000(e)-15000(a)-15000(lot)-14000(of)-14000(hassle)-16000(b)-1000(ecause)-16000(y)]TJ 1112.9999 0 TD [(ou)-15000(w)]TJ 88.0001 0 TD (ould)Tj -1572 50.0001 TD [(almost)-12000(alw)]TJ 196 0 TD (a)Tj 19.9999 0 TD [(ys)-14000(need)-15000(scrollbars)-15000(for)-14000(these)-16000(widgets.)-19000(Sometimes)-13000(y)]TJ 902.9999 0 TD [(ou)-13000(will)-13000(w)]TJ 165.0001 0 TD [(onder)-15000(wh)]TJ 167.9999 0 TD 14 Tc (yy)Tj 56.9999 0 TD 0 Tc [(ou)-14000(need)]TJ -1508.9998 50 TD [(to)-14000(write)-14000(the)-14000(same)-13000(b)-1000(oring)-14000(co)-1000(de)-15000(again)-12000(and)-14000(again)-13000(just)-14000(to)-13000(get)-15000(the)-14000(scrollbars)-14000(to)-14000(w)]TJ 1399 0 TD (orking.)Tj -1337 72.9999 TD [(The)-14000(Tix)-12000(scrolled)-13000(widgets)-13000(are)-13000(here)-15000(to)-12000(mak)]TJ 744 0 TD 12 Tc (ey)Tj 50.9999 0 TD 0 Tc [(our)-12000(life)-12000(easier.)-19000(With)-12000(a)-13000(single)-12000(command)-10000(suc)]TJ 768.9999 0 TD (h)Tj -1625.9998 50 TD (as)Tj /T12 1 Tf 51 0 TD (tixScrolledListB)Tj 351 0 TD (ox)Tj /T15 1 Tf 54 0 TD (or)Tj /T12 1 Tf 50.9999 0 TD (tixScrolledText)Tj /T15 1 Tf 330.0001 0 TD 10 Tc (,y)Tj 43 0 TD 0 Tc [(ou)-13000(can)-14000(create)-15000(a)-13000(listb)-1000(o)]TJ 388.9999 0 TD [(x)-13000(o)0(r)-13000(text)-14000(widget)-14000(that)]TJ -1268.9999 50 TD [(comes)-13000(automatically)-11000(with)-14000(scrollbars)-14000(attac)]TJ 755 0 TD (hed.)Tj -693 74.0001 TD [(Another)-20000(adv)]TJ 231.9999 0 TD (an)Tj 43.0001 0 TD [(tage)-17000(of)-18000(the)-19000(Tix)-18000(scrolled)-19000(widgets)-18000(is)-19000(that)-18000(y)]TJ 774 0 TD [(ou)-18000(can)-19000(sp)-1000(ecify)-19000(their)-19000(scrolling)]TJ -1111 48.9999 TD [(p)-1000(olicy)-15000(so)-16000(that)-15000(the)-16000(scrollbars)-16000(app)-1000(ear)-16000(only)-15000(when)-16000(they)-16000(are)-16000(needed.)-25000(This)-15000(feature)-16000(is)-16000(esp)-1000(ecially)]TJ 0 50 TD [(useful)-14000(if)-13000(y)]TJ 178 0 TD [(ou)-13000(are)-15000(displa)]TJ 232.9999 0 TD [(ying)-12000(a)-14000(lot)-13000(of)-13000(widgets)-14000(and)-14000(running)-14000(out)-13000(of)-14000(screen)-16000(real)-13000(estate.)]TJ ET endstream endobj 140 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T14 16 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 141 0 obj << /Type /XObject /Subtype /Image /Name /Im16 /Width 228 /Height 149 /BitsPerComponent 8 /ColorSpace 142 0 R /Length 1080 /Filter /FlateDecode >> stream H‰ì—vÛ Eekëÿòºe‰ Ì=Kˆ’q뀟žÌb½€&”Õþ¾´ž°œ¾â‘óÕ.Ó±#¦ãö[ÄY¯ˆ«M¿w~•Ô±åê[S»Úe:žÌùÀ#biV®¨àtµÙV¼ÓñµxG6^¿àxQ•„½#þgÝþm£Í‡aj«xËóGñÛüÑ€ÿïJî+£[àZï(U¼Á¾Ïý’²f¢ã¶RÝàǸöä;õW¼ó?|☽+W<\ÂKC$]«Ï>© ºVAnå/D×8æs_uÌÎQaöE{G~œJW ?ÞŽïçÜQ:Qsçžå¸‘æ|P»Zr¼{=–¹O—?Bná»:¨c²ÿ†èCñóXG$C¦oÓ‡Î8¿ŽÛº«5Í×_ËŽZÇ"J!6}Ðõ”·kðzÄËqn¤âmÀŠ];†ÅbºTy¸Ç7íEžÃlÇÉCÌž÷ç¨~W÷ìÛâ;™SçŽ:æû‘ÍöéØpæ@¯Žú~„äÞ‘]W¯`¦ãLÇ1x®#õý£cjûÇ¢£®iúG¨u,¢ÚF€ G]”œ*¦T¬ÞŒ¢cŒ  y•åÖ½ÀŽÖL‡˜=ïÏQÏä4#ôБ#Ä=v*ý#ôå©c¾ÙlŸŽ gôê¨ïGHî8ŽÃtƒé8ÏuD¢¾tLmÿXt,ô–…ZÇ"J!^¿›²#‹.JÎ SªÛ‹];ÆÚWYn…½ÂŒÖL‡˜=wŸW39͈}‡í¹ÛØ?’Õq¨õÆ·–FGHóýÈfñXlEë~¬;s WG}?BrïHÑ6<7¯Z¯êZ¦ãLÇ1‘¨ïSÛ?5MÛÛcµc¥Ð}ÿ,º(9'4TL©n/ví#hC^e¹•ðì~W, 1{ûGÿû±&“ÓŒÐwIJ¡±$«ãPéù;,htÌ[Â*G÷gNøÑvæ@¯Žú~„äÞ‘]W¯gÎ8LÇ1˜Žcð\G$êûGÇÔöEÇ‚¦å ²Ö±ˆ^ˆ¾s‹.JÎ Sª‹åžcmÈ«,·&å6´fò€<ÄìyÞ‡qY&§™Îûˆ{ì8ÔúGr7¢ÑRÇ|?²ÙüûÙÇul8s WG}?BrïèÄq¦ãLÇ1x®#õý£cjûÇ¢£¢i媋hŽ®ñSÊŽ,º(9'4TL©â'ÙÁ—Ô1FІ¼Êr+8qÜÜÂŒžÉò³ç¼·ºÑ¡ÄËñŇ™œf:ï; î±ãpŒþ1Ž¥¡âÈw® Ž gôê¨ïGHîÙuupæ<2¯Z¯êZ¦ãLÇ1˜Žc0Ç@vü Éq<žèh½}î!q´^ÌMpG‰åôœ¯v:Þ³š{˜ŽËç¯xDYm_"ïño݈hJ endstream endobj 143 0 obj << /Type /XObject /Subtype /Image /Name /Im15 /Width 228 /Height 137 /BitsPerComponent 8 /ColorSpace 144 0 R /Length 1215 /Filter /FlateDecode >> stream H‰ì—–ã …Ié6ïÿÆ;­RÐÔü´¹g{F‰Óåƒ^~YÓÕ TIÉöïÑcEÓê‹ZÏvº;ÒÍè~&ɨU%³ Û€M2ÖìþÕ*ÍvºWb6d†1M¯(Ðj¶Q)žÉøIþF14`ÊS+6è[Žë|Á²j1£ËT'8ƒ‘sÞIÆC¹bËÿ°‡14zG2>p±…‡0zKú(f\û¦:Ñ^y¸‡,<>ˆŽaŒcM£s4Ýx=£WÊÃy:=±ùwuPÆ ÿÿõ«7Ð+V’zÕüaô“GeœuF$úu~—>½N#ÖöÑå]̨a~þZM$癎ÓRƬ”…XõE»$å(ÃèöàóáíXLÝi±›ˆÅÍçÙÝPÀè“Å0Õôô»˜é:ƧæßUÁT4Åh|!£ÛF·‘Œê»ú Fopü¸˜¸Æ–SÁd€‘¶ñ³‘•Œ2Æõ(¢3~꫾ËΜ«yßx‡Õ#wG´¯­=€@t³ñüªÜÆ?¾1ÃÖjHÆep<Æ9ÒŒ²Ÿc¾«EŒH*ïm¨rÅýŒ:f«?Â.Ƭ´…Í,ÀVFa]ŸãZL®Äz»ŒlA+üªð­=02‚Ì3=ÅhÜ£îÉ)’è; #Fà[N•þúb„1®G퓱âÌ^õz„àî脱KÝŒ7c/ºŽIåý£ í곌™þ±Ñ_acVÊBÌÙ‚VøUá[%§UFFi¦§ÍûÕJON‘dßÑìÜ=¢$ªåTëÛ]-G0BÈ×£ˆârqRegôʨ×#wGȈÍLÀíWoÆ^t3ÞŒ½¨‚Iåý£ í곌f³ëqcVÊBóý#ë¢øßpÐbru}0²­ð«Â·’,32B”qbŠÑ˜ûGûõXâÉ)’è;ø‹N×ý#Q-§Jÿ(ãdÁ·„EŒæÏF¨8sºeÔë‚»#ÚW«gN—ºoÆ^ôCŒ¯@C2.ƒ F$•÷6TÁø~öYÆ f£ rcVúBlês–Á £°.ŠÏñ -&WÇË-3²­ð«Â·ËO×öwY¦§ã>ä|íeÔ=9E,ôË`Mÿˆ2í`ªõÄ~¾Ž`„1®GßO#û89©õXvæ€=FÇæ#ë‚»ÃãGùÕ9Òžç»yF¶ ~UøV¸Šq–£Ò¾#rŸ‰)FcÙ[Ç%%ý*mcUo¥zrŠØé;fTõDµœì_Ûã+b”•{²BF&ãæ¤÷Vãé›NsŒW's’$cJÓê‹ZÏöf<'›st3NkZbQJ¶}lÓÿ±ƒà endstream endobj 146 0 obj << /Length 7092 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(2.3.)-31000(THE)-14000(F)]TJ 221.9999 0 TD (AMIL)Tj 107 0 TD 14 Tc [(YO)14000(FS)14000(C)14000(R)]TJ 201.0001 0 TD 0 Tc [(OLLED)-14000(WIDGETS)]TJ /T15 1 Tf 1077.9998 0 TD (29)Tj ET q 171 0 0 111.744 149.76 595.94 cm /Im16 Do Q BT /T6 1 Tf 0.24 0 0 -0.24 184.08 574.02 Tm [(\(a\))-11000(Scrollbars)-9000(not)-11000(displa)]TJ 374 0 TD 0 Tw (y)Tj 18 0 TD (ed)Tj ET q 171 0 0 102.744 324 596.06 cm /Im15 Do Q BT 0.24 0 0 -0.24 334.08 574.02 Tm (\(b\))Tj 82.0001 0 TD (Scrollbars)Tj 187 0 TD (displa)Tj 90.9999 0 TD (y)Tj 18 0 TD (ed)Tj 69 0 TD (only)Tj 102 0 TD (when)Tj -549 39.0002 TD (needed)Tj /T15 1 Tf -543.9999 115.9998 TD [(Figure)-14000(2.4:)-17000(Scrolled)-14000(ListBo)]TJ 489.9999 0 TD [(x)-13000(with)-14000(Automatic)-12000(Scrollbars)]TJ /T8 1 Tf -812.9999 180 TD (2.3.1)Tj 171 0 TD [(The)-19000(Scrolled)-17000(Listb)-2000(o)]TJ 481 0 TD [(x)-18000(Widget)]TJ /T15 1 Tf -652 121.0001 TD (Y)Tj 28 0 TD [(ou)-14000(can)-14000(create)-16000(a)-14000(scrolled)-14000(listb)-1000(o)]TJ 541.9999 0 TD [(x)-14000(widget)-14000(using)-14000(the)]TJ /T12 1 Tf 351.0001 0 TD (tixScrolledListB)Tj 350.9999 0 TD (ox)Tj /T15 1 Tf 55 0 TD [(command.)-17000(Notice)]TJ -1326.9999 50 TD [(that)-11000(the)-12000(widget)-12000(created)-13000(b)]TJ 452.9999 0 TD [(y)-11000(the)]TJ /T12 1 Tf 102.0001 0 TD (tixScrolledListBo)Tj 373 0 TD (x)Tj /T15 1 Tf 29.9999 0 TD [(command)-9000(is)-11000(not)-12000(itself)-11000(a)-11000(listb)-1000(o)]TJ 528.0001 0 TD [(x)-11000(widget.)]TJ -1486 50 TD [(Rather,)-13000(it)-12000(is)-13000(a)-13000(frame)-11000(widget)-13000(whic)]TJ 594.9999 0 TD [(h)-13000(con)]TJ 97 0 TD [(tains)-13000(t)]TJ 116.0001 0 TD (w)Tj 29 0 TD [(o)-12000(scrollbar)-13000(sub)]TJ 262 0 TD [(widgets:)-18000(one)-13000(is)-13000(called)]TJ /T12 1 Tf 398.9999 0 TD (hsb)Tj /T15 1 Tf 78.0001 0 TD (\(the)Tj -1576 50 TD (horizon)Tj 132.9999 0 TD [(tal)-9000(scrollbar\))-11000(and)-10000(the)-11000(other)-11000(is)-10000(called)]TJ /T12 1 Tf 642.0001 0 TD (vsb)Tj /T15 1 Tf 75.9999 0 TD [(\(the)-11000(v)]TJ 105.0001 0 TD [(ertical)-10000(scrollbar\).)-17000(Similarly)]TJ 484.9999 0 TD [(,)-8000(the)-11000(listb)-1000(o)]TJ 187.9999 0 TD (x)Tj -1628.9998 48.9999 TD [(b)-1000(eing)-16000(scrolled)-16000(is)-16000(also)-15000(a)-16000(sub)]TJ 493 0 TD [(widget)-16000(whic)]TJ 218 0 TD [(h)-15000(i)0(s)-16000(appropriately)-15000(called)]TJ /T12 1 Tf 460.9999 0 TD (listbox)Tj /T15 1 Tf 154 0 TD [(.)-23000(Therefore,)-17000(if)-15000(w)]TJ 306.0001 0 TD (e)Tj -1632 50 TD [(need)-16000(to)-14000(put)-15000(things)-15000(in)]TJ 385.9999 0 TD [(to)-14000(the)-15000(listb)-1000(o)]TJ 223.0001 0 TD [(x)-14000(\(as)-15000(w)]TJ 132.9999 0 TD [(e)-15000(alw)]TJ 95.0001 0 TD (a)Tj 19.9999 0 TD [(ys)-14000(do!\),)-14000(w)]TJ 179.0001 0 TD [(e)-15000(can)-15000(use)-15000(the)]TJ /T12 1 Tf 253.9999 0 TD (subwidget)Tj /T15 1 Tf 211 0 TD [(metho)-1000(d.)]TJ -1500.9999 50 TD [(As)-16000(sho)]TJ 122 0 TD [(wn)-15000(in)-14000(program)-14000(2.4,)-14000(w)]TJ 394 0 TD [(e)-15000(\014rst)-16000(\014nd)-16000(the)-15000(pathname)-14000(of)-15000(the)]TJ /T12 1 Tf 593 0 TD (listbox)Tj /T15 1 Tf 167.9999 0 TD (sub)Tj 61 0 TD [(widget)-15000(b)]TJ 157 0 TD [(y)-15000(calling)]TJ -1494.9999 50 TD (\\)Tj /T12 1 Tf 21 0 TD [(.sl)-21000(subwidget)-20000(listbox)]TJ /T15 1 Tf 459 0 TD [(".)-16000(Then,)-14000(w)]TJ 198 0 TD [(e)-14000(insert)-15000(some)-13000(items)-13000(in)]TJ 397 0 TD [(to)-13000(the)]TJ /T12 1 Tf 121 0 TD (listbox)Tj /T15 1 Tf 166.9999 0 TD (sub)Tj 61.0001 0 TD (widget.)Tj ET q 396 0 0 -0.96 125.976 355.356 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 345.54 Tm [(Program)-15000(2.4)]TJ /T15 1 Tf 273 0 TD [(Scrolled)-14000(Listb)-1000(o)]TJ 271 0 TD [(x)-14000(Widget)]TJ ET q 396 0 0 -0.48 125.976 341.676 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 333.06 Tm (tixScrolledListB)Tj 351 0 TD [(ox)-19000(.sl)-21000(-scrollbar)-20000(auto)]TJ -351 49 TD [(set)-21000(listbox)-20000([.sl)-21000(subwidget)-20000(listbox])]TJ 0 100 TD [(for)-21000({set)-21000(x)-22000(0)0(})-21000({$x)-21000(<)-22000(6)0(})-21000({incr)-21000(x})-21000({)]TJ 86.9999 50 TD [($listbox)-20000(insert)-21000(end)-21000("This)-21000(is)-21000(item)-21000($x")]TJ -86.9999 50 TD (})Tj 0 99 TD [(pack)-21000(.sl)-21000(-side)-21000(left)-21000(-expand)-20000(yes)-21000(-fill)-21000(both)]TJ ET q 396 0 0 -0.48 125.976 235.356 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 140.88 201.78 Tm [(Also,)-15000(as)-16000(seen)-16000(in)-15000(the)-16000(\014rst)-16000(line)-15000(of)-15000(program)-13000(2.4,)-15000(w)]TJ 866.9999 0 TD [(e)-15000(use)-16000(the)]TJ /T12 1 Tf 179 0 TD (-scrollbar)Tj /T15 1 Tf 233 0 TD [(option)-15000(to)-15000(con)]TJ 244.0001 0 TD (trol)Tj -1585 50 TD [(the)-17000(scrolling)-15000(p)-1000(olicy)-15000(of)-16000(the)-16000(TixScrolledListBo)]TJ 812.9999 0 TD [(x)-16000(widget.)-24000(Usually)]TJ 328 0 TD 15 Tc (,w)Tj 56 0 TD 0 Tc [(e'll)-15000(set)-17000(it)-15000(to)-16000(\\)]TJ /T12 1 Tf 253 0 TD (auto)Tj /T15 1 Tf 88.0001 0 TD [(":)-21000(the)]TJ -1538 50 TD [(scrollbars)-14000(are)-15000(displa)]TJ 360.9999 0 TD (y)Tj 21 0 TD [(ed)-13000(only)-14000(if)-13000(they)-15000(are)-14000(needed.)-21000(Other)-15000(p)-1000(ossible)-14000(v)]TJ 799.0001 0 TD [(alues)-14000(are)-15000(\\)]TJ /T12 1 Tf 194.9999 0 TD (both)Tj /T15 1 Tf 88 0 TD [(":)-17000(the)-14000(t)]TJ 136.0001 0 TD (w)Tj 28.9998 0 TD (o)Tj -1628.9998 50 TD [(scrollbars)-15000(are)-15000(alw)]TJ 318 0 TD (a)Tj 19.9999 0 TD [(ys)-13000(displa)]TJ 157.0001 0 TD (y)Tj 21 0 TD [(ed;)-14000(\\)]TJ /T12 1 Tf 87.9999 0 TD (x)Tj /T15 1 Tf 22 0 TD [(":)-18000(the)-15000(horizon)]TJ 256 0 TD [(tal)-14000(scrollbar)-14000(is)-14000(alw)]TJ 336.0001 0 TD (a)Tj 19.9999 0 TD [(ys)-14000(displa)]TJ 158 0 TD (y)Tj 21.0001 0 TD [(ed,)-13000(while)-14000(the)]TJ -1417 48.9999 TD (v)Tj 21 0 TD [(ertical)-13000(scrollbar)-14000(is)-13000(alw)]TJ 397.9999 0 TD (a)Tj 20 0 TD [(ys)-13000(hidden;)-13000(\\)]TJ /T12 1 Tf 219.0001 0 TD (y)Tj /T15 1 Tf 22 0 TD [(":)-17000(the)-15000(opp)-1000(osite)-13000(of)-13000(\\)]TJ /T12 1 Tf 354 0 TD (x)Tj /T15 1 Tf 22 0 TD [(";)-13000(\\)]TJ /T12 1 Tf 66.9999 0 TD (none)Tj /T15 1 Tf 88.0001 0 TD [(":)-16000(the)-15000(t)]TJ 135.9999 0 TD (w)Tj 29 0 TD [(o)-13000(scrollbars)-14000(are)]TJ -1375.9999 50 TD (alw)Tj 62 0 TD (a)Tj 20 0 TD [(ys)-13000(hidden.)-18000(The)-14000(result)-15000(of)-13000(program)-13000(2.4)-12000(is)-14000(sho)]TJ 784.9999 0 TD [(wn)-14000(in)-14000(\014gure)-14000(2.4.)]TJ ET endstream endobj 147 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /T6 72 0 R /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T15 6 0 R >> /XObject << /Im15 143 0 R /Im16 141 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS12 142 0 R /CS13 144 0 R >> >> endobj 142 0 obj [/Indexed /DeviceRGB 7 148 0 R] endobj 148 0 obj << /Filter /ASCII85Decode /Length 34 >> stream lg*kVEH/n6_Z0Z:e'ld+NfO/>rr<$!~> endstream endobj 144 0 obj [/Indexed /DeviceRGB 7 149 0 R] endobj 149 0 obj << /Filter /ASCII85Decode /Length 34 >> stream lg*kVEH/n6_Z0Z:e'ld+NfJO9IK0?I~> endstream endobj 151 0 obj << /Length 7329 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (30)Tj /T9 1 Tf 888.9999 0 TD [(CHAPTER)-14000(2.)-32000(CONT)]TJ 408 0 TD [(AINER)-14000(WIDGETS)]TJ /T8 1 Tf -1296.9999 117 TD (2.3.2)Tj 171 0 TD [(Other)-18000(Scrolled)-18000(Widgets)]TJ /T15 1 Tf -171 100 TD (The)Tj /T10 1 Tf 88 0 TD (TixScrolledT)Tj 270 0 TD (ext)Tj /T15 1 Tf 79 0 TD [(widget)-16000(is)-16000(v)]TJ 200.9999 0 TD [(ery)-17000(similar)-14000(to)-16000(the)-17000(TixScrolledListBo)]TJ 665 0 TD [(x)-16000(widget,)-17000(except)-17000(it)]TJ -1302.9999 50 TD [(scrolls)-10000(a)-10000(text)-10000(sub)]TJ 295 0 TD [(widget,)-11000(whic)]TJ 225 0 TD [(h)-10000(i)0(s)-9000(called)]TJ /T12 1 Tf 183.9999 0 TD (text)Tj /T15 1 Tf 88 0 TD [(.)-16000(One)-10000(problem)-9000(with)-10000(the)-10000(TixScrolledT)]TJ 661 0 TD [(ext)-10000(widget,)]TJ -1452.9999 50 TD [(though,)-15000(is)-14000(its)]TJ /T12 1 Tf 256 0 TD (-scrollbar)Tj /T15 1 Tf 231.9999 0 TD [(option)-15000(do)-1000(esn't)-15000(w)]TJ 305.0001 0 TD [(ork)-15000(in)-14000(the)]TJ /T10 1 Tf 195.9999 0 TD (auto)Tj /T15 1 Tf 107.0001 0 TD [(mo)-1000(de.)-21000(This)-15000(is)-14000(due)-16000(to)-15000(a)-15000(bug)-14000(in)]TJ -1096 49.0002 TD [(Tk)-15000(whic)]TJ 149 0 TD [(h)-14000(d)0(o)-1000(esn't)-15000(rep)-1000(ort)-16000(the)-15000(width)-15000(of)-14000(the)]TJ /T10 1 Tf 620 0 TD (text)Tj /T15 1 Tf 99 0 TD (sub)Tj 60.9999 0 TD [(widget)-15000(correctly)]TJ 289.0001 0 TD 21 Tc [(.U)21000(n)]TJ 85.9999 0 TD 0 Tc [(til)-14000(this)-14000(bug)-15000(is)-15000(\014xed)]TJ -1303.9999 50 TD [(in)-13000(TK,)-13000(the)]TJ /T10 1 Tf 206 0 TD (auto)Tj /T15 1 Tf 104.9999 0 TD [(mo)-1000(de)-13000(will)-12000(b)-1000(eha)]TJ 275.0001 0 TD 0 Tw (v)Tj 20.9999 0 TD [(e)-13000(the)-14000(same)-13000(w)]TJ 235 0 TD (a)Tj 20.0001 0 TD [(y)-12000(a)0(s)-14000(the)-14000(b)-1000(oth)-13000(mo)-1000(de)-13000(for)-13000(the)-13000(TixScrolledT)]TJ 732 0 TD (ext)Tj -1594 50 TD (widget.)Tj 62 73 TD [(Another)-15000(scrolled-widget)-15000(is)]TJ /T10 1 Tf 490 0 TD (TixScrolled)Tj 239.9999 0 TD (Wind)Tj 116 0 TD (o)Tj 23.0001 0 TD (w)Tj /T15 1 Tf 34 0 TD [(.)-16000(Sometimes)-12000(y)]TJ 256.9999 0 TD [(ou)-14000(ha)]TJ 101.0001 0 TD (v)Tj 20.9999 0 TD [(e)-14000(a)-14000(large)-14000(n)]TJ 191.0001 0 TD (um)Tj 58 0 TD 1 Tc [(be)1000(r)]TJ -1593 50 TD 0 Tc [(of)-10000(widgets)-11000(that)-11000(can't)-10000(p)-1000(ossibly)-11000(b)-1000(e)-11000(sho)]TJ 647 0 TD [(wn)-11000(in)-10000(the)-11000(screen)-13000(all)-9000(at)-11000(once)-11000(and)-11000(y)]TJ 590.9999 0 TD [(our)-10000(application)-9000(do)-1000(esn't)]TJ -1237.9999 50 TD (allo)Tj 65 0 TD 13 Tc (wy)Tj 64 0 TD 0 Tc [(ou)-15000(to)-14000(divide)-15000(the)-15000(widgets)-15000(in)]TJ 492 0 TD [(to)-14000(sev)]TJ 106 0 TD [(eral)-16000(pages)-15000(of)-14000(a)-15000(TixNoteBo)-1000(ok.)-21000(In)-15000(this)-14000(case)-16000(y)]TJ 802 0 TD [(ou)-15000(can)]TJ -1529 50 TD [(use)-15000(TixScrolledWindo)]TJ 399.9999 0 TD [(w.)-18000(It)-14000(con)]TJ 166.0001 0 TD [(tains)-15000(a)-14000(frame)-13000(sub)]TJ 315.9999 0 TD [(widget)-14000(called)]TJ /T12 1 Tf 252.0001 0 TD (window)Tj /T15 1 Tf 131.9999 0 TD 19 Tc (.Y)Tj 59 0 TD 0 Tc [(ou)-13000(can)-15000(just)-14000(create)]TJ -1324.9999 50 TD [(as)-14000(man)]TJ 129.9999 0 TD [(y)-11000(widgets)-14000(as)-13000(y)]TJ 254.0001 0 TD [(ou)-13000(need)-15000(as)-13000(c)]TJ 221 0 TD [(hildren)-14000(of)-13000(the)]TJ /T12 1 Tf 258.9999 0 TD (window)Tj /T15 1 Tf 144 0 TD (sub)Tj 61 0 TD [(widget.)-18000(An)-14000(example)-12000(is)-13000(sho)]TJ 480.0001 0 TD [(wn)-13000(in)]TJ -1549 48.9998 TD [(program)-9000(2.5,)-10000(whic)]TJ 321 0 TD [(h)-10000(uses)-12000(the)-12000(TixScrolledWindo)]TJ 515 0 TD [(w)-9000(widget)-10000(to)-11000(implem)]TJ 352.9999 0 TD (en)Tj 40 0 TD 8 Tc [(ta)-3000(\\)8000(c)]TJ 94.0001 0 TD 0 Tc [(heap")-11000(spreadsheet)]TJ -1323 50 TD [(application.)-16000(The)-13000(b)-1000(o)]TJ 358 0 TD [(xes)-13000(of)-12000(the)-13000(spreadsheet)-15000(are)-13000(just)-13000(en)]TJ 597 0 TD [(try)-13000(widgets)-13000(and)-12000(they)-13000(are)-13000(pac)]TJ 515.9999 0 TD (k)Tj 21.0001 0 TD [(ed)-13000(inside)]TJ -1492 50 TD (the)Tj /T12 1 Tf 72 0 TD (window)Tj /T15 1 Tf 146 0 TD (sub)Tj 60.9999 0 TD [(widget.)-21000(The)-16000(user)-16000(will)-13000(b)-1000(e)-16000(able)-14000(to)-15000(scroll)-15000(to)-14000(di\013eren)]TJ 899.9999 0 TD [(t)-16000(parts)-16000(of)-14000(the)-16000(spreadsheet)]TJ -1178.9999 50 TD [(if)-13000(it)-14000(is)-13000(to)-1000(o)-14000(large)-14000(to)-13000(\014t)-14000(in)-14000(one)-14000(screen.)]TJ ET q 396 0 0 -0.96 125.976 497.196 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 487.38 Tm [(Program)-15000(2.5)]TJ /T15 1 Tf 273 0 TD [(Cheap)-15000(Spreadsheet)-16000(Application)-12000(with)-14000(TixScrolledWindo)]TJ 1008 0 TD (w)Tj ET q 396 0 0 -0.48 125.976 483.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 474.9 Tm (tixScrolledWindo)Tj 351 0 TD [(w)-19000(.sw)-21000(-scrollbar)-20000(auto)]TJ -351 50 TD [(set)-21000(f)-22000([.sw)-21000(subwidget)-19000(window])]TJ 0 99 TD [(for)-21000({set)-21000(x)-22000(0)0(})-21000({$x)-21000(<)-22000(10})-21000({incr)-21000(x})-21000({)]TJ 86.9999 50 TD [(frame)-21000($f.f$x)]TJ T* (pack)Tj 131 0 TD [($f.f$x)-20000(-side)-21000(top)-21000(-expand)-21000(yes)-21000(-fill)-20000(both)]TJ -131 50 TD [(for)-21000({set)-21000(y)-22000(0)0(})-21000({$y)-21000(<)-22000(10})-21000({incr)-21000(y})-21000({)]TJ 87.0001 50 TD [(entry)-21000($f.f$x.e$y)-20000(-width)-20000(10)]TJ 0 48.9999 TD [(pack)-21000($f.f$x.e$y)-20000(-side)-21000(left)-21000(-fill)-20000(x)]TJ -87.0001 50 TD (})Tj -86.9999 50 TD (})Tj 0 100 TD [(pack)-21000(.sw)-21000(-side)-21000(left)-21000(-expand)-20000(yes)-21000(-fill)-21000(both)]TJ ET q 396 0 0 -0.48 125.976 317.436 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 140.88 294.9 Tm [(There)-20000(are)-19000(t)]TJ 214 0 TD (w)Tj 29 0 TD [(o)-18000(more)-18000(scrolled-widgets)-19000(in)-18000(the)-20000(Tix)-18000(library:)]TJ /T10 1 Tf 825 0 TD (TixScrolledTLi)Tj 315.9999 0 TD (st)Tj /T15 1 Tf 53.0001 0 TD [(scrolls)-19000(a)]TJ -1499 50 TD [(TixTList)-16000(widget)-16000(and)]TJ /T10 1 Tf 399 0 TD (TixScrolledHLi)Tj 320 0 TD (st)Tj /T15 1 Tf 50.9999 0 TD [(scrolls)-16000(a)-16000(TixHList)-16000(widget.)-25000(The)-17000(sub)]TJ 651 0 TD [(widgets)-17000(that)]TJ -1420.9999 50 TD [(they)-12000(scroll)-11000(are)-11000(called)]TJ /T12 1 Tf 378 0 TD (tlist)Tj /T15 1 Tf 121 0 TD (and)Tj /T12 1 Tf 78 0 TD (hlist)Tj /T15 1 Tf 110 0 TD [(,)-10000(resp)-1000(ectiv)]TJ 181 0 TD (ely)Tj 48.9999 0 TD [(.)-18000(The)-12000(use)-12000(of)-10000(the)-12000(TList)-11000(and)-11000(HList)-12000(widgets)]TJ -916.9999 48.9999 TD [(will)-12000(b)-1000(e)-15000(describ)-1000(ed)-16000(in)-13000(the)-15000(next)-14000(c)]TJ 549 0 TD (hapters.)Tj ET endstream endobj 152 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 153 0 obj << /Type /XObject /Subtype /Image /Name /Im17 /Width 209 /Height 183 /BitsPerComponent 8 /ColorSpace 154 0 R /Length 1380 /Filter /FlateDecode >> stream H‰ì—–£ …k3ëì¾ÿ o+" K h¬Ü3ÿäÉãqMg;׎k¯GÏŒ¦ì“Ó•wm@&tC ‰Óƒ½kB¬kè¸ÕOH2®‡ªÔµi¤óÀéu|.¿Fe]‹–OO pì „®ŸG=UxÎJh™è(T;)ÅŠâŸT›~«y–q-ÄZC‡…–倜[ûîꥄ¦\M‡-@4/R"mk豦kÏb \O"e€¶™'ÖÉQN;$˜j Ú§é+Ä-ù+±÷¾¨´Î=^¥®y Þþ¦•dÍݦŸ«Ëƒ¬Sî€È@æ4€¬kYײ®d]{@®¢b ùú@Æuo xéHçjìI€àïK1ö>[-ýHÄÙÓ¬`À]¼aЍLMÎÞræm!óu@ƒ̨{ˆn´±ö°ÖR+Ðú’‹fåÂ/˜@¨ãê èqAu >l;"ͰÍÙ{»OF¨%lóûP7±öâ6é­ÆäôÐÔ®Èü²®d]Èºî ¤’TcO4 ÉûQã<×O¡="ÄyUÖ‘:ÿ“nJí5çr.áÅI©Ò¼Ì玛 `’z…ò!):x3àêAˆ|6|ì áê+€Hö@ù¹}Y œ! ƒ‚3áƒB' (lóÑGhY½¯TËäK°V dÒ…áÇÕ¹£„& ?y·Œ +?œi…©Öèã…¥£„ÂN—zQ~ m+ZhîÄ¢w„Qn/(P ­ ði„±f’¬!¥°¡u¦! ŠL߇:ªÎÚ½“Ó+hYײ®d]" ¶-Uúêçm˜N%@ä¥"'Å@$ñÉôØ|¦]î  íÒ~Ê÷ -—[SSŸ¡niv’žúTÕœsæÍÍQ—mocäÿÓÆ('§Ùò¢_Z@0MæøVRKEÙöDGjÕC›/Q}Dæ®› ¹¾¹ŒPT>$!î\e„ÜÌ¡¹š“«‡ŽŠÎK€Ð$ɾÉU¬†æ :B3à†]§Ü<Ç'¬“04Ý3¡@˯híK°~kKf„Ðä€Ü«mûPNŸž©ØQŸäT¨N]j¾p«î]>\A7ú½ˆJ.©d]·úsEѱ,†ª)NÓ·ëö¡ßß²m‰ôžWÓ} w¬7ôóƒ‘ä@në2„‘¤@~'6d@!±0ä‘$@8O2äÊh„7 ôö’šœ"£É$Ðë£Ç#ä@Né HÞ8Ér ;QÎ#™r85ûC2äqê2…7’) €S›ËáN¢ÎÔ½Š•¨ ˆ^•–g«è’@Ö5€¬kYײ®d]_ô¸¾ÐÙÎhqš²ONWÞµdC7šrÊ?9];®öºNÿ¿=„I endstream endobj 156 0 obj << /Length 4057 >> stream BT /T16 1 Tf 0.24 0 0 -0.24 126 627.54 Tm 0 g /GS1 gs 0 Tc [(Chapter)-31000(3)]TJ /T11 1 Tf 0 231 TD 0 Tw (T)Tj 71 0 TD (abular)Tj 360.9999 0 TD [(Listb)-3000(o)]TJ 315.9999 0 TD (x)Tj 99.0001 0 TD (and)Tj 224.9999 0 TD (Displa)Tj 317 0 TD (y)Tj -1388.9999 124 TD (Items)Tj /T14 1 Tf 0 264.9999 TD (3.1)Tj 153 0 TD [(tixTList)-24000({)-22000(The)-23000(Tix)-23000(T)]TJ 619 0 TD [(abular)-24000(Listb)-2000(o)]TJ 390.9999 0 TD [(x)-24000(Widget)]TJ /T13 1 Tf -1162.9999 124 TD (TixTList)Tj /T15 1 Tf 174 0 TD [(is)-13000(the)-14000(T)]TJ 138.9999 0 TD [(abular)-12000(Listb)-1000(o)]TJ 242.0001 0 TD [(x)-13000(Widget.)-17000(It)-13000(displa)]TJ 347 0 TD [(ys)-13000(a)-13000(list)-12000(of)-13000(items)-12000(in)-13000(a)-13000(tabular)-12000(format.)-16000(F)]TJ 711 0 TD (or)Tj -1613 50 TD [(example)-12000(the)-14000(TixTList)-12000(widget)-13000(in)-13000(\014gure)-14000(3.1)-12000(displa)]TJ 877 0 TD [(ys)-12000(\014les)-14000(in)-13000(a)-13000(directory)-14000(in)-12000(ro)]TJ 473.9999 0 TD [(ws)-14000(and)-13000(columns.)]TJ -1288.9999 73 TD [(TixTList)-18000(do)-1000(es)-20000(all)-17000(what)-19000(the)-19000(standard)-19000(Tk)-19000(listb)-1000(o)]TJ 876.9999 0 TD [(x)-18000(widget)-18000(can)-19000(do,)-20000(i.e,)-19000(it)-18000(displa)]TJ 560.0001 0 TD [(ys)-18000(a)-18000(list)]TJ -1499 50 TD [(of)-19000(items.)]TJ 196.9999 0 TD (Ho)Tj 51.0001 0 TD (w)Tj 29 0 TD (ev)Tj 38.9999 0 TD [(er,)-21000(TixTList)-19000(is)-19000(sup)-1000(erior)-21000(to)-19000(the)-20000(listb)-1000(o)]TJ 696.9999 0 TD [(x)-19000(widget)-19000(is)-20000(man)]TJ 307 0 TD [(y)-17000(resp)-1000(ects.)]TJ 231.0001 0 TD (First,)Tj -1551 50 TD [(TixTList)-15000(allo)]TJ 243.9999 0 TD [(ws)-14000(y)]TJ 81 0 TD [(ou)-15000(to)-15000(displa)]TJ 217.0001 0 TD [(y)-15000(the)-16000(items)-15000(in)-15000(a)-15000(t)]TJ 323.9999 0 TD (w)Tj 29 0 TD [(o)-15000(dimensional)-13000(format.)-21000(This)-15000(w)]TJ 547.0001 0 TD (a)Tj 20 0 TD (y)Tj 18.9999 0 TD 15 Tc (,y)Tj 48.0001 0 TD 0 Tc [(ou)-15000(can)]TJ -1529 50 TD (displa)Tj 106 0 TD [(y)-13000(more)-13000(items)-13000(at)-13000(a)-14000(time.)-17000(Usually)]TJ 580 0 TD [(,)-12000(the)-15000(user)-15000(can)-14000(lo)-1000(cate)-14000(the)-14000(desired)-15000(items)-13000(m)]TJ 738.9999 0 TD (uc)Tj 40 0 TD [(h)-13000(faster)-14000(in)]TJ -1464.9999 48.9999 TD 14 Tc (at)Tj 50 0 TD 0 Tc (w)Tj 29 0 TD [(o)-13000(dimensional)-12000(list)-13000(than)-14000(the)-14000(one)-14000(dimensional)-12000(list)-13000(displa)]TJ 980 0 TD (y)Tj 21 0 TD [(ed)-14000(b)]TJ 76.9999 0 TD [(y)-13000(the)-15000(Tk)-14000(listb)-1000(o)]TJ 273.0001 0 TD [(x)-13000(widget.)]TJ -1368 74 TD [(In)-11000(addition,)-10000(while)-11000(the)-11000(Tk)-11000(listb)-1000(o)]TJ 559 0 TD [(x)-10000(widget)-11000(can)-11000(only)-10000(displa)]TJ 429.9999 0 TD [(y)-10000(text)-12000(items,)-10000(the)-12000(TixTList)-10000(widget)]TJ -1050.9999 50 TD [(can)-12000(displa)]TJ 179.9999 0 TD 11 Tc (yam)Tj 100.0001 0 TD 0 Tc [(ultitude)-10000(of)-12000(t)]TJ 213.9999 0 TD [(yp)-1000(es)-12000(of)-11000(items:)-16000(text,)-13000(images)-10000(and)-12000(widgets.)-17000(Also,)-12000(while)-11000(y)]TJ 968.9999 0 TD [(ou)-11000(can)-12000(use)]TJ -1462.9999 49.0001 TD [(only)-12000(one)-14000(fon)]TJ 221.9999 0 TD [(t)-12000(and)-13000(one)-13000(color)-13000(in)-13000(a)-12000(listb)-1000(o)]TJ 465.0001 0 TD [(x)-13000(widget,)-12000(y)]TJ 200 0 TD [(ou)-13000(can)-13000(use)-14000(man)]TJ 281.9999 0 TD [(y)-11000(di\013eren)]TJ 166 0 TD [(t)-14000(fon)]TJ 86 0 TD [(ts)-13000(and)-13000(colors)]TJ ET q 156.744 0 0 137.232 245.52 165.82 cm /Im17 Do Q BT 0.24 0 0 -0.24 170.4 143.94 Tm [(Figure)-14000(3.1:)-17000(Files)-14000(Displa)]TJ 427.9999 0 TD (y)Tj 21.0001 0 TD [(ed)-13000(in)-13000(a)-14000(TixTList)-13000(Widget)-13000(in)-14000(a)-13000(T)]TJ 569.9999 0 TD [(abular)-13000(F)]TJ 153 0 TD (ormat)Tj -553 113 TD (31)Tj ET endstream endobj 157 0 obj << /ProcSet [/PDF /Text /ImageC /ImageI] /Font << /T11 21 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R /T16 7 0 R >> /XObject << /Im17 153 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS14 154 0 R >> >> endobj 154 0 obj [/Indexed /DeviceRGB 15 159 0 R] endobj 159 0 obj << /Filter /ASCII85Decode /Length 48 >> stream kih5NEcT%6_>jQ9e'lcpIX^VKli7"bnGe%=s763jzzzz~> endstream endobj 160 0 obj << /Type /XObject /Subtype /Image /Name /Im18 /Width 196 /Height 204 /BitsPerComponent 8 /ColorSpace 161 0 R /Length 1780 /Filter /FlateDecode >> stream H‰ì— bã E›ªãúþ'ž¤,ZØJŸImÆz øúzgÝ®6€©`ͽê;£[¶æ å­¹-†õ 7M_jéUR­a ç-0CÅZfo¶j­¹-†©:‹œ²µf•µF„Âó ýµGÊ3çïÉ Ï!œÅ­¼ßüý‡p¡Ö¹Z|ž'¯cTo;fÿs÷ßâ‡pIUvºâ—ÃÐÀ µÈ2H“AÚKîécÑ~Îà,™Ã@]I kŽ! _šÁÀ‘>1î1^Ä{ɃÎàS¢z†\O0ò‹ ²l$CA ]=Ð"â$†4¢Õ•õ›Ô®¬çíqX}iYy-b2ŒC¸.oU­íK:zjO§¨ÖšÀ0Ûž™òÆûüèöó‚ ¶{_zQ‹á"-Z 6´lh1ØP‰áŸaU3lfõ»Lè€üÕêíÓ€|— ž°~0Ã_§?c¶†m Cø;šܘƒ{ÿ=ÙÈ'kÞ‚°‘#\÷m €?¿Õ+ ¼/3ª•û!ÓÍzg¾ÅêE#ÂÞ(áž„Á•610¿7‘Ô\î·¢ÎÑ3¾ô< MÁ/0Úç¯bÚ<ˆîÈÇ”Jáƒ}‘öë/- èàAg kkhÔø³ÞµÕ¦ƒ -Z 6´l¨/çËH©éØ“ó=ëAÇb:X,§ hõvC׺äWÓ¢Z4+2ì~A˜Þ#Góº„û4]A/¡X<Ð}:Y[ã½_Y[[×¥²ŽÂršÆ0ÔíS³4hŽ’Á©ú¸ÜÛ¨ƒ -jf( Y6™Öt(wÓ6L†2€¼™ËP°°ÙöÙ êÁ6þÝYš‰OZò_Á“w’3BÌ)¡“A;ØÆbí1ø;ý 2wïfPÇ•‡4q2]1M²äÖ?Ë€v“Aö¥Ä߯1ø³H/Ãá¡p㳓”ôúRŒ…pŠäçÛ—cØ6Æð¸¶1”¶¾` Í"Þ’52 íáçëZÊ[²O{4Ò–¯OO0ü-©‘ake°§7`€×gð;õK3x-Z 6ô‰ ÊQ*sº’­r§°P­VõÜÊ YRó%—næ[ê5“”~«Z^ÀO³àÒ/ðùd,Œ•ÒÚÒ§Ó±7ÿ^l2‡!~U;Ù&…h®­î»dÁ[|ˆ-9&÷I“ñ Vµlh1ØÐb°¡Å`CÍ ûžïl(W³åêžÖ@†=oè£pÁ`wÉT™cÃMœ‡Ú¸“zÿègÉã Ô´>o _bL,–í"I¬¹ŒAØÅàhqÒÍ–o_ɀν‹³ õLî>ÒÆ@Šôypõú pƒp”*†1[FCXÿ1Vwa‘wŒe%vð­1ëmS< ÷+kk¤ Å{żút†áz†A[÷• £’À̽ j1ØP=ï]Õ2¼Šƒ ½;Ã?êfëÙ6g‰©[Ly³¾ýá÷÷s”êv!ÛÃðX¯eøù¡í nK¹šR´2„Mñz¤hcÀmÝC ha ‰‰ GQÏÀ—a+ Ãt†›“èRXa¸­œgû—SHaƒáAă³½°. Ž gp×3‚¾}úAq5ôæKI$Ì@ zîW%ƒœ–J†9¹öÕ2¼Šƒ -Z 6´lh1ØÐ;2|½¤ÃÕÆtŠ2hºek®PÞšÅp¦ÞŸá–S¾æ ¬±ehŸþ¥Y©õ endstream endobj 163 0 obj << /Length 6948 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (32)Tj /T9 1 Tf 504 0 TD [(CHAPTER)-15000(3.)-31000(T)]TJ 314.9999 0 TD [(ABULAR)-14000(LISTBO)]TJ 347 0 TD [(X)-14000(AND)-14000(DISPLA)]TJ 305 0 TD [(Y)-14000(ITEMS)]TJ ET q 147.024 0 0 153 250.56 565.02 cm /Im18 Do Q BT /T15 1 Tf 0.24 0 0 -0.24 189.6 543.06 Tm [(Figure)-14000(3.2:)-17000(Emplo)]TJ 332.9999 0 TD 0 Tw (y)Tj 21.0001 0 TD [(ee)-12000(Names)-13000(Displa)]TJ 297.9999 0 TD (y)Tj 21 0 TD [(ed)-13000(in)-14000(a)-13000(TixTList)-14000(Widget)]TJ -937.9999 187 TD [(in)-17000(a)-17000(TixTList)-16000(widget.)-29000(In)-17000(\014gure)-18000(3.1,)-16000(w)]TJ 715.9999 0 TD [(e)-18000(use)-18000(graphical)-16000(images)-16000(inside)-17000(a)-17000(tixTList)-17000(widget)-17000(to)]TJ -715.9999 50.0001 TD (represen)Tj 146.9999 0 TD [(t)-16000(\014le)-13000(ob)-2000(jects.)-19000(In)-13000(\014gure)-14000(3.2,)-12000(w)]TJ 528.9999 0 TD [(e)-14000(displa)]TJ 138 0 TD [(y)-12000(the)-14000(names)-13000(of)-13000(all)-12000(emplo)]TJ 445.0001 0 TD (y)Tj 21 0 TD [(ees)-12000(of)-13000(a)-13000(h)]TJ 166.9999 0 TD [(yp)-1000(othetical)]TJ -1446.9999 50 TD (compan)Tj 140.9999 0 TD (y)Tj 19.0001 0 TD [(.)-16000(Notice)-14000(the)-15000(use)-14000(of)-14000(a)-13000(b)-1000(old)-14000(fon)]TJ 533 0 TD [(t)-13000(t)0(o)-14000(highligh)]TJ 225.9999 0 TD [(t)-12000(all)-13000(emplo)]TJ 195 0 TD (y)Tj 21 0 TD [(ees)-13000(whose)-14000(\014rst)-15000(name)-12000(is)-14000(Jo)-1000(e.)]TJ /T14 1 Tf -1134.9999 278.9999 TD (3.2)Tj 153 0 TD (Displa)Tj 182.9999 0 TD [(y)-24000(Items)]TJ /T15 1 Tf -335.9999 138 TD [(Before)-14000(w)]TJ 157.9999 0 TD [(e)-13000(rush)-13000(to)-12000(discuss)-14000(ho)]TJ 351.9999 0 TD [(w)-13000(t)0(o)-12000(create)-14000(the)-14000(items)-11000(inside)-13000(a)-12000(TixTList)-12000(widget,)-13000(let's)-12000(\014rst)-14000(sp)-1000(end)]TJ -509.9999 49.0001 TD [(some)-14000(time)-14000(on)-16000(a)-15000(v)]TJ 318 0 TD [(ery)-15000(imp)-1000(ortan)]TJ 238.9999 0 TD [(t)-14000(topic)-15000(ab)-1000(out)-15000(the)-16000(Tix)-15000(library:)-20000(the)-16000(repationship)-16000(b)-1000(e)0(t)]TJ 931 0 TD (w)Tj 29.0001 0 TD [(een)-16000(the)]TJ -1517 50 TD (displa)Tj 106 0 TD [(y)-13000(items)-13000(and)-14000(their)-14000(host)-14000(widgets.)]TJ -44 74 TD (W)Tj 40 0 TD [(e)-12000(can)-13000(b)-1000(etter)-14000(de\014ne)-14000(the)-13000(terms)-12000(b)]TJ 551.9999 0 TD [(y)-12000(taking)-12000(a)-12000(quic)]TJ 268.0001 0 TD [(k)-12000(preview)-13000(of)-12000(the)-13000(TixHList)-12000(widget,)-12000(whic)]TJ 704.9998 0 TD (h)Tj -1626.9998 49.9999 TD [(will)-11000(b)-1000(e)-14000(co)]TJ 171 0 TD (v)Tj 21 0 TD [(ered)-13000(in)-12000(details)-13000(in)-12000(the)-14000(next)-13000(c)]TJ 492.9999 0 TD [(hapter.)-18000(Let's)-14000(compare)-11000(the)-14000(items)-12000(displa)]TJ 700 0 TD (y)Tj 21 0 TD [(ed)-12000(on)-12000(the)-13000(t)]TJ 194.0001 0 TD (w)Tj 28.9998 0 TD (o)Tj -1628.9998 49 TD [(widgets)-13000(in)-12000(\014gure)-13000(3.3.)-17000(If)-12000(w)]TJ 462 0 TD [(e)-13000(tak)]TJ 88.9999 0 TD [(e)-13000(a)-12000(close)-13000(lo)-1000(ok)-12000(at)-12000(the)-14000(item)-11000(that)-13000(sho)]TJ 612 0 TD [(ws)-13000(the)]TJ /T12 1 Tf 129.0001 0 TD (usr)Tj /T15 1 Tf 77.9999 0 TD [(directory)-13000(in)-12000(the)]TJ -1369.9999 50 TD [(TixTList)-15000(widget)-15000(on)-15000(the)-17000(left)-15000(v)]TJ 542 0 TD [(ersus)-16000(the)-17000(TixHList)-15000(widget)-15000(on)-15000(the)-16000(righ)]TJ 696.9999 0 TD [(t,)-15000(w)]TJ 72.0001 0 TD [(e)-16000(can)-16000(see)-16000(that)-16000(this)]TJ -1311 50 TD [(item)-13000(app)-1000(ears)-14000(exactly)-14000(the)-15000(same)-13000(on)-13000(b)-1000(oth)-14000(widgets.)]TJ 62 73.0001 TD [(If)-19000(fact,)-19000(all)-18000(the)-20000(items)-17000(in)-19000(these)-20000(t)]TJ 581 0 TD (w)Tj 29 0 TD [(o)-19000(widgets)-19000(are)-19000(of)-18000(the)]TJ /T13 1 Tf 397.9999 0 TD (same)Tj /T15 1 Tf 110.0001 0 TD (t)Tj 14.9999 0 TD [(yp)-1000(e:)-28000(they)-20000(all)-17000(displa)]TJ 371.0001 0 TD 18 Tc [(ya)18000(n)]TJ -1566 49.9999 TD 0 Tc [(image)-12000(next)-15000(to)-14000(a)-14000(textual)-14000(name.)-18000(The)-14000(only)-13000(di\013erence)-17000(b)-1000(e)0(t)]TJ 990 0 TD (w)Tj 28.9999 0 TD [(een)-15000(these)-16000(t)]TJ 196.0001 0 TD (w)Tj 28.9999 0 TD [(o)-13000(widgets)-15000(is)-14000(ho)]TJ 270 0 TD [(w)-14000(these)]TJ -1513.9999 50 TD [(items)-16000(are)-17000(arranged.)-26000(The)-18000(TixTList)-16000(widget)-16000(arranges)-17000(the)-18000(items)-15000(in)-16000(ro)]TJ 1231.9999 0 TD [(ws)-17000(and)-17000(columns,)-15000(while)]TJ -1231.9999 50 TD [(the)-14000(TixHList)-14000(widget)-14000(arranges)-14000(the)-15000(items)-13000(in)-13000(a)-14000(hierac)]TJ 922.9999 0 TD [(hical)-13000(format.)]TJ -860.9999 73.0001 TD [(With)-17000(this)-18000(observ)]TJ 309.9999 0 TD [(ation)-17000(in)-17000(mind,)-16000(w)]TJ 312.9999 0 TD [(e)-18000(can)-17000(see)-19000(a)-17000(separation)-18000(of)-17000(tasks)-18000(b)-1000(erw)]TJ 676.0001 0 TD [(een)-19000(the)-18000(widgets)]TJ -1361 50 TD [(and)-16000(the)-16000(items)-14000(they)-17000(displa)]TJ 470 0 TD (y)Tj 18.9999 0 TD 22 Tc (.W)Tj 73.9999 0 TD 0 Tc [(e)-15000(call)-15000(the)-16000(TixHList)-15000(and)-16000(TixTList)-15000(widgets)-16000(in)-15000(\014gure)-16000(3.3)]TJ /T13 1 Tf 1013.9999 0 TD (host)Tj -1576.9998 50 TD (widgets)Tj /T15 1 Tf 131 0 TD [(:)-16000(their)-13000(task)-12000(is)-11000(to)-12000(arrange)-12000(the)-12000(items)-11000(according)-12000(to)-12000(their)-12000(particular)-11000(rules.)-18000(Ho)]TJ 1312.9999 0 TD (w)Tj 29 0 TD (ev)Tj 39.0001 0 TD [(er,)-12000(they)]TJ -1512 50 TD [(don't)-14000(really)-14000(care)-15000(what)-14000(these)-16000(items)-14000(displa)]TJ 740.9999 0 TD [(y;)-13000(they)-15000(just)-14000(treat)-16000(the)-15000(items)-13000(as)-15000(rectangle)-15000(b)-1000(o)]TJ 783.0001 0 TD [(xes.)-20000(In)]TJ -1524 50 TD (con)Tj 61 0 TD [(trast,)-14000(these)-15000(items,)-13000(whic)]TJ 421.9999 0 TD [(h)-13000(are)-14000(called)]TJ /T13 1 Tf 223.0001 0 TD [(display)-15000(items)]TJ /T15 1 Tf 249 0 TD [(in)-13000(Tix)-13000(terminology)]TJ 339.9999 0 TD [(,)-11000(con)]TJ 84 0 TD [(trols)-14000(the)-14000(visual)]TJ -1378.9999 48.9999 TD [(information)-11000(they)-15000(displa)]TJ 424.9999 0 TD (y)Tj 19 0 TD [(,)-12000(suc)]TJ 80.0001 0 TD [(h)-15000(a)0(s)-14000(the)-14000(images,)-12000(text)-15000(strings,)-14000(colors,)-14000(fon)]TJ 726.9999 0 TD [(ts,)-13000(etc.)-19000(Ho)]TJ 191.0001 0 TD (w)Tj 28.9999 0 TD (ev)Tj 39 0 TD [(er,)-14000(they)]TJ -1509.9999 50 TD [(don't)-13000(really)-14000(care)-14000(where)-15000(on)-14000(the)-15000(host)-14000(widget)-14000(they)-14000(will)-12000(app)-1000(ear.)]TJ ET endstream endobj 164 0 obj << /ProcSet [/PDF /Text /ImageC /ImageI] /Font << /T9 25 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R >> /XObject << /Im18 160 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS15 161 0 R >> >> endobj 161 0 obj [/Indexed /DeviceRGB 15 165 0 R] endobj 165 0 obj << /Filter /ASCII85Decode /Length 44 >> stream kih5NEcT%6_>jQ9e'lcpIX^VKli7"b+ endstream endobj 166 0 obj << /Type /XObject /Subtype /Image /Name /Im19 /Width 209 /Height 183 /BitsPerComponent 8 /ColorSpace 154 0 R /Length 1380 /Filter /FlateDecode >> stream H‰ì—–£ …k3ëì¾ÿ o+" K h¬Ü3ÿäÉãqMg;׎k¯GÏŒ¦ì“Ó•wm@&tC ‰Óƒ½kB¬kè¸ÕOH2®‡ªÔµi¤óÀéu|.¿Fe]‹–OO pì „®ŸG=UxÎJh™è(T;)ÅŠâŸT›~«y–q-ÄZC‡…–倜[ûîꥄ¦\M‡-@4/R"mk豦kÏb \O"e€¶™'ÖÉQN;$˜j Ú§é+Ä-ù+±÷¾¨´Î=^¥®y Þþ¦•dÍݦŸ«Ëƒ¬Sî€È@æ4€¬kYײ®d]{@®¢b ùú@Æuo xéHçjìI€àïK1ö>[-ýHÄÙÓ¬`À]¼aЍLMÎÞræm!óu@ƒ̨{ˆn´±ö°ÖR+Ðú’‹fåÂ/˜@¨ãê èqAu >l;"ͰÍÙ{»OF¨%lóûP7±öâ6é­ÆäôÐÔ®Èü²®d]Èºî ¤’TcO4 ÉûQã<×O¡="ÄyUÖ‘:ÿ“nJí5çr.áÅI©Ò¼Ì玛 `’z…ò!):x3àêAˆ|6|ì áê+€Hö@ù¹}Y œ! ƒ‚3áƒB' (lóÑGhY½¯TËäK°V dÒ…áÇÕ¹£„& ?y·Œ +?œi…©Öèã…¥£„ÂN—zQ~ m+ZhîÄ¢w„Qn/(P ­ ði„±f’¬!¥°¡u¦! ŠL߇:ªÎÚ½“Ó+hYײ®d]" ¶-Uúêçm˜N%@ä¥"'Å@$ñÉôØ|¦]î  íÒ~Ê÷ -—[SSŸ¡niv’žúTÕœsæÍÍQ—mocäÿÓÆ('§Ùò¢_Z@0MæøVRKEÙöDGjÕC›/Q}Dæ®› ¹¾¹ŒPT>$!î\e„ÜÌ¡¹š“«‡ŽŠÎK€Ð$ɾÉU¬†æ :B3à†]§Ü<Ç'¬“04Ý3¡@˯híK°~kKf„Ðä€Ü«mûPNŸž©ØQŸäT¨N]j¾p«î]>\A7ú½ˆJ.©d]·úsEѱ,†ª)NÓ·ëö¡ßß²m‰ôžWÓ} w¬7ôóƒ‘ä@në2„‘¤@~'6d@!±0ä‘$@8O2äÊh„7 ôö’šœ"£É$Ðë£Ç#ä@Né HÞ8Ér ;QÎ#™r85ûC2äqê2…7’) €S›ËáN¢ÎÔ½Š•¨ ˆ^•–g«è’@Ö5€¬kYײ®d]_ô¸¾ÐÙÎhqš²ONWÞµdC7šrÊ?9];®öºNÿ¿=„I endstream endobj 167 0 obj << /Type /XObject /Subtype /Image /Name /Im20 /Width 223 /Height 230 /BitsPerComponent 8 /ColorSpace 168 0 R /Length 1763 /Filter /FlateDecode >> stream H‰ì—‹–« EéÐÒ™ûÿ|U&”G œY­”Z‡m0ÉâKõh½€X,tùê‡Ðƒü†™è…>&{}=Þ“@g ]¨‡W/ÏÕ’—ó†Š]ècâå]YµÂ“R¿®+ê×äBƒÇ®,ÞéR‰ÓnâÏ?Ùñ‚µÑK•«°ÓâBßo]¯ Þ6ÔvV/ÜbYŽtÿ¢8º}cè4¡…ÑX`_‡½égJ[vFJà½ùxÞ )xz‘uð(º}§º#<ºžß±ÅáEÏ_<¼Kx{[G]éTÞ!„8žRñ¹‚x’ ™X¼[‘ÒT/ azü †hY€‘K( ÍÊz-ÑxXâû¼ÇQØ\sÅ.Ôà•^O#í\{ùxŽ%ƒµoÎñð¼goÁ{u©•™OmxûV4G…ã‰î¤ žÏ ñÖÎð0Wb½‰‚xJ™„™Š'ß‹BvxpDãI#{‘.äã@ñôPÏžâ)-»~ e¯Ìï ‡çxÒÃ{;±ÅÓ#¾ x,è ÞÞ®ìã3¼mö…g‚·…o¼èYºýÃM<tÏo%KÌœà³ðJ¬{üñ`ð´´®¯{,dð6âBKÍ m•×R»ÙÁðT Ñðà£÷ns–ÀãhÊá¡°¶ráQŰ1_6¼ •Ak¡4oû¤¥·o1<²Í–àX<¶íðDT›o7Fgxns–V“èm94žO‚¨õ…o=«Ïg/X Ïh®…ÒÄ+©‰—I4ÒÿþÂÿ8Q]<ÌJòì ªŠ‡zÀaððZhŒŸö-eU<¼“^·f†yÄo€~4ŠãA ˆÇox¼±SKÇ…¡¾œ-õÄ£eñ¤L~e¸5õ¢÷›¬þðÖ¤0x‡nñ¶õË¿E>‰‡'½ÉûtEñ¼" Ê'÷ÐþÂ#w<¥¥#¨w¦•ÇçGÍÆ’?ž„xÿþ쌠cíoÑÂ…»Ogñ^žrámÊò,tN€ßœùðÂÙ2›sÙ“(Ý¡<äÞœuðþÁëOyÏ‚W¥î•Á êž„[3xÜ:Äۨ숬{¤˜oÎU¥ªZ×"® DMx@ò*Ù¦z=§ Þ!‚ ¼ðhßųýœàùì…~Ç;Ýœ:³ˆ«!l=˜8Nž½‰‡¨jæÄð>Ô=ÎxA¸ŠÇ´¬Ã AÖ½’š-õÄ£5ñJбßË!N~Ïö˜Áñ†ù=3wÄÈï¡x7Õ¼)Ðç?s7lžaå÷üè]·y¤yôü Òsj9Çë>sž¢îðý^geÝ,ÛŽ¿ÃïUl³'ÞÄ£5ñH˜á>´Ç£=àx˜Ì·{[㡵ÐxyÛ64ÇC;™Ý/H7¼(žxûÛýƳ Ô€xp<ñ†Ã©…ºHœxâÁÂ@\$NÍñÊzÀÖx…5ñ&­‰Gû½“©È[ÔïÄïL1Å;šÄïÅ\'îßWÇSZfžð{ÎçÉc…_g¤Àv5 < ñˆžS†/Љ¯.ñà™Šì×êãmÛP}ò{1x\ïÑû .ðdWx*¤âÅ /(Ÿð@a€kaç¦ß»£‰7ñhM<ÔïEÖµOj‡û½Nñ¢üžDzEÍ»Òï9ËwCÍñè®%¦éú$ÎxØïÅØïõ‰7xô&^Ç©%ÞïõX¹/ñ{…Úì‰7ñhM> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(3.2.)-31000(DISPLA)]TJ 249 0 TD [(Y)-13000(ITEMS)]TJ /T15 1 Tf 1358.9998 0 TD (33)Tj ET q 156.704 0 0 137.2119 90.06 577.02 cm /Im19 Do Q q 139.6538 0 0 144.1322 418.56 571.98 cm /Im20 Do Q q 40.0417 0 0 13.3426 301.56 703.02 cm BI /W 54 /H 18 /BPC 8 /CS /CS17 /F /Fl ID H‰äÑK P§ûºPû‘E³jÑ,‚„‡Z"‚¥–)bÆ´¢V‚,x«¹Ÿ+T»0Vè·{Õ&ä”MÇ+a”½8¥ ÷ŠþëÃdè EI Q 0 G 0 J 0 j 0.45 w 10 M []0 d 1 i 297.06 707.52 m 220.56 662.52 l S 1 1 1 rg 227.678 664.619 m 220.56 662.52 l 225.853 667.722 l 226.796 666.14 l 227.678 664.619 l b* 342.06 712.02 m 445.56 680.52 l S 439.196 684.338 m 445.56 680.52 l 438.148 680.894 l 438.702 682.586 l 439.196 684.338 l b* BT 0.24 0 0 -0.24 128.16 549.06 Tm 0 g [(Figure)-14000(3.3:)-17000(The)-14000(Same)-13000(T)]TJ 439 0 TD [(yp)-1000(e)-14000(o)0(f)-13000(Items)-14000(Displa)]TJ 355 0 TD 0 Tw (y)Tj 21 0 TD [(ed)-12000(in)-14000(a)-13000(TixTList)-14000(\(left\))-14000(and)-13000(a)-14000(TixHList\(righ)]TJ 786 0 TD (t\))Tj /T8 1 Tf -1610 136.0002 TD (3.2.1)Tj 171 0 TD (Adv)Tj 100 0 TD (an)Tj 56 0 TD [(tages)-19000(of)-19000(Displa)]TJ 360.9999 0 TD [(y)-18000(Items)]TJ /T15 1 Tf -687.9999 100.9998 TD [(It)-18000(is)-18000(easy)-19000(to)-18000(see)-19000(the)-19000(adv)]TJ 456.9999 0 TD (an)Tj 43.0001 0 TD [(tages)-18000(of)-17000(sep)-1000(erating)-20000(the)-18000(displa)]TJ 546.9999 0 TD [(y)-17000(items)-18000(from)-16000(their)-19000(host)-18000(widgets.)]TJ -1046.9999 49.0001 TD [(First,)-14000(the)-15000(displa)]TJ 290.9999 0 TD [(y)-13000(items)-14000(are)-14000(easy)-15000(to)-14000(learn.)-19000(Since)-15000(they)-14000(are)-15000(the)-15000(same)-13000(across)-15000(di\013eren)]TJ 1184 0 TD 15 Tc (tt)Tj 46 0 TD 0 Tc [(yp)-1000(es)-16000(of)]TJ -1520.9999 50 TD [(widgets.)-22000(Once)-16000(y)]TJ 298 0 TD [(ou)-15000(learn)-15000(ab)-1000(out)-15000(a)-15000(t)]TJ 335 0 TD [(yp)-1000(e)-15000(o)0(f)-15000(displa)]TJ 233.9999 0 TD [(y)-14000(items,)-14000(y)]TJ 181 0 TD [(ou)-14000(will)-14000(kno)]TJ 203 0 TD 15 Tc [(wh)15000(o)]TJ 88 0 TD 0 Tc [(w)-14000(t)0(o)-15000(use)-16000(them)-14000(in)]TJ -1338.9999 50 TD [(all)-12000(Tix)-13000(widgets)-13000(that)-13000(supp)-1000(ort)-14000(displa)]TJ 631 0 TD [(y)-13000(items)-12000(\(curren)]TJ 274 0 TD [(tly)-14000(these)-15000(include)-13000(TixHList,)-13000(TixTList)-12000(and)]TJ -905 50 TD [(the)-17000(spreadsheet)-19000(widget)-16000(TixGrid,)-15000(but)-17000(the)-17000(n)]TJ 787 0 TD (um)Tj 57.9999 0 TD [(b)-1000(e)0(r)-15000(i)0(s)-17000(gro)]TJ 175 0 TD [(wing\).)-24000(In)-17000(con)]TJ 254.0001 0 TD [(trast,)-17000(if)-15000(y)]TJ 175 0 TD [(ou)-16000(w)]TJ 89 0 TD (an)Tj 43 0 TD 16 Tc [(tt)16000(o)]TJ -1581 50 TD 0 Tc [(create)-17000(a)-15000(text)-17000(item)-14000(for)-15000(the)-17000(Tk)-15000(widgets,)-16000(y)]TJ 736 0 TD [(ou)-15000(will)-14000(\014nd)-16000(out)-16000(that)-15000(the)-17000(listb)-1000(o)]TJ 564.9999 0 TD [(x,)-14000(text,)-17000(can)]TJ 210.0001 0 TD (v)Tj 20 0 TD [(as)-15000(and)]TJ -1531 50 TD (en)Tj 40 0 TD [(try)-15000(widget)-15000(eac)]TJ 259.9999 0 TD 15 Tc [(hh)15000(a)]TJ 81.0001 0 TD 0 Tc (v)Tj 21 0 TD [(e)-14000(a)-15000(di\013eren)]TJ 201 0 TD [(t)-15000(metho)-1000(d)-14000(o)0(f)-14000(creating)-15000(and)-15000(manipulating)-11000(text)-15000(items,)-14000(and)-14000(it)]TJ -603 48.9999 TD [(is)-14000(quite)-14000(anno)]TJ 234 0 TD [(ying)-12000(to)-14000(learn)-14000(eac)]TJ 300.9999 0 TD [(h)-14000(o)0(f)-14000(them)-13000(individually)]TJ 405.0001 0 TD (.)Tj -878 74.0001 TD [(Second,)-11000(the)-11000(hosts)-10000(widgets)-10000(that)-10000(use)-11000(displa)]TJ 725 0 TD [(y)-9000(items)-9000(are)-10000(extensible.)-17000(Because)-12000(of)-9000(the)-11000(separation)]TJ -787 50 TD [(of)-11000(task,)-12000(the)-12000(host)-12000(widgets)-12000(are)-13000(not)-11000(in)]TJ 622 0 TD (v)Tj 21 0 TD (olv)Tj 54 0 TD [(ed)-11000(in)-11000(the)-12000(implemen)]TJ 343.9999 0 TD [(tation)-9000(details)-11000(of)-11000(the)-13000(displa)]TJ 467.9999 0 TD [(y)-10000(items.)]TJ -1508.9998 49 TD [(Therefore,)-16000(if)-14000(y)]TJ 260.9999 0 TD [(ou)-14000(add)-14000(a)-15000(new)-15000(t)]TJ 276.0001 0 TD [(yp)-1000(e)-15000(o)0(f)-14000(displa)]TJ 232.9999 0 TD [(y)-14000(items,)-13000(suc)]TJ 215 0 TD 16 Tc [(ha)16000(s)2000(a)]TJ /T12 1 Tf 126.0001 0 TD 0 Tc (animation)Tj /T15 1 Tf 210.9999 0 TD (t)Tj 15.0001 0 TD [(yp)-1000(e)-15000(that)-15000(displa)]TJ 276 0 TD (ys)Tj -1613 49.9999 TD (liv)Tj 45 0 TD [(e)-14000(video,)-15000(the)-16000(host)-15000(widgets)-16000(will)-13000(gladly)-14000(tak)]TJ 733 0 TD [(e)-15000(them)-15000(in)-14000(and)-15000(displa)]TJ 378 0 TD [(y)-15000(them.)-21000(Y)]TJ 190.9999 0 TD [(ou)-14000(don't)-15000(need)-16000(to)]TJ -1346.9999 50 TD [(mo)-1000(dify)-10000(the)-14000(existing)-12000(host)-13000(widgets)-13000(at)-13000(all.)-16000(In)-13000(con)]TJ 834 0 TD [(trast,)-14000(if)-12000(y)]TJ 169 0 TD [(ou)-12000(w)]TJ 84.9999 0 TD (an)Tj 43.0001 0 TD [(t)-12000(t)0(o)-13000(displa)]TJ 183.9999 0 TD [(y)-12000(graphical)-12000(images)]TJ -1314.9999 50 TD [(in)-12000(the)-13000(existing)-12000(Tk)-13000(listb)-1000(o)]TJ 434 0 TD [(x)-12000(widgets,)-12000(y)]TJ 215 0 TD [(ou'd)-12000(b)-1000(etter)-14000(set)-13000(aside)-13000(100)-12000(hours)-13000(to)-12000(rewrite)-13000(it)-13000(completely!)]TJ -587 73.0001 TD [(Third,)-16000(displa)]TJ 237.9999 0 TD [(y)-14000(items)-15000(are)-15000(go)-1000(o)-1000(d)-16000(for)-15000(writers)-16000(of)-15000(host)-16000(widgets.)-23000(Because)-17000(no)]TJ 1043 0 TD [(w)-15000(they)-16000(just)-16000(need)]TJ -1343 50 TD [(to)-14000(implem)]TJ 187 0 TD (en)Tj 40 0 TD [(t)-12000(the)-14000(arrangemen)]TJ 311 0 TD [(t)-13000(p)-1000(olicy)-13000(of)-14000(the)-14000(host)-14000(widgets.)-18000(They)-15000(don't)-13000(need)-15000(to)-13000(w)]TJ 917.9999 0 TD [(orry)-14000(ab)-1000(out)]TJ -1455.9999 50 TD (dra)Tj 59 0 TD [(wing)-13000(at)-14000(all)-13000(b)-1000(ecause)-16000(it)-14000(is)-14000(all)-13000(handled)-14000(b)]TJ 682.9999 0 TD [(y)-14000(the)-15000(displa)]TJ 214.0001 0 TD [(y)-13000(items.)-18000(This)-14000(is)-14000(a)-13000(signi\014can)]TJ 501.9999 0 TD 14 Tc [(ts)14000(a)]TJ 66.0001 0 TD 0 Tc [(ving)-13000(in)]TJ -1524 50 TD [(co)-1000(de)-14000(b)-1000(ecause)-14000(a)-12000(widget)-13000(that)-13000(do)-1000(es)-13000(not)-13000(use)-14000(displa)]TJ 843.9999 0 TD [(y)-11000(items)-12000(has)-13000(to)-13000(sp)-1000(end)-14000(30%)-11000(of)-13000(its)-12000(C)-13000(c)0(o)-1000(d)0(e)-14000(t)0(o)-12000(d)0(o)]TJ -843.9999 50 TD [(the)-14000(dra)]TJ 129.9999 0 TD (wing.)Tj /T8 1 Tf -129.9999 141.9999 TD (3.2.2)Tj 171 0 TD (Displa)Tj 153 0 TD [(y)-18000(Items)-17000(and)-19000(Displa)]TJ 464.9999 0 TD 19 Tc [(yS)19000(t)]TJ 100 0 TD 0 Tc (yles)Tj /T15 1 Tf -888.9999 100 TD [(The)-13000(app)-1000(earance)-13000(of)-12000(a)-12000(displa)]TJ 484.9999 0 TD [(y)-11000(item)-11000(is)-12000(con)]TJ 227.0001 0 TD [(trolled)-12000(b)]TJ 151.9999 0 TD [(y)-12000(a)-12000(set)-13000(of)-12000(attributes.)-18000(F)]TJ 407.0001 0 TD [(or)-12000(example,)-11000(the)]TJ /T12 1 Tf 292 0 TD (text)Tj /T15 1 Tf -1563 50 TD [(attribute)-11000(con)]TJ 233 0 TD [(trols)-11000(the)-12000(text)-11000(string)-11000(displa)]TJ 464.9999 0 TD (y)Tj 21.0001 0 TD [(ed)-11000(on)-10000(the)-12000(item)-10000(and)-10000(the)]TJ /T12 1 Tf 412.9999 0 TD (font)Tj /T15 1 Tf 98.0001 0 TD [(attribute)-11000(sp)-1000(eci\014es)-13000(what)]TJ -1230 50 TD (fon)Tj 56 0 TD [(t)-13000(should)-14000(b)-1000(e)-15000(used.)]TJ 6 74.0001 TD (Usually)Tj 134 0 TD [(,)-9000(eac)]TJ 77 0 TD [(h)-10000(o)0(f)-9000(the)-10000(attributes)-10000(falls)-9000(in)]TJ 446.9999 0 TD [(to)-9000(one)-9000(of)-9000(t)]TJ 175 0 TD (w)Tj 29.0001 0 TD [(o)-9000(categroies:)-17000(\\)]TJ /T13 1 Tf 257 0 TD (individual)Tj /T15 1 Tf 176.9999 0 TD 9 Tc [("o)9000(r)-1000(\\)]TJ /T13 1 Tf 98 0 TD 0 Tc (c)Tj 17 0 TD [(ol)-2000(le)]TJ 62.0001 0 TD (ctive)Tj /T15 1 Tf 84 0 TD (".)Tj -1619 48.9999 TD (F)Tj 24 0 TD [(or)-12000(example,)-12000(eac)]TJ 279 0 TD [(h)-13000(o)0(f)-12000(the)-13000(items)-12000(inside)-13000(a)-12000(TixTList)-13000(widget)-12000(ma)]TJ 777 0 TD [(y)-11000(displa)]TJ 138.9999 0 TD [(y)-12000(a)-12000(di\013eren)]TJ 200 0 TD [(t)-14000(text)-13000(string;)]TJ -1418.9999 50 TD [(therefore)-16000(w)]TJ 204 0 TD [(e)-15000(call)-15000(the)-15000(text)-15000(string)-15000(an)]TJ /T13 1 Tf 448 0 TD [(individual)-16000(attribute)]TJ /T15 1 Tf 347 0 TD 20 Tc [(.H)20000(o)]TJ 82.9999 0 TD 0 Tc (w)Tj 29.0001 0 TD (ev)Tj 38.9999 0 TD [(er,)-15000(in)-15000(most)-13000(cases,)-16000(the)-16000(items)]TJ ET endstream endobj 171 0 obj << /ProcSet [/PDF /Text /ImageC /ImageI] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /XObject << /Im19 166 0 R /Im20 167 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS14 154 0 R /CS16 168 0 R /CS17 172 0 R >> >> endobj 168 0 obj [/Indexed /DeviceRGB 15 173 0 R] endobj 173 0 obj << /Filter /ASCII85Decode /Length 52 >> stream lg*kVEH/n6_Z0Z:e'lcoI=;.qs7?8BY1r.>rr?2%70!;fzzz~> endstream endobj 172 0 obj [/Indexed /DeviceRGB 3 174 0 R] endobj 174 0 obj << /Filter /ASCII85Decode /Length 19 >> stream lg*j:!!)NgJ,fQL~> endstream endobj 175 0 obj << /Type /XObject /Subtype /Image /Name /Im21 /Width 196 /Height 204 /BitsPerComponent 8 /ColorSpace 161 0 R /Length 1780 /Filter /FlateDecode >> stream H‰ì— bã E›ªãúþ'ž¤,ZØJŸImÆz øúzgÝ®6€©`ͽê;£[¶æ å­¹-†õ 7M_jéUR­a ç-0CÅZfo¶j­¹-†©:‹œ²µf•µF„Âó ýµGÊ3çïÉ Ï!œÅ­¼ßüý‡p¡Ö¹Z|ž'¯cTo;fÿs÷ßâ‡pIUvºâ—ÃÐÀ µÈ2H“AÚKîécÑ~Îà,™Ã@]I kŽ! _šÁÀ‘>1î1^Ä{ɃÎàS¢z†\O0ò‹ ²l$CA ]=Ð"â$†4¢Õ•õ›Ô®¬çíqX}iYy-b2ŒC¸.oU­íK:zjO§¨ÖšÀ0Ûž™òÆûüèöó‚ ¶{_zQ‹á"-Z 6´lh1ØP‰áŸaU3lfõ»Lè€üÕêíÓ€|— ž°~0Ã_§?c¶†m Cø;šܘƒ{ÿ=ÙÈ'kÞ‚°‘#\÷m €?¿Õ+ ¼/3ª•û!ÓÍzg¾ÅêE#ÂÞ(áž„Á•610¿7‘Ô\î·¢ÎÑ3¾ô< MÁ/0Úç¯bÚ<ˆîÈÇ”Jáƒ}‘öë/- èàAg kkhÔø³ÞµÕ¦ƒ -Z 6´l¨/çËH©éØ“ó=ëAÇb:X,§ hõvC׺äWÓ¢Z4+2ì~A˜Þ#Góº„û4]A/¡X<Ð}:Y[ã½_Y[[×¥²ŽÂršÆ0ÔíS³4hŽ’Á©ú¸ÜÛ¨ƒ -jf( Y6™Öt(wÓ6L†2€¼™ËP°°ÙöÙ êÁ6þÝYš‰OZò_Á“w’3BÌ)¡“A;ØÆbí1ø;ý 2wïfPÇ•‡4q2]1M²äÖ?Ë€v“Aö¥Ä߯1ø³H/Ãá¡p㳓”ôúRŒ…pŠäçÛ—cØ6Æð¸¶1”¶¾` Í"Þ’52 íáçëZÊ[²O{4Ò–¯OO0ü-©‘ake°§7`€×gð;õK3x-Z 6ô‰ ÊQ*sº’­r§°P­VõÜÊ YRó%—næ[ê5“”~«Z^ÀO³àÒ/ðùd,Œ•ÒÚÒ§Ó±7ÿ^l2‡!~U;Ù&…h®­î»dÁ[|ˆ-9&÷I“ñ Vµlh1ØÐb°¡Å`CÍ ûžïl(W³åêžÖ@†=oè£pÁ`wÉT™cÃMœ‡Ú¸“zÿègÉã Ô´>o _bL,–í"I¬¹ŒAØÅàhqÒÍ–o_ɀν‹³ õLî>ÒÆ@Šôypõú pƒp”*†1[FCXÿ1Vwa‘wŒe%vð­1ëmS< ÷+kk¤ Å{żút†áz†A[÷• £’À̽ j1ØP=ï]Õ2¼Šƒ ½;Ã?êfëÙ6g‰©[Ly³¾ýá÷÷s”êv!ÛÃðX¯eøù¡í nK¹šR´2„Mñz¤hcÀmÝC ha ‰‰ GQÏÀ—a+ Ãt†›“èRXa¸­œgû—SHaƒáAă³½°. Ž gp×3‚¾}úAq5ôæKI$Ì@ zîW%ƒœ–J†9¹öÕ2¼Šƒ -Z 6´lh1ØÐ;2|½¤ÃÕÆtŠ2hºek®PÞšÅp¦ÞŸá–S¾æ ¬±ehŸþ¥Y©õ endstream endobj 177 0 obj << /Length 9166 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (34)Tj /T9 1 Tf 509 0 TD [(CHAPTER)-14000(3.)-27000(T)]TJ 309.9999 0 TD [(ABULAR)-14000(LISTBO)]TJ 347 0 TD [(X)-14000(AND)-14000(DISPLA)]TJ 305 0 TD [(Y)-14000(ITEMS)]TJ ET 0 G 0 J 0 j 0.266 w 10 M []0 d 1 i 166.194 704.169 64.192 -13.261 re 166.194 690.908 64.192 -13.261 re 166.194 677.646 64.192 -13.261 re 166.194 664.385 64.192 -13.261 re S BT /F1 1 Tf 6.419 0 0 6.365 171.544 669.689 Tm 0 Tw (style=style 1)Tj /F3 1 Tf 7.489 0 0 7.426 184.917 693.56 Tm (item a)Tj /F1 1 Tf 6.419 0 0 6.365 171.544 680.299 Tm (text=Douglas Bloom)Tj 0.8333 -4.1667 TD (....)Tj ET 166.194 598.078 64.192 -13.261 re 166.194 637.862 64.192 -13.261 re 166.194 624.601 64.192 -13.261 re 166.194 611.339 64.192 -13.261 re S BT 6.419 0 0 6.365 176.893 587.469 Tm (....)Tj -0.8333 2.5 TD (style=style 1)Tj 0 1.6667 TD (text=Alan Adams)Tj /F3 1 Tf 7.489 0 0 7.426 184.917 627.253 Tm (item b)Tj ET 324.001 717.431 64.192 -13.261 re 324.001 704.169 64.192 -13.261 re 324.001 690.908 64.192 -13.261 re 324.001 677.646 64.192 -13.261 re S BT /F1 1 Tf 6.419 0 0 6.365 329.35 682.951 Tm (style=style 2)Tj T* (text=Joe Baraki)Tj /F3 1 Tf 7.489 0 0 7.426 342.723 706.821 Tm (item c)Tj /F1 1 Tf 6.419 0 0 6.365 337.374 667.037 Tm (....)Tj ET 417.614 677.646 64.192 -13.261 re 417.614 717.431 64.192 -13.261 re 417.614 704.169 64.192 -13.261 re 417.614 690.908 64.192 -13.261 re S BT 6.419 0 0 6.365 430.988 667.037 Tm (....)Tj -1.25 2.5 TD (foreground=blue)Tj 0 1.6667 TD (font=bold)Tj /F3 1 Tf 7.489 0 0 7.426 436.337 706.821 Tm (style 2)Tj ET 249.109 531.77 64.192 -13.261 re 249.109 571.555 64.192 -13.261 re 249.109 558.293 64.192 -13.261 re 249.109 545.032 64.192 -13.261 re S BT /F1 1 Tf 6.419 0 0 6.365 262.483 521.161 Tm (....)Tj -1.25 2.5 TD (foreground=black)Tj 0 1.6667 TD (font=normal)Tj /F3 1 Tf 7.489 0 0 7.426 267.832 560.946 Tm (style 1)Tj ET q 123.3408 0 0 127.3099 342.7234 515.8566 cm /Im21 Do Q 219.688 603.382 m 241.085 603.382 l 241.085 563.598 l 254.459 563.598 l S 251.035 564.659 m 254.459 563.598 l 251.035 562.537 l 250.197 563.58 l 251.035 564.659 l b* 219.688 672.342 m 243.76 672.342 l 243.76 568.902 l 254.459 568.902 l S 251.035 569.963 m 254.459 568.902 l 251.035 567.842 l 250.197 568.885 l 251.035 569.963 l b* 385.518 685.603 m 401.566 685.603 l 401.566 712.126 l 422.964 712.126 l S 419.54 713.187 m 422.964 712.126 l 419.54 711.065 l 418.702 712.108 l 419.54 713.187 l b* 358.771 611.339 m 291.904 611.339 l 291.904 698.865 l 225.037 698.865 l S 1 1 1 rg 229.317 697.804 m 225.037 698.865 l 229.317 699.926 l 229.335 698.847 l 229.317 697.804 l b* 358.771 584.816 m 275.856 584.816 l 275.856 629.905 l 227.712 629.905 l S 231.992 628.844 m 227.712 629.905 l 231.992 630.966 l 232.009 629.887 l 231.992 628.844 l b* 356.097 574.207 m 315.977 574.207 l 315.977 712.126 l 326.675 712.126 l S 322.396 713.187 m 326.675 712.126 l 322.396 711.065 l 322.414 712.108 l 322.396 713.187 l b* BT /T15 1 Tf 0.24 0 0 -0.24 177.6 493.38 Tm 0 g [(Figure)-14000(3.4:)-17000(Relationship)-12000(Bet)]TJ 516 0 TD (w)Tj 28.9999 0 TD [(een)-16000(Displa)]TJ 190.0001 0 TD [(y)-12000(Items)-14000(and)-13000(Displa)]TJ 343.9999 0 TD 13 Tc [(yS)13000(t)]TJ 73.0001 0 TD 0 Tc (yles)Tj -1367 135.0001 TD [(share)-15000(the)-14000(same)-13000(color,)-13000(fon)]TJ 452.9999 0 TD [(t)-14000(and)-13000(spacing)-14000(and)-14000(w)]TJ 368.0001 0 TD [(e)-14000(call)-13000(these)]TJ /T13 1 Tf 213.9999 0 TD (c)Tj 17 0 TD [(ol)-2000(le)]TJ 62 0 TD [(ctive)-15000(attributes)]TJ /T15 1 Tf 270.0001 0 TD (.)Tj -1322 73 TD [(One)-22000(question)-20000(concerns)-23000(where)-21000(w)]TJ 597 0 TD 21 Tc (ek)Tj 60 0 TD 0 Tc [(eep)-21000(the)-21000(collectiv)]TJ 306 0 TD [(e)-21000(attribute)-21000(for)-20000(the)-21000(displa)]TJ 474.9999 0 TD [(y)-19000(items.)]TJ -1499.9999 50 TD (Certainly)Tj 167 0 TD 18 Tc (,w)Tj 59 0 TD 0 Tc [(e)-18000(can)-18000(k)]TJ 136.9999 0 TD [(eep)-19000(a)]TJ /T12 1 Tf 117.0001 0 TD (font)Tj /T15 1 Tf 104.9999 0 TD [(attribute)-18000(for)-18000(eac)]TJ 303 0 TD [(h)-19000(item,)-17000(but)-18000(this)-18000(is)-18000(not)-18000(really)-18000(an)-17000(e\016cien)]TJ 744.9999 0 TD (t)Tj -1632.9998 50 TD [(solution.)-29000(In)-18000(fact,)-18000(if)-17000(all)-17000(the)-18000(items)-17000(ha)]TJ 675.9999 0 TD (v)Tj 21.0001 0 TD [(e)-18000(the)-18000(same)-17000(fon)]TJ 274.9999 0 TD [(t,)-18000(w)]TJ 75 0 TD 18 Tc (ew)Tj 65.0001 0 TD 0 Tc [(ould)-17000(b)-1000(e)-19000(k)]TJ 177.9999 0 TD [(eeping)-17000(a)-18000(duplicated)]TJ -1289.9999 50 TD (cop)Tj 61 0 TD [(y)-14000(o)0(f)-14000(the)-15000(same)-13000(fon)]TJ 316 0 TD [(t)-14000(for)-14000(eac)]TJ 150 0 TD [(h)-14000(o)0(f)-14000(the)-15000(items)-13000(w)]TJ 297 0 TD [(e)-15000(create.)-20000(Since)-15000(a)-14000(host)-14000(widget)-14000(ma)]TJ 595.9999 0 TD 13 Tc [(yh)13000(a)]TJ 78 0 TD 0 Tc (v)Tj 21 0 TD [(e)-14000(man)]TJ 111.0001 0 TD (y)Tj -1630 50 TD [(thousands)-17000(of)-15000(items,)-15000(k)]TJ 393.9999 0 TD [(eeping)-16000(thousands)-17000(of)-15000(dupilcated)-16000(cop)]TJ 644.9999 0 TD [(ys)-16000(of)-16000(the)-16000(same)-15000(fon)]TJ 339 0 TD [(t,)-16000(or)-16000(an)]TJ 140.0001 0 TD [(y)-15000(other)]TJ -1518 48.9999 TD (collectiv)Tj 148 0 TD [(e)-14000(attributes,)-14000(w)]TJ 264 0 TD [(ould)-13000(b)-1000(e)-15000(v)]TJ 169.9999 0 TD [(ery)-14000(w)]TJ 99.0001 0 TD (asteful.)Tj -619 74 TD (T)Tj 27 0 TD [(o)-15000(adv)]TJ 101 0 TD [(oid)-13000(the)-16000(unnecessary)-17000(duplication)-14000(of)-15000(resources,)-17000(Tix)-14000(stores)-16000(the)-16000(collectiv)]TJ 1248.9999 0 TD [(e)-15000(attributes)]TJ -1438.9999 50 TD [(in)-17000(sp)-1000(ecial)-18000(ob)-2000(jects)-18000(called)]TJ /T13 1 Tf 457.9999 0 TD [(display)-18000(styles)]TJ /T15 1 Tf 239.9999 0 TD [(.)-28000(The)-18000(relationship)-17000(b)-1000(e)0(t)]TJ 416 0 TD (w)Tj 29.0001 0 TD [(een)-19000(displa)]TJ 183.9999 0 TD [(y)-17000(items)-16000(and)-18000(their)]TJ -1326.9999 50 TD (st)Tj 31 0 TD [(yles)-16000(is)-16000(depicted)-17000(in)-15000(\014gure)-16000(3.4.)-23000(Eac)]TJ 618 0 TD [(h)-16000(item)-14000(holds)-16000(its)-15000(o)]TJ 325 0 TD [(wn)-16000(cop)]TJ 129.9999 0 TD [(y)-15000(o)0(f)-16000(the)-16000(individual)-14000(attributes,)]TJ -1103.9999 49.0001 TD (suc)Tj 56 0 TD 15 Tc [(ha)15000(s)]TJ /T12 1 Tf 90 0 TD 0 Tc (text)Tj /T15 1 Tf 88 0 TD 19 Tc [(.H)19000(o)]TJ 81.9999 0 TD 0 Tc (w)Tj 29.0001 0 TD (ev)Tj 39 0 TD [(er,)-15000(the)-15000(collectiv)]TJ 281 0 TD [(e)-15000(attributes)-15000(are)-15000(stored)-16000(in)-14000(the)-15000(st)]TJ 572.9999 0 TD [(yle)-15000(ob)-2000(jects.)-21000(Eac)]TJ 293.0001 0 TD [(h)-15000(item)]TJ -1531 50 TD [(has)-12000(a)-12000(s)0(p)-1000(ecial)]TJ /T12 1 Tf 237.9999 0 TD (style)Tj /T15 1 Tf 120.0001 0 TD [(attribute)-13000(that)-12000(tells)-12000(it)-11000(whic)]TJ 469 0 TD 12 Tc [(hs)12000(t)]TJ 66 0 TD 0 Tc [(yle)-12000(it)-11000(should)-12000(use.)-18000(In)-12000(\014gure)-12000(3.4,)-11000(since)-13000(items)]TJ /T13 1 Tf -893 50 TD (a)Tj /T15 1 Tf 36 0 TD (and)Tj /T13 1 Tf 82 0 TD (b)Tj /T15 1 Tf 33.9999 0 TD [(are)-15000(assigned)-15000(the)-16000(same)-14000(st)]TJ 444.0001 0 TD [(yle,)-14000(therefore,)-17000(they)-15000(share)-16000(the)-15000(same)-14000(fon)]TJ 703 0 TD [(t)-15000(and)-14000(color.)-21000(Item)]TJ /T13 1 Tf 332 0 TD (c)Tj /T15 1 Tf -1631 50 TD [(is)-14000(assigned)-14000(a)-14000(di\013eren)]TJ 374 0 TD 14 Tc [(ts)14000(t)]TJ 60.9999 0 TD 0 Tc [(yle,)-14000(th)]TJ 115.9999 0 TD [(us,)-14000(it)-13000(uses)-15000(a)-14000(di\013eren)]TJ 362 0 TD [(t)-15000(fon)]TJ 87.0001 0 TD [(t)-13000(than)]TJ /T13 1 Tf 125.9999 0 TD (a)Tj /T15 1 Tf 35.0001 0 TD (and)Tj /T13 1 Tf 80.9999 0 TD (b)Tj /T15 1 Tf 19.0001 0 TD (.)Tj /T14 1 Tf -1261 164.9999 TD (3.3)Tj 153 0 TD [(Creating)-23000(Displa)]TJ 460.9999 0 TD [(y)-23000(Items)-22000(in)-24000(the)-22000(TixTList)-24000(Widget)]TJ /T8 1 Tf -613.9999 124 TD (3.3.1)Tj 171 0 TD [(Creating)-19000(Displa)]TJ 385 0 TD [(y)-18000(Items)]TJ /T15 1 Tf -556 101 TD (No)Tj 51 0 TD [(w)-17000(it's)-16000(time)-16000(to)-17000(put)-18000(our)-17000(kno)]TJ 493 0 TD [(wledge)-17000(ab)-1000(out)-17000(host)-17000(widgets,)-18000(displa)]TJ 625.9999 0 TD [(y)-16000(items)-16000(and)-17000(displa)]TJ 342.0001 0 TD 16 Tc [(ys)16000(t)]TJ 69 0 TD 0 Tc (yles)Tj -1581 50 TD (in)Tj 34 0 TD [(to)-12000(practice.)-19000(The)-13000(follo)]TJ 384 0 TD [(wing)-10000(example)-12000(co)-1000(de)-13000(creates)-15000(t)]TJ 504.9999 0 TD (w)Tj 29.0001 0 TD [(o)-12000(items)-12000(in)-12000(a)-13000(TixTList)-12000(widget)-13000(using)-12000(the)]TJ /T12 1 Tf -952 50 TD (insert)Tj /T15 1 Tf 145 0 TD [(metho)-1000(d:)]TJ /T12 1 Tf -41 94 TD [(tixTList)-20000(.t)]TJ 0 50 TD [(pack)-21000(.t)]TJ ET endstream endobj 178 0 obj << /ProcSet [/PDF /Text /ImageC /ImageI] /Font << /F1 39 0 R /F3 179 0 R /T8 35 0 R /T9 25 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R >> /XObject << /Im21 175 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS15 161 0 R >> >> endobj 181 0 obj << /Length 8652 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(3.3.)-31000(CREA)]TJ 214 0 TD [(TING)-13000(DISPLA)]TJ 273.9999 0 TD [(Y)-13000(ITEMS)-15000(IN)-14000(THE)-14000(TIXTLIST)-14000(WIDGET)]TJ /T15 1 Tf 1119.9998 0 TD (35)Tj /T12 1 Tf -1503.9998 166.0002 TD [(.t)-21000(insert)-21000(end)-21000(-itemtype)-20000(text)-21000(-text)-21000("First)-20000(Item")]TJ 1067.9999 0 TD [(-underline)-19000(0)]TJ -1067.9999 50 TD [(.t)-21000(insert)-21000(end)-21000(-itemtype)-20000(text)-21000(-text)-21000("Second)-20000(Item")-21000(-underline)-19000(0)]TJ 0 100 TD [(set)-21000(picture)-20000([image)-21000(create)-20000(bitmap)-21000(-file)-21000(picture.xbm])]TJ 0 50 TD [(.t)-21000(insert)-21000(end)-21000(-itemtype)-20000(image)-21000(-image)-20000($picture)]TJ /T15 1 Tf -104 109.9998 TD [(As)-18000(w)]TJ 93.9999 0 TD [(e)-18000(can)-18000(see,)-19000(the)]TJ /T12 1 Tf 274.0001 0 TD (insert)Tj /T15 1 Tf 149 0 TD [(metho)-1000(d)-16000(o)0(f)-17000(TixTList)-17000(is)-18000(v)]TJ 452.9999 0 TD [(ery)-18000(similar)-15000(to)-17000(the)]TJ /T12 1 Tf 343 0 TD (insert)Tj /T15 1 Tf 149.0001 0 TD [(metho)-1000(d)-17000(o)0(f)]TJ -1462 50 TD [(the)-16000(standard)-16000(Tk)-15000(listb)-1000(o)]TJ 415 0 TD [(x)-15000(widget:)-20000(it)-15000(inserts)-17000(a)-15000(new)-16000(item)-14000(in)]TJ 619 0 TD [(to)-14000(the)-16000(TixTList)-15000(widget.)-22000(The)-16000(\014rst)]TJ -1034 50 TD (argumen)Tj 157 0 TD 12 Tc [(ti)12000(tt)12000(a)12000(k)]TJ 126 0 TD 0 Tc [(es)-13000(is)-13000(the)-13000(lo)-1000(cation)-12000(of)-12000(the)-14000(new)-13000(item.)-16000(F)]TJ 649.9999 0 TD [(or)-13000(example)]TJ /T12 1 Tf 211 0 TD 0 Tw (0)Tj /T15 1 Tf 35 0 TD [(indicates)-13000(the)-13000(\014rst)-14000(lo)-1000(cation)]TJ -1178.9999 49 TD [(in)-11000(the)-11000(list,)]TJ /T12 1 Tf 193 0 TD (1)Tj /T15 1 Tf 33 0 TD [(indicates)-11000(the)-12000(second)-12000(lo)-1000(cation,)-10000(and)-11000(so)-11000(on.)-17000(Also)-10000(the)-12000(sp)-1000(ecial)-11000(k)]TJ 1048 0 TD (eyw)Tj 69 0 TD (ord)Tj /T12 1 Tf 70.9999 0 TD (end)Tj /T15 1 Tf 77 0 TD (indicates)Tj -1490.9999 50 TD [(the)-14000(end)-15000(of)-13000(the)-15000(list.)]TJ 62 74 TD [(Then,)-15000(w)]TJ 150 0 TD [(e)-15000(can)-15000(use)-16000(the)]TJ /T12 1 Tf 255 0 TD (-itemtype)Tj /T15 1 Tf 211 0 TD (switc)Tj 91 0 TD [(h)-15000(t)0(o)-15000(s)0(p)-1000(ecify)-15000(the)-15000(t)]TJ 315 0 TD [(yp)-1000(e)-16000(o)0(f)-14000(displa)]TJ 234 0 TD [(y)-13000(item)-14000(w)]TJ 159.9999 0 TD 15 Tc (ew)Tj 61.9999 0 TD 0 Tc (an)Tj 43 0 TD 14 Tc [(tt)14000(o)]TJ -1582.9998 49 TD 0 Tc [(create.)-19000(There)-12000(are)-12000(curren)]TJ 434.9999 0 TD [(tly)-12000(four)-12000(t)]TJ 162.0001 0 TD [(yp)-1000(es)-12000(of)-11000(items)-10000(to)-11000(c)]TJ 309.9999 0 TD [(ho)-1000(ose)-13000(from:)]TJ /T12 1 Tf 226 0 TD (text)Tj /T15 1 Tf 88.0001 0 TD (,)Tj /T12 1 Tf 22 0 TD (image)Tj /T15 1 Tf 109.9999 0 TD (,)Tj /T12 1 Tf 23 0 TD (imagetext)Tj /T15 1 Tf 206.9999 0 TD (and)Tj /T12 1 Tf -1582.9998 50 TD (window)Tj /T15 1 Tf 132 0 TD [(.)-22000(I)0(n)-15000(the)-16000(ab)-1000(o)]TJ 224.9999 0 TD (v)Tj 21.0001 0 TD [(e)-16000(example,)-14000(w)]TJ 238.9999 0 TD [(e)-16000(create)-17000(t)]TJ 173.0001 0 TD (w)Tj 28.9999 0 TD [(o)-15000(items)-14000(of)-15000(the)-16000(t)]TJ 285 0 TD [(yp)-1000(e)]TJ /T12 1 Tf 80.0001 0 TD (text)Tj /T15 1 Tf 103 0 TD [(and)-15000(one)-16000(item)-14000(of)-15000(the)]TJ -1287 50 TD (t)Tj 15 0 TD [(yp)-1000(e)]TJ /T12 1 Tf 77 0 TD (image)Tj /T15 1 Tf 109.9999 0 TD [(.)-16000(The)-13000(subsequen)]TJ 293.0001 0 TD [(t)-13000(argumen)]TJ 186 0 TD [(ts)-12000(to)-12000(the)]TJ /T12 1 Tf 162.9999 0 TD (insert)Tj /T15 1 Tf 142.0001 0 TD [(metho)-1000(d)-12000(set)-13000(the)-13000(con\014guration)-11000(options)]TJ -986 50 TD [(of)-12000(the)-13000(individual)-11000(attributes)-13000(of)-12000(the)-13000(new)-13000(item.)-17000(The)-13000(a)]TJ 915 0 TD (v)Tj 19.9999 0 TD [(ailable)-10000(options)-12000(for)-12000(these)-14000(items)-12000(are)-13000(listed)]TJ -934.9999 50 TD [(in)-13000(\014gures)-15000(3.7)-13000(through)-14000(3.10.)]TJ /T8 1 Tf 0 139 TD (3.3.2)Tj 171 0 TD [(Setting)-18000(the)-18000(St)]TJ 342 0 TD [(yles)-18000(of)-19000(the)-18000(Displa)]TJ 425.9999 0 TD [(y)-18000(Items)]TJ /T15 1 Tf -938.9999 100.0001 TD [(Note)-12000(that)-12000(in)-11000(the)-12000(ab)-1000(o)]TJ 365.9999 0 TD (v)Tj 21.0001 0 TD [(e)-11000(example,)-11000(if)-10000(w)]TJ 266 0 TD 12 Tc (ew)Tj 59 0 TD 0 Tc (an)Tj 43 0 TD [(t)-11000(t)0(o)-12000(con)]TJ 136.9999 0 TD [(trol)-11000(the)-12000(foreground)-12000(color)-11000(of)-11000(the)-12000(text)-12000(items,)]TJ -891.9999 50 TD (w)Tj 29 0 TD [(e)-14000(cannot)-14000(issue)-15000(commands)-11000(suc)]TJ 529 0 TD [(h)-15000(as:)]TJ /T12 1 Tf -454 110 TD [(.t)-21000(insert)-21000(end)-21000(-itemtype)-20000(text)-21000(-text)-21000("First)-20000(Item")-21000(-foreground)-19000(black)]TJ /T15 1 Tf -104 110 TD [(b)-1000(ecause)]TJ /T12 1 Tf 149 0 TD (-foreground)Tj /T15 1 Tf 250 0 TD [(is)-9000(not)-10000(an)-10000(individual)-7000(attribute)-11000(of)-9000(the)-10000(text)-10000(item.)-16000(Instead,)-11000(it)-9000(is)-10000(a)-9000(collectiv)]TJ 1233 0 TD (e)Tj -1632 50 TD [(attribute)-18000(and)-18000(m)]TJ 299 0 TD [(ust)-17000(b)-1000(e)-18000(accessed)-21000(using)-17000(a)-18000(displa)]TJ 557.9999 0 TD 17 Tc [(ys)17000(t)]TJ 70.0001 0 TD 0 Tc [(yle)-18000(ob)-2000(ject.)-31000(T)]TJ 251 0 TD [(o)-17000(d)0(o)-17000(that)-18000(w)]TJ 221.9999 0 TD [(e)-19000(can)-18000(use)-18000(the)]TJ -1399.9999 50 TD (command)Tj /T12 1 Tf 189 0 TD (tixItemStyle)Tj /T15 1 Tf 274.9999 0 TD [(to)-14000(create)-16000(displa)]TJ 280.0001 0 TD 12 Tc [(ys)12000(t)]TJ 65 0 TD 0 Tc [(yles,)-14000(as)-14000(sho)]TJ 203.9999 0 TD [(wn)-14000(in)-14000(the)-14000(follo)]TJ 265 0 TD [(wing)-12000(example:)]TJ /T12 1 Tf -1173.9999 109.9999 TD [(set)-21000(style1)-21000([tixDisplayStyl)]TJ 568.9999 0 TD [(e)-19000(text)-21000(-font)-21000(8x13])]TJ -568.9999 50 TD [(set)-21000(style2)-21000([tixDisplayStyl)]TJ 568.9999 0 TD [(e)-19000(text)-21000(-font)-21000(8x13bold])]TJ -568.9999 100 TD [(tixTList)-20000(.t;)-21000(pack)-21000(.t)]TJ 0 99.0001 TD [(.t)-21000(insert)-21000(end)-21000(-itemtype)-20000(text)-21000(-text)-21000("First)-20000(Item")]TJ 1067.9999 0 TD [(-underline)-19000(0)-22000(\\)]TJ -980.9999 49.9999 TD [(-style)-21000($style1)]TJ -86.9999 50 TD [(.t)-21000(insert)-21000(end)-21000(-itemtype)-20000(text)-21000(-text)-21000("Second)-20000(Item")-21000(-underline)-19000(0)]TJ 1372.9999 0 TD (\\)Tj -1286 50 TD [(-style)-21000($style2)]TJ -86.9999 50 TD [(.t)-21000(insert)-21000(end)-21000(-itemtype)-20000(text)-21000(-text)-21000("Third)-20000(Item")]TJ 1067.9999 0 TD [(-underline)-19000(0)]TJ 305 0 TD (\\)Tj -1286 49.0001 TD [(-style)-21000($style1)]TJ /T15 1 Tf -190.9999 111 TD [(The)-15000(\014rst)-16000(argumen)]TJ 330 0 TD 14 Tc [(to)14000(f)]TJ /T12 1 Tf 77.9999 0 TD 0 Tc (tixDisplayStyle)Tj /T15 1 Tf 342.0001 0 TD [(sp)-1000(ecify)-16000(the)-15000(t)]TJ 225.9999 0 TD [(yp)-1000(e)-16000(o)0(f)-14000(s)0(t)]TJ 159 0 TD [(yle)-15000(w)]TJ 96.0001 0 TD 16 Tc (ew)Tj 62.9999 0 TD 0 Tc (an)Tj 43.0001 0 TD [(t)-14000(t)0(o)-15000(create.)-23000(Eac)]TJ 289.9998 0 TD (h)Tj -1626.9998 50 TD (t)Tj 15 0 TD [(yp)-1000(e)-13000(o)0(f)-12000(displa)]TJ 228.9999 0 TD [(y)-12000(item)-12000(needs)-14000(its)-13000(o)]TJ 317.0001 0 TD [(wn)-12000(t)]TJ 80 0 TD [(yp)-1000(e)-13000(o)0(f)-12000(displa)]TJ 228.9999 0 TD 12 Tc [(ys)12000(t)]TJ 65 0 TD 0 Tc [(yles.)-18000(Therefore,)-14000(for)-13000(example,)-11000(w)]TJ 562 0 TD [(e)-13000(cannot)]TJ -1496.9999 48.9999 TD [(create)-12000(a)-10000(s)0(t)]TJ 181 0 TD [(yle)-10000(of)-10000(t)]TJ 121 0 TD [(yp)-1000(e)]TJ /T12 1 Tf 75 0 TD (text)Tj /T15 1 Tf 97 0 TD [(and)-10000(assign)-10000(it)-10000(to)-10000(an)-10000(item)-9000(of)-10000(t)]TJ 485 0 TD [(yp)-1000(e)]TJ /T12 1 Tf 73.9999 0 TD (image)Tj /T15 1 Tf 110.0001 0 TD [(.)-16000(The)-11000(subsequen)]TJ 291 0 TD [(t)-12000(argumen)]TJ 185 0 TD (ts)Tj -1619 50 TD (to)Tj /T12 1 Tf 48 0 TD (tixDisplayStyle)Tj /T15 1 Tf 337.9999 0 TD [(set)-12000(the)-12000(con\014guration)-11000(options)-10000(of)-11000(the)-12000(collectiv)]TJ 783.9999 0 TD [(e)-11000(attributes)-12000(de\014ned)-12000(b)]TJ 380.0001 0 TD [(y)-11000(this)]TJ ET endstream endobj 182 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 183 0 obj << /Type /XObject /Subtype /Image /Name /Im22 /Width 176 /Height 104 /BitsPerComponent 8 /ColorSpace 184 0 R /Length 703 /Filter /FlateDecode >> stream H‰ì׋–‚ `qÜÞÿ‘·â:8ÃÅDÿÙ­DŒ/Äm›%jÄ–ß»v&ŠÝ#¾eµ¼ 2ŸWQÙÈÒ![FÞ~ƒÿr°·æª´LiËjy/¥³ WJ×ÈÛ¢®û»÷ ôÛí¼ÙäjõòÂ'»þÓ[ÚfÿM‘®‘0ÿà%{Ll5áñŸ»Vì[á¥jd½;oEÕ²^ݪ”×;Ðu÷Tkðßó‹߬ë½;œNm…×,ʽÜ7±\×w÷=ì¨~Öxã2o4¥YnÇù ŸÈˆ…Ý·ãý¢Mx/5šö’eÏõ–>•4OiËÖ+íi5ëu ë´Ïqw{r‰ž7ßÞ¿ó0ï‹öÞ}͹¼–W4y¿‘PþU•Õ¯%åõÈH¢‹¼LFõš« ‡¹Þ溟¯¿©¨Þç¥]?ÉôßÐñ}³Göüšzàö2ޏëyõ‰¾ßkÅ%ç÷¸ß‹úrý¦»×Ÿ À~µq¹oáO‘ôÞ P{ƒë‘y¼cfye3‘·f´&⸬URóCE›¸ž½]4×NçÕíâõ.¸um°ðúz ~B¾ÿú¶À·mS^8ßàö“™aNï±×=–øz Np‰×¬»/{Ýñ¢^ò¼^òâãºxÉþëßÙñ–þ]M½Ü¼ÃóüàÖ÷t})ï™gýû4ï˜Y^Ù,¯l²óÃûCêø`g—Ù$y~!" 6$ÑU^"CzÁ/`ð6P^Àë‡p-ÚÇ öcpþL¿†Äù5‡€«ÜË‹_bï5ëôÇxÝ›”WéTxÙþî ¯vn:œ×#ËÃãÍÏ¿x¼…?¥‘W;§¸¿=fýû4ï˜Y^Ù,¯l–W6Ë+›å• ç} Ò{7*Ê;vžî݆òÞ)H襢Ø=Òá[^ޙ˫¸ð{¤“hù>Ôµü 0fÈØÚ endstream endobj 185 0 obj << /Type /XObject /Subtype /Image /Name /Im23 /Width 176 /Height 101 /BitsPerComponent 8 /ColorSpace 184 0 R /Length 716 /Filter /FlateDecode >> stream H‰ì—–„ E3ÛùÿOÞÝQ ÔJÌ:¾³3­JÀlYÞ"3¢ç¿¥UW´%{6“·ÞÇk8-ìl±ž o¿â?-Ê{ä®´T­g3yO©3¯µ¥Yޢ̖¤îuÞ/ˆ"/·ã-ªdÕ‹×þkunäØàã§œE†ù/›1` Áæ“^ Åàå,м«ÌJÌŠ¼Î«oä ÷=¢Zl!ÿÎ^ú°>λÚ]hðú-B=¯ôK"nÈÝuʼn‹ðo:§À›ôf¶ˆÛ±ŸÑ@&x¶2};>/ÚHæåªi`^vî¹¼µo%ÍUëxµyZɃúý‚ÙpÂ{ÜÝ<%%?ëa¼ž÷î{.é3yU%óZ'ùÔÝš7Ï£Êûe`Éx^8åN^ŒŸ…×Äû-ÝwÊ‹ìÚ]B!Á1|ƒïïq—Þñrì–Øµ®Ï‡0ï…ø¢Ø6 ð ^¹$¼.®÷óúAM|Ù“ûò†Áž9ò’<ïÍ‹ê†6Îc\2ŸÔ6ï˜*>5›ÿ ½‡wLM^]M^]åxtd¨ÚU2¼ñý¢B–h@—xk5oº_€ýÁÇo²Ï°MÞ3*òòbw´ql3ñõö6ž¬Ä¸|€0 Ã/òú}{7^Jqœÿ’"¯˜ÌQ̇h§_¡ÎÒ¼Në-ö_ZoøRTxGÔ{ö¿OãS“WW/â…çh®âÈ"ôeÍÍÆ7u¿'Ižk–·š¼Y^Ú…Ãxßž)o´kx U¼ø¿0†=xʶŸµåc‡ð'&Päbø¶l> Ø6 °ãuœ‹S3ÞÐ_šó:ÎL½/ow™·Ø^±Þ ÆÐ±?/ª£mcúCºŸ§u×w@½gÿû4Þ15yu5yu5yuõÞϰbyï†Êˆã[Oç]†á½¦B˜—“W´%{ž¼-ô.^#I^ÑVÆó}Pçô+ÀìÄÐÀ endstream endobj 187 0 obj << /Length 6853 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (36)Tj /T9 1 Tf 504 0 TD [(CHAPTER)-15000(3.)-31000(T)]TJ 314.9999 0 TD [(ABULAR)-14000(LISTBO)]TJ 347 0 TD [(X)-14000(AND)-14000(DISPLA)]TJ 305 0 TD [(Y)-14000(ITEMS)]TJ ET q 131.976 0 0 77.976 177.12 629.94 cm /Im22 Do Q BT /T6 1 Tf 0.24 0 0 -0.24 186.96 608.1 Tm [(\(a\))-7000(Three)]TJ /T3 1 Tf 152.0001 0 TD (text)Tj /T6 1 Tf 78 0 TD [(items)-7000(in)-7000(a)-8000(TixTList)]TJ ET q 131.976 0 0 75.744 325.68 630.02 cm /Im23 Do Q BT 0.24 0 0 -0.24 335.52 608.1 Tm [(\(b\))-23000(The)]TJ /T3 1 Tf 155.0001 0 TD (text)Tj /T6 1 Tf 94.9999 0 TD [(items)-22000(with)-23000(fon)]TJ 246 0 TD (ts)Tj -496 39 TD (switc)Tj 78 0 TD (hed)Tj /T15 1 Tf -603.9999 115.9998 TD [(Figure)-14000(3.5:)-17000(Tw)]TJ 272.9999 0 TD [(o)-14000(Displa)]TJ 150 0 TD 12 Tc [(yS)12000(t)]TJ 72 0 TD 0 Tc [(yles)-14000(With)-14000(Di\013eren)]TJ 332.0001 0 TD 14 Tc (tF)Tj 53.9999 0 TD 0 Tc (on)Tj 43.0001 0 TD (ts)Tj -1271 142 TD (st)Tj 31 0 TD [(yle.)-17000(A)-10000(complete)-9000(list)-9000(of)-9000(the)-11000(con\014guration)-9000(options)-9000(of)-9000(eac)]TJ 956 0 TD 11 Tc (ht)Tj 49 0 TD 0 Tc [(yp)-1000(e)-10000(o)0(f)-9000(the)-10000(displa)]TJ 289.9999 0 TD 9 Tc [(ys)9000(t)]TJ 62 0 TD 0 Tc [(yle)-10000(is)-10000(in)-9000(\014gures)]TJ -1387.9999 50 TD [(3.11)-13000(through)-14000(3.13.)]TJ 62 74 TD (The)Tj /T12 1 Tf 83 0 TD (tixDisplayStyle)Tj /T15 1 Tf 337.9999 0 TD [(command)-8000(returns)-13000(the)-11000(names)-10000(of)-11000(the)-12000(newly)-11000(created)-12000(st)]TJ 922.0001 0 TD [(yles)-12000(to)-11000(us)-11000(and)]TJ -1405 49.0002 TD 0 Tw (w)Tj 29 0 TD [(e)-12000(use)-12000(the)-13000(v)]TJ 189 0 TD (ariables)Tj /T12 1 Tf 150 0 TD (style1)Tj /T15 1 Tf 141.9999 0 TD (and)Tj /T12 1 Tf 78 0 TD (style2)Tj /T15 1 Tf 143.0001 0 TD [(to)-11000(store)-13000(these)-13000(names.)-16000(W)]TJ 434 0 TD [(e)-12000(can)-11000(then)-13000(assign)-11000(the)-12000(st)]TJ 416 0 TD (yles)Tj -1581 49.9999 TD [(to)-14000(the)-16000(displa)]TJ 230 0 TD [(y)-13000(items)-14000(b)]TJ 169 0 TD [(y)-14000(using)-15000(the)-15000(names)-14000(of)-14000(the)-15000(st)]TJ 497 0 TD [(yles.)-20000(As)-16000(sho)]TJ 222 0 TD [(wn)-14000(in)-14000(\014gure)-15000(3.5\(a\),)-14000(b)]TJ 387 0 TD [(y)-14000(assing)]TJ -1505 50 TD [(these)-18000(t)]TJ 124 0 TD (w)Tj 29 0 TD 16 Tc [(os)16000(t)]TJ 68 0 TD 0 Tc [(yles)-17000(to)-16000(the)]TJ /T12 1 Tf 211.9999 0 TD (-style)Tj /T15 1 Tf 148.0001 0 TD [(option)-15000(of)-16000(the)-17000(displa)]TJ 360.9999 0 TD [(y)-16000(items,)-16000(w)]TJ 193 0 TD [(e)-16000(assigned)-17000(a)-16000(medium-w)]TJ 428.9999 0 TD (eigh)Tj 73.0002 0 TD (t)Tj -1637 50 TD (fon)Tj 56 0 TD [(t)-13000(t)0(o)-14000(the)-15000(\014rst)-14000(and)-14000(third)-14000(item)-12000(and)-14000(a)-14000(b)-1000(old)-13000(fon)]TJ 781 0 TD [(t)-13000(t)0(o)-14000(the)-15000(second)-15000(item.)]TJ -775 73 TD [(The)-18000(name)-16000(of)-16000(the)-18000(st)]TJ 359 0 TD [(yle)-17000(returned)-19000(b)]TJ 263 0 TD (y)Tj /T12 1 Tf 38.9999 0 TD (tixDisplayStyle)Tj /T15 1 Tf 344.0001 0 TD [(is)-17000(also)-16000(the)-18000(name)-15000(of)-17000(a)-17000(command)]TJ -1067 50 TD (whic)Tj 82 0 TD 14 Tc (hw)Tj 66 0 TD 0 Tc [(e)-14000(can)-14000(use)-15000(to)-14000(con)]TJ 292 0 TD [(trol)-13000(the)-15000(st)]TJ 181 0 TD [(yle.)-18000(F)]TJ 106 0 TD [(or)-14000(example,)-12000(w)]TJ 254 0 TD [(e)-14000(can)-14000(use)-15000(the)-14000(follo)]TJ 328.9999 0 TD [(wing)-12000(commands)-11000(to)]TJ -1309.9999 50 TD (switc)Tj 90.9999 0 TD [(h)-14000(the)-15000(fon)]TJ 165.0001 0 TD [(ts)-13000(in)-14000(the)-14000(t)]TJ 179.9999 0 TD (w)Tj 29.0001 0 TD 14 Tc [(os)14000(t)]TJ 66 0 TD 0 Tc [(yles)-14000(w)]TJ 110.9999 0 TD [(e)-14000(created)-16000(in)-13000(the)-15000(ab)-1000(o)]TJ 363.0001 0 TD (v)Tj 20.9999 0 TD [(e)-13000(example:)]TJ /T12 1 Tf -921.9999 128.9999 TD [($style1)-20000(configure)-20000(-font)-21000(8x13bold)]TJ 0 50 TD [($style2)-20000(configure)-20000(-font)-21000(8x13)]TJ /T15 1 Tf -104 129.0001 TD [(After)-18000(the)-19000(execution)-18000(of)-17000(the)-19000(ab)-1000(o)]TJ 569 0 TD (v)Tj 21 0 TD [(e)-17000(command,)-16000(the)-18000(fon)]TJ 372 0 TD [(t)-17000(i)0(n)-17000(the)-19000(second)-19000(item)-16000(in)-17000(the)-19000(TixTList)]TJ -962 48.9999 TD [(widget)-15000(b)-1000(ecomes)-15000(medium-w)]TJ 491.9999 0 TD (eigh)Tj 73.0001 0 TD [(t)-12000(and)-14000(the)-16000(fon)]TJ 238 0 TD [(t)-14000(i)0(n)-15000(the)-15000(\014rst)-16000(and)-15000(third)-15000(items)-13000(b)-1000(ecomes)-16000(b)-1000(old,)-14000(as)]TJ -803 50 TD (sho)Tj 59 0 TD [(wn)-14000(in)-13000(\014gure)-15000(3.5\(b\).)]TJ /T8 1 Tf -59 160 TD (3.3.3)Tj 171 0 TD [(Con\014guring)-19000(and)-20000(Deleting)-16000(the)-19000(Items)]TJ /T15 1 Tf -171 104.0001 TD (Y)Tj 28 0 TD [(ou)-11000(can)-12000(con\014gure)-13000(the)-12000(individual)-10000(attributes)-13000(of)-11000(the)-13000(items)-10000(using)-12000(the)]TJ /T12 1 Tf 1156 0 TD (entryconfigure)Tj /T15 1 Tf 316.9999 0 TD [(metho)-1000(d.)]TJ -1500.9999 49.9999 TD [(There)-15000(is)-13000(also)-13000(the)-14000(en)]TJ 355 0 TD [(trycget)-15000(metho)-1000(d)-12000(for)-13000(querying)-13000(the)-15000(attributes)-14000(of)-13000(the)-14000(items.)-17000(T)]TJ 1059.9999 0 TD (o)Tj /T12 1 Tf 33 0 TD (delete)Tj /T15 1 Tf 144.0001 0 TD (the)Tj -1592 50 TD [(items,)-12000(y)]TJ 143 0 TD [(ou)-14000(can)-14000(use)-14000(the)-15000(delete)-15000(metho)-1000(d.)-17000(In)-14000(the)-14000(follo)]TJ 764.9999 0 TD [(wing)-11000(example,)-12000(w)]TJ 300 0 TD [(e)-14000(use)-15000(these)-15000(t)]TJ 225 0 TD (w)Tj 29.0001 0 TD [(o)-13000(metho)-1000(ds)]TJ -1462 50 TD [(to)-14000(c)]TJ 68 0 TD [(hange)-15000(the)-15000(\014rst)-16000(and)-14000(third)-14000(items)-14000(to)-14000(displa)]TJ 734 0 TD [(y)-14000(the)-15000(text)-15000(strings)]TJ /T12 1 Tf 329.9999 0 TD (One)Tj /T15 1 Tf 80.0001 0 TD (and)Tj /T12 1 Tf 81 0 TD (Two)Tj /T15 1 Tf 80 0 TD [(and)-15000(c)]TJ 98.9999 0 TD [(hange)-14000(the)]TJ -1471.9999 50 TD [(third)-18000(item)-18000(to)-18000(use)-19000(the)-19000(st)]TJ 446 0 TD (yle)Tj /T12 1 Tf 71 0 TD ($style2)Tj /T15 1 Tf 154 0 TD [(.)-30000(Then)-19000(w)]TJ 184 0 TD [(e)-19000(delete)-19000(the)-19000(second)-20000(item)-17000(using)-18000(the)]TJ /T12 1 Tf 663.9999 0 TD (delete)Tj /T15 1 Tf -1518.9999 50 TD (command.)Tj /T12 1 Tf 104 129.0001 TD [(.t)-21000(entryconfigure)-19000(0)-22000(-text)-20000(One)]TJ 0 48.9999 TD [(.t)-21000(entryconfigure)-19000(2)-22000(-text)-20000(Two)]TJ 0 50 TD [(.t)-21000(delete)-21000(1)]TJ ET endstream endobj 188 0 obj << /ProcSet [/PDF /Text /ImageC /ImageI] /Font << /T3 189 0 R /T6 72 0 R /T8 35 0 R /T9 25 0 R /T12 14 0 R /T15 6 0 R >> /XObject << /Im22 183 0 R /Im23 185 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS18 184 0 R >> >> endobj 184 0 obj [/Indexed /DeviceRGB 7 190 0 R] endobj 190 0 obj << /Filter /ASCII85Decode /Length 34 >> stream f@SVS endstream endobj 192 0 obj << /Length 12259 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(3.3.)-31000(CREA)]TJ 214 0 TD [(TING)-13000(DISPLA)]TJ 273.9999 0 TD [(Y)-13000(ITEMS)-15000(IN)-14000(THE)-14000(TIXTLIST)-14000(WIDGET)]TJ /T15 1 Tf 1119.9998 0 TD (37)Tj ET 0 G 0 J 0 j 0.217 w 10 M []0 d 1 i 205.231 698.785 21.732 -10.841 re 216.097 690.112 m 216.097 677.103 l S 216.966 680.572 m 216.097 677.103 l 215.227 680.572 l 216.111 680.558 l 216.966 680.572 l b* 205.231 683.608 21.732 -10.841 re 216.097 674.935 m 216.097 661.926 l S 216.966 665.395 m 216.097 661.926 l 215.227 665.395 l 216.111 665.38 l 216.966 665.395 l b* 205.231 668.43 21.732 -10.841 re 216.097 659.758 m 216.097 646.748 l S 216.966 650.217 m 216.097 646.748 l 215.227 650.217 l 216.111 650.203 l 216.966 650.217 l b* 205.231 653.253 21.732 -10.841 re 216.097 644.58 m 216.097 631.571 l S 216.966 635.04 m 216.097 631.571 l 215.227 635.04 l 216.111 635.026 l 216.966 635.04 l b* 205.231 638.075 21.732 -10.841 re 216.097 629.403 m 216.097 616.393 l S 216.966 619.862 m 216.097 616.393 l 215.227 619.862 l 216.111 619.848 l 216.966 619.862 l b* 205.231 622.898 21.732 -10.841 re 216.097 614.225 m 216.097 601.216 l 233.482 601.216 l 233.482 705.29 l 248.694 705.29 l 248.694 692.281 l S 249.563 695.75 m 248.694 692.281 l 247.825 695.75 l 248.709 695.735 l 249.563 695.75 l b* 237.828 698.785 21.732 -10.841 re 248.694 690.112 m 248.694 677.103 l S 249.563 680.572 m 248.694 677.103 l 247.825 680.572 l 248.709 680.558 l 249.563 680.572 l b* 237.828 683.608 21.732 -10.841 re 248.694 674.935 m 248.694 661.926 l S 249.563 665.395 m 248.694 661.926 l 247.825 665.395 l 248.709 665.38 l 249.563 665.395 l b* 237.828 668.43 21.732 -10.841 re 248.694 659.758 m 248.694 646.748 l S 249.563 650.217 m 248.694 646.748 l 247.825 650.217 l 248.709 650.203 l 249.563 650.217 l b* 237.828 653.253 21.732 -10.841 re 248.694 644.58 m 248.694 631.571 l S 249.563 635.04 m 248.694 631.571 l 247.825 635.04 l 248.709 635.026 l 249.563 635.04 l b* 237.828 638.075 21.732 -10.841 re 200.884 707.458 97.793 -125.756 re 200.884 594.711 97.793 -13.009 re 213.923 592.543 54.329 -8.673 re 203.058 588.207 m 209.577 592.543 l 209.577 583.87 l 203.058 588.207 l 289.984 592.543 m 296.504 588.207 l 296.504 588.207 m 289.984 583.87 l 289.984 592.543 l S BT /T6 1 Tf 0.24 0 0 -0.24 212.4 559.38 Tm [(\(a\))-11000(V)]TJ 80.0001 0 TD [(ertical)-10000(Orien)]TJ 194 0 TD (tation)Tj ET 0.202 w 405.616 658.398 m 417.766 658.398 l 417.766 642.333 l 320.565 642.333 l 320.565 628.277 l 332.715 628.277 l S 329.475 629.08 m 332.715 628.277 l 329.475 627.474 l 329.489 628.264 l 329.475 629.08 l b* 326.64 618.237 10.125 20.08 re 334.74 628.277 m 346.89 628.277 l S 343.65 629.08 m 346.89 628.277 l 343.65 627.474 l 343.664 628.264 l 343.65 629.08 l b* 340.815 618.237 10.125 20.08 re 348.915 628.277 m 361.065 628.277 l S 357.825 629.08 m 361.065 628.277 l 357.825 627.474 l 357.839 628.264 l 357.825 629.08 l b* 354.99 618.237 10.125 20.08 re 363.09 628.277 m 375.241 628.277 l S 372.001 629.08 m 375.241 628.277 l 372.001 627.474 l 372.014 628.264 l 372.001 629.08 l b* 369.166 618.237 10.125 20.08 re 377.266 628.277 m 389.416 628.277 l S 386.176 629.08 m 389.416 628.277 l 386.176 627.474 l 386.189 628.264 l 386.176 629.08 l b* 383.341 618.237 10.125 20.08 re 326.64 648.357 10.125 20.08 re 334.74 658.398 m 346.89 658.398 l S 343.65 659.201 m 346.89 658.398 l 343.65 657.594 l 343.664 658.384 l 343.65 659.201 l b* 340.815 648.357 10.125 20.08 re 348.915 658.398 m 361.065 658.398 l S 357.825 659.201 m 361.065 658.398 l 357.825 657.594 l 357.839 658.384 l 357.825 659.201 l b* 354.99 648.357 10.125 20.08 re 363.09 658.398 m 375.241 658.398 l S 372.001 659.201 m 375.241 658.398 l 372.001 657.594 l 372.014 658.384 l 372.001 659.201 l b* 369.166 648.357 10.125 20.08 re 377.266 658.398 m 389.416 658.398 l S 386.176 659.201 m 389.416 658.398 l 386.176 657.594 l 386.189 658.384 l 386.176 659.201 l b* 383.341 648.357 10.125 20.08 re 391.441 658.398 m 403.591 658.398 l S 400.351 659.201 m 403.591 658.398 l 400.351 657.594 l 400.364 658.384 l 400.351 659.201 l b* 397.516 648.357 10.125 20.08 re 316.515 672.454 117.451 -90.361 re 421.816 672.454 12.15 -90.361 re 427.891 584.101 m 423.841 590.125 l 431.941 590.125 l 427.891 584.101 l 423.841 664.422 m 427.891 670.446 l 427.891 670.446 m 431.941 664.422 l 423.841 664.422 l 423.841 660.406 8.1 -50.201 re S BT 0.24 0 0 -0.24 332.64 559.38 Tm [(\(b\))-11000(Horizon)]TJ 179.9999 0 TD [(tal)-10000(Orien)]TJ 138 0 TD (tation)Tj /T15 1 Tf -922.9999 124 TD [(Figure)-14000(3.6:)-17000(The)]TJ /T12 1 Tf 299 0 TD (-orientation)Tj /T15 1 Tf 275 0 TD [(option)-14000(of)-13000(the)-14000(TixSelect)-15000(Widget)]TJ /T8 1 Tf -830 139 TD (3.3.4)Tj 171 0 TD [(Cho)-2000(osing)-19000(the)-18000(Orien)]TJ 478 0 TD [(tation)-18000(and)-19000(Num)]TJ 393 0 TD 2 Tc [(be)2000(r)-15000(o)2000(f)-17000(R)2000(o)]TJ 230.9999 0 TD 0 Tc [(ws)-19000(or)-19000(Columns)]TJ /T15 1 Tf -1272.9999 103.0001 TD [(There)-16000(are)-15000(three)-17000(options)-14000(that)-15000(con)]TJ 597 0 TD [(trols)-15000(the)-16000(la)]TJ 200.9999 0 TD 0 Tw (y)Tj 21 0 TD [(out)-13000(of)-15000(the)-15000(items)-14000(in)-15000(the)-15000(TixTList)-15000(widget.)-21000(The)]TJ /T12 1 Tf -818.9999 49.9999 TD (-orientation)Tj /T15 1 Tf 278.9999 0 TD [(option)-16000(can)-17000(b)-1000(e)-18000(set)-18000(to)-17000(either)-18000(v)]TJ 534.9999 0 TD [(ertical)-17000(or)-17000(horizon)]TJ 317.0001 0 TD [(tal.)-27000(When)]TJ /T12 1 Tf 212 0 TD (-orientation)Tj /T15 1 Tf 279 0 TD (is)Tj -1622 50 TD [(set)-16000(to)]TJ /T12 1 Tf 117 0 TD (vertical)Tj /T15 1 Tf 176 0 TD [(,)-13000(the)-15000(items)-14000(are)-15000(laid)-14000(out)-14000(v)]TJ 456 0 TD [(ertically)-14000(from)-13000(top)-15000(do)]TJ 377.9999 0 TD [(wn)-14000(and)-15000(wrapp)-1000(ed)-16000(to)-14000(the)-15000(next)]TJ -1126.9999 49.0001 TD [(column)-10000(when)-13000(the)-13000(b)-1000(ottom)-10000(is)-12000(reac)]TJ 575.9999 0 TD [(hed)-13000(\(see)-14000(\014gure)-12000(3.6\(a\)\).)-17000(The)-13000(opp)-1000(osite)-12000(la)]TJ 703 0 TD (y)Tj 21 0 TD [(out)-11000(p)-1000(olicy)-11000(is)-12000(c)]TJ 247.9999 0 TD (hosen)Tj -1547.9998 50 TD (if)Tj /T12 1 Tf 38 0 TD (-orientation)Tj /T15 1 Tf 274.9999 0 TD [(is)-14000(set)-15000(to)]TJ /T12 1 Tf 158.0001 0 TD (horizontal)Tj /T15 1 Tf 231 0 TD [(\(see)-16000(\014gure)-14000(3.6\(b\)\).)]TJ -640 74 TD [(When)-18000(the)]TJ /T12 1 Tf 200 0 TD (-orientation)Tj /T15 1 Tf 278 0 TD [(option)-17000(is)-17000(set)-18000(to)]TJ /T12 1 Tf 300 0 TD (vertical)Tj /T15 1 Tf 175.9999 0 TD [(,)-16000(normally)-15000(the)-18000(n)]TJ 303 0 TD (um)Tj 58 0 TD [(b)-1000(e)0(r)-16000(o)0(f)-17000(columns)]TJ -1376.9999 50 TD (displa)Tj 106 0 TD (y)Tj 20.9999 0 TD [(ed)-16000(dep)-1000(ends)-19000(on)-16000(the)-18000(n)]TJ 378.0001 0 TD (um)Tj 57.9999 0 TD [(b)-1000(e)0(r)-16000(o)0(f)-16000(items)-16000(in)-16000(the)-18000(TixTList)-16000(widget:)-24000(the)-17000(more)-16000(items)-16000(there)]TJ -562.9999 48.9999 TD [(are,)-15000(the)-16000(more)-14000(columns)-14000(will)-14000(there)-16000(b)-1000(e)0(.)-23000(H)0(o)]TJ 737.9999 0 TD (w)Tj 29 0 TD (ev)Tj 39.0001 0 TD [(er,)-15000(w)]TJ 90 0 TD [(e)-15000(can)-16000(use)-16000(the)]TJ /T12 1 Tf 255.9999 0 TD (-columns)Tj /T15 1 Tf 190.0001 0 TD [(option)-14000(to)-15000(con)]TJ 243 0 TD (trol)Tj -1585 50 TD [(the)-14000(n)]TJ 93 0 TD (um)Tj 58 0 TD [(b)-1000(e)0(r)-12000(o)0(f)-13000(columns:)-17000(the)-13000(items)-13000(will)-11000(b)-1000(e)-14000(wrapp)-1000(ed)-14000(in)-13000(a)-13000(w)]TJ 889 0 TD (a)Tj 19.9999 0 TD [(y)-13000(s)0(o)-13000(that)-13000(the)-14000(n)]TJ 267 0 TD (um)Tj 58 0 TD [(b)-1000(e)0(r)-13000(o)0(f)-12000(columns)]TJ -1384.9999 50 TD [(pro)-1000(duced)-15000(will)-13000(b)-1000(e)-14000(exactly)-14000(as)-14000(dicated)-14000(b)]TJ 677 0 TD [(y)-14000(the)]TJ /T12 1 Tf 107 0 TD (-columns)Tj /T15 1 Tf 188.9999 0 TD (option.)Tj -910.9999 73.0001 TD [(One)-14000(use)-14000(of)-13000(the)]TJ /T12 1 Tf 275.9999 0 TD (-columns)Tj /T15 1 Tf 187.0001 0 TD [(option)-13000(is)-13000(to)-13000(sp)-1000(ecify)-14000(the)-14000(same)-12000(la)]TJ 562.9999 0 TD (y)Tj 21.0001 0 TD [(out)-12000(p)-1000(olicy)-13000(as)-13000(that)-13000(of)-13000(the)-14000(stan-)]TJ -1109 50 TD [(dard)-13000(Tk)-14000(listb)-1000(o)]TJ 262 0 TD [(x)-12000(widget.)-18000(W)]TJ 223.9999 0 TD [(e)-13000(can)-14000(do)-13000(this)-13000(b)]TJ 266.0001 0 TD [(y)-13000(setting)]TJ /T12 1 Tf 170.9999 0 TD (-orientation)Tj /T15 1 Tf 275 0 TD [(to)-13000(v)]TJ 71 0 TD [(ertical)-13000(and)]TJ /T12 1 Tf 207 0 TD (-columns)Tj /T15 1 Tf -1475.9999 50 TD (to)Tj /T12 1 Tf 50 0 TD (1)Tj /T15 1 Tf 22 0 TD [(.)-18000(This)-13000(w)]TJ 153 0 TD (a)Tj 20 0 TD 12 Tc (yw)Tj 63 0 TD 0 Tc [(e)-13000(can)-14000(get)-13000(a)-13000(replacemen)]TJ 411 0 TD [(t)-13000(listb)-1000(o)]TJ 128.9999 0 TD [(x)-13000(widget)-13000(that)-13000(can)-13000(displa)]TJ 438.0001 0 TD 12 Tc (ym)Tj 69 0 TD 0 Tc [(ultiple)-11000(fon)]TJ 183 0 TD [(ts)-13000(and)]TJ -1538 50 TD [(colors)-14000(and)-14000(graphics!)]TJ 62 72.9999 TD [(The)-14000(coun)]TJ 169 0 TD [(terpart)-14000(of)-12000(the)]TJ /T12 1 Tf 256 0 TD (-columns)Tj /T15 1 Tf 187 0 TD [(option)-12000(is)-13000(the)]TJ /T12 1 Tf 238.9999 0 TD (-rows)Tj /T15 1 Tf 122 0 TD [(option,)-12000(whic)]TJ 222 0 TD [(h)-13000(i)0(s)-12000(used)-14000(for)-12000(the)-14000(same)]TJ -1256.9999 50 TD [(purp)-1000(ose)-15000(when)-14000(the)]TJ /T12 1 Tf 335.9999 0 TD (-orientation)Tj /T15 1 Tf 275.0001 0 TD [(option)-13000(is)-14000(set)-15000(to)]TJ /T12 1 Tf 286.9999 0 TD (horizontal)Tj /T15 1 Tf 220.0001 0 TD (.)Tj /T8 1 Tf -1118 153.0001 TD (3.3.5)Tj 171 0 TD (Ev)Tj 64.9999 0 TD (en)Tj 55 0 TD [(t)-19000(Handling)]TJ /T15 1 Tf -290.9999 103 TD (Y)Tj 28 0 TD [(ou)-14000(can)-14000(handle)-14000(the)-14000(ev)]TJ 378 0 TD (en)Tj 40 0 TD [(ts)-16000(in)-13000(a)-14000(TList)-14000(widget)-14000(using)-14000(the)]TJ /T12 1 Tf 560 0 TD (-browsecmd)Tj /T15 1 Tf 231 0 TD (and)Tj /T12 1 Tf 81 0 TD (-command)Tj /T15 1 Tf 188.9999 0 TD (options.)Tj -1506.9999 50 TD [(The)-14000(meanings)-13000(of)-14000(these)-15000(t)]TJ 437 0 TD (w)Tj 28.9999 0 TD [(o)-14000(options)-13000(are)-15000(silimar)-11000(to)-14000(their)-15000(meanings)-12000(in)-14000(other)-14000(Tix)-14000(widgets)-14000(suc)]TJ 1159.9998 0 TD (h)Tj -1625.9998 50 TD [(as)-15000(the)-15000(Com)]TJ 210 0 TD [(b)-1000(oBo)]TJ 93.9999 0 TD [(x.)-17000(Usually)]TJ 185 0 TD [(,)-13000(the)-15000(command)-12000(sp)-1000(eci\014ed)-16000(b)]TJ 476.9999 0 TD (y)Tj /T12 1 Tf 36.0001 0 TD (-browsecmd)Tj /T15 1 Tf 232 0 TD [(is)-15000(called)-14000(when)-15000(the)-15000(user)]TJ -1234 50 TD (clic)Tj 59 0 TD [(ks)-10000(or)-9000(drags)-10000(the)-11000(mouse)-8000(o)]TJ 411 0 TD (v)Tj 20.9999 0 TD [(er)-10000(the)-11000(items)-8000(or)-10000(presses)-12000(the)-10000(arro)]TJ 540.0001 0 TD 10 Tc (wk)Tj 61 0 TD 0 Tc [(eys.)-17000(The)-10000(command)-7000(sp)-1000(eci\014ed)-11000(b)]TJ 535.9998 0 TD (y)Tj /T12 1 Tf -1627.9998 50 TD (-command)Tj /T15 1 Tf 187 0 TD [(is)-13000(called)-13000(when)-13000(the)-13000(user)-14000(double-clic)]TJ 615 0 TD [(ks)-13000(or)-13000(presses)-15000(the)-14000(Return)-13000(k)]TJ 470.9999 0 TD (ey)Tj 37 0 TD [(.)-17000(These)-14000(commands)]TJ -1309.9999 48.9999 TD [(are)-18000(called)-16000(with)-17000(one)-18000(extra)-17000(argumen)]TJ 637.9999 0 TD [(t)-16000(|)-17000(the)-18000(index)-17000(of)-16000(the)-18000(curren)]TJ 519 0 TD [(tly)-18000(\\activ)]TJ 177.0001 0 TD [(e")-17000(item,)-16000(whic)]TJ 248 0 TD 17 Tc [(hi)17000(s)]TJ -1582 50 TD 0 Tc [(usually)-13000(the)-15000(item)-12000(under)-15000(the)-14000(mouse)-13000(cursor.)]TJ ET endstream endobj 193 0 obj << /ProcSet [/PDF /Text ] /Font << /T6 72 0 R /T8 35 0 R /T9 25 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 195 0 obj << /Length 3260 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (38)Tj /T9 1 Tf 504 0 TD [(CHAPTER)-15000(3.)-31000(T)]TJ 314.9999 0 TD [(ABULAR)-14000(LISTBO)]TJ 347 0 TD [(X)-14000(AND)-14000(DISPLA)]TJ 305 0 TD [(Y)-14000(ITEMS)]TJ /T8 1 Tf -1470.9999 117 TD (3.3.6)Tj 171 0 TD (Selection)Tj /T15 1 Tf -171 100 TD (The)Tj /T12 1 Tf 86 0 TD (-selectmode)Tj /T15 1 Tf 254.9999 0 TD [(option)-15000(con)]TJ 192.0001 0 TD [(trols)-15000(ho)]TJ 139 0 TD [(w)-14000(man)]TJ 122.9999 0 TD [(y)-13000(items)-15000(the)-15000(user)-16000(can)-16000(select)-16000(at)-15000(one)-15000(time.)-20000(In)-15000(the)]TJ /T12 1 Tf -794.9999 50 TD (single)Tj /T15 1 Tf 146.9999 0 TD (and)Tj /T12 1 Tf 84.0001 0 TD (browse)Tj /T15 1 Tf 147.9999 0 TD [(mo)-1000(de,)-15000(the)-18000(user)-18000(can)-17000(select)-18000(only)-16000(one)-17000(item)-15000(at)-17000(a)-16000(time.)-26000(In)-16000(the)]TJ /T12 1 Tf 1097 0 TD (multiple)Tj /T15 1 Tf -1475.9999 50 TD (and)Tj /T12 1 Tf 79.9999 0 TD (extended)Tj /T15 1 Tf 188.0001 0 TD [(mo)-1000(de,)-12000(the)-14000(user)-15000(can)-13000(select)-15000(m)]TJ 504.9999 0 TD [(ultiple)-11000(items;)-13000(the)]TJ /T12 1 Tf 321 0 TD (extended)Tj /T15 1 Tf 187.0001 0 TD [(mo)-1000(de)-13000(allo)]TJ 176.9999 0 TD [(ws)-12000(disjoin)]TJ 177.0001 0 TD 0 Tw (t)Tj -1635 49.0002 TD [(selections)-15000(while)-13000(the)]TJ /T12 1 Tf 365 0 TD (multiple)Tj /T15 1 Tf 188 0 TD [(mo)-1000(de)-13000(do)-1000(es)-14000(not.)]TJ -491 74 TD (Normally)Tj 168 0 TD [(,)-16000(the)-19000(user)-19000(selects)-20000(the)-19000(items)-17000(using)-18000(the)-19000(mouse)-17000(or)-18000(the)-19000(k)]TJ 992.9999 0 TD [(eyb)-1000(oard.)-31000(Y)]TJ 216 0 TD [(ou)-17000(can)-19000(\014nd)]TJ -1438.9999 50 TD [(out)-16000(whic)]TJ 157.9999 0 TD [(h)-16000(items)-15000(the)-16000(user)-17000(has)-17000(selected)-17000(with)-16000(the)]TJ /T12 1 Tf 719.0001 0 TD [(info)-21000(selection)]TJ /T15 1 Tf 320.9999 0 TD [(metho)-1000(d,)-15000(whic)]TJ 247 0 TD [(h)-16000(returns)-17000(a)]TJ -1444.9999 49 TD [(list)-18000(of)-18000(the)-20000(curren)]TJ 315.9999 0 TD [(tly)-19000(selected)-21000(items.)-31000(Y)]TJ 397.9999 0 TD [(ou)-18000(can)-19000(also)-18000(set)-20000(the)-19000(selection)-19000(using)-19000(the)]TJ /T12 1 Tf 740 0 TD (selection)Tj -1453.9999 50 TD (set)Tj /T15 1 Tf 79 0 TD [(metho)-1000(d.)-17000(F)]TJ 191 0 TD [(or)-13000(example,)-12000(the)-14000(command)]TJ /T12 1 Tf 483.9999 0 TD [(.tlist)-20000(selection)-20000(set)-21000(3)]TJ /T15 1 Tf 493 0 TD [(selects)-15000(the)-14000(item)-12000(whose)]TJ -1246.9999 50 TD [(index)-18000(is)]TJ /T12 1 Tf 162 0 TD (3)Tj /T15 1 Tf 22 0 TD [(.)-30000(The)-18000(command)]TJ /T12 1 Tf 325 0 TD [(.tlist)-20000(selection)-20000(set)-21000(2)-22000(1)0(0)]TJ /T15 1 Tf 562 0 TD [(selects)-20000(all)-17000(the)-18000(items)-17000(at)-18000(index)]TJ /T12 1 Tf 556.9998 0 TD (2)Tj /T15 1 Tf -1627.9998 50 TD (through)Tj /T12 1 Tf 157 0 TD (10)Tj /T15 1 Tf 44 0 TD [(.)-18000(The)-14000(metho)-1000(d)]TJ /T12 1 Tf 266 0 TD [(selection)-20000(clear)]TJ /T15 1 Tf 341 0 TD [(empties)-13000(the)-15000(selection.)]TJ ET endstream endobj 196 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 198 0 obj << /Length 20487 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(3.3.)-31000(CREA)]TJ 214 0 TD [(TING)-13000(DISPLA)]TJ 273.9999 0 TD [(Y)-13000(ITEMS)-15000(IN)-14000(THE)-14000(TIXTLIST)-14000(WIDGET)]TJ /T15 1 Tf 1119.9998 0 TD (39)Tj ET q 384 0 0 -0.48 125.976 714.876 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 714.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 132 706.02 Tm (Option)Tj ET q 0.48 0 0 -12 209.736 714.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 216 706.02 Tm (Meaning)Tj ET q 0.48 0 0 -12 509.736 714.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 384 0 0 -0.48 125.976 702.636 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 702.156 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 693.78 Tm (-bitmap)Tj ET q 0.48 0 0 -12 209.736 702.156 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 693.78 Tm [(Sp)-1000(eci\014es)-15000(the)-15000(bitmap)-12000(to)-13000(displa)]TJ 537.9999 0 TD [(y)-13000(i)0(n)-14000(the)-14000(item.)]TJ ET q 0.48 0 0 -12 509.736 702.156 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -24 125.736 690.156 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 681.78 Tm (-image)Tj ET q 0.48 0 0 -24 209.736 690.156 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 681.78 Tm [(Sp)-1000(eci\014es)-13000(the)-12000(image)-10000(to)-11000(displa)]TJ 506.0001 0 TD [(y)-10000(i)0(n)-12000(the)-12000(item.)-16000(When)-11000(b)-1000(oth)-12000(the)]TJ /T12 1 Tf 540.9999 0 TD (-bitmap)Tj /T15 1 Tf -1047 50 TD (and)Tj /T12 1 Tf 79 0 TD (-image)Tj /T15 1 Tf 143.0001 0 TD [(options)-12000(are)-13000(sp)-1000(eci\014ed,)-13000(only)-12000(the)-13000(image)-10000(will)-11000(b)-1000(e)-13000(displa)]TJ 904.9999 0 TD 0 Tw (y)Tj 21 0 TD (ed.)Tj ET q 0.48 0 0 -24 509.736 690.156 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 666.156 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 657.78 Tm (-style)Tj ET q 0.48 0 0 -12 209.736 666.156 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 657.78 Tm [(Sp)-1000(eci\014es)-15000(the)-15000(displa)]TJ 344.9999 0 TD 13 Tc [(ys)13000(t)]TJ 66.0001 0 TD 0 Tc [(yle)-14000(to)-13000(use)-15000(for)-14000(this)-14000(item.)]TJ ET q 0.48 0 0 -12 509.736 666.156 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -24 125.736 654.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 646.02 Tm (-showimage)Tj ET q 0.48 0 0 -24 209.736 654.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 646.02 Tm [(A)-16000(B)0(o)-1000(olean)-16000(v)]TJ 228.9999 0 TD [(alue)-16000(that)-16000(sp)-1000(eci\014es)-18000(whether)-18000(the)-17000(image/bitm)]TJ 796 0 TD [(ap)-13000(should)]TJ -1025 50 TD [(b)-1000(e)-14000(displa)]TJ 162.0001 0 TD (y)Tj 21 0 TD (ed.)Tj ET q 0.48 0 0 -24 509.736 654.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -24 125.736 630.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 622.02 Tm (-showtext)Tj ET q 0.48 0 0 -24 209.736 630.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 622.02 Tm [(A)-16000(B)0(o)-1000(olean)-17000(v)]TJ 230.0001 0 TD [(alue)-16000(that)-17000(sp)-1000(eci\014es)-18000(whether)-18000(the)-18000(text)-17000(string)-17000(should)-16000(b)-1000(e)]TJ -230.0001 50 TD (displa)Tj 106.0001 0 TD (y)Tj 21 0 TD (ed.)Tj ET q 0.48 0 0 -24 509.736 630.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 606.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 598.02 Tm (-text)Tj ET q 0.48 0 0 -12 209.736 606.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 598.02 Tm [(Sp)-1000(eci\014es)-15000(the)-15000(text)-14000(string)-14000(to)-14000(displa)]TJ 600.0001 0 TD [(y)-13000(i)0(n)-13000(the)-15000(item.)]TJ ET q 0.48 0 0 -12 509.736 606.396 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -36 125.736 594.636 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 586.02 Tm (-underline)Tj ET q 0.48 0 0 -36 209.736 594.636 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 586.02 Tm [(Sp)-1000(eci\014es)-17000(the)-17000(in)]TJ 277.0001 0 TD [(teger)-16000(index)-16000(of)-16000(a)-15000(c)]TJ 322 0 TD [(haracter)-18000(to)-16000(underline)-16000(in)-15000(the)-17000(text)]TJ -599.0001 49 TD [(string)-14000(in)-14000(the)-15000(item.)-19000(0)-14000(corresp)-1000(onds)-17000(to)-14000(the)-15000(\014rst)-15000(c)]TJ 841.9999 0 TD [(haracter)-16000(of)-14000(the)-15000(text)]TJ -841.9999 50 TD (displa)Tj 106.0001 0 TD (y)Tj 21 0 TD [(ed)-13000(in)-13000(the)-15000(widget,)-13000(1)-14000(t)0(o)-14000(the)-14000(next)-14000(c)]TJ 585.9999 0 TD [(haracter,)-15000(and)-14000(so)-14000(on.)]TJ ET q 0.48 0 0 -36 509.736 594.636 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 384 0 0 -0.48 125.976 558.636 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 180.96 540.42 Tm [(Figure)-14000(3.7:)-17000(Individual)-12000(A)]TJ 442.0001 0 TD [(ttributes)-15000(for)-14000(the)]TJ /T12 1 Tf 306 0 TD (imagetext)Tj /T15 1 Tf 210 0 TD (Displa)Tj 114.9999 0 TD [(y)-13000(Item)]TJ ET q 384 0 0 -0.48 125.976 523.836 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 523.596 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 132 515.22 Tm (Option)Tj ET q 0.48 0 0 -12 209.736 523.596 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 216 515.22 Tm (Meaning)Tj ET q 0.48 0 0 -12 509.736 523.596 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 384 0 0 -0.48 125.976 511.596 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 511.116 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 502.74 Tm (-style)Tj ET q 0.48 0 0 -12 209.736 511.116 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 502.74 Tm [(Sp)-1000(eci\014es)-15000(the)-15000(displa)]TJ 344.9999 0 TD 13 Tc [(ys)13000(t)]TJ 66.0001 0 TD 0 Tc [(yle)-14000(to)-13000(use)-15000(for)-14000(this)-14000(item.)]TJ ET q 0.48 0 0 -12 509.736 511.116 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 499.116 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 490.74 Tm (-text)Tj ET q 0.48 0 0 -12 209.736 499.116 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 490.74 Tm [(Sp)-1000(eci\014es)-15000(the)-15000(text)-14000(string)-14000(to)-14000(displa)]TJ 600.0001 0 TD [(y)-13000(i)0(n)-13000(the)-15000(item.)]TJ ET q 0.48 0 0 -12 509.736 499.116 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -36 125.736 487.356 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 478.74 Tm (-underline)Tj ET q 0.48 0 0 -36 209.736 487.356 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 478.74 Tm [(Sp)-1000(eci\014es)-17000(the)-17000(in)]TJ 277.0001 0 TD [(teger)-16000(index)-16000(of)-16000(a)-15000(c)]TJ 322 0 TD [(haracter)-18000(to)-16000(underline)-16000(in)-15000(the)-17000(text)]TJ -599.0001 49 TD [(string)-14000(in)-14000(the)-15000(item.)-19000(0)-14000(corresp)-1000(onds)-17000(to)-14000(the)-15000(\014rst)-15000(c)]TJ 841.9999 0 TD [(haracter)-16000(of)-14000(the)-15000(text)]TJ -841.9999 50 TD (displa)Tj 106.0001 0 TD (y)Tj 21 0 TD [(ed)-13000(in)-13000(the)-15000(widget,)-13000(1)-14000(t)0(o)-14000(the)-14000(next)-14000(c)]TJ 585.9999 0 TD [(haracter,)-15000(and)-14000(so)-14000(on.)]TJ ET q 0.48 0 0 -36 509.736 487.356 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 384 0 0 -0.48 125.976 451.356 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 193.92 433.14 Tm [(Figure)-14000(3.8:)-17000(Individual)-13000(A)]TJ 442.9999 0 TD [(ttributes)-15000(for)-13000(the)]TJ /T12 1 Tf 306 0 TD (text)Tj /T15 1 Tf 101 0 TD (Displa)Tj 115 0 TD [(y)-12000(Item)]TJ ET q 384 0 0 -0.48 125.976 417.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 416.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 132 408.18 Tm (Option)Tj ET q 0.48 0 0 -12 209.736 416.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 216 408.18 Tm (Meaning)Tj ET q 0.48 0 0 -12 509.736 416.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 384 0 0 -0.48 125.976 404.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 404.076 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 395.7 Tm (-style)Tj ET q 0.48 0 0 -12 209.736 404.076 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 395.7 Tm [(Sp)-1000(eci\014es)-15000(the)-15000(displa)]TJ 344.9999 0 TD 13 Tc [(ys)13000(t)]TJ 66.0001 0 TD 0 Tc [(yle)-14000(to)-13000(use)-15000(for)-14000(this)-14000(item.)]TJ ET q 0.48 0 0 -12 509.736 404.076 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 392.316 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 383.7 Tm (-image)Tj ET q 0.48 0 0 -12 209.736 392.316 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 383.7 Tm [(Sp)-1000(eci\014es)-15000(the)-15000(image)-12000(to)-13000(displa)]TJ 515.0001 0 TD [(y)-13000(i)0(n)-14000(the)-14000(item.)]TJ ET q 0.48 0 0 -12 509.736 392.316 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 384 0 0 -0.48 125.976 380.316 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 191.52 361.86 Tm [(Figure)-14000(3.9:)-17000(Individual)-12000(A)]TJ 442 0 TD [(ttributes)-15000(for)-13000(the)]TJ /T12 1 Tf 306 0 TD (image)Tj /T15 1 Tf 122.9999 0 TD (Displa)Tj 115.0001 0 TD [(y)-12000(Item)]TJ ET q 384 0 0 -0.48 125.976 345.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 345.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 132 336.66 Tm (Option)Tj ET q 0.48 0 0 -12 209.736 345.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 216 336.66 Tm (Meaning)Tj ET q 0.48 0 0 -12 509.736 345.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 384 0 0 -0.48 125.976 333.276 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 332.796 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 324.42 Tm (-style)Tj ET q 0.48 0 0 -12 209.736 332.796 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 324.42 Tm [(Sp)-1000(eci\014es)-15000(the)-15000(displa)]TJ 344.9999 0 TD 13 Tc [(ys)13000(t)]TJ 66.0001 0 TD 0 Tc [(yle)-14000(to)-13000(use)-15000(for)-14000(this)-14000(item.)]TJ ET q 0.48 0 0 -12 509.736 332.796 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 320.796 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 312.42 Tm (-window)Tj ET q 0.48 0 0 -12 209.736 320.796 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 216 312.42 Tm [(Sp)-1000(eci\014es)-15000(the)-15000(widget)-13000(to)-14000(displa)]TJ 528.9999 0 TD [(y)-13000(i)0(n)-13000(the)-15000(item.)]TJ ET q 0.48 0 0 -12 509.736 320.796 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 384 0 0 -0.48 125.976 308.796 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 186.24 290.58 Tm [(Figure)-14000(3.10:)-17000(Individual)-12000(A)]TJ 462.9999 0 TD [(ttributes)-15000(for)-14000(the)]TJ /T12 1 Tf 306 0 TD (window)Tj /T15 1 Tf 145.0001 0 TD (Displa)Tj 115 0 TD [(y)-13000(Item)]TJ ET q 360 0 0 -0.48 125.976 274.476 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 273.996 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 265.62 Tm (-activebackground)Tj ET q 0.48 0 0 -12 245.736 273.996 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 252 265.62 Tm (-activeforegroun)Tj 350.9999 0 TD (d)Tj ET q 0.48 0 0 -12 365.736 273.996 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 372 265.62 Tm (-anchor)Tj ET q 0.48 0 0 -12 485.736 273.996 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 360 0 0 -0.48 125.976 261.996 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 261.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 132 253.14 Tm (-background)Tj ET q 0.48 0 0 -12 245.736 261.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 252 253.14 Tm (-disabledbackgro)Tj 350.9999 0 TD (und)Tj ET q 0.48 0 0 -12 365.736 261.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 372 253.14 Tm (-disabledforegr)Tj 328.9999 0 TD (ound)Tj ET q 0.48 0 0 -12 485.736 261.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 360 0 0 -0.48 125.976 249.756 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 249.276 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 132 240.9 Tm (-foreground)Tj ET q 0.48 0 0 -12 245.736 249.276 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 252 240.9 Tm (-font)Tj ET q 0.48 0 0 -12 365.736 249.276 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 372 240.9 Tm (-justify)Tj ET q 0.48 0 0 -12 485.736 249.276 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 360 0 0 -0.48 125.976 237.276 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 237.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 132 228.42 Tm (-padx)Tj ET q 0.48 0 0 -12 245.736 237.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 252 228.42 Tm (-pady)Tj ET q 0.48 0 0 -12 365.736 237.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 372 228.42 Tm (-selectbackgrou)Tj 328.9999 0 TD (nd)Tj ET q 0.48 0 0 -12 485.736 237.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 360 0 0 -0.48 125.976 225.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 224.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 132 216.18 Tm (-selectforeground)Tj ET q 0.48 0 0 -12 245.736 224.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 252 216.18 Tm (-wraplength)Tj ET q 0.48 0 0 -12 365.736 224.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 485.736 224.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 360 0 0 -0.48 125.976 212.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 155.52 194.34 Tm [(Figure)-14000(3.11:)-17000(Collectiv)]TJ 395 0 TD 13 Tc (eA)Tj 60.9999 0 TD 0 Tc [(ttributes)-15000(for)-14000(the)]TJ /T12 1 Tf 306 0 TD (imagetext)Tj /T15 1 Tf 210 0 TD (and)Tj /T12 1 Tf 81 0 TD (text)Tj /T15 1 Tf 101 0 TD (Displa)Tj 115.0001 0 TD [(y)-12000(Items)]TJ ET q 360 0 0 -0.48 125.976 177.996 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 177.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 169.14 Tm (-anchor)Tj ET q 0.48 0 0 -12 245.736 177.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 252 169.14 Tm (-padx)Tj ET q 0.48 0 0 -12 365.736 177.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 372 169.14 Tm (-pady)Tj ET q 0.48 0 0 -12 485.736 177.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 360 0 0 -0.48 125.976 165.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 187.2 147.06 Tm [(Figure)-14000(3.12:)-17000(Collectiv)]TJ 395 0 TD 13 Tc (eA)Tj 61 0 TD 0 Tc [(ttributes)-15000(for)-13000(the)]TJ /T12 1 Tf 306 0 TD (window)Tj /T15 1 Tf 145 0 TD (Displa)Tj 114.9999 0 TD [(y)-12000(Item)]TJ ET endstream endobj 199 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T9 25 0 R /T10 20 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 201 0 obj << /Length 3809 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (40)Tj /T9 1 Tf 504 0 TD [(CHAPTER)-15000(3.)-31000(T)]TJ 314.9999 0 TD [(ABULAR)-14000(LISTBO)]TJ 347 0 TD [(X)-14000(AND)-14000(DISPLA)]TJ 305 0 TD [(Y)-14000(ITEMS)]TJ ET q 360 0 0 -0.48 125.976 465.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 464.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 132 456.18 Tm (-activebackground)Tj ET q 0.48 0 0 -12 245.736 464.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 252 456.18 Tm (-activeforegroun)Tj 350.9999 0 TD 0 Tw (d)Tj ET q 0.48 0 0 -12 365.736 464.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 372 456.18 Tm (-anchor)Tj ET q 0.48 0 0 -12 485.736 464.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 360 0 0 -0.48 125.976 452.556 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 452.316 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 132 443.7 Tm (-background)Tj ET q 0.48 0 0 -12 245.736 452.316 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 252 443.7 Tm (-disabledbackgro)Tj 350.9999 0 TD (und)Tj ET q 0.48 0 0 -12 365.736 452.316 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 372 443.7 Tm (-disabledforegr)Tj 328.9999 0 TD (ound)Tj ET q 0.48 0 0 -12 485.736 452.316 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 360 0 0 -0.48 125.976 440.316 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 439.836 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 132 431.46 Tm (-foreground)Tj ET q 0.48 0 0 -12 245.736 439.836 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 252 431.46 Tm (-padx)Tj ET q 0.48 0 0 -12 365.736 439.836 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 372 431.46 Tm (-pady)Tj ET q 0.48 0 0 -12 485.736 439.836 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 360 0 0 -0.48 125.976 427.836 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 125.736 427.596 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 132 419.22 Tm (-selectbackground)Tj ET q 0.48 0 0 -12 245.736 427.596 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 252 419.22 Tm (-selectforegroun)Tj 350.9999 0 TD (d)Tj ET q 0.48 0 0 -12 365.736 427.596 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 0.48 0 0 -12 485.736 427.596 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 360 0 0 -0.48 125.976 415.596 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 189.84 397.14 Tm [(Figure)-14000(3.13:)-16000(Collectiv)]TJ 393.9999 0 TD 14 Tc (eA)Tj 62.0001 0 TD 0 Tc [(ttributes)-15000(for)-13000(the)]TJ /T12 1 Tf 306 0 TD (image)Tj /T15 1 Tf 122.9999 0 TD (Displa)Tj 115 0 TD [(y)-12000(Item)]TJ ET endstream endobj 202 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T9 25 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 204 0 obj << /Length 6874 >> stream BT /T16 1 Tf 0.24 0 0 -0.24 126 627.54 Tm 0 g /GS1 gs 0 Tc [(Chapter)-31000(4)]TJ /T11 1 Tf 0 231 TD (Hierarc)Tj 374.9999 0 TD (hical)Tj 277.0001 0 TD [(Listb)-3000(o)]TJ 316 0 TD 0 Tw (x)Tj /T14 1 Tf -968 263.9998 TD (4.1)Tj 153 0 TD [(TixHList)-24000({)-22000(The)-22000(Tix)-23000(Hierarc)]TJ 821 0 TD [(hical)-25000(Listb)-2000(o)]TJ 343 0 TD [(x)-23000(Widget)]TJ /T13 1 Tf -1317 115 TD (TixHList)Tj /T15 1 Tf 176.9999 0 TD [(is)-16000(the)-16000(Tix)-14000(Hierarc)]TJ 326.0001 0 TD [(hical)-16000(Listb)-1000(o)]TJ 216 0 TD [(x)-15000(Widget.)-22000(Y)]TJ 231.9999 0 TD [(ou)-15000(can)-15000(use)-16000(it)-15000(to)-16000(displa)]TJ 411.0001 0 TD 14 Tc [(ya)14000(n)]TJ 78.9999 0 TD 0 Tc [(y)-15000(data)-15000(that)]TJ -1440.9999 50 TD (ha)Tj 43 0 TD (v)Tj 21 0 TD [(e)-11000(a)-12000(hierarc)]TJ 185 0 TD [(hical)-11000(structure.)-20000(F)]TJ 314.9999 0 TD [(or)-11000(example,)-10000(the)-13000(HList)-11000(widget)-12000(in)-11000(\014gure)-12000(4.1\(a\))-11000(displa)]TJ 917 0 TD [(ys)-11000(a)-11000(Unix)]TJ -1480.9999 50.0001 TD [(\014le)-13000(system)-12000(directory)-14000(tree;)-14000(the)-13000(HList)-13000(widget)-13000(in)-12000(\014gure)-13000(4.1\(b\))-12000(displa)]TJ 1176.9999 0 TD [(ys)-12000(the)-14000(corp)-1000(orate)-14000(hierarc)]TJ 429.0001 0 TD (h)Tj 21.9998 0 TD (y)Tj -1627.9998 48.9999 TD [(of)-14000(a)-15000(h)]TJ 106 0 TD [(yp)-1000(othetical)-15000(compan)]TJ 359 0 TD (y)Tj 19 0 TD [(.)-20000(A)0(s)-15000(sho)]TJ 153 0 TD [(wn)-15000(in)-15000(these)-16000(t)]TJ 240 0 TD (w)Tj 29 0 TD [(o)-15000(\014gures,)-16000(the)-16000(en)]TJ 293.9999 0 TD [(tries)-16000(inside)-15000(the)-15000(TixHList)]TJ -1199.9999 50 TD [(widget)-11000(are)-12000(inden)]TJ 296 0 TD [(ted)-12000(can)-12000(b)-1000(e)-12000(optionally)-10000(connected)-13000(b)]TJ 603 0 TD [(y)-11000(branc)]TJ 132.9999 0 TD [(h)-12000(lines)-12000(according)-11000(to)-11000(their)-12000(p)-1000(ositions)]TJ -1031.9999 50 TD [(in)-13000(the)-15000(hierarc)]TJ 243 0 TD (h)Tj 22 0 TD (y)Tj 19 0 TD (.)Tj /T8 1 Tf -284 141 TD (4.1.1)Tj 171 0 TD [(Creating)-19000(a)-19000(Hierarc)]TJ 460 0 TD [(hical)-17000(List)]TJ /T15 1 Tf -631 101.0001 TD [(A)-16000(TixHList)-15000(widget)-16000(can)-16000(b)-1000(e)-16000(created)-18000(b)]TJ 669 0 TD [(y)-15000(the)-17000(command)]TJ /T12 1 Tf 302 0 TD (tixHList)Tj /T15 1 Tf 175.9999 0 TD 22 Tc [(.H)22000(o)]TJ 85 0 TD 0 Tc (w)Tj 29.0001 0 TD (ev)Tj 38.9999 0 TD [(er,)-16000(most)-14000(lik)]TJ 210 0 TD (ely)Tj 48.9999 0 TD 14 Tc (,y)Tj 47.0002 0 TD 0 Tc (ou)Tj -1606 50 TD (w)Tj 29 0 TD [(ould)-9000(w)]TJ 117 0 TD (an)Tj 43 0 TD [(t)-10000(t)0(o)-9000(create)-12000(a)-9000(TixHList)-10000(with)-9000(scrollbars)-11000(attac)]TJ 758.9999 0 TD [(hed.)-17000(Therefore,)-12000(usually)-9000(y)]TJ 449 0 TD [(ou)-9000(will)-9000(use)-10000(the)]TJ /T12 1 Tf -1396.9999 50 TD (tixScrolledHList)Tj /T15 1 Tf 359 0 TD [(command)-8000(to)-10000(create)-12000(a)-10000(scrolled)-11000(hierarc)]TJ 653 0 TD [(hical)-10000(listb)-1000(o)]TJ 195.9999 0 TD [(x)-9000(\(line)-10000(1)-11000(i)0(n)-10000(program)-8000(4.1\).)]TJ -1207.9999 48.9999 TD (The)Tj /T12 1 Tf 82.9999 0 TD (tixScrolledHList)Tj /T15 1 Tf 361 0 TD [(command)-9000(is)-11000(v)]TJ 246.9999 0 TD [(ery)-12000(similar)-10000(to)-11000(the)]TJ /T12 1 Tf 321.0001 0 TD (TixScrolledListB)Tj 350.9999 0 TD (ox)Tj /T15 1 Tf 53 0 TD [(command)-9000(w)]TJ 216.0001 0 TD (e)Tj -1632 50 TD (sa)Tj 36 0 TD [(w)-15000(i)0(n)-14000(section)-16000(2.3.1.)-19000(It)-15000(creates)-16000(a)-15000(TixHList)-14000(sub)]TJ 813 0 TD [(widget)-15000(of)-14000(the)-16000(name)]TJ /T12 1 Tf 366.9999 0 TD (hlist)Tj /T15 1 Tf 124 0 TD [(and)-15000(attac)]TJ 173 0 TD [(hes)-15000(t)]TJ 87.0001 0 TD (w)Tj 28.9998 0 TD (o)Tj -1628.9998 50 TD [(scrollbars)-14000(to)-14000(it.)]TJ 62 73.0001 TD [(As)-18000(sho)]TJ 124 0 TD [(wn)-17000(in)-17000(the)-18000(\014rst)-18000(\014v)]TJ 330 0 TD [(e)-18000(lines)-17000(in)-17000(program)-16000(4.1,)-17000(w)]TJ 468 0 TD [(e)-17000(create)-19000(a)-17000(scrolled)-18000(TixHList)-17000(widget,)]TJ -984 50 TD [(using)-12000(the)]TJ /T12 1 Tf 176.9999 0 TD (-options)Tj /T15 1 Tf 187 0 TD (switc)Tj 91.0001 0 TD [(h)-13000(\(see)-14000(section)-13000(1.3.5\))-11000(to)-12000(set)-13000(sev)]TJ 535.9999 0 TD [(eral)-13000(options)-12000(for)-12000(the)]TJ /T12 1 Tf 356 0 TD (hlist)Tj /T15 1 Tf 122 0 TD (sub)Tj 61.0001 0 TD (widget)Tj -1530 49.9999 TD (\(w)Tj 45 0 TD [(e'll)-15000(talk)-15000(ab)-1000(out)-16000(these)-17000(options)-15000(shortly\).)-24000(Then,)-17000(w)]TJ 861 0 TD [(e)-16000(can)-16000(access)-18000(the)-16000(HList)-16000(sub)]TJ 487.9999 0 TD [(widget)-16000(widget)]TJ -1393.9999 50 TD [(using)-14000(the)]TJ /T12 1 Tf 179.9999 0 TD [(subwidget)-20000(hlist)]TJ /T15 1 Tf 341.0001 0 TD [(metho)-1000(d)-13000(\(line)-13000(7)-14000(i)0(n)-13000(program)-13000(4.1\).)]TJ /T8 1 Tf -521 141 TD (4.1.2)Tj 171 0 TD [(Creating)-19000(En)]TJ 297.9999 0 TD [(tries)-18000(in)-18000(a)-19000(HList)-17000(Widget)]TJ /T15 1 Tf -468.9999 101 TD (Eac)Tj 65.9999 0 TD 15 Tc [(he)15000(n)]TJ 78 0 TD 0 Tc [(try)-16000(in)-15000(an)-15000(HList)-15000(widget)-15000(has)-15000(a)-15000(unique)-15000(name,)-14000(called)-15000(its)]TJ /T13 1 Tf 978.9999 0 TD (entry-p)Tj 128 0 TD (ath)Tj /T15 1 Tf 56 0 TD [(,)-15000(whic)]TJ 109 0 TD [(h)-15000(determines)]TJ -1415.9999 49 TD (eac)Tj 56 0 TD 18 Tc [(he)18000(n)]TJ 81 0 TD 0 Tc [(try's)-18000(p)-1000(osition)-17000(in)-17000(the)-18000(HList)-17000(widget.)-29000(The)-18000(en)]TJ 797 0 TD [(try-paths)-18000(of)-17000(the)-18000(HList)-17000(en)]TJ 468.9999 0 TD [(tries)-19000(are)-18000(v)]TJ 191.0001 0 TD (ery)Tj -1594 50 TD [(similar)-12000(to)-15000(the)-15000(pathnames)-14000(of)-14000(Unix)-14000(\014les.)-21000(Eac)]TJ 790 0 TD 15 Tc [(he)15000(n)]TJ 78 0 TD 0 Tc [(try-path)-15000(is)-14000(a)-15000(list)-14000(of)-14000(string)-15000(names)-14000(separated)]TJ -868 50 TD (b)Tj 22 0 TD 16 Tc (ya)Tj /T13 1 Tf 75 0 TD 0 Tc (sep)Tj 54.9999 0 TD (ar)Tj 37.0001 0 TD [(ator)-17000(char)]TJ 167.9999 0 TD (acter)Tj /T15 1 Tf 91.0001 0 TD [(.)-25000(B)0(y)-17000(default,)-16000(the)-17000(separator)-18000(c)]TJ 536 0 TD [(haracter)-17000(is)-17000(the)-17000(p)-1000(erio)-1000(d)-17000(c)]TJ 434 0 TD [(haracter)-17000(\()]TJ /T12 1 Tf 182 0 TD (.)Tj /T15 1 Tf 22 0 TD (\),)Tj -1622 50 TD [(but)-14000(it)-14000(can)-14000(b)-1000(e)-14000(con\014gured)-15000(using)-14000(the)]TJ /T12 1 Tf 631 0 TD (-separator)Tj /T15 1 Tf 231.9999 0 TD [(option)-13000(of)-13000(the)-15000(HList)-14000(widget.)]TJ -59 114 TD (41)Tj ET endstream endobj 205 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T11 21 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R /T16 7 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 207 0 obj << /Type /XObject /Subtype /Image /Name /Im25 /Width 223 /Height 230 /BitsPerComponent 8 /ColorSpace 168 0 R /Length 1763 /Filter /FlateDecode >> stream H‰ì—‹–« EéÐÒ™ûÿ|U&”G œY­”Z‡m0ÉâKõh½€X,tùê‡Ðƒü†™è…>&{}=Þ“@g ]¨‡W/ÏÕ’—ó†Š]ècâå]YµÂ“R¿®+ê×äBƒÇ®,ÞéR‰ÓnâÏ?Ùñ‚µÑK•«°ÓâBßo]¯ Þ6ÔvV/ÜbYŽtÿ¢8º}cè4¡…ÑX`_‡½égJ[vFJà½ùxÞ )xz‘uð(º}§º#<ºžß±ÅáEÏ_<¼Kx{[G]éTÞ!„8žRñ¹‚x’ ™X¼[‘ÒT/ azü †hY€‘K( ÍÊz-ÑxXâû¼ÇQØ\sÅ.Ôà•^O#í\{ùxŽ%ƒµoÎñð¼goÁ{u©•™OmxûV4G…ã‰î¤ žÏ ñÖÎð0Wb½‰‚xJ™„™Š'ß‹BvxpDãI#{‘.äã@ñôPÏžâ)-»~ e¯Ìï ‡çxÒÃ{;±ÅÓ#¾ x,è ÞÞ®ìã3¼mö…g‚·…o¼èYºýÃM<tÏo%KÌœà³ðJ¬{üñ`ð´´®¯{,dð6âBKÍ m•×R»ÙÁðT Ñðà£÷ns–ÀãhÊá¡°¶ráQŰ1_6¼ •Ak¡4oû¤¥·o1<²Í–àX<¶íðDT›o7Fgxns–V“èm94žO‚¨õ…o=«Ïg/X Ïh®…ÒÄ+©‰—I4ÒÿþÂÿ8Q]<ÌJòì ªŠ‡zÀaððZhŒŸö-eU<¼“^·f†yÄo€~4ŠãA ˆÇox¼±SKÇ…¡¾œ-õÄ£eñ¤L~e¸5õ¢÷›¬þðÖ¤0x‡nñ¶õË¿E>‰‡'½ÉûtEñ¼" Ê'÷ÐþÂ#w<¥¥#¨w¦•ÇçGÍÆ’?ž„xÿþ쌠cíoÑÂ…»Ogñ^žrámÊò,tN€ßœùðÂÙ2›sÙ“(Ý¡<äÞœuðþÁëOyÏ‚W¥î•Á êž„[3xÜ:Äۨ숬{¤˜oÎU¥ªZ×"® DMx@ò*Ù¦z=§ Þ!‚ ¼ðhßųýœàùì…~Ç;Ýœ:³ˆ«!l=˜8Nž½‰‡¨jæÄð>Ô=ÎxA¸ŠÇ´¬Ã AÖ½’š-õÄ£5ñJбßË!N~Ïö˜Áñ†ù=3wÄÈï¡x7Õ¼)Ðç?s7lžaå÷üè]·y¤yôü Òsj9Çë>sž¢îðý^geÝ,ÛŽ¿ÃïUl³'ÞÄ£5ñH˜á>´Ç£=àx˜Ì·{[㡵ÐxyÛ64ÇC;™Ý/H7¼(žxûÛýƳ Ô€xp<ñ†Ã©…ºHœxâÁÂ@\$NÍñÊzÀÖx…5ñ&­‰Gû½“©È[ÔïÄïL1Å;šÄïÅ\'îßWÇSZfžð{ÎçÉc…_g¤Àv5 < ñˆžS†/Љ¯.ñà™Šì×êãmÛP}ò{1x\ïÑû .ðdWx*¤âÅ /(Ÿð@a€kaç¦ß»£‰7ñhM<ÔïEÖµOj‡û½Nñ¢üžDzEÍ»Òï9ËwCÍñè®%¦éú$ÎxØïÅØïõ‰7xô&^Ç©%ÞïõX¹/ñ{…Úì‰7ñhM> stream ÿØÿîAdobed€ÿÛ„         #"""#''''''''''     !! !!''''''''''ÿÀÆ"ÿÄ¢  s!1AQa"q2‘¡±B#ÁRÑá3bð$r‚ñ%C4S’¢²csÂ5D'“£³6TdtÃÒâ&ƒ „”EF¤´VÓU(òãóÄÔäôeu…•¥µÅÕåõfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø)9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúm!1AQa"q‘2¡±ðÁÑá#BRbrñ3$4C‚’S%¢c²ÂsÒ5âDƒT“ &6E'dtU7ò£³Ã()Óã󄔤´ÄÔäôeu…•¥µÅÕåõFVfv†–¦¶ÆÖæöGWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúÿÝ ÿÚ ?“\Ü_Û”Žy¸¬Ž›`úÍêÈCÏ8aW"Ÿb¦ÂóR¾¿ŠB‘IYD®àQŸˆbjÿwËzœeŠ}Qj¥h$”T’¦§÷äâ¨o®^ËLßðg7×/?å¦oø3‚ÿÃú¿óZÈÙê†oðþ¯üÖŸò6_ú¡Š¡>¹yÿ-3Áœß\¼ÿ–™¿àÎ ÿêÿÍiÿ#eÿª¿Ãú¿óZÈÙê†*„úåçü´Íÿs}róþZfÿƒ8/ü?«ÿ5§ü—þ¨fÿêÿÍiÿ#eÿªªK7˜ÚÞå­å¹¸U£I'æ=4yA(¬yWðÚ£ÌÊéz“³ÈhŠ%5'ºm^¸ù¼…spgõÚ vi òÑ]ÓÒ, @7á°­i޵ò-ͥѼ‹êÆf›´²1,Kõú½A ä´n‡jáQ\«-Èco{$«‘QˆÃù{$&"ŸWýÍxÖiOPƒ¯¡QOMhGN6Á¶^RÔlcxá{f29’Gy¥,Ì@^G÷ ?ÛÅVýróþZfÿƒ9¾¹yÿ-3ÁœþÕÿšÓþFËÿT3‡õæ´ÿ‘²ÿÕ U õËÏùi›þ æúåçü´Íÿp_øWþkOù/ýPÍþÕÿšÓþFËÿT1T'×/?å¦oø3›ë—›¤Í¹ížæ˜/ü?«ÿ5§ü—þ¨fÿjÕZ½­ÒI{ÿ¾qT/Ö¯©Ëëñ­+ÌÒ¸äžëщ¾·")D¢—b~Âø|_ü=« kJŠÐú’íZWýÑí™ü½¬2GÍl¢5UÚGÞŠ»ÛŸ U+ŸQºåjâîoLÊInmö}üöÍ—u¤Ý$ö:{<>¬’2)æüº–?µé“ü¹±WÿМhßñÔÖׇþ%qƒÞY‚ÝÜ=ÌVöÖ®±’ð¼§âTjü/w§L£ÇSYÿ^ø•Æ]$j¯wÝMK:‰bˆ¯Ço%:¶ãÓØÅNV/`«§«4i>«h†I&â$D2²;zôROÚÅ%UÿIÚ°¶VyÂBÌÈ«ZòUœŸÙ8ƒù;JÉ O!fYJ¡+‘ÜB8ïÇë.CÉ¥I¦)o¡èö¯t‰wûÉb¹†p^>J·2úÎNÕª´”ÉT:òU–Ó¥gRz|„ÖÒÄz+Ò̧ãíã‚£´»•Þ8µ gx$U…‰SàÀ\meò¾›tž”×’I;(‡˜1†ô¢ŠKcP´ÙgzšT_ 1Ò´;m&{¹íݘݹ‘¹…ªÖI&â(b9JÄTšbD+b}ʳôn¥ÿ-pÒ;ÿÕ|ߣu/ùkƒþ‘ßþ«á¶l‚¥?£u/ùkƒþ‘ßþ«æý©Ë\ôŽÿõ_ ò±T§ôn¥ÿ-pÒ;ÿÕ|þºM${x?T›.n!½n$ð5 9"ÂÉôÈ.$šI.Ó–N^˜àd1 ^´¯NÞ8EuT j¶u d#Ó?az·ûÑÐxãcå)¤zµ›U¸ Fwn*üWý#…ÁÛÇ-Z3£¬®¦8c…>Í @ªIñ!ß}ûc›ËÑÉ ‘î¤cËœŸ C‘¬/Ù6ÞÝzdªå]ô¨$ŠúÝÐôeˆ4Û¨Ÿú7Rÿ–¸?éÿê¾ÁÁ p'Ù‰Uä È*Sú7Rÿ–¸?éÿê¾oѺ—üµÁÿHïÿUðÛ/J?Fê_ò×ý#¿ýWÍú7Rÿ–¸?éÿê¾eâ©GèÝKþZàÿ¤wÿªù¿Fê_ò×ý#¿ýWÃl¼U(6×Ya3'(cWgàhY«ÛžÃo˜ÄÉHÎÔ®ÁxÒGVÅ.¿Þˑɔм Šý¿æVÄC Áb“W ŸˆåUðÅXÍÿüwô¿øÎÿñóf¿ÿŽþ—ÿßþ#>lUÿÑœhßñÔÖׇþ%q‡úG÷—ÿñäÌXA£ÇSYÿ^ø•ÆéÞ_ÿÆuÿ“1b©F¥ ëú…Ô·"ò;rxŶy"wd™Àfâü,‹Ó•Jö˳ò‹Du„¸ž©ªDñ+£1t/qup$ø¶ä¢áiOÚs®Gu&›"Yzž·© ýË~T2qe*~Ç.øWó$ÂÄÆÑçb¢vH°™Pq™ÙËm¨ÉBMxƒá’ñeU÷B.À÷¡•5P²Ê—Ê·R nJ]BÏ;Ç%ã#(ª†ôW†ÝÍF%'–<Í,®VN/B³Î89‚â%!… šT”òû«âÍ«-ùÈX5B‘ï¦åÆG¸hª~"J,‘ŠÖ¿}²E¥ÚOcjÖóÊf"iÞ7fg")%y"BÒU`¿Fkù†îÆÁâIã¹6³‹¨­ä*}vXý1Ê'ˆrÙ¨ÄPw^Ø­»yª }5‹ÔˆÍrÊg`ÕVšåHü¹(Tô}>#¹¦ÂY ر|=¯ˆ{­”edMçó›$^œa¯6)=ÚñEA¥¥;\“Z4ïiÝ(K† È:*9¹èr ¢Q® ûоÉ¡ÌÎi*ˆšä^´t42¤âDcãû½©üʧ0¢î+¶šäƳ™¿Vxä㧤y_R¿³^²BDr@‚²Ðõhb"{ÖiU‘¡o^gžŸ©È| Ũ^øiü<-}idõè\»6ËWÓçÉ«O‡j u4ó$Ñ~ú© %¸ÑTr ’’xnþûu=Ï¡.bC !è9† 5ïövÉ ‡»ìSê¹.ÒtÛ›"Zêw”ðªó<¼O©#¶ì¨ C.ü{S 2ò²$Ù²‡eåeàV²ò²ñV²ò²ñT®ëýí¸ÿV/Ôø‚ý·ú?V/uþöÜ«ê|A~Ûý«cwÿñßÒÿã;ÿÄgÍšÿþ;ú_ügøŒù±WÿÒœhßñÔÖׇþ%q‡úG÷—ÿñäÌXA£ÇSYÿ^ø•ÆéÞ_ÿÆuÿ“1bªÚ½ÕÅž5ͪ†•Ó,3*´…T‚Á– ;Ó ?OÝ[Ý‘M©fþš<è=2k˜­ARÕøz»ôÛÜaö¥z4û9.Ê •U@iɤew§ÄÃ|/}}ìï"²Õ-D/(_ÞA!’d·ŒcŒüO"Ž›|·À}íåôÚXžm½H⺸±EŽâ+)V!5x-Ø™»Ä¬ì=5ªª“áƒ5-fæÓWKVJVË +wŸ×—Ó‘ªî¿ {WŽëöFØ&3i—&€Êíp"xÑcbÜ&D”9öBʼ¼02y¶Õü¼¾aX¢õ ŠXÝLÒÅ ñ4«põ<*}8>)­öÇ]>|¹¨Zyº{¨,æ:qO­°DÁÈ©…xŽ ~5õ‰d4!UŽé¾lÖŒÍwf— –Ò^qW1Ñ!·´¸d@"bÌÍwAS°^çr{™ì§½¸²Tv1N-âhÔÉêQSÔ"3ñ'ééƒÌvom¥Ë:4rê±,РÉÄB´êÞý!ø§aþOŸŸÅNÃ_¹¼º·µ{!\™]fYSÐBèÒE¡!ÂŽ?å^¸y‘ø¼Í Ër³Æ§—Œ 2§*)x•:’8–¹Nž>Ç$G¾Úæ(ý<-áEÝüñMr«2£ÅQ ¹NFEô„ž¥k]ŸjôÚMA¾ϨK¸d^cÆG2qn^˜—eâvø€ëôa(>V–Åæ˘¹Çf¨A$…™dn*ÐŽ ¿mþÕŠ±»ÿøïéñÿâ3æÍÿý/þ3¿üF|Ø«ÿÓœhßñÔÖׇþ%q‡úG÷—ÿñäÌXA£ÇSYÿ^ø•ÆéÞ_ÿÆuÿ“1bª··ÚZ´Ö:ƒÆ±ú"IÅÅ^œŒb™þØR˜_ ¾TGžÖ°½¤Š³,¬¨Á–H¤FøÍHõL|OóPc§òÅ”³Kw=ÝËJÄ´r;¡ôG)d+dû?¾añò¢ì)A‰Cå ¤‡êÓ9ô w1F’+†[Y£= (ZÁ=Ç-ü'Xú’ Ë¢¼6ž[W³·µ·Öä«F‰U£"”uu¨Ø2ñÅ >[XVÖÞKA’ÇÂ$xèÓCéz|@;²Ò:}†gf–N—2[‹x¡´{‹†Z«úˆF즶ò¾ƒgµÔsGMieanP0òõ[Ò¥PÚ§Æ~1Oµ‚±÷¦åÞS£iJ-œ FÈèFŒ„|‚Œ¨ôm./D¥ª«¼õ©ôÇòTì>Øm°Á‘É«Î'WZ²òRª’¬*;†vEx¥ÞPhzDÙDƒm•@ #¸ÄŸpÁùyX©$ó6ÞKq£H^âUVqp,˜”$úÌDT¥7Ù¾×e¯já®Ëa¥ ÞÌp}^&EiMÈn'ùX°Àœ"º _Eˆ<± ˆG-£baã*·Âh”nÜTÐt Ç <¹'£"ÍhÛ „ D ¿mþՋݽ·êÅúŸ_¶ÿGêÅXÝÿüwô¿øÎÿñóf¿ÿŽþ—ÿßþ#>lUÿÔœhßñÔÖׇþ%q‡úG÷—ÿñäÌXA£ÇSYÿ^ø•ÆéÞ_ÿÆuÿ“1bªú¥œº…Œ–QÊ`qIdkÒ,=E_vJ®Geò…ñvê%b#ŒP«z(nÈš>?cëcÜ(hD‹VÏa,Zrƒs/Ñ‹q…y+þJ’v©ÈÌ–Þq¶IÅ”dÌÇmlþ¬r!5ã#‘9ìð«“źéB¹¶Ö҈ߪ=¼·s5í•ÅÙu»’’9½cg•@쟵S×¥½òµõÚ¼?]UƒêRXÅ©EIâY‹¸y@JNœEÚ·™cÒξ±1ÌÖP±„ ža V:laôÉäOß\.’ÇÍQÚ~ŽJ¼Jü„ñJ­#òh_ây¸0PÞ·* ý€6åƒnâe\y·'”/šI$‹P1òyd@¥Ô)’[©†ÊÀT5šåÍå]Vf¼/©šMë4y§ $VXÞˆÃt<[èÍÿ;¼’²ï ^­U¿ÑXˆÙá®õâž¡ˆ=+á†9ó'ÖÓô°?W6ˆdÚU¹¤AÕ}6gzžf¿7؆‡qS)|q)öV^VI¥¼-¸Óç•®U1ÉæK).­éh»Óök_˜¦õXQwmtó\”ŠFw¯ÕçYB¢/¤^`ýºšq§CÛe|é —n>Ý—`I '‘hO«C·:FÝ^§aFŽ$¨JµZÐÓjîIüp†(|É,Tžfõ-FXQy‡ŠÖ'f1ý³û-ãÛ¡õ=$õAò¡5Oöø„Ìž¤r¦V^VËÊËÅZËÊËÅZËÊËÅRù ê ]ˆÕiþWóžÙ-•fbäÔµ;ü béÿ+¯øÇüm•Ò?ö_ñ®*Ã/ÿã¿¥ÿÆwÿˆÏ›5ÿüwô¿øÎÿñób¯ÿÕœhßñÔÖׇþ%q‡úG÷—ÿñäÌYÑÛŽ©¬ìÇã‡ì©oÚ¸þPpí.$Š¢?U9·TÒ•4تY&¥æ+V¾ÔŠúö6ÓM¶ #ÕŽ8ƧŠ)vb_n¸Äó6´³ªM`§×žâP*¤–ÑÎß¼"YÕM:ŠPáÏ×.žø¦o®\ÿ<ÿð2ÿLŸzÀ*[u«ëï¥XÞÚZªÝ\Ýpú¸«~çÓ”ü|ÂQ¹%iQ]‡!ZãÄš€¸’ÖÚÐÜ$FÖ4¹˜4m!¸’Ö#+"  _]ù #lj§×.žø¦o®\ÿ<ÿð2ÿLx£üЩL~iÔš‚M4†6«?Â]‚±uýO€«È·N€ï]°M˜5«ÛX%Óý('eä%ù)h'¸@8~â›ïñ õËŸçŸþ_é›ë—?Ï?ü ¿Ó(ïéûU6Í…?\¹þyÿàeþ™¾¹süóÿÀËý2 ›a š†¨¬bI7CŒœ6Âq §»S¿ƒW¶úåÏóÏÿ/ôÍõËŸçŸþ_é„éj²ó¡u˜ÙXÙ©V.Dž8ºú›ü¾ä£óEëBd6cÔ@)X´¬À0X¸Z¨a]ÏQ†\¸þyÿàeþ™¾¹süóÿÀËý2\QþoÚ­é:æ KM G njKr-$ˆ8Ò«@#¯S× p§ë—?Ï?ü ¿Ó7×.žø¦D›; TÛ6ýrçùçÿ—úfúåÏóÏÿ/ôÀ©¶l)úåÏóÏÿ/ôÍõËŸçŸþ_銦ٰ§ë—?Ï?ü ¿Ó7×.žø¦*ˆºß]²%cˆ×nƒ•zâç–Þ)ç$™K:)qBˆÛÄoôâ~»òg¤¼œQÛ„•#ßlÍ;½9‰Z*’኱›ÿøïéñÿâ3æÍ_ÓÚQâßß9ãÄò§ Ù¥sb¯ÿÖœhßñÔÖׇþ%q‡XI¢2¶§¬²G8wµq‡x«³fÍŠª$<Ô¿%U µzšøáŽôýýü7üÓ˜¼Ïÿõ6겘t˹™Dü]C ELëኦ^‚ÿ¿£ÿ†ÿšsz þþþþiÈŽ“u-õð¸Óh¬"ä³[L\ô¨Éêü?¨çfmå«\£,èŽÆx¹ZЦàv9xÏûÛÏøÏÿ2£ÁX«³fÍŠ·•›6*ìÙ³bª«$]P@å^ß rýÿGÿ ÿ4âîÑé"¿¦È“0“‰~$(<¸KS™‚þòö8ÿðÜÃèºÅ–Œ_n”¼"¡èjêÜ«ÔwÅY¯ ¿ïèÿá¿æœÞ‚ÿ¿£ÿ†ÿšr,ñù¢4ˆ,’Êåb>ª”¬? œ~ì7©^¿L¢C«!–MVI$fŽ5F™bGª¼ÅKgxú2î1TÙ$£`ëR¼…hJ’§­;Œ¼ §¼£ýyäã`¬UÙ³fÅXÍÿüwô¿øÎÿñóf¿#üA¥Žþ»š{qŸ6*ÿÿלèÄSXÖ ?à®0ç!.ÚÏé ÿªÅk_TúœäÞœŸ…}HÿÖéŽ æ:šÅgöM?y+Éâ¿ â¬Ó6B¹y“ýõgÿ##ÿªy¹y“ýõgÿ##ÿªx«3™Xý!+ļ¹”îŽú“ÿËTÿzÿÍåæO÷ÕŸüŒþ©åró'ûêÏþFGÿTñVWõ'ÿ–©þõÿš3}Iÿ媽挊ró'ûêÏþFGÿTóró'ûêÏþFGÿTñVaon¶êà39‘¹»9“@½€ì¸®B¹y“ýõgÿ##ÿªy¹y“ýõgÿ##ÿªx«5Í®^dÿ}YÿÈÈÿêžn^dÿ}YÿÈÈÿêž*Ͳ²ËÌŸï«?ùýSÊåæO÷ÕŸüŒþ©â¬×6B¹y“ýõgÿ##ÿªy¹y“ýõgÿ##ÿªx«1ž'˜"úÒF©ZøŽ½ÍTâ?RùjŸï_ù£"œ¼Éþú³ÿ‘‘ÿÕ<ܼÉþú³ÿ‘‘ÿÕ> stream H‰ì—‰š« F±™:ïÿÆ3­`.,Êÿ]¯›3„͘o×òé.+’ñÓ# %ØÒªÂ/“sr6«cÎE“Q­-K͘qÖ›«‹s^©‚t6ãerF¢ÚQCœGVÝ㔂‹¡Y–ó ð!Nòþ¨Â™ÉKW œðÒcû·½mLÍã&k§ZÙ·„ô¦\÷A÷ìÜù8Ï©yÜÒ><ÃŒÌí†sËv·UäÄüY}""P{¿‘ÂÉ7…y9àue&N»…}œæ }éª\ŸYÀˆ89åâ”¶Êœb~U¬I˜-pÒiVë=È0<›à¬¡0§6Ë È©Ú¾sñ¥ÙÚÑÙŒgé|>- h÷³ËÏ r|¶nædãóŸóÙ·^PŠQá4=k}sÚ—'Gæ\¿…Fæ\W7͆9>–iš('}Ò9{¥¤œëº­'ftÎú¨r«l¶âu÷>´snݹuh¬?A\9íFÈ>‡9 ¿w"ÇéºóÝ¡#sî;ÛçÈœØ/Ä9ÉQå9î[¼¸Žçt7ÒOùD^Μç²`¸=yn±O”àwž£—·z?.Ι‘OÔጠw»88Ãyó¿Yøu8 +  6šœ—5*X"Ÿ¨Ã)Ç's?~X›õ8'€ÑwwaLt ’¹&ò‰œ×Ö’¥\ÿcˆ®+Å8ûÑ䜜=jrNÎ59'§aÛô Å× —RºÇ©%,l|﫤lœSsësÛZG÷ïx>A·ð\éû8ÏÇìùÂsóT¤­=NqçˆGºù‡J%8·,ç“é&'Ÿ{x3q`¬ÇéoqR²F¹ÛV«¶ÊÍyº6»áŒÏCgl¢…t›óh]íˆ{x]1Ÿç\6±¿õÆZËÀœov^õ\fØvhÜó§¡¿çñ|ÛŸÜø¤Ý92çJºsdNCºshλó€ópç¢9Þî ×Oìα9×ú8.§Ù»3Âévãûœ7íFÙâK[¬MñÛ}Ò9Wú¤sÊÃùiÊ©xx‘.Fiۛ¿–Âi\wF8ݯӻÏ)¼hÞÆ ûÚR9W|¸Îi_Añbœà ‘Ö­Â"Φ99ͳ<'&¯Ô¨`ùKÙ8ѨpÊCM_:}.SßÊyd´.Æùéd ŠrjZ‚-­*œñ䜜í*ι„niU‘Œûƒ¹§¿v~ç› endstream endobj 212 0 obj << /Length 2582 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (42)Tj /T9 1 Tf 834 0 TD [(CHAPTER)-14000(4.)-32000(HIERAR)]TJ 453.9999 0 TD [(CHICAL)-13000(LISTBO)]TJ 330.0001 0 TD 0 Tw (X)Tj ET q 118.9833 0 0 122.02 160.56 562.0548 cm /Im25 Do Q BT /T6 1 Tf 0.24 0 0 -0.24 172.56 540.18 Tm [(\(a\))-11000(Directory)-9000(T)]TJ 236.0001 0 TD [(ree)-12000(Displa)]TJ 156 0 TD (y)Tj ET q 198.0871 0 0 140.8101 286.08 562.0801 cm /Im30 Do Q BT 0.24 0 0 -0.24 337.2 540.18 Tm [(\(b\))-10000(A)-13000(Corp)-1000(orate)-9000(Hierarc)]TJ 376.9999 0 TD (h)Tj 19 0 TD (y)Tj /T15 1 Tf -866.9999 124.0002 TD [(Figure)-14000(4.1:)-17000(Examples)-13000(of)-13000(the)-14000(TixHList)-14000(Widget)]TJ ET q 396 0 0 -0.96 125.976 489.996 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 480.18 Tm [(Program)-15000(4.1)]TJ /T15 1 Tf 273 0 TD [(Creating)-14000(En)]TJ 220.9999 0 TD [(tries)-15000(in)-13000(a)-14000(HList)-14000(Widget)]TJ ET q 396 0 0 -0.48 125.976 476.316 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 466.98 Tm [(tixScrolledHList)-18000(.sh)-21000(-options)-21000({)]TJ 86.9999 50 TD [(hlist.itemType)-19000(text)]TJ T* [(hlist.drawBranch)-18000(false)]TJ T* (hlist.indent)Tj 370.0001 0 TD (8)Tj -457 49.9999 TD (})Tj 0 49 TD [(pack)-21000(.sh)-21000(-expand)-20000(yes)-21000(-fill)-21000(both)]TJ 0 50 TD [(set)-21000(hlist)-21000([.sh)-21000(subwidget)-20000(hlist])]TJ 0 100 TD [($hlist)-20000(add)-22000(foo)]TJ 501 0 TD [(-text)-21000("foo")]TJ -501 50 TD [($hlist)-20000(add)-22000(foo.bar)]TJ 501 0 TD [(-text)-21000("foo's)-20000(1st)-22000(son")]TJ -501 49.0001 TD [($hlist)-20000(add)-22000(foo.bor)]TJ 501 0 TD [(-text)-21000("foo's)-20000(2nd)-22000(son")]TJ -501 50 TD [($hlist)-20000(add)-22000(foo.bar.bao)-19000(-text)-21000("foo's)-20000(1st)-22000(son's)-20000(1st)-21000(son")]TJ T* [($hlist)-20000(add)-22000(foo.bar.kao)-19000(-text)-21000("foo's)-20000(1st)-22000(son's)-20000(2nd)-21000(son")]TJ T* [($hlist)-20000(add)-22000(dor)]TJ 501 0 TD [(-text)-21000("dor,)-21000(who)-21000(has)-21000(no)-21000(son")]TJ ET q 396 0 0 -0.48 125.976 298.236 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 143.9901 0 0 108 252 171.06 cm /Im24 Do Q BT /T15 1 Tf 0.24 0 0 -0.24 247.92 149.22 Tm [(Figure)-14000(4.2:)-17000(Output)-15000(of)-13000(Program)-13000(4.1)]TJ ET endstream endobj 213 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /T6 72 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T15 6 0 R >> /XObject << /Im24 209 0 R /Im25 207 0 R /Im30 208 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS16 168 0 R /CS19 210 0 R >> >> endobj 210 0 obj [/Indexed /DeviceRGB 7 214 0 R] endobj 214 0 obj << /Filter /ASCII85Decode /Length 34 >> stream lg*kVEH/n6_Z0Z:e'lcoI=;.qs/t,>~> endstream endobj 216 0 obj << /Length 10790 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(4.1.)-31000(TIXHLIST)-14000({)-14000(THE)-14000(TIX)-14000(HIERAR)]TJ 706 0 TD [(CHICAL)-13000(LISTBO)]TJ 330 0 TD [(X)-15000(WIDGET)]TJ /T15 1 Tf 571.9998 0 TD (43)Tj -1545.9998 117 TD [(In)-12000(program)-10000(4.2,)-11000(w)]TJ 319.9999 0 TD [(e)-12000(add)-12000(sev)]TJ 164.0001 0 TD [(eral)-12000(new)-13000(en)]TJ 203 0 TD (tries)Tj /T12 1 Tf 89.9999 0 TD (foo)Tj /T15 1 Tf 66.0001 0 TD 0 Tw (,)Tj /T12 1 Tf 23.9999 0 TD (foo.bar)Tj /T15 1 Tf 154 0 TD (,)Tj /T12 1 Tf 22.0001 0 TD (foo.bor)Tj /T15 1 Tf 154 0 TD (,)Tj /T12 1 Tf 22 0 TD (foo.bar.bao)Tj /T15 1 Tf 241.9999 0 TD [(,)-10000(.)0(.)-16000(etc,)]TJ -1522.9999 49.0002 TD (in)Tj 34 0 TD [(to)-10000(the)-11000(HList)-10000(widget)-10000(using)-10000(the)]TJ /T12 1 Tf 528.9999 0 TD (add)Tj /T15 1 Tf 76 0 TD [(metho)-1000(d.)-16000(The)-11000(relationship)-10000(b)-1000(e)0(t)]TJ 528 0 TD (w)Tj 29.0001 0 TD [(een)-12000(the)-11000(en)]TJ 178.9999 0 TD [(tries)-11000(is)-10000(signi\014ed)]TJ -1374.9999 50 TD (b)Tj 22 0 TD [(y)-16000(their)-17000(names,)-15000(in)-16000(a)-16000(w)]TJ 398 0 TD (a)Tj 20 0 TD [(y)-16000(similar)-13000(to)-17000(ho)]TJ 272.9999 0 TD [(w)-15000(Unix)-16000(denotes)-18000(directories)-17000(and)-16000(sub)-1000(directories.)-27000(F)]TJ 900.0001 0 TD (or)Tj -1613 50 TD (example,)Tj /T12 1 Tf 173 0 TD (foo)Tj /T15 1 Tf 77 0 TD [(is)-12000(the)]TJ /T13 1 Tf 109.9999 0 TD (p)Tj 19 0 TD (ar)Tj 37 0 TD (ent)Tj /T15 1 Tf 68.0001 0 TD (of)Tj /T12 1 Tf 46 0 TD (foo.bar)Tj /T15 1 Tf 164 0 TD (and)Tj /T12 1 Tf 78.9999 0 TD (foo.bor)Tj /T15 1 Tf 154.0001 0 TD (;)Tj /T12 1 Tf 23 0 TD (foo.bar)Tj /T15 1 Tf 165 0 TD [(is)-12000(the)-12000(paren)]TJ 209 0 TD 13 Tc [(to)13000(f)]TJ /T12 1 Tf 75 0 TD 0 Tc (foo.bar.bao)Tj /T15 1 Tf 241.9998 0 TD (,)Tj -1640.9998 50 TD [(and)-14000(so)-15000(on.)-20000(As)-15000(far)-14000(as)-14000(the)-16000(terminology)-12000(go)-1000(es,)-14000(w)]TJ 821 0 TD [(e)-15000(also)-14000(sa)]TJ 153 0 TD [(y)-14000(that)]TJ /T12 1 Tf 126.9999 0 TD (foo.bar)Tj /T15 1 Tf 167.0001 0 TD (a)Tj /T13 1 Tf 34.9999 0 TD (child)Tj /T15 1 Tf 100 0 TD (of)Tj /T12 1 Tf 48 0 TD (foo)Tj /T15 1 Tf 66.0001 0 TD (;)Tj /T12 1 Tf 25 0 TD (foo)Tj /T15 1 Tf 80 0 TD (is)Tj -1622 50 TD (an)Tj /T13 1 Tf 58 0 TD (anc)Tj 60.9999 0 TD (estor)Tj /T15 1 Tf 103 0 TD (of)Tj /T12 1 Tf 47 0 TD (foo.bar.bao)Tj /T15 1 Tf 253.0001 0 TD (and)Tj /T12 1 Tf 81 0 TD (foo.bar.bao)Tj /T15 1 Tf 253.9999 0 TD [(is)-13000(a)]TJ /T13 1 Tf 76 0 TD (desc)Tj 74 0 TD (endant)Tj /T15 1 Tf 136.0001 0 TD (of)Tj /T12 1 Tf 47 0 TD (foo)Tj /T15 1 Tf 66 0 TD (.)Tj -1194 73 TD [(The)-12000(output)-11000(of)-10000(program)-10000(4.1)-10000(is)-10000(sho)]TJ 585 0 TD [(wn)-11000(in)-11000(\014gure)-11000(4.2.)-16000(As)-12000(w)]TJ 391.9999 0 TD [(e)-11000(can)-11000(see,)-13000(the)-11000(en)]TJ 287 0 TD [(tries)-12000(are)-12000(displa)]TJ 262.9999 0 TD (y)Tj 21.0002 0 TD (ed)Tj -1610 50 TD [(under)-17000(their)-17000(paren)]TJ 321.9999 0 TD [(ts)-17000(with)-16000(the)-16000(amoun)]TJ 341.9999 0 TD [(t)-15000(o)0(f)-15000(inden)]TJ 178 0 TD [(tation)-16000(con)]TJ 186.0001 0 TD [(trol)-16000(b)]TJ 103 0 TD [(y)-16000(the)]TJ /T12 1 Tf 112 0 TD (-indent)Tj /T15 1 Tf 168 0 TD [(option)-16000(of)-15000(the)]TJ -1411 50 TD [(HList)-14000(widget:)]TJ /T12 1 Tf 265.9999 0 TD (foo.bar.bao)Tj /T15 1 Tf 254.0001 0 TD (and)Tj /T12 1 Tf 80.9999 0 TD (foo.bar.kao)Tj /T15 1 Tf 254.0001 0 TD [(are)-14000(displa)]TJ 175 0 TD [(y)-13000(under)]TJ /T12 1 Tf 152.9999 0 TD (foo.bar)Tj /T15 1 Tf 154.0001 0 TD [(,)-13000(whic)]TJ 106.9999 0 TD [(h)-14000(i)0(s)-14000(i)0(n)-13000(turn)]TJ -1443.9999 50 TD (displa)Tj 106 0 TD (y)Tj 20.9999 0 TD [(ed)-13000(under)]TJ /T12 1 Tf 172.0001 0 TD (foo)Tj /T15 1 Tf 66 0 TD (.)Tj -303 72.9998 TD (En)Tj 50 0 TD [(tries)-17000(with)-15000(no)-16000(paren)]TJ 350.9999 0 TD [(ts,)-17000(for)-15000(example,)]TJ /T12 1 Tf 302.9999 0 TD (foo)Tj /T15 1 Tf 81.0001 0 TD (and)Tj /T12 1 Tf 81.9999 0 TD (dor)Tj /T15 1 Tf 81 0 TD [(in)-16000(program)-14000(4.1,)-15000(are)-16000(called)]TJ /T13 1 Tf 490 0 TD (top-level)Tj -1499.9999 50 TD (entries)Tj /T15 1 Tf 123 0 TD 19 Tc (.T)Tj 58 0 TD 0 Tc (op-lev)Tj 109 0 TD [(el)-13000(en)]TJ 83 0 TD [(tries)-15000(are)-15000(usually)-13000(en)]TJ 345 0 TD [(tries)-16000(with)-14000(no)-14000(immedia)]TJ 403.9999 0 TD [(te)-12000(sup)-1000(eriors)-16000(in)-14000(a)-14000(hierarc)]TJ 431.0001 0 TD (hical.)Tj -1553 50 TD (F)Tj 24 0 TD [(or)-16000(example,)-15000(the)-16000(o)]TJ 322.9999 0 TD [(wner)-17000(of)-15000(a)-16000(compan)]TJ 331.0001 0 TD (y)Tj 19 0 TD [(,)-14000(the)-17000(principle)-16000(of)-15000(a)-16000(s)0(c)]TJ 391.9999 0 TD [(ho)-1000(ol)-16000(or)-16000(the)-17000(ro)-1000(ot)-16000(directory)-17000(of)-15000(a)]TJ -1088.9999 49 TD [(Unix)-13000(\014le)-14000(system.)-18000(T)]TJ 349 0 TD (oplev)Tj 94.9999 0 TD [(el)-13000(en)]TJ 83.0001 0 TD [(tries)-15000(are)-14000(displa)]TJ 267.9999 0 TD (y)Tj 21 0 TD [(ed)-14000(with)-13000(no)-14000(inden)]TJ 305.0001 0 TD (tation.)Tj -1059 74 TD [(As)-17000(eviden)]TJ 178.9999 0 TD [(t)-18000(from)-14000(program)-16000(4.1,)-16000(all)-15000(en)]TJ 486.0001 0 TD [(tries)-18000(who)-16000(en)]TJ 226 0 TD [(try-path)-17000(do)-1000(es)-18000(not)-17000(con)]TJ 402.9999 0 TD [(tain)-16000(a)-16000(separator)]TJ -1355.9999 50 TD (c)Tj 17 0 TD [(haracter)-15000(are)-14000(top-lev)]TJ 357.9999 0 TD [(el)-13000(en)]TJ 83 0 TD [(tries.)-19000(The)-14000(only)-13000(exception)-14000(is)-14000(the)-14000(separator)-14000(c)]TJ 782.0001 0 TD [(haracter)-15000(itself)-14000(is)-13000(also)-13000(a)]TJ -1240 50 TD (toplev)Tj 111 0 TD [(el)-13000(en)]TJ 82.9999 0 TD (try)Tj 51.0001 0 TD [(.)-17000(This)-13000(mak)]TJ 201 0 TD [(es)-12000(it)-13000(easy)-13000(to)-13000(displa)]TJ 332.9999 0 TD [(y)-12000(Unix)-13000(\014le)-13000(and)-12000(directory)-14000(names)-12000(inside)-13000(the)-14000(HList)]TJ -778.9999 49.0001 TD [(widget,)-13000(as)-14000(sho)]TJ 255 0 TD [(wn)-14000(in)-14000(program)-12000(4.2.)]TJ ET q 396 0 0 -0.96 125.976 473.916 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 463.86 Tm [(Program)-15000(4.2)]TJ /T15 1 Tf 273 0 TD (Displa)Tj 114.9999 0 TD [(ying)-12000(Directories)-15000(in)-14000(a)-13000(HList)-14000(Widget)]TJ ET q 396 0 0 -0.48 125.976 459.996 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 450.66 Tm [(set)-21000(folder)-21000([tix)-20000(getimage)-21000(folder])]TJ 0 50 TD [(tixScrolledHList)-18000(.sh)-21000(-options)-21000({)]TJ 86.9999 49.0001 TD (hlist.separator)Tj 436.0001 0 TD (/)Tj -436.0001 50 TD (hlist.itemType)Tj 436.0001 0 TD (imagetext)Tj -436.0001 50 TD (hlist.drawBranch)Tj 436.0001 0 TD (true)Tj -436.0001 50 TD (hlist.indent)Tj 436.0001 0 TD (14)Tj -436.0001 50 TD (hlist.wideSelecti)Tj 372.9999 0 TD [(on)-19000(false)]TJ -459.9999 49 TD (})Tj 0 49.9999 TD [(pack)-21000(.sh)-21000(-expand)-20000(yes)-21000(-fill)-21000(both)]TJ T* [(set)-21000(hlist)-21000([.sh)-21000(subwidget)-20000(hlist])]TJ 0 100 TD [(foreach)-20000(directory)-20000({/)-21000(/usr)-21000(/usr/bin)-21000(/usr/local)-19000(/etc)-21000(/etc/rc.d})-20000({)]TJ 86.9999 49 TD [($hlist)-21000(add)-21000($directory)-19000(-image)-21000($folder)-20000(-text)-21000($directory)]TJ -86.9999 50 TD (})Tj ET q 396 0 0 -0.48 125.976 282.636 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 126 259.86 Tm (Eac)Tj 65.9999 0 TD 15 Tc [(he)15000(n)]TJ 78 0 TD 0 Tc [(try)-15000(is)-14000(asso)-1000(ciated)-15000(with)-14000(a)-14000(displa)]TJ 544.9999 0 TD [(y)-14000(item)-13000(\(see)-16000(section)-15000(3.2)-13000(ab)-1000(out)-14000(displa)]TJ 646 0 TD [(y)-14000(items\).)-19000(W)]TJ 221.0001 0 TD [(e)-14000(can)]TJ -1556 49.9999 TD [(use)-14000(the)]TJ /T12 1 Tf 142 0 TD (-itemtype)Tj /T15 1 Tf 209 0 TD [(option)-12000(of)-13000(the)-14000(HList)-13000(widget)-13000(to)-13000(sp)-1000(ecify)-13000(the)-14000(default)-13000(t)]TJ 904 0 TD [(yp)-1000(e)-14000(o)0(f)-12000(displa)]TJ 229.9999 0 TD [(y)-12000(item)-12000(to)]TJ -1484.9999 49 TD [(b)-1000(e)-15000(created)-15000(b)]TJ 224 0 TD [(y)-14000(the)-14000(the)]TJ /T12 1 Tf 179 0 TD (add)Tj /T15 1 Tf 78.9999 0 TD [(metho)-1000(d,)-13000(as)-14000(sho)]TJ 273.0001 0 TD [(wn)-13000(in)-14000(program)-12000(4.1)-13000(and)-14000(4.2.)-17000(Alternativ)]TJ 697.9999 0 TD (ely)Tj 49 0 TD 13 Tc (,w)Tj 54.0001 0 TD 0 Tc [(e)-14000(can)]TJ -1556 50 TD [(also)-13000(sp)-1000(ecify)-15000(the)-14000(t)]TJ 306.9999 0 TD [(yp)-1000(e)-15000(o)0(f)-13000(displa)]TJ 232.0001 0 TD [(y)-13000(item)-12000(using)-14000(the)]TJ /T12 1 Tf 308.9999 0 TD (-itemtype)Tj /T15 1 Tf 210 0 TD [(option)-14000(for)-13000(the)]TJ /T12 1 Tf 265.0001 0 TD (add)Tj /T15 1 Tf 78.9999 0 TD [(metho)-1000(d.)]TJ /T8 1 Tf -1401.9999 142 TD (4.1.3)Tj 171 0 TD (Con)Tj 97 0 TD [(trolling)-19000(the)-18000(La)]TJ 354.9999 0 TD (y)Tj 28 0 TD [(out)-19000(of)-19000(the)-18000(En)]TJ 327.0001 0 TD (tries)Tj /T15 1 Tf -978 101.0001 TD [(There)-14000(are)-12000(t)]TJ 201 0 TD (w)Tj 29 0 TD [(o)-12000(options)-12000(to)-13000(con)]TJ 288 0 TD [(trol)-12000(the)-13000(la)]TJ 179 0 TD (y)Tj 21 0 TD [(out)-11000(of)-12000(the)-13000(en)]TJ 226.9999 0 TD [(tries:)-18000(the)]TJ /T12 1 Tf 178 0 TD (-showbranch)Tj /T15 1 Tf 252 0 TD [(option)-12000(sp)-1000(eci\014es)]TJ -1374.9999 48.9999 TD [(whether)-22000(branc)]TJ 265.9999 0 TD [(h)-21000(lines)-21000(should)-20000(b)-1000(e)-22000(dra)]TJ 406.9999 0 TD [(wn)-20000(b)-1000(e)0(t)]TJ 130.0001 0 TD (w)Tj 28.9999 0 TD [(een)-22000(paren)]TJ 181 0 TD 21 Tc [(te)21000(n)]TJ 77.0001 0 TD 0 Tc [(tries)-22000(and)-21000(their)-21000(c)]TJ 310.9999 0 TD (hildren.)Tj 178.0001 0 TD (The)Tj /T12 1 Tf -1579 50 TD (-indent)Tj /T15 1 Tf 163 0 TD [(option)-10000(con)]TJ 186.9999 0 TD [(trols)-10000(the)-11000(amoun)]TJ 281.9999 0 TD [(t)-9000(o)0(f)-10000(relativ)]TJ 185 0 TD [(e)-10000(inden)]TJ 126.0001 0 TD [(tation)-10000(b)-1000(e)0(t)]TJ 175.9999 0 TD (w)Tj 29 0 TD [(een)-11000(paren)]TJ 170.0001 0 TD [(t)-11000(and)-11000(c)]TJ 121.9999 0 TD [(hild)-9000(en)]TJ 118.9999 0 TD (tries.)Tj ET endstream endobj 217 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 218 0 obj << /Type /XObject /Subtype /Image /Name /Im29 /Width 203 /Height 163 /BitsPerComponent 8 /ColorSpace 219 0 R /Length 1077 /Filter /FlateDecode >> stream H‰ì—‹¶¬ †-ÎÙ{Þÿ‰÷”¦BPvËMÙ¨«Å— àÜ ÔiÀiÁ¨ïP/¨G%Õ55½ ¥ãäØ^e±F!”ûö +„Q¶¬åM*5ªk(7J`­—Ÿ!H4Š„ÉÉ(£·¡dÿûkPNšµdÀå(0¨÷?ÿÏ›=]¡ËÏ(Æ9€Âº`)ËdhÞ0×–hÀttl@áflCée 4m#Š7è”d"r¤DùŒÒ·AÁYÍA”f ²%¤Yå(Ò›ÊHbœô}i/ØBû®F!;Ó»‘Dk3ÆŸŸX»BE눼B2 Ôu¢°}D)­=ïT©QÊÕöÜ Àr®î_½š‚ƒÕ‚bå‹ò¿N±(®Fý4ƒzÊúÑé³C’Qà÷+jz•(# e±L"¢@®8»N”ߤ'¢˜&i(&µÅ6IC1©mçŠi½#¬Mk(•8× —¡ q¿é2ŒòÙ¦¡è”ÅÊÃP†£ræIU:ؘÈPÓ«D )”Øv0”‘å(0!…ø>GÉód%¶`ÝÁXø”øß(Š×Jr0󱲊òñÎU' |JŠ»(|¬@\‰YøW‰2ÄHe±Âž+’L£l“i{ J”I _öŠ—áU‘þSC±¨†Lp‹œ‡.ýûPÆD†ÚU%JHÉ nrÌ=((#›Y .ú_8ü8ôh%Ï“9”ØæUì7‹Ž ¸|•Ò¤÷è¢x­¡$3Œâï«(.úS…(€oÑr> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (44)Tj /T9 1 Tf 834 0 TD [(CHAPTER)-14000(4.)-32000(HIERAR)]TJ 453.9999 0 TD [(CHICAL)-13000(LISTBO)]TJ 330.0001 0 TD 0 Tw (X)Tj ET q 143.9773 0 0 108.0053 252 610.02 cm /Im29 Do Q BT /T15 1 Tf 0.24 0 0 -0.24 247.92 588.18 Tm [(Figure)-14000(4.3:)-17000(Output)-15000(of)-13000(Program)-13000(4.2)]TJ -508 136 TD [(Notice)-10000(the)]TJ /T12 1 Tf 193.9999 0 TD (-drawbranch)Tj /T15 1 Tf 250 0 TD [(option)-9000(is)-10000(turned)-11000(on)-10000(in)-10000(\014gure)-10000(4.3)-9000(but)-11000(turned)-11000(o\013)-10000(in)-9000(\014gure)-11000(4.2.)-16000(Usually)]TJ 1195.9998 0 TD (,)Tj -1639.9998 50 TD (y)Tj 21 0 TD [(ou)-11000(need)-12000(to)-11000(set)-12000(a)-11000(bigger)-11000(inden)]TJ 510.9999 0 TD [(tation)-11000(when)-11000(the)-12000(branc)]TJ 394 0 TD [(hes)-13000(are)-11000(sho)]TJ 195.0001 0 TD 11 Tc [(w)11000(n|w)]TJ 145.9999 0 TD 0 Tc [(e)-12000(used)-12000(an)-11000(inden)]TJ 275.0001 0 TD (tation)Tj -1542 50 TD [(of)-13000(14)-14000(pixels)-13000(in)-14000(4.3)-13000(compared)-13000(to)-14000(8)-13000(pixels)-14000(in)-13000(4.2.)]TJ /T8 1 Tf 0 145.9998 TD (4.1.4)Tj 171 0 TD [(Handling)-19000(the)-18000(Selection)-17000(and)-19000(User)-18000(Ev)]TJ 882.9999 0 TD (en)Tj 55.0001 0 TD (t)Tj /T15 1 Tf -1109 101 TD [(The)-17000(handling)-16000(of)-17000(the)-17000(selection)-18000(and)-17000(user)-18000(ev)]TJ 772.9999 0 TD (en)Tj 40 0 TD [(ts)-18000(for)-17000(the)-18000(HList)-17000(widget)-17000(is)-17000(v)]TJ 513 0 TD [(ery)-17000(similar)-14000(to)-17000(the)]TJ -1325.9999 50 TD [(TList)-18000(widget)-18000(\(see)-20000(section)-19000(3.3.5\),)-17000(except)-20000(that)-19000(for)-18000(the)-18000(HList)-19000(widget)-18000(all)-17000(the)-19000(op)-1000(erations)-19000(are)]TJ T* [(based)-15000(on)-13000(en)]TJ 213 0 TD [(try-paths,)-15000(not)-13000(list)-14000(indices.)-19000(The)-14000(metho)-1000(ds)]TJ /T12 1 Tf 742 0 TD [(info)-21000(selection)]TJ /T15 1 Tf 307 0 TD (,)Tj /T12 1 Tf 24 0 TD [(selection)-20000(set)]TJ /T15 1 Tf 296.9998 0 TD (and)Tj /T12 1 Tf -1582.9998 49.0001 TD [(selection)-20000(clear)]TJ /T15 1 Tf 340.9999 0 TD [(can)-14000(b)-1000(e)-15000(used)-14000(to)-14000(query)]TJ 375.9999 0 TD [(,)-14000(set)-15000(or)-13000(clear)-15000(the)-14000(selection;)-15000(the)-14000(option)]TJ /T12 1 Tf 693 0 TD (-selectmode)Tj /T15 1 Tf -1409.9999 50 TD (con)Tj 61 0 TD [(trols)-12000(ho)]TJ 135.9999 0 TD [(w)-12000(man)]TJ 121.0001 0 TD 11 Tc [(ye)11000(n)]TJ 72.9999 0 TD 0 Tc [(tries)-13000(can)-13000(b)-1000(e)-13000(selected)-14000(at)-12000(a)-12000(time;)-11000(the)-13000(options)]TJ /T12 1 Tf 774.9999 0 TD (-browsecmd)Tj /T15 1 Tf 230 0 TD (and)Tj /T12 1 Tf 80 0 TD (-command)Tj /T15 1 Tf -1475.9999 50 TD [(can)-14000(b)-1000(e)-15000(used)-14000(to)-14000(sp)-1000(ecify)-15000(a)-13000(command)-11000(to)-14000(b)-1000(e)-15000(called)-13000(to)-14000(handle)-14000(user)-15000(ev)]TJ 1175.9999 0 TD (en)Tj 40 0 TD (ts.)Tj -1153.9999 72.9999 TD [(There)-16000(is)-14000(one)-15000(more)-13000(option)-14000(w)]TJ 503 0 TD [(orth)-14000(men)]TJ 166 0 TD [(tioning:)-17000(the)]TJ /T12 1 Tf 228.9999 0 TD (-wideselection)Tj /T15 1 Tf 319 0 TD [(option.)-19000(When)-15000(set)-15000(to)]TJ /T12 1 Tf -1278.9999 50 TD (true)Tj /T15 1 Tf 88 0 TD [(,)-15000(the)-16000(selection)-16000(highligh)]TJ 416 0 TD [(t)-13000(will)-14000(b)-1000(e)-17000(dra)]TJ 227 0 TD [(wn)-15000(across)-16000(the)-16000(whole)-16000(HList)-15000(widget)-15000(\(see)-17000(\014gure)-16000(4.2\).)]TJ -731 50 TD [(When)-13000(set)-14000(to)-13000(false,)-13000(selection)-13000(highligh)]TJ 652 0 TD [(t)-11000(will)-12000(b)-1000(e)-14000(dra)]TJ 220 0 TD [(wn)-13000(as)-13000(wide)-13000(as)-13000(the)-13000(selected)-15000(en)]TJ 525.9999 0 TD [(try)-14000(\(see)-14000(\014gure)]TJ -1397.9999 50 TD [(4.3\).)-25000(Normally)]TJ 275 0 TD 14 Tc (,y)Tj 46.9999 0 TD 0 Tc [(ou)-16000(w)]TJ 89 0 TD [(ould)-16000(set)]TJ /T12 1 Tf 161.9999 0 TD (-wideselection)Tj /T15 1 Tf 322 0 TD (to)Tj /T12 1 Tf 53 0 TD (false)Tj /T15 1 Tf 126.0001 0 TD [(when)-17000(y)]TJ 132 0 TD [(ou)-16000(use)]TJ /T12 1 Tf 133.9999 0 TD (imagetext)Tj /T15 1 Tf 213.0001 0 TD (items)Tj -1553 50 TD [(inside)-14000(\(as)-14000(w)]TJ 214 0 TD [(e)-14000(did)-14000(in)-13000(program)-12000(4.2\).)]TJ /T14 1 Tf -214 167.0001 TD (4.2)Tj 153 0 TD [(Creating)-23000(Collapsible)-24000(T)]TJ 662.9999 0 TD [(ree)-22000(Structures)-24000(with)-23000(TixT)]TJ 734.0001 0 TD (ree)Tj /T15 1 Tf -1550 115.9999 TD [(The)-18000(TixT)]TJ 179.9999 0 TD [(ree)-18000(widget)-17000(is)-18000(based)-18000(on)-18000(the)-18000(TixScrolledHList)-17000(widget;)-20000(y)]TJ 1007.0001 0 TD [(ou)-17000(can)-18000(use)-18000(it)-18000(to)-17000(create)-19000(a)]TJ -1187 49.0001 TD [(collapsible)-12000(hierarc)]TJ 323 0 TD [(hical)-13000(structure)-15000(so)-13000(that)-13000(the)-13000(user)-14000(can)-13000(con)]TJ 708 0 TD (v)Tj 20.9999 0 TD (enien)Tj 93 0 TD [(tly)-13000(na)]TJ 106 0 TD [(vigate)-12000(through)-13000(a)-12000(large)]TJ -1250.9999 49.9999 TD (n)Tj 22 0 TD (um)Tj 57.9999 0 TD [(b)-1000(e)0(r)-12000(o)0(f)-13000(list)-12000(en)]TJ 225.0001 0 TD [(tries.)-19000(As)-14000(sho)]TJ 229 0 TD [(wn)-13000(in)-12000(\014gure)-14000(4.4,)-12000(the)-13000(TixT)]TJ 466.9999 0 TD [(ree)-14000(puts)-13000(the)-14000(little)-12000(\\)]TJ /T12 1 Tf 347.0001 0 TD (+)Tj /T15 1 Tf 21.9999 0 TD [(")-13000(and)-13000(\\)]TJ /T12 1 Tf 135.0001 0 TD (-)Tj /T15 1 Tf 21.9998 0 TD [(")-12000(icons)]TJ -1526.9998 50 TD [(next)-14000(to)-13000(the)-14000(branc)]TJ 314 0 TD [(hes)-14000(of)-13000(an)-13000(HList)-13000(en)]TJ 329 0 TD [(try)-14000(that)-13000(has)-14000(descendan)]TJ 413 0 TD [(ts.)-19000(These)-15000(t)]TJ 197.9999 0 TD (w)Tj 29 0 TD [(o)-13000(icons)-13000(are)-14000(kno)]TJ 271.0001 0 TD [(ws)-13000(as)]TJ -1554 50 TD [(the)-12000(op)-1000(en)-11000(and)-12000(close)-11000(icons,)-12000(resp)-1000(ectiv)]TJ 613.9999 0 TD (ely)Tj 49 0 TD [(.)-18000(When)-11000(the)-12000(user)-12000(presses)-14000(the)-12000(op)-1000(en)-11000(icon)-11000(next)-12000(to)-11000(an)-11000(en)]TJ 924.0001 0 TD (try)Tj 51 0 TD (,)Tj -1638 50 TD [(its)-14000(immediate)-11000(c)]TJ 278 0 TD [(hildren)-14000(of)-14000(an)-14000(en)]TJ 287 0 TD [(try)-14000(will)-13000(b)-1000(e)-14000(displa)]TJ 309 0 TD (y)Tj 20.9999 0 TD [(ed.)-18000(Con)]TJ 144 0 TD (v)Tj 21 0 TD (ersely)Tj 99.0001 0 TD [(,)-14000(when)-14000(the)-15000(user)-15000(presses)-16000(the)]TJ -1159 49 TD [(close)-14000(icon,)-14000(the)-14000(en)]TJ 309.9999 0 TD [(try's)-14000(c)]TJ 113.0001 0 TD [(hildren)-15000(will)-12000(b)-1000(ecome)-14000(hidden.)]TJ -361 74.0001 TD [(Program)-15000(4.3)-15000(sho)]TJ 301.9999 0 TD [(ws)-16000(ho)]TJ 105 0 TD [(w)-16000(t)0(o)-15000(create)-18000(a)-16000(collapsible)-15000(tree.)-25000(W)]TJ 607.9999 0 TD [(e)-16000(\014rst)-16000(create)-18000(a)-16000(TixT)]TJ 374 0 TD [(ree)-16000(widget.)]TJ -1450.9999 50 TD [(Then)-16000(w)]TJ 139 0 TD [(e)-16000(add)-16000(the)-16000(en)]TJ 229.9999 0 TD [(tries)-17000(in)-15000(y)]TJ 165.9999 0 TD [(our)-15000(hierarc)]TJ 198.0001 0 TD [(hical)-16000(structure)-18000(in)]TJ 316 0 TD [(to)-15000(its)]TJ /T12 1 Tf 110.9999 0 TD (hlist)Tj /T15 1 Tf 125 0 TD (sub)Tj 61 0 TD [(widget)-16000(using)-15000(the)]TJ -1345.9999 50 TD [(add)-15000(metho)-1000(d)-14000(o)0(f)-15000(this)-15000(sub)]TJ 426 0 TD [(widget.)-22000(When)-16000(w)]TJ 305.9999 0 TD [(e)-15000(are)-16000(\014nished)-16000(with)-15000(adding)-14000(the)-16000(en)]TJ 604.0001 0 TD [(tries,)-16000(w)]TJ 134.9999 0 TD [(e)-15000(just)-16000(call)]TJ -1470.9999 48.9999 TD (the)Tj /T12 1 Tf 75 0 TD (autosetmode)Tj /T15 1 Tf 256 0 TD [(metho)-1000(d)-17000(o)0(f)-16000(the)-18000(TixT)]TJ 371 0 TD [(ree)-17000(widget,)-17000(whic)]TJ 300 0 TD [(h)-17000(will)-16000(automatically)-14000(adds)-17000(the)-18000(op)-1000(en)]TJ -1002 50 TD [(and)-14000(close)-14000(icons)-14000(next)-15000(to)-13000(the)-15000(en)]TJ 540 0 TD [(tries)-15000(who)-13000(ha)]TJ 222.9999 0 TD (v)Tj 21.0001 0 TD 14 Tc (ec)Tj 49 0 TD 0 Tc (hildren.)Tj ET endstream endobj 222 0 obj << /ProcSet [/PDF /Text /ImageC /ImageI] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T14 16 0 R /T15 6 0 R >> /XObject << /Im29 218 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS20 219 0 R >> >> endobj 219 0 obj [/Indexed /DeviceRGB 15 223 0 R] endobj 223 0 obj << /Filter /ASCII85Decode /Length 44 >> stream lg*kVEH/n6_Z0Z:e'lcoI=;.qs7?8BY1r+>zzzzz~> endstream endobj 224 0 obj << /Type /XObject /Subtype /Image /Name /Im28 /Width 211 /Height 152 /BitsPerComponent 8 /ColorSpace 225 0 R /Length 875 /Filter /FlateDecode >> stream H‰ì—‹’« @ÑÜ»Ûÿÿâ-òh°" æÌvié䔀D©±ŒàˆƒàÞCk†%;B€|p‹(‘á‘J †B{‰€)õ;«î$V*YÛΜ n¥ŒVøÖ‹Ï8 \²nPÚbíª|^ïSj4ë[ ]”@³š?óÉ„ï^¶ËÌ(ÒªPBS³ÄÉ6È«ÔiÄ=z ”°åJk^'švAÉÖMɇ%˜·pFÉ7×(Å·¥J+|,P•’½ÆWÊ}Ó)ÜJX—5Ü4þ̨SJûz(%'Ò{Áhä!/Gb—·ÒÈGí]ä•°ÍÏ[ í›Z ){±¾!œ Î)ÝOG¬‹½Ó-ÿøãTlâÍ¡í¥·ÒÞ JŠ3?OWÒw™¾{,§H ~ߤ œ”ÀáænF©9£C%;eoCö/à­ôë™Y‰žÑ±’I±©”TÜ>C‰ ÑÓ”’{¥ü¹D ×VÊ:QÒX%|e¯N¿E…Ò«”:šZ%}T¤¡çdɯ’Ú¢ÜNtÖJá!îŒR§lFö1*Vò-˜¬Û •À©Ùxé¦Ñ%ðJá}SÚ[ œxÁ+£¯DiÏEªJ¶†2|Sò‰G{/}I¼Hée’Ž·¼%Ÿ€TÏ·GJ¬u¥è¹”UÒ{ˆË^Òø þ\ÊÒAGÓóÚJ3ñ6×—|””€†Ù•)V;W*™z);aˆ\ÅsIY£Ô зý¨¸=‚QúrùþïGRx{ç„Ƕ{ßöJîf« xß“võ’Ÿâ2’‹Rد’šE ÒiQGnRât> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(4.2.)-31000(CREA)]TJ 214 0 TD [(TING)-13000(COLLAPSIBLE)-15000(TREE)-14000(STR)]TJ 645 0 TD [(UCTURES)-13000(WITH)-14000(TIXTREE)]TJ /T15 1 Tf 748.9998 0 TD (45)Tj ET q 396 0 0 -0.96 125.976 669.036 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 658.98 Tm [(Program)-15000(4.3)]TJ /T15 1 Tf 273 0 TD [(Creating)-14000(a)-14000(Collapsible)-12000(Hierarc)]TJ 549 0 TD 0 Tw (h)Tj 21.9999 0 TD (y)Tj ET q 396 0 0 -0.48 125.976 655.116 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 645.78 Tm [(set)-21000(folder)-21000([tix)-20000(getimage)-21000(folder])]TJ 0 50 TD [(tixTree)-20000(.tree)-21000(-command)-20000(Command)-20000(-options)-21000({)]TJ 86.9999 49 TD (hlist.separator)Tj 370.0001 0 TD (/)Tj -370.0001 50 TD (hlist.itemType)Tj 370.0001 0 TD (imagetext)Tj -370.0001 50 TD [(hlist.drawBranch)-18000(true)]TJ T* (hlist.indent)Tj 370.0001 0 TD (18)Tj -457 50 TD (})Tj 0 49 TD [(pack)-21000(.tree)-21000(-expand)-20000(yes)-21000(-fill)-21000(both)]TJ 0 50 TD [(set)-21000(hlist)-21000([.tree)-20000(subwidget)-20000(hlist])]TJ 0 100 TD [(foreach)-20000(directory)-20000({/)-21000(/usr)-21000(/usr/bin)-21000(/usr/local)-19000(/etc)-21000(/etc/rc.d})-20000({)]TJ 86.9999 50 TD [($hlist)-21000(add)-21000($directory)-19000(-image)-21000($folder)-20000(-text)-21000($directory)]TJ -86.9999 50 TD (})Tj 0 49.0001 TD [(.tree)-21000(autosetmode)]TJ 0 100 TD [(proc)-21000(Command)-20000({entry})-20000({)]TJ 86.9999 50 TD [(puts)-21000("you)-21000(have)-21000(selected)-20000($entry")]TJ -86.9999 50 TD (})Tj ET q 396 0 0 -0.48 125.976 429.756 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 144.0218 0 0 107.9943 252 214.98 cm /Im28 Do Q BT /T15 1 Tf 0.24 0 0 -0.24 247.92 193.14 Tm [(Figure)-14000(4.4:)-17000(Output)-15000(of)-13000(Program)-13000(4.3)]TJ ET endstream endobj 228 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /T9 25 0 R /T10 20 0 R /T12 14 0 R /T15 6 0 R >> /XObject << /Im28 224 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS21 225 0 R >> >> endobj 225 0 obj [/Indexed /DeviceRGB 15 229 0 R] endobj 229 0 obj << /Filter /ASCII85Decode /Length 44 >> stream lg*kVEH/n6_Z0Z:e'lcoI=;.qs7?8Ba4K>Ozzzzz~> endstream endobj 231 0 obj << /Length 1705 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (46)Tj /T9 1 Tf 834 0 TD [(CHAPTER)-14000(4.)-32000(HIERAR)]TJ 453.9999 0 TD [(CHICAL)-13000(LISTBO)]TJ 330.0001 0 TD 0 Tw (X)Tj /T15 1 Tf -1556 117 TD [(Note)-17000(that)-17000(in)-16000(program)-15000(4.3)-16000(w)]TJ 515 0 TD [(e)-17000(use)-17000(the)]TJ /T12 1 Tf 182.9999 0 TD (-command)Tj /T15 1 Tf 191 0 TD [(option)-16000(of)-16000(the)-17000(TixT)]TJ 347.0001 0 TD [(ree)-17000(widget,)-17000(not)-16000(the)]TJ /T12 1 Tf -1298 49.0002 TD (-command)Tj /T15 1 Tf 192 0 TD [(option)-18000(of)-18000(its)]TJ /T12 1 Tf 248 0 TD (hlist)Tj /T15 1 Tf 127 0 TD (sub)Tj 61 0 TD [(widget.)-31000(This)-18000(is)-18000(b)-1000(ecause)-20000(the)-19000(TixT)]TJ 633 0 TD [(ree)-18000(actually)-17000(used)-19000(the)]TJ /T12 1 Tf -1261 50 TD (-command)Tj /T15 1 Tf 186 0 TD [(option)-11000(of)-11000(its)]TJ /T12 1 Tf 226.9999 0 TD (hlist)Tj /T15 1 Tf 121.0001 0 TD (sub)Tj 60.9999 0 TD [(widget)-12000(to)-11000(pro)-1000(cess)-13000(some)-11000(lo)]TJ 456 0 TD (w-lev)Tj 95.0001 0 TD [(el)-10000(ev)]TJ 78.9999 0 TD (en)Tj 40.0001 0 TD [(ts.)-19000(In)-11000(general,)-12000(if)-11000(b)-1000(oth)]TJ -1265 50 TD [(a)-13000(mega-widget)-12000(and)-13000(its)-13000(sub)]TJ 474 0 TD [(widget)-14000(ha)]TJ 176.9999 0 TD (v)Tj 21.0001 0 TD [(e)-13000(the)-14000(options)-13000(of)-12000(the)-14000(same)-13000(name,)-11000(y)]TJ 609.9999 0 TD [(ou)-13000(w)]TJ 86.0001 0 TD [(ould)-13000(alw)]TJ 153.9999 0 TD (a)Tj 20.0001 0 TD [(ys)-12000(use)]TJ -1542 50 TD [(the)-14000(option)-14000(that)-14000(b)-1000(elongs)-14000(to)-13000(the)-15000(mega-widget.)]TJ ET endstream endobj 232 0 obj << /ProcSet [/PDF /Text ] /Font << /T9 25 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 234 0 obj << /Length 5482 >> stream BT /T16 1 Tf 0.24 0 0 -0.24 126 627.54 Tm 0 g /GS1 gs 0 Tc [(Chapter)-31000(5)]TJ /T11 1 Tf 0 231 TD (Selecting)Tj 493 0 TD (Files)Tj 275 0 TD (and)Tj 225 0 TD (Directories)Tj /T15 1 Tf -993 239 TD [(One)-16000(task)-16000(that)-15000(an)-15000(application)-14000(has)-15000(to)-15000(p)-1000(erform)-15000(frequen)]TJ 963.9999 0 TD [(tly)-16000(is)-15000(to)-15000(ask)-15000(the)-16000(user)-16000(to)-16000(select)-16000(\014les)-16000(or)]TJ -963.9999 49.9998 TD [(directories.)-19000(T)]TJ 243.9999 0 TD [(o)-13000(select)-16000(\014les,)-13000(y)]TJ 262.9999 0 TD [(ou)-14000(can)-14000(use)-14000(the)-15000(Tix)]TJ /T13 1 Tf 354.0001 0 TD [(File)-15000(Sele)]TJ 154.9999 0 TD [(ction)-15000(Widgets)]TJ /T15 1 Tf 249.0001 0 TD [(:)-18000(TixFileSelectDialog)]TJ -1265 50.0001 TD [(and)-16000(TixExFileSelectDialog.)-23000(T)]TJ 552 0 TD [(o)-15000(select)-17000(directories,)-18000(y)]TJ 388 0 TD [(ou)-15000(can)-17000(use)-17000(the)-16000(Tix)]TJ /T13 1 Tf 365 0 TD (Dir)Tj 59.9999 0 TD 0 Tw (e)Tj 17 0 TD [(ctory)-16000(Sele)]TJ 178.0001 0 TD (ction)Tj -1560 50 TD (Widgets)Tj /T15 1 Tf 143.9999 0 TD [(:)-18000(TixDirList)-13000(and)-14000(TixDirT)]TJ 468.9999 0 TD (ree.)Tj /T14 1 Tf -612.9999 229.9999 TD (5.1)Tj 153 0 TD [(File)-24000(Selection)-23000(Dialog)-23000(Widgets)]TJ /T15 1 Tf -153 129.0001 TD [(There)-16000(are)-15000(t)]TJ 206 0 TD (w)Tj 28.9999 0 TD [(o)-14000(\014le)-15000(dialog)-13000(widgets)-15000(inside)-15000(Tix:)-19000(the)-16000(TixFileSelectDialog)-12000(\(\014gure)-16000(5.1\))-14000(is)-14000(similar)]TJ -234.9999 48.9999 TD [(to)-14000(the)-14000(FileSelectionDialog)-12000(widget)-14000(in)-13000(Motif;)-13000(TixExFileSelectDialog)-12000(\(\014gure)-15000(5.2\))-13000(lo)-1000(oks)-13000(lik)]TJ 1575 0 TD [(e)-13000(its)]TJ -1575 50 TD (con)Tj 61 0 TD (un)Tj 45 0 TD [(terpart)-17000(in)-15000(MS)-15000(Windo)]TJ 390 0 TD [(ws.)-23000(Both)-16000(widgets)-16000(let)-15000(the)-16000(user)-17000(na)]TJ 604.9999 0 TD [(vigate)-15000(through)-15000(the)-17000(\014le)-15000(system)]TJ -1100.9999 50 TD [(directories)-15000(and)-14000(select)-15000(a)-14000(\014le.)]TJ 62 73.0001 TD [(One)-17000(adv)]TJ 153.9999 0 TD [(anced)-17000(feature)-17000(of)-16000(b)-1000(oth)-16000(t)]TJ 427.0001 0 TD [(yp)-1000(es)-18000(of)-15000(\014le)-17000(selection)-17000(b)-1000(o)]TJ 432 0 TD [(xes)-17000(is)-16000(they)-17000(use)-17000(Com)]TJ 372.9999 0 TD [(b)-1000(oBo)]TJ 94.0001 0 TD [(xes)-15000(to)]TJ -1542 50 TD [(store)-16000(the)-15000(\014les,)-15000(directories)-16000(and)-15000(patterns)-16000(the)-15000(user)-16000(has)-15000(selected)-17000(in)-14000(the)-15000(past.)-21000(If)-15000(the)-15000(user)-16000(w)]TJ 1575 0 TD (an)Tj 43 0 TD (ts)Tj -1618 50 TD [(to)-17000(select)-18000(the)-17000(same)-16000(\014les)-17000(again,)-16000(he)-17000(can)-17000(simply)-15000(op)-1000(en)-17000(the)-17000(Com)]TJ 1099 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(xes)-16000(and)-16000(clic)]TJ 213.9999 0 TD [(k)-17000(o)0(n)-16000(his)-17000(past)]TJ -1406.9999 50 TD [(inputs.)-18000(This)-13000(sa)]TJ 273 0 TD (v)Tj 20.9999 0 TD [(es)-14000(a)-12000(lot)-13000(of)-12000(k)]TJ 210.0001 0 TD (eystrok)Tj 130 0 TD [(es)-15000(and)-12000(is)-13000(esp)-1000(ecially)-14000(useful)-13000(when)-13000(the)-14000(user)-14000(needs)-15000(to)-13000(switc)]TJ 992.9998 0 TD (h)Tj -1626.9998 50 TD [(among)-12000(sev)]TJ 189 0 TD [(eral)-14000(\014les)-14000(or)-14000(directories.)]TJ /T8 1 Tf -189 208.9999 TD (5.1.1)Tj 171 0 TD [(Using)-19000(the)-18000(TixFileSelectDi)]TJ 638 0 TD [(alog)-16000(Widget)]TJ /T15 1 Tf -809 114 TD [(An)-15000(example)-13000(of)-14000(using)-14000(the)-15000(TixFileSelectDialog)-13000(widget)-14000(is)-15000(in)-14000(\014gure)-15000(5.1.)-19000(A)]TJ 1287.9999 0 TD [(t)-14000(line)-15000(1,)-13000(w)]TJ 185 0 TD [(e)-15000(create)-16000(a)]TJ -1472.9999 50 TD [(TixFileSelectDialog)-9000(widget)-10000(and)-11000(set)-11000(the)-11000(title)-11000(of)-10000(the)-11000(dialog)-9000(to)-11000(\\Select)-11000(A)-11000(File")-10000(using)-10000(the)]TJ /T12 1 Tf 1518.9999 0 TD (-title)Tj /T15 1 Tf -1518.9999 50 TD [(option.)-21000(W)]TJ 189 0 TD [(e)-15000(also)-14000(use)-16000(the)]TJ /T12 1 Tf 263 0 TD (-command)Tj /T15 1 Tf 189.9999 0 TD [(option)-14000(to)-15000(sp)-1000(ecify)-16000(that)-15000(the)-16000(pro)-1000(cedure)]TJ /T12 1 Tf 679 0 TD (selectCmd)Tj /T15 1 Tf 211.0001 0 TD (should)Tj -1532 50 TD [(b)-1000(e)-12000(called)-11000(when)-12000(the)-12000(user)-12000(has)-11000(selected)-14000(a)-11000(\014le.)]TJ /T12 1 Tf 766.9999 0 TD (selectCmd)Tj /T15 1 Tf 207.0001 0 TD [(will)-10000(b)-1000(e)-12000(called)-11000(with)-11000(one)-11000(parameter,)-11000(the)]TJ -974 50 TD [(\014lename)-11000(selected)-14000(b)]TJ 337 0 TD [(y)-13000(the)-13000(user.)-18000(When)-13000(the)-13000(TixFileSelectDialog)-10000(widget)-12000(is)-13000(created,)-13000(it)-12000(is)-12000(initially)]TJ -337 48.9999 TD [(not)-15000(sho)]TJ 134 0 TD [(wn)-15000(on)-15000(the)-15000(screen.)-24000(Therefore,)-16000(at)-15000(line)-15000(3,)-14000(w)]TJ 753 0 TD [(e)-15000(call)-15000(its)]TJ /T12 1 Tf 169.9999 0 TD (popup)Tj /T15 1 Tf 124.0001 0 TD [(widget)-15000(command)-12000(to)-15000(place)]TJ -1181 50 TD [(the)-14000(widget)-14000(on)-14000(the)-14000(screen.)]TJ 803.9999 105 TD (47)Tj ET endstream endobj 235 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T11 21 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R /T16 7 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 236 0 obj << /Type /XObject /Subtype /Image /Name /Im31 /Width 315 /Height 259 /BitsPerComponent 8 /ColorSpace 237 0 R /Length 2224 /Filter /FlateDecode >> stream H‰ì—‰‚£*Ek\øÿOžVYª•ÜvíÜó^DZÊ3l%B@þuä_׈êP¨†ê`¨†ê`¨†ê`¨†ê`¨†ê`¨&S' SaùU uª@}›¬© T·ÊΨ‹Ów¾1W\ãCiš°éB¨.RÝ&úUu÷ùLG]ÚvI y𻤧º_РnÞg¹Öì©K‹]Ouæ°0TCu0TCu0TS¨ÈÌä¢+¡º]f+å„¶Õd쨅ê`Œ:I hƒ:ùùoŸ)µ‹æ¿|!¿— º“eûö œ­NÔ×çêrÕ.Ó¿LÛ?æQàê¤é_9:*ÛJ¥¤¯Êê]¦.äÒa÷Ku>Z?+§ëq4Uñå$¾žÄ‘åRÌÓÌýðÐQt‹Ôí˜þè]£ní3*‡Fj^S*÷$ÝP?I¿yˆ^®$©“@›ºøòå›fï#•ê4õÄVH\в˜Õ׺êbÔ¨Óæ~¯NÔŒ-GHT—W”Fì  ó5LÜñêzeî˜QXW'cYQu•ÿdy†ºOÖ:óBêü­²¥^œruÆlœ°¦f‹?½›MH²ó‘ºðÕ„MUZ]¬Ö uÙÈËklwÏP§ì|¢Î9LÕYK½h•êâ‚7Ÿ8Òº¼©ÃIºu1ðK¨°„êp@ué0uwÇüfuCÁ–:Ò ÕÁP ÕÁP ÕÁP ÕÁP ÕÁP ÕÁܧnnêø(nT÷öáNu0T“«“_üäAŸµîsu:ŸçSª›¿¤ßzÚ_«S…«Û‹ýW[QwØóO§®®WSgù‰õþ* Nß&Ôøªý·ßuŸ<ëvÕI´×+“}ºÈÚ4¯W;ê>zÖ-ìº~åUâW­ÍλvÕ¯ˆybó³n£Q]Úýb£ªº4•7_8ô™ŠÊ¨k|Öm4ºâweÔÅçl½o“ºÆgÝÆÆ[W·7aíƒVøLÝ›Ö:)´Ä!î»z›èck1¿«´MضgÝÆN6‹©nªÝk]ó³nãž¶T÷B¨æ&uƒç†¾ãusÏwu|TCu0¹ºáTLOÝuýTƒÚVçNÄÊê.ë ÓA º’êvÐ꺇«[Òùi•J?åå;\K|”Øvç„Ô¥Â3ÕÍ-&J†66ß’xô;)ÔEF÷S®Äÿ4u.SçÔ`»M)½RÝ|%©þ"uÝ\,ãš:qÙ‚¦knR×gÅç©K{Ù2uáZt»³Bdt>Ì"þ©›[˜Q—–¸pmÕê bÖåGª3JâéC«‹ßרëb”yüÏVgkâ»T6³£î̘>S—~Ó¹.Ö_¤®SA¾AŸ§JÉ&$kw^¨ƒ‰xxê„=³_€E]gb¤º&¼ºÁ@u-tµ ¨®…0a-T×@W†X\R]•7©Ù8l¬Ý*j;ª¼IÝt¿®mí†Si†­8*TªƒC}Ÿº˜;ˆ„/ÿ€”Ì.MR3_óåêaq¸éQÔé&¾ÅRóíêü—h1j˜)ª…K{X¨ïS=¶â…èùIuµU_êê‚ÓÓÕ½&‡-Ôåkݼ΅ëRÝákÝVüT·¾MDu©IhqÊ6±ÿÕÙÃÉb$eq=ô¦’·'[ñ?K݃ :ªƒ¡:ªƒ¡:˜7©ËŽŸ4;‘(þ²:© •êàP_£nI|Öó„˜X,µþÚ4þzu> µÙéÊÇ“¸æ¡¾EÝÔ $±êÿê¯ÿNÍÏ õeê$NBª[뺮N-tT·ÖõŠºåçu\ëÚ¶‰é)É*· ?êâyÃë¨N\æ‡æ°-ñPÕÁñPÕÁñPÏŠºò„œ9;§ü%uRÔÔRÝ Õ­u]Ï&R*æbóiCL7ÔݥžX¼J]™Ãª Uâ¨ËÓZ[ýê¦ÊÓÎì }×éêouSªÛŒ‡êàxNT÷­k]Zçƒ:³qÛ„sA!·‰xºˆ£.;”Ét8q™·¯=œœÙ/ÕÁP ÕÁP ÕÁ¼I]v¬h=§v©…úJu&w(Iµx|¨T‡úu)˜3™ýmwxúP õ-êÔâVd¬:y-ïœê[ÔM JuöÒ)uÎ¥Š“B¥:8TªƒCýËê¸Öõj›Pû‚sù¥“ð?· =êâ™ÃŒºP«Õyo<œœß/ÕÁP ÕÁP ÕÁ¼X]~èHÉCõ8røeQ×eüu²Þü˜PgB¨®9ÔÁD<Z¨î¬:]¹®®;“ u§ö P jSÝu wu|TCu0÷©{=TCu0TCu0TCu0TCu0TCu0TCu0¹:™1+¹zã[ÈÔÍÚŒ»š¡¹Žêrué[×X¾ÞÚLmÔÅb\q‡Qùó,ÙòmBkk/”ŸÞÓN£Û¯sWî°j´m}V _Díp’feT•ÊKƒžêêçº\“QÖSÝÂ껦Ž6PÙaÃZ'JUÜ B­ º>> stream H‰ì—‹®ƒ D»òÿÿÜôª°€»À@r­I|´‘Ó푇¾^ Ù(æÀКCCshh Í¡¡944‡†æÐКCÍÁ/¾GrìÐV™ K«ûš2×ìŸNBUÝãi4‡Òh¥ÑJ£9”Fs(­mNd¿D“=ŸæÞ.í¬Çº¦iNª&Î/t›û+sßyȦ¹tìçÐR=~n`.î£=—gÐòªfÌ•8#ÿn®·¯ õ99:ÎÑ•ëdÓô¿KíE)îñˆ¹ÔZŒi2×s' Z}>e[?-]¬Û«-žöצ̩ÖÍÚÌy³Kß ‘™;±C´âj©8ض9Qåeãk‘¹e£5Ž ™1WÿÙøíDŸÓ7x¡¹ùB*j.ÍG[f®ÆŽ˜ÛòÓ sÅÚºð©3—ê‘ëãÌIÜ•]ò š³BŒÑ$k«ÍɽVˆ-­ Åp0x­õÇœbðºÞ!d÷ûÆÍžJzóošC´æ¼DsFhŽænG£9”Fs(æPÍ¡4šCiÊ\˜JYÝãiÉÜ®¬îù´`=ñ1КCCshh Í¡¡944‡†æÐКCCsh‚ /¾?aм¢Î… endstream endobj 240 0 obj << /Type /XObject /Subtype /Image /Name /Im27 /Width 330 /Height 354 /BitsPerComponent 8 /ColorSpace 241 0 R /Length 3486 /Filter /FlateDecode >> stream H‰ì—‹‚‚ E§ÍÌÿÿâMå1€¼lT°{ÚJ‘Ïäá"—Äßœä_üõœŸ8þ;¯\ÏO’Ÿ¯8Ÿß'Žþé$ž«“Éß w¨[2I('Ÿx}õšTN^Ý•¾_îäÕ+ˆžy8N¦C NP'›â±R¯¿X“»f¬û]ìÄ’xn8YÕðMyFÕY“pGÈ¥¼ÌÉ͆uôÙæÊE?h‚˜:* ç:h)ßí$•&£ët•dÖI^´\Õn'U&Ѱ*ÝYé$}á¤'šºÏÕýn šŃµœç¤›Ù œ‚°f77¹Œ“þâ=l˜Ç<üsÔÓ5H'k¦ŽwU9é]'…N†³È)méִˆ¶±ê¸÷P¥“n£KÅm'ypîÈI²‡g¸“î=Tçdp{Gœ´™Ý-Iî¤sÕÎÝÁ@¹5wë’€7w£¤;œ¹ÃÑëIëe°Š'ÙÇèïÄõ¤ÛÌý8ñÇi农ïäM“¼ÀÉ»’s2˜’¿'ïIÎI/Ë?8%ãäFyàäggëõØ,½ïëùˆ‰%aœü|̉~ÚØ$V~[¢;0;9Jk­àAóX2žÇÉ9Óçv²$øx,IÎr/°‹q'U’Ë „$w2zs7’ÜËè­'‘ä^à¤pR 8)œ”NJ'¥€“RÀI)à¤i'ieÞXß JÚIÒÌ’sÒÛA’Qêœ4÷úr`)8¿ËRè¤swÛB’†œ“V¿­$¯és›ìsÒNè@³gîÖ¥H’³wœtŽ‚×'—ãd@¥“v |!I—´“ œ´“ 8)œ”NJ'¥È99‚…9‹!ÄM2éäÕWÐK*áí:V9ùï¡,ÉŒ“W_E & '³8IÑ~'éóÊó9ÅZÍ©NæCmøÇì?Iâ„”>|…I8Y”$±ú$ýx6OiÿQeÿ[)Äœ¤"Lda]ÚØâ{á ¶OiOA§J)æärYªóêž÷ßo§È\+™«%SB´î’Óšs\7ú&^ÞömÔµ“±÷›Eê$Éj諦cd°/ûßpáÈ™Ø$I³ËI“ExáÞåÑF±½OÉ- 3zzz%:z^t2ÌIdµ“¹$‰ÝÞ¡?&I¿ ÈUNßÜú.7‘ä‹yˆ“šx’ô 6œÜ(Q-SI~1N:×—HR kòÍOÒ ÚÜÝNÉûüôlÜg²éÔ9é&©ßovwÛ"ž¤)æ‘Iz^ú%îéÚH’¥ó…“îÚÆ)z›uŽW“xa’f°\–6vLÔ1²U=t2Rs7(L2¿žüy ïn8™EhœBN`qòêKh„%É1 ÂIPJÎIP œ”NJ'¥€“RÀI)à¤pR 8)œ”NJÑŒ“ãxщ¥hÆÉ±÷›¡'o$œ!ã$-¨Íšvëj¿ü$IŸX¿Û'ãär¤>cmlù:I¶ÑM’i'íg‘+$)Öþá”8iÍø¼×/S®ö¬ºªŽ.QEù0rNÖ´u EN²$É„ùbÁ¾ìŽW§x¬Ë$YÕÖ%T;ùŠ\™ùت“¹ôAÃÎKä´XÜÖeÔ:¹îÙyÕTÚLÒÞ÷Éë×ç´9N¶u{ ¾#NšvR—_”da[—Q>wo'™»»Ý†"Ô%Ùñ8IAJfr13:Ÿq^¦69ßQÊîî²¶.£îÇlÚ }(ØaõÆÉâ¶.#ãä9„IvHÆÉs¸K’ 89*.8·M8¹täªKÑ„“KGn$œ!ãäx(Ι†óλƒÍNùI¦œ§q³N;ïÞ©‘;yx÷úKrˆ&Ù¤“ëÃ}jÙ­Ïöú©÷É4En½cºª“´=8©3ãqM<Àå™N½ƒºº†1|¶7úß®“k/ɉ©xY’ÎV/N¦’\öÈ–Ÿ”ä°l†ýoÜIš¼Á—\”äËÛlÞI;­8Œ—¤Þ'^郞Îa ª›Aÿ{rÒzßMò𮎬Ï|»q'×*ˆçÄ$d±²“ý­XWûw’Ì ;yã¤)à7óuIöàä »É'sLëzF’£CwN²_øINd÷Ã$ÅÇÉTÿ{p2>ã˜$m]ã'ÕÿœtWAk@öÇŒ¥*8ã« Tÿ›v²!:w²!à¤pR 8)œ”¢c'½õKÍŠFléÃèØÉÚ$isS¶«¿ádI6êäú£žeÌÓ‹yÜYKÕ¾SNºÝ"õ\¨þÖ¿È{âO‰prãîV™ûÛüVŸ¶ú1]íÔɹ­7l7I¶ì$$;H²e'Yf…IbœÜ5ãÌ­Ø/ŸquÒ,lT:›« É‹ñÚUP“NyÞtìä‘çÝœ”NJ'¥€“Rtìd¸”Ù³¸[uìd.I J¶*žœd—N6™d£Nªçýd8™’I=̘‡ vt-˜Äwzvr P稿H?!j'‰Ü·[ 'ÕÝÍ›x„î~tâÅp²Û$ádaW×IŒ“/6ãL6Ig fœiÒ‰^7ã4ê¤YÆ'Íú†kWA“ã« &<ò¼;èØÉ#Ï»8)œ”NJ'¥èØIoýRº>[öluµO'ÝHœ'š /ÚÜ”ïêœì$ÉF´)ËóŠÚõ6ÕáIü¡f««:ÉF²NÚRý´9¬«½:9éy’îîÄ’œ&[pPW;ur®Ð[’p²°«?ä$ÆÉ­$Õ Â¦˜iòw'ÒmÌ8:i7Ž“º”'©b¼~Ô¤“Gžw;yäyw'¥€“RÀI)à¤÷qÒ_ÝØGšÍuøbhMrðèÑÉ’$)^]¦«ãätq¼­“'$98]ìÄI2Ï8öQ‘ôsŽ~ØÑÏ8Ózx:ìQG“\ÉNÆÉõP=®‘±·Þ ®¥[~@WGÞå±—¹›¥Ãóbß‹êÃÔå?ïêS²'×*IšÔNIr`ÁÀɽ]]°Jöä$%錓ìgâ]m§ÙfóNÆgœù§ÎŒÃ=zÆ™V)Çí$›t2µ š&o¤,\cã˜­×æ*ˆ‹Ê ~0Éì8 J(˜»ApR 8)œ”NJ‘sr sCˆ›dÒÉ«¯ –TÂÛu¬rò ÞCY’'¯¾Š(LNfq’$"8¹—Â$ád8)œ”NJa“$ œÜs’ '«áw7 NVƒqR ÷‡l:p²’§E8™s·…IÂÉ,…w7œÌ‚qR '0ˆ8yõ%4Â’äPá$(%ç$(NJ'¥€“RÀI)à¤pR 8)œ”NJ'¥Á>'ÁN0N qR ÌÝRÀI)à¤pR 8)œ”NJ'¥€“RÀI)¢N_âžæZ‹:ùeó£ho{h-ádÖçcÐÛÛ·–pR¤ýßi NÂÉÖZƒ“p²µÖê$¢õ›}V÷–VæŸGZ(nM÷' «“M’‚Ÿ$ΰÛÉ¥ÛëGêÙ$íwA˜‰ÖlÒœ’d•“ÖD“f²ýHkn/¿IÒo.BsN–ºTå$)±”ê¡añÖøÕÚßß'òþç5IÚ_SdÙ뤛ÀV²Þ†ÿ‘¹›ú]Þš­ÌÏÞf³¼o,Iöëlß¾p25:•Í8N’ºÙªÖ¼Ú´³Ñl>IbÝsî¿L’»”º»Í}Dß$^¼)ýÂIþÏ&¹œü~Æ¡ ©½IÚñìå$6[“äËÝtÒ›»WAû’´ý¡íïS“TN~>êד±(¿˜qêZ#ç·<É fœEE¢çLõ3N$ʺ$U7ýåJYk¦?knÆ VAs„ó89gšO²ˆƒžm/l-;ŽK‚Ç’dÁ8YH ×.ÛZI’:É’q²®]¶µ"'kæîBZ¸ö“[«\OV·ÿ;­ÁI8ÙZkpN¶ÖZÂÉñ+üÞÞ¾µ¸“ß5ï÷öþ­E•D•ÀI)à¤pR 8)œ”NJ'¥€“RÀI)ड“#؇ï$½¸N>À~¸“¼¾z'ã> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (48)Tj /T9 1 Tf 569 0 TD [(CHAPTER)-14000(5.)-31000(SELECTING)-14000(FILES)-15000(AND)-13000(DIRECTORIES)]TJ ET q 396 0 0 -0.96 125.976 677.196 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 667.38 Tm [(Program)-15000(5.1)]TJ /T15 1 Tf 273 0 TD [(Using)-14000(the)-15000(TixFileSelectDialog)]TJ ET q 396 0 0 -0.48 125.976 663.516 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 126 654.9 Tm (tixFileSelectDial)Tj 373 0 TD [(og)-19000(.file)-21000(-title)-20000("Select)-21000(A)-21000(File")-21000(-command)-20000(selectCmd)]TJ -373 49 TD [(.file)-21000(subwidget)-20000(fsbox)-20000(config)-21000(-pattern)-20000("*.txt")-20000(-directory)-20000(/usr/info)]TJ 0 50 TD [(.file)-21000(popup)]TJ 0 100 TD [(proc)-21000(selectCmd)-20000({filename})-20000({)]TJ 87 50 TD [(puts)-21000("You)-21000(have)-21000(selected)-20000($filename")]TJ -87 50 TD 0 Tw (})Tj ET q 396 0 0 -0.48 125.976 570.636 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 186.0578 0 0 166.8799 338.9038 314.3773 cm /Im31 Do Q q 186.2933 0 0 39.4233 338.9038 207.0708 cm /Im32 Do Q 0 G 0 J 0 j 0.28 w 10 M []0 d 1 i q 0.9927 0 0 -1.0073 0 0 cm 338.59 -236.397 m 316.164 -247.61 l S Q 2 j q 0.9927 0 0 -1.0073 0 0 cm 319.674 -244.601 m 316.164 -247.61 l 320.677 -246.607 l S Q 0 j q 0.9927 0 0 -1.0073 0 0 cm 338.59 -337.314 m 316.164 -326.101 l S Q 2 j q 0.9927 0 0 -1.0073 0 0 cm 320.677 -327.104 m 316.164 -326.101 l 319.674 -329.11 l S Q q 186.4298 0 0 200.3515 121.8435 235.3093 cm /Im27 Do Q 0 j q 0.9927 0 0 -1.0073 0 0 cm 320.677 -327.104 m 316.164 -326.101 l 319.674 -329.11 l s Q BT /F1 1 Tf 6.679 0 0 6.777 316.641 283.315 Tm (TixFileSelectDialog)Tj 11.25 -1.6667 TD (TixStdButtonBox)Tj -1.25 1.6667 TD (=)Tj 1.25 1.6667 TD (TixFileSelectBox)Tj 3.3333 -1.6667 TD (+)Tj /T15 1 Tf 0.24 0 0 -0.24 188.88 184.74 Tm [(Figure)-14000(5.1:)-17000(The)-14000(Comp)-1000(osition)-12000(of)-13000(a)-14000(TixFileSelectDialog)-12000(Widget)]TJ ET endstream endobj 244 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F1 39 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T15 6 0 R >> /XObject << /Im27 240 0 R /Im31 236 0 R /Im32 238 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS22 237 0 R /CS23 239 0 R /CS24 241 0 R >> >> endobj 237 0 obj [/Indexed /DeviceRGB 7 245 0 R] endobj 245 0 obj << /Filter /ASCII85Decode /Length 34 >> stream !!!!c6:1_Ps1,\NDf9Q]?XK:lRfEEg~> endstream endobj 239 0 obj [/Indexed /DeviceRGB 3 246 0 R] endobj 246 0 obj << /Filter /ASCII85Decode /Length 19 >> stream s8W*!!!'R?\SlD)~> endstream endobj 241 0 obj [/Indexed /DeviceRGB 15 247 0 R] endobj 247 0 obj << /Filter /ASCII85Decode /Length 44 >> stream !!!#=`l endstream endobj 248 0 obj << /Type /XObject /Subtype /Image /Name /Im26 /Width 472 /Height 346 /BitsPerComponent 8 /ColorSpace 249 0 R /Length 4915 /Filter /FlateDecode >> stream H‰ì— ƒ«¨†™IÛ»wvöìÿÿ·[•€ Œ4ï9VE;}Í#!QJôYúºÚ€(£BïKß }%¯ˆx(MèK¸ÞXÂuN ×9•çú“ŠŽŠø(JÈã:®ˆËçZ3ËE|õ%\§”pSór…·üóÌíÞ7—//C™o±Õ¬\W”!7W·®¬´áÀP¢€ì ž»[ïŠu^®x&Ú¹kró¶—ª1×Ýt 3úá4A·äêX:©Í»ÉžÄ¾y+Ÿ¢«ßwåj¦¬ù@“Ï­½)®f:{ߺ—æåúír­tîx»á„£á·î¥×/§ïs Í8ÎoÛ×ĹÞéª)ë&·´&¹î %áÊ^TIÕ„ ¬ïÖ{VM“rELºËI¢Ë™•«H¸Î)á:§B®_{ÅÆDÜe¸^íCÔW¨ÚôõM!ÃSçá¯ÇS4^Ê__…ë®sJ¸Î©[r}½®vÀ^÷äz“×J¸Î)á:§„뜮´‚áÚ~W¸ÒJ¸VèV\CUÌÕ¾fc ̽¤uîÆ<Ë`®¯ ®è€Wûú|µú3õ¥Ø•q\GüΦW×ÝÉ5züoÓ_ú|³”1voþ\í|5yÏí¹^çúD+Ŷ³ãúÌMk}Ϙg¹W·ÙØŒ3^À,Ú§%Šy†÷Ð> c®àV¯p»@ùùž9ÆÏÔ=tϘ+:°3ç°±*äŠçéWêg©æjôY¬³y8ð0RÅóu·OÌWûwHž¥’+2ú|VcíÅõŠ\|P'¸fòðÓûC½UËÕ~Z¶5:™‡/­›þÒÂþ`ÇÌ+‘ÖŠ ×Mîy¨Ÿ¥Ž+¸=4`½sŸ³è…LÚ%Ò›~Ÿƒq?1Wúg9ÁµÁJWŽzÝÁä¦v®-¯X9W0ªÿ:!®,ZqÍÃ,£ö!\Ië&Žš6õ0eŸÃQsõû×Z°ì¹>b²W¯çzì©’««—4Ÿ:°5\ÿ?ZËÆÂörö¼ýy˜*¹žg®«H0^L¸øCªâzº¬ãú3Rz®ìü! ׊¸ÍÊõ´ný¹,¹Æý! ׊¸E¸Âû_¼ÛоÑâ‰;צPÅM¸&TËu]Ê[¢@·=W(£Ôá¦âÊ~¾®\õ»§ßÁåüçÇ2øíDþ®¯ªäZ˜æ:ÅÍ/ú³\S›;üñOÏrMúó¹ŽÄzºÉë厸ÚÙþ¢CÞþ<®£u®Odô×Uý¹¦ü ×LÜJ××’ùúCÀ5¿¾^%æ\Ÿàœ¦¹P®±;Hü1w®Èi)WT7»ƒÄqæê/¥\qÞPì 4Wnþˆ3×À);®I $\ ü1p%ðÇ@%\cµühWvþ<7WÈu¬1·×^ ®üü]ÇÕzÈs½D±°%¸^¢cþ­;¸s=Öõ\+$\‹%\®ã$\‹%\®ãTÀJþRþ&á:NY®+Բ•“ò\ÑgÁG®ã”ãŠhÁ–Á$fð÷•“ʹ.ð·ìo ×qª˜¯úðþ¹?OK¸ŽSeŽqÅ㇪àú÷Ú<Bö‘ÉÝm#”ñç©.'çë³7W5^ílÕ jÓø˜¡?Oåõ0ퟓq}0çó穼õê#êºéoØlÃúߌ›;8àº,@á_¡³™óWÇõiÚšu¿ü×\Iûœc®4±Cq[¢²‹ÛŽ+ü¾zÂ5êÏS×n:Ç•“þ@Eò`¸mA ãp,ûG†pûót+®àmŒ)âö ·ó€ë¯Óh®QžØæa;B®.x€Ž{ÆÍÄ$ˆ[„ënÊRw9žØrU&Nûë$òù*\ß\%-?+O<ÜIÂõ´ óp&ªn"ãŠêaáj`*KW`Þ«~ÄêûÙ¹¸â ¡ÇAeÙçPj ®×ÅíåI¸Öˆ1ר 6-\sš™ë¾bÚ5²úðëáºGî¢>\!lq„+Òm¹Â¾wUvþBŠw…?áZ«\£ý+h‚ «ySÉ"×Âgîßçĵ鮿Nq®`6áÆ.q|V„\U0C…k,v‰ã³ÄU§èåª(öúÀ­RÝDÉÕ¬­ºvú`®x)210ËT0ÜIƒ¸*õÑ\Ýã‡1ÀóÔ2® ÑAÜbƒÚô®îA¤nR`…òpÈuÉØ7⺮/›ã抃†ò° Ø 'EÖ¿vÒ´\UÀ•áúJ©9¸&ê&Û,ð¬›(5×DŸã ²ìs(5×ËâÔ¦…kN3sÝWLìOù®mq‹ jÓE\Ákq¶¡`ÊŸpm‹[lP›.á Aﺎõô'\ÛâÔ¦[ûWS‚;l÷'\ÛâÔ¦K¸þ:9®®)3‡íþ&áZÜ£žOvt\õ¸ÃvSso·;>·Ø 6-\sªâ ßþ¢pe ®€j åÎ`[¡À ºOJ¸žVž+®5PåáFM€‚¡R7ÛÍþîÎÕÄÄ ‡·×\Ý'E8_½Ü#\•›¯:çº! f\cýk'ÍÈÕñæJ©y¸B)W6ë+¥æà¯›–ç ”_ÝD©)¸¦úei:¨ŒúJÍÁõª¸Åµé2®ö'\ÛâÔ¦‹¸‚×âô÷'\ÛâÔ¦K¸Bлv÷'\ÛâÔ¦›ûWsT €ëƒ|þ®mêÂõ×ÉR²%{XÕ{Í@ÆŸp­W¼‡ýÞ»˜ó÷xyº+×âΔGŸSÏÕ&gÈ%âœ?:Ëü€…Çmºˆ«BÉù”?ªâ ßþ"w®‘ü‹ «ÏáêjG“¥ÔVAº¼“l\ÎÆ­_ÝÔOUuSÚå¹¢gOEÄ/Íc9‘qݵ2Ë.\_Kûœ´?*àjBr”Áð<µŒcs&níýkÍÈUÇé˜ë’¥/æJ©¹º³C®™ê\Ü„kV…\¡”+›õ•Rsp×MË£€ʯn¢Ô\S}޲4TF}޳º&÷Ç@\Ç«Wð[7Nîæå aïj/ûc i¹ÆûW°Ë†¿šôõÇ@órýu²äliTý1ЇqÕá¾³?úP®àùý1ЇrEÂu˜„ëi}× n2Ÿý1PWÓ(Ø% l)i&4…§9nÍ\Ã>瓹îzƒmÃ\¡1>­qkï_Çøc ®&Púï½I;.n%\)%\iâ&\³jçêjIáøc B®åªY ×À5×MJ_®ûŠéÐdùLÁ5Ñç¨È î¥>\Áoq°IP߯5ùø½Û‡â¸q…°wUÂ)͵{[X·æþUç;lsÏvÒ˵s¥Ãڇ믓÷*êÑö5C TÏu€è¸êËú| ázZÂU¸“p=­ç*uÓH‘s5 ?ºÏ÷ìÛ{¦U°‚¾MYÿº»‰Æ幆¹Ê¾ê60•Yì|ÜJ¸飹âÀ~ ³[[¨ªâ&\³êÉTÕ*Õ·n\‰ü1P;W{Œ¯ôIÇÂõ´ ¹B”«†XÙý[!×}ÅÑÃîþ¨¹nRúØr¯ÅQÉçšèsTd÷R®ô®ý1P×0^‘£Áqkî_A¡×“ÎàÚµe­Š[×_'ÌÕ.%„þ¨+VZ®xOäê¹p=-áJà„+?*䚊Âì—á–«* Fë¯ûþÏ{® ’ D¬1~{«h'²ôµ÷ªyCÝT¤·×³Gˆªy;ã眕ÇzM_;aÃë4z¥¬×ÎûëÿóÆ]Ð5^):»n±Ÿ§ŸÊ^ÇX"K5º Å½¾øPôª‘é AÞ ¼Ú^m¯6W›À«MàÕ&ô ŠÀ«MàÕ&ðjxµ ¼Ú^m¯6W›À«MàÕ&%¯Dò5ê\X{“#âááCÅÑà -^·{qS4@êåÔzM¶‰NxÕÄ¡|õ‹®_E÷ùê»ÄBK¢+|™»]ÿ>âÓÝŸómñJÎ@~‰N&rûóÊD#A#ǼʶÏVí½Fß CV •uÕ¨¡aþš¯”_t+¼¢NîÅÁz˜„ ä:¼5É_D¢n¢å/5œåè9§Úkœé)¯,ýáµ/uS¦#ÊuÓöÊê¦ÝHÐHÙëºé‰]3Q@•Ï9߼ʆ×ó”¼^ ,^Æï½’_Â6{õ¿|!7z%x½Ž[×apðjxmcLqwPŒ¢× ÄÌÓ’Ò:Ýà/¼f™¡DrNózK\záÕ$ðj镈|‡ª™ªöJÛ‹å‘èó6¬{%!ù=ØòJΠðúWs^çroÈ=±‡´ËÓ¼þ­¤½’»Rë0ùË´ óJž¥C›×Õç°ÒâU¶[‡ç+תÎëêóë:öÒd¾ºg{á:Ì´ªóZ±¿†ße._/û´ýµ=_ùð·yeü<¯>vʬÃo­›$Ö¼¾÷œ£»®:¿¼ÚÄÐ: ðj3^G ™§åù^ïžE}ÌÓ2ŽÓžüå(zIRZá\ ¼Ú^m¯6W›ì½¦ =ð8b¯0‚ðzw0 ÜkŠ¿lÐAÞ¼>xµ ¼Úä»×¿ù ƒ/† Ï&ÿ«ŠÈ endstream endobj 251 0 obj << /Length 6273 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(5.1.)-31000(FILE)-14000(SELECTION)-15000(DIALOG)-13000(WIDGETS)]TJ /T15 1 Tf 1607.9998 0 TD (49)Tj ET q 302.112 0 0 221.472 173.04 497.02 cm /Im26 Do Q BT 0.24 0 0 -0.24 229.44 475.14 Tm [(Figure)-14000(5.2:)-17000(The)-15000(ExFileSelectDialog)-12000(Widget)]TJ /T8 1 Tf -431 131 TD (5.1.2)Tj 171 0 TD [(The)-19000(Sub)]TJ 206 0 TD [(widget)-19000(in)-18000(the)-18000(TixFileSelectDi)]TJ 726 0 TD (alog)Tj /T15 1 Tf -1103 100 TD 0 Tw (W)Tj 40 0 TD 14 Tc [(em)14000(a)]TJ 88 0 TD 0 Tc [(y)-13000(also)-15000(w)]TJ 149 0 TD (an)Tj 43 0 TD [(t)-14000(t)0(o)-15000(set)-16000(other)-15000(options)-15000(for)-14000(the)-16000(\014le)-14000(dialog)-14000(suc)]TJ 787.9999 0 TD [(h)-15000(a)0(s)-15000(its)-15000(\014le)-15000(\014lter)-15000(and)-15000(w)]TJ 428.0001 0 TD (orking)Tj -1536 50 TD (directory)Tj 159 0 TD 30 Tc (.T)Tj 69 0 TD 0 Tc [(o)-17000(d)0(o)-17000(this,)-18000(w)]TJ 224.9999 0 TD 18 Tc (em)Tj 71.0001 0 TD 0 Tc [(ust)-17000(kno)]TJ 137 0 TD [(w)-17000(the)-19000(comp)-1000(osition)-15000(of)-17000(the)-19000(TixFileSelectDialog)-16000(widget.)]TJ -661 49 TD [(As)-19000(sho)]TJ 125 0 TD [(wn)-19000(in)-19000(\014gure)-19000(5.1,)-19000(the)-19000(TixFileSelectDialog)-17000(con)]TJ 841.9999 0 TD [(tains)-19000(a)-19000(sub)]TJ 208 0 TD (widget)Tj /T12 1 Tf 139 0 TD (fsbox)Tj /T15 1 Tf 128.0001 0 TD [(of)-18000(the)-19000(t)]TJ 143 0 TD [(yp)-1000(e)]TJ -1585 50 TD (TixFileSelectBo)Tj 287 0 TD [(x)-14000(and)-14000(a)-13000(sub)]TJ 212 0 TD (widget)Tj /T12 1 Tf 134 0 TD (bbox)Tj /T15 1 Tf 101 0 TD [(of)-14000(the)-14000(t)]TJ 134 0 TD [(yp)-1000(e)-14000(TixStdButtonBo)]TJ 381 0 TD (x.)Tj -1187 74.0001 TD (The)Tj /T12 1 Tf 91 0 TD (fsbox)Tj /T15 1 Tf 128 0 TD (sub)Tj 61 0 TD [(widget)-19000(supp)-1000(orts)-21000(the)]TJ /T12 1 Tf 392 0 TD (-pattern)Tj /T15 1 Tf 193 0 TD (and)Tj /T12 1 Tf 85.9999 0 TD (-directory)Tj /T15 1 Tf 237 0 TD (options.)Tj 178 0 TD (A)Tj 30 0 TD 19 Tc [(tl)19000(i)19000(n)19000(e2o)19000(f)]TJ -1457.9999 50 TD 0 Tc [(\014gure)-14000(5.1,)-13000(w)]TJ 223 0 TD [(e)-14000(use)-14000(the)]TJ /T12 1 Tf 175 0 TD (-directory)Tj /T15 1 Tf 230.9999 0 TD [(option)-13000(to)-14000(tell)-13000(the)]TJ /T12 1 Tf 323.0001 0 TD (fsbox)Tj /T15 1 Tf 122 0 TD (sub)Tj 60.9999 0 TD [(widget)-14000(to)-14000(displa)]TJ 291 0 TD [(y)-13000(\014les)-14000(in)-13000(the)]TJ -1425.9999 49 TD (directory)Tj /T12 1 Tf 174 0 TD (/usr/info)Tj /T15 1 Tf 197.9999 0 TD 10 Tc (;w)Tj 51.0001 0 TD 0 Tc [(e)-12000(also)-11000(use)-12000(the)]TJ /T12 1 Tf 249 0 TD (-pattern)Tj /T15 1 Tf 186 0 TD [(option)-11000(to)-11000(sp)-1000(ecify)-12000(w)]TJ 338.9999 0 TD [(e)-12000(only)-11000(w)]TJ 148 0 TD (an)Tj 43 0 TD [(t)-11000(the)-12000(\014lenames)]TJ -1387.9999 50 TD [(that)-14000(has)-14000(the)]TJ /T12 1 Tf 234.9999 0 TD (txt)Tj /T15 1 Tf 80.0001 0 TD (extension.)Tj -253 73.9999 TD (The)Tj /T12 1 Tf 88 0 TD (fsbox)Tj /T15 1 Tf 126 0 TD (sub)Tj 61 0 TD [(widget)-16000(also)-16000(supp)-1000(orts)-18000(the)]TJ /T12 1 Tf 469 0 TD (-selection)Tj /T15 1 Tf 234 0 TD [(option,)-16000(whic)]TJ 225.9999 0 TD [(h)-16000(stores)-18000(the)-17000(\014lename)]TJ -1265.9999 49.0001 TD (curren)Tj 113 0 TD [(tly)-13000(selected)-14000(b)]TJ 238 0 TD [(y)-12000(the)-13000(user.)-19000(W)]TJ 248 0 TD [(e)-12000(can)-12000(query)-13000(this)-12000(v)]TJ 316.9999 0 TD [(alue)-12000(b)]TJ 108.0001 0 TD [(y)-12000(the)]TJ /T12 1 Tf 104 0 TD (cget)Tj /T15 1 Tf 98.9999 0 TD [(widget)-12000(command)-10000(of)-11000(the)]TJ /T12 1 Tf -1226.9999 50 TD (fsbox)Tj /T15 1 Tf 123 0 TD (sub)Tj 61 0 TD (widget.)Tj -122 73.9999 TD (Remem)Tj 138 0 TD [(b)-1000(e)0(r)-15000(that)-16000(the)]TJ /T12 1 Tf 238.9999 0 TD (-pattern)Tj /T15 1 Tf 176.0001 0 TD (,)Tj /T12 1 Tf 26.9999 0 TD (-directory)Tj /T15 1 Tf 234 0 TD (and)Tj /T12 1 Tf 83.0001 0 TD (-selection)Tj /T15 1 Tf 234.9999 0 TD [(options)-16000(do)-16000(not)-16000(b)-1000(elong)-16000(to)]TJ -1193.9999 49 TD [(the)-14000(TixFileSelectDialog)-11000(widget.)-18000(A)-13000(common)-11000(mistak)]TJ 921 0 TD [(e)-12000(that)-13000(p)-1000(eople)-14000(mak)]TJ 326.9999 0 TD [(e)-11000(i)0(s)-13000(t)0(o)-14000(try)-13000(to)-13000(con\014gure)]TJ -1247.9999 50 TD [(the)-17000(non-existen)]TJ 278.9999 0 TD (t)Tj /T12 1 Tf 34 0 TD (-pattern)Tj /T15 1 Tf 191.0001 0 TD [(option)-15000(of)-17000(the)-17000(TixFileSelectDialog,)-15000(whic)]TJ 721.9999 0 TD [(h)-16000(causes)-18000(m)]TJ 204.0001 0 TD (uc)Tj 39.9999 0 TD [(h)-16000(despair,)]TJ -1469.9999 50 TD [(long)-13000(error)-15000(messages)-14000(and)-13000(great)-15000(loss)-14000(of)-13000(self-con\014dence.)]TJ /T13 1 Tf 969.9999 0 TD (A)Tj 30.0001 0 TD [(lways)-15000(r)]TJ 128 0 TD (ememb)Tj 122.9999 0 TD (er:)Tj /T15 1 Tf 50 0 TD [(,)-12000(when)-14000(y)]TJ 153 0 TD [(ou)-14000(w)]TJ 87.0001 0 TD (an)Tj 42.9998 0 TD 13 Tc [(tt)13000(o)]TJ -1583.9998 50 TD 0 Tc [(con\014gure)-15000(an)-13000(option,)-13000(\014nd)-14000(out)-14000(whether)-15000(it)-14000(b)-1000(elongs)-14000(to)-13000(the)-15000(widget)-14000(or)-13000(its)-14000(sub)]TJ 1307.9999 0 TD (widgets.)Tj /T8 1 Tf -1307.9999 139 TD (5.1.3)Tj 171 0 TD [(The)-19000(TixExFileSel)]TJ 432 0 TD (ectD)Tj 115 0 TD [(ialog)-16000(Widget)]TJ /T15 1 Tf -718 101.0001 TD [(The)-20000(TixExFileSelectDialog)-18000(widget)-20000(is)-19000(v)]TJ 724 0 TD [(ery)-20000(similar)-18000(to)-19000(the)-21000(TixFileSelectDialog)-17000(widget.)]TJ 895 0 TD (It)Tj -1619 48.9999 TD [(supp)-1000(orts)-21000(all)-19000(the)-20000(options)-20000(and)-20000(widget)-20000(commands)-17000(of)-20000(the)-20000(latter,)-21000(so)-20000(essen)]TJ 1317 0 TD [(tially)-20000(w)]TJ 144 0 TD [(e)-21000(can)-20000(just)]TJ -1461 50 TD (tak)Tj 58 0 TD [(e)-16000(the)-16000(program)-14000(5.1)-15000(and)-16000(replace)-16000(the)-17000(command)]TJ /T12 1 Tf 833.9999 0 TD (tixFileSelectDia)Tj 351.0001 0 TD (log)Tj /T15 1 Tf 78.9999 0 TD [(in)-15000(the)-16000(\014rst)-17000(line)-15000(to)]TJ ET endstream endobj 252 0 obj << /ProcSet [/PDF /Text /ImageC /ImageI] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /XObject << /Im26 248 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS25 249 0 R >> >> endobj 249 0 obj [/Indexed /DeviceRGB 15 253 0 R] endobj 253 0 obj << /Filter /ASCII85Decode /Length 64 >> stream lg*kVEH/n6_Z0Z:s8W,Je'i_nIG endstream endobj 255 0 obj << /Length 10313 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (50)Tj /T9 1 Tf 569 0 TD [(CHAPTER)-14000(5.)-31000(SELECTING)-14000(FILES)-15000(AND)-13000(DIRECTORIES)]TJ /T12 1 Tf -569 117 TD (tixExFileSelectDi)Tj 373 0 TD (alog)Tj /T15 1 Tf 87.9999 0 TD 0 Tw (.)Tj -398.9999 73.0002 TD [(The)-15000(comp)-1000(osition)-13000(of)-14000(the)-16000(TixExFileSelectDialog)-13000(widget)-14000(is)-15000(a)-15000(bit)-14000(di\013eren)]TJ 1270.9999 0 TD [(t:)-21000(it)-14000(con)]TJ 152 0 TD [(tains)-15000(one)]TJ -1484.9999 50 TD (con)Tj 61 0 TD [(tains)-14000(one)-14000(sub)]TJ 238.9999 0 TD [(widget,)-14000(whic)]TJ 228.0001 0 TD [(h)-15000(i)0(s)-14000(also)-13000(called)]TJ /T12 1 Tf 281 0 TD (fsbox)Tj /T15 1 Tf 109.9999 0 TD [(,)-13000(o)0(f)-13000(the)-15000(t)]TJ 159.0001 0 TD [(yp)-1000(e)-15000(TixExFileSelectBo)]TJ 415.9999 0 TD [(x)-14000(widget)]TJ -1493.9999 50 TD [(\(\014gure)-18000(5.2\).)-26000(Again)-16000(this)]TJ /T12 1 Tf 450.9999 0 TD (fsbox)Tj /T15 1 Tf 126.0001 0 TD [(widgets)-17000(supp)-1000(orts)-18000(all)-16000(widget)-17000(options)-17000(and)-16000(commands)-15000(of)-16000(the)]TJ /T12 1 Tf -577 50 TD (fsbox)Tj /T15 1 Tf 124 0 TD (sub)Tj 61 0 TD [(widget)-16000(in)-14000(TixFileSelectDialog,)-13000(so)-16000(the)-15000(line)-15000(2)-15000(o)0(f)-15000(program)-13000(5.1)-14000(can)-16000(w)]TJ 1199 0 TD [(ork)-15000(for)-15000(TixEx-)]TJ -1384 49 TD [(FileSelectDialog)-13000(widgets)-14000(without)-13000(an)]TJ 653 0 TD 14 Tc (yc)Tj 53 0 TD 0 Tc (hange.)Tj /T8 1 Tf -706 139 TD (5.1.4)Tj 171 0 TD [(Sp)-2000(ecifying)-17000(File)-18000(T)]TJ 417.9999 0 TD [(yp)-2000(es)-18000(for)-19000(TixExFileSel)]TJ 533 0 TD (ectD)Tj 115.0001 0 TD (ialog)Tj /T15 1 Tf -1237 100 TD [(The)-21000(TixExFileSelectBo)]TJ 428.9999 0 TD [(x)-20000(widget)-20000(has)-20000(a)-20000(Com)]TJ 389.0001 0 TD [(b)-1000(oBo)]TJ 94 0 TD [(x)-18000(sub)]TJ 100.9999 0 TD [(widget)-20000(mark)]TJ 234 0 TD [(ed)-19000(as)-21000(\\Select)-20000(Files)-21000(of)]TJ -1246.9999 50 TD (T)Tj 29 0 TD [(yp)-1000(e:")-27000(\(see)-19000(\014gure)-19000(5.2\).)-30000(This)-18000(widget)-18000(con)]TJ 740.9999 0 TD [(tains)-18000(some)-17000(pre-set)-19000(t)]TJ 369 0 TD [(yp)-1000(es)-19000(of)-18000(\014les)-18000(for)-18000(the)-19000(user)-19000(to)]TJ -1138.9999 50 TD (c)Tj 17 0 TD [(ho)-1000(ose)-13000(from.)-15000(F)]TJ 250 0 TD [(or)-12000(example,)-10000(a)-12000(w)]TJ 283 0 TD [(ord)-11000(pro)-1000(cessor)-14000(program)-10000(can)-12000(include)-12000(c)]TJ 646.9999 0 TD [(hoices)-13000(suc)]TJ 177.0001 0 TD [(h)-12000(a)0(s)-12000(\\Microsoft)]TJ -1374 50 TD (W)Tj 40 0 TD [(ord)-13000(Do)-1000(cumen)]TJ 244 0 TD [(ts")-13000(and)-14000(\\W)]TJ 207.9999 0 TD (ordP)Tj 86.9999 0 TD [(erfect)-14000(Do)-1000(cumen)]TJ 284 0 TD (ts".)Tj -800.9999 72.9998 TD [(The)-14000(TixExFileSelectBo)]TJ 422 0 TD [(x)-12000(widget)-13000(has)-13000(a)]TJ /T12 1 Tf 274 0 TD (-filetypes)Tj /T15 1 Tf 229.9999 0 TD [(option)-12000(for)-13000(this)-13000(purp)-1000(ose.)-18000(As)-14000(sho)]TJ 562.0001 0 TD [(wn)-12000(in)]TJ -1550 50.0002 TD [(line)-12000(3)-13000(through)-13000(7)-13000(i)0(n)-12000(program)-11000(5.2,)-12000(the)-14000(v)]TJ 681.9999 0 TD [(alue)-12000(for)-12000(the)]TJ /T12 1 Tf 219 0 TD (-filetypes)Tj /T15 1 Tf 231 0 TD [(option)-12000(is)-13000(a)-12000(list.)-18000(Eac)]TJ 354.0001 0 TD [(h)-13000(item)-11000(in)]TJ -1486 49.9998 TD [(the)-13000(list)-13000(should)-13000(con)]TJ 331 0 TD [(tain)-12000(t)]TJ 99 0 TD (w)Tj 29 0 TD [(o)-12000(parts.)-19000(The)-13000(\014rst)-14000(part)-13000(is)-12000(a)-13000(list)-12000(of)-13000(\014le)-13000(patterns)-14000(and)-12000(the)-14000(second)-14000(part)]TJ -459 50 TD [(is)-14000(the)-14000(textual)-14000(name)-13000(for)-13000(this)-14000(t)]TJ 525 0 TD [(yp)-1000(e)-15000(o)0(f)-13000(\014les.)]TJ /T8 1 Tf -525 139.0001 TD (5.1.5)Tj 171 0 TD (The)Tj /T7 1 Tf 114.9999 0 TD [(tix)-24000(filedialog)]TJ /T8 1 Tf 376.9999 0 TD (Command)Tj /T15 1 Tf -662.9999 100 TD [(TixExFileSelectDialog)-10000(and)-11000(TixFileSelectDialog)-10000(are)-12000(v)]TJ 950 0 TD [(ery)-12000(similar)-9000(to)-12000(eac)]TJ 306.9999 0 TD [(h)-12000(other.)-18000(So)-11000(whic)]TJ 296.0001 0 TD [(h)-12000(one)]TJ -1553 50 TD [(should)-15000(w)]TJ 162 0 TD [(e)-15000(use?)-22000(That)-15000(is)-14000(just)-16000(a)-14000(matter)-14000(of)-15000(taste.)-22000(Ho)]TJ 756 0 TD (w)Tj 28.9999 0 TD (ev)Tj 39.0001 0 TD [(er,)-15000(since)-15000(w)]TJ 192 0 TD [(e)-16000(kno)]TJ 98.9999 0 TD [(w)-14000(that)-15000(programmers)]TJ -1276.9999 48.9999 TD [(usually)-10000(ha)]TJ 182 0 TD (v)Tj 21 0 TD [(e)-10000(bad)-11000(taste,)-11000(clev)]TJ 284.9999 0 TD [(er)-12000(programmers)-8000(w)]TJ 323.0001 0 TD [(ould)-10000(rather)-12000(step)-11000(aside)-11000(and)-10000(let)-11000(the)-11000(users)-12000(exercise)]TJ -811 50 TD [(their)-14000(o)]TJ 118.9999 0 TD [(wn)-14000(taste.)-19000(T)]TJ 212.0001 0 TD [(o)-13000(d)0(o)-13000(this,)-14000(w)]TJ 213 0 TD [(e)-14000(can)-14000(use)-15000(the)]TJ /T12 1 Tf 250.9999 0 TD [(tix)-21000(filedialog)]TJ /T15 1 Tf 319 0 TD (command.)Tj -1051.9999 74.0001 TD (F)Tj 24 0 TD [(or)-10000(an)]TJ 90 0 TD [(y)-9000(programs)-8000(based)-10000(on)-10000(Tix,)-9000(the)-11000(user)-10000(can)-10000(c)]TJ 699 0 TD [(ho)-1000(ose)-11000(his)-9000(preferred)-12000(t)]TJ 359 0 TD [(yp)-1000(e)-10000(o)0(f)-9000(\014le)-10000(dialog)-8000(b)]TJ 320 0 TD [(y)-9000(set-)]TJ -1554 49 TD [(ting)-9000(the)-10000(X)-9000(resource)]TJ /T12 1 Tf 345 0 TD (FileDialog)Tj /T15 1 Tf 227 0 TD [(to)-10000(either)]TJ /T12 1 Tf 159.9999 0 TD (tixFileSelectDia)Tj 351 0 TD (log)Tj /T15 1 Tf 72.0001 0 TD (or)Tj /T12 1 Tf 45.9999 0 TD (tixExFileSelectDia)Tj 394.9999 0 TD (log)Tj /T15 1 Tf 66.0002 0 TD (.)Tj -1662 49.9999 TD [(This)-9000(can)-10000(usually)-8000(b)-1000(e)-10000(done)-10000(b)]TJ 468 0 TD [(y)-9000(inserting)-9000(a)-9000(line)-9000(similar)-7000(to)-9000(the)-10000(follo)]TJ 624 0 TD [(wing)-6000(in)]TJ 126 0 TD [(to)-9000(the)-10000(user's)]TJ /T12 1 Tf 224 0 TD (.Xdefaults)Tj /T15 1 Tf -1442 50 TD (\014le:)Tj /T12 1 Tf 104 109.0001 TD (*myapp*FileDialo)Tj 351 0 TD [(g:)-19000(tixExFileSelectDi)]TJ 435.9999 0 TD (alog)Tj /T15 1 Tf -890.9999 108.9999 TD [(When)-12000(w)]TJ 148 0 TD [(e)-13000(call)-11000(the)-13000(command)]TJ /T12 1 Tf 363 0 TD [(tix)-21000(filedialog)]TJ /T15 1 Tf 307 0 TD [(,)-10000(i)0(t)-12000(will)-10000(return)-14000(a)-12000(\014le)-12000(dialog)-10000(widget)-13000(of)-11000(the)-13000(user's)]TJ -818 50 TD [(preferred)-16000(t)]TJ 192 0 TD [(yp)-1000(e.)]TJ -130 73.0001 TD [(The)-14000(adv)]TJ 148.9999 0 TD (an)Tj 43 0 TD [(tage)-12000(of)-12000(using)]TJ /T12 1 Tf 242.0001 0 TD [(tix)-21000(filedialog)]TJ /T15 1 Tf 317.9999 0 TD [(is)-13000(it)-13000(mak)]TJ 160.0001 0 TD [(es)-12000(co)-1000(ding)-13000(\015exible.)-17000(If)-13000(the)-14000(managem)]TJ 621.9998 0 TD (en)Tj 40.0002 0 TD (t)Tj -1636 49.9999 TD [(suddenly)-12000(mandates)-12000(that)-12000(w)]TJ 474.9999 0 TD [(e)-12000(dump)-11000(the)-12000(Motif)-11000(lo)-1000(ok-and-feel)-11000(in)-12000(fa)]TJ 649.9999 0 TD (v)Tj 21.0001 0 TD [(or)-11000(of)-11000(the)-13000(MS)-12000(Windo)]TJ 356.9999 0 TD [(ws)-11000(lo)-1000(ok-)]TJ -1502.9999 50 TD [(and-feel,)-10000(w)]TJ 193 0 TD [(e)-10000(don't)-9000(need)-10000(to)-10000(dig)-9000(up)-10000(ev)]TJ 431 0 TD [(ery)-10000(line)-9000(of)]TJ /T12 1 Tf 182.9999 0 TD (tixFileSelectDialo)Tj 395 0 TD (g)Tj /T15 1 Tf 29.0001 0 TD [(calls)-9000(and)-9000(replace)-11000(it)-9000(with)]TJ /T12 1 Tf -1231 50 TD (tixExFileSelectDi)Tj 373 0 TD (alog)Tj /T15 1 Tf 87.9999 0 TD [(.)-22000(Also,)]TJ /T12 1 Tf 142.0001 0 TD [(tix)-21000(filedialog)]TJ /T15 1 Tf 322 0 TD [(creates)-18000(only)-15000(one)-17000(cop)]TJ 374 0 TD [(y)-16000(o)0(f)-16000(the)-17000(\014le)-16000(dialog,)]TJ -1299 50 TD (whic)Tj 82 0 TD [(h)-14000(can)-15000(b)-1000(e)-15000(shared)-16000(b)]TJ 325.9999 0 TD [(y)-14000(di\013eren)]TJ 169.0001 0 TD [(t)-16000(parts)-15000(of)-14000(the)-15000(program.)-18000(Therefore,)-16000(w)]TJ 672.9999 0 TD [(e)-14000(can)-15000(a)]TJ 129 0 TD (v)Tj 21 0 TD [(oid)-13000(creating)-15000(a)]TJ -1399.9999 49 TD [(separate)-15000(\014le)-13000(dialog)-12000(widget)-13000(for)-13000(eac)]TJ 603.9999 0 TD [(h)-14000(o)0(f)-12000(the)-14000(\\Op)-1000(en",)-14000(\\Sa)]TJ 383.0001 0 TD (v)Tj 20.9999 0 TD [(e")-12000(and)-14000(\\Sa)]TJ 196 0 TD (v)Tj 21 0 TD [(e)-13000(As")-13000(commands)-11000(in)-13000(our)]TJ -1224.9999 50 TD [(application.)-16000(This)-14000(w)]TJ 353.9999 0 TD (a)Tj 20.0001 0 TD (y)Tj 19 0 TD 12 Tc (,w)Tj 53 0 TD 0 Tc [(e)-13000(can)-14000(sa)]TJ 142.9999 0 TD (v)Tj 21 0 TD [(e)-13000(resource)-16000(since)-14000(a)-13000(\014le)-14000(dialog)-11000(is)-14000(a)-13000(large)-13000(widget)-13000(and)-13000(it)-14000(tak)]TJ 1005.9999 0 TD (es)Tj -1615.9998 50 TD [(up)-14000(quite)-14000(a)-13000(bit)-14000(of)-13000(space.)]TJ 62 74.0001 TD [(The)-18000(use)-18000(of)-16000(the)]TJ /T12 1 Tf 289 0 TD [(tix)-21000(filedialog)]TJ /T15 1 Tf 323 0 TD [(command)-14000(is)-17000(sho)]TJ 295.9999 0 TD [(wn)-17000(in)-17000(program)-16000(5.2.)-26000(This)-18000(program)-15000(is)]TJ -969.9999 48.9999 TD (v)Tj 21 0 TD [(ery)-16000(similar)-14000(to)-16000(what)-16000(w)]TJ 399 0 TD 16 Tc [(es)16000(a)]TJ 70 0 TD 0 Tc [(w)-16000(i)0(n)-16000(program)-14000(5.1,)-15000(except)-18000(no)]TJ 522 0 TD 15 Tc (ww)Tj 74 0 TD 0 Tc [(e)-17000(aren't)-16000(really)-15000(sure)-17000(whic)]TJ 445 0 TD 16 Tc (ht)Tj 54 0 TD 0 Tc [(yp)-1000(e)]TJ -1585 50 TD [(of)-14000(\014le)-15000(dialog)-13000(the)-15000(user)-16000(ha)]TJ 443 0 TD (v)Tj 20.9999 0 TD 14 Tc (ec)Tj 49.0001 0 TD 0 Tc [(hosen.)-21000(Therefore,)-16000(if)-14000(w)]TJ 402.9999 0 TD 15 Tc (ew)Tj 62.0001 0 TD 0 Tc (an)Tj 43 0 TD [(t)-14000(t)0(o)-14000(d)0(o)-15000(something)-13000(allo)]TJ 403.9999 0 TD (w)Tj 29 0 TD [(ed)-13000(for)-15000(only)]TJ ET endstream endobj 256 0 obj << /ProcSet [/PDF /Text ] /Font << /T7 62 0 R /T8 35 0 R /T9 25 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 258 0 obj << /Length 7210 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(5.2.)-25000(SELECTING)-9000(DIRECTORIES)-9000(WITH)-9000(THE)-10000(TIXDIR)]TJ 1025.9999 0 TD [(TREE)-8000(AND)-9000(TIXDIRLIST)-8000(WIDGETS)]TJ /T15 1 Tf 687.9999 0 TD (51)Tj ET q 396 0 0 -0.96 125.976 718.236 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 708.18 Tm [(Program)-15000(5.2)]TJ /T15 1 Tf 273 0 TD [(Using)-14000(the)]TJ /T12 1 Tf 189 0 TD [(tix)-21000(dialog)]TJ /T15 1 Tf 231 0 TD (command)Tj ET q 396 0 0 -0.48 125.976 704.076 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 694.74 Tm [(set)-21000(dialog)-21000([tix)-20000(filedialog])]TJ 0 50 TD [($dialog)-20000(-title)-21000("Select)-20000(A)-22000(File")-20000(-command)-21000(selectCmd)]TJ T* [($dialog)-20000(subwidget)-20000(fsbox)-21000(config)-20000(-pattern)-21000("*.txt")-20000(-directory)-20000(/usr/info)]TJ 0 49 TD [(if)-21000({[winfo)-21000(class)-20000($dialog])-20000(==)-22000("TixExFileSelect)]TJ 983 0 TD (Dialo)Tj 109 0 TD [(g"})-19000({)]TJ -1005.0001 50 TD [($dialog)-20000(subwidget)-20000(fsbox)-21000(config)-21000(-filetypes)-19000({)]TJ 87.0001 50 TD ({{*})Tj 349 0 TD ({*)Tj 151.9999 0 TD [(--)-22000(All)-21000(files}})]TJ -500.9999 50 TD ({{*.txt})Tj 349 0 TD [({*.txt)-20000(--)-22000(Text)-21000(files}})]TJ -349 50 TD ({{*.c})Tj 349 0 TD ({*.c)Tj 151.9999 0 TD [(--)-22000(C)-21000(source)-21000(files}})]TJ -587.9999 49 TD 0 Tw (})Tj -86.9999 50 TD (})Tj T* [($dialog)-20000(popup)]TJ 0 100 TD [(proc)-21000(selectCmd)-20000({filename})-19000({)]TJ 86.9999 49 TD [(puts)-21000("You)-21000(have)-21000(selected)-20000($filename")]TJ -86.9999 50 TD (})Tj ET q 396 0 0 -0.48 125.976 514.716 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 126 484.26 Tm [(one)-15000(t)]TJ 92 0 TD [(yp)-1000(e)-16000(o)0(f)-14000(\014le)-15000(dialogs,)-13000(w)]TJ 376 0 TD 16 Tc [(eh)16000(a)]TJ 76.9999 0 TD 0 Tc (v)Tj 21.0001 0 TD [(e)-14000(t)0(o)-15000(b)-1000(e)-16000(careful.)-21000(A)]TJ 325.9999 0 TD [(t)-15000(line)-14000(4)-15000(o)0(f)-14000(program)-14000(5.2,)-14000(w)]TJ 471 0 TD [(e)-15000(use)-15000(the)]TJ /T12 1 Tf 178.0001 0 TD (winfo)Tj /T15 1 Tf -1541 50 TD [(command)-12000(to)-15000(see)-16000(whether)-16000(the)-16000(t)]TJ 558 0 TD [(yp)-1000(e)-15000(o)0(f)-15000(the)-15000(\014le)-15000(dialog)-13000(is)-15000(TixExFileSelectDialog.)-20000(If)-14000(so,)-15000(w)]TJ 1008 0 TD [(e)-15000(set)]TJ -1566 49.0001 TD [(the)-14000(v)]TJ 90.9999 0 TD [(alue)-14000(for)-13000(the)]TJ /T12 1 Tf 223.0001 0 TD (-filetypes)Tj /T15 1 Tf 232 0 TD [(option)-13000(of)-13000(its)]TJ /T12 1 Tf 234 0 TD (fsbox)Tj /T15 1 Tf 123 0 TD (sub)Tj 60.9999 0 TD (widget.)Tj /T14 1 Tf -963.9999 161 TD (5.2)Tj 153 0 TD [(Selecting)-16000(Directories)-16000(with)-15000(the)-15000(TixDirT)]TJ 1106.9999 0 TD [(ree)-17000(and)-15000(TixDirList)]TJ -1106.9999 75 TD (Widgets)Tj /T15 1 Tf -153 114.9999 TD [(There)-10000(are)-10000(t)]TJ 195 0 TD (w)Tj 29 0 TD [(o)-9000(Tix)-9000(widgets)-9000(for)-9000(selecting)-10000(a)-9000(directory:)-16000(TixDirList)-9000(\(\014gure)-10000(5.3\(a\)\))-8000(and)-9000(TixDirT)]TJ 1379 0 TD (ree)Tj -1603 49 TD [(\(\014gure)-16000(5.3\(b\)\).)-22000(Both)-15000(of)-15000(them)-15000(displa)]TJ 659 0 TD [(y)-14000(the)-16000(directories)-17000(in)-14000(a)-15000(hierarc)]TJ 519.9999 0 TD [(hical)-16000(format.)-20000(The)-16000(displa)]TJ 449.9999 0 TD (y)Tj -1628.9998 50 TD [(in)-15000(the)-17000(TixDirList)-14000(widget)-16000(is)-15000(more)-15000(compact:)-21000(it)-15000(sho)]TJ 905 0 TD [(ws)-16000(only)-15000(the)-17000(paren)]TJ 329 0 TD [(t-)-16000(and)-15000(c)]TJ 144.9999 0 TD (hild-directories)Tj -1378.9999 50 TD [(of)-13000(a)-13000(particular)-13000(directory)]TJ 431 0 TD [(.)-19000(The)-13000(TixDirT)]TJ 266 0 TD [(ree)-13000(widget,)-13000(on)-14000(the)-14000(other)-14000(hand,)-13000(can)-14000(displa)]TJ 743.9999 0 TD [(y)-12000(the)-14000(whole)]TJ -1440.9999 50 TD [(tree)-15000(structure)-16000(of)-13000(the)-15000(\014le)-14000(system.)]TJ 62 73.0001 TD [(The)-16000(programming)-13000(in)]TJ 380 0 TD [(terface)-16000(of)-15000(these)-17000(t)]TJ 308 0 TD (w)Tj 28.9999 0 TD [(o)-16000(widgets)-16000(are)-16000(the)-16000(same)-15000(and)-16000(y)]TJ 543 0 TD [(ou)-15000(can)-16000(c)]TJ 154 0 TD [(ho)-1000(ose)-16000(the)]TJ -1475.9999 49.9999 TD (whic)Tj 82 0 TD [(h)-16000(one)-15000(to)-16000(use)-16000(dep)-1000(ending)-17000(on)-15000(y)]TJ 524 0 TD [(our)-16000(application.)-22000(As)-16000(sho)]TJ 434 0 TD [(wn)-16000(in)-15000(the)-16000(follo)]TJ 269.9999 0 TD [(wing)-13000(example,)-14000(y)]TJ 296.0001 0 TD (ou)Tj -1606 50 TD [(can)-16000(use)-16000(the)]TJ /T12 1 Tf 225 0 TD (-directory)Tj /T15 1 Tf 232.9999 0 TD [(option)-15000(of)-15000(the)-17000(TixDirList)-14000(widget)-16000(to)-15000(sp)-1000(ecify)-16000(a)-16000(directory)-16000(to)-16000(displa)]TJ 1162.9998 0 TD (y)Tj 19 0 TD (.)Tj -1639.9998 50 TD [(In)-19000(the)-21000(example,)-19000(w)]TJ 345 0 TD [(e)-19000(set)]TJ /T12 1 Tf 107.9999 0 TD (-directory)Tj /T15 1 Tf 237.0001 0 TD [(to)-20000(b)-1000(e)]TJ /T12 1 Tf 119 0 TD (/home/ioi/dev)Tj /T15 1 Tf 285.9999 0 TD [(.)-32000(A)0(s)-20000(a)-19000(result,)-21000(the)-20000(TixDirList)]TJ -1094.9999 49 TD [(widget)-18000(displa)]TJ 243.9999 0 TD [(ys)-18000(all)-17000(the)-19000(sub)-1000(directories)-20000(and)-18000(all)-17000(the)-19000(ancestor)-19000(directories)-20000(of)]TJ /T12 1 Tf 1111 0 TD (/home/ioi/dev)Tj /T15 1 Tf 285.9998 0 TD (.)Tj -1640.9998 50 TD (Y)Tj 28 0 TD [(ou)-17000(can)-18000(use)-19000(the)]TJ /T12 1 Tf 292 0 TD (-command)Tj /T15 1 Tf 192 0 TD (and)Tj /T12 1 Tf 85 0 TD (-browsecmd)Tj /T15 1 Tf 236 0 TD [(options)-17000(to)-18000(handle)-17000(the)-19000(user)-19000(ev)]TJ 547.9999 0 TD (en)Tj 40 0 TD [(ts:)-27000(a)-17000(double)]TJ -1420.9999 50.0001 TD (clic)Tj 59 0 TD [(k)-15000(o)0(r)-15000(Return)-15000(k)]TJ 251.9999 0 TD (ey-strok)Tj 144.0001 0 TD [(e)-16000(will)-13000(trigger)-16000(the)]TJ /T12 1 Tf 320.9999 0 TD (-command)Tj /T15 1 Tf 190 0 TD [(option)-14000(and)-15000(a)-14000(single)-15000(clic)]TJ 423 0 TD [(k)-15000(o)0(r)-15000(space)-16000(bar)]TJ -1388.9999 50 TD (k)Tj 21 0 TD [(ey)-17000(strok)]TJ 147 0 TD [(e)-17000(will)-15000(trigger)-17000(the)]TJ /T12 1 Tf 328 0 TD (-browsecmd)Tj /T15 1 Tf 234 0 TD [(option.)-26000(Normally)]TJ 321.9999 0 TD 14 Tc (,y)Tj 47.0001 0 TD 0 Tc [(ou)-16000(w)]TJ 88.9999 0 TD [(ould)-16000(handle)-17000(b)-1000(oth)-16000(t)]TJ 347.0001 0 TD [(yp)-1000(e)-18000(o)0(f)]TJ -1535 49.9999 TD (ev)Tj 39 0 TD (en)Tj 40 0 TD [(ts)-15000(in)-13000(the)-15000(same)-13000(manner,)-12000(as)-14000(w)]TJ 512 0 TD 14 Tc [(eh)14000(a)]TJ 75 0 TD 0 Tc (v)Tj 21 0 TD [(e)-14000(done)-14000(in)-14000(program)-12000(5.3)]TJ ET endstream endobj 259 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T9 25 0 R /T10 20 0 R /T12 14 0 R /T14 16 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 261 0 obj << /Type /XObject /Subtype /Image /Name /Im35 /Width 232 /Height 223 /BitsPerComponent 8 /ColorSpace 168 0 R /Length 1697 /Filter /FlateDecode >> stream H‰ì—‹‚£ EiÓ:;óÿ¼U^‚Uä»kA´#§A’+ÄÝõh=ÓÚ™ñçÒ3¢Gô WÅgü˜œ““­¾s>( r”³È;œõ6Åêr9Ϭ::ãÇäÜù1âø6JßqHÑ{¯fYÎ  ':VáÌt-œ°ê)ÿË3ɤ5$ïHd½ÀI®ì$Y ÜG:¨™N‘ÏãœÔI2¯gœÑ¹-A–SÎÖŒUä´ówÖ§E|GÚ3®pºEa^Î'¡ÌÄ©JØçaÎØ_:+3øÄ/¢Ýœrqúc•9½ý•½„Éo³Tô ÃëÉ‚³†âœÔ.3 '9v?ÎG(jŒŽÎXs–žOk)@UÏ>^ƒJó©u;0§ó~~8ß}k…" Nѳ–S¼íàÈœK*çZ©c&{A§íœâ„Ÿ|.¾œË¢·Ù=NÐ2bÃôA™a:œ¸çnkÁ]ø:Ó?,˹,2Ÿˆïœú?V]p¾p÷gRn˜–S†StŸSÒ`Î0¤Œ9U!¤ú§â ÁÊe˩ùô$gá´œ¦²}ŸÝo{â´á\OåOÀ«–ë²5œÈª¼ÏÕCtþä&ɉÃùaLªãù2®Rœ®-–3“sñ4,'~=_YÖm¸+5ý!JqžtÎ0©žtN¿¥rêæôUu.„3TNù8qÑKzRM÷ÇI{Rp[p‡Ê)§2¥ZQOá,^4‹gÄ“îij¨Jqoè œN»Ëi÷»n;Ù‡¼ByR»Ù˜¼‚Ž>òŠ/~ž´ §ÆU“sr×M9w=iû­ÖOÚ+ç!OZM9ý–ö¤NÙPN9IOê–åÄ€·ÅT’3ð¤ƒrzíä¼gïûïI#œ½ç_m=i=N­ÑꡘnÇ p¤>µ%ç¿óê—sÝ•BjpUòS[¾ŸÑïG“d$I“ŸZ—ÓÍ+Ó§éqÝ:5ÈõiäaÊ®=Þ§©}Vο_óäuèñä'7äë²ýû B v'Ò|ýqzžôƒùkN<)Î^×íg¹ú˜Crþ…áÄûm¿ë·kQ-¨o|j<.U}N\Åе,x‡ú¦ ­Š#'n!l‹GU›S®Ðo^Ó¶>§YÌ'ËÂÞâ¹õÛN#®œÄzuÌ N§=´yûQû—C"^ÓKÛí½Ÿ¼óÊ6AÜ/â5)µ®ûjirNÎkº)gdÊýk´æŒùϾ9ûÏÎ9ý6æ?…®Õ…@uÐq¬o£õÞqäT¤ïLWÿ Èb&Ø“@Üãé÷S59ÙøÏsF3"¦þç•9WMÿYR“sr^ÓM9Ãh÷‡Hý•Zsþ'Ù«ÎCþsN¿¥òçVæÛkúÜÖ)âXß"ß øÜÔ âÈ©>œ›¯úPÎþStÌy—xÞ‡Óiqv¸ñŸ&n ¬Ã¼²ê´ÿÌR·®ûJ|ÒädÙE““ƒÿÌ÷›´æÜñŸÁ½WÄÐÑW·TUÿiVsxJ>5R¹¾Å4✛ÕñNéžE’sñÔÚ–â/¤÷»¹/+ƹ`Îöþ³§Àálï?ËíC 'ÿY.¯ p2óŸYd8αëxα9—îŽË)L8ç\p¯­ÿÌšR6áúV‡³½ÿ,˹ØNKÿ è3›¿ò.Îé·ÿ ªäÏðH%—Óœ¾©éK‡}Ù˜º+g¾7…›ÎÖ“)(ÌIé½ÂUñOÎÉÉWûœ˜âW¸jgÆýÁ¤éÿÀ×T endstream endobj 262 0 obj << /Type /XObject /Subtype /Image /Name /Im33 /Width 223 /Height 242 /BitsPerComponent 8 /ColorSpace 168 0 R /Length 1699 /Filter /FlateDecode >> stream H‰ì—–«* …µL™3÷ýøZH (Z~dÏjÔ®|&ÙÓôPÍ­HÕA Ë¥WDsô 3Å{=o¦4‘³ EŠðêå¹ZÂxWÖ¼¡R^ÞȲ¨1žRÛ‡=“ªh Þk×Ïž#¢:„‡ÎRñ”ýY~xZo0ÓE¼_'Öx?Þi:^°€\èžÖ†æ2^¸€ ñ@¶¸·s±ÃÓÚá\Äc¼x†ÜžÖçZapÜö¦ÅC1_÷¸hÃÓ¨·–Zc?Ô5ÙžöÔÞ ú^˜[Ú§š|x„íë²}ýà‘åOMû`ŸüŒ§ MIÁ£lŸ >àƒGÛ>… OÉÁ‹´Ö¼:M\<ØZ¬^yåÃ#Þ¾§à¹”â6§¬ÔBØ>—?laY…§íËØsrÔÀxl•ïÐöÕÎ:ÙñŽmŸt<Êö5Tf¼ˆíC…½¦rã‘¶·e5U²}¨¹GÚ¾.ñœqèöE½ãu’Zb¶¯“ÂÀÌö–zàa)uéSrY½—$ï“[(ùxõ·ˆb § Ò•Â[é(¾ð¦¨ü9´å\¹}«v\i›sÁûïÏþ)Gç}„â-k´p hq¼cAºRx ÝŸ“‡§ÜîT2ß½eOútxÕÀ¹´Íùy÷ÂÅëïóîQx^j1ßéJáÁ­ R'* Rñbu/"i›³ó–ºwCÄGï+¼On©€Sa<õ»(䫆\o¥ ùʦ¨¢x¨üé©6Þ)Þ¯SKæUÓ–Ú§Œ($©¼zûî܇è,L>IýÕ›ž†—Ï$ÍSKVTÅs%ÁeõxÉð{£¥æ¨7ðâz¬ß;{ PîUvîôWÚù½³GcåÕËC5ô{ëé¡­òðˆ×c°Á;kÊúŸHžùR†õœ¤½õ–ßÎÑ5ô{Þ*x6ж¡"ü±]½0L"Œ\±9‰±Äïnj±“¬ñÒ ƒ±ƒèˆÇ!µ$ø½²-[ó–zà}¡æxe5ð ù½=s–U;¿ç×¶"jê÷„ãEýÞ¶t)uùK5mÊj­žöToÿªùßÝáiswx`ùÞ=âiro©erË÷.ç CM< ".ï÷ʃmruÏ-^oÞt”ÙœUäðôwjñ6¬ýïC¼ËÎ/еØÅóñV‰7Dåx÷Ú öœfñêø=úvïø­ žv'¹ðü}¿wüVÈ1¼sãø=â[qa<8™„ç[ v"£LÅë@O²žd <Éx’5ð$ëax™{úöBx­ƒÉ/ˆGiŽ^a¦x ¿7Ç¿ÂLŠa¸§ÿr—AO endstream endobj 264 0 obj << /Length 1527 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (52)Tj /T9 1 Tf 569 0 TD [(CHAPTER)-14000(5.)-31000(SELECTING)-14000(FILES)-15000(AND)-13000(DIRECTORIES)]TJ ET q 396 0 0 -0.96 125.976 664.476 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 654.66 Tm [(Program)-15000(5.3)]TJ /T15 1 Tf 273 0 TD [(Using)-14000(the)-15000(TixDirList)-12000(widget)]TJ ET q 396 0 0 -0.48 125.976 650.796 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 150.96 641.46 Tm [(tixDirList)-20000(.d)-21000(-value)-20000(/home/ioi/dev)-20000(\\)]TJ 86.9999 50 TD [(-command)-20000("selectDir")-20000(-browsecmd)-19000("selectDir")]TJ -86.9999 50 TD [(pack)-21000(.d)]TJ 0 98.9998 TD [(proc)-21000(selectDir)-20000({dir})-20000({)]TJ 86.9999 50 TD [(puts)-21000("now)-21000(you)-21000(select)-21000($dir")]TJ -86.9999 50 TD 0 Tw (})Tj ET q 396 0 0 -0.48 125.976 556.956 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q q 174.024 0 0 167.256 150.24 249.34 cm /Im35 Do Q BT /T6 1 Tf 0.24 0 0 -0.24 216.24 227.46 Tm [(\(a\))-11000(DirT)]TJ 130 0 TD (ree)Tj ET q 167.256 0 0 181.512 327.6 249.22 cm /Im33 Do Q BT 0.24 0 0 -0.24 390.72 227.46 Tm [(\(b\))-11000(DirList)]TJ /T15 1 Tf -691 125 TD [(Figure)-14000(5.3:)-17000(The)-15000(DirT)]TJ 387 0 TD [(ree)-14000(and)-13000(DirList)-14000(Widgets)]TJ ET endstream endobj 265 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /T6 72 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T15 6 0 R >> /XObject << /Im33 262 0 R /Im35 261 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS16 168 0 R >> >> endobj 267 0 obj << /Length 5923 >> stream BT /T16 1 Tf 0.24 0 0 -0.24 126 627.54 Tm 0 g /GS1 gs 0 Tc [(Chapter)-31000(6)]TJ /T11 1 Tf 0 231 TD (Tix)Tj 213 0 TD [(Ob)-6000(ject)]TJ 381.9999 0 TD (Orien)Tj 281 0 TD (ted)Tj -875.9999 124 TD (Programming)Tj /T13 1 Tf 0 239.9999 TD [(This)-15000(chapter)-15000(is)-14000(intende)]TJ 418 0 TD [(d)-16000(for)-15000(exp)]TJ 160.9999 0 TD (erienc)Tj 109 0 TD 0 Tw (e)Tj 17.0001 0 TD 15 Tc [(dp)15000(r)]TJ 73 0 TD 0 Tc (o)Tj 19 0 TD (gr)Tj 34.9999 0 TD [(ammers)-14000(who)-15000(want)-15000(to)-15000(cr)]TJ 428 0 TD (e)Tj 17 0 TD [(ate)-14000(new)-15000(Tix)-15000(widgets.)]TJ -1276.9999 50 TD [(If)-15000(you)-15000(just)-15000(want)-14000(use)-16000(the)-15000(Tix)-14000(widgets)-15000(in)-14000(your)-15000(applic)]TJ 918 0 TD [(ations,)-15000(you)-16000(c)]TJ 232.9999 0 TD [(an)-15000(skip)-15000(this)-15000(chapter.)]TJ /T14 1 Tf -1150.9999 272.9999 TD (6.1)Tj 153 0 TD (In)Tj 60 0 TD [(tro)-2000(duction)-24000(to)-21000(Tix)-23000(Ob)-4000(ject)-20000(Orien)]TJ 918 0 TD [(ted)-22000(Programming)]TJ /T15 1 Tf -1131 138 TD [(Tix)-10000(comes)-10000(with)-11000(a)-10000(simple)-9000(ob)-2000(ject)-12000(orien)]TJ 653.9999 0 TD [(ted)-11000(programming)-7000(\(OOP\))-12000(framew)]TJ 590 0 TD [(ork,)-9000(the)]TJ /T13 1 Tf 148.0001 0 TD [(Tix)-12000(Intrinsics)]TJ /T15 1 Tf 246.9998 0 TD (,)Tj -1638.9998 49.0001 TD [(for)-15000(writing)-15000(mega-widgets.)-21000(The)-16000(Tix)-14000(In)]TJ 690.9999 0 TD [(trinsics)-16000(is)-15000(not)-16000(a)-15000(general)-15000(purp)-1000(ose)-17000(OOP)-16000(system)-15000(and)-15000(it)]TJ -690.9999 50 TD [(do)-1000(es)-12000(not)-12000(supp)-1000(ort)-12000(some)-11000(features)-13000(found)-11000(in)-11000(general)-12000(purp)-1000(ose)-12000(OOP)-13000(systems)-12000(suc)]TJ 1337 0 TD 12 Tc [(ha)12000(s)]TJ /T12 1 Tf 83.9999 0 TD 0 Tc [([incr)-20000(Tcl])]TJ /T15 1 Tf 217.9999 0 TD (.)Tj -1638.9998 50 TD (Ho)Tj 51 0 TD (w)Tj 28.9999 0 TD (ev)Tj 39 0 TD [(er,)-18000(the)-19000(Tix)-16000(In)]TJ 257.0001 0 TD [(trinsics)-19000(is)-17000(sp)-1000(ecially)-17000(designed)-18000(for)-18000(writing)-16000(mega-widgets.)-28000(It)-18000(pro)]TJ 1144.9999 0 TD [(vides)-17000(a)]TJ -1520.9999 50 TD [(simple)-10000(and)-10000(e\016cien)]TJ 327 0 TD 12 Tc [(ti)12000(n)]TJ 61.9999 0 TD 0 Tc [(terface)-12000(for)-10000(creating)-12000(mega-widgets)-9000(so)-12000(that)-11000(y)]TJ 760.9999 0 TD [(ou)-10000(can)-11000(a)]TJ 147 0 TD (v)Tj 21.0001 0 TD [(oid)-10000(the)-12000(complexit)]TJ 312 0 TD (y)Tj -1630 50 TD [(and)-14000(o)]TJ 101 0 TD (v)Tj 21 0 TD [(erheads)-14000(of)-14000(the)-14000(general)-14000(purp)-1000(ose)-15000(OOP)-15000(extensions)-15000(to)-14000(Tcl.)]TJ -60 72.9999 TD [(The)-11000(hard)-10000(thing)-9000(ab)-1000(out)-10000(programming)-6000(with)-10000(mega-widgets)-9000(is)-9000(to)-10000(mak)]TJ 1153.9999 0 TD [(e)-9000(sure)-11000(that)-10000(eac)]TJ 253 0 TD [(h)-10000(instance)]TJ -1468.9999 50 TD (y)Tj 21 0 TD [(ou)-19000(create)-21000(can)-20000(handle)-20000(its)-20000(o)]TJ 497 0 TD [(wn)-19000(activities.)]TJ 282.9999 0 TD (Ev)Tj 49.0001 0 TD (en)Tj 40 0 TD [(ts)-20000(m)]TJ 87 0 TD [(ust)-19000(b)-1000(e)-20000(directed)-21000(to)-20000(the)-20000(righ)]TJ 505.9999 0 TD [(t)-20000(widget,)]TJ -1482.9999 50 TD [(pro)-1000(cedures)-19000(m)]TJ 246.9999 0 TD [(ust)-16000(act)-17000(on)-17000(data)-16000(that)-17000(is)-17000(in)]TJ 472.9999 0 TD [(ternal)-16000(to)-17000(that)-17000(widget,)-17000(and)-16000(users)-18000(should)-17000(b)-1000(e)-18000(able)-16000(to)]TJ -719.9999 50 TD (c)Tj 17 0 TD [(hange)-17000(the)-17000(options)-16000(asso)-1000(ciated)-18000(with)-16000(the)-17000(widget.)-26000(F)]TJ 898.9999 0 TD [(or)-17000(instance,)-17000(w)]TJ 259 0 TD [(e'll)-16000(sho)]TJ 129 0 TD [(w)-16000(a)0(n)-17000(arro)]TJ 180 0 TD [(w)-16000(widget)]TJ -1483.9999 49 TD [(that)-13000(needs)-14000(to)-13000(kno)]TJ 315.9999 0 TD [(w)-12000(what)-13000(direction)-13000(it's)-12000(p)-1000(oin)]TJ 464.0001 0 TD [(ting;)-12000(this)-13000(requires)-14000(eac)]TJ 386.9999 0 TD [(h)-13000(instance)-14000(of)-12000(the)-13000(widget)-13000(to)]TJ -1166.9999 50.0001 TD (ha)Tj 43 0 TD (v)Tj 21 0 TD [(e)-14000(its)-14000(o)]TJ 110 0 TD [(wn)-13000(v)]TJ 85.9999 0 TD (ariable.)Tj -197.9999 73.9999 TD (F)Tj 24 0 TD [(urthermore,)-13000(eac)]TJ 284 0 TD [(h)-14000(widget)-13000(should)-13000(resp)-1000(ond)-14000(prop)-1000(erly)-13000(to)-13000(c)]TJ 687.9999 0 TD [(hanges)-14000(requested)-15000(b)]TJ 343 0 TD [(y)-13000(the)-14000(applica-)]TJ -1400.9999 49 TD [(tion)-11000(programmer)-10000(during)-12000(the)-13000(program's)-10000(run.)-18000(The)-12000(whole)-12000(reason)-12000(p)-1000(eople)-13000(use)-13000(Tcl/Tk)-11000(is)-12000(b)-1000(ecause)]TJ 0 50 TD [(they)-14000(can)-15000(alter)-13000(things)-14000(on)-14000(the)-14000(\015y)]TJ 562 0 TD (.)Tj -500 74.0001 TD [(The)-11000(adv)]TJ 145.9999 0 TD (an)Tj 43.0001 0 TD [(tage)-10000(of)-10000(an)-10000(ob)-2000(ject-orien)]TJ 398 0 TD [(ted)-12000(programming)-7000(system)-10000(is)-11000(that)-10000(y)]TJ 601.9999 0 TD [(ou)-10000(can)-11000(easily)-10000(asso)-1000(ciate)]TJ -1250.9999 50 TD [(a)-13000(widget)-14000(with)-13000(its)-14000(o)]TJ 340 0 TD [(wn)-13000(data)-14000(and)-13000(pro)-1000(cedures)-16000(\(metho)-1000(ds\).)-18000(This)-13000(c)]TJ 777 0 TD [(hapter)-15000(sho)]TJ 190.9999 0 TD [(ws)-14000(ho)]TJ 103.0001 0 TD [(w)-13000(t)0(o)-14000(d)0(o)-13000(that,)]TJ -1411 48.9999 TD [(and)-16000(ho)]TJ 126 0 TD [(w)-16000(t)0(o)-16000(con\014gure)-18000(data)-16000(b)-1000(oth)-16000(at)-16000(the)-17000(time)-15000(the)-17000(widget)-17000(is)-16000(initialized)-15000(and)-16000(later)-16000(during)-16000(the)]TJ -126 50 TD (program.)Tj 803.9999 105 TD (53)Tj ET endstream endobj 268 0 obj << /ProcSet [/PDF /Text ] /Font << /T11 21 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R /T16 7 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 269 0 obj << /Type /XObject /Subtype /Image /Name /Im34 /Width 196 /Height 80 /BitsPerComponent 8 /ColorSpace 270 0 R /Length 497 /Filter /FlateDecode >> stream H‰ì—‹v„ DÁ´þÿ'wÏ¢¼Lh²‚4sö £ÌƒêÜÊòÚ 5Ò¼º6BžìÑÆÃ@ýÉ¡­ZBÓ ã˜[U2Hf¯·¸i¼1tÕÒ U)<“!û¿ÃEðÒû+½Ž¶ü}Úz2 ga‹±!~n‰¦ba3œ—ærÄC¾¡ ,%†d¤ó¦ óya(oDØ åq.¦áͰAœa=¸ã–ˆÏ@í‰@2³yŸ¡nëÊ€JÕ/AE(¬­Ô3.£9 ·¨×¾Æaû0´múIOïY”›æ Ô3Q?ÙÏgүʕõ` J2†9d sÈæ1̡վ1Q;R4KvÉHƒÌm†ËþöÆHjf …™7sÈñXs:8ÒÖ,¶F1d<¦F1äL–F1Í‘@b®Ý“Ô4Hb‰Ì: ¿šeóÐÜsµµG=´Ê²Ï,ªéÆòØ…k­KÅàƒî`à›ïZ[Cvtƒ –ÌLݶٗ¿oKd^Ÿa¿ŠIÍÜd@¶¥GÒ3·ž"c˜CÆ0‡ŒaÃ2†9´"ƒ{¤ í0*gÀäÉ ÑiŒa¤Ögð”è 5ÒÌô3ý0é´­Q endstream endobj 272 0 obj << /Length 7465 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (54)Tj /T9 1 Tf 506.9999 0 TD [(CHAPTER)-14000(6.)-32000(TIX)-14000(OBJECT)-15000(ORIENTED)-14000(PR)]TJ 862 0 TD (OGRAMMING)Tj ET q 147.024 0 0 59.976 250.56 658.02 cm /Im34 Do Q BT /T15 1 Tf 0.24 0 0 -0.24 265.68 636.18 Tm [(Figure)-14000(6.1:)-17000(Arro)]TJ 297 0 TD [(w)-14000(Buttons)]TJ /T8 1 Tf -878.9999 136 TD (6.1.1)Tj 171 0 TD [(Widget)-18000(Classes)-19000(and)-19000(Widget)-18000(Instances)]TJ /T15 1 Tf -171 101 TD [(All)-10000(the)-12000(mega-widget)-10000(classes)-12000(in)-11000(Tix,)-11000(suc)]TJ 691.9999 0 TD [(h)-12000(a)0(s)-11000(TixCom)]TJ 233.0001 0 TD [(b)-1000(oBo)]TJ 93.9999 0 TD [(x)-9000(and)-11000(TixCon)]TJ 246.0001 0 TD [(trol,)-10000(are)-11000(implemen)]TJ 329.9998 0 TD (ted)Tj -1594.9998 50 TD [(in)-12000(the)-13000(Tix)-11000(In)]TJ 228.9999 0 TD [(trinsics)-13000(framew)]TJ 275.0001 0 TD [(ork.)-16000(Also,)-12000(y)]TJ 211.9999 0 TD [(ou)-11000(can)-13000(write)-12000(new)]TJ /T13 1 Tf 318.0001 0 TD [(widget)-13000(classes)]TJ /T15 1 Tf 259.9999 0 TD [(with)-12000(the)-13000(Tix)-11000(In)]TJ 275.0001 0 TD (trin-)Tj -1569 50 TD [(sics.)-19000(In)-14000(the)-14000(next)-15000(section,)-14000(I'll)-12000(go)-14000(through)-14000(all)-12000(the)-15000(steps)-15000(of)-13000(creating)-15000(a)-13000(new)-14000(widget)-14000(class)-15000(in)-13000(Tix.)]TJ T* [(I'll)-10000(illustrate)-11000(the)-12000(idea)-12000(using)-11000(a)-11000(new)-12000(class)-12000(\\TixArro)]TJ 872.9999 0 TD [(wButton")-11000(as)-12000(an)-11000(example.)-16000(TixArro)]TJ 619.0001 0 TD (wButton)Tj -1492 50 TD [(is)-13000(essen)]TJ 131 0 TD [(tially)-12000(a)-13000(button)-13000(that)-13000(can)-13000(displa)]TJ 546 0 TD [(y)-12000(a)0(n)-12000(arro)]TJ 163 0 TD [(w)-13000(i)0(n)-12000(one)-13000(of)-12000(the)-14000(for)-12000(directions)-14000(\(see)-14000(\014gure)-13000(6.1\).)]TJ -778 73 TD [(Once)-14000(y)]TJ 126 0 TD [(ou)-12000(ha)]TJ 99 0 TD 0 Tw (v)Tj 21 0 TD [(e)-12000(de\014ned)-13000(y)]TJ 192 0 TD [(our)-13000(classes,)-13000(y)]TJ 236 0 TD [(ou)-12000(can)-12000(create)]TJ /T13 1 Tf 251 0 TD [(widget)-13000(instanc)]TJ 254.9999 0 TD (es)Tj /T15 1 Tf 49 0 TD [(of)-12000(these)-14000(classes.)-18000(F)]TJ 322.0001 0 TD (or)Tj -1613 49.9998 TD [(example,)-12000(the)-15000(follo)]TJ 324 0 TD [(wing)-11000(co)-1000(de)-15000(will)-12000(create)-15000(four)-14000(instances)-15000(of)-13000(y)]TJ 726 0 TD [(our)-14000(new)-14000(TixArro)]TJ 305.9999 0 TD [(wButton)-14000(class:)]TJ /T12 1 Tf -1251.9999 119.0001 TD [(tixArrowButton)-19000(.up)]TJ 479 0 TD [(-direction)-20000(n)]TJ -479 50 TD [(tixArrowButton)-19000(.left)]TJ 479 0 TD [(-direction)-20000(e)]TJ -479 50 TD [(tixArrowButton)-19000(.right)-20000(-direction)-20000(w)]TJ 0 49 TD [(tixArrowButton)-19000(.down)]TJ 479 0 TD [(-direction)-20000(s)]TJ /T8 1 Tf -583 146 TD (6.1.2)Tj 171 0 TD [(What)-19000(is)-18000(in)-19000(a)-19000(Widget)-17000(Instance)]TJ /T15 1 Tf -171 101.9999 TD (Eac)Tj 65.9999 0 TD [(h)-11000(widget)-10000(instance)-11000(is)-11000(comp)-1000(osed)-10000(of)-10000(three)-12000(in)]TJ 728.9999 0 TD [(tegral)-9000(parts:)-17000(v)]TJ 254.0001 0 TD [(ariables,)-10000(metho)-1000(ds)-10000(and)-11000(comp)-1000(onen)]TJ 586 0 TD (t)Tj -1635 49.0001 TD (widgets)Tj /T10 1 Tf 0 138 TD (V)Tj 32 0 TD (ariables)Tj /T15 1 Tf -32 100.9999 TD (Eac)Tj 65.9999 0 TD [(h)-14000(widget)-13000(instance)-15000(is)-13000(asso)-1000(ciated)-15000(with)-13000(a)-14000(set)-14000(of)-13000(v)]TJ 831.0001 0 TD [(ariables.)-17000(In)-14000(the)-14000(example)-13000(of)-13000(an)-13000(instance)-15000(of)]TJ -897 50 TD [(the)-14000(TixArro)]TJ 218 0 TD [(wButton)-14000(class,)-14000(w)]TJ 310 0 TD 14 Tc [(em)14000(a)]TJ 88 0 TD 0 Tc [(y)-11000(use)-15000(a)-13000(v)]TJ 159 0 TD [(ariable)-13000(to)-13000(store)-15000(the)-14000(direction)-14000(to)-13000(whic)]TJ 663.9999 0 TD [(h)-14000(the)-14000(arro)]TJ 180.9999 0 TD (w)Tj -1619.9998 50 TD [(is)-15000(p)-1000(oin)]TJ 122 0 TD [(ting)-15000(to.)-22000(W)]TJ 198 0 TD 15 Tc [(em)15000(a)]TJ 89 0 TD 0 Tc [(y)-14000(also)-15000(use)-16000(a)-15000(v)]TJ 250 0 TD [(ariable)-15000(to)-15000(coun)]TJ 273.9999 0 TD 16 Tc [(th)16000(o)]TJ 75 0 TD 0 Tc [(w)-15000(man)]TJ 124 0 TD [(y)-13000(times)-15000(the)-16000(user)-16000(has)-16000(pressed)]TJ -1131.9999 50 TD [(the)-14000(button.)]TJ 62 73 TD (Eac)Tj 66 0 TD 16 Tc (hv)Tj 59 0 TD 0 Tc [(ariable)-14000(can)-15000(b)-1000(e)-16000(public)-14000(or)-16000(priv)]TJ 521 0 TD [(ate.)-21000(Public)-15000(v)]TJ 238.9999 0 TD [(ariables)-14000(ma)]TJ 209.0001 0 TD [(y)-13000(b)-1000(e)-16000(accessed)-18000(b)]TJ 281 0 TD [(y)-15000(the)-15000(appli-)]TJ -1437 50 TD [(cation)-13000(programmer)-12000(\(usually)-13000(via)]TJ /T12 1 Tf 586 0 TD (configure)Tj /T15 1 Tf 208.9999 0 TD [(or)-14000(cget)]TJ /T12 1 Tf 139.0001 0 TD (methods)Tj /T15 1 Tf 153.9999 0 TD [(\))-12000(and)-13000(their)-15000(names)-12000(usually)-13000(start)]TJ -1087.9999 50 TD [(with)-15000(a)-15000(dash)-15000(\()]TJ /T12 1 Tf 246 0 TD (-)Tj /T15 1 Tf 22 0 TD [(\).)-22000(They)-16000(usually)-14000(are)-16000(used)-16000(to)-15000(represen)]TJ 668 0 TD [(t)-17000(some)-15000(user-con\014gurable)-16000(options)-15000(of)-14000(the)]TJ -936 50 TD [(widget)-11000(instance.)-18000(Priv)]TJ 384 0 TD [(ate)-12000(v)]TJ 87 0 TD [(ariables,)-10000(on)-11000(the)-12000(other)-13000(hand,)-11000(cannot)-11000(b)-1000(e)-12000(accessed)-14000(b)]TJ 875.9999 0 TD [(y)-11000(the)-12000(application)]TJ -1346.9999 49 TD [(programmer.)-15000(They)-12000(are)-13000(usually)-11000(used)-13000(to)-12000(store)-12000(information)-10000(ab)-1000(out)-11000(the)-13000(widget)-12000(instance)-13000(that)-12000(are)]TJ 0 50 TD [(of)-13000(in)]TJ 81 0 TD [(terests)-16000(only)-13000(to)-14000(the)-14000(widget)-14000(writer.)]TJ -19 74.0001 TD [(All)-14000(the)-15000(v)]TJ 161 0 TD [(ariables)-14000(of)-15000(an)-14000(instance)-16000(are)-15000(stored)-15000(in)-15000(a)-14000(global)-13000(arra)]TJ 898.9999 0 TD [(y)-15000(that)-14000(has)-15000(the)-16000(same)-13000(name)-14000(as)]TJ -1121.9999 50 TD [(the)-16000(instance.)-21000(F)]TJ 277 0 TD [(or)-15000(example,)-13000(the)-16000(v)]TJ 320 0 TD [(ariables)-14000(of)-14000(the)-16000(instance)]TJ /T12 1 Tf 437 0 TD (.up)Tj /T15 1 Tf 79.9999 0 TD [(are)-15000(stored)-16000(in)-14000(the)-16000(global)-13000(arra)]TJ 513.9999 0 TD (y)Tj /T12 1 Tf -1627.9998 48.9999 TD (.up:)Tj /T15 1 Tf 88 0 TD [(.)-23000(The)-17000(public)-15000(v)]TJ 268.9999 0 TD (ariable)Tj /T12 1 Tf 138.0001 0 TD (-direction)Tj /T15 1 Tf 220 0 TD [(,)-14000(whic)]TJ 107.9999 0 TD [(h)-16000(records)-17000(the)-17000(direction)-16000(to)-16000(whic)]TJ 568 0 TD [(h)-16000(the)-16000(arro)]TJ 185.0001 0 TD 16 Tc [(wi)16000(s)]TJ -1576 50 TD 0 Tc [(p)-1000(oin)]TJ 79 0 TD [(ting)-14000(to,)-14000(is)-15000(stored)-16000(in)]TJ /T12 1 Tf 367.9999 0 TD (.up\(-direction\))Tj /T15 1 Tf 328.9999 0 TD [(.)-18000(The)-16000(priv)]TJ 188 0 TD [(ate)-15000(v)]TJ 90 0 TD (ariable)Tj /T12 1 Tf 136.0001 0 TD (count)Tj /T15 1 Tf 109.9999 0 TD [(,)-14000(whic)]TJ 108 0 TD [(h)-15000(coun)]TJ 122.0001 0 TD [(ts)-15000(ho)]TJ 89.9998 0 TD (w)Tj ET endstream endobj 273 0 obj << /ProcSet [/PDF /Text /ImageC /ImageI] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /XObject << /Im34 269 0 R >> /ExtGState << /GS1 8 0 R >> /ColorSpace << /CS26 270 0 R >> >> endobj 270 0 obj [/Indexed /DeviceRGB 7 274 0 R] endobj 274 0 obj << /Filter /ASCII85Decode /Length 34 >> stream lg*kVEH/n6_Z0Z:e'leGs8RLqI/j6I~> endstream endobj 276 0 obj << /Length 8255 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(6.2.)-26000(WIDGET)-13000(CLASS)-14000(DECLARA)]TJ 638.9999 0 TD (TION)Tj /T15 1 Tf 968.9999 0 TD (55)Tj -1607.9998 117 TD (man)Tj 79 0 TD [(y)-13000(times)-15000(the)-16000(user)-16000(has)-16000(pressed)-17000(the)-16000(button,)-15000(is)-16000(stored)-16000(in)]TJ /T12 1 Tf 974.9999 0 TD (.up\(count\))Tj /T15 1 Tf 220.0001 0 TD [(.)-20000(I)0(n)-16000(comparison,)-13000(the)]TJ -1274 49.0002 TD [(same)-12000(v)]TJ 123 0 TD [(ariables)-12000(of)-13000(the)]TJ /T12 1 Tf 267.9999 0 TD (.down)Tj /T15 1 Tf 122.0001 0 TD [(instance)-14000(are)-13000(stored)-14000(in)]TJ /T12 1 Tf 400.9999 0 TD (.down\(-direction)Tj 351.0001 0 TD 0 Tw (\))Tj /T15 1 Tf 31.9999 0 TD (and)Tj /T12 1 Tf 80 0 TD (.down\(count\))Tj /T15 1 Tf 263.9999 0 TD (.)Tj /T10 1 Tf -1640.9998 131 TD [(Metho)-1000(ds)]TJ /T15 1 Tf 0 100 TD (T)Tj 27 0 TD [(o)-12000(carry)-12000(out)-13000(op)-1000(erations)-12000(on)-12000(the)-13000(widget,)-12000(y)]TJ 701.9999 0 TD [(ou)-12000(de\014ne)-14000(a)-12000(set)-13000(of)-12000(pro)-1000(cedures)-14000(called)]TJ /T13 1 Tf 640 0 TD (metho)Tj 107 0 TD (ds)Tj /T15 1 Tf 50.9999 0 TD [(\(to)-12000(use)]TJ -1526.9998 50 TD [(common)-13000(ob)-2000(ject-orien)]TJ 381.9999 0 TD [(ted)-16000(terminology\).)-21000(Eac)]TJ 405.9999 0 TD [(h)-16000(metho)-1000(d)-15000(can)-16000(b)-1000(e)-16000(declared)-16000(as)-16000(public)-15000(or)-16000(priv)]TJ 795.9999 0 TD (ate.)Tj /T13 1 Tf -1583.9998 50 TD [(Public)-13000(metho)]TJ 231.9999 0 TD (ds)Tj /T15 1 Tf 49.0001 0 TD [(can)-12000(b)-1000(e)-12000(called)-11000(b)]TJ 265 0 TD [(y)-11000(the)-12000(application)-10000(programmer.)-15000(F)]TJ 588.9999 0 TD [(or)-11000(example,)-10000(if)-11000(the)-12000(TixArro)]TJ 472.0001 0 TD (w-)Tj -1607 50 TD [(Button)-13000(class)-13000(supp)-1000(orts)-14000(the)-14000(public)-12000(metho)-1000(ds)]TJ /T12 1 Tf 765.9999 0 TD (invoke)Tj /T15 1 Tf 144 0 TD (and)Tj /T12 1 Tf 79 0 TD (invert)Tj /T15 1 Tf 132.0001 0 TD [(,)-12000(the)-13000(application)-11000(programmer)]TJ -1121 49 TD [(can)-14000(issue)-15000(the)-14000(commands)-12000(to)-13000(call)-14000(these)-15000(metho)-1000(d)-13000(for)-13000(the)-15000(widget)-14000(instance)]TJ /T12 1 Tf 1266.9999 0 TD (.up)Tj /T15 1 Tf 66 0 TD (.)Tj /T12 1 Tf -1228.9999 108.9998 TD [(.up)-21000(invert)]TJ 0 50 TD [(.up)-21000(invoke)]TJ /T15 1 Tf -104 108 TD [(In)-13000(con)]TJ 112 0 TD (trast,)Tj /T13 1 Tf 111 0 TD [(Private)-13000(metho)]TJ 251.9999 0 TD (ds)Tj /T15 1 Tf 52.0001 0 TD [(are)-13000(of)-13000(in)]TJ 148.9999 0 TD [(terests)-15000(only)-12000(to)-13000(widget)-13000(writers)-14000(and)-13000(cannot)-14000(b)-1000(e)-13000(called)-13000(b)]TJ 951.9999 0 TD (y)Tj -1627.9998 50 TD [(application)-12000(programmers.)]TJ /T10 1 Tf 0 131.0001 TD [(Comp)-1000(onen)]TJ 225 0 TD [(t)-14000(Widgets)]TJ /T15 1 Tf -225 100 TD [(A)-17000(Tix)-16000(mega-widget)-15000(is)-17000(comp)-1000(osed)-16000(of)-16000(one)-17000(or)-17000(more)-16000(comp)-1000(onen)]TJ 1084 0 TD [(t)-16000(widgets.)-27000(The)-17000(main)-15000(part)-17000(of)-16000(a)]TJ -1084 50 TD [(mega-widget)-12000(is)-13000(called)-13000(the)]TJ /T13 1 Tf 471 0 TD (r)Tj 16 0 TD (o)Tj 19 0 TD [(ot)-13000(widget)]TJ /T15 1 Tf 162 0 TD [(,)-13000(whic)]TJ 107 0 TD [(h)-13000(i)0(s)-13000(usually)-13000(a)-13000(frame)-12000(widget)-13000(that)-13000(encompasses)-14000(all)]TJ -775 48.9999 TD [(other)-15000(comp)-1000(onen)]TJ 292 0 TD [(t)-13000(widgets.)-18000(The)-14000(other)-15000(comp)-1000(onen)]TJ 571.9999 0 TD [(t)-13000(widgets)-14000(are)-14000(called)]TJ /T13 1 Tf 366.0001 0 TD (subwidgets)Tj /T15 1 Tf 188.9999 0 TD (.)Tj -1356.9999 74 TD [(The)-12000(ro)-1000(ot)-12000(widget)-11000(has)-12000(the)-12000(same)-10000(name)-11000(as)-11000(the)-12000(the)-12000(mega-widget)-10000(itself.)-17000(In)-11000(the)-13000(ab)-1000(o)]TJ 1377.9999 0 TD (v)Tj 21.0001 0 TD [(e)-11000(example,)]TJ -1461 50 TD (w)Tj 29 0 TD 14 Tc [(eh)14000(a)]TJ 75 0 TD 0 Tc (v)Tj 21 0 TD [(e)-13000(a)-13000(mega-widget)-11000(called)]TJ /T12 1 Tf 422.9999 0 TD (.up)Tj /T15 1 Tf 66 0 TD [(.)-17000(I)0(t)-14000(has)-13000(a)-13000(r)0(o)-1000(o)0(t)-14000(widget)-13000(whic)]TJ 485.0001 0 TD [(h)-13000(i)0(s)-13000(a)-13000(frame)-12000(widget)-13000(and)-13000(is)-14000(also)]TJ -1099 49.0001 TD (called)Tj /T12 1 Tf 118 0 TD (.up)Tj /T15 1 Tf 66 0 TD [(.)-17000(Inside)]TJ /T12 1 Tf 150 0 TD (.up)Tj /T15 1 Tf 78.9999 0 TD (w)Tj 29.0001 0 TD 15 Tc [(eh)15000(a)]TJ 76 0 TD 0 Tc (v)Tj 21 0 TD [(e)-13000(a)-14000(button)-14000(sub)]TJ 263 0 TD [(widget)-14000(called)]TJ /T12 1 Tf 251.9999 0 TD (.up.button)Tj /T15 1 Tf 220.0001 0 TD (.)Tj -1212 74 TD [(Similar)-11000(to)-14000(v)]TJ 214 0 TD [(ariables)-13000(and)-13000(metho)-1000(ds,)-13000(comp)-1000(onen)]TJ 593.9999 0 TD [(t)-13000(widgets)-14000(are)-14000(also)-13000(classi\014ed)-15000(in)]TJ 539.0001 0 TD [(to)-13000(public)-13000(and)]TJ -1409 50 TD (priv)Tj 71 0 TD [(ate)-16000(comp)-1000(onen)]TJ 253.9999 0 TD [(t)-15000(widgets.)-24000(Only)-15000(public)-15000(widgets)-16000(ma)]TJ 640.9999 0 TD [(y)-14000(b)-1000(e)-17000(accessed)-18000(b)]TJ 283.0001 0 TD [(y)-15000(the)-17000(application)-14000(pro-)]TJ -1249 50 TD [(grammer,)-11000(via)-13000(the)]TJ /T12 1 Tf 327 0 TD (subwidget)Tj /T15 1 Tf 210 0 TD [(metho)-1000(d)-13000(\(see)-15000(section)-14000(1.3.1\))-13000(of)-13000(eac)]TJ 591 0 TD [(h)-14000(widget)-14000(instance.)]TJ /T14 1 Tf -1128 158.9999 TD (6.2)Tj 153 0 TD [(Widget)-24000(Class)-21000(Declaration)]TJ /T15 1 Tf -153 115 TD [(The)-15000(\014rst)-15000(step)-15000(of)-14000(writing)-14000(a)-14000(new)-15000(widget)-14000(class)-15000(is)-14000(to)-14000(decide)-16000(the)-15000(base)-15000(class)-15000(from)-12000(whic)]TJ 1468.9999 0 TD [(h)-15000(the)-15000(new)]TJ -1468.9999 50 TD [(class.)-24000(Usually)]TJ 253 0 TD [(,)-15000(i)0(f)-15000(the)-17000(new)-16000(class)-16000(do)-1000(es)-17000(not)-16000(share)-17000(an)]TJ 653 0 TD [(y)-15000(common)-13000(features)-17000(with)-16000(other)-16000(classes,)-17000(it)]TJ -906 49.0001 TD [(should)-13000(b)-1000(e)-14000(deriv)]TJ 277 0 TD [(ed)-13000(from)-12000(the)-14000(TixPrimitiv)]TJ 439.9999 0 TD [(e)-10000(class.)-18000(If)-13000(it)-13000(do)-1000(es)-14000(share)-14000(common)-10000(features)-15000(with)-12000(other)]TJ -716.9999 50 TD [(classes,)-15000(then)-15000(it)-14000(should)-14000(b)-1000(e)-15000(deriv)]TJ 559.9999 0 TD [(ed)-15000(from)-13000(the)-15000(appropriate)-14000(base)-15000(class.)-20000(F)]TJ 683.0001 0 TD [(or)-13000(example,)-13000(if)-14000(the)-15000(new)]TJ -1243 49.9999 TD [(class)-15000(supp)-1000(ort)-15000(scrollbars,)-14000(it)-14000(should)-14000(b)-1000(e)-15000(deriv)]TJ 769.9999 0 TD [(ed)-15000(from)-13000(TixScrolledWidget;)-13000(if)-14000(it)-14000(displa)]TJ 707 0 TD [(ys)-13000(a)-15000(lab)-1000(el)]TJ -1476.9999 50 TD [(next)-14000(to)-14000(its)-14000(\\main)-12000(area",)-13000(then)-14000(it)-14000(should)-14000(b)-1000(e)-14000(deriv)]TJ 862.9999 0 TD [(ed)-15000(from)-12000(TixLab)-1000(elWidget.)]TJ -800.9999 72.9999 TD [(In)-10000(the)-11000(case)-11000(of)-9000(our)-10000(new)-11000(TixArro)]TJ 541.9999 0 TD [(wButton)-10000(class,)-11000(it)-9000(do)-1000(esn't)-11000(really)-9000(share)-11000(an)]TJ 710 0 TD [(y)-10000(common)-7000(features)]TJ -1313.9999 50 TD [(with)-14000(other)-14000(classes,)-15000(so)-14000(w)]TJ 427 0 TD [(e)-14000(decide)-15000(to)-13000(use)-15000(the)-15000(base)-14000(class)-14000(TixPrimitiv)]TJ 759 0 TD [(e)-12000(a)0(s)-14000(its)-14000(sup)-1000(erclass.)]TJ /T8 1 Tf -1186 139 TD (6.2.1)Tj 171 0 TD [(Using)-19000(the)-18000(tixWidgetClass)-17000(Command)]TJ /T15 1 Tf -171 100 TD (W)Tj 40 0 TD [(e)-13000(can)-15000(use)-14000(the)]TJ /T12 1 Tf 250.9999 0 TD (tixWidgetClass)Tj /T15 1 Tf 318.9999 0 TD [(command)-11000(to)-14000(declare)-14000(a)-14000(new)-14000(class.)-19000(The)-14000(syn)]TJ 759 0 TD [(tax)-14000(is:)]TJ ET endstream endobj 277 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 279 0 obj << /Length 5504 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (56)Tj /T9 1 Tf 512 0 TD [(CHAPTER)-14000(6.)-27000(TIX)-14000(OBJECT)-15000(ORIENTED)-14000(PR)]TJ 856.9999 0 TD (OGRAMMING)Tj /T12 1 Tf -1264.9999 117 TD [(tixWidgetClass)-19000(classCommandName)-18000({)]TJ 86.9999 49.0002 TD [(-switch)-20000(value)]TJ 0 50 TD [(-switch)-20000(value)]TJ T* (....)Tj -86.9999 50 TD 0 Tw (})Tj /T15 1 Tf -104 107.9998 TD (F)Tj 24 0 TD [(or)-13000(example,)-13000(the)-14000(follo)]TJ 374 0 TD [(wing)-11000(is)-14000(the)-15000(declaration)-13000(section)-15000(of)-13000(TixArro)]TJ 758 0 TD (wButton:)Tj ET q 396 0 0 -0.96 125.976 621.276 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T10 1 Tf 0.24 0 0 -0.24 126 611.46 Tm [(Program)-15000(6.1)]TJ /T15 1 Tf 273 0 TD [(declaration)-14000(of)-13000(the)-15000(TixArro)]TJ 480.9999 0 TD [(wButton)-14000(Class)]TJ ET q 396 0 0 -0.48 125.976 607.596 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T12 1 Tf 0.24 0 0 -0.24 126 598.26 Tm [(tixWidgetClass)-19000(tixArrowButton)-19000({)]TJ 87 50 TD (-classname)Tj 262 0 TD (TixArrowButton)Tj -262 50 TD [(-superclass)-20000(tixPrimitive)]TJ T* [(-method)-21000({)]TJ 87 50 TD [(flash)-21000(invoke)-21000(invert)]TJ -87 49 TD (})Tj 0 50 TD [(-flag)-21000({)]TJ 87 50 TD [(-direction)-20000(-state)]TJ -87 50 TD (})Tj T* [(-configspec)-20000({)]TJ 87 49 TD [({-direction)-20000(direction)-20000(Direction)-20000(e})]TJ 0 50 TD [({-state)-21000(state)-20000(State)-21000(normal})]TJ -87 50 TD (})Tj T* [(-alias)-21000({)]TJ 87 50 TD [({-dir)-21000(-direction})]TJ -87 50 TD (})Tj 0 48.9999 TD [(-default)-20000({)]TJ 87 50 TD ({*Button.anchor)Tj 523 0 TD (c})Tj -523 50 TD ({*Button.padX)Tj 523 0 TD (5})Tj -610 50 TD (})Tj -87 50 TD (})Tj ET q 396 0 0 -0.48 125.976 346.236 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT /T15 1 Tf 0.24 0 0 -0.24 140.88 324.66 Tm (W)Tj 40 0 TD [(e'll)-8000(lo)-1000(ok)-9000(at)-10000(what)-9000(eac)]TJ 350 0 TD [(h)-11000(option)-9000(means)-9000(as)-10000(I)-9000(describ)-1000(e)-12000(the)-10000(command)-7000(in)-10000(the)-10000(follo)]TJ 951.9999 0 TD [(wing)-7000(sections.)]TJ -1341.9999 74.0001 TD [(The)-22000(\014rst)-22000(argumen)]TJ 343 0 TD [(t)-19000(for)]TJ /T12 1 Tf 106 0 TD (tixWidgetClass)Tj /T15 1 Tf 326 0 TD [(is)-21000(the)]TJ /T13 1 Tf 128 0 TD (c)Tj 16.9999 0 TD [(ommand)-22000(name)]TJ /T15 1 Tf 294 0 TD [(for)-21000(the)-22000(widget)-21000(class)]TJ -1275.9999 48.9999 TD (\()Tj /T12 1 Tf 15.9999 0 TD (tixArrowButton)Tj /T15 1 Tf 308.0001 0 TD [(\).)-15000(Command)-10000(names)-12000(are)-14000(used)-14000(to)-12000(create)-15000(widgets)-13000(of)-13000(this)-13000(class.)-18000(F)]TJ 1115.9999 0 TD [(or)-13000(example,)]TJ -1439.9999 50 TD [(the)-14000(co)-1000(de)]TJ /T12 1 Tf 104 108 TD [(tixArrowButton)-19000(.arrow)]TJ /T15 1 Tf -104 108 TD [(creates)-14000(a)-12000(widget)-12000(instance)]TJ /T12 1 Tf 462 0 TD (.arrow)Tj /T15 1 Tf 144 0 TD [(of)-11000(the)-13000(class)-13000(TixArro)]TJ 357.9999 0 TD [(wButton.)-18000(Also,)-11000(the)-13000(command)-10000(name)-11000(is)]TJ -963.9999 50 TD [(used)-11000(as)-11000(a)-10000(pre\014x)-11000(of)-10000(all)-9000(the)-11000(metho)-1000(ds)-10000(of)-9000(this)-11000(class.)-17000(F)]TJ 869.9999 0 TD [(or)-10000(example,)-9000(the)]TJ /T12 1 Tf 286.0001 0 TD (Foo)Tj /T15 1 Tf 75.9999 0 TD (and)Tj /T12 1 Tf 77.0001 0 TD (Bar)Tj /T15 1 Tf 75.9999 0 TD [(metho)-1000(ds)-10000(of)-9000(the)]TJ -1384.9999 49 TD [(class)-10000(TixArro)]TJ 240 0 TD [(wButton)-10000(will)-9000(b)-1000(e)-10000(written)-11000(as)]TJ /T12 1 Tf 484 0 TD (tixArrowButton::)Tj 351 0 TD (Foo)Tj /T15 1 Tf 72.9999 0 TD (and)Tj /T12 1 Tf 76.0001 0 TD (tixArrowButton::Bar)Tj /T15 1 Tf 416.9998 0 TD (.)Tj -1578.9998 74.0001 TD (The)Tj /T13 1 Tf 89.9999 0 TD [(class)-20000(name)]TJ /T15 1 Tf 221.0001 0 TD [(of)-18000(the)-20000(class)-19000(\()]TJ /T12 1 Tf 246.9999 0 TD (TixArrowButton)Tj /T15 1 Tf 308.0001 0 TD [(\)is)-16000(sp)-1000(eci\014ed)-20000(b)]TJ 253.9999 0 TD [(y)-19000(the)]TJ /T12 1 Tf 117.0001 0 TD (-classname)Tj /T15 1 Tf 237 0 TD (switc)Tj 90.9998 0 TD (h)Tj -1626.9998 50 TD [(inside)-10000(the)-11000(main)-8000(b)-1000(o)-1000(d)0(y)-11000(o)0(f)-9000(the)-11000(declaration.)-17000(The)-11000(class)-10000(name)-10000(is)-10000(used)-11000(only)-9000(to)-11000(sp)-1000(ecify)-11000(options)-9000(in)-10000(the)]TJ T* [(TK)-15000(option)-15000(database.)-23000(F)]TJ 426 0 TD [(or)-14000(example,)-14000(the)-16000(follo)]TJ 377.9999 0 TD [(wing)-13000(commands)-13000(sp)-1000(eci\014es)-17000(the)-16000(TixArro)]TJ 688.0001 0 TD (wButton)Tj -1492 48.9999 TD [(widget)-19000(instances)-21000(should)-19000(ha)]TJ 503 0 TD (v)Tj 21 0 TD [(e)-20000(the)-20000(default)-19000(v)]TJ 279.9999 0 TD (alue)Tj /T12 1 Tf 93.0001 0 TD (up)Tj /T15 1 Tf 62.9999 0 TD [(for)-19000(their)]TJ /T12 1 Tf 174.0001 0 TD (-direction)Tj /T15 1 Tf 236.9999 0 TD [(option)-19000(and)-19000(the)]TJ -1370.9999 50 TD [(default)-14000(v)]TJ 160 0 TD (alue)Tj /T12 1 Tf 86.9999 0 TD (normal)Tj /T15 1 Tf 144 0 TD [(for)-14000(their)]TJ /T12 1 Tf 162.9999 0 TD (-state)Tj /T15 1 Tf 145.0001 0 TD (option.)Tj ET endstream endobj 280 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 282 0 obj << /Length 6561 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(6.3.)-26000(WRITING)-13000(METHODS)]TJ /T15 1 Tf 1607.9998 0 TD (57)Tj /T12 1 Tf -1503.9998 117 TD [(option)-20000(add)-22000(*TixArrowButton)]TJ 568.9999 0 TD (.dire)Tj 109 0 TD [(ction)-18000(up)]TJ -677.9999 49.0002 TD [(option)-20000(add)-22000(*TixArrowButton)]TJ 568.9999 0 TD (.stat)Tj 109 0 TD 0 Tw (e)Tj 128 0 TD (normal)Tj /T15 1 Tf -909.9999 99 TD [(Notice)-19000(the)-20000(di\013erence)-21000(in)-19000(the)-19000(capitalization)-18000(of)-18000(the)-20000(class)-19000(name)-18000(and)-19000(the)-19000(command)-17000(name)-18000(of)]TJ 0 50 TD [(the)-21000(TixArro)]TJ 225 0 TD [(wButton)-20000(class:)-31000(b)-1000(oth)-20000(of)-20000(them)-19000(has)-20000(the)-21000(individual)-18000(w)]TJ 962 0 TD [(ords)-20000(capitalized,)-21000(but)-20000(the)]TJ -1187 50 TD [(command)-19000(name)-21000(\()]TJ /T12 1 Tf 331.9999 0 TD (tixArrowButton)Tj /T15 1 Tf 308.0001 0 TD [(\)starts)-20000(with)-21000(a)-22000(l)0(o)]TJ 313.9999 0 TD (w)Tj 29 0 TD [(er)-21000(case)-23000(letter)-22000(while)-22000(the)-22000(class)-22000(name)]TJ -982.9999 50 TD (\()Tj /T12 1 Tf 15.9999 0 TD (TixArrowButton)Tj /T15 1 Tf 308.0001 0 TD [(\))-16000(starts)-19000(with)-18000(an)-19000(upp)-1000(er)-19000(case)-20000(letter.)-32000(When)-19000(y)]TJ 816.9999 0 TD [(ou)-18000(create)-20000(y)]TJ 210 0 TD [(our)-18000(o)]TJ 98.0001 0 TD [(wn)-18000(classes,)]TJ -1449 50 TD (y)Tj 21 0 TD [(ou)-13000(should)-14000(follo)]TJ 266.9999 0 TD [(w)-12000(this)-14000(naming)-12000(con)]TJ 331.9999 0 TD (v)Tj 21.0001 0 TD (en)Tj 40 0 TD (tion.)Tj -619 72.9998 TD (The)Tj /T12 1 Tf 84.9999 0 TD (-superclass)Tj /T15 1 Tf 253 0 TD (switc)Tj 91 0 TD [(h)-13000(s)0(p)-1000(eci\014es)-15000(the)-14000(sup)-1000(erclass)-15000(of)-13000(the)-13000(new)-14000(widget.)-18000(In)-13000(our)-13000(example,)-12000(w)]TJ 1141 0 TD (e)Tj -1632 50 TD (ha)Tj 43 0 TD (v)Tj 21 0 TD [(e)-13000(set)-15000(it)-13000(to)]TJ /T12 1 Tf 188 0 TD (tixPrimitive)Tj /T15 1 Tf 264 0 TD [(.)-15000(Again,)-13000(pa)]TJ 203 0 TD [(y)-13000(atten)]TJ 128 0 TD [(tion)-13000(to)-14000(the)-14000(capitalization:)-17000(w)]TJ 510.9999 0 TD [(e)-13000(should)-14000(use)-14000(the)]TJ -1357.9999 50 TD [(command)-11000(name)-13000(of)-13000(the)-15000(sup)-1000(erclass,)-15000(not)-14000(its)-13000(class)-15000(name.)]TJ /T14 1 Tf 0 158.0002 TD (6.3)Tj 153 0 TD (W)Tj 62.9999 0 TD [(riting)-25000(Metho)-2000(ds)]TJ /T15 1 Tf -215.9999 113.9998 TD [(After)-15000(w)]TJ 138 0 TD 15 Tc [(eh)15000(a)]TJ 76 0 TD 0 Tc (v)Tj 20.9999 0 TD [(e)-15000(declared)-15000(the)-15000(new)-15000(widget)-15000(class,)-15000(w)]TJ 628.9999 0 TD [(e)-15000(can)-14000(write)-15000(metho)-1000(ds)-14000(for)-15000(this)-14000(class)-15000(to)-15000(de\014ne)]TJ -863.9999 50 TD [(its)-16000(b)-1000(eha)]TJ 145 0 TD [(vior.)-23000(Metho)-1000(ds)-17000(are)-16000(just)-16000(a)-16000(s)0(p)-1000(ecial)-16000(t)]TJ 623 0 TD [(yp)-1000(e)-16000(o)0(f)-15000(TCL)-16000(pro)-1000(cedures)-18000(and)-15000(they)-17000(are)-16000(created)-17000(b)]TJ 859.9998 0 TD (y)Tj -1627.9998 50 TD (the)Tj /T12 1 Tf 68.9999 0 TD (proc)Tj /T15 1 Tf 98.0001 0 TD [(command.)-15000(There)-12000(are,)-12000(ho)]TJ 444 0 TD (w)Tj 29 0 TD (ev)Tj 38.9999 0 TD [(er,)-12000(three)-13000(requiremen)]TJ 363.0001 0 TD [(ts)-11000(for)-11000(metho)-1000(ds.)-17000(First,)-12000(their)-12000(names)]TJ -1042 50.0001 TD (m)Tj 35 0 TD [(ust)-15000(b)-1000(e)-16000(pre\014xed)-17000(b)]TJ 310 0 TD [(y)-16000(the)-16000(command)-13000(name)-14000(of)-16000(their)-16000(class.)-24000(Second,)-16000(they)-16000(m)]TJ 967.9999 0 TD [(ust)-15000(accept)-17000(at)-16000(least)]TJ -1312.9999 50 TD [(one)-17000(argumen)]TJ 235.9999 0 TD [(t)-16000(and)-16000(the)-18000(\014rst)-17000(argumen)]TJ 435.0001 0 TD [(t)-16000(that)-17000(they)-17000(accept)-18000(m)]TJ 388 0 TD [(ust)-16000(b)-1000(e)-18000(called)]TJ /T12 1 Tf 250.9999 0 TD (w)Tj /T15 1 Tf 22 0 TD [(.)-27000(Third,)-17000(the)-17000(\014rst)]TJ -1331.9999 49 TD [(command)-11000(executed)-16000(inside)-14000(eac)]TJ 534.9999 0 TD [(h)-14000(metho)-1000(d)-13000(m)]TJ 223.0001 0 TD [(ust)-13000(b)-1000(e)]TJ /T12 1 Tf -654 98.9999 TD [(upvar)-21000(#0)-21000($w)-21000(data)]TJ /T15 1 Tf -42 99.0001 TD (F)Tj 24 0 TD [(or)-21000(example,)-20000(the)-21000(follo)]TJ 395.9999 0 TD [(wing)-18000(is)-21000(an)-20000(implemen)]TJ 393.9999 0 TD [(tation)-17000(of)-20000(the)-22000(in)]TJ 293 0 TD (v)Tj 21.0001 0 TD [(ert)-20000(metho)-1000(d)-20000(for)-20000(the)-22000(class)]TJ -1190 50 TD (TixArro)Tj 146.9999 0 TD (wButton:)Tj /T12 1 Tf -42.9999 99 TD [(proc)-21000(tixArrowButton::)]TJ 459.9999 0 TD (inver)Tj 109 0 TD [(t)-19000({w})-21000({)]TJ -481.9999 50 TD [(upvar)-21000(#0)-21000($w)-21000(data)]TJ 0 98.9999 TD [(set)-21000(curDirection)-19000($data\(-direction\))]TJ 0 50 TD [(case)-21000($curDirection)-19000({)]TJ 87.0001 50 TD 22 Tc (n{)Tj 87 50 TD 0 Tc [(set)-21000(newDirection)-20000(s)]TJ -87 50 TD (})Tj 0 49 TD 22 Tc (s{)Tj 87 50 TD 0 Tc [(set)-21000(newDirection)-20000(n)]TJ -87 50 TD (})Tj T* [(#)-22000(....)]TJ -87.0001 50 TD (})Tj -86.9999 48.9999 TD (})Tj /T15 1 Tf -104 99 TD [(Notice)-10000(that)-9000(the)-10000(name)-8000(of)-9000(the)-10000(metho)-1000(d)-8000(i)0(s)-9000(pre\014xed)-11000(b)]TJ 853 0 TD [(y)-9000(the)-9000(command)-7000(name)-8000(of)-9000(the)-10000(class)-9000(\()]TJ /T12 1 Tf 606 0 TD (tixArrowButton)Tj /T15 1 Tf 308 0 TD (\).)Tj -1767 50 TD [(Also,)-12000(the)-14000(\014rst)-13000(and)-13000(only)-12000(argumen)]TJ 586 0 TD [(t)-12000(that)-13000(it)-12000(accepts)-15000(is)]TJ /T12 1 Tf 342 0 TD (w)Tj /T15 1 Tf 34.9999 0 TD [(and)-13000(the)-13000(\014rst)-14000(line)-12000(it)-13000(executes)-15000(is)-12000(\\)]TJ /T12 1 Tf 578.0001 0 TD (upvar)Tj -1541 50 TD [(#0)-21000($w)-22000(data)]TJ /T15 1 Tf 218.9999 0 TD (".)Tj -156.9999 73 TD [(The)-21000(argumen)]TJ 248.9999 0 TD (t)Tj /T12 1 Tf 35.0001 0 TD (w)Tj /T15 1 Tf 42.9999 0 TD [(sp)-1000(eci\014es)-22000(whic)]TJ 248.9999 0 TD [(h)-20000(widget)-20000(instance)-22000(this)-20000(metho)-1000(d)-20000(should)-20000(act)-21000(up)-1000(on.)]TJ 950.9999 0 TD (F)Tj 24.0002 0 TD (or)Tj -1613 50 TD [(example,)-12000(if)-13000(the)-15000(user)-15000(has)-14000(issued)-14000(the)-15000(command)]TJ ET endstream endobj 283 0 obj << /ProcSet [/PDF /Text ] /Font << /T9 25 0 R /T12 14 0 R /T14 16 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 285 0 obj << /Length 8400 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (58)Tj /T9 1 Tf 506.9999 0 TD [(CHAPTER)-14000(6.)-32000(TIX)-14000(OBJECT)-15000(ORIENTED)-14000(PR)]TJ 862 0 TD (OGRAMMING)Tj /T12 1 Tf -1264.9999 117 TD [(.up)-21000(invert)]TJ /T15 1 Tf -104 116.0002 TD [(on)-12000(an)-12000(instance)]TJ /T12 1 Tf 271.9999 0 TD (.up)Tj /T15 1 Tf 77.0001 0 TD [(of)-11000(the)-13000(class)-13000(tixArro)]TJ 344 0 TD [(wButton,)-12000(the)-13000(metho)-1000(d)]TJ /T12 1 Tf 400.9999 0 TD (tixArrowButton::i)Tj 373.0001 0 TD (nvert)Tj /T15 1 Tf 118 0 TD (will)Tj -1585 49 TD [(b)-1000(e)-15000(called)-13000(and)-14000(the)-14000(argumen)]TJ 482.9999 0 TD 0 Tw (t)Tj /T12 1 Tf 29.0001 0 TD (w)Tj /T15 1 Tf 35.9999 0 TD [(will)-12000(ha)]TJ 121.0001 0 TD (v)Tj 21 0 TD [(e)-14000(the)-14000(v)]TJ 122.9999 0 TD (alue)Tj /T12 1 Tf 88 0 TD (.up)Tj /T15 1 Tf 66 0 TD (.)Tj -904.9999 74 TD (The)Tj /T12 1 Tf 88 0 TD (invert)Tj /T15 1 Tf 148 0 TD [(metho)-1000(d)-16000(i)0(s)-16000(used)-18000(to)-16000(in)]TJ 383 0 TD (v)Tj 21 0 TD [(ert)-17000(the)-17000(direction)-17000(of)-16000(the)-17000(arro)]TJ 513.9999 0 TD [(w.)-27000(Therefore,)-18000(it)-16000(should)]TJ -1215.9999 50 TD [(examine)-14000(the)-16000(v)]TJ 256.9999 0 TD (ariable)Tj /T12 1 Tf 137 0 TD (.up\(-direction\))Tj /T15 1 Tf 330.0001 0 TD [(,)-12000(whic)]TJ 106 0 TD [(h)-15000(stores)-17000(the)-15000(curren)]TJ 342.9999 0 TD [(t)-17000(direction)-16000(of)-14000(the)-16000(instance)]TJ /T12 1 Tf -1172.9999 48.9998 TD (.up)Tj /T15 1 Tf 65.9999 0 TD [(,)-12000(and)-12000(mo)-1000(dify)-11000(it)-12000(appropriately)]TJ 522.9999 0 TD [(.)-16000(I)0(t)-13000(turns)-14000(out)-12000(that)-13000(in)-12000(TCL,)-12000(the)-14000(only)-11000(clean)-13000(w)]TJ 792 0 TD (a)Tj 20 0 TD [(y)-12000(t)0(o)-13000(access)-14000(an)]TJ -1400.9999 50 TD (arra)Tj 73 0 TD [(y)-13000(whose)-15000(name)-12000(is)-14000(stored)-14000(in)-14000(a)-13000(v)]TJ 536.9999 0 TD [(ariable)-13000(is)-13000(the)-14000(\\)]TJ /T12 1 Tf 269 0 TD [(upvar)-21000(#0)-21000($w)-22000(data)]TJ /T15 1 Tf 350 0 TD [(")-12000(tec)]TJ 84 0 TD [(hnique:)-19000(essen)]TJ 242.0001 0 TD (tially)Tj -1555 50 TD [(it)-12000(tells)-12000(the)-12000(in)]TJ 228.9999 0 TD [(tepreter)-14000(that)-12000(the)-13000(arra)]TJ 386.0001 0 TD [(y)-11000(data)-12000(should)-12000(b)-1000(e)-12000(an)-12000(alias)-11000(for)-12000(the)-12000(global)-11000(arra)]TJ 784 0 TD [(y)-12000(whose)-12000(name)]TJ -1399 50 TD [(is)-14000(stored)-15000(in)]TJ /T12 1 Tf 215 0 TD ($w)Tj /T15 1 Tf 44 0 TD 18 Tc (.W)Tj 69.9999 0 TD 0 Tc [(e)-13000(will)-13000(so)-1000(on)-13000(see)-16000(ho)]TJ 315.9999 0 TD [(w)-13000(the)-15000(widget's)-13000(metho)-1000(ds)-14000(use)-14000(the)-15000(data)-13000(arra)]TJ 754.0001 0 TD (y)Tj 19 0 TD (.)Tj -1356 73.0002 TD [(Once)-17000(the)-15000(m)]TJ 215 0 TD [(ysterious)-15000(\\)]TJ /T12 1 Tf 196 0 TD [(upvar)-20000(#0)-21000($w)-22000(data)]TJ /T15 1 Tf 349 0 TD [(")-14000(line)-14000(is)-15000(explained,)-15000(it)-15000(b)-1000(ecomes)-15000(clear)-15000(what)-15000(the)]TJ -822 50 TD [(rest)-13000(of)-12000(the)]TJ /T12 1 Tf 195 0 TD (tixArrowButton::in)Tj 395 0 TD (vert)Tj /T15 1 Tf 97 0 TD [(metho)-1000(d)-11000(d)0(o)-1000(es:)-18000(it)-12000(examines)-11000(the)-13000(curren)]TJ 657.9999 0 TD [(t)-14000(direction)-13000(of)-11000(the)]TJ -1344.9999 50 TD (arro)Tj 73 0 TD [(w,)-13000(whic)]TJ 137 0 TD [(h)-14000(i)0(s)-14000(stored)-15000(in)]TJ /T12 1 Tf 252 0 TD ($data\(-direction\))Tj /T15 1 Tf 384 0 TD [(and)-14000(in)]TJ 115 0 TD (v)Tj 20.9999 0 TD [(erts)-14000(it.)]TJ /T8 1 Tf -981.9999 141 TD (6.3.1)Tj 171 0 TD [(Declaring)-18000(Public)-18000(Metho)-2000(ds)]TJ /T15 1 Tf -171 100.9999 TD [(All)-15000(the)-17000(metho)-1000(ds)-16000(of)-16000(a)-16000(class)-16000(are)-17000(b)]TJ 594 0 TD [(y)-16000(default)-16000(priv)]TJ 250.9999 0 TD [(ate)-16000(metho)-1000(ds)-15000(and)-17000(cannot)-16000(b)-1000(e)-17000(accessed)-18000(b)]TJ 709.0001 0 TD [(y)-16000(the)]TJ -1554 50 TD [(application)-14000(programmer.)-21000(If)-16000(y)]TJ 538 0 TD [(ou)-15000(w)]TJ 87.9999 0 TD (an)Tj 43.0001 0 TD [(t)-15000(t)0(o)-16000(mak)]TJ 162 0 TD [(e)-14000(a)-15000(metho)-1000(d)-15000(public,)-16000(y)]TJ 381 0 TD [(ou)-15000(can)-16000(include)-15000(its)-16000(name)]TJ -1212 49 TD [(in)-14000(the)]TJ /T12 1 Tf 122 0 TD (-method)Tj /T15 1 Tf 168 0 TD [(section)-15000(of)-15000(the)-15000(class)-15000(declaration.)-21000(In)-15000(our)-15000(TixArro)]TJ 866.9999 0 TD [(wButton)-15000(example,)-14000(w)]TJ 378.0001 0 TD 15 Tc [(eh)15000(a)]TJ 76 0 TD 0 Tc (v)Tj 21 0 TD (e)Tj -1632 50 TD [(declared)-15000(that)-14000(the)-14000(metho)-1000(ds)]TJ /T12 1 Tf 491.9999 0 TD (flash)Tj /T15 1 Tf 110.0001 0 TD (,)Tj /T12 1 Tf 25 0 TD (invert)Tj /T15 1 Tf 144 0 TD (and)Tj /T12 1 Tf 81 0 TD (invoke)Tj /T15 1 Tf 144 0 TD [(are)-15000(public)-13000(metho)-1000(ds)-13000(and)-14000(they)-14000(can)-14000(b)-1000(e)]TJ -996 50 TD [(accessed)-18000(b)]TJ 188 0 TD [(y)-16000(the)-16000(application)-15000(programmer.)-21000(All)-15000(other)-17000(metho)-1000(ds)-15000(of)-15000(the)-17000(TixArro)]TJ 1205 0 TD [(wButton)-16000(class)]TJ -1393 50 TD [(will)-12000(b)-1000(e)-15000(priv)]TJ 206 0 TD (ate.)Tj -144 72.9999 TD (Usually)Tj 134 0 TD [(,)-13000(the)-15000(names)-14000(of)-13000(priv)]TJ 343 0 TD [(ate)-14000(metho)-1000(ds)-14000(start)-15000(with)-14000(a)-14000(capital)-14000(letter)-15000(with)-14000(individual)-13000(w)]TJ 1035 0 TD (ords)Tj -1574 50 TD [(capitalized.)-18000(The)-14000(names)-13000(of)-13000(public)-14000(metho)-1000(ds)-13000(start)-15000(with)-13000(a)-14000(l)0(o)]TJ 1036 0 TD (w)Tj 29 0 TD [(ercase)-15000(letter.)]TJ /T14 1 Tf -1065 162.0001 TD (6.4)Tj 153 0 TD [(Standard)-24000(Initialization)-26000(Metho)-2000(ds)]TJ /T15 1 Tf -153 115 TD (Eac)Tj 65.9999 0 TD [(h)-20000(new)-21000(mega-widget)-18000(class)-21000(m)]TJ 521.9999 0 TD [(ust)-19000(supply)-20000(three)-21000(standard)-20000(initialization)-18000(metho)-1000(ds.)]TJ 955.0001 0 TD (When)Tj -1543 50 TD [(an)-20000(instance)-22000(of)-20000(a)-20000(Tix)-20000(widget)-20000(is)-21000(created,)-23000(three)-22000(three)-22000(metho)-1000(ds)-20000(will)-19000(b)-1000(e)-21000(called)-20000(to)-20000(initialize)]TJ T* [(this)-16000(instance.)-23000(The)-16000(metho)-1000(ds)-15000(are)]TJ /T12 1 Tf 592 0 TD (InitWidgetRec)Tj /T15 1 Tf 286 0 TD (,)Tj /T12 1 Tf 25 0 TD (ConstructWidget)Tj /T15 1 Tf 343 0 TD (and)Tj /T12 1 Tf 81.9999 0 TD (SetBindings)Tj /T15 1 Tf 254.9999 0 TD (and)Tj -1582.9998 50 TD [(they)-17000(will)-15000(b)-1000(e)-17000(called)-16000(in)-16000(that)-17000(order.)-26000(The)-17000(follo)]TJ 797.9999 0 TD [(wing)-14000(sections)-17000(sho)]TJ 316 0 TD 17 Tc [(wh)17000(o)]TJ 90 0 TD 0 Tc [(w)-16000(these)-18000(metho)-1000(ds)-16000(can)-16000(b)-1000(e)]TJ -1203.9999 48.9999 TD (implemen)Tj 176.9999 0 TD (ted.)Tj /T8 1 Tf -176.9999 142 TD (6.4.1)Tj 171 0 TD [(The)-19000(InitWidgetRec)-16000(Metho)-2000(d)]TJ /T15 1 Tf -171 100.0001 TD [(The)-17000(purp)-1000(ose)-18000(of)-15000(the)]TJ /T12 1 Tf 370 0 TD (InitWidgetRec)Tj /T15 1 Tf 299.9999 0 TD [(metho)-1000(d)-16000(i)0(s)-16000(t)0(o)-17000(initialize)-14000(the)-18000(v)]TJ 517.0001 0 TD [(ariables)-15000(of)-16000(the)-17000(widget)-17000(in-)]TJ -1187 50 TD [(stance.)-31000(F)]TJ 179 0 TD [(or)-17000(example,)-17000(the)-19000(follo)]TJ 387 0 TD [(wing)-15000(implem)]TJ 237 0 TD (en)Tj 40 0 TD [(tation)-15000(of)]TJ /T12 1 Tf 175 0 TD (tixArrowButton::I)Tj 372.9999 0 TD (nitWi)Tj 109 0 TD (dgetR)Tj 108.9999 0 TD (ec)Tj /T15 1 Tf -1608.9998 50 TD [(sets)-15000(the)]TJ /T12 1 Tf 153 0 TD (count)Tj /T15 1 Tf 122 0 TD (v)Tj 20 0 TD [(ariable)-13000(of)-14000(eac)]TJ 239.9999 0 TD [(h)-14000(newly)-14000(created)-15000(instance)-15000(to)-13000(zero.)]TJ /T12 1 Tf -430.9999 116 TD [(proc)-21000(tixArrowButton::)]TJ 459.9999 0 TD (InitW)Tj 109 0 TD (idget)Tj 109 0 TD [(Rec)-19000({w})-21000({)]TJ -590.9999 50 TD [(upvar)-21000(#0)-21000($w)-21000(data)]TJ 0 98.9999 TD [(set)-21000(data\(count\))-20000(0)]TJ ET endstream endobj 286 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T14 16 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 288 0 obj << /Length 7131 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(6.4.)-31000(ST)]TJ 146.9999 0 TD (AND)Tj 93.0001 0 TD [(ARD)-13000(INITIALIZA)]TJ 338 0 TD [(TION)-14000(METHODS)]TJ /T15 1 Tf 1029.9998 0 TD (59)Tj /T12 1 Tf -1503.9998 117 TD 0 Tw (})Tj /T15 1 Tf -42 112 TD [(Earlier,)-15000(w)]TJ 178.9999 0 TD [(e)-14000(sho)]TJ 91 0 TD (w)Tj 29 0 TD [(ed)-15000(ho)]TJ 99 0 TD [(w)-15000(eac)]TJ 101.0001 0 TD [(h)-15000(widget)-14000(y)]TJ 192.9999 0 TD [(ou)-14000(create)-17000(is)-14000(asso)-1000(ciated)-15000(with)-15000(an)-14000(arra)]TJ 649 0 TD [(y)-15000(o)0(f)-14000(the)-15000(same)]TJ -1402.9999 50 TD [(name.)-29000(Within)-17000(the)-18000(metho)-1000(ds,)-18000(y)]TJ 565 0 TD [(ou)-17000(alw)]TJ 122.9999 0 TD (a)Tj 20.0001 0 TD [(ys)-17000(refer)-19000(to)-18000(this)-18000(arra)]TJ 367.9999 0 TD [(y)-17000(through)-18000(the)-19000(name)]TJ /T12 1 Tf 391.0001 0 TD (data)Tj /T15 1 Tf 105 0 TD ({the)Tj -1572 50 TD [(metho)-1000(d)-13000(then)-15000(w)]TJ 275 0 TD [(orks)-14000(prop)-1000(erly)-14000(in)-13000(eac)]TJ 359 0 TD [(h)-15000(instance)-14000(of)-14000(the)-14000(widget.)]TJ /T10 1 Tf -634 131 TD [(Chaining)-14000(Metho)-1000(ds)]TJ /T15 1 Tf 0 100 TD [(The)-18000(ab)-1000(o)]TJ 154 0 TD (v)Tj 21 0 TD [(e)-18000(implemen)]TJ 212.9999 0 TD (tatio)Tj 85.0001 0 TD [(n)-15000(i)0(s)-18000(not)-18000(su\016cien)]TJ 305.9999 0 TD [(t)-18000(b)-1000(ecause)-20000(our)-17000(TixArro)]TJ 416 0 TD [(wButton)-18000(class)-19000(is)-17000(deriv)]TJ 412.9999 0 TD (ed)Tj -1607.9998 50 TD [(from)-12000(TixPrimitiv)]TJ 315 0 TD [(e.)-17000(The)-14000(class)-15000(deriv)]TJ 319 0 TD [(ation)-13000(in)-14000(Tix)-14000(is)-14000(basically)-13000(an)]TJ /T13 1 Tf 503 0 TD (is-a)Tj /T15 1 Tf 78.9999 0 TD [(relationship:)-19000(TixArro)]TJ 391.0001 0 TD (w-)Tj -1607 50 TD (Button)Tj /T13 1 Tf 139 0 TD [(is)-11000(a)]TJ /T15 1 Tf 71.9999 0 TD (TixPrimitiv)Tj 217 0 TD [(e.)-14000(TixPrimitiv)]TJ 260.9999 0 TD [(e)-7000(de\014nes)-12000(the)-10000(metho)-1000(d)]TJ /T12 1 Tf 373.0001 0 TD (tixPrimitive::I)Tj 328.9999 0 TD (nitWi)Tj 109 0 TD (dgetR)Tj 108.9999 0 TD (ec)Tj /T15 1 Tf -1608.9998 50 TD (whic)Tj 82 0 TD [(h)-17000(sets)-18000(up)-16000(the)-18000(instance)-17000(v)]TJ 445 0 TD [(ariables)-16000(of)-16000(ev)]TJ 244 0 TD [(ery)-18000(instance)-17000(of)-16000(TixPrimitiv)]TJ 504.9999 0 TD [(e.)-24000(Since)-18000(an)-16000(instance)]TJ -1275.9999 50 TD [(of)-19000(TixArro)]TJ 200 0 TD [(wButton)-20000(is)-19000(also)-19000(an)-20000(instance)-20000(of)-19000(TixPrimitiv)]TJ 815 0 TD [(e,)-18000(w)]TJ 77 0 TD [(e)-20000(need)-20000(to)-20000(mak)]TJ 275 0 TD [(e)-18000(sure)-21000(that)-19000(the)]TJ -1367 50 TD [(instance)-18000(v)]TJ 185 0 TD [(ariables)-16000(de\014ned)-17000(b)]TJ 321.9999 0 TD [(y)-17000(TixPrimitiv)]TJ 256 0 TD [(e)-14000(are)-17000(also)-16000(prop)-1000(erly)-18000(initialized.)-25000(The)-17000(tec)]TJ 715 0 TD [(hnique)-18000(of)]TJ -1477.9999 49.0002 TD [(calling)-14000(a)-14000(metho)-1000(d)-14000(de\014ned)-16000(in)-15000(a)-14000(sup)-1000(erclass)-17000(is)-15000(called)-15000(the)]TJ /T13 1 Tf 980 0 TD (chaining)Tj /T15 1 Tf 167.9999 0 TD [(of)-14000(a)-15000(metho)-1000(d.)-20000(The)-16000(follo)]TJ 419.0001 0 TD (wing)Tj -1567 50 TD (implemen)Tj 176.9999 0 TD (tatio)Tj 85.0001 0 TD [(n)-11000(d)0(o)-1000(e)0(s)-15000(this)-14000(correctly:)]TJ /T12 1 Tf -158 112.9999 TD [(proc)-21000(tixArrowButton::)]TJ 459.9999 0 TD (InitW)Tj 109 0 TD (idget)Tj 109 0 TD [(Rec)-19000({w})-21000({)]TJ -590.9999 50 TD [(upvar)-21000(#0)-21000($w)-21000(data)]TJ 0 99 TD (tixPrimitive::Ini)Tj 372.9999 0 TD (tWidg)Tj 109 0 TD [(etRec)-18000($w)]TJ -481.9999 50 TD [(set)-21000(data\(count\))-20000(0)]TJ -86.9999 50 TD (})Tj /T15 1 Tf -104 113 TD [(Notice)-11000(that)]TJ /T12 1 Tf 213 0 TD (tixPrimitive::Ini)Tj 373 0 TD (tWid)Tj 86.9999 0 TD (getRe)Tj 109 0 TD (c)Tj /T15 1 Tf 29.0001 0 TD [(is)-10000(called)-10000(b)-1000(efore)-11000(an)]TJ 315.9999 0 TD [(ything)-9000(else)-11000(is)-10000(done.)-18000(This)-10000(w)]TJ 474.0001 0 TD (a)Tj 19.9998 0 TD (y)Tj 19 0 TD (,)Tj -1639.9998 50 TD (w)Tj 29 0 TD [(e)-13000(can)-13000(de\014ne)-13000(new)-13000(classes)-14000(b)]TJ 461 0 TD [(y)-13000(means)-12000(of)-12000(successiv)]TJ 365 0 TD [(e)-14000(re\014nemen)]TJ 206 0 TD [(t:)-18000(w)]TJ 75 0 TD [(e)-13000(can)-13000(\014rst)-13000(ask)-13000(the)-13000(sup)-1000(erclass)]TJ -1136 48.9999 TD [(to)-12000(set)-13000(up)-13000(the)-12000(instance)-13000(v)]TJ 420 0 TD [(ariables,)-12000(then)-13000(w)]TJ 285 0 TD [(e)-12000(can)-13000(mo)-1000(dify)-10000(some)-11000(of)-12000(those)-13000(v)]TJ 517.9999 0 TD [(ariables)-11000(when)-13000(necessary)]TJ -1222.9999 50 TD [(and)-14000(also)-13000(de\014ne)-15000(new)-14000(v)]TJ 388.9999 0 TD (ariables.)Tj /T10 1 Tf -388.9999 131 TD [(The)-16000(tixChainMetho)-1000(d)-12000(call)]TJ /T15 1 Tf 0 101.0001 TD [(The)-17000(ab)-1000(o)]TJ 153 0 TD (v)Tj 21 0 TD [(e)-16000(implemen)]TJ 210.9999 0 TD [(tation)-13000(of)]TJ /T12 1 Tf 171.9999 0 TD (tixArrowButton::Ini)Tj 417.0001 0 TD (tWidg)Tj 108.9999 0 TD (etRec)Tj /T15 1 Tf 123.0001 0 TD [(is)-16000(correct)-19000(but)-16000(it)-17000(ma)]TJ 364.9998 0 TD 14 Tc [(yb)13000(e)]TJ -1570.9998 48.9999 TD 0 Tc (cum)Tj 76 0 TD [(b)-1000(ersome)-17000(if)-17000(w)]TJ 236.9999 0 TD 18 Tc (ew)Tj 65.0001 0 TD 0 Tc (an)Tj 43 0 TD [(t)-17000(t)0(o)-18000(switc)]TJ 179 0 TD [(h)-18000(sup)-1000(erclasses.)-32000(F)]TJ 322.9999 0 TD [(or)-18000(example,)-16000(supp)-1000(ose)-20000(w)]TJ 423 0 TD 18 Tc (ew)Tj 65.0001 0 TD 0 Tc (an)Tj 42.9999 0 TD [(t)-17000(t)0(o)-17000(create)]TJ -1453.9999 50 TD [(a)-19000(new)-19000(base)-20000(class)-19000(TixArro)]TJ 477 0 TD [(wWidget,)-19000(whic)]TJ 276 0 TD [(h)-19000(presumably)-18000(de\014nes)-21000(common)-16000(attributes)-20000(of)-18000(an)]TJ 874.9998 0 TD (y)Tj -1627.9998 50 TD [(class)-17000(that)-17000(ha)]TJ 235.9999 0 TD (v)Tj 21 0 TD [(e)-16000(arro)]TJ 107 0 TD [(ws)-17000(in)-16000(them.)-25000(Then,)-17000(instead)-17000(of)-16000(deriving)-16000(TixArro)]TJ 873.0001 0 TD [(wButton)-17000(directly)-17000(from)]TJ -1237 50 TD (TixPrimitiv)Tj 217 0 TD [(e,)-10000(w)]TJ 68.9999 0 TD [(e)-14000(decide)-14000(to)-13000(deriv)]TJ 298.0001 0 TD [(e)-13000(TixArro)]TJ 178 0 TD [(wButton)-13000(from)-12000(TixArro)]TJ 416 0 TD [(wWidget,)-12000(whic)]TJ 268.9999 0 TD [(h)-13000(i)0(s)-13000(i)0(n)-12000(turn)]TJ -1446.9999 50 TD (deriv)Tj 90 0 TD [(ed)-14000(from)-13000(TixPrimitiv)]TJ 370.9999 0 TD (e:)Tj /T12 1 Tf -356.9999 112.0001 TD [(tixWidgetClass)-19000(tixArrowWidget)-19000({)]TJ 86.9999 50 TD [(-superclass)-19000(tixPrimitive)]TJ T* (...)Tj -86.9999 50 TD (})Tj T* [(tixWidgetClass)-19000(tixArrowButton)-19000({)]TJ 86.9999 50 TD [(-superclass)-19000(tixArrowWidget)]TJ 0 48.9999 TD (...)Tj -86.9999 50 TD (})Tj ET endstream endobj 289 0 obj << /ProcSet [/PDF /Text ] /Font << /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 291 0 obj << /Length 7142 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (60)Tj /T9 1 Tf 512 0 TD [(CHAPTER)-14000(6.)-27000(TIX)-14000(OBJECT)-15000(ORIENTED)-14000(PR)]TJ 856.9999 0 TD (OGRAMMING)Tj /T15 1 Tf -1368.9999 117 TD (No)Tj 51 0 TD 14 Tc (ww)Tj 73 0 TD (ew)Tj 61 0 TD 0 Tc [(ould)-13000(need)-15000(to)-13000(c)]TJ 255.9999 0 TD [(hange)-15000(all)-12000(the)-15000(metho)-1000(d)-13000(c)]TJ 418.0001 0 TD [(haining)-13000(calls)-13000(in)-14000(TixArro)]TJ 435.9999 0 TD [(wButton)-14000(from:)]TJ /T12 1 Tf -1190.9999 105.0002 TD (tixPrimitive::So)Tj 351 0 TD (meMet)Tj 108.9999 0 TD (hod)Tj /T15 1 Tf -563.9999 105 TD (to:)Tj /T12 1 Tf 104 105 TD (tixArrowWidget::)Tj 351 0 TD (SomeM)Tj 108.9999 0 TD (ethod)Tj /T15 1 Tf -563.9999 104.9998 TD [(This)-16000(ma)]TJ 153 0 TD [(y)-14000(b)-1000(e)-17000(a)-16000(lot)-15000(of)-15000(w)]TJ 274 0 TD [(ork)-16000(b)-1000(ecause)-18000(y)]TJ 251.9999 0 TD [(ou)-16000(ma)]TJ 116 0 TD 14 Tc [(yh)14000(a)]TJ 79.0001 0 TD 0 Tc 0 Tw (v)Tj 20.9999 0 TD 16 Tc (ec)Tj 51.0001 0 TD 0 Tc [(hained)-16000(metho)-1000(ds)-15000(in)-16000(man)]TJ 434.9999 0 TD [(y)-14000(places)-17000(in)-15000(the)]TJ -1380.9999 50 TD [(original)-12000(implemen)]TJ 327 0 TD (tatio)Tj 85 0 TD [(n)-11000(o)0(f)-14000(TixArro)]TJ 229 0 TD (wButton.)Tj -579 73 TD (The)Tj /T12 1 Tf 86 0 TD (tixChainMethod)Tj /T15 1 Tf 319 0 TD [(command)-11000(solv)]TJ 258.9999 0 TD [(es)-15000(this)-14000(problem.)-17000(It)-14000(will)-13000(automatically)-11000(\014nd)-14000(a)-14000(sup)-1000(er-)]TJ -725.9999 50 TD [(class)-15000(that)-14000(de\014nes)-16000(the)-15000(metho)-1000(d)-13000(w)]TJ 577 0 TD 15 Tc (ew)Tj 61.9999 0 TD 0 Tc (an)Tj 43 0 TD 14 Tc [(tt)14000(oc)]TJ 98.0001 0 TD 0 Tc [(hain)-14000(and)-14000(calls)-14000(this)-15000(metho)-1000(d)-13000(for)-14000(us.)-20000(F)]TJ 658.9999 0 TD [(or)-14000(example,)]TJ -1438.9999 50 TD [(the)-20000(follo)]TJ 154.9999 0 TD [(wing)-17000(is)-19000(a)-19000(b)-1000(etter)-21000(implemen)]TJ 495.9999 0 TD [(tation)-16000(of)]TJ /T12 1 Tf 178 0 TD (tixArrowButton::I)Tj 373 0 TD (nitWi)Tj 109.0001 0 TD (dgetR)Tj 108.9999 0 TD (ec)Tj /T15 1 Tf 60.0001 0 TD [(that)-20000(uses)]TJ /T12 1 Tf -1480 50 TD (tixChainMethod)Tj /T15 1 Tf 318.9999 0 TD [(to)-14000(a)]TJ 71.0001 0 TD (v)Tj 20.9999 0 TD [(oid)-12000(calling)]TJ /T12 1 Tf 200.0001 0 TD (tixPrimitive::In)Tj 351 0 TD (itWid)Tj 109 0 TD (getR)Tj 86.9999 0 TD (ec)Tj /T15 1 Tf 55 0 TD (directly:)Tj /T12 1 Tf -1108.9999 105.0002 TD [(proc)-21000(tixArrowButton::)]TJ 459.9999 0 TD (InitW)Tj 109 0 TD (idget)Tj 109 0 TD [(Rec)-19000({w})-21000({)]TJ -590.9999 48.9998 TD [(upvar)-21000(#0)-21000($w)-21000(data)]TJ 0 100.0001 TD [(tixChainMethod)-19000($w)-21000(InitWidgetRec)]TJ 0 49.9999 TD [(set)-21000(data\(count\))-20000(0)]TJ -86.9999 50 TD (})Tj /T15 1 Tf -104 105.0001 TD [(Notice)-18000(the)-18000(order)-18000(of)-17000(the)-18000(argumen)]TJ 603.9999 0 TD [(ts)-17000(for)-17000(tixChainMetho)-1000(d:)-25000(the)-18000(name)-16000(of)-17000(the)-18000(instance,)]TJ /T12 1 Tf 945.0001 0 TD ($w)Tj /T15 1 Tf 44 0 TD 17 Tc [(,i)17000(s)]TJ -1593 48.9999 TD 0 Tc [(passed)-15000(b)-1000(efore)-16000(the)-15000(metho)-1000(d)-13000(w)]TJ 509.9999 0 TD 15 Tc (ew)Tj 62.0001 0 TD 0 Tc (an)Tj 43 0 TD 14 Tc [(tt)14000(oc)]TJ 97.9999 0 TD 0 Tc (hain,)Tj /T12 1 Tf 105.0001 0 TD (InitWidgetRec)Tj /T15 1 Tf 285.9999 0 TD [(.)-17000(I)0(n)-14000(general,)-15000(if)-13000(the)-15000(metho)-1000(d)-14000(w)]TJ 528.0001 0 TD (e)Tj -1632 50 TD (w)Tj 29 0 TD (an)Tj 43 0 TD 13 Tc [(tt)13000(o)-1000(c)]TJ 96.9999 0 TD 0 Tc [(hain)-14000(has)-14000(1)-9000(+)]TJ /T2 1 Tf 238 0 TD (n)Tj /T15 1 Tf 39.0001 0 TD (argumen)Tj 157 0 TD (ts:)Tj /T12 1 Tf -499 105 TD [(proc)-21000(tixPrimitive::Me)]TJ 459.9999 0 TD (thodT)Tj 109 0 TD (oChai)Tj 109 0 TD [(n)-19000({)0(w)-21000(arg1)-21000(arg2)-21000(...)-21000(argn})-21000({)]TJ -590.9999 50 TD (...)Tj -86.9999 50 TD (})Tj /T15 1 Tf -104 105.0001 TD (W)Tj 40 0 TD [(e)-13000(call)-14000(it)-13000(with)-14000(the)-14000(argumen)]TJ 472 0 TD [(ts)-13000(in)-14000(the)-14000(follo)]TJ 243 0 TD [(wing)-11000(order)]TJ /T12 1 Tf -651 104.9999 TD [(tixChainMethod)-19000($w)-21000(MethodToChain)-19000($arg1)-21000($arg2)-21000(...)-21000($argn)]TJ /T15 1 Tf -104 105.0001 TD (W)Tj 40 0 TD [(e'll)-18000(come)-20000(bac)]TJ 245.9999 0 TD [(k)-20000(t)0(o)-20000(more)-20000(detailed)-20000(discussion)-21000(of)]TJ /T12 1 Tf 626.9999 0 TD (tixChainMethod)Tj /T15 1 Tf 326 0 TD (shortly)Tj 123.0001 0 TD (.)Tj 47.9999 0 TD (F)Tj 24.0001 0 TD [(or)-20000(the)-21000(time)]TJ -1434 50 TD [(b)-1000(eing,)-17000(let's)-17000(tak)]TJ 276 0 TD [(e)-17000(i)0(t)-17000(for)-16000(gran)]TJ 226 0 TD [(ted)-18000(that)]TJ /T12 1 Tf 167.9999 0 TD (tixChainMethod)Tj /T15 1 Tf 322 0 TD (m)Tj 35 0 TD [(ust)-16000(b)-1000(e)-17000(used)-18000(in)-17000(the)-17000(three)-19000(standard)]TJ -1026.9999 50 TD [(initialization)-11000(metho)-1000(ds:)]TJ /T12 1 Tf 426 0 TD (InitWidgetRec)Tj /T15 1 Tf 286 0 TD (,)Tj /T12 1 Tf 22 0 TD (ConstructWidget)Tj /T15 1 Tf 341 0 TD (and)Tj /T12 1 Tf 81 0 TD (SetBindings)Tj /T8 1 Tf -1156 137.9999 TD (6.4.2)Tj 171 0 TD [(The)-19000(ConstructWidget)-17000(Metho)-2000(d)]TJ /T15 1 Tf -171 100 TD (The)Tj /T12 1 Tf 86 0 TD (ConstructWidget)Tj /T15 1 Tf 341.9999 0 TD [(metho)-1000(d)-14000(i)0(s)-15000(used)-16000(to)-15000(creates)-16000(the)-16000(comp)-1000(onen)]TJ 737.9999 0 TD [(ts)-14000(of)-15000(a)-14000(widget)-15000(instance.)-22000(In)]TJ -1165.9999 50 TD [(the)-18000(case)-19000(of)-17000(TixArro)]TJ 365 0 TD [(wButton,)-18000(w)]TJ 216.9999 0 TD 18 Tc (ew)Tj 65.0001 0 TD 0 Tc (an)Tj 43 0 TD [(t)-17000(t)0(o)-17000(create)-19000(a)-18000(new)-18000(button)-17000(sub)]TJ 541 0 TD [(widget,)-19000(whose)-18000(name)-16000(is)]TJ /T12 1 Tf -1231 50 TD (button)Tj /T15 1 Tf 132 0 TD [(,)-14000(and)-16000(use)-17000(a)-15000(bitmap)-14000(to)-16000(displa)]TJ 523 0 TD [(y)-14000(a)0(n)-16000(arro)]TJ 169 0 TD [(w)-16000(o)0(n)-15000(this)-16000(button.)-24000(Assuming)-14000(the)-17000(bitmap)-14000(\014les)]TJ -824 50 TD [(are)-14000(stored)-15000(in)-14000(the)-14000(\014les)]TJ /T12 1 Tf 396.9999 0 TD (up.xbm)Tj /T15 1 Tf 132.0001 0 TD (,)Tj /T12 1 Tf 24 0 TD (down.xbm)Tj /T15 1 Tf 175.9999 0 TD (,)Tj /T12 1 Tf 24.0001 0 TD (left.xbm)Tj /T15 1 Tf 187.9999 0 TD (and)Tj /T12 1 Tf 81 0 TD (right.xbm)Tj /T15 1 Tf 198 0 TD [(,)-11000(the)-15000(string)-14000(substitution)]TJ /T12 1 Tf -1219.9999 48.9999 TD (@$data\(-direction)Tj 373 0 TD (\).xbm)Tj /T15 1 Tf 123.9999 0 TD [(will)-17000(giv)]TJ 137.0001 0 TD [(e)-18000(u)0(s)-18000(the)-19000(appropriate)-18000(bitmap)-16000(dep)-1000(ending)-19000(on)-18000(the)-18000(curren)]TJ 998 0 TD (t)Tj -1632 50 TD [(direction)-14000(option)-13000(of)-14000(the)-14000(widget)-14000(instance.)]TJ ET endstream endobj 292 0 obj << /ProcSet [/PDF /Text ] /Font << /T2 293 0 R /T8 35 0 R /T9 25 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 295 0 obj << /Length 6399 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(6.5.)-31000(DECLARING)-13000(AND)-14000(USING)-14000(V)]TJ 647.9999 0 TD (ARIABLES)Tj /T15 1 Tf 959.9999 0 TD (61)Tj /T12 1 Tf -1503.9998 117 TD [(proc)-21000(tixArrowButton::)]TJ 459.9999 0 TD (Const)Tj 109 0 TD (ructW)Tj 109 0 TD [(idget)-18000({w})-21000({)]TJ -590.9999 49.0002 TD [(upvar)-21000(#0)-21000($w)-21000(data)]TJ 0 100 TD [(tixChainMethod)-19000($w)-21000(ConstructWidget)]TJ T* [(set)-21000(data\(w:button\))-19000([button)-20000($w.button)-20000(-bitmap)-21000(@$data\(-directio)]TJ 1332 0 TD (n\).xb)Tj 109.0001 0 TD (m])Tj -1441 50 TD [(pack)-21000($data\(w:button\))-19000(-expand)-20000(yes)-21000(-fill)-21000(both)]TJ -86.9999 49 TD 0 Tw (})Tj /T15 1 Tf -42 127.9998 TD (The)Tj /T12 1 Tf 81 0 TD (tixArrowButton::C)Tj 373 0 TD (onstr)Tj 109 0 TD (uctWi)Tj 109 0 TD (dget)Tj /T15 1 Tf 94 0 TD [(metho)-1000(d)-8000(sho)]TJ 204.9999 0 TD [(wn)-10000(ab)-1000(o)]TJ 128.0001 0 TD (v)Tj 20.9999 0 TD [(e)-9000(sets)-10000(the)-10000(v)]TJ 190 0 TD (ariable)Tj /T12 1 Tf 131 0 TD (data\(w:button\))Tj /T15 1 Tf -1502.9999 50 TD [(to)-11000(b)-1000(e)-12000(the)-12000(pathname)-10000(of)-11000(the)]TJ /T12 1 Tf 475.9999 0 TD (button)Tj /T15 1 Tf 142.0001 0 TD (sub)Tj 60.9999 0 TD [(widget.)-17000(As)-12000(a)-11000(con)]TJ 301.0001 0 TD (v)Tj 20.9999 0 TD (en)Tj 40 0 TD [(tion)-11000(of)-11000(the)-12000(Tix)-10000(In)]TJ 308.0001 0 TD [(trinsics,)-12000(w)]TJ 182 0 TD 12 Tc (em)Tj 64.9998 0 TD 0 Tc (ust)Tj -1595.9998 50 TD [(declare)-15000(a)-13000(public)-14000(sub)]TJ 360.9999 0 TD (widget)Tj /T13 1 Tf 134.0001 0 TD (swid)Tj /T15 1 Tf 92 0 TD (b)Tj 22 0 TD [(y)-14000(storing)-14000(its)-14000(pathname)-12000(in)-14000(the)-14000(v)]TJ 565.9999 0 TD (ariable)Tj /T12 1 Tf 136.0001 0 TD (data\(w:)Tj /T13 1 Tf 153.9999 0 TD (swid)Tj /T12 1 Tf 79.0001 0 TD (\))Tj /T15 1 Tf 22 0 TD (.)Tj /T8 1 Tf -1566 158 TD (6.4.3)Tj 171 0 TD [(The)-19000(SetBindings)-17000(Metho)-2000(d)]TJ /T15 1 Tf -171 103 TD [(In)-15000(y)]TJ 74 0 TD [(our)-15000(in)]TJ 108.9999 0 TD [(terface,)-15000(y)]TJ 168.0001 0 TD [(ou)-15000(w)]TJ 87.9999 0 TD (an)Tj 43 0 TD [(t)-14000(t)0(o)-15000(handle)-15000(a)-14000(lot)-15000(of)-14000(ev)]TJ 402.9999 0 TD (en)Tj 40.0001 0 TD [(ts)-16000(in)-15000(the)-15000(sub)]TJ 231 0 TD [(widgets)-16000(that)-15000(mak)]TJ 320.9999 0 TD 13 Tc [(eu)13000(p)-2000(y)]TJ 112.9999 0 TD 0 Tc (our)Tj -1589.9998 50 TD [(mega-widget.)-15000(F)]TJ 281 0 TD [(or)-10000(instance,)-11000(when)-10000(someb)-1000(o)-1000(d)0(y)-9000(presses)-13000(the)-10000(button)-10000(in)-10000(a)-9000(TixArro)]TJ 1068.9999 0 TD [(wButton)-11000(widget,)]TJ -1349.9999 50.0001 TD (y)Tj 21 0 TD [(ou)-11000(w)]TJ 83.9999 0 TD (an)Tj 43.0001 0 TD [(t)-12000(the)-12000(button)-12000(to)-11000(handle)-12000(the)-12000(ev)]TJ 518.9999 0 TD (en)Tj 40 0 TD [(t.)-18000(The)]TJ /T12 1 Tf 130.0001 0 TD (SetBindings)Tj /T15 1 Tf 250.9999 0 TD [(metho)-1000(d)-11000(i)0(s)-11000(used)-13000(to)-12000(creates)-13000(ev)]TJ 505.0001 0 TD (en)Tj 39.9998 0 TD (t)Tj -1632.9998 50 TD [(bindings)-14000(for)-14000(the)-15000(comp)-1000(onen)]TJ 485.9999 0 TD [(ts)-14000(inside)-14000(the)-15000(mega-widget.)-18000(In)-14000(our)-14000(TixArro)]TJ 769.0001 0 TD [(wButton)-15000(example,)-13000(w)]TJ 377 0 TD (e)Tj -1632 50 TD [(use)-14000(the)-13000(bind)-13000(command)-10000(to)-13000(sp)-1000(ecify)-13000(that)-13000(the)-14000(metho)-1000(d)]TJ /T12 1 Tf 918.9999 0 TD (tixArrowButton::I)Tj 373.0001 0 TD (ncrCo)Tj 108.9999 0 TD (unt)Tj /T15 1 Tf 76 0 TD [(should)-12000(b)-1000(e)]TJ -1476.9999 49 TD [(called)-12000(eac)]TJ 171.9999 0 TD [(h)-12000(time)-11000(when)-12000(the)-13000(user)-13000(presses)-14000(the)-13000(\014rst)-12000(mouse)-12000(button.)-17000(As)-12000(a)-12000(result,)-13000(w)]TJ 1204 0 TD [(e)-12000(can)-12000(coun)]TJ 187.9999 0 TD [(t)-12000(the)]TJ -1563.9998 50 TD (n)Tj 22 0 TD (um)Tj 57.9999 0 TD [(b)-1000(e)0(r)-15000(o)0(f)-14000(times)-15000(the)-16000(user)-16000(has)-16000(pressed)-17000(on)-16000(the)-16000(button)-15000(\(ob)]TJ 948.0001 0 TD [(viously)-14000(for)-15000(no)-16000(b)-1000(etter)-17000(reasons)-16000(than)]TJ -1028 50 TD [(using)-14000(it)-13000(as)-14000(a)-14000(dum)]TJ 317 0 TD [(b)-12000(example\).)]TJ /T12 1 Tf -213 128 TD [(proc)-21000(tixArrowButton::)]TJ 459.9999 0 TD (SetBi)Tj 109 0 TD (nding)Tj 109 0 TD [(s)-19000({w})-21000({)]TJ -590.9999 50 TD [(upvar)-21000(#0)-21000($w)-21000(data)]TJ 0 98.9999 TD [(tixChainMethod)-19000($w)-21000(SetBindings)]TJ 0 100 TD [(bind)-21000($data\(w:button\))-19000(<1>)-21000("tixArrowButton:)]TJ 896.0001 0 TD (:Incr)Tj 109 0 TD [(Count)-18000($w")]TJ -1092 50 TD (})Tj 0 99 TD [(proc)-21000(tixArrowButton::)]TJ 459.9999 0 TD (IncrC)Tj 109 0 TD [(ount)-18000({w})-22000({)]TJ -481.9999 50 TD [(upvar)-21000(#0)-21000($w)-21000(data)]TJ 0 100 TD [(incr)-21000(data\(count\))]TJ -86.9999 49 TD (})Tj /T14 1 Tf -104 180 TD (6.5)Tj 153 0 TD [(Declaring)-23000(and)-23000(Using)-22000(V)]TJ 668 0 TD (ariables)Tj /T15 1 Tf -821 118.0001 TD [(The)-11000(priv)]TJ 153 0 TD [(ate)-11000(v)]TJ 86 0 TD [(ariables)-10000(of)-10000(a)-10000(widget)-11000(class)-11000(do)-10000(not)-11000(need)-11000(to)-11000(b)-1000(e)-11000(declared.)-18000(In)-11000(fact)-11000(they)-11000(can)-11000(b)-1000(e)-11000(initial-)]TJ -239 50 TD [(ized)-12000(and)-12000(used)-12000(an)]TJ 296.9999 0 TD [(ywhere)-12000(b)]TJ 161 0 TD 12 Tc [(ya)12000(n)]TJ 76.9999 0 TD 0 Tc [(y)-11000(metho)-1000(d.)-16000(Usually)]TJ 333.0001 0 TD 11 Tc [(,h)11000(o)]TJ 66 0 TD 0 Tc (w)Tj 28.9999 0 TD (ev)Tj 39.0001 0 TD [(er,)-12000(general)-12000(purp)-1000(ose)-12000(priv)]TJ 422.9999 0 TD [(ate)-12000(v)]TJ 87.0001 0 TD (ariables)Tj -1512 48.9999 TD [(are)-14000(initialized)-12000(b)]TJ 281.9999 0 TD [(y)-14000(the)]TJ /T12 1 Tf 107 0 TD (InitWidgetRec)Tj /T15 1 Tf 297.0001 0 TD [(metho)-1000(d)-13000(and)-13000(sub)]TJ 292 0 TD [(widget)-14000(v)]TJ 153.9999 0 TD [(ariables)-13000(are)-14000(initialized)-12000(in)-13000(the)]TJ /T12 1 Tf -1131.9999 50 TD (ConstructWidget)Tj /T15 1 Tf 340.9999 0 TD [(metho)-1000(d.)]TJ ET endstream endobj 296 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T13 15 0 R /T14 16 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 299 0 obj << /Length 7875 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (62)Tj /T9 1 Tf 506.9999 0 TD [(CHAPTER)-14000(6.)-32000(TIX)-14000(OBJECT)-15000(ORIENTED)-14000(PR)]TJ 862 0 TD (OGRAMMING)Tj /T15 1 Tf -1306.9999 117 TD 0 Tw (W)Tj 40 0 TD 10 Tc [(eh)10000(a)]TJ 71 0 TD 0 Tc (v)Tj 20.9999 0 TD [(e)-9000(seen)-11000(in)-10000(the)]TJ /T12 1 Tf 225 0 TD (tixArrowButton::In)Tj 394.9999 0 TD (itWid)Tj 109 0 TD (getR)Tj 87 0 TD (ec)Tj /T15 1 Tf 51.0001 0 TD [(example)-8000(that)-10000(the)-11000(priv)]TJ 382.9999 0 TD [(ate)-9000(v)]TJ 84.0001 0 TD (ariable)Tj /T12 1 Tf -1528 49.0002 TD (data\(count\))Tj /T15 1 Tf 255 0 TD (w)Tj 29 0 TD [(as)-14000(initialized)-14000(there.)-22000(Also,)-14000(the)-16000(priv)]TJ 619 0 TD [(ate)-15000(v)]TJ 90 0 TD (ariable)Tj /T12 1 Tf 135.9999 0 TD (data\(w:button\))Tj /T15 1 Tf 320.0001 0 TD (w)Tj 28.9999 0 TD [(as)-15000(initial-)]TJ -1477.9999 50 TD [(ized)-10000(in)]TJ /T12 1 Tf 125 0 TD (tixArrowButton:)Tj 328.9999 0 TD (:Cons)Tj 108.9999 0 TD (truct)Tj 109.0001 0 TD (Widge)Tj 109 0 TD (t)Tj /T15 1 Tf 28 0 TD [(and)-9000(subsequen)]TJ 256.9999 0 TD [(tly)-11000(used)-10000(in)]TJ /T12 1 Tf 195.0001 0 TD (tixArrowButton::S)Tj 372.9998 0 TD (etBin)Tj 109.0002 0 TD (dings)Tj /T15 1 Tf 108.9998 0 TD (.)Tj -1789.9998 74 TD [(In)-12000(con)]TJ 111 0 TD [(trast,)-13000(public)-12000(v)]TJ 253 0 TD [(ariables)-11000(m)]TJ 185 0 TD [(ust)-11000(b)-1000(e)-13000(declared)-13000(inside)-12000(the)-12000(class)-13000(declaration.)-17000(The)-13000(follo)]TJ 956 0 TD (wing)Tj -1567 50 TD (argumen)Tj 157 0 TD [(ts)-13000(are)-14000(used)-15000(to)-14000(declare)-15000(the)-14000(public)-14000(v)]TJ 617 0 TD [(ariables)-13000(and)-14000(sp)-1000(ecify)-14000(v)]TJ 389.9999 0 TD [(arious)-13000(options)-14000(for)-13000(them:)]TJ /T1 1 Tf -1101.9999 101.9998 TD (\017)Tj /T12 1 Tf 42 0 TD (-flag)Tj /T15 1 Tf 110 0 TD [(:)-20000(A)0(s)-16000(sho)]TJ 154 0 TD [(wn)-15000(in)-15000(the)-16000(class)-16000(declaration)-15000(in)-15000(\014gure)-16000(6.1,)-15000(the)]TJ /T12 1 Tf 826.9999 0 TD (-flag)Tj /T15 1 Tf 124 0 TD (argumen)Tj 157 0 TD [(t)-15000(declares)]TJ -1371.9999 50 TD [(all)-12000(the)-15000(public)-13000(v)]TJ 273 0 TD [(ariables)-14000(of)-13000(the)-14000(TixArro)]TJ 417.9999 0 TD [(wButton)-14000(class,)]TJ /T12 1 Tf 281 0 TD (-direction)Tj /T15 1 Tf 232 0 TD (and)Tj /T12 1 Tf 81 0 TD (-state)Tj /T1 1 Tf -1326.9999 78.0002 TD (\017)Tj /T12 1 Tf 42 0 TD (-configspec)Tj /T15 1 Tf 242 0 TD 20 Tc (:W)Tj 72 0 TD 0 Tc [(e)-15000(can)-17000(use)-17000(the)]TJ /T12 1 Tf 259 0 TD (-configspec)Tj /T15 1 Tf 255.9999 0 TD (argumen)Tj 157.0001 0 TD [(t)-15000(t)0(o)-16000(s)0(p)-1000(ecify)-16000(the)-17000(details)-16000(of)-15000(eac)]TJ 535.9998 0 TD (h)Tj -1521.9998 49 TD [(public)-13000(v)]TJ 144 0 TD [(ariable.)-17000(F)]TJ 176 0 TD [(or)-14000(example,)-12000(the)-14000(follo)]TJ 373.9999 0 TD [(wing)-12000(declaration)]TJ /T12 1 Tf -602.9999 84 TD [(-configspec)-20000({)]TJ 86.9999 50 TD [({-direction)-20000(direction)-20000(Direction)-20000(e})]TJ T* [({-state)-21000(state)-20000(State)-21000(normal})]TJ -86.9999 49 TD (})Tj /T15 1 Tf -91 83.9998 TD [(sp)-1000(eci\014es)-14000(that)-12000(the)]TJ /T12 1 Tf 316 0 TD (-direction)Tj /T15 1 Tf 230 0 TD (v)Tj 19.9999 0 TD [(ariable)-11000(has)-12000(the)-13000(resource)-14000(name)]TJ /T12 1 Tf 545.0001 0 TD (direction)Tj /T15 1 Tf 207.9999 0 TD [(and)-12000(resource)]TJ -1318.9999 50 TD (class)Tj /T12 1 Tf 97 0 TD (Direction)Tj /T15 1 Tf 198 0 TD [(;)-12000(its)-14000(default)-14000(v)]TJ 242 0 TD [(alue)-13000(is)]TJ /T12 1 Tf 128.9999 0 TD (e)Tj /T15 1 Tf 22 0 TD [(.)-18000(The)-14000(application)-13000(programmer)-12000(can)-14000(assign)-14000(v)]TJ 784.9999 0 TD (alue)Tj -1472.9998 50 TD [(to)-12000(this)-13000(v)]TJ 149 0 TD [(ariable)-12000(b)]TJ 156.9999 0 TD [(y)-13000(using)-12000(the)]TJ /T12 1 Tf 212.9999 0 TD (-direction)Tj /T15 1 Tf 230.0001 0 TD [(option)-12000(in)-13000(the)-13000(command)-10000(line)-13000(or)-12000(b)]TJ 583 0 TD [(y)-13000(s)0(p)-1000(ecifying)]TJ -1332 50 TD [(resources)-16000(in)-14000(the)-15000(Tk)-14000(option)-13000(database)-15000(with)-14000(its)-14000(resource)-16000(name)-13000(or)-14000(class.)-20000(The)-14000(declaration)]TJ 0 49.0001 TD (of)Tj /T12 1 Tf 47 0 TD (-state)Tj /T15 1 Tf 145 0 TD [(installs)-13000(similar)-11000(de\014nitions)-14000(for)-14000(that)-14000(v)]TJ 651.9999 0 TD (ariable.)Tj /T1 1 Tf -885.9999 78 TD (\017)Tj /T12 1 Tf 42 0 TD (-alias)Tj /T15 1 Tf 131.9999 0 TD [(:)-14000(The)]TJ /T12 1 Tf 108 0 TD (-alias)Tj /T15 1 Tf 140.0001 0 TD (argumen)Tj 157 0 TD [(t)-9000(i)0(s)-9000(used)-11000(to)-10000(sp)-1000(ecify)-10000(alternativ)]TJ 508.9999 0 TD [(e)-9000(names)-9000(for)-10000(public)-9000(v)]TJ 350 0 TD (ariables.)Tj -1395.9999 50 TD [(In)-14000(our)-14000(example,)-12000(the)-14000(setting)]TJ /T12 1 Tf 91 84 TD [(-alias)-21000({)]TJ 86.9999 50 TD [({-dir)-21000(-direction})]TJ -86.9999 48.9999 TD (})Tj /T15 1 Tf -91 84 TD [(sp)-1000(eci\014es)-16000(that)]TJ /T12 1 Tf 249.9999 0 TD (-dir)Tj /T15 1 Tf 101.0001 0 TD [(is)-14000(the)-15000(same)-13000(v)]TJ 238 0 TD [(ariable)-13000(as)]TJ /T12 1 Tf 185.9999 0 TD (-direction)Tj /T15 1 Tf 220.0001 0 TD [(.)-16000(Therefore,)-15000(when)-15000(the)-14000(applica-)]TJ -995 50 TD [(tion)-13000(issue)-15000(the)-14000(command)]TJ /T12 1 Tf 91 84 TD [(.up)-21000(config)-21000(-dir)-21000(w)]TJ /T15 1 Tf -91 83.0001 TD [(it)-13000(is)-14000(the)-15000(same)-13000(as)-13000(issuing)]TJ /T12 1 Tf 91 83.9999 TD [(.up)-21000(config)-21000(-direction)-20000(w)]TJ /T15 1 Tf -91 84.0001 TD (The)Tj /T12 1 Tf 83 0 TD (-alias)Tj /T15 1 Tf 141.9999 0 TD [(option)-11000(pro)]TJ 186.0001 0 TD [(vides)-11000(only)-11000(an)-11000(alternativ)]TJ 422 0 TD [(e)-11000(name)-11000(for)-11000(the)-12000(application)-10000(programmer.)]TJ -833 50 TD [(Inside)-9000(the)-10000(widget's)-9000(implemen)]TJ 517 0 TD [(tation)-6000(co)-1000(de,)-11000(the)-10000(v)]TJ 306 0 TD [(ariable)-8000(is)-9000(still)-8000(accessed)-12000(as)]TJ /T12 1 Tf 449.9999 0 TD (data\(-direction\))Tj /T15 1 Tf 351.9999 0 TD (,)Tj /T13 1 Tf -1624.9998 48.9999 TD (not)Tj /T12 1 Tf 72 0 TD (data\(-dir\))Tj /T15 1 Tf 220 0 TD (.)Tj /T8 1 Tf -396 138 TD (6.5.1)Tj 171 0 TD [(Initialization)-17000(of)-19000(Public)-18000(V)]TJ 607 0 TD (ariables)Tj /T15 1 Tf -778 100 TD [(When)-20000(a)-19000(widget)-20000(instance)-20000(is)-20000(created,)-22000(all)-18000(of)-19000(its)-20000(public)-19000(v)]TJ 1015.9999 0 TD [(ariables)-19000(are)-20000(initialized)-18000(b)]TJ 452.0001 0 TD [(y)-19000(the)-21000(Tix)]TJ -1468 50 TD (In)Tj 37 0 TD [(trinsics)-15000(b)-1000(efore)-15000(the)]TJ /T12 1 Tf 341 0 TD (InitWidgetRec)Tj /T15 1 Tf 297.9999 0 TD [(metho)-1000(d)-14000(i)0(s)-14000(called.)-20000(Therefore,)]TJ /T12 1 Tf 530.0001 0 TD (InitWidgetRec)Tj /T15 1 Tf 297.9999 0 TD [(and)-14000(an)]TJ 123.9999 0 TD (y)Tj -1627.9998 50 TD [(other)-16000(metho)-1000(d)-15000(o)0(f)-15000(this)-16000(widgte)-15000(instance)-17000(are)-16000(free)-16000(to)-16000(assume)-15000(that)-15000(all)-15000(the)-16000(public)-15000(v)]TJ 1413.9999 0 TD [(ariables)-15000(ha)]TJ 197.0001 0 TD (v)Tj 21 0 TD (e)Tj -1632 50 TD [(b)-1000(een)-15000(prop)-1000(erly)-14000(initialized)-13000(and)-13000(use)-15000(them)-13000(as)-14000(suc)]TJ 821 0 TD (h.)Tj -759 73 TD [(The)-15000(public)-13000(v)]TJ 230 0 TD [(ariables)-13000(are)-15000(initialized)-12000(b)]TJ 435 0 TD [(y)-14000(the)-14000(follo)]TJ 185 0 TD [(wing)-11000(criteria.)]TJ ET endstream endobj 300 0 obj << /ProcSet [/PDF /Text ] /Font << /T1 301 0 R /T8 35 0 R /T9 25 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 303 0 obj << /Length 6248 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(6.5.)-31000(DECLARING)-13000(AND)-14000(USING)-14000(V)]TJ 647.9999 0 TD (ARIABLES)Tj /T15 1 Tf 959.9999 0 TD (63)Tj /T1 1 Tf -1545.9998 117 TD 0 Tw (\017)Tj /T15 1 Tf 42 0 TD [(Step)-16000(1:)-22000(If)-16000(the)-16000(v)]TJ 288 0 TD [(alue)-16000(of)-15000(the)-17000(v)]TJ 233 0 TD [(ariable)-14000(is)-16000(sp)-1000(eci\014ed)-18000(b)]TJ 372.9999 0 TD [(y)-15000(the)-17000(creation)-16000(command,)-14000(this)-16000(v)]TJ 578.9999 0 TD (alue)Tj -1472.9998 49.0002 TD [(is)-16000(used.)-27000(F)]TJ 186.9999 0 TD [(or)-16000(example,)-16000(if)-15000(the)-18000(application)-15000(programmer)-14000(has)-17000(created)-18000(an)-16000(instance)-17000(in)-16000(the)]TJ -186.9999 50 TD (follo)Tj 78 0 TD [(wing)-11000(w)]TJ 126 0 TD (a)Tj 20 0 TD (y:)Tj /T12 1 Tf -133 109.9998 TD [(tixArrowButton)-19000(.arr)-21000(-direction)-20000(n)]TJ /T15 1 Tf -91 110 TD [(The)-14000(v)]TJ 105 0 TD (alue)Tj /T12 1 Tf 87 0 TD (n)Tj /T15 1 Tf 35.9999 0 TD [(will)-12000(b)-1000(e)-15000(used)-15000(for)-13000(the)-15000(-direction)-14000(v)]TJ 571.9999 0 TD (ariable.)Tj /T1 1 Tf -841.9999 98.0002 TD (\017)Tj /T15 1 Tf 42 0 TD [(Step)-13000(2:)-17000(if)-12000(step)-13000(1)-13000(fails)-11000(but)-13000(the)-13000(v)]TJ 549.9999 0 TD [(alue)-12000(of)-12000(the)-13000(v)]TJ 222 0 TD [(ariable)-12000(is)-12000(sp)-1000(eci\014ed)-15000(in)-12000(the)-13000(options)-12000(database,)]TJ -771.9999 50 TD [(that)-15000(v)]TJ 111 0 TD [(alue)-15000(is)-16000(used.)-24000(F)]TJ 272.9999 0 TD [(or)-15000(example,)-15000(if)-14000(the)-17000(user)-16000(has)-16000(created)-17000(an)-16000(instance)-16000(in)-15000(the)-17000(follo)]TJ 1079 0 TD (wing)Tj -1463 50 TD (w)Tj 28.9999 0 TD (a)Tj 20.0001 0 TD (y:)Tj /T12 1 Tf 42 110 TD [(option)-21000(add)-21000(*TixArrowButton.d)]TJ 613 0 TD (irec)Tj 86.9999 0 TD [(tion)-18000(w)]TJ -699.9999 50 TD [(tixArrowButton)-19000(.arr)]TJ /T15 1 Tf -91 109.9998 TD [(The)-14000(v)]TJ 105 0 TD (alue)Tj /T12 1 Tf 87 0 TD (w)Tj /T15 1 Tf 35.9999 0 TD [(will)-12000(b)-1000(e)-15000(used)-15000(for)-13000(the)]TJ /T12 1 Tf 365.0001 0 TD (-direction)Tj /T15 1 Tf 231 0 TD (v)Tj 19.9999 0 TD (ariable.)Tj /T1 1 Tf -885.9999 98.0002 TD (\017)Tj /T15 1 Tf 42 0 TD [(Step3:)-18000(if)-11000(step)-14000(2)-12000(also)-12000(fails,)-11000(the)-14000(default)-12000(v)]TJ 695 0 TD [(alue)-12000(sp)-1000(eci\014ed)-14000(in)-12000(the)]TJ /T12 1 Tf 369 0 TD (-configspec)Tj /T15 1 Tf 252.9999 0 TD [(secton)-13000(of)-12000(the)]TJ -1316.9999 48.9999 TD [(class)-14000(declaration)-14000(will)-12000(b)-1000(e)-15000(used.)]TJ /T10 1 Tf -104 147.9999 TD (T)Tj 32 0 TD [(yp)-1000(e)-16000(Chec)]TJ 194 0 TD (k)Tj 24 0 TD (er)Tj /T15 1 Tf -250 104.0001 TD (Y)Tj 28 0 TD [(ou)-14000(can)-14000(use)-15000(a)]TJ /T13 1 Tf 240 0 TD (typ)Tj 53 0 TD [(e)-16000(cke)]TJ 89.9999 0 TD [(cker)-15000(pr)]TJ 127.0001 0 TD (o)Tj 18.9999 0 TD (c)Tj 17.0001 0 TD (e)Tj 17 0 TD (dur)Tj 59 0 TD (e)Tj /T15 1 Tf 31.9999 0 TD [(to)-14000(c)]TJ 68.0001 0 TD (hec)Tj 58 0 TD [(k)-15000(whether)-16000(the)-14000(user)-15000(has)-15000(supplied)-14000(a)-13000(v)]TJ 648.9999 0 TD [(alue)-14000(of)-13000(the)]TJ -1456.9999 48.9999 TD [(correct)-15000(t)]TJ 153 0 TD [(yp)-1000(e)-14000(for)-13000(a)-13000(public)-13000(v)]TJ 318.9999 0 TD [(ariable.)-16000(The)-14000(t)]TJ 250.9999 0 TD [(yp)-1000(e)-14000(c)]TJ 95.0001 0 TD (hec)Tj 57.9999 0 TD (k)Tj 21.0001 0 TD [(er)-15000(is)-13000(sp)-1000(eci\014ed)-15000(in)-12000(the)]TJ /T12 1 Tf 374.9999 0 TD (-configspec)Tj /T15 1 Tf 253.0001 0 TD (section)Tj -1525 50 TD [(of)-11000(the)-13000(class)-12000(declaration)-12000(after)-12000(the)-12000(default)-12000(v)]TJ 746 0 TD [(alue.)-17000(The)-12000(follo)]TJ 263.9999 0 TD [(wing)-9000(co)-1000(de)-13000(sp)-1000(eci\014es)-14000(the)-12000(t)]TJ 432.0001 0 TD [(yp)-1000(e)-12000(c)]TJ 93 0 TD (hec)Tj 58 0 TD (k)Tj 20.9998 0 TD (er)Tj -1613.9998 50 TD [(pro)-1000(cedure)]TJ /T12 1 Tf 193 0 TD (CheckDirection)Tj /T15 1 Tf 319 0 TD [(for)-13000(the)]TJ /T12 1 Tf 135 0 TD (-direction)Tj /T15 1 Tf 231.9999 0 TD (v)Tj 20.0001 0 TD (ariable:)Tj /T12 1 Tf -708.0001 126.0001 TD [(-configspec)-19000({)]TJ 87.0001 50 TD [({-direction)-20000(direction)-20000(Direction)-20000(e)-21000(CheckDirection})]TJ T* [({-state)-20000(state)-21000(State)-21000(normal})]TJ -87.0001 50 TD (})Tj 0 48.9999 TD (...)Tj -86.9999 50 TD (})Tj 0 100 TD [(proc)-21000(CheckDirection)-19000({dir})-20000({)]TJ 86.9999 50.0001 TD [(if)-21000({[lsearch)-20000({n)-22000(s)-21000(w)-22000(e})-21000($dir])-21000(!=)-21000(-1})-22000({)]TJ 87.0001 48.9999 TD [(return)-21000($dir)]TJ -87.0001 50.0001 TD [(})-22000(else)-21000({)]TJ 87.0001 50 TD [(error)-21000("wrong)-20000(direction)-20000(value)-21000(\\"$dir\\"")]TJ -174 50 TD (})Tj /T15 1 Tf -104 125.9999 TD [(Notice)-17000(that)-16000(no)-16000(t)]TJ 299.9999 0 TD [(yp)-1000(e)-17000(c)]TJ 98.0001 0 TD (hec)Tj 58 0 TD (k)Tj 21 0 TD [(er)-17000(has)-17000(b)-1000(een)-17000(sp)-1000(eci\014ed)-18000(for)-16000(the)]TJ /T12 1 Tf 538 0 TD (-state)Tj /T15 1 Tf 147 0 TD (v)Tj 19.9999 0 TD [(ariable)-15000(and)-16000(th)]TJ 259 0 TD [(us)-16000(its)-17000(v)]TJ 135.9999 0 TD (alue)Tj -1576.9998 50 TD [(will)-12000(not)-14000(b)-1000(e)-15000(c)]TJ 226 0 TD (hec)Tj 58 0 TD (k)Tj 21 0 TD (ed.)Tj -243 73 TD [(If)-12000(a)-11000(t)]TJ 87 0 TD [(yp)-1000(e)-12000(c)]TJ 93 0 TD (hec)Tj 57.9999 0 TD (k)Tj 21.0001 0 TD [(er)-14000(pro)-1000(cedure)-13000(is)-12000(sp)-1000(eci\014ed)-13000(for)-12000(a)-11000(public)-11000(v)]TJ 679 0 TD [(ariable,)-11000(this)-12000(pro)-1000(cedure)-14000(will)-10000(b)-1000(e)-12000(called)]TJ -1000 50 TD [(once)-15000(the)-14000(v)]TJ 186 0 TD [(alue)-13000(of)-14000(a)-13000(public)-14000(v)]TJ 314 0 TD [(ariable)-12000(is)-14000(determined)-14000(b)]TJ 415.9999 0 TD [(y)-14000(the)-14000(three)-15000(steps)-16000(men)]TJ 394 0 TD [(tioned)-12000(ab)-1000(o)]TJ 190 0 TD (v)Tj 21 0 TD (e.)Tj ET endstream endobj 304 0 obj << /ProcSet [/PDF /Text ] /Font << /T1 301 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T13 15 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 306 0 obj << /Length 7320 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (64)Tj /T9 1 Tf 506.9999 0 TD [(CHAPTER)-14000(6.)-32000(TIX)-14000(OBJECT)-15000(ORIENTED)-14000(PR)]TJ 862 0 TD (OGRAMMING)Tj /T8 1 Tf -1368.9999 117 TD (6.5.2)Tj 171 0 TD [(Public)-19000(V)]TJ 213 0 TD [(ariable)-18000(Con\014guration)-19000(Metho)-2000(ds)]TJ /T15 1 Tf -384 100 TD [(After)-10000(a)-9000(widget)-10000(instance)-10000(is)-10000(created,)-11000(the)-10000(user)-11000(can)-10000(assign)-9000(new)-10000(v)]TJ 1053.9999 0 TD [(alues)-10000(to)-9000(the)-10000(public)-9000(v)]TJ 353 0 TD [(ariables)-9000(using)]TJ -1406.9999 50 TD [(the)-14000(con\014gure)-15000(metho)-1000(d.)-17000(F)]TJ 440 0 TD [(or)-13000(example,)-12000(the)-14000(follo)]TJ 372.9999 0 TD [(wing)-11000(co)-1000(de)-14000(c)]TJ 209 0 TD [(hanges)-14000(the)]TJ /T12 1 Tf 208.0001 0 TD (-direction)Tj /T15 1 Tf 231 0 TD 0 Tw (v)Tj 19.9999 0 TD [(ariable)-13000(of)]TJ -1480.9999 50 TD (the)Tj /T12 1 Tf 71 0 TD (.arr)Tj /T15 1 Tf 102 0 TD [(instance)-14000(to)]TJ /T12 1 Tf 211.9999 0 TD (n)Tj /T15 1 Tf 22 0 TD (.)Tj /T12 1 Tf -302.9999 111.0002 TD [(.arr)-21000(configure)-20000(-direction)-19000(n)]TJ /T15 1 Tf -42 111 TD [(In)-14000(order)-14000(for)-14000(con\014guration)-13000(to)-13000(w)]TJ 554 0 TD [(ork,)-13000(y)]TJ 105 0 TD [(ou)-13000(ha)]TJ 100 0 TD (v)Tj 20.9999 0 TD [(e)-14000(t)0(o)-13000(de\014ne)-15000(a)-13000(con\014guration)-14000(metho)-1000(d)-13000(that)-13000(do)-1000(es)]TJ -841.9999 50 TD [(what)-17000(the)-18000(programmer)-15000(exp)-1000(ects.)-30000(The)-17000(con\014guration)-17000(metho)-1000(d)-16000(o)0(f)-17000(a)-17000(public)-17000(v)]TJ 1328.9999 0 TD [(ariable)-16000(is)-17000(in)]TJ 218.0001 0 TD (v)Tj 21 0 TD (ok)Tj 42 0 TD (ed)Tj -1610 48.9998 TD (whenev)Tj 132.9999 0 TD [(er)-13000(the)-12000(user)-13000(calls)-11000(the)-12000(con\014gure)-12000(metho)-1000(d)-11000(t)0(o)-12000(c)]TJ 751.0001 0 TD [(hange)-11000(the)-13000(v)]TJ 206.9999 0 TD [(alue)-10000(of)-11000(this)-12000(v)]TJ 228 0 TD [(ariable.)-16000(The)-12000(name)]TJ -1318.9999 50 TD [(of)-13000(a)-13000(con\014guration)-13000(metho)-1000(d)-12000(m)]TJ 517 0 TD [(ust)-13000(b)-1000(e)-14000(the)-14000(name)-12000(of)-13000(the)-14000(public)-13000(v)]TJ 567 0 TD [(ariable)-12000(pre\014xed)-14000(b)]TJ 313.9999 0 TD [(y)-14000(the)-14000(creation)]TJ -1397.9999 50 TD [(command)-11000(of)-14000(the)-15000(class)-15000(and)]TJ /T12 1 Tf 487.9999 0 TD (::config)Tj /T15 1 Tf 175.9999 0 TD 17 Tc (.F)Tj 53 0 TD 0 Tc [(or)-14000(example,)-12000(the)-15000(name)-13000(con\014guration)-14000(metho)-1000(d)-13000(for)-14000(the)]TJ /T12 1 Tf -716.9999 50 TD (-direction)Tj /T15 1 Tf 228 0 TD (v)Tj 20 0 TD [(ariable)-10000(of)-10000(the)-11000(TixArro)]TJ 392 0 TD [(wButton)-11000(class)-11000(is)]TJ /T12 1 Tf 300.9999 0 TD (tixArrowButton::co)Tj 395.0001 0 TD (nfig-)Tj 108.9999 0 TD (direc)Tj 109.0001 0 TD (tion)Tj /T15 1 Tf 86.9998 0 TD (.)Tj -1640.9998 50 TD [(The)-14000(follo)]TJ 163 0 TD [(wing)-12000(co)-1000(de)-14000(implemen)]TJ 370 0 TD [(ts)-12000(this)-14000(metho)-1000(d:)]TJ /T12 1 Tf -429 111 TD [(proc)-21000(tixArrowButton::)]TJ 459.9999 0 TD (confi)Tj 109 0 TD (g-dir)Tj 109 0 TD (ectio)Tj 109 0 TD [(n)-19000({)0(w)-21000(value})-21000({)]TJ -699.9999 50 TD [(upvar)-21000(#0)-21000($w)-21000(data)]TJ 0 99.0001 TD [($data\(w:button\))-19000(config)-20000(-bitmap)-21000(@$value.xbm)]TJ -86.9999 50 TD (})Tj /T15 1 Tf -104 111 TD [(Notice)-11000(that)-10000(when)]TJ /T12 1 Tf 318.9999 0 TD (tixArrowButton:)Tj 328.9999 0 TD (:conf)Tj 109 0 TD (ig-di)Tj 109 0 TD (recti)Tj 109.0001 0 TD (on)Tj /T15 1 Tf 50.9999 0 TD [(is)-11000(called,)-10000(the)]TJ /T12 1 Tf 233.0001 0 TD (value)Tj /T15 1 Tf 119.9999 0 TD [(parameter)-10000(con-)]TJ -1378.9999 50 TD [(tains)-17000(the)-18000(new)-17000(v)]TJ 287.9999 0 TD [(alue)-17000(of)-17000(the)]TJ /T12 1 Tf 216.0001 0 TD (-direction)Tj /T15 1 Tf 234.9999 0 TD (v)Tj 20.0001 0 TD [(ariable)-16000(but)]TJ /T12 1 Tf 219 0 TD (data\(-direction\))Tj /T15 1 Tf 365.9999 0 TD (con)Tj 61.0001 0 TD [(tains)-17000(the)]TJ /T12 1 Tf 180 0 TD (old)Tj /T15 1 Tf -1585 50 TD (v)Tj 20 0 TD [(alue.)-24000(This)-16000(is)-16000(useful)-16000(when)-17000(the)-17000(con\014guration)-15000(metho)-1000(d)-15000(needs)-18000(to)-16000(c)]TJ 1148.9999 0 TD (hec)Tj 58 0 TD [(k)-17000(the)-17000(previous)-16000(v)]TJ 299.9999 0 TD [(alue)-16000(of)]TJ -1526.9998 50 TD [(the)-14000(v)]TJ 90.9999 0 TD [(ariable)-13000(b)-1000(efore)-15000(taking)-13000(in)-13000(the)-15000(new)-14000(v)]TJ 614.0001 0 TD (alue.)Tj -643 73 TD 20 Tc [(I)20000(fat)]TJ 103.9999 0 TD 0 Tc [(yp)-1000(e)-20000(c)]TJ 101.0001 0 TD (hec)Tj 57.9999 0 TD (k)Tj 21.0001 0 TD [(er)-22000(is)-20000(de\014ned)-21000(for)-20000(a)-20000(v)]TJ 384 0 TD [(ariable,)-20000(it)-20000(will)-18000(b)-1000(e)-21000(called)-20000(b)-1000(efore)-21000(the)-20000(con\014guration)]TJ -730 50 TD [(metho)-1000(d)-18000(i)0(s)-18000(called.)-32000(Therefore,)-20000(the)-19000(con\014guration)-18000(metho)-1000(d)-18000(can)-19000(assume)-18000(that)-18000(the)-19000(t)]TJ 1456.9999 0 TD [(yp)-1000(e)-19000(o)0(f)-18000(the)]TJ /T12 1 Tf -1456.9999 50 TD (value)Tj /T15 1 Tf 123 0 TD [(parameter)-13000(is)-14000(got)-14000(is)-13000(alw)]TJ 415 0 TD (a)Tj 20 0 TD [(ys)-13000(correct.)]TJ -496 72.9999 TD [(Sometimes)-11000(it)-12000(is)-13000(necessary)-15000(to)-12000(o)]TJ 540 0 TD (v)Tj 20.9999 0 TD [(erride)-14000(the)-13000(v)]TJ 207.0001 0 TD [(alue)-12000(supplied)-13000(b)]TJ 270.9999 0 TD [(y)-13000(the)-13000(user.)-19000(The)-13000(follo)]TJ 371 0 TD [(wing)-10000(co)-1000(de)]TJ -1471.9999 50 TD [(illustrates)-14000(this)-14000(idea:)]TJ /T12 1 Tf 104 111.0001 TD [(proc)-21000(tixArrowButton::)]TJ 459.9999 0 TD (confi)Tj 109 0 TD (g-dir)Tj 109 0 TD (ectio)Tj 109 0 TD [(n)-19000({)0(w)-21000(value})-21000({)]TJ -699.9999 50 TD [(upvar)-21000(#0)-21000($w)-21000(data)]TJ 0 99 TD [(if)-21000({$value)-21000(==)-21000("n"})-21000({)]TJ 87.0001 49.9999 TD [(set)-21000(value)-21000(s)]TJ T* [(set)-21000(data\(-direction\))-19000($value)]TJ -87.0001 50 TD (})Tj 0 100 TD [($data\(w:button\))-19000(config)-20000(-bitmap)-21000(@$value.xbm)]TJ 0 48.9999 TD [(return)-21000($data\(-directio)]TJ 481.9999 0 TD (n\))Tj -568.9999 50 TD (})Tj /T15 1 Tf -104 111 TD [(Notice)-15000(the)-16000(ab)-1000(o)]TJ 268.9999 0 TD (v)Tj 21.0001 0 TD [(e)-14000(c)0(o)-1000(d)0(e)-16000(alw)]TJ 191 0 TD (a)Tj 20 0 TD [(ys)-13000(o)]TJ 71 0 TD (v)Tj 21 0 TD [(errides)-16000(v)]TJ 154.9999 0 TD [(alues)-14000(of)]TJ /T12 1 Tf 152.0001 0 TD (n)Tj /T15 1 Tf 37 0 TD (to)Tj /T12 1 Tf 50.9999 0 TD (s)Tj /T15 1 Tf 22 0 TD 21 Tc [(.I)21000(f)7000(y)]TJ 96.0001 0 TD 0 Tc [(ou)-14000(need)-16000(to)-15000(o)]TJ 228 0 TD (v)Tj 21 0 TD [(erride)-15000(the)-15000(v)]TJ 209.9998 0 TD (alue,)Tj -1564.9998 50 TD (y)Tj 21 0 TD [(ou)-13000(m)]TJ 92 0 TD [(ust)-13000(do)-14000(the)-14000(follo)]TJ 274.9999 0 TD [(wing)-12000(t)]TJ 113.0001 0 TD (w)Tj 29 0 TD [(o)-13000(things:)]TJ ET endstream endobj 307 0 obj << /ProcSet [/PDF /Text ] /Font << /T8 35 0 R /T9 25 0 R /T12 14 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 309 0 obj << /Length 6531 >> stream BT /T9 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc [(6.6.)-31000(SUMMAR)]TJ 285.9999 0 TD [(Y)-13000(O)0(F)-15000(WIDGET)-13000(INST)]TJ 408.0001 0 TD [(ANCE)-14000(INITIALIZA)]TJ 365 0 TD (TION)Tj /T15 1 Tf 548.9998 0 TD (65)Tj /T1 1 Tf -1545.9998 117 TD 0 Tw (\017)Tj /T15 1 Tf 42 0 TD [(Explicitly)-8000(set)-10000(the)-10000(instance)-10000(v)]TJ 489 0 TD [(ariable)-8000(inside)-9000(the)-10000(con\014guration)-9000(metho)-1000(d)-9000(\(the)]TJ /T12 1 Tf 787.9999 0 TD [(set)-21000(data\(-direction\))]TJ -1276.9999 49.0002 TD ($value)Tj /T15 1 Tf 144 0 TD (line\).)Tj /T1 1 Tf -186 106 TD (\017)Tj /T15 1 Tf 42 0 TD [(Return)-14000(the)-15000(mo)-1000(di\014ed)-12000(v)]TJ 402 0 TD [(alue)-13000(from)-13000(the)-14000(con\014guration)-13000(metho)-1000(d.)]TJ -506 131 TD [(If)-20000(y)]TJ 68.9999 0 TD [(ou)-21000(do)-20000(not)-21000(need)-22000(to)-20000(o)]TJ 391 0 TD (v)Tj 21.0001 0 TD [(erride)-22000(the)-21000(v)]TJ 222.9999 0 TD [(alue,)-21000(y)]TJ 128 0 TD [(ou)-21000(don't)-20000(need)-22000(to)-20000(return)-22000(an)]TJ 518 0 TD [(ything)-20000(from)-19000(the)]TJ -1349.9999 50 TD [(con\014guration)-19000(metho)-1000(d.)]TJ 442 0 TD [(In)-20000(this)-20000(case,)-22000(the)-20000(Tix)-20000(In)]TJ 449.9999 0 TD [(trinsics)-20000(will)-18000(assign)-20000(the)-20000(new)-21000(v)]TJ 551.0001 0 TD [(alue)-19000(to)-19000(the)]TJ -1443 50 TD [(instance)-15000(v)]TJ 182 0 TD [(ariable)-12000(for)-14000(y)]TJ 220 0 TD (ou.)Tj /T10 1 Tf -402 155 TD [(Con\014guration)-13000(Metho)-1000(ds)-15000(and)-15000(Public)-13000(V)]TJ 775 0 TD [(ariable)-14000(Initiali)]TJ 299 0 TD (zation)Tj /T15 1 Tf -1074 104.9998 TD (F)Tj 24 0 TD [(or)-10000(e\016ciency)-11000(reasons,)-11000(the)-11000(con\014guration)-9000(metho)-1000(ds)-10000(are)-10000(not)-10000(called)-10000(during)-10000(the)-10000(in)]TJ 1332.9999 0 TD [(tialization)-8000(of)-9000(the)]TJ -1356.9999 50 TD [(public)-13000(v)]TJ 143.9999 0 TD [(ariables.)-17000(If)-13000(y)]TJ 230.0001 0 TD [(ou)-12000(w)]TJ 85 0 TD (an)Tj 43 0 TD [(t)-13000(t)0(o)-13000(force)-14000(the)-14000(con\014guration)-12000(metho)-1000(d)-13000(t)0(o)-13000(b)-1000(e)-14000(called)-12000(for)-13000(a)-13000(particular)]TJ -502 50 TD [(public)-17000(v)]TJ 148 0 TD [(ariable,)-16000(y)]TJ 172 0 TD [(ou)-16000(can)-17000(sp)-1000(ecify)-18000(it)-16000(in)-17000(the)]TJ /T12 1 Tf 449.9999 0 TD (-forcecall)Tj /T15 1 Tf 235.0001 0 TD [(section)-18000(of)-16000(the)-18000(class)-17000(declaration.)-27000(In)]TJ -1005 50 TD [(the)-14000(follo)]TJ 149 0 TD [(wing)-11000(example,)-12000(w)]TJ 300 0 TD [(e)-13000(force)-14000(the)-14000(con\014guration)-13000(metho)-1000(d)-13000(o)0(f)-12000(the)]TJ /T12 1 Tf 720.9999 0 TD (-direction)Tj /T15 1 Tf 232 0 TD (v)Tj 20 0 TD [(ariable)-12000(to)-13000(b)-1000(e)]TJ -1421.9999 50 TD [(called)-14000(during)-13000(in)]TJ 283 0 TD (tialization:)Tj /T12 1 Tf -179 131.0001 TD [(-forcecall)-20000({)]TJ 86.9999 50 TD (-direction)Tj -86.9999 50 TD (})Tj /T14 1 Tf -104 185 TD (6.6)Tj 153 0 TD [(Summary)-24000(of)-22000(Widget)-23000(Instance)-22000(Initialization)]TJ /T15 1 Tf -153 118.9999 TD [(The)-14000(creation)-13000(of)-13000(a)-13000(widget)-13000(instance)-14000(is)-13000(a)-13000(complex)-12000(pro)-1000(cess.)-20000(Y)]TJ 1043.9999 0 TD [(ou)-12000(m)]TJ 91 0 TD [(ust)-13000(understand)-14000(ho)]TJ 327.0001 0 TD 13 Tc [(wi)13000(tw)]TJ 113 0 TD 0 Tc (orks)Tj -1575 50 TD [(in)-13000(order)-14000(to)-14000(write)-14000(y)]TJ 334 0 TD [(our)-13000(widget)-14000(classes.)-19000(The)-14000(follo)]TJ 518 0 TD [(wing)-11000(is)-13000(the)-14000(steps)-15000(tak)]TJ 370.9999 0 TD [(en)-14000(b)]TJ 77 0 TD [(y)-13000(the)-14000(Tix)-13000(In)]TJ 220 0 TD (trinsics)Tj -1519.9999 49.0001 TD [(when)-14000(a)-14000(widget)-14000(instance)-14000(is)-14000(created:)]TJ /T1 1 Tf 62 132 TD (\017)Tj /T15 1 Tf 42 0 TD [(When)-16000(the)-18000(user)-17000(creates)-18000(an)-17000(instance,)-17000(the)-17000(public)-16000(v)]TJ 886.9999 0 TD [(ariables)-16000(are)-17000(in)]TJ 261 0 TD [(tilized)-16000(as)-16000(discussed)-18000(in)]TJ -1147.9999 49.9999 TD [(section)-19000(6.5.1.)-30000(T)]TJ 301 0 TD [(yp)-1000(e)-19000(c)]TJ 100 0 TD (hec)Tj 57.9999 0 TD (k)Tj 21.0001 0 TD [(ers)-21000(are)-19000(alw)]TJ 206.9999 0 TD (a)Tj 20.0001 0 TD [(ys)-17000(called)-18000(if)-18000(they)-19000(are)-19000(sp)-1000(eci\014ed.)]TJ 589.9999 0 TD (Con\014guration)Tj -1296.9999 50 TD [(metho)-1000(ds)-13000(are)-15000(called)-13000(only)-13000(if)-13000(they)-15000(are)-14000(sp)-1000(eci\014ed)-15000(in)-14000(the)]TJ /T12 1 Tf 933 0 TD (-forcecall)Tj /T15 1 Tf 231.9999 0 TD (section.)Tj /T1 1 Tf -1206.9999 105.0001 TD (\017)Tj /T15 1 Tf 42 0 TD (The)Tj /T12 1 Tf 88 0 TD (InitWidgetRec)Tj /T15 1 Tf 301 0 TD [(metho)-1000(d)-16000(i)0(s)-17000(called.)-27000(It)-18000(should)-16000(initialize)-16000(priv)]TJ 768 0 TD [(ate)-17000(v)]TJ 91.9999 0 TD [(ariable,)-16000(p)-1000(ossibly)]TJ -1248.9999 50 TD [(according)-14000(to)-13000(the)-15000(v)]TJ 328.9999 0 TD [(alues)-14000(the)-14000(public)-14000(v)]TJ 320.0001 0 TD (ariables.)Tj /T1 1 Tf -691 104.9999 TD (\017)Tj /T15 1 Tf 42 0 TD (The)Tj /T12 1 Tf 86 0 TD (ConstructWidget)Tj /T15 1 Tf 341.9999 0 TD [(metho)-1000(d)-14000(i)0(s)-14000(called.)-21000(It)-15000(should)-14000(create)-16000(the)-16000(comp)-1000(onen)]TJ 888 0 TD [(t)-14000(widgets.)-21000(It)]TJ -1315.9999 50 TD [(should)-13000(also)-14000(store)-15000(the)-14000(names)-13000(of)-13000(public)-14000(sub)]TJ 748 0 TD [(widgets)-14000(in)]TJ 184 0 TD [(to)-14000(the)-14000(sub)]TJ 182.9999 0 TD [(widget)-14000(v)]TJ 154.0001 0 TD (ariables.)Tj /T1 1 Tf -1311 105 TD (\017)Tj /T15 1 Tf 42 0 TD (The)Tj /T12 1 Tf 86 0 TD (SetBinding)Tj /T15 1 Tf 233 0 TD [(metho)-1000(d)-13000(i)0(s)-15000(called.)-20000(It)-15000(should)-15000(create)-16000(bindings)-14000(for)-14000(the)-16000(comp)-1000(onen)]TJ 1119 0 TD [(t)-14000(wid-)]TJ -1438 50 TD (gets.)Tj -104 131 TD [(After)-13000(the)-13000(ab)-1000(o)]TJ 242 0 TD (v)Tj 20.9999 0 TD [(e)-13000(steps,)-14000(the)-13000(creation)-13000(of)-12000(the)-13000(instance)-13000(is)-13000(complete)-12000(and)-12000(the)-13000(user)-14000(can)-13000(iterate)-13000(with)]TJ -262.9999 50 TD [(it)-14000(using)-13000(its)-14000(widget)-14000(command.)]TJ ET endstream endobj 310 0 obj << /ProcSet [/PDF /Text ] /Font << /T1 301 0 R /T9 25 0 R /T10 20 0 R /T12 14 0 R /T14 16 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 312 0 obj << /Length 3835 >> stream BT /T15 1 Tf 0.24 0 0 -0.24 126 736.02 Tm 0 g /GS1 gs 0 Tc (66)Tj /T9 1 Tf 506.9999 0 TD [(CHAPTER)-14000(6.)-32000(TIX)-14000(OBJECT)-15000(ORIENTED)-14000(PR)]TJ 862 0 TD (OGRAMMING)Tj /T14 1 Tf -1368.9999 117 TD (6.7)Tj 153 0 TD [(Loading)-23000(the)-23000(New)-21000(Classes)]TJ /T15 1 Tf -153 114.0002 TD (Usually)Tj 134 0 TD 15 Tc (,y)Tj 48 0 TD 0 Tc [(ou)-16000(can)-16000(use)-17000(a)-16000(separate)-17000(script)-17000(\014le)-16000(to)-16000(store)-17000(the)-17000(implemen)]TJ 1009.9999 0 TD (tai)Tj 48.0001 0 TD [(on)-13000(of)-16000(eac)]TJ 162.9999 0 TD [(h)-17000(new)-16000(widget)]TJ -1402.9999 50 TD [(class.)-18000(If)-13000(y)]TJ 175 0 TD [(ou)-13000(ha)]TJ 100 0 TD 0 Tw (v)Tj 21 0 TD [(e)-13000(sev)]TJ 85.9999 0 TD [(eral)-14000(of)-13000(those)-14000(\014les,)-13000(it)-13000(will)-12000(b)-1000(e)-14000(a)-13000(g)0(o)-1000(o)-1000(d)-13000(idea)-13000(to)-14000(group)-13000(the)-14000(\014les)-14000(in)]TJ 1083 0 TD [(to)-12000(a)-13000(single)]TJ -1464.9999 50 TD [(directory)-15000(and)-13000(create)-16000(a)]TJ /T12 1 Tf 413.9999 0 TD (tclIndex)Tj /T15 1 Tf 188.0001 0 TD [(\014le)-14000(for)-14000(them)-13000(so)-14000(that)-14000(the)-14000(new)-15000(classes)-15000(can)-14000(b)-1000(e)-14000(auto-loaded.)]TJ -540 72.9998 TD [(Supp)-1000(ose)-15000(y)]TJ 184 0 TD [(ou)-13000(ha)]TJ 100 0 TD (v)Tj 21 0 TD [(e)-14000(put)-14000(the)-14000(class)-14000(\014les)-15000(in)]TJ 394 0 TD [(to)-13000(the)-14000(directory)]TJ /T12 1 Tf 298 0 TD (/usr/my/tix/cla)Tj 328.9999 0 TD (sses)Tj /T15 1 Tf 88 0 TD 15 Tc (.Y)Tj 55.0001 0 TD 0 Tc [(ou)-13000(can)]TJ -1531 50 TD [(create)-15000(the)]TJ /T12 1 Tf 193.9999 0 TD (tclIndex)Tj /T15 1 Tf 188 0 TD [(\014le)-14000(using)-14000(the)]TJ /T12 1 Tf 246.9999 0 TD (tools/tixindex)Tj /T15 1 Tf 319 0 TD [(program)-12000(that)-14000(comes)-14000(with)-13000(Tix:)]TJ /T12 1 Tf -843.9999 115.0002 TD [(cd)-21000(/usr/my/tix/classe)]TJ 459.9999 0 TD (s)Tj -459.9999 50 TD (/usr/my/Tix4.0/t)Tj 351 0 TD (ools/)Tj 108.9999 0 TD (tixin)Tj 109 0 TD [(dex)-19000(*.tcl)]TJ /T15 1 Tf -672.9999 115 TD (The)Tj /T12 1 Tf 84 0 TD (tclIndex)Tj /T15 1 Tf 187 0 TD [(\014le)-12000(m)]TJ 100 0 TD [(ust)-12000(b)-1000(e)-13000(created)-14000(b)]TJ 288 0 TD [(y)-12000(the)]TJ /T12 1 Tf 103.9999 0 TD (tixindex)Tj /T15 1 Tf 187.0001 0 TD [(program.)-16000(Y)]TJ 209.9999 0 TD [(ou)-12000(cannot)-12000(use)-13000(the)-14000(standard)]TJ /T12 1 Tf -1159.9999 50 TD (auto)Tj ET q 3.36 0 0 -0.48 147.816 548.316 cm BI /W 1 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID P EI Q BT 0.24 0 0 -0.24 150.72 547.86 Tm (mkindex)Tj /T15 1 Tf 165.9999 0 TD [(command)-11000(that)-14000(comes)-14000(with)-13000(Tcl.)]TJ -206.9999 73 TD [(Once)-15000(y)]TJ 127 0 TD [(ou)-14000(ha)]TJ 101 0 TD (v)Tj 20.9999 0 TD [(e)-13000(created)-16000(the)]TJ /T12 1 Tf 248.0001 0 TD (tclIndex)Tj /T15 1 Tf 188 0 TD [(\014le,)-14000(y)]TJ 100 0 TD [(ou)-13000(can)-14000(use)-15000(y)]TJ 225.9999 0 TD [(our)-14000(new)-14000(widget)-14000(classes)-15000(b)]TJ 447 0 TD [(y)-13000(auto-)]TJ -1519.9999 50 TD [(loading.)-16000(Here)-16000(is)-13000(a)-14000(small)-12000(demo)-12000(program)-12000(that)-14000(uses)-16000(the)-14000(new)-14000(TixArro)]TJ 1203 0 TD [(wButton)-14000(class:)]TJ /T12 1 Tf -1099 114.9999 TD (#!/usr/local/bin)Tj 351 0 TD (/tixw)Tj 108.9999 0 TD (ish)Tj -459.9999 50 TD [(lappend)-20000(auto_path)-20000(/usr/my/tix/classe)]TJ 786.9999 0 TD (s)Tj -786.9999 99 TD [(#)-21000(Now)-22000(I)-21000(can)-21000(use)-21000(my)-22000(TixArrowButton)-19000(class!)]TJ 0 50 TD (#)Tj T* [(tixArrowButton)-19000(.arr)-21000(-direction)-19000(n)]TJ T* [(pack)-21000(.arr)]TJ ET endstream endobj 313 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /T9 25 0 R /T12 14 0 R /T14 16 0 R /T15 6 0 R >> /ExtGState << /GS1 8 0 R >> >> endobj 314 0 obj << /Type /Halftone /HalftoneType 1 /HalftoneName (Default) /Frequency 60 /Angle 45 /SpotFunction /Round >> endobj 8 0 obj << /Type /ExtGState /SA false /OP false /HT /Default >> endobj 315 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 301 0 obj << /Name /T1 /Type /Font /Subtype /Type3 /Resources 315 0 R /FontBBox [2 2 18 18] /FontMatrix [1 0 0 -1 0 0] /FirstChar 15 /LastChar 15 /Encoding 316 0 R /CharProcs 317 0 R /Widths [21 ] >> endobj 316 0 obj << /Type /Encoding /Differences [15/#230F ] >> endobj 317 0 obj << /#230F 318 0 R >> endobj 318 0 obj << /Length 144 >> stream 21 0 2 2 18 18 d1 q 16 0 0 16 2.1 1.9 cm BI /W 16 /H 16 /BPC 1 /IM true /F /CCF /DP <> ID <áN?Oö½«V¡… EI Q endstream endobj 319 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 293 0 obj << /Name /T2 /Type /Font /Subtype /Type3 /Resources 319 0 R /FontBBox [2 0 22 18] /FontMatrix [1 0 0 -1 0 0] /FirstChar 110 /LastChar 110 /Encoding 320 0 R /CharProcs 321 0 R /Widths [25 ] >> endobj 320 0 obj << /Type /Encoding /Differences [110/n ] >> endobj 321 0 obj << /n 322 0 R >> endobj 322 0 obj << /Length 160 >> stream 25 0 2 0 22 18 d1 q 20 0 0 18 2.1 -0.1 cm BI /W 20 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID .Îì#Ûî‚¿}%ýqÿÒKÿéR×ý/Ò¤é]‡ EI Q endstream endobj 323 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 189 0 obj << /Name /T3 /Type /Font /Subtype /Type3 /Resources 323 0 R /FontBBox [1 0 16 18] /FontMatrix [1 0 0 -1 0 0] /FirstChar 101 /LastChar 120 /Encoding 324 0 R /CharProcs 325 0 R /Widths [18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 0 0 0 18 ] >> endobj 324 0 obj << /Type /Encoding /Differences [101/e 116/t 120/x ] >> endobj 325 0 obj << /e 326 0 R /t 327 0 R /x 328 0 R >> endobj 326 0 obj << /Length 149 >> stream 18 0 2 0 15 14 d1 q 13 0 0 14 2.1 -0.1 cm BI /W 13 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID 8áF·KÓkÇÌwØ+{ (€ EI Q endstream endobj 327 0 obj << /Length 147 >> stream 18 0 1 0 15 18 d1 q 14 0 0 18 1.1 -0.1 cm BI /W 14 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 9×ø"u›¿ÿþ þÅC  EI Q endstream endobj 328 0 obj << /Length 151 >> stream 18 0 1 0 16 14 d1 q 15 0 0 14 1.1 -0.1 cm BI /W 15 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID #™ƒü: Ýb¯j» Dz·§‚Áø€ EI Q endstream endobj 329 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 77 0 obj << /Name /T4 /Type /Font /Subtype /Type3 /Resources 329 0 R /FontBBox [1 0 12 16] /FontMatrix [1 0 0 -1 0 0] /FirstChar 49 /LastChar 50 /Encoding 330 0 R /CharProcs 331 0 R /Widths [15 15 ] >> endobj 330 0 obj << /Type /Encoding /Differences [49/1 /2 ] >> endobj 331 0 obj << /1 332 0 R /2 333 0 R >> endobj 332 0 obj << /Length 140 >> stream 15 0 3 0 11 16 d1 q 8 0 0 16 3.1 -0.1 cm BI /W 8 /H 16 /BPC 1 /IM true /F /CCF /DP <> ID 1ÂÑOÿÿÿÿ‚  EI Q endstream endobj 333 0 obj << /Length 151 >> stream 15 0 1 0 12 16 d1 q 11 0 0 16 1.1 -0.1 cm BI /W 11 /H 16 /BPC 1 /IM true /F /CCF /DP <> ID 0poMÒnñô©R¥J‚T´D` EI Q endstream endobj 334 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 78 0 obj << /Name /T5 /Type /Font /Subtype /Type3 /Resources 334 0 R /FontBBox [2 0 14 19] /FontMatrix [1 0 0 -1 0 0] /FirstChar 49 /LastChar 50 /Encoding 335 0 R /CharProcs 336 0 R /Widths [17 17 ] >> endobj 335 0 obj << /Type /Encoding /Differences [49/1 /2 ] >> endobj 336 0 obj << /1 337 0 R /2 338 0 R >> endobj 337 0 obj << /Length 146 >> stream 17 0 3 0 13 19 d1 q 10 0 0 19 3.1 -0.1 cm BI /W 10 /H 19 /BPC 1 /IM true /F /CCF /DP <> ID 7Öÿÿÿÿÿɨ@ EI Q endstream endobj 338 0 obj << /Length 153 >> stream 17 0 2 0 14 19 d1 q 12 0 0 19 2.1 -0.1 cm BI /W 12 /H 19 /BPC 1 /IM true /F /CCF /DP <> ID 0pvéÞíb½R®¨*T•-$¨u€€ EI Q endstream endobj 339 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 72 0 obj << /Name /T6 /Type /Font /Subtype /Type3 /Resources 339 0 R /FontBBox [0 -9 28 25] /FontMatrix [1 0 0 -1 0 0] /FirstChar 11 /LastChar 122 /Encoding 340 0 R /CharProcs 341 0 R /Widths [21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 14 0 0 10 12 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0 25 27 24 0 0 26 13 0 0 22 0 0 27 24 0 0 20 25 26 26 0 0 0 0 0 0 0 0 0 0 18 20 16 20 16 11 18 20 10 0 0 10 30 20 18 20 0 14 14 14 20 19 25 19 19 16 ] >> endobj 340 0 obj << /Type /Encoding /Differences [11/#230B 40/#2328 /#2329 44/, /- /. 65/A 67/C /D /E 72/H /I 76/L 79/O /P 83/S /T /U /V 97/a /b /c /d /e /f /g /h /i 108/l /m /n /o /p 114/r /s /t /u /v /w /x /y /z ] >> endobj 341 0 obj << /#230B 342 0 R /#2328 343 0 R /#2329 344 0 R /, 345 0 R /- 346 0 R /. 347 0 R /A 348 0 R /C 349 0 R /D 350 0 R /E 351 0 R /H 352 0 R /I 353 0 R /L 354 0 R /O 355 0 R /P 356 0 R /S 357 0 R /T 358 0 R /U 359 0 R /V 360 0 R /a 361 0 R /b 362 0 R /c 363 0 R /d 364 0 R /e 365 0 R /f 366 0 R /g 367 0 R /h 368 0 R /i 369 0 R /l 370 0 R /m 371 0 R /n 372 0 R /o 373 0 R /p 374 0 R /r 375 0 R /s 376 0 R /t 377 0 R /u 378 0 R /v 379 0 R /w 380 0 R /x 381 0 R /y 382 0 R /z 383 0 R >> endobj 342 0 obj << /Length 162 >> stream 21 0 0 0 22 23 d1 q 22 0 0 23 0.1 -0.1 cm BI /W 22 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID 3"ç^Ú t©¯ÿÿÁ83x/ÿÿÿÿÿÿðƒ@ EI Q endstream endobj 343 0 obj << /Length 149 >> stream 14 0 3 -9 11 25 d1 q 8 0 0 34 3.1 -9.1 cm BI /W 8 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID T©V—¥ë¯ëÿÿÿïþïíûwµp EI Q endstream endobj 344 0 obj << /Length 151 >> stream 14 0 2 -9 10 25 d1 q 8 0 0 34 2.1 -9.1 cm BI /W 8 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID &ªÊæV]¿oîÿïÿÿ¯ë¯KÒÕ*P EI Q endstream endobj 345 0 obj << /Length 135 >> stream 10 0 3 -6 7 4 d1 q 4 0 0 10 3.1 -6.1 cm BI /W 4 /H 10 /BPC 1 /IM true /F /CCF /DP <> ID ©îKÒð EI Q endstream endobj 346 0 obj << /Length 127 >> stream 12 0 0 6 9 8 d1 q 9 0 0 2 0.1 5.9 cm BI /W 9 /H 2 /BPC 1 /IM true /F /CCF /DP <> ID &¢` EI Q endstream endobj 347 0 obj << /Length 129 >> stream 10 0 3 0 7 4 d1 q 4 0 0 4 3.1 -0.1 cm BI /W 4 /H 4 /BPC 1 /IM true /F /CCF /DP <> ID ©í@@ EI Q endstream endobj 348 0 obj << /Length 159 >> stream 26 0 1 0 24 23 d1 q 23 0 0 23 1.1 -0.1 cm BI /W 23 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID (Tÿ D{ÿ¤ßÿI¿Òoÿ¡yTþ“­×„@À@ EI Q endstream endobj 349 0 obj << /Length 161 >> stream 25 0 2 0 22 23 d1 q 20 0 0 23 2.1 -0.1 cm BI /W 20 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID 3%Øw„`´'­^µ÷ÿú¿{¥¾ÚVÒ†J. EI Q endstream endobj 350 0 obj << /Length 157 >> stream 27 0 1 0 24 23 d1 q 23 0 0 23 1.1 -0.1 cm BI /W 23 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID & ¼¨o†ý÷÷ßßÿÿÿ]ÒõÒá(!  EI Q endstream endobj 351 0 obj << /Length 158 >> stream 24 0 1 0 22 23 d1 q 21 0 0 23 1.1 -0.1 cm BI /W 21 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID &¡ž Ç÷ïÚÿùô?ÿ\y»ßëþ>½¯ 8€ EI Q endstream endobj 352 0 obj << /Length 157 >> stream 26 0 1 0 24 23 d1 q 23 0 0 23 1.1 -0.1 cm BI /W 23 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID &¢ `¿ÿÿÿÿÿ2?ÿÿÿÿÿ‚€ EI Q endstream endobj 353 0 obj << /Length 146 >> stream 13 0 1 0 12 23 d1 q 11 0 0 23 1.1 -0.1 cm BI /W 11 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID &¡Mßÿÿÿÿÿÿÿ&¡@@ EI Q endstream endobj 354 0 obj << /Length 149 >> stream 22 0 1 0 20 23 d1 q 19 0 0 23 1.1 -0.1 cm BI /W 19 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID &¡ Ìÿÿÿÿëÿ¯õ×…‚@ EI Q endstream endobj 355 0 obj << /Length 162 >> stream 27 0 2 0 24 23 d1 q 22 0 0 23 2.1 -0.1 cm BI /W 22 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID 3(GãðI‡IºMéëzzßÿÿûi~õµ¶•´¡´0  EI Q endstream endobj 356 0 obj << /Length 155 >> stream 24 0 1 0 21 23 d1 q 20 0 0 23 1.1 -0.1 cm BI /W 20 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID &¡ˆ3L>íûÿþº\%ˆY´ÿÿÿàÀ@ EI Q endstream endobj 357 0 obj << /Length 164 >> stream 20 0 2 0 17 23 d1 q 15 0 0 23 2.1 -0.1 cm BI /W 15 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID 6A(GàKIôõÿco#öpnQ[rj¿û­¥¢>–ƒP EI Q endstream endobj 358 0 obj << /Length 151 >> stream 25 0 1 0 23 23 d1 q 22 0 0 23 1.1 -0.1 cm BI /W 22 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID #†Œþnëô·ÿñßÿÿÿÿþx,@ EI Q endstream endobj 359 0 obj << /Length 158 >> stream 26 0 1 0 24 23 d1 q 23 0 0 23 1.1 -0.1 cm BI /W 23 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID &¢0A…ÚÿÿÿÿÿÿÿÿÿöÒ¿m+a(a@@ EI Q endstream endobj 360 0 obj << /Length 159 >> stream 26 0 1 0 24 23 d1 q 23 0 0 23 1.1 -0.1 cm BI /W 23 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID &¢ša0®×í¥ý­ëöÒþÖõûi}Òý¿í@@ EI Q endstream endobj 361 0 obj << /Length 154 >> stream 18 0 1 0 17 14 d1 q 16 0 0 14 1.1 -0.1 cm BI /W 16 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID .-nÕÇžq ]zZÿ®Údá@@ EI Q endstream endobj 362 0 obj << /Length 156 >> stream 20 0 1 0 18 23 d1 q 17 0 0 23 1.1 -0.1 cm BI /W 17 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID &§ÿÿþ\ðÎxMûïïÿúëëD|% Â€€ EI Q endstream endobj 363 0 obj << /Length 148 >> stream 16 0 1 0 14 14 d1 q 13 0 0 14 1.1 -0.1 cm BI /W 13 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID 88GÆ–­hkÿ¾ÕöÂP€€ EI Q endstream endobj 364 0 obj << /Length 156 >> stream 20 0 1 0 18 23 d1 q 17 0 0 23 1.1 -0.1 cm BI /W 17 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID '8ÿÿÎ× ƒ××_ÿýý÷[h¡ðÔ0 EI Q endstream endobj 365 0 obj << /Length 149 >> stream 16 0 1 0 14 14 d1 q 13 0 0 14 1.1 -0.1 cm BI /W 13 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID 6T{t›­¤ñÌßjé[Xa@@ EI Q endstream endobj 366 0 obj << /Length 150 >> stream 11 0 0 0 12 23 d1 q 12 0 0 23 0.1 -0.1 cm BI /W 12 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID > stream 18 0 1 -7 17 14 d1 q 16 0 0 21 1.1 -7.1 cm BI /W 16 /H 21 /BPC 1 /IM true /F /CCF /DP <> ID 6eÝ ¤á­ÿ÷«iPDsã["d=Ñèé?ÿm+ % B€€ EI Q endstream endobj 368 0 obj << /Length 153 >> stream 20 0 1 0 18 23 d1 q 17 0 0 23 1.1 -0.1 cm BI /W 17 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID &§ÿÿþ`øG‡¶õÿÿÿÿÿþa  EI Q endstream endobj 369 0 obj << /Length 142 >> stream 10 0 1 0 8 23 d1 q 7 0 0 23 1.1 -0.1 cm BI /W 7 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID /Óö£òjpÿÿÿÿøA€€ EI Q endstream endobj 370 0 obj << /Length 140 >> stream 10 0 1 0 8 23 d1 q 7 0 0 23 1.1 -0.1 cm BI /W 7 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID &§ÿÿÿÿÿÿÿðƒ EI Q endstream endobj 371 0 obj << /Length 159 >> stream 30 0 1 0 28 14 d1 q 27 0 0 14 1.1 -0.1 cm BI /W 27 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID &¦`Î8G†áí†Þ«ÿÿÿÿÿÿÿÿ0ƒ0 EI Q endstream endobj 372 0 obj << /Length 150 >> stream 20 0 1 0 18 14 d1 q 17 0 0 14 1.1 -0.1 cm BI /W 17 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID &¦`áÂ<=·¯ÿÿÿÿÿðƒ0 EI Q endstream endobj 373 0 obj << /Length 150 >> stream 18 0 1 0 16 14 d1 q 15 0 0 14 1.1 -0.1 cm BI /W 15 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID 8p€©7I¿ÖÿÿÛJõm(a@@ EI Q endstream endobj 374 0 obj << /Length 157 >> stream 20 0 1 -6 18 14 d1 q 17 0 0 20 1.1 -6.1 cm BI /W 17 /H 20 /BPC 1 /IM true /F /CCF /DP <> ID &¦\á†n ûïïÿúëÒÃK¹ñÿøAÀ@ EI Q endstream endobj 375 0 obj << /Length 146 >> stream 14 0 1 0 13 14 d1 q 12 0 0 14 1.1 -0.1 cm BI /W 12 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID &¦]âßMqÿÿÿ„  EI Q endstream endobj 376 0 obj << /Length 153 >> stream 14 0 1 0 12 14 d1 q 11 0 0 14 1.1 -0.1 cm BI /W 11 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID 0a(GÍ'þÇ"ÃpÜû&¨?ßia8€ EI Q endstream endobj 377 0 obj << /Length 148 >> stream 14 0 1 0 11 20 d1 q 10 0 0 20 1.1 -0.1 cm BI /W 10 /H 20 /BPC 1 /IM true /F /CCF /DP <> ID 6¿¯¬"Ô3gÿÿ¯ÿ¶•‡ EI Q endstream endobj 378 0 obj << /Length 150 >> stream 20 0 1 0 18 14 d1 q 17 0 0 14 1.1 -0.1 cm BI /W 17 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID &¦páÃÿÿÿÿÿÿ­´PødÜ0 EI Q endstream endobj 379 0 obj << /Length 149 >> stream 19 0 1 0 17 14 d1 q 16 0 0 14 1.1 -0.1 cm BI /W 16 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID &£6a„Öêõûi~Ú_ÇkÚð EI Q endstream endobj 380 0 obj << /Length 159 >> stream 25 0 1 0 23 14 d1 q 22 0 0 14 1.1 -0.1 cm BI /W 22 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID &£#Œ¹†a5ö½öôº)þû[¯^›ìw§ýëO EI Q endstream endobj 381 0 obj << /Length 156 >> stream 19 0 1 0 17 14 d1 q 16 0 0 14 1.1 -0.1 cm BI /W 16 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID &£0A¦á[JÚXí[ Dz•Òz·[„Ð` EI Q endstream endobj 382 0 obj << /Length 159 >> stream 19 0 1 -6 17 14 d1 q 16 0 0 20 1.1 -6.1 cm BI /W 16 /H 20 /BPC 1 /IM true /F /CCF /DP <> ID &£6a„Öêõûi~Ú_ÇkÚúòk%ü":JÀ€ EI Q endstream endobj 383 0 obj << /Length 149 >> stream 16 0 1 0 14 14 d1 q 13 0 0 14 1.1 -0.1 cm BI /W 13 /H 14 /BPC 1 /IM true /F /CCF /DP <> ID &¡óò×ÒéuRªÖ’¥]hp EI Q endstream endobj 384 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 62 0 obj << /Name /T7 /Type /Font /Subtype /Type3 /Resources 384 0 R /FontBBox [1 -12 25 31] /FontMatrix [1 0 0 -1 0 0] /FirstChar 45 /LastChar 120 /Encoding 385 0 R /CharProcs 386 0 R /Widths [26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 26 0 26 26 26 26 0 26 0 0 26 0 26 26 26 0 0 26 26 26 0 26 26 ] >> endobj 385 0 obj << /Type /Encoding /Differences [45/- 97/a /b 100/d /e /f /g 105/i 108/l 110/n /o /p 115/s /t /u 119/w /x ] >> endobj 386 0 obj << /- 387 0 R /a 388 0 R /b 389 0 R /d 390 0 R /e 391 0 R /f 392 0 R /g 393 0 R /i 394 0 R /l 395 0 R /n 396 0 R /o 397 0 R /p 398 0 R /s 399 0 R /t 400 0 R /u 401 0 R /w 402 0 R /x 403 0 R >> endobj 387 0 obj << /Length 136 >> stream 26 0 3 13 22 17 d1 q 19 0 0 4 3.1 12.9 cm BI /W 19 /H 4 /BPC 1 /IM true /F /CCF /DP <> ID #ƒö  EI Q endstream endobj 388 0 obj << /Length 164 >> stream 26 0 3 0 25 21 d1 q 22 0 0 21 3.1 -0.1 cm BI /W 22 /H 21 /BPC 1 /IM true /F /CCF /DP <> ID 0%O/ݧ‹~h,àxZ#ÍNº_ÿmv¶CA«!G†€€ EI Q endstream endobj 389 0 obj << /Length 164 >> stream 26 0 1 0 23 30 d1 q 22 0 0 30 1.1 -0.1 cm BI /W 22 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID #•oÿÿÌ> stream 26 0 2 0 24 30 d1 q 22 0 0 30 2.1 -0.1 cm BI /W 22 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID $oÿÿ>| úšOIôô¿ÿÿÿí¯í®؃†D†@@ EI Q endstream endobj 391 0 obj << /Length 158 >> stream 26 0 3 0 23 21 d1 q 20 0 0 21 3.1 -0.1 cm BI /W 20 /H 21 /BPC 1 /IM true /F /CCF /DP <> ID >PÓ¢ùÒI½t›øþjÛûoa…b¡… (€ EI Q endstream endobj 392 0 obj << /Length 156 >> stream 26 0 1 0 22 30 d1 q 21 0 0 30 1.1 -0.1 cm BI /W 21 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID !”'MtšÐÿäpÏ_3¿ÿÿÿÿùpÅ;P EI Q endstream endobj 393 0 obj << /Length 179 >> stream 26 0 1 -12 24 21 d1 q 23 0 0 33 1.1 -12.1 cm BI /W 23 /H 33 /BPC 1 /IM true /F /CCF /DP <> ID >FεEñp´ãI¿ÿÿ¶–ת3…ÇÛÈ?C è²ƒÒoÿÛKka„¬T0¡… EI Q endstream endobj 394 0 obj << /Length 151 >> stream 26 0 4 0 22 31 d1 q 18 0 0 31 4.1 -0.1 cm BI /W 18 /H 31 /BPC 1 /IM true /F /CCF /DP <> ID 3éûQüŽùÿÿÿÿÿÈà½6  EI Q endstream endobj 395 0 obj << /Length 150 >> stream 26 0 3 0 22 30 d1 q 19 0 0 30 3.1 -0.1 cm BI /W 19 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID #„­æwÿÿÿÿÿÿÿÿäpb›P EI Q endstream endobj 396 0 obj << /Length 158 >> stream 26 0 1 0 24 21 d1 q 23 0 0 21 1.1 -0.1 cm BI /W 23 /H 21 /BPC 1 /IM true /F /CCF /DP <> ID #‘ƒ¨Aظ2YÓzõÿÿÿÿÿÿÿ‚:i´Ô@ EI Q endstream endobj 397 0 obj << /Length 158 >> stream 26 0 3 0 22 21 d1 q 19 0 0 21 3.1 -0.1 cm BI /W 19 /H 21 /BPC 1 /IM true /F /CCF /DP <> ID >pƒ„ǧ¤Þž“ÿÿjõµ¶–ÖÅC P EI Q endstream endobj 398 0 obj << /Length 170 >> stream 26 0 1 -11 23 21 d1 q 22 0 0 32 1.1 -11.1 cm BI /W 22 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID #‘ƒ¨A؇Kƒé½}¿ÿÿûK®ÒÚX¬Ã®\ÿÿ¨€ EI Q endstream endobj 399 0 obj << /Length 165 >> stream 26 0 4 0 22 21 d1 q 18 0 0 21 4.1 -0.1 cm BI /W 18 /H 21 /BPC 1 /IM true /F /CCF /DP <> ID 8)„8\¹è'ÿì1È“ …°Üœpy ¯ö°ÒÅfp€€ EI Q endstream endobj 400 0 obj << /Length 152 >> stream 26 0 1 0 21 28 d1 q 20 0 0 28 1.1 -0.1 cm BI /W 20 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID ?×ÿüŽWÏ_ÿÿÿ‚ÿûa,v5 EI Q endstream endobj 401 0 obj << /Length 155 >> stream 26 0 1 0 24 21 d1 q 23 0 0 21 1.1 -0.1 cm BI /W 23 /H 21 /BPC 1 /IM true /F /CCF /DP <> ID #‘âªÝààÿÿÿÿÿÿÿÿ×kbØd@@ EI Q endstream endobj 402 0 obj << /Length 163 >> stream 26 0 1 0 24 21 d1 q 23 0 0 21 1.1 -0.1 cm BI /W 23 /H 21 /BPC 1 /IM true /F /CCF /DP <> ID &¢ü3í¥ÿówÓÿÞÖÖ×ÿÿÿú~ÿXãÓþ  EI Q endstream endobj 403 0 obj << /Length 165 >> stream 26 0 1 0 24 21 d1 q 23 0 0 21 1.1 -0.1 cm BI /W 23 /H 21 /BPC 1 /IM true /F /CCF /DP <> ID #ˆ`^Ÿjr`­ÖÒ¶¶*Ö¯Nêún“uºODAÖÞ  EI Q endstream endobj 404 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 35 0 obj << /Name /T8 /Type /Font /Subtype /Type3 /Resources 404 0 R /FontBBox [0 -11 56 36] /FontMatrix [1 0 0 -1 0 0] /FirstChar 12 /LastChar 122 /Encoding 405 0 R /CharProcs 406 0 R /Widths [31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 16 0 0 28 28 28 28 28 28 28 0 0 16 0 0 0 0 0 0 42 40 40 43 37 35 0 44 21 0 44 34 53 44 42 38 0 42 31 39 43 42 58 0 0 0 0 0 0 0 0 0 27 31 25 31 26 17 28 31 16 0 30 16 48 31 28 31 0 23 22 22 31 30 40 30 30 25 ] >> endobj 405 0 obj << /Type /Encoding /Differences [12/#230C 39/' 46/. 49/1 /2 /3 /4 /5 /6 /7 58/: 65/A /B /C /D /E /F 72/H /I 75/K /L /M /N /O /P 82/R /S /T /U /V /W 97/a /b /c /d /e /f /g /h /i 107/k /l /m /n /o /p 114/r /s /t /u /v /w /x /y /z ] >> endobj 406 0 obj << /#230C 407 0 R /' 408 0 R /. 409 0 R /1 410 0 R /2 411 0 R /3 412 0 R /4 413 0 R /5 414 0 R /6 415 0 R /7 416 0 R /: 417 0 R /A 418 0 R /B 419 0 R /C 420 0 R /D 421 0 R /E 422 0 R /F 423 0 R /H 424 0 R /I 425 0 R /K 426 0 R /L 427 0 R /M 428 0 R /N 429 0 R /O 430 0 R /P 431 0 R /R 432 0 R /S 433 0 R /T 434 0 R /U 435 0 R /V 436 0 R /W 437 0 R /a 438 0 R /b 439 0 R /c 440 0 R /d 441 0 R /e 442 0 R /f 443 0 R /g 444 0 R /h 445 0 R /i 446 0 R /k 447 0 R /l 448 0 R /m 449 0 R /n 450 0 R /o 451 0 R /p 452 0 R /r 453 0 R /s 454 0 R /t 455 0 R /u 456 0 R /v 457 0 R /w 458 0 R /x 459 0 R /y 460 0 R /z 461 0 R >> endobj 407 0 obj << /Length 169 >> stream 31 0 1 0 28 35 d1 q 27 0 0 35 1.1 -0.1 cm BI /W 27 /H 35 /BPC 1 /IM true /F /CCF /DP <> ID $ "^è$é-/ý®×üš6dçÿÿÿÿÿÿÿÿÿÿø `ø€ EI Q endstream endobj 408 0 obj << /Length 144 >> stream 16 0 4 18 12 35 d1 q 8 0 0 17 4.1 17.9 cm BI /W 8 /H 17 /BPC 1 /IM true /F /CCF /DP <> ID /S§½Ø £ú^•u Z€€ EI Q endstream endobj 409 0 obj << /Length 132 >> stream 16 0 4 0 11 7 d1 q 7 0 0 7 4.1 -0.1 cm BI /W 7 /H 7 /BPC 1 /IM true /F /CCF /DP <> ID /S§íZ€€ EI Q endstream endobj 410 0 obj << /Length 152 >> stream 28 0 4 0 23 32 d1 q 19 0 0 32 4.1 -0.1 cm BI /W 19 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID (áadÔÏ—ÿÿÿÿÿÿÿÿüŽ` EI Q endstream endobj 411 0 obj << /Length 166 >> stream 28 0 3 0 24 32 d1 q 21 0 0 32 3.1 -0.1 cm BI /W 21 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID <, áÐA¼;¦þÿv¶”zôµJ•,*T‚¥¥¥¤±U­kà EI Q endstream endobj 412 0 obj << /Length 172 >> stream 28 0 2 0 25 32 d1 q 23 0 0 32 2.1 -0.1 cm BI /W 23 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID 3:/&éûoÿ´¾£ê”%>.ä3†íùwiéÿýZ\*†JÄ(0P EI Q endstream endobj 413 0 obj << /Length 162 >> stream 28 0 2 0 26 32 d1 q 24 0 0 32 2.1 -0.1 cm BI /W 24 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID 5U¯­kèãëÒézéuézéuét¼s\†_ÿüÌÀ@ EI Q endstream endobj 414 0 obj << /Length 171 >> stream 28 0 3 0 24 32 d1 q 21 0 0 32 3.1 -0.1 cm BI /W 21 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID /‚  ŠÖµ…Áqÿóá“Àð›ÓÆþòöžŸõ_°’½a„¡Š†  EI Q endstream endobj 415 0 obj << /Length 173 >> stream 28 0 2 0 25 32 d1 q 23 0 0 32 2.1 -0.1 cm BI /W 23 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID (( áçIh$ëÒÿV´>§—DÍ>ïzoú¿ÿýë}Ò·VÂV*P EI Q endstream endobj 416 0 obj << /Length 159 >> stream 28 0 3 0 26 34 d1 q 23 0 0 34 3.1 -0.1 cm BI /W 23 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID #øyæ½kê¢éi.—â•*êµô¿¯õÿÿí@@ EI Q endstream endobj 417 0 obj << /Length 141 >> stream 16 0 4 0 11 22 d1 q 7 0 0 22 4.1 -0.1 cm BI /W 7 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID /S§íZùz?jÔ@ EI Q endstream endobj 418 0 obj << /Length 167 >> stream 42 0 2 0 39 34 d1 q 37 0 0 34 2.1 -0.1 cm BI /W 37 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID 5ÞŸôý?èîÿJûþ“¥}ëzÒ¼tóéý+ï[ÓþMB“‚þ  EI Q endstream endobj 419 0 obj << /Length 170 >> stream 40 0 2 0 36 34 d1 q 34 0 0 34 2.1 -0.1 cm BI /W 34 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & c82‚íöÿïÿÿýuõÂX¯‘ >íûïïÿÿô¿Òá)5 Ü@ EI Q endstream endobj 420 0 obj << /Length 175 >> stream 40 0 3 0 36 34 d1 q 33 0 0 34 3.1 -0.1 cm BI /W 33 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID : ƒPD_ P cA:N“®“ú½~¡ÿÿýø[ßÕº¿m+ +a+ƒ Á@@ EI Q endstream endobj 421 0 obj << /Length 168 >> stream 43 0 2 0 39 34 d1 q 37 0 0 34 2.1 -0.1 cm BI /W 37 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & c82qx7Ûíöû÷ßÿ÷ÿÿÿÿ×ÿÒÿK¥ÒépJMC3 EI Q endstream endobj 422 0 obj << /Length 170 >> stream 37 0 2 0 34 34 d1 q 32 0 0 34 2.1 -0.1 cm BI /W 32 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & ÑçH.¿ïÌÿÿÿ^¸þGÞýÿð¿ãéýׯ¤Ô<@ EI Q endstream endobj 423 0 obj << /Length 164 >> stream 35 0 2 0 32 34 d1 q 30 0 0 34 2.1 -0.1 cm BI /W 30 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID &¡›çP\?~þÿÏÿþõëäyïßÿÿÿÿɨà EI Q endstream endobj 424 0 obj << /Length 166 >> stream 44 0 2 0 41 34 d1 q 39 0 0 34 2.1 -0.1 cm BI /W 39 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & ÁÀcÎ ê?ÿÿÿÿÿÿÿÇò=ÿÿÿÿÿÿÿÿɨ0pð EI Q endstream endobj 425 0 obj << /Length 151 >> stream 21 0 2 0 19 34 d1 q 17 0 0 34 2.1 -0.1 cm BI /W 17 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & ÆpÿÿÿÿÿÿÿÿÿÿäÔÀ@ EI Q endstream endobj 426 0 obj << /Length 181 >> stream 44 0 2 0 41 34 d1 q 39 0 0 34 2.1 -0.1 cm BI /W 39 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & Á Î §º].‚ép—K¥ÒétO…éôú0üSxW¦ûöýöûûí÷íûíɨ0xð EI Q endstream endobj 427 0 obj << /Length 156 >> stream 34 0 2 0 31 34 d1 q 29 0 0 34 2.1 -0.1 cm BI /W 29 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & Gœÿÿÿÿÿÿü/ÿëú_ë×…“PÌð EI Q endstream endobj 428 0 obj << /Length 192 >> stream 53 0 2 0 50 34 d1 q 48 0 0 34 2.1 -0.1 cm BI /W 48 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID &¡Ê€ö§‘rqÚ8ÿÿÿ¶—ÿí¥ÿûiþÚ_ÿÿÛKÿöÒÿý´¿ÿÿ¶—ÿí¥ÿûÿíÿö¹5™‚ûX€ EI Q endstream endobj 429 0 obj << /Length 179 >> stream 44 0 2 0 41 34 d1 q 39 0 0 34 2.1 -0.1 cm BI /W 39 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & ‡@÷œ§÷çý¿·öþÿ¿·öþßß÷öþßÛûßÛûcïþýû÷ïù5ýà EI Q endstream endobj 430 0 obj << /Length 176 >> stream 42 0 3 0 38 34 d1 q 35 0 0 34 3.1 -0.1 cm BI /W 35 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID !‰/A‡IºMÒoô›ýoOúßÿÿÿûÖ×÷­­êÚVÒ¶”0 …  EI Q endstream endobj 431 0 obj << /Length 164 >> stream 38 0 2 0 34 34 d1 q 32 0 0 34 2.1 -0.1 cm BI /W 32 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & _83AðÃïÛÿ¿ÿþ¿Òë ‚ÈÄÿÿÿù5<@ EI Q endstream endobj 432 0 obj << /Length 175 >> stream 42 0 2 0 41 34 d1 q 39 0 0 34 2.1 -0.1 cm BI /W 39 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & £83Aðßo·ïÿÿÿë¥Òá,BÖG0û}¾ßÿÿÿÿø]¿´¤Ô W @@ EI Q endstream endobj 433 0 obj << /Length 180 >> stream 31 0 3 0 27 34 d1 q 24 0 0 34 3.1 -0.1 cm BI /W 24 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID >(JkŸŽ‚PúÕÿ¿ŽÈbpì;vá¹8$è$|šïÿuý¥‡á„³À… a@@ EI Q endstream endobj 434 0 obj << /Length 160 >> stream 39 0 2 0 36 34 d1 q 34 0 0 34 2.1 -0.1 cm BI /W 34 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID #ƒWÉyð·ÖúÞ½ÿ[ÿÿã‡ÿÿÿÿÿÿÿ><@ EI Q endstream endobj 435 0 obj << /Length 168 >> stream 43 0 2 0 40 34 d1 q 38 0 0 34 2.1 -0.1 cm BI /W 38 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & Á 823ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷K}Ò¶¶Ò°Á(b(€ EI Q endstream endobj 436 0 obj << /Length 170 >> stream 42 0 1 0 40 34 d1 q 39 0 0 34 1.1 -0.1 cm BI /W 39 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & ¹ /œþÚ_ÚÞ·Ý-÷Kû[ÖÖõ¾é~Ú_Ú޷دkû^×€€ EI Q endstream endobj 437 0 obj << /Length 191 >> stream 58 0 1 0 56 34 d1 q 55 0 0 34 1.1 -0.1 cm BI /W 55 /H 34 /BPC 1 /IM true /F /CCF /DP <> ID & ¹°\Ì/æÅ$ j®õþÛiÝ÷Òÿ´Öó¯ý´›Kÿµ¾ôéö“k¯ßm'KÿŽ;M~Ó_ý¦¿ûM~  EI Q endstream endobj 438 0 obj << /Length 167 >> stream 27 0 2 0 26 22 d1 q 24 0 0 22 2.1 -0.1 cm BI /W 24 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID 6:%Ï·ßÝ®?“„žŽpDy º]/ÿý´Pþ¸b˜0Âp EI Q endstream endobj 439 0 obj << /Length 167 >> stream 31 0 2 0 28 35 d1 q 26 0 0 35 2.1 -0.1 cm BI /W 26 /H 35 /BPC 1 /IM true /F /CCF /DP <> ID &¢ø?ÿÿÿüØøAä^xMé¾ßýÿÿÿÿ]w[KG’Ðb´(€ EI Q endstream endobj 440 0 obj << /Length 156 >> stream 25 0 2 0 23 22 d1 q 21 0 0 22 2.1 -0.1 cm BI /W 21 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID 3:'Ž—K¯¦¸×ÿý÷î´¬4¬TP EI Q endstream endobj 441 0 obj << /Length 168 >> stream 31 0 2 0 28 35 d1 q 26 0 0 35 2.1 -0.1 cm BI /W 26 /H 35 /BPC 1 /IM true /F /CCF /DP <> ID :‹àÿÿÿÿÏ„¢|:Aé=}uÿÿÿÿýÿÛ[kl#±Pa…€€ EI Q endstream endobj 442 0 obj << /Length 159 >> stream 26 0 2 0 23 22 d1 q 21 0 0 22 2.1 -0.1 cm BI /W 21 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID 3tNÝ­Òkü|–¿¿Ý¶•†°Ä(a@@ EI Q endstream endobj 443 0 obj << /Length 158 >> stream 17 0 0 0 20 35 d1 q 20 0 0 35 0.1 -0.1 cm BI /W 20 /H 35 /BPC 1 /IM true /F /CCF /DP <> ID ('EÃIWKÚãÿþMCpÿÿÿÿÿÿüÜ@ EI Q endstream endobj 444 0 obj << /Length 184 >> stream 28 0 1 -11 26 22 d1 q 25 0 0 33 1.1 -11.1 cm BI /W 25 /H 33 /BPC 1 /IM true /F /CCF /DP <> ID >)Ç0š'lÃI¾œðn·ÿÿ÷­­´±YNGï ¿0ì8N‹#H6“ÿûi[Jà X¨0P EI Q endstream endobj 445 0 obj << /Length 163 >> stream 31 0 2 0 28 35 d1 q 26 0 0 35 2.1 -0.1 cm BI /W 26 /H 35 /BPC 1 /IM true /F /CCF /DP <> ID &¢ø?ÿÿÿüápƒèøú ÷×ÿÿÿÿÿÿÿÿ‚€€ EI Q endstream endobj 446 0 obj << /Length 151 >> stream 16 0 2 0 13 36 d1 q 11 0 0 36 2.1 -0.1 cm BI /W 11 /H 36 /BPC 1 /IM true /F /CCF /DP <> ID 1S§ý«QþMEðÿÿÿÿÿÿ EI Q endstream endobj 447 0 obj << /Length 171 >> stream 30 0 2 0 28 35 d1 q 26 0 0 35 2.1 -0.1 cm BI /W 26 /H 35 /BPC 1 /IM true /F /CCF /DP <> ID &¢ø?ÿÿÿüÌOðÍš „º].—K„ñyð¯·Ûïï·Ûï "×À@ EI Q endstream endobj 448 0 obj << /Length 149 >> stream 16 0 2 0 13 35 d1 q 11 0 0 35 2.1 -0.1 cm BI /W 11 /H 35 /BPC 1 /IM true /F /CCF /DP <> ID &¢ø?ÿÿÿÿÿÿÿÿÿÿÿ EI Q endstream endobj 449 0 obj << /Length 171 >> stream 48 0 2 0 45 22 d1 q 43 0 0 22 2.1 -0.1 cm BI /W 43 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID &¢œ øA„š?>‚Ð^ØmÿÕÿÿÿÿÿÿÿÿÿÿþ `þ  EI Q endstream endobj 450 0 obj << /Length 158 >> stream 31 0 2 0 28 22 d1 q 26 0 0 22 2.1 -0.1 cm BI /W 26 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID &¢œ.pt|}û¿ëÿÿÿÿÿÿÿÿÁÀ@ EI Q endstream endobj 451 0 obj << /Length 159 >> stream 28 0 2 0 25 22 d1 q 23 0 0 22 2.1 -0.1 cm BI /W 23 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID 3:'Ž‚ Öé7ÿÖÿÿÿÞ¿m+i[JÅA‚€€ EI Q endstream endobj 452 0 obj << /Length 170 >> stream 31 0 2 -10 28 22 d1 q 26 0 0 32 2.1 -10.1 cm BI /W 26 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID &¢›82/<&ôß¿öÿÿÿÿKûKu°–¸^.?ÿÿ‚à EI Q endstream endobj 453 0 obj << /Length 154 >> stream 23 0 2 0 21 22 d1 q 19 0 0 22 2.1 -0.1 cm BI /W 19 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID &£6}Gw¥õÿZÿÿÿÿ‚!ÿ€€ EI Q endstream endobj 454 0 obj << /Length 165 >> stream 22 0 2 0 19 22 d1 q 17 0 0 22 2.1 -0.1 cm BI /W 17 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID 6(%t_pƒÕÿ¿ l„èv7’ šï½ÿia¥‚#„Ó  EI Q endstream endobj 455 0 obj << /Length 156 >> stream 22 0 1 0 18 32 d1 q 17 0 0 32 1.1 -0.1 cm BI /W 17 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID ?ÿëëë ‚ãógÿÿÿÿ ÿÿ¥o±P€€ EI Q endstream endobj 456 0 obj << /Length 156 >> stream 31 0 2 0 28 22 d1 q 26 0 0 22 2.1 -0.1 cm BI /W 26 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID &¢Ÿðpÿÿÿÿÿÿÿÿúõ¶Ž>ÅA†  EI Q endstream endobj 457 0 obj << /Length 158 >> stream 30 0 1 0 28 22 d1 q 27 0 0 22 1.1 -0.1 cm BI /W 27 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID &¡LÅða õµ½oº_¶—í¥ûi¯kÚð EI Q endstream endobj 458 0 obj << /Length 173 >> stream 40 0 1 0 38 22 d1 q 37 0 0 22 1.1 -0.1 cm BI /W 37 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID &¡L8/àÁ ío×ûv—Gÿ[kuéû}¥Òÿc´´ÿŽÓ_½iÿ EI Q endstream endobj 459 0 obj << /Length 168 >> stream 30 0 1 0 28 22 d1 q 27 0 0 22 1.1 -0.1 cm BI /W 27 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID &¡O ù³ ØÚVÒÝ[JéXí_tó¤Ý&êÝ+¤Ý'“Q!M|@ EI Q endstream endobj 460 0 obj << /Length 175 >> stream 30 0 1 -10 28 22 d1 q 27 0 0 32 1.1 -10.1 cm BI /W 27 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID &¡LÅða õµ½oº_¶—í¥ûi¯kÚúô¤wÓ_]+GA,ECP EI Q endstream endobj 461 0 obj << /Length 158 >> stream 25 0 2 0 22 22 d1 q 20 0 0 22 2.1 -0.1 cm BI /W 20 /H 22 /BPC 1 /IM true /F /CCF /DP <> ID #†~Nk --RÕtºÅ-R¨TºÒUÒ­- ´? EI Q endstream endobj 462 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 25 0 obj << /Name /T9 /Type /Font /Subtype /Type3 /Resources 462 0 R /FontBBox [1 -1 46 29] /FontMatrix [1 0 0 -1 0 0] /FirstChar 46 /LastChar 123 /Encoding 463 0 R /CharProcs 464 0 R /Widths [12 0 0 21 21 21 21 21 21 0 0 0 12 0 0 0 0 0 0 31 29 30 32 28 27 33 31 15 21 32 26 38 31 32 28 0 31 23 30 31 31 43 31 31 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 ] >> endobj 463 0 obj << /Type /Encoding /Differences [46/. 49/1 /2 /3 /4 /5 /6 58/: 65/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P 82/R /S /T /U /V /W /X /Y /Z 123/#237B ] >> endobj 464 0 obj << /. 465 0 R /1 466 0 R /2 467 0 R /3 468 0 R /4 469 0 R /5 470 0 R /6 471 0 R /: 472 0 R /A 473 0 R /B 474 0 R /C 475 0 R /D 476 0 R /E 477 0 R /F 478 0 R /G 479 0 R /H 480 0 R /I 481 0 R /J 482 0 R /K 483 0 R /L 484 0 R /M 485 0 R /N 486 0 R /O 487 0 R /P 488 0 R /R 489 0 R /S 490 0 R /T 491 0 R /U 492 0 R /V 493 0 R /W 494 0 R /X 495 0 R /Y 496 0 R /Z 497 0 R /#237B 498 0 R >> endobj 465 0 obj << /Length 128 >> stream 12 0 4 0 8 4 d1 q 4 0 0 4 4.1 -0.1 cm BI /W 4 /H 4 /BPC 1 /IM true /F /CCF /DP <> ID Õ¨€ EI Q endstream endobj 466 0 obj << /Length 152 >> stream 21 0 4 0 17 28 d1 q 13 0 0 28 4.1 -0.1 cm BI /W 13 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID ”ñB> stream 21 0 2 0 21 28 d1 q 19 0 0 28 2.1 -0.1 cm BI /W 19 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 4(GÀè&é7è?×ö±Z¥éR¥J‚¥J ©tTº*À@ EI Q endstream endobj 468 0 obj << /Length 168 >> stream 21 0 3 -1 21 28 d1 q 18 0 0 29 3.1 -1.1 cm BI /W 18 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 48G°è&étÿÕG¥ªP”ñJ+È÷Oþ«K…VTÕŸ0P EI Q endstream endobj 469 0 obj << /Length 161 >> stream 21 0 2 0 20 28 d1 q 18 0 0 28 2.1 -0.1 cm BI /W 18 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID •}h¡ôºIW¥ë¥Òé%K¯®—K¡Qý-Ï€€ EI Q endstream endobj 470 0 obj << /Length 167 >> stream 21 0 3 -1 21 28 d1 q 18 0 0 29 3.1 -1.1 cm BI /W 18 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID =‚ÅPXYDÒüÁðow¦éq÷ü%_þ°KêÊšõgµ (€ EI Q endstream endobj 471 0 obj << /Length 171 >> stream 21 0 4 -1 21 28 d1 q 17 0 0 29 4.1 -1.1 cm BI /W 17 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID '8GÅIÒ ’¥­hkª˜>ííºޝoý_ÿÒ×ÿô·W_V €€ EI Q endstream endobj 472 0 obj << /Length 138 >> stream 12 0 4 0 11 18 d1 q 7 0 0 18 4.1 -0.1 cm BI /W 7 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID ©×þG½m@@ EI Q endstream endobj 473 0 obj << /Length 164 >> stream 31 0 1 0 29 29 d1 q 28 0 0 29 1.1 -0.1 cm BI /W 28 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID )Öë_]ÑOý/ô¾Ý/ô¿Ò¾ô<£é~é?éuéÜ`€€ EI Q endstream endobj 474 0 obj << /Length 168 >> stream 29 0 1 0 29 28 d1 q 28 0 0 28 1.1 -0.1 cm BI /W 28 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8A“˜z ûïïÒ®¾ºô¸AP¬³‡Ûíÿô¿ÿý.•$ºRjà EI Q endstream endobj 475 0 obj << /Length 173 >> stream 30 0 4 -1 32 29 d1 q 28 0 0 30 4.1 -1.1 cm BI /W 28 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID !B7áN¨'„ž—IÿJ«ë¨ÿKÿùºWÿm.•¾á+h+ %@ EI Q endstream endobj 476 0 obj << /Length 166 >> stream 32 0 2 0 32 28 d1 q 30 0 0 28 2.1 -0.1 cm BI /W 30 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 6LÌÍè7ÛíÿÝ'ÿÿïª__ÿ×ZUþ—K¯ARK„š EI Q endstream endobj 477 0 obj << /Length 167 >> stream 28 0 2 0 29 28 d1 q 27 0 0 28 2.1 -0.1 cm BI /W 27 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8 Á“>Ÿkÿý/Ÿ_ÇýzЬ¾÷ÿþ*Cÿ¥þ½*KÂɨ7€€ EI Q endstream endobj 478 0 obj << /Length 161 >> stream 27 0 2 0 28 28 d1 q 26 0 0 28 2.1 -0.1 cm BI /W 26 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8“¦Ÿkÿý/Ÿ_ÇýzЬ¾÷ÿÿHÿÒÜš‚@@ EI Q endstream endobj 479 0 obj << /Length 176 >> stream 33 0 4 -1 32 29 d1 q 28 0 0 30 4.1 -1.1 cm BI /W 28 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID !B7áN¨'„ž—IÿJ«ë¨ÿKþHš¿Jÿíÿ¶·«aöA<C EI Q endstream endobj 480 0 obj << /Length 165 >> stream 31 0 1 0 34 28 d1 q 33 0 0 28 1.1 -0.1 cm BI /W 33 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8ØpdÐNê¿ÿþ’_ÿÿú–Gÿÿé%ÿÿÿ¤–îMC› EI Q endstream endobj 481 0 obj << /Length 150 >> stream 15 0 1 0 17 28 d1 q 16 0 0 28 1.1 -0.1 cm BI /W 16 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8-ý/ÿô¿ÿÒÿÿKrj  EI Q endstream endobj 482 0 obj << /Length 157 >> stream 21 0 2 -1 23 28 d1 q 21 0 0 29 2.1 -1.1 cm BI /W 21 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 4C=ý/ÿô¿ÿÒò=Óÿ¤µXIYíC  EI Q endstream endobj 483 0 obj << /Length 175 >> stream 32 0 1 0 33 28 d1 q 32 0 0 28 1.1 -0.1 cm BI /W 32 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8ø É P½tº\ †’].—K¯ ÒEé_I÷ztŸß}ýÒ}§&¡Â  EI Q endstream endobj 484 0 obj << /Length 155 >> stream 26 0 2 0 24 28 d1 q 22 0 0 28 2.1 -0.1 cm BI /W 22 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8 N•ÿô¿ÿÒÿþ©ú_ëIxJMCD@ EI Q endstream endobj 485 0 obj << /Length 184 >> stream 38 0 2 0 40 28 d1 q 38 0 0 28 2.1 -0.1 cm BI /W 38 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8)¨@tJåëè¡ÿÿ¥ÿé6’_ÿ¥ÿþ—ÛúZIþ—ÿí¥ý.—¥ô¿ÿ¿¿ë®•:¸ óà EI Q endstream endobj 486 0 obj << /Length 173 >> stream 31 0 1 0 34 28 d1 q 33 0 0 28 1.1 -0.1 cm BI /W 33 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8)@€á‚ʵúíþþý+K¿ïïûûô›KÿoÿÛÿÒm/÷ýZ¦ðAð EI Q endstream endobj 487 0 obj << /Length 173 >> stream 32 0 4 -1 32 29 d1 q 28 0 0 30 4.1 -1.1 cm BI /W 28 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID !ŽÜ ›¤¥t›¥ÖôõõÖÿÒKÿÿKÿº^¶·Kut­„0 … EI Q endstream endobj 488 0 obj << /Length 160 >> stream 28 0 2 0 28 28 d1 q 26 0 0 28 2.1 -0.1 cm BI /W 26 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8 A“ðô÷¿úKÿ×K¥H%ˆ,º¿éÿ¥¹5 EI Q endstream endobj 489 0 obj << /Length 173 >> stream 31 0 2 -1 31 28 d1 q 29 0 0 29 2.1 -1.1 cm BI /W 29 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 6 LÌý¦o¿¿ÒKþº].¡—áðß¾þé%ÿÿÿT´·òjÒˆ`à EI Q endstream endobj 490 0 obj << /Length 171 >> stream 23 0 2 -1 24 29 d1 q 22 0 0 30 2.1 -1.1 cm BI /W 22 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID '%üw¤¥ÒzÿýkŽíäJ0víÁ¹Ðï#¯ÿõµ­m,"øKA… EI Q endstream endobj 491 0 obj << /Length 159 >> stream 30 0 4 0 32 28 d1 q 28 0 0 28 4.1 -0.1 cm BI /W 28 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 0~O°¨=u_×ÿét¾8ÿéÿ¥ÿþ–æx€ EI Q endstream endobj 492 0 obj << /Length 168 >> stream 31 0 6 -1 34 28 d1 q 28 0 0 29 6.1 -1.1 cm BI /W 28 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¡Ïˆ ˜`´×¯ÿô’ÿÿÿÒKÿÿÿI/ßé~Ú]+i[ Á@@ EI Q endstream endobj 493 0 obj << /Length 165 >> stream 31 0 5 -1 34 28 d1 q 29 0 0 29 5.1 -1.1 cm BI /W 29 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¡IÅ0W¯_ÚWú]}m+ý/ô·Ý/ôºÛ®—÷í}x€ EI Q endstream endobj 494 0 obj << /Length 185 >> stream 43 0 5 -1 46 28 d1 q 41 0 0 29 5.1 -1.1 cm BI /W 41 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¡M…< 0@ÁÝ…ÿõõýu]ÊÕÒ×ýtµÿ]/ÞÚWKÿ¥×ýiuÿV•ý_õ_Õ]õP EI Q endstream endobj 495 0 obj << /Length 173 >> stream 31 0 1 0 32 28 d1 q 31 0 0 28 1.1 -0.1 cm BI /W 31 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8ð€Â`­0·WKi]-­ëi]-ßw§E>—Jêô¯OJé=+«ÂiÁ0À@ EI Q endstream endobj 496 0 obj << /Length 165 >> stream 31 0 5 0 34 28 d1 q 29 0 0 28 5.1 -0.1 cm BI /W 29 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡IÅ`­Vêém+¯­¥t¶·­¥Òºâ­}Wÿõ]͇€€ EI Q endstream endobj 497 0 obj << /Length 167 >> stream 25 0 2 0 27 28 d1 q 25 0 0 28 2.1 -0.1 cm BI /W 25 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID <Ñ3¬$´—]WJ’]cT©WT©WFŠ’Tº_ZUIi|- •  EI Q endstream endobj 498 0 obj << /Length 134 >> stream 21 0 2 11 22 12 d1 q 20 0 0 1 2.1 10.9 cm BI /W 20 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID &¡ @ EI Q endstream endobj 499 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 20 0 obj << /Name /T10 /Type /Font /Subtype /Type3 /Resources 499 0 R /FontBBox [-3 -9 47 30] /FontMatrix [1 0 0 -1 0 0] /FirstChar 12 /LastChar 122 /Encoding 500 0 R /CharProcs 501 0 R /Widths [27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 0 0 24 24 24 24 24 24 24 0 0 0 0 0 0 0 0 0 36 34 34 37 0 30 0 37 18 0 0 29 45 0 36 33 0 0 27 33 0 36 49 0 0 0 0 0 0 0 0 0 23 27 21 27 22 0 24 27 14 15 25 14 40 27 24 27 0 20 19 19 27 0 34 25 25 21 ] >> endobj 500 0 obj << /Type /Encoding /Differences [12/#230C 46/. 49/1 /2 /3 /4 /5 /6 /7 65/A /B /C /D 70/F 72/H /I 76/L /M 79/O /P 83/S /T 86/V /W 97/a /b /c /d /e 103/g /h /i /j /k /l /m /n /o /p 114/r /s /t /u 119/w /x /y /z ] >> endobj 501 0 obj << /#230C 502 0 R /. 503 0 R /1 504 0 R /2 505 0 R /3 506 0 R /4 507 0 R /5 508 0 R /6 509 0 R /7 510 0 R /A 511 0 R /B 512 0 R /C 513 0 R /D 514 0 R /F 515 0 R /H 516 0 R /I 517 0 R /L 518 0 R /M 519 0 R /O 520 0 R /P 521 0 R /S 522 0 R /T 523 0 R /V 524 0 R /W 525 0 R /a 526 0 R /b 527 0 R /c 528 0 R /d 529 0 R /e 530 0 R /g 531 0 R /h 532 0 R /i 533 0 R /j 534 0 R /k 535 0 R /l 536 0 R /m 537 0 R /n 538 0 R /o 539 0 R /p 540 0 R /r 541 0 R /s 542 0 R /t 543 0 R /u 544 0 R /w 545 0 R /x 546 0 R /y 547 0 R /z 548 0 R >> endobj 502 0 obj << /Length 164 >> stream 27 0 0 0 25 29 d1 q 25 0 0 29 0.1 -0.1 cm BI /W 25 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 'ŸWTéíqÿɨ7óffÿÿÿÿÿÿÿø Âà EI Q endstream endobj 503 0 obj << /Length 129 >> stream 13 0 3 0 9 6 d1 q 6 0 0 6 3.1 -0.1 cm BI /W 6 /H 6 /BPC 1 /IM true /F /CCF /DP <> ID #ºµ EI Q endstream endobj 504 0 obj << /Length 151 >> stream 24 0 3 0 20 27 d1 q 17 0 0 27 3.1 -0.1 cm BI /W 17 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID 4á`²j-ñÿÿÿÿÿÿÿò8/€€ EI Q endstream endobj 505 0 obj << /Length 161 >> stream 24 0 2 0 21 27 d1 q 19 0 0 27 2.1 -0.1 cm BI /W 19 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID 8, èØCtßÞþÖ+^•-PT©PARÒÐJ…Vµð EI Q endstream endobj 506 0 obj << /Length 164 >> stream 24 0 2 0 21 27 d1 q 19 0 0 27 2.1 -0.1 cm BI /W 19 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID 8, è¼}º·¿]®)z ”ðå÷ö_ÓÓÿ«It¡Š†@ EI Q endstream endobj 507 0 obj << /Length 159 >> stream 24 0 1 0 22 27 d1 q 21 0 0 27 1.1 -0.1 cm BI /W 21 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID :õ­kZ8ú^ºôº].—K¥Òò rAÿÿ™‚` EI Q endstream endobj 508 0 obj << /Length 163 >> stream 24 0 2 0 21 27 d1 q 19 0 0 27 2.1 -0.1 cm BI /W 19 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID /ø­kX,úÿóÂ=‡¶ž7¿#½ë]¤¬4¬T0P EI Q endstream endobj 509 0 obj << /Length 165 >> stream 24 0 2 0 21 27 d1 q 19 0 0 27 2.1 -0.1 cm BI /W 19 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID 4('Eó¤%¥Õ­¯0|#Ø~˜{z¿ÿú·ô­¥ U… EI Q endstream endobj 510 0 obj << /Length 154 >> stream 24 0 3 0 22 28 d1 q 19 0 0 28 3.1 -0.1 cm BI /W 19 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID #ù z×£!i.—J)zUõÕõÿÿj  EI Q endstream endobj 511 0 obj << /Length 164 >> stream 36 0 2 0 33 28 d1 q 31 0 0 28 2.1 -0.1 cm BI /W 31 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID :^Ÿôý<ãëzÒoõ½?é7ŽžtkzÒoòj "kà EI Q endstream endobj 512 0 obj << /Length 165 >> stream 34 0 2 0 30 28 d1 q 28 0 0 28 2.1 -0.1 cm BI /W 28 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡³6F…Ûïïÿÿýt¸K’8}¾ßýÿÿé„¤Ô á@@ EI Q endstream endobj 513 0 obj << /Length 166 >> stream 34 0 3 0 30 28 d1 q 27 0 0 28 3.1 -0.1 cm BI /W 27 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID (A"?'IÒ÷^µÿÿî÷ô­öÒ¶•ƒ C  EI Q endstream endobj 514 0 obj << /Length 163 >> stream 37 0 2 0 33 28 d1 q 31 0 0 28 2.1 -0.1 cm BI /W 31 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡³6Fƒá¾÷ßßûÿÿÿþ¿þ—ú\%ÂRjðP EI Q endstream endobj 515 0 obj << /Length 160 >> stream 30 0 2 0 27 28 d1 q 25 0 0 28 2.1 -0.1 cm BI /W 25 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID & _Í‘¡ðýýþùïÿÃ×®?’¿~ÿÿÿòjð EI Q endstream endobj 516 0 obj << /Length 161 >> stream 37 0 2 0 34 28 d1 q 32 0 0 28 2.1 -0.1 cm BI /W 32 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID & æÁüÙ ÿÿÿÿÿøþHÿÿÿÿÿÿù56à EI Q endstream endobj 517 0 obj << /Length 148 >> stream 18 0 2 0 16 28 d1 q 14 0 0 28 2.1 -0.1 cm BI /W 14 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID & ù²ÿÿÿÿÿÿÿÿüšƒà EI Q endstream endobj 518 0 obj << /Length 153 >> stream 29 0 2 0 26 28 d1 q 24 0 0 28 2.1 -0.1 cm BI /W 24 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡6_ÿÿÿÿÿ ÿ¯õׯ & £À@ EI Q endstream endobj 519 0 obj << /Length 182 >> stream 45 0 2 0 42 28 d1 q 40 0 0 28 2.1 -0.1 cm BI /W 40 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡€–¦Ç#¹ÇhãÿÿþÚ_ÿ¶—ÿí¥ÿûiÿÿm/ÿÛKÿöÒÿýŠÿÿíäÔ#GÁ? EI Q endstream endobj 520 0 obj << /Length 169 >> stream 36 0 3 0 32 28 d1 q 29 0 0 28 3.1 -0.1 cm BI /W 29 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 'ž ƒp““zzÝoOúßÿÿÿ½mzÚÞ­¥  ¬0”‚€€ EI Q endstream endobj 521 0 obj << /Length 159 >> stream 33 0 2 0 29 28 d1 q 27 0 0 28 2.1 -0.1 cm BI /W 27 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡³lŒÇÃöýÿÿõþ— bJ¿ÿÿÿɨ?€€ EI Q endstream endobj 522 0 obj << /Length 173 >> stream 27 0 3 0 23 28 d1 q 20 0 0 28 3.1 -0.1 cm BI /W 20 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8(Jah¿ úzýÿ±ÃÈZ2î·4 :¹5ÿë~ÒÃ\>a@@ EI Q endstream endobj 523 0 obj << /Length 156 >> stream 33 0 2 0 30 28 d1 q 28 0 0 28 2.1 -0.1 cm BI /W 28 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID #†WËâ]ÖúÞ½Öÿÿøáÿÿÿÿÿüàà EI Q endstream endobj 524 0 obj << /Length 164 >> stream 36 0 1 0 34 28 d1 q 33 0 0 28 1.1 -0.1 cm BI /W 33 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID & æ<Ùý­ëkzßt¿m/ío[[Öû¥ûi¯kÚð EI Q endstream endobj 525 0 obj << /Length 181 >> stream 49 0 1 0 47 28 d1 q 46 0 0 28 1.1 -0.1 cm BI /W 46 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID & †ÁÎüÙ÷íÖýtýëtëÎþߥÖýÓ­þºMûõºÝz~ߥŽ==ëOûÖžõø€ EI Q endstream endobj 526 0 obj << /Length 162 >> stream 23 0 1 0 22 18 d1 q 21 0 0 18 1.1 -0.1 cm BI /W 21 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 6%¦Ãïî×h$á8@º ¯KÿîŠa¥À@ EI Q endstream endobj 527 0 obj << /Length 161 >> stream 27 0 1 0 24 29 d1 q 23 0 0 29 1.1 -0.1 cm BI /W 23 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¢ø?ÿÿÿ.<‹aáõ}¿ûÿÿþ¿ÒÝað–ƒ EI Q endstream endobj 528 0 obj << /Length 153 >> stream 21 0 2 0 19 18 d1 q 17 0 0 18 2.1 -0.1 cm BI /W 17 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID <,#c¤z_j£ÿþü+{¥l% B€€ EI Q endstream endobj 529 0 obj << /Length 161 >> stream 27 0 2 0 25 29 d1 q 23 0 0 29 2.1 -0.1 cm BI /W 23 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID $ àÿÿÿóåÁš êô¿×ÿÿÿßý¾ëa„ 27€€ EI Q endstream endobj 530 0 obj << /Length 156 >> stream 22 0 1 0 20 18 d1 q 19 0 0 18 1.1 -0.1 cm BI /W 19 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID <,"ð: º·Kö¿Ç'§ï·¶•°”€ EI Q endstream endobj 531 0 obj << /Length 173 >> stream 24 0 1 -9 22 18 d1 q 21 0 0 27 1.1 -9.1 cm BI /W 21 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID > stream 27 0 1 0 25 29 d1 q 24 0 0 29 1.1 -0.1 cm BI /W 24 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¢ø?ÿÿÿ6\#Ãè&÷×ÿÿÿÿÿÿÁÀ@ EI Q endstream endobj 533 0 obj << /Length 148 >> stream 14 0 1 0 11 30 d1 q 10 0 0 30 1.1 -0.1 cm BI /W 10 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID 0éÿíGò8ü?ÿÿÿÿø ð EI Q endstream endobj 534 0 obj << /Length 156 >> stream 15 0 -3 -8 11 30 d1 q 14 0 0 38 -2.9 -8.1 cm BI /W 14 /H 38 /BPC 1 /IM true /F /CCF /DP <> ID 4tÿj?žÿÿÿÿÈöŸ×JÕC  EI Q endstream endobj 535 0 obj << /Length 165 >> stream 25 0 1 0 24 29 d1 q 23 0 0 29 1.1 -0.1 cm BI /W 23 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¢ø?ÿÿÿ> stream 14 0 1 0 12 29 d1 q 11 0 0 29 1.1 -0.1 cm BI /W 11 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¢ø?ÿÿÿÿÿÿÿÿü<@ EI Q endstream endobj 537 0 obj << /Length 166 >> stream 40 0 1 0 38 18 d1 q 37 0 0 18 1.1 -0.1 cm BI /W 37 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¢›#åÂ<0‚mÞáßýWÿÿÿÿÿÿÿÿü0@Áü@ EI Q endstream endobj 538 0 obj << /Length 155 >> stream 27 0 1 0 25 18 d1 q 24 0 0 18 1.1 -0.1 cm BI /W 24 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¢›.áÁÐMîÿ¯ÿÿÿÿÿÿ‚€€ EI Q endstream endobj 539 0 obj << /Length 155 >> stream 24 0 1 0 22 18 d1 q 21 0 0 18 1.1 -0.1 cm BI /W 21 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID >8"ð­Òoõ¿ÿÿzý´­¥m(1 EI Q endstream endobj 540 0 obj << /Length 162 >> stream 27 0 1 -8 24 18 d1 q 23 0 0 26 1.1 -8.1 cm BI /W 23 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID &¢—BØpa7¦ý÷÷ÿÿýuõ´¶–rãÿþ€€ EI Q endstream endobj 541 0 obj << /Length 150 >> stream 20 0 1 0 18 18 d1 q 17 0 0 18 1.1 -0.1 cm BI /W 17 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &£0}’ÿmqÿÿÿð@ü@ EI Q endstream endobj 542 0 obj << /Length 158 >> stream 19 0 2 0 16 18 d1 q 14 0 0 18 2.1 -0.1 cm BI /W 14 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 00Jƒ¤¿ö9{†á³C&¸¿¬4°EÊ  EI Q endstream endobj 543 0 obj << /Length 152 >> stream 19 0 1 0 15 26 d1 q 14 0 0 26 1.1 -0.1 cm BI /W 14 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID =ÿëëáæ¡A“ïÿÿü/ÿ½[[ EI Q endstream endobj 544 0 obj << /Length 154 >> stream 27 0 1 0 25 18 d1 q 24 0 0 18 1.1 -0.1 cm BI /W 24 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¢œðpÿÿÿÿÿÿýoÛム”@@ EI Q endstream endobj 545 0 obj << /Length 165 >> stream 34 0 1 0 32 18 d1 q 31 0 0 18 1.1 -0.1 cm BI /W 31 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¢Àÿƒ0_ÿÛM/8ÿ}­ÒzÿØí-?ã´×ïZÀ@ EI Q endstream endobj 546 0 obj << /Length 161 >> stream 25 0 1 0 23 18 d1 q 22 0 0 18 1.1 -0.1 cm BI /W 22 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¡ àÐf·JÚVÒ±Z½ºtaÝ+¤ún“rj*à EI Q endstream endobj 547 0 obj << /Length 164 >> stream 25 0 1 -8 23 18 d1 q 22 0 0 26 1.1 -8.1 cm BI /W 22 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID &¡Á„-÷KöÒý´¿µ½cµí{^”t××JÒV*  EI Q endstream endobj 548 0 obj << /Length 154 >> stream 21 0 1 0 18 18 d1 q 17 0 0 18 1.1 -0.1 cm BI /W 17 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID #‚òùiu].¾¢•ih*Zô©UWKC€€ EI Q endstream endobj 549 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 21 0 obj << /Name /T11 /Type /Font /Subtype /Type3 /Resources 549 0 R /FontBBox [-6 -21 117 73] /FontMatrix [1 0 0 -1 0 0] /FirstChar 67 /LastChar 121 /Encoding 550 0 R /CharProcs 551 0 R /Widths [84 89 0 73 0 91 43 0 0 70 0 0 87 79 0 0 65 81 0 0 120 0 0 0 0 0 0 0 0 0 56 65 52 65 53 0 58 65 32 36 0 32 98 65 58 65 0 47 46 45 65 0 0 61 61 ] >> endobj 550 0 obj << /Type /Encoding /Differences [67/C /D 70/F 72/H /I 76/L 79/O /P 83/S /T 87/W 97/a /b /c /d /e 103/g /h /i /j 108/l /m /n /o /p 114/r /s /t /u 120/x /y ] >> endobj 551 0 obj << /C 552 0 R /D 553 0 R /F 554 0 R /H 555 0 R /I 556 0 R /L 557 0 R /O 558 0 R /P 559 0 R /S 560 0 R /T 561 0 R /W 562 0 R /a 563 0 R /b 564 0 R /c 565 0 R /d 566 0 R /e 567 0 R /g 568 0 R /h 569 0 R /i 570 0 R /j 571 0 R /l 572 0 R /m 573 0 R /n 574 0 R /o 575 0 R /p 576 0 R /r 577 0 R /s 578 0 R /t 579 0 R /u 580 0 R /x 581 0 R /y 582 0 R >> endobj 552 0 obj << /Length 231 >> stream 84 0 6 -1 77 72 d1 q 71 0 0 73 6.1 -1.1 cm BI /W 71 /H 73 /BPC 1 /IM true /F /CCF /DP <> ID "@áI€n5„A„¡Âv¡ 5A0‚‚t'IÒÕé×Iý/uëWÿ^ŠÈoúÿÿÿÿýÿÝÊ£ÿ~÷^­ÿ¶•ý¥u·VÒ¶•†•°”0Ò°ÂPÁ‚PÈ0@PÄ(0 ÁH<@ EI Q endstream endobj 553 0 obj << /Length 210 >> stream 89 0 4 0 82 71 d1 q 78 0 0 71 4.1 -0.1 cm BI /W 78 /H 71 /BPC 1 /IM true /F /CCF /DP <> ID & Ë8Q‡(#ŽB87÷Ûá¿}¾ý¿}ýÿ·ÿ}ÿÿÿýÿÿÿÿÿÿÿ_ÿý¯¯ÿ¥þ—®¾º].— t¸K„"‰5Ì Ê  EI Q endstream endobj 554 0 obj << /Length 193 >> stream 73 0 4 0 67 71 d1 q 63 0 0 71 4.1 -0.1 cm BI /W 63 /H 71 /BPC 1 /IM true /F /CCF /DP <> ID & Yÿ”‘¿*ðü?~ÿïï¿ÿßÿÿo5?ÿü§ ÿýþ½x.?þAÏàýûÿýÿÿÿüÿÿÿÿÿüš†¿þ  EI Q endstream endobj 555 0 obj << /Length 191 >> stream 91 0 4 0 86 71 d1 q 82 0 0 71 4.1 -0.1 cm BI /W 82 /H 71 /BPC 1 /IM true /F /CCF /DP <> ID &¡¨NŸþPFÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÿäoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüš†¡8jø€ EI Q endstream endobj 556 0 obj << /Length 165 >> stream 43 0 3 0 39 71 d1 q 36 0 0 71 3.1 -0.1 cm BI /W 36 /H 71 /BPC 1 /IM true /F /CCF /DP <> ID &¡©ù@?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&¡©ø€ EI Q endstream endobj 557 0 obj << /Length 179 >> stream 70 0 4 0 64 71 d1 q 60 0 0 71 4.1 -0.1 cm BI /W 60 /H 71 /BPC 1 /IM true /F /CCF /DP <> ID &¡¯ÿ”ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘§ÿú_ÿúÿýë¯_õëÂõáyÔ“PXÿÀ@ EI Q endstream endobj 558 0 obj << /Length 230 >> stream 87 0 6 -1 80 72 d1 q 74 0 0 73 6.1 -1.1 cm BI /W 74 /H 73 /BPC 1 /IM true /F /CCF /DP <> ID `ò¬ Á„Cœ8@‡ ÄaÒn“t›¤Ý&ët›­éëzzßé7úßÿ[Óÿÿ­ÿÿÿÿÿÿûÖ×ÿ½öÒÿí¥ûÕ´¿m+i^¶¶Ò†ÐVJÚPÃ+ ¼Ô‚†)€€ EI Q endstream endobj 559 0 obj << /Length 194 >> stream 79 0 4 0 72 71 d1 q 68 0 0 71 4.1 -0.1 cm BI /W 68 /H 71 /BPC 1 /IM true /F /CCF /DP <> ID & É7ÖPS‚üƒíðßoß}ýÿßÿÿÿõÿúë믮— p‚à–!`°Y,ÿÿÿÿÿÿÿÿÿÿòjŸø€ EI Q endstream endobj 560 0 obj << /Length 247 >> stream 65 0 6 -1 58 72 d1 q 52 0 0 73 6.1 -1.1 cm BI /W 52 /H 73 /BPC 1 /IM true /F /CCF /DP <> ID 5…)ù 3¬ k ­‡ h¬kA:Aé='ïWÓ×ïú¿÷ÿ¾ýûðÆÃÈh.‘Ì Ôƒ°vðíÛ†íÃpðnA†d“ò4$P‡¶#ίÿ¿ß×÷úÚïõ†–ü4°ÂYƒKL‡!h1 A… ahˆ€€ EI Q endstream endobj 561 0 obj << /Length 186 >> stream 81 0 4 0 76 70 d1 q 72 0 0 70 4.1 -0.1 cm BI /W 72 /H 70 /BPC 1 /IM true /F /CCF /DP <> ID .¿þA4 úpX=†õ¾·Öÿõ¿ÿúßÿÿõî·ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüè Ÿø€ EI Q endstream endobj 562 0 obj << /Length 260 >> stream 120 0 2 -1 117 71 d1 q 115 0 0 72 2.1 -1.1 cm BI /W 115 /H 72 /BPC 1 /IM true /F /CCF /DP <> ID & ÖN F /ÿÿš“‚6n +õïÛ­î·÷t½ûu¿^ýë{­¯}/~ÑcÖÿ]oÝ:ߺÚýéÒýûIÖÿ]oÝ:ߺÚýéÒýûIÖÿ]oÝ:ߺÚýéÒýûIÖÿ]oÝ:ߺÚýéÒüx§½Ozý¦¿§½Ozý¦¿§½ià EI Q endstream endobj 563 0 obj << /Length 208 >> stream 56 0 4 0 55 46 d1 q 51 0 0 46 4.1 -0.1 cm BI /W 51 /H 46 /BPC 1 /IM true /F /CCF /DP <> ID $ó0/:"0ÃáºmûïォµÚãÿü«%86ƒ„Aé„C‡ ¸At½ué¥ÿÿëûkчÛ^ØJƒ&AƒPÅ8a9 (p EI Q endstream endobj 564 0 obj << /Length 208 >> stream 65 0 4 0 60 72 d1 q 56 0 0 72 4.1 -0.1 cm BI /W 56 /H 72 /BPC 1 /IM true /F /CCF /DP <> ID 4M@üð{ÿÿÿÿÿÿÿù ^ŽaôÄ&ôÞ›Óz¾ßýÿ·ÿÿßÿÿÿÿõÿúëÿ]/í-ÖÒÈŽÒÓ %¦ ´… ÂÐ2`€ EI Q endstream endobj 565 0 obj << /Length 187 >> stream 52 0 4 0 48 46 d1 q 44 0 0 46 4.1 -0.1 cm BI /W 44 /H 46 /BPC 1 /IM true /F /CCF /DP <> ID #¨(„"‡$è.’tºô¿Òj­vª:þ¿ÿÿþÿ~þÙ&ß´¯ÛJÚVÒ°ÂPáˆP‘` EI Q endstream endobj 566 0 obj << /Length 211 >> stream 65 0 4 0 60 72 d1 q 56 0 0 72 4.1 -0.1 cm BI /W 56 /H 72 /BPC 1 /IM true /F /CCF /DP <> ID %"HÐÿ‘`÷ÿÿÿÿÿÿÿÈÀ¼êpƒá³| @ÇA= ôž¯Ký.¿õ×ÿëÿÿÿÿÿþÿÿûïþßu¶¶ÖØ[h˜îÁ‚ @ƒPÅ`ÂÁ‡€€ EI Q endstream endobj 567 0 obj << /Length 192 >> stream 53 0 3 0 49 46 d1 q 46 0 0 46 3.1 -0.1 cm BI /W 46 /H 46 /BPC 1 /IM true /F /CCF /DP <> ID #ΡžpˆO n“t›¤Ý&ëÒ¾õ¿ë«ûõþ?âþÿÛ÷ OÛô­­´­¥m(l%`͆!A‚‘à EI Q endstream endobj 568 0 obj << /Length 241 >> stream 58 0 3 -21 55 47 d1 q 52 0 0 68 3.1 -21.1 cm BI /W 52 /H 68 /BPC 1 /IM true /F /CCF /DP <> ID %‡5…†ÂpƒDŸ„ñš0´ŸI½m­;U±ýoÿÿÿÿÞ¿zÚÞ­¥m,0•q ¡…Ï…¤?ïïáäjd4ˆƒ·‡nÜ' DPŽ‚ Ai«t¾ÿÿÿm/ÛJÚVJad8j… k  EI Q endstream endobj 569 0 obj << /Length 194 >> stream 65 0 5 0 61 72 d1 q 56 0 0 72 5.1 -0.1 cm BI /W 56 /H 72 /BPC 1 /IM true /F /CCF /DP <> ID 4M@üð{ÿÿÿÿÿÿÿù@NAð‰sè}ßKé^)ýëþ¿ÿ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ& `ðÿð EI Q endstream endobj 570 0 obj << /Length 172 >> stream 32 0 4 0 28 73 d1 q 24 0 0 73 4.1 -0.1 cm BI /W 24 /H 73 /BPC 1 /IM true /F /CCF /DP <> ID 48AÓ§éÿý¯jÔ0£ÿæ‚I¨ÿžÿÿÿÿÿÿÿÿÿÿÿÿüšÀ@ EI Q endstream endobj 571 0 obj << /Length 189 >> stream 36 0 -6 -20 27 73 d1 q 33 0 0 93 -5.9 -20.1 cm BI /W 33 /H 93 /BPC 1 /IM true /F /CCF /DP <> ID !téúí{V¡…ÿ*:Épïÿÿÿÿÿÿÿÿÿÿÿ˜-==:ëëý+Iz°‚ ÅC4  EI Q endstream endobj 572 0 obj << /Length 167 >> stream 32 0 4 0 29 72 d1 q 25 0 0 72 4.1 -0.1 cm BI /W 25 /H 72 /BPC 1 /IM true /F /CCF /DP <> ID 4M@üð{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“P1ø€ EI Q endstream endobj 573 0 obj << /Length 213 >> stream 98 0 5 0 94 46 d1 q 89 0 0 46 5.1 -0.1 cm BI /W 89 /H 46 /BPC 1 /IM true /F /CCF /DP <> ID 3†ƒ & À `ðƒ>/a÷Ð&Ð&炤ÚMÝ ¾•¥}'Iÿâ«ÿªÿÿÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿɨ>ÿü@ EI Q endstream endobj 574 0 obj << /Length 185 >> stream 65 0 5 0 61 46 d1 q 56 0 0 46 5.1 -0.1 cm BI /W 56 /H 46 /BPC 1 /IM true /F /CCF /DP <> ID 3MA€@ú„KŸ@›ž ‚né}+é?ïÿ_ÿ¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“P0x ø€ EI Q endstream endobj 575 0 obj << /Length 193 >> stream 58 0 3 0 54 46 d1 q 51 0 0 46 3.1 -0.1 cm BI /W 51 /H 46 /BPC 1 /IM true /F /CCF /DP <> ID "Ρ²pˆJ àƒt›¤Ý&ëzzÝoOúßÿ[ÿÿÿÿ÷¯ÿöÒýëkz¶•êÚVÒ°ÂPÁ‚ … )  EI Q endstream endobj 576 0 obj << /Length 210 >> stream 65 0 4 -20 60 46 d1 q 56 0 0 66 4.1 -20.1 cm BI /W 56 /H 66 /BPC 1 /IM true /F /CCF /DP <> ID 4Ð,šððˆü>sÀ»v›ÓzoWÛÿoþÿßþÿÿÿÿÿ®¿õþ¾½uÚ[­¥´²pÂ]†\1 †B Çÿÿÿÿÿòj?ð EI Q endstream endobj 577 0 obj << /Length 174 >> stream 47 0 3 0 43 46 d1 q 40 0 0 46 3.1 -0.1 cm BI /W 40 /H 46 /BPC 1 /IM true /F /CCF /DP <> ID 4Ðrj Aô]¾‚Nx*]ÒOKþ+ý­5ÚãõÿÿÿÿÿÿÿÿÿäÔ2ÿð EI Q endstream endobj 578 0 obj << /Length 203 >> stream 46 0 4 0 41 46 d1 q 37 0 0 46 4.1 -0.1 cm BI /W 37 /H 46 /BPC 1 /IM true /F /CCF /DP <> ID $3¦`@XC¢)ô=¯IÿÞ¿÷ïÃ; Àɰxvì;pÜ75‰Èðu}ïßî¿¿ioÚXidc† a1 A… `  EI Q endstream endobj 579 0 obj << /Length 180 >> stream 45 0 2 0 38 66 d1 q 36 0 0 66 2.1 -0.1 cm BI /W 36 /H 66 /BPC 1 /IM true /F /CCF /DP <> ID :¿ÿõþ¿×Ö¾°µ„A¡É¨i3 ÿÿÿÿÿÿÿÿþCÿÿÿï[[ý+ua„¬T5#€€ EI Q endstream endobj 580 0 obj << /Length 186 >> stream 65 0 5 0 61 46 d1 q 56 0 0 46 5.1 -0.1 cm BI /W 56 /H 46 /BPC 1 /IM true /F /CCF /DP <> ID 4ƒM@‚ÿþx9ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯ÿuëûhÃî» % A«°ÖS…À@ EI Q endstream endobj 581 0 obj << /Length 199 >> stream 61 0 2 0 58 46 d1 q 56 0 0 46 2.1 -0.1 cm BI /W 56 /H 46 /BPC 1 /IM true /F /CCF /DP <> ID &  ÿÿ̃"RØVêÚWJÚ[JÚÛJõm-¥m+{Z·nß§OtMÝ'¤Ý+¤Ý[¤ún•Òn“tž­Âw&¡œè ?ü@ EI Q endstream endobj 582 0 obj << /Length 208 >> stream 61 0 2 -20 58 46 d1 q 56 0 0 66 2.1 -20.1 cm BI /W 56 /H 66 /BPC 1 /IM true /F /CCF /DP <> ID & \ê ùð¥XöÕëkzÚÞ·Ý-ýo[[ÖÖõµ½oº[úÞ¶·­­ëkzÇkû^×µí{^º®«0uMiÕ5õ×¥êÐKIZ X¨aC EI Q endstream endobj 583 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 14 0 obj << /Name /T12 /Type /Font /Subtype /Type3 /Resources 583 0 R /FontBBox [0 -10 21 29] /FontMatrix [1 0 0 -1 0 0] /FirstChar 33 /LastChar 125 /Encoding 584 0 R /CharProcs 585 0 R /Widths [22 22 22 22 22 0 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 0 22 0 22 22 22 22 22 0 22 22 22 22 22 22 22 0 22 22 0 0 22 22 22 22 22 0 22 22 22 0 22 22 22 22 0 22 22 22 0 22 0 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 0 22 22 22 22 22 22 22 22 22 22 0 22 ] >> endobj 584 0 obj << /Type /Encoding /Differences [33/! /" /#2323 /$ /#2325 39/' /#2328 /#2329 /* /+ /, /- /. /#232F /0 /1 /2 /3 /4 /5 /6 56/8 58/: /; /#233C /= /#233E 64/@ /A /B /C /D /E /F 72/H /I 76/L /M /N /O /P 82/R /S /T 86/V /W /X /Y 91/#235B /#235C /#235D 95/_ 97/a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p 114/r /s /t /u /v /w /x /y /z /#237B 125/#237D ] >> endobj 585 0 obj << /! 586 0 R /" 587 0 R /#2323 588 0 R /$ 589 0 R /#2325 590 0 R /' 591 0 R /#2328 592 0 R /#2329 593 0 R /* 594 0 R /+ 595 0 R /, 596 0 R /- 597 0 R /. 598 0 R /#232F 599 0 R /0 600 0 R /1 601 0 R /2 602 0 R /3 603 0 R /4 604 0 R /5 605 0 R /6 606 0 R /8 607 0 R /: 608 0 R /; 609 0 R /#233C 610 0 R /= 611 0 R /#233E 612 0 R /@ 613 0 R /A 614 0 R /B 615 0 R /C 616 0 R /D 617 0 R /E 618 0 R /F 619 0 R /H 620 0 R /I 621 0 R /L 622 0 R /M 623 0 R /N 624 0 R /O 625 0 R /P 626 0 R /R 627 0 R /S 628 0 R /T 629 0 R /V 630 0 R /W 631 0 R /X 632 0 R /Y 633 0 R /#235B 634 0 R /#235C 635 0 R /#235D 636 0 R /_ 637 0 R /a 638 0 R /b 639 0 R /c 640 0 R /d 641 0 R /e 642 0 R /f 643 0 R /g 644 0 R /h 645 0 R /i 646 0 R /j 647 0 R /k 648 0 R /l 649 0 R /m 650 0 R /n 651 0 R /o 652 0 R /p 653 0 R /r 654 0 R /s 655 0 R /t 656 0 R /u 657 0 R /v 658 0 R /w 659 0 R /x 660 0 R /y 661 0 R /z 662 0 R /#237B 663 0 R /#237D 664 0 R >> endobj 586 0 obj << /Length 140 >> stream 22 0 9 0 13 25 d1 q 4 0 0 25 9.1 -0.1 cm BI /W 4 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID ©ÿÿÿûQðJžÔ@ EI Q endstream endobj 587 0 obj << /Length 143 >> stream 22 0 4 14 17 25 d1 q 13 0 0 11 4.1 13.9 cm BI /W 13 /H 11 /BPC 1 /IM true /F /CCF /DP <> ID &°-¯ÿÿý?½@@ EI Q endstream endobj 588 0 obj << /Length 159 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID =¿ÿÿòj÷9¿úIÿ‚ AªàÍfïÿÿø€ EI Q endstream endobj 589 0 obj << /Length 176 >> stream 22 0 2 -3 19 29 d1 q 17 0 0 32 2.1 -3.1 cm BI /W 17 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID 3ëü áN‰Žgx[ioëýí[ÆÇaÃÌï¼í§ÿ×·¥¼-ˆ« P×¼@ EI Q endstream endobj 590 0 obj << /Length 171 >> stream 22 0 1 -3 20 29 d1 q 19 0 0 32 1.1 -3.1 cm BI /W 19 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID /ô×ô%ÿéÿô¬WÒµÅ/éz_Òç*Iþ’ ÿú_úLWîÔ@ EI Q endstream endobj 591 0 obj << /Length 139 >> stream 22 0 8 12 14 25 d1 q 6 0 0 13 8.1 11.9 cm BI /W 6 /H 13 /BPC 1 /IM true /F /CCF /DP <> ID /ÓÛ¿éV–­@@ EI Q endstream endobj 592 0 obj << /Length 154 >> stream 22 0 6 -4 17 29 d1 q 11 0 0 33 6.1 -4.1 cm BI /W 11 /H 33 /BPC 1 /IM true /F /CCF /DP <> ID T*T½/Kú_ÿÿöÿ·íûvíØn  EI Q endstream endobj 593 0 obj << /Length 154 >> stream 22 0 5 -4 15 29 d1 q 10 0 0 33 5.1 -4.1 cm BI /W 10 /H 33 /BPC 1 /IM true /F /CCF /DP <> ID &¾íÛ·oÛöÿ·ÿþ—ô½/J•*Z€€ EI Q endstream endobj 594 0 obj << /Length 153 >> stream 22 0 3 4 18 22 d1 q 15 0 0 18 3.1 3.9 cm BI /W 15 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID =äÖÁoXŒ0¡…á9ngÖãƒÿ€€ EI Q endstream endobj 595 0 obj << /Length 143 >> stream 22 0 1 3 20 22 d1 q 19 0 0 19 1.1 2.9 cm BI /W 19 /H 19 /BPC 1 /IM true /F /CCF /DP <> ID 3¿ÿÿ&¡ŸÌïÿÿÀ@ EI Q endstream endobj 596 0 obj << /Length 138 >> stream 22 0 7 -6 14 5 d1 q 7 0 0 11 7.1 -6.1 cm BI /W 7 /H 11 /BPC 1 /IM true /F /CCF /DP <> ID /SÞáÖ¡*V  EI Q endstream endobj 597 0 obj << /Length 135 >> stream 22 0 2 11 19 14 d1 q 17 0 0 3 2.1 10.9 cm BI /W 17 /H 3 /BPC 1 /IM true /F /CCF /DP <> ID & Ç€€ EI Q endstream endobj 598 0 obj << /Length 130 >> stream 22 0 8 0 13 5 d1 q 5 0 0 5 8.1 -0.1 cm BI /W 5 /H 5 /BPC 1 /IM true /F /CCF /DP <> ID #Ôý¨€ EI Q endstream endobj 599 0 obj << /Length 153 >> stream 22 0 2 -3 19 29 d1 q 17 0 0 32 2.1 -3.1 cm BI /W 17 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID º^—¥éz^—¥éz^—¥éz^—Ô@ EI Q endstream endobj 600 0 obj << /Length 159 >> stream 22 0 2 0 19 25 d1 q 17 0 0 25 2.1 -0.1 cm BI /W 17 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID > stream 22 0 5 0 18 25 d1 q 13 0 0 25 5.1 -0.1 cm BI /W 13 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID =×Ö°_™ñÿÿÿÿÿɨ'€€ EI Q endstream endobj 602 0 obj << /Length 159 >> stream 22 0 2 0 19 25 d1 q 17 0 0 25 2.1 -0.1 cm BI /W 17 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID 8Pƒ§Eã ½ÞícézT©R¥J”%H¡«€€ EI Q endstream endobj 603 0 obj << /Length 162 >> stream 22 0 2 0 19 25 d1 q 17 0 0 25 2.1 -0.1 cm BI /W 17 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID 8Pƒ§Eóá»\JpL,9C†ï¼éô•†±V¡… EI Q endstream endobj 604 0 obj << /Length 156 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID 4:ç^—ú]}uézëÒòÍ|¢ÿùð¿À@ EI Q endstream endobj 605 0 obj << /Length 159 >> stream 22 0 2 0 19 25 d1 q 17 0 0 25 2.1 -0.1 cm BI /W 17 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID . _˜?ÿÿ#÷—îÓżéÿIXa+jP EI Q endstream endobj 606 0 obj << /Length 164 >> stream 22 0 2 0 19 25 d1 q 17 0 0 25 2.1 -0.1 cm BI /W 17 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID 38NŽ‚Z]ZÐúFÂx¼Ÿ½?n¿oý[­„¬U¨a@@ EI Q endstream endobj 607 0 obj << /Length 167 >> stream 22 0 2 0 19 25 d1 q 17 0 0 25 2.1 -0.1 cm BI /W 17 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID 88AÓ¢xè Ý?ûia…†!C t^:7[§ÿµzà b­C  EI Q endstream endobj 608 0 obj << /Length 138 >> stream 22 0 8 0 13 18 d1 q 5 0 0 18 8.1 -0.1 cm BI /W 5 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID #Ôý¨ÿ‘ê~Ô@ EI Q endstream endobj 609 0 obj << /Length 143 >> stream 22 0 7 -6 13 18 d1 q 6 0 0 24 7.1 -6.1 cm BI /W 6 /H 24 /BPC 1 /IM true /F /CCF /DP <> ID /Sö£þ^®÷}*U°  EI Q endstream endobj 610 0 obj << /Length 156 >> stream 22 0 2 2 19 23 d1 q 17 0 0 21 2.1 1.9 cm BI /W 17 /H 21 /BPC 1 /IM true /F /CCF /DP <> ID * T¡JP–7 ;p÷ ; 8p EI Q endstream endobj 611 0 obj << /Length 141 >> stream 22 0 1 7 20 18 d1 q 19 0 0 11 1.1 6.9 cm BI /W 19 /H 11 /BPC 1 /IM true /F /CCF /DP <> ID &¡Ÿr07ò8¸€ EI Q endstream endobj 612 0 obj << /Length 157 >> stream 22 0 2 2 19 23 d1 q 17 0 0 21 2.1 1.9 cm BI /W 17 /H 21 /BPC 1 /IM true /F /CCF /DP <> ID &¾7 ;p÷ ; 8T ©B ” ¡,,(€ EI Q endstream endobj 613 0 obj << /Length 172 >> stream 22 0 2 0 20 25 d1 q 18 0 0 25 2.1 -0.1 cm BI /W 18 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID 38NŽ‚Ru]"áôé$ÿÿÿÿþÛi{]±WjØaXg› P EI Q endstream endobj 614 0 obj << /Length 158 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID 3©üýoÿÓÖÿÿþ“Çéæÿÿ  é¦ÓP EI Q endstream endobj 615 0 obj << /Length 157 >> stream 22 0 1 0 19 25 d1 q 18 0 0 25 1.1 -0.1 cm BI /W 18 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #‡ íÃ7ý÷ÿÿÒǯ›ýïÿúéB+  EI Q endstream endobj 616 0 obj << /Length 158 >> stream 22 0 2 0 19 25 d1 q 17 0 0 25 2.1 -0.1 cm BI /W 17 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID >aBj†‰Ýôé~ ëÿÿÝÁ}¾Ò°ÖÅZ†@ EI Q endstream endobj 617 0 obj << /Length 156 >> stream 22 0 0 0 19 25 d1 q 19 0 0 25 0.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #‡ íÃ7{}¾ÿ÷¿ÿÿÿé¯K¬!T¬(€ EI Q endstream endobj 618 0 obj << /Length 154 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #ƒ¼3Sÿÿç/ãÿ6Ç‚ÿÿ„5p EI Q endstream endobj 619 0 obj << /Length 153 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID # á˜ÿÿÁüåüæÏøÿÿ„¨€ EI Q endstream endobj 620 0 obj << /Length 160 >> stream 22 0 0 0 21 25 d1 q 21 0 0 25 0.1 -0.1 cm BI /W 21 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #Œàé¦ÓP /ÿÿÿñÿšŸÿÿÿÿøA„4Új  EI Q endstream endobj 621 0 obj << /Length 148 >> stream 22 0 3 0 18 25 d1 q 15 0 0 25 3.1 -0.1 cm BI /W 15 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #‚SjzÿÿÿÿÿÿþG¦Ô@ EI Q endstream endobj 622 0 obj << /Length 149 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID &¢oP`¿ÿÿÿÿð—OÿÁÀ@ EI Q endstream endobj 623 0 obj << /Length 167 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID &¤|­|0ˆêPá{_ÿÿÿÿý¯Þ¿ÿÿÿãû_þ?ÿÿ ÿÀ@ EI Q endstream endobj 624 0 obj << /Length 166 >> stream 22 0 0 0 21 25 d1 q 21 0 0 25 0.1 -0.1 cm BI /W 21 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #‘áÓMÚ† /ÿýýÿþÿ¿ÿþÿ¿ÿßßÿþltûO EI Q endstream endobj 625 0 obj << /Length 152 >> stream 22 0 2 0 19 25 d1 q 17 0 0 25 2.1 -0.1 cm BI /W 17 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID 0<¿ÒnŸÿÿÿÿÿÿí}´±Úµ EI Q endstream endobj 626 0 obj << /Length 156 >> stream 22 0 1 0 19 25 d1 q 18 0 0 25 1.1 -0.1 cm BI /W 18 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #‡ íÃ7>ÞÿúõÂâµ…˜ÿü éÚ€€ EI Q endstream endobj 627 0 obj << /Length 161 >> stream 22 0 0 0 21 25 d1 q 21 0 0 25 0.1 -0.1 cm BI /W 21 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #… íÃ7>ßÿýzX­o7{ÿþú„O´Ô@ EI Q endstream endobj 628 0 obj << /Length 163 >> stream 22 0 2 0 19 25 d1 q 17 0 0 25 2.1 -0.1 cm BI /W 17 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID 8@”!Ö‹í úÿÇvìŽl0àÜïo#úúXkŠÖx  EI Q endstream endobj 629 0 obj << /Length 151 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID # ͆Ïÿþ8?ÿÿÿÿü:v  EI Q endstream endobj 630 0 obj << /Length 158 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID &£8?ð -­ëÿÚÞ¿ÿÛKÿýëkÿÞ±ûP EI Q endstream endobj 631 0 obj << /Length 167 >> stream 22 0 0 0 21 25 d1 q 21 0 0 25 0.1 -0.1 cm BI /W 21 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #‘ò¦›MXA¯ÿöÒÿù‹éÿüÿ÷úÿÿúßéÿÿþÇý<@ EI Q endstream endobj 632 0 obj << /Length 164 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #ŒÁtûPj«Jߊ¾¯]×G«éºúoô›„ÐtÓi¨€ EI Q endstream endobj 633 0 obj << /Length 157 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID &£8;Zpi‚ý´¿m/þÚ_±^×ÿÿáNÔ@ EI Q endstream endobj 634 0 obj << /Length 150 >> stream 22 0 8 -3 20 29 d1 q 12 0 0 32 8.1 -3.1 cm BI /W 12 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID &¡þjÿÿÿÿÿÿÿÿùkà EI Q endstream endobj 635 0 obj << /Length 154 >> stream 22 0 2 -3 19 29 d1 q 17 0 0 32 2.1 -3.1 cm BI /W 17 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID &¾ý¿oÛöý¿oÛöý¿oÛöý¿op EI Q endstream endobj 636 0 obj << /Length 146 >> stream 22 0 1 -3 13 29 d1 q 12 0 0 32 1.1 -3.1 cm BI /W 12 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID &¡üÒÿÿÿÿÿÿɨ EI Q endstream endobj 637 0 obj << /Length 135 >> stream 22 0 2 -4 19 -1 d1 q 17 0 0 3 2.1 -4.1 cm BI /W 17 /H 3 /BPC 1 /IM true /F /CCF /DP <> ID & Ç€€ EI Q endstream endobj 638 0 obj << /Length 159 >> stream 22 0 2 0 21 18 d1 q 19 0 0 18 2.1 -0.1 cm BI /W 19 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 0-:yxíãùá ´O4 ¥ÿö\¬ˆðÂp EI Q endstream endobj 639 0 obj << /Length 159 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID &¥üÿÌ âòxôÞŸ·ÿÿú[]¥ŠÌ:¸a@@ EI Q endstream endobj 640 0 obj << /Length 152 >> stream 22 0 3 0 19 18 d1 q 16 0 0 18 3.1 -0.1 cm BI /W 16 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID <8NšMhiþî { +j€€ EI Q endstream endobj 641 0 obj << /Length 159 >> stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID '/àÿùç¡Ñy¤úz_ÿÿþÚï¶¶ Ù{  EI Q endstream endobj 642 0 obj << /Length 154 >> stream 22 0 2 0 19 18 d1 q 17 0 0 18 2.1 -0.1 cm BI /W 17 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID > stream 22 0 1 0 18 25 d1 q 17 0 0 25 1.1 -0.1 cm BI /W 17 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID (pœ'4Rk‘Ãó×ÿÿÿþG§j  EI Q endstream endobj 644 0 obj << /Length 173 >> stream 22 0 1 -10 20 18 d1 q 19 0 0 28 1.1 -10.1 cm BI /W 19 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID > stream 22 0 1 0 20 25 d1 q 19 0 0 25 1.1 -0.1 cm BI /W 19 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID &¥üÿÌ>Åäíéõÿÿÿÿÿþ®à EI Q endstream endobj 646 0 obj << /Length 149 >> stream 22 0 4 0 19 26 d1 q 15 0 0 26 4.1 -0.1 cm BI /W 15 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID =Óö£äÔOç¯ÿÿÿüšƒî  EI Q endstream endobj 647 0 obj << /Length 153 >> stream 22 0 2 -9 15 26 d1 q 13 0 0 35 2.1 -9.1 cm BI /W 13 /H 35 /BPC 1 /IM true /F /CCF /DP <> ID ©íG͈®OÿÿÿùJšâ­Z€€ EI Q endstream endobj 648 0 obj << /Length 161 >> stream 22 0 0 0 20 25 d1 q 20 0 0 25 0.1 -0.1 cm BI /W 20 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #•oÿòá?þ K¥ÒécÞLw¦ôý¿pAÁ¦­8€ EI Q endstream endobj 649 0 obj << /Length 148 >> stream 22 0 2 0 19 25 d1 q 17 0 0 25 2.1 -0.1 cm BI /W 17 /H 25 /BPC 1 /IM true /F /CCF /DP <> ID #‰[ÏßÿÿÿÿÿÿÈáŠm@@ EI Q endstream endobj 650 0 obj << /Length 158 >> stream 22 0 0 0 21 18 d1 q 21 0 0 18 0.1 -0.1 cm BI /W 21 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¦^7bÂx¸eÁqÿªÿÿÿÿÿÿÿÿÂ?ÿ EI Q endstream endobj 651 0 obj << /Length 153 >> stream 22 0 1 0 20 18 d1 q 19 0 0 18 1.1 -0.1 cm BI /W 19 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¤aðž. ½>¿ÿÿÿÿÿÁ@õÜ@ EI Q endstream endobj 652 0 obj << /Length 154 >> stream 22 0 2 0 19 18 d1 q 17 0 0 18 2.1 -0.1 cm BI /W 17 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID > stream 22 0 1 -9 20 18 d1 q 19 0 0 27 1.1 -9.1 cm BI /W 19 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID &¤`øOO›ÓöÿÿÿKk´±Y‡\0¸ÿÿ‚ü@ EI Q endstream endobj 654 0 obj << /Length 150 >> stream 22 0 1 0 20 18 d1 q 19 0 0 18 1.1 -0.1 cm BI /W 19 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID #ŒÙT&êpa,!××ÿÿäpJÞ  EI Q endstream endobj 655 0 obj << /Length 158 >> stream 22 0 3 0 18 18 d1 q 15 0 0 18 3.1 -0.1 cm BI /W 15 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 60JëE÷Oûc‘x0pÜÈøm{íbµž€€ EI Q endstream endobj 656 0 obj << /Length 150 >> stream 22 0 1 0 18 23 d1 q 17 0 0 23 1.1 -0.1 cm BI /W 17 /H 23 /BPC 1 /IM true /F /CCF /DP <> ID =×ÿ#†+ç/ÿÿ„ºö•еj  EI Q endstream endobj 657 0 obj << /Length 152 >> stream 22 0 1 0 20 18 d1 q 19 0 0 18 1.1 -0.1 cm BI /W 19 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¤l¿ø8?ÿÿÿÿÿÿÂâ ‘G°° EI Q endstream endobj 658 0 obj << /Length 154 >> stream 22 0 1 0 20 18 d1 q 19 0 0 18 1.1 -0.1 cm BI /W 19 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID #ŒÀéÛU Âý´¿ûiÿ¶—ÿb½¨€ EI Q endstream endobj 659 0 obj << /Length 159 >> stream 22 0 1 0 20 18 d1 q 19 0 0 18 1.1 -0.1 cm BI /W 19 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¢˜ü0@ÂÿÿËŸþýx"?ÿÿûõôþ8ïZx€ EI Q endstream endobj 660 0 obj << /Length 158 >> stream 22 0 1 0 20 18 d1 q 19 0 0 18 1.1 -0.1 cm BI /W 19 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID #ŒÀú÷ƒÁ]+uнªîêWÞ“pMªnÔ@ EI Q endstream endobj 661 0 obj << /Length 163 >> stream 22 0 1 -9 20 18 d1 q 19 0 0 27 1.1 -9.1 cm BI /W 19 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID #ŒÀéÛU ·ô¿oé~ßÿW_دõý)ýqZ°  EI Q endstream endobj 662 0 obj << /Length 151 >> stream 22 0 1 0 19 18 d1 q 18 0 0 18 1.1 -0.1 cm BI /W 18 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID . ¯5K¥©BT¨*TRÒÐü@ EI Q endstream endobj 663 0 obj << /Length 156 >> stream 22 0 2 -3 19 29 d1 q 17 0 0 32 2.1 -3.1 cm BI /W 17 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID ( ª‹êÿÿÿ¬Ž-/nyßÿÿÿvD5pà EI Q endstream endobj 664 0 obj << /Length 157 >> stream 22 0 2 -3 19 29 d1 q 17 0 0 32 2.1 -3.1 cm BI /W 17 /H 32 /BPC 1 /IM true /F /CCF /DP <> ID #¹çÿÿýÙvô¨¾¯ÿÿúɨš°  EI Q endstream endobj 665 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 15 0 obj << /Name /T13 /Type /Font /Subtype /Type3 /Resources 665 0 R /FontBBox [-1 -8 45 29] /FontMatrix [1 0 0 -1 0 0] /FirstChar 44 /LastChar 121 /Encoding 666 0 R /CharProcs 667 0 R /Widths [13 15 13 0 0 0 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 31 29 30 31 0 27 0 31 16 0 0 26 37 0 32 28 0 30 23 30 0 0 41 0 0 0 0 0 0 0 0 0 21 19 19 21 19 13 19 21 13 13 19 11 34 23 21 21 19 18 17 14 22 19 28 19 20 ] >> endobj 666 0 obj << /Type /Encoding /Differences [44/, /- /. 58/: 65/A /B /C /D 70/F 72/H /I 76/L /M 79/O /P 82/R /S /T 87/W 97/a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y ] >> endobj 667 0 obj << /, 668 0 R /- 669 0 R /. 670 0 R /: 671 0 R /A 672 0 R /B 673 0 R /C 674 0 R /D 675 0 R /F 676 0 R /H 677 0 R /I 678 0 R /L 679 0 R /M 680 0 R /O 681 0 R /P 682 0 R /R 683 0 R /S 684 0 R /T 685 0 R /W 686 0 R /a 687 0 R /b 688 0 R /c 689 0 R /d 690 0 R /e 691 0 R /f 692 0 R /g 693 0 R /h 694 0 R /i 695 0 R /j 696 0 R /k 697 0 R /l 698 0 R /m 699 0 R /n 700 0 R /o 701 0 R /p 702 0 R /q 703 0 R /r 704 0 R /s 705 0 R /t 706 0 R /u 707 0 R /v 708 0 R /w 709 0 R /x 710 0 R /y 711 0 R >> endobj 668 0 obj << /Length 136 >> stream 13 0 3 -8 8 4 d1 q 5 0 0 12 3.1 -8.1 cm BI /W 5 /H 12 /BPC 1 /IM true /F /CCF /DP <> ID ªáô½*^”@ EI Q endstream endobj 669 0 obj << /Length 132 >> stream 15 0 3 7 13 10 d1 q 10 0 0 3 3.1 6.9 cm BI /W 10 /H 3 /BPC 1 /IM true /F /CCF /DP <> ID &¡<@ EI Q endstream endobj 670 0 obj << /Length 129 >> stream 13 0 4 0 9 4 d1 q 5 0 0 4 4.1 -0.1 cm BI /W 5 /H 4 /BPC 1 /IM true /F /CCF /DP <> ID ©¥j  EI Q endstream endobj 671 0 obj << /Length 138 >> stream 13 0 4 0 12 18 d1 q 8 0 0 18 4.1 -0.1 cm BI /W 8 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID ©íGÿ/Ó¥j  EI Q endstream endobj 672 0 obj << /Length 163 >> stream 31 0 2 0 28 29 d1 q 26 0 0 29 2.1 -0.1 cm BI /W 26 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID #?__E¥þ•÷¥××Ký/ô:=:é~é?éuê°A‚  EI Q endstream endobj 673 0 obj << /Length 167 >> stream 29 0 2 0 29 28 d1 q 27 0 0 28 2.1 -0.1 cm BI /W 27 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID > A—7¦ûézþ•*á.–*ŒwÛ÷ú_ÿúIzëÒ¤Rj@@ EI Q endstream endobj 674 0 obj << /Length 174 >> stream 30 0 6 -1 33 29 d1 q 27 0 0 30 6.1 -1.1 cm BI /W 27 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID :‚/2‡„¢©=.“Òªúëñ¥ý/ÿ5¯ÿ¥¥m+¥l%a„2Z€ EI Q endstream endobj 675 0 obj << /Length 166 >> stream 31 0 2 0 31 28 d1 q 29 0 0 28 2.1 -0.1 cm BI /W 29 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID > A—0ôÿoô¯Õ/ÿÒKÿõI}uõI.—K¥H ¤Ô€€ EI Q endstream endobj 676 0 obj << /Length 162 >> stream 27 0 2 0 30 28 d1 q 28 0 0 28 2.1 -0.1 cm BI /W 28 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID >–}ëÿ¥ÿ™¯ãI/õÇFšÿÿI.?ÒÿÖMCÀ@ EI Q endstream endobj 677 0 obj << /Length 166 >> stream 31 0 2 0 35 28 d1 q 33 0 0 28 2.1 -0.1 cm BI /W 33 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID >ØPe »ªÿÿI/ÿô’ÿñш_ÿé%ÿþ’_ÿê²jØX€ EI Q endstream endobj 678 0 obj << /Length 150 >> stream 16 0 3 0 19 28 d1 q 16 0 0 28 3.1 -0.1 cm BI /W 16 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID <-éééééë  EI Q endstream endobj 679 0 obj << /Length 157 >> stream 26 0 2 0 25 28 d1 q 23 0 0 28 2.1 -0.1 cm BI /W 23 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID > ºWþ—þ—þ—þ’ÿéRúôºÒ I¨h€€ EI Q endstream endobj 680 0 obj << /Length 185 >> stream 37 0 2 0 41 28 d1 q 39 0 0 28 2.1 -0.1 cm BI /W 39 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID >)¨Pyw(z_Eÿý.—¥ô¿¥öþ–’_ÿ¥ý.—¥ô¿¥ÿéi%Ûÿ¥ý.—¥ïÿZëK8  EI Q endstream endobj 681 0 obj << /Length 171 >> stream 32 0 6 -1 32 29 d1 q 26 0 0 30 6.1 -1.1 cm BI /W 26 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID !ް8A7IºMÒét­z×ô¿ô’ÿú_õ×¥zém+¥m+a B€€ EI Q endstream endobj 682 0 obj << /Length 161 >> stream 28 0 2 0 29 28 d1 q 27 0 0 28 2.1 -0.1 cm BI /W 27 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID > Á—0ôßoý%ÿê’úép‚¡ 5¥ÿ¥ÿ¬š…€€ EI Q endstream endobj 683 0 obj << /Length 171 >> stream 30 0 2 -1 29 28 d1 q 27 0 0 29 2.1 -1.1 cm BI /W 27 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID > Á—áè7ïIô©WK„BÍo·ïô¿ÿô—ëÿë¥&¡[J-À@ EI Q endstream endobj 684 0 obj << /Length 171 >> stream 23 0 3 -1 25 29 d1 q 22 0 0 30 3.1 -1.1 cm BI /W 22 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID $„|)è'Iª]Ò¯ñß°x;Îß˯õKý/TÒÂ/„´P EI Q endstream endobj 685 0 obj << /Length 159 >> stream 30 0 7 0 33 28 d1 q 26 0 0 28 7.1 -0.1 cm BI /W 26 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 0 &ó}“×UýK¥ÿã/ý/ý/ý/ýdpx€ EI Q endstream endobj 686 0 obj << /Length 184 >> stream 41 0 9 -1 45 28 d1 q 36 0 0 29 9.1 -1.1 cm BI /W 36 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¢pa‚d®º×þŠ—ôº_ý.—ÿK¥ÿÒé]/_m-/ÿKKÿÒÒÿïKþ›þ«Ö¸€ EI Q endstream endobj 687 0 obj << /Length 158 >> stream 21 0 4 0 20 18 d1 q 16 0 0 18 4.1 -0.1 cm BI /W 16 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID >„CÐN–µ®¿é%ÿÿ¤¿þë¶Þ•ƒn  EI Q endstream endobj 688 0 obj << /Length 160 >> stream 19 0 4 0 19 29 d1 q 15 0 0 29 4.1 -0.1 cm BI /W 15 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID .PKÿKÿH»è« më¥ûÿI/ÿ×_]+¥m+ EI Q endstream endobj 689 0 obj << /Length 153 >> stream 19 0 4 0 19 18 d1 q 15 0 0 18 4.1 -0.1 cm BI /W 15 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 38GÅ t“¤© }/ÿá+¥Ò¶†@ EI Q endstream endobj 690 0 obj << /Length 167 >> stream 21 0 4 0 23 29 d1 q 19 0 0 29 4.1 -0.1 cm BI /W 19 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID !>—þ—þ}¥E ž—Z×_ô’ÿÿÒ.¿ÿºöÂ;Ò°mÀ@ EI Q endstream endobj 691 0 obj << /Length 156 >> stream 19 0 4 0 19 18 d1 q 15 0 0 18 4.1 -0.1 cm BI /W 15 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 38#b ºN©kªY Äû„ºVÒá(a@@ EI Q endstream endobj 692 0 obj << /Length 165 >> stream 13 0 -1 -8 19 29 d1 q 20 0 0 37 -0.9 -8.1 cm BI /W 20 /H 37 /BPC 1 /IM true /F /CCF /DP <> ID ::4µ®>—ÿσ4ÿý/ÿ¥ÿô¿×¬šõ¿IX¨€ EI Q endstream endobj 693 0 obj << /Length 167 >> stream 19 0 2 -8 20 18 d1 q 18 0 0 26 2.1 -8.1 cm BI /W 18 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID 4aB¡è'KZ×_ô’ÿÿÒÿî¶ÂV ½ÒòkÖ×Ab@ EI Q endstream endobj 694 0 obj << /Length 162 >> stream 21 0 2 0 20 29 d1 q 18 0 0 29 2.1 -0.1 cm BI /W 18 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 6PKÿKÿHÁðow®¾¿þ’_ÿJ–¿é~•'îÀ€ EI Q endstream endobj 695 0 obj << /Length 151 >> stream 13 0 4 0 13 28 d1 q 9 0 0 28 4.1 -0.1 cm BI /W 9 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID ­GùŠé_é%øô¿¥é¿þ—ì8€ EI Q endstream endobj 696 0 obj << /Length 162 >> stream 13 0 -1 -8 15 28 d1 q 16 0 0 36 -0.9 -8.1 cm BI /W 16 /H 36 /BPC 1 /IM true /F /CCF /DP <> ID ®掊‡K¥õ¥Çô¿ô¿ô¿ô¼šõ´´•ƒ€€ EI Q endstream endobj 697 0 obj << /Length 166 >> stream 19 0 2 0 20 29 d1 q 18 0 0 29 2.1 -0.1 cm BI /W 18 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 6PKÿKÿHóè¨ô“ÒÒJºCÒÝÍ·úX ¿ÿúTŸ»  EI Q endstream endobj 698 0 obj << /Length 149 >> stream 11 0 3 0 12 29 d1 q 9 0 0 29 3.1 -0.1 cm BI /W 9 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 0@ú_ú_ú_ú_ú_ú@‚ÿúWì8€ EI Q endstream endobj 699 0 obj << /Length 172 >> stream 34 0 4 0 33 18 d1 q 29 0 0 18 4.1 -0.1 cm BI /W 29 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 1g/„xa-h+÷}$«ÿÇÿô’Kÿÿ¥I-ý/ô©$é]Øp EI Q endstream endobj 700 0 obj << /Length 160 >> stream 23 0 4 0 22 18 d1 q 18 0 0 18 4.1 -0.1 cm BI /W 18 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID /:_öþ‚¿}%ýqÿÒKÿéR×ý/Ò¤ýØp EI Q endstream endobj 701 0 obj << /Length 155 >> stream 21 0 4 0 21 18 d1 q 17 0 0 18 4.1 -0.1 cm BI /W 17 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 38G· 7I½tºß¤—ÿÒÿJõÒ¶†@ EI Q endstream endobj 702 0 obj << /Length 168 >> stream 21 0 0 -8 21 18 d1 q 21 0 0 26 0.1 -8.1 cm BI /W 21 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID =t¾Š°¾“~úI±ÿI/ÿÕ%õÒÚT%Ø\}/ý(@à EI Q endstream endobj 703 0 obj << /Length 162 >> stream 19 0 4 -8 20 18 d1 q 16 0 0 26 4.1 -8.1 cm BI /W 16 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID >Ô F -k]ÒKÿÿKÿºÛ X2ôKÿJ@ EI Q endstream endobj 704 0 obj << /Length 153 >> stream 18 0 4 0 20 18 d1 q 16 0 0 18 4.1 -0.1 cm BI /W 16 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 1t¾ŠµKI>ô’¯ŒKÿKÿJð EI Q endstream endobj 705 0 obj << /Length 156 >> stream 17 0 3 0 17 18 d1 q 14 0 0 18 3.1 -0.1 cm BI /W 14 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID >pŠ—ÓJ¶8xvæŽò?Uõé+>(a@@ EI Q endstream endobj 706 0 obj << /Length 154 >> stream 14 0 4 0 15 26 d1 q 11 0 0 26 4.1 -0.1 cm BI /W 11 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID =×ú_ù5 Ùú_ú_ú@‚ÿK÷ Xp EI Q endstream endobj 707 0 obj << /Length 158 >> stream 22 0 4 0 21 18 d1 q 17 0 0 18 4.1 -0.1 cm BI /W 17 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 1@ˆò¥ÿ¥¥þ)¤—ÿý$¿ÿkº)éY;p EI Q endstream endobj 708 0 obj << /Length 155 >> stream 19 0 4 0 19 18 d1 q 15 0 0 18 4.1 -0.1 cm BI /W 15 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 1@ˆò¥¿éoø¥úIý-ém+¥dø@ EI Q endstream endobj 709 0 obj << /Length 164 >> stream 28 0 4 0 28 18 d1 q 24 0 0 18 4.1 -0.1 cm BI /W 24 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 0Ìð¨§j©û¥¤ÿâ—þ’Iÿôµ__énû¢ž²v  EI Q endstream endobj 710 0 obj << /Length 163 >> stream 19 0 2 0 21 18 d1 q 19 0 0 18 2.1 -0.1 cm BI /W 19 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID =pÑV´ÃM/I*øÇô¿ô)úéi#þ½+A¨€ EI Q endstream endobj 711 0 obj << /Length 167 >> stream 20 0 4 -8 21 18 d1 q 17 0 0 26 4.1 -8.1 cm BI /W 17 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID 1@ˆò¥ÿ¥¥þ)¤—ÿý%ÿín•“U“ZºXIYV¬(€ EI Q endstream endobj 712 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 16 0 obj << /Name /T14 /Type /Font /Subtype /Type3 /Resources 712 0 R /FontBBox [-4 -13 67 43] /FontMatrix [1 0 0 -1 0 0] /FirstChar 46 /LastChar 123 /Encoding 713 0 R /CharProcs 714 0 R /Widths [19 0 34 34 34 34 34 34 34 34 0 0 19 0 0 0 0 0 0 51 48 49 52 0 42 53 53 25 0 0 40 64 53 51 46 0 0 37 47 52 51 69 0 0 0 0 0 0 0 0 0 33 37 30 37 31 21 34 37 18 21 35 18 56 37 34 37 0 27 27 26 37 0 49 35 35 30 34 ] >> endobj 713 0 obj << /Type /Encoding /Differences [46/. 48/0 /1 /2 /3 /4 /5 /6 /7 58/: 65/A /B /C /D 70/F /G /H /I 76/L /M /N /O /P 83/S /T /U /V /W 97/a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p 114/r /s /t /u 119/w /x /y /z /#237B ] >> endobj 714 0 obj << /. 715 0 R /0 716 0 R /1 717 0 R /2 718 0 R /3 719 0 R /4 720 0 R /5 721 0 R /6 722 0 R /7 723 0 R /: 724 0 R /A 725 0 R /B 726 0 R /C 727 0 R /D 728 0 R /F 729 0 R /G 730 0 R /H 731 0 R /I 732 0 R /L 733 0 R /M 734 0 R /N 735 0 R /O 736 0 R /P 737 0 R /S 738 0 R /T 739 0 R /U 740 0 R /V 741 0 R /W 742 0 R /a 743 0 R /b 744 0 R /c 745 0 R /d 746 0 R /e 747 0 R /f 748 0 R /g 749 0 R /h 750 0 R /i 751 0 R /j 752 0 R /k 753 0 R /l 754 0 R /m 755 0 R /n 756 0 R /o 757 0 R /p 758 0 R /r 759 0 R /s 760 0 R /t 761 0 R /u 762 0 R /w 763 0 R /x 764 0 R /y 765 0 R /z 766 0 R /#237B 767 0 R >> endobj 715 0 obj << /Length 134 >> stream 19 0 5 0 14 9 d1 q 9 0 0 9 5.1 -0.1 cm BI /W 9 /H 9 /BPC 1 /IM true /F /CCF /DP <> ID 1BÓö¼0  EI Q endstream endobj 716 0 obj << /Length 171 >> stream 34 0 3 0 30 39 d1 q 27 0 0 39 3.1 -0.1 cm BI /W 27 /H 39 /BPC 1 /IM true /F /CCF /DP <> ID '8D°:MÒoO[ÓÖÿÿÖÿÿÿÿÿÿÿÞ¿ÿÛK÷­­´­¥ Bƒ EI Q endstream endobj 717 0 obj << /Length 157 >> stream 34 0 5 0 28 39 d1 q 23 0 0 39 5.1 -0.1 cm BI /W 23 /H 39 /BPC 1 /IM true /F /CCF /DP <> ID $U…œ &¡“Œÿÿÿÿÿÿÿÿÿÿ“PQà EI Q endstream endobj 718 0 obj << /Length 174 >> stream 34 0 3 0 30 39 d1 q 27 0 0 39 3.1 -0.1 cm BI /W 27 /H 39 /BPC 1 /IM true /F /CCF /DP <> ID 3Eû ƒ˜zw·÷¿µ´£×¥ªTµJ•J• T–’Tº ¡Öµ¥ü@ EI Q endstream endobj 719 0 obj << /Length 177 >> stream 34 0 3 0 30 39 d1 q 27 0 0 39 3.1 -0.1 cm BI /W 27 /H 39 /BPC 1 /IM true /F /CCF /DP <> ID 4DùÒ ÓûýýqKê•(JfÎ¥ ;{·÷—zzõ×Ui+ %b¡…  EI Q endstream endobj 720 0 obj << /Length 168 >> stream 34 0 2 0 31 39 d1 q 29 0 0 39 2.1 -0.1 cm BI /W 29 /H 39 /BPC 1 /IM true /F /CCF /DP <> ID "­kZú0ú].—_].—K¥××K¥Òéuò¦¾kÿÿåG€€ EI Q endstream endobj 721 0 obj << /Length 176 >> stream 34 0 3 0 30 39 d1 q 27 0 0 39 3.1 -0.1 cm BI /W 27 /H 39 /BPC 1 /IM true /F /CCF /DP <> ID 1šü‘ø­kXXY‹ÿÿù8@ò^ðƒÂâÞþóÓÿú×i/ÛJà X¨aC EI Q endstream endobj 722 0 obj << /Length 181 >> stream 34 0 3 0 30 39 d1 q 27 0 0 39 3.1 -0.1 cm BI /W 27 /H 39 /BPC 1 /IM true /F /CCF /DP <> ID !‹'D~è$è%¥××V¸Òþ§×DýÑýôxïMÿWÿïÿû÷WúVêà X«P`  EI Q endstream endobj 723 0 obj << /Length 163 >> stream 34 0 4 0 32 41 d1 q 28 0 0 41 4.1 -0.1 cm BI /W 28 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID /aä2}-kYª_éRK¥ÒŠ^•uZ꾺õÿ×ÿÿµj  EI Q endstream endobj 724 0 obj << /Length 146 >> stream 19 0 5 0 14 27 d1 q 9 0 0 27 5.1 -0.1 cm BI /W 9 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID 1BÓö¼0£ÿ1BÓö¼0  EI Q endstream endobj 725 0 obj << /Length 174 >> stream 51 0 2 0 48 41 d1 q 46 0 0 41 2.1 -0.1 cm BI /W 46 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID %ß§ý?Oú0ïõ½?é7úÞŸô›ýoOúMþ…ÿF­þ·§­éÿ[“PÁ@hÿ EI Q endstream endobj 726 0 obj << /Length 179 >> stream 48 0 3 0 43 41 d1 q 40 0 0 41 3.1 -0.1 cm BI /W 40 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID &¡›ƒÃžÐ^ßo¿¿÷ÿúúÿK¯ApK°y¡ðßoßûÿÿþºôºð”š†ž°P EI Q endstream endobj 727 0 obj << /Length 184 >> stream 49 0 4 0 44 41 d1 q 40 0 0 41 4.1 -0.1 cm BI /W 40 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID 5„ C Ô"mQQ 'IÒt½Ò÷_èÿÿÿß|ÿoÒ·ÛJÚÛJà Y @¡Š†Ö  EI Q endstream endobj 728 0 obj << /Length 176 >> stream 52 0 2 0 47 41 d1 q 45 0 0 41 2.1 -0.1 cm BI /W 45 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID & ÑƒÃž†ƒ|7ÛíöÿÛÿoÿÿ¿ÿÿÿÿëÿé×^—K¯. I¨j`°P EI Q endstream endobj 729 0 obj << /Length 170 >> stream 42 0 2 0 38 41 d1 q 36 0 0 41 2.1 -0.1 cm BI /W 36 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID &¡¥üð¤xo‡ïþÿÿ¼Òÿðzÿ…ÇþEïþÿÿøÿÿÿɨ7þ  EI Q endstream endobj 730 0 obj << /Length 190 >> stream 53 0 4 0 49 41 d1 q 45 0 0 41 4.1 -0.1 cm BI /W 45 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID 5„(ä0aa°ˆYµ¢.£ ž“ÒzOKïKï_úÿÿÿšƒc÷ä ·ÿoý¾ßo·Økd-0È7|0žk   EI Q endstream endobj 731 0 obj << /Length 171 >> stream 53 0 2 0 50 41 d1 q 48 0 0 41 2.1 -0.1 cm BI /W 48 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID &¡ Ì4žˆÿÿÿÿÿÿÿÿüäQÿÿÿÿÿÿÿÿÿù5 a£ü@ EI Q endstream endobj 732 0 obj << /Length 153 >> stream 25 0 2 0 22 41 d1 q 20 0 0 41 2.1 -0.1 cm BI /W 20 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID &¡£Ï ÿÿÿÿÿÿÿÿÿÿÿÿüš† EI Q endstream endobj 733 0 obj << /Length 161 >> stream 40 0 2 0 36 41 d1 q 34 0 0 41 2.1 -0.1 cm BI /W 34 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID & ßùáÿÿÿÿÿÿÿ‚ÿþ½¯úÿ¯ ÂRj _À@ EI Q endstream endobj 734 0 obj << /Length 202 >> stream 64 0 3 0 60 41 d1 q 57 0 0 41 3.1 -0.1 cm BI /W 57 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID &¡‚1ö§‚HNüôaÿþÚ_ÿ¶—ÿÿöÒÿý´¿ÿm/ÿÿí¥ÿûiþÚ_ÿÿÛKÿöÒÿý´¿ÿÿ±_þ×ÿµÉ¨c4 ÿí` EI Q endstream endobj 735 0 obj << /Length 188 >> stream 53 0 2 0 50 41 d1 q 48 0 0 41 2.1 -0.1 cm BI /W 48 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID & ä`bûÏ íù‡ßÛûoíý¿¿ïíý¿·öþÿ¿·öþßÛûßÛû~ýÿß¿~òj~ÿ€€ EI Q endstream endobj 736 0 obj << /Length 186 >> stream 51 0 4 0 46 41 d1 q 42 0 0 41 4.1 -0.1 cm BI /W 42 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID 5’ˆDsA‡Aé7IºÝ&ÿI¿ÖôÿýoÿÿÿÿÞ¶¿½~Ú_¶•´­¥m+iC(bÔ  EI Q endstream endobj 737 0 obj << /Length 169 >> stream 46 0 2 0 41 41 d1 q 39 0 0 41 2.1 -0.1 cm BI /W 39 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID &¡›ƒÃž'û~ûûÿÿÿ믮—± "«ÿÿÿÿÿù5 À@ EI Q endstream endobj 738 0 obj << /Length 189 >> stream 37 0 4 0 32 41 d1 q 28 0 0 41 4.1 -0.1 cm BI /W 28 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID 3„ a>‰{Z@Ç ôŸõ÷ßýŽM$£ÃÜ7nH Ma!·rk?ÿÝkºÃK4]­  EI Q endstream endobj 739 0 obj << /Length 165 >> stream 47 0 2 0 44 40 d1 q 42 0 0 40 2.1 -0.1 cm BI /W 42 /H 40 /BPC 1 /IM true /F /CCF /DP <> ID #ƒgùdYðX>·ÿ­ëßõ¿ÿÿøàÿÿÿÿÿÿÿÿ™†Wð EI Q endstream endobj 740 0 obj << /Length 175 >> stream 52 0 2 0 49 41 d1 q 47 0 0 41 2.1 -0.1 cm BI /W 47 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID &¡ ÿ<)Qÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº[á+ + ±PaA‚€€ EI Q endstream endobj 741 0 obj << /Length 177 >> stream 51 0 1 0 49 41 d1 q 48 0 0 41 1.1 -0.1 cm BI /W 48 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID &¡ †ÿ> stream 69 0 1 0 67 41 d1 q 66 0 0 41 1.1 -0.1 cm BI /W 66 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID &¡œðfÿóš…#/ûo¾—ýÚß®Ÿ½o×O·3Òÿí&Öÿ_¿i:ßë­öéÒÿõ¾Ý:_ý¤Úßëz{×í5ÿÚkú{×à EI Q endstream endobj 743 0 obj << /Length 173 >> stream 33 0 2 0 32 27 d1 q 30 0 0 27 2.1 -0.1 cm BI /W 30 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID <:'áÓo·ßÝ®?þN‚#¼.‚étº_ÿþŠm{ %!MX„àÐp EI Q endstream endobj 744 0 obj << /Length 174 >> stream 37 0 2 0 34 42 d1 q 32 0 0 42 2.1 -0.1 cm BI /W 32 /H 42 /BPC 1 /IM true /F /CCF /DP <> ID &¡›ÿÿÿÿ›‚!x<&ôÞ›ÿoþÿÿÿÿ¯ÿ¥ý¥´²nÂZb‚€€ EI Q endstream endobj 745 0 obj << /Length 163 >> stream 30 0 2 0 27 27 d1 q 25 0 0 27 2.1 -0.1 cm BI /W 25 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID ' ç$ét¿Õ­¯ÿÿ»‚ÞéXiC %b Á@@ EI Q endstream endobj 746 0 obj << /Length 176 >> stream 37 0 2 0 34 42 d1 q 32 0 0 42 2.1 -0.1 cm BI /W 32 /H 42 /BPC 1 /IM true /F /CCF /DP <> ID 5…þKÿÿÿÿ'„GàƒÒz_éýÿÿÿÿöÿÛ[kl"5 ‡xa` EI Q endstream endobj 747 0 obj << /Length 165 >> stream 31 0 2 0 28 27 d1 q 26 0 0 27 2.1 -0.1 cm BI /W 26 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID ':'Á º·®­Òýú¿ÇÈÆ~ÿw}´­¥a„¡Š†  EI Q endstream endobj 748 0 obj << /Length 163 >> stream 21 0 2 0 26 42 d1 q 24 0 0 42 2.1 -0.1 cm BI /W 24 /H 42 /BPC 1 /IM true /F /CCF /DP <> ID !‹è”8I4º×ÚãÿÿɨüàÿÿÿÿÿÿÿþGÿ€€ EI Q endstream endobj 749 0 obj << /Length 196 >> stream 34 0 2 -13 32 27 d1 q 30 0 0 40 2.1 -13.1 cm BI /W 30 /H 40 /BPC 1 /IM true /F /CCF /DP <> ID 3û„N,"ÛA‚­ôá…[ÿÿýëkz°ÂYCˆU .5ûÈg¤‡nÜ-®¡ºOÿþÚ_°ÂPÃ+4  EI Q endstream endobj 750 0 obj << /Length 171 >> stream 37 0 3 0 35 42 d1 q 32 0 0 42 3.1 -0.1 cm BI /W 32 /H 42 /BPC 1 /IM true /F /CCF /DP <> ID &¡›ÿÿÿÿž.}ßA_IñÞ¿ëÿÿÿÿÿÿÿÿÿòjAÍÀ@ EI Q endstream endobj 751 0 obj << /Length 156 >> stream 18 0 2 0 17 43 d1 q 15 0 0 43 2.1 -0.1 cm BI /W 15 /H 43 /BPC 1 /IM true /F /CCF /DP <> ID 9S§OûV­Gù5 üØÿÿÿÿÿÿÿþMC  EI Q endstream endobj 752 0 obj << /Length 167 >> stream 21 0 -4 -12 15 43 d1 q 19 0 0 55 -3.9 -12.1 cm BI /W 19 /H 55 /BPC 1 /IM true /F /CCF /DP <> ID !ÔéÓö­Zó0¾HÿÿÿÿÿÿäsÓúéz´•І@ EI Q endstream endobj 753 0 obj << /Length 176 >> stream 35 0 1 0 33 42 d1 q 32 0 0 42 1.1 -0.1 cm BI /W 32 /H 42 /BPC 1 /IM true /F /CCF /DP <> ID &¡›ÿÿÿÿ™…ÿøeþ—K¥Òè.ëÓÅï"¿Mé¾ßû}¾ßûrj5ÿ EI Q endstream endobj 754 0 obj << /Length 153 >> stream 18 0 2 0 17 42 d1 q 15 0 0 42 2.1 -0.1 cm BI /W 15 /H 42 /BPC 1 /IM true /F /CCF /DP <> ID &¡›ÿÿÿÿÿÿÿÿÿÿÿÿþMC  EI Q endstream endobj 755 0 obj << /Length 180 >> stream 56 0 3 0 54 27 d1 q 51 0 0 27 3.1 -0.1 cm BI /W 51 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID &¡Œ | £ãGÇ6H+A_IÒ~±ßªÿû¯ÿÿÿÿÿÿÿÿÿÿÿÿÿ&¡ƒƒÿ EI Q endstream endobj 756 0 obj << /Length 165 >> stream 37 0 3 0 35 27 d1 q 32 0 0 27 3.1 -0.1 cm BI /W 32 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID &¡—>nlWÒ~·ëÿ¿ÿÿÿÿÿÿÿÿÿɨ`5ÿ EI Q endstream endobj 757 0 obj << /Length 166 >> stream 34 0 2 0 31 27 d1 q 29 0 0 27 2.1 -0.1 cm BI /W 29 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID 'Ç äÝ&ÿI¿þ·ÿÿÿï_¶—í¥m+ % Bƒ EI Q endstream endobj 758 0 obj << /Length 178 >> stream 37 0 2 -12 34 27 d1 q 32 0 0 39 2.1 -12.1 cm BI /W 32 /H 39 /BPC 1 /IM true /F /CCF /DP <> ID &¡M‹ÁÆ6 oMêûûÿoÿÿÿúëÿ]w[ m,ƒÇÿÿþMCÀ@ EI Q endstream endobj 759 0 obj << /Length 158 >> stream 27 0 1 0 25 27 d1 q 24 0 0 27 1.1 -0.1 cm BI /W 24 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID &¡?<9²I=/¯øÚÐÿÿÿÿÿþMAà EI Q endstream endobj 760 0 obj << /Length 172 >> stream 27 0 2 0 24 27 d1 q 22 0 0 27 2.1 -0.1 cm BI /W 22 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID > stream 26 0 1 0 21 38 d1 q 20 0 0 38 1.1 -0.1 cm BI /W 20 /H 38 /BPC 1 /IM true /F /CCF /DP <> ID 3¿õþ¾µ¢ Ž æÇÿÿÿÿüÿÿý´¯V*€€ EI Q endstream endobj 762 0 obj << /Length 163 >> stream 37 0 3 0 35 27 d1 q 32 0 0 27 3.1 -0.1 cm BI /W 32 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID &¡OÿæÆN?ÿÿÿÿÿÿÿÿÿÿõýÑC턤)«†° EI Q endstream endobj 763 0 obj << /Length 178 >> stream 49 0 1 0 47 27 d1 q 46 0 0 27 1.1 -0.1 cm BI /W 46 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID & æÿóc‘[t¿îÖýtýë~º}¹ž—ïÚN·úë}Št¼z{×í5ý=ëð EI Q endstream endobj 764 0 obj << /Length 171 >> stream 35 0 1 0 33 27 d1 q 32 0 0 27 1.1 -0.1 cm BI /W 32 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID & çÿóƒomv•´®•ºÇjÕ÷n´è·zº½&é7Jôòj"kþ  EI Q endstream endobj 765 0 obj << /Length 181 >> stream 35 0 1 -12 33 27 d1 q 32 0 0 39 1.1 -12.1 cm BI /W 32 /H 39 /BPC 1 /IM true /F /CCF /DP <> ID & æa?ÍŠvõ¾ékzÚÞ·Ý/íoXí{_Úö¾½eꦴ믮•‚# •ˆ¨a@@ EI Q endstream endobj 766 0 obj << /Length 162 >> stream 30 0 2 0 26 27 d1 q 24 0 0 27 2.1 -0.1 cm BI /W 24 /H 27 /BPC 1 /IM true /F /CCF /DP <> ID . ù)¬%ÒU®–—×J+ªUÕ UëKU­*ªÒ]¡ø€ EI Q endstream endobj 767 0 obj << /Length 135 >> stream 34 0 0 16 33 18 d1 q 33 0 0 2 0.1 15.9 cm BI /W 33 /H 2 /BPC 1 /IM true /F /CCF /DP <> ID & ×€€ EI Q endstream endobj 768 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 6 0 obj << /Name /T15 /Type /Font /Subtype /Type3 /Resources 768 0 R /FontBBox [-3 -11 41 31] /FontMatrix [1 0 0 -1 0 0] /FirstChar 11 /LastChar 124 /Encoding 769 0 R /CharProcs 770 0 R /Widths [24 23 23 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 21 0 0 35 0 12 16 16 0 32 12 14 12 21 21 21 21 21 21 21 21 21 21 21 12 12 0 0 0 20 0 31 29 30 32 28 27 33 31 15 21 32 26 38 31 32 28 0 31 23 30 31 31 43 31 31 0 0 21 0 0 0 0 21 23 18 23 18 13 21 23 12 13 22 12 36 23 21 23 22 16 16 16 23 22 30 22 22 18 21 42 ] >> endobj 769 0 obj << /Type /Encoding /Differences [11/#230B /#230C /#230D /#230E 33/! /" 37/#2325 39/' /#2328 /#2329 43/+ /, /- /. /#232F /0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /: /; 63/? 65/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P 82/R /S /T /U /V /W /X /Y 92/#235C 97/a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /#237B /| ] >> endobj 770 0 obj << /#230B 771 0 R /#230C 772 0 R /#230D 773 0 R /#230E 774 0 R /! 775 0 R /" 776 0 R /#2325 777 0 R /' 778 0 R /#2328 779 0 R /#2329 780 0 R /+ 781 0 R /, 782 0 R /- 783 0 R /. 784 0 R /#232F 785 0 R /0 786 0 R /1 787 0 R /2 788 0 R /3 789 0 R /4 790 0 R /5 791 0 R /6 792 0 R /7 793 0 R /8 794 0 R /9 795 0 R /: 796 0 R /; 797 0 R /? 798 0 R /A 799 0 R /B 800 0 R /C 801 0 R /D 802 0 R /E 803 0 R /F 804 0 R /G 805 0 R /H 806 0 R /I 807 0 R /J 808 0 R /K 809 0 R /L 810 0 R /M 811 0 R /N 812 0 R /O 813 0 R /P 814 0 R /R 815 0 R /S 816 0 R /T 817 0 R /U 818 0 R /V 819 0 R /W 820 0 R /X 821 0 R /Y 822 0 R /#235C 823 0 R /a 824 0 R /b 825 0 R /c 826 0 R /d 827 0 R /e 828 0 R /f 829 0 R /g 830 0 R /h 831 0 R /i 832 0 R /j 833 0 R /k 834 0 R /l 835 0 R /m 836 0 R /n 837 0 R /o 838 0 R /p 839 0 R /q 840 0 R /r 841 0 R /s 842 0 R /t 843 0 R /u 844 0 R /v 845 0 R /w 846 0 R /x 847 0 R /y 848 0 R /z 849 0 R /#237B 850 0 R /| 851 0 R >> endobj 771 0 obj << /Length 170 >> stream 24 0 0 0 26 29 d1 q 26 0 0 29 0.1 -0.1 cm BI /W 26 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 4#gØqÏ‚B“ZÒÚî?ÿÿù5óqÿÿÿÿÿÿÿÿÿàƒ‰` EI Q endstream endobj 772 0 obj << /Length 162 >> stream 23 0 0 0 21 29 d1 q 21 0 0 29 0.1 -0.1 cm BI /W 21 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 4(FÃÚ ªt¾×ÿ“P"n3¿ÿÿÿÿÿÿÿÿüa EI Q endstream endobj 773 0 obj << /Length 162 >> stream 23 0 0 0 21 29 d1 q 21 0 0 29 0.1 -0.1 cm BI /W 21 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 4³A-zOÿÿÿüšqÿÿÿÿÿÿÿÿÿà‚  EI Q endstream endobj 774 0 obj << /Length 178 >> stream 35 0 0 0 33 29 d1 q 33 0 0 29 0.1 -0.1 cm BI /W 33 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID '#…n)͇´¢IS¥_v¾?ÿÿ& Ñ7Fwÿÿÿÿÿÿÿÿÿÿÿÿþ `€€ EI Q endstream endobj 775 0 obj << /Length 142 >> stream 12 0 4 0 8 30 d1 q 4 0 0 30 4.1 -0.1 cm BI /W 4 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID ©ÿû_ÿÿÿÿ‚Tö  EI Q endstream endobj 776 0 obj << /Length 153 >> stream 21 0 1 17 14 29 d1 q 13 0 0 12 1.1 16.9 cm BI /W 13 /H 12 /BPC 1 /IM true /F /CCF /DP <> ID #çºiîØDtÂQÇÿI/ÒJ’T’€€ EI Q endstream endobj 777 0 obj << /Length 197 >> stream 35 0 2 -2 32 31 d1 q 30 0 0 33 2.1 -2.1 cm BI /W 30 /H 33 /BPC 1 /IM true /F /CCF /DP <> ID 6Í]0ºLèUa¥¨EÅ#õeQ}/ÿKÿÒúWKÞ•ÒJÚ]ƒHóŠH…ÒaRV©WÕÒô¿ô¿ô½'KßIÒ¤ÚW`à EI Q endstream endobj 778 0 obj << /Length 139 >> stream 12 0 4 17 9 29 d1 q 5 0 0 12 4.1 16.9 cm BI /W 5 /H 12 /BPC 1 /IM true /F /CCF /DP <> ID #ôöÂQý/J•(€ EI Q endstream endobj 779 0 obj << /Length 155 >> stream 16 0 4 -11 13 31 d1 q 9 0 0 42 4.1 -11.1 cm BI /W 9 /H 42 /BPC 1 /IM true /F /CCF /DP <> ID T©V—¥éKÿ_ÿÿÿýÿöÿ·íûwµp EI Q endstream endobj 780 0 obj << /Length 157 >> stream 16 0 2 -11 11 31 d1 q 9 0 0 42 2.1 -11.1 cm BI /W 9 /H 42 /BPC 1 /IM true /F /CCF /DP <> ID &ªÊöW]¿oÛþßÿÿÿ×þ—ô½/KT©@@ EI Q endstream endobj 781 0 obj << /Length 149 >> stream 32 0 2 -4 29 24 d1 q 27 0 0 28 2.1 -4.1 cm BI /W 27 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID !ÿÿÿÿÿ&¡—ÿÿÿÿÿ€€ EI Q endstream endobj 782 0 obj << /Length 136 >> stream 12 0 4 -8 8 4 d1 q 4 0 0 12 4.1 -8.1 cm BI /W 4 /H 12 /BPC 1 /IM true /F /CCF /DP <> ID ©îô½*P EI Q endstream endobj 783 0 obj << /Length 132 >> stream 14 0 0 8 11 10 d1 q 11 0 0 2 0.1 7.9 cm BI /W 11 /H 2 /BPC 1 /IM true /F /CCF /DP <> ID &¡p EI Q endstream endobj 784 0 obj << /Length 129 >> stream 12 0 4 0 8 4 d1 q 4 0 0 4 4.1 -0.1 cm BI /W 4 /H 4 /BPC 1 /IM true /F /CCF /DP <> ID ©í@@ EI Q endstream endobj 785 0 obj << /Length 158 >> stream 21 0 2 -10 18 31 d1 q 16 0 0 41 2.1 -10.1 cm BI /W 16 /H 41 /BPC 1 /IM true /F /CCF /DP <> ID UKú_Òþ—ô½/éKú^—ô¿¥ý/éx€ EI Q endstream endobj 786 0 obj << /Length 161 >> stream 21 0 2 -1 18 28 d1 q 16 0 0 29 2.1 -1.1 cm BI /W 16 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID <áÏi7I¿Öôÿ­ÿÿÿÿÿÿ½kzý´­¥b  EI Q endstream endobj 787 0 obj << /Length 150 >> stream 21 0 4 0 17 28 d1 q 13 0 0 28 4.1 -0.1 cm BI /W 13 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID >¡`°ÿÿÿÿÿÿÿÿüš‚€ EI Q endstream endobj 788 0 obj << /Length 161 >> stream 21 0 2 0 18 28 d1 q 16 0 0 28 2.1 -0.1 cm BI /W 16 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID 8p‡´“û îýý¬V½/J–©R¥IRÒé*k EI Q endstream endobj 789 0 obj << /Length 167 >> stream 21 0 2 -1 18 28 d1 q 16 0 0 29 2.1 -1.1 cm BI /W 16 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 8PŽ‚aþƒ¾ýoƾ©Rœ9?aû{ÈöŸÿUa%eOgÀ¡… EI Q endstream endobj 790 0 obj << /Length 159 >> stream 21 0 1 0 19 28 d1 q 18 0 0 28 1.1 -0.1 cm BI /W 18 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID $~µôPúúéuõÒëë¥××K¯ Ô¢ÿÿ瀀 EI Q endstream endobj 791 0 obj << /Length 166 >> stream 21 0 2 -1 18 28 d1 q 16 0 0 29 2.1 -1.1 cm BI /W 16 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID /™ø­aeÿÿ0|#ÛÛ~ôÜ}ùÓÿàªÊ§Õ•êÏjP EI Q endstream endobj 792 0 obj << /Length 168 >> stream 21 0 2 -1 18 28 d1 q 16 0 0 29 2.1 -1.1 cm BI /W 16 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 3paPOTé-/µQú©ƒè«}&öß½?¿ÿ÷þêëêÚVÒ†  EI Q endstream endobj 793 0 obj << /Length 156 >> stream 21 0 2 -1 19 28 d1 q 17 0 0 29 2.1 -1.1 cm BI /W 17 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID #¬‚æµòˆT’ÿJ)zUÕ}uëÿ¯ÿûP EI Q endstream endobj 794 0 obj << /Length 173 >> stream 21 0 2 -1 18 28 d1 q 16 0 0 29 2.1 -1.1 cm BI /W 16 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID ÿþÝt­­†‚†K@ EI Q endstream endobj 795 0 obj << /Length 168 >> stream 21 0 2 -1 18 28 d1 q 16 0 0 29 2.1 -1.1 cm BI /W 16 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID <áÏi7Iºúº¿ýÿÿ¿jûh¡í¥²qõ—êŸÒ×i+*µ EI Q endstream endobj 796 0 obj << /Length 137 >> stream 12 0 4 0 8 18 d1 q 4 0 0 18 4.1 -0.1 cm BI /W 4 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID ©íGÿ©í@@ EI Q endstream endobj 797 0 obj << /Length 142 >> stream 12 0 4 -8 8 18 d1 q 4 0 0 26 4.1 -8.1 cm BI /W 4 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID ©íGÿ©îô½*P EI Q endstream endobj 798 0 obj << /Length 155 >> stream 20 0 2 0 17 29 d1 q 15 0 0 29 2.1 -0.1 cm BI /W 15 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 68Gàè&é·øÕh*Tµ]ÿÏtý¨€ EI Q endstream endobj 799 0 obj << /Length 165 >> stream 31 0 1 0 29 29 d1 q 28 0 0 29 1.1 -0.1 cm BI /W 28 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID !ÿÓþŠþ·§ý+ïúMÿô›þ:)ÿ¤ßë}é¬Cš€€ EI Q endstream endobj 800 0 obj << /Length 165 >> stream 29 0 1 0 26 28 d1 q 25 0 0 28 1.1 -0.1 cm BI /W 25 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID & DÛ4}¾ßÿýuép–+,áöû}ýÿÿé¥Â MC<@ EI Q endstream endobj 801 0 obj << /Length 168 >> stream 30 0 2 -1 27 29 d1 q 25 0 0 30 2.1 -1.1 cm BI /W 25 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID (%n=ÐAá é:^éjÿZ¿ÿÿºßï¶—í¥m(m+ %@ EI Q endstream endobj 802 0 obj << /Length 163 >> stream 32 0 2 0 29 28 d1 q 27 0 0 28 2.1 -0.1 cm BI /W 27 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID & DÛ3|0øo·þß¾ÿ÷ÿÿÿý¯®¾º].Rj@@ EI Q endstream endobj 803 0 obj << /Length 164 >> stream 28 0 2 0 26 28 d1 q 24 0 0 28 2.1 -0.1 cm BI /W 24 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID & Þm“¾¿ý÷ÿ>¿ÿ×_{ÿÿ\}/ÿ¯ú\,šƒx€ EI Q endstream endobj 804 0 obj << /Length 159 >> stream 27 0 2 0 24 28 d1 q 22 0 0 28 2.1 -0.1 cm BI /W 22 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡²mš>¿ýïùõûÿõÇ—ÞÿÿøÿÿþMA  EI Q endstream endobj 805 0 obj << /Length 176 >> stream 33 0 2 -1 30 29 d1 q 28 0 0 30 2.1 -1.1 cm BI /W 28 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID (#êÜ{ÐAðzOKïK«ÿ]Gÿÿ$ÍGwßûöÿÛí¢‡Ãi=†x0†  EI Q endstream endobj 806 0 obj << /Length 160 >> stream 31 0 1 0 29 28 d1 q 28 0 0 28 1.1 -0.1 cm BI /W 28 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡Í‡6Éÿÿÿÿÿÿþ<²?ÿÿÿÿÿÿÿ&¡Í‡ EI Q endstream endobj 807 0 obj << /Length 148 >> stream 15 0 1 0 13 28 d1 q 12 0 0 28 1.1 -0.1 cm BI /W 12 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡Í¿ÿÿÿÿÿÿÿÿÿ&¡À@ EI Q endstream endobj 808 0 obj << /Length 155 >> stream 21 0 1 -1 18 28 d1 q 17 0 0 29 1.1 -1.1 cm BI /W 17 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 8Ðïÿÿÿÿÿÿütÿú´¸Ugµ (€ EI Q endstream endobj 809 0 obj << /Length 172 >> stream 32 0 1 0 29 28 d1 q 28 0 0 28 1.1 -0.1 cm BI /W 28 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡Ï‹6à ÂõÒétº].—K¯O¢‡}/¤ÞÛ×Ûíÿ·ï¿oß¹5` EI Q endstream endobj 810 0 obj << /Length 152 >> stream 26 0 2 0 23 28 d1 q 21 0 0 28 2.1 -0.1 cm BI /W 21 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID & “g¯ÿÿÿÿÿõÿ×úë×…“PÑ EI Q endstream endobj 811 0 obj << /Length 180 >> stream 38 0 2 0 35 28 d1 q 33 0 0 28 2.1 -0.1 cm BI /W 33 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¢D6rwùC´Pÿÿÿ¶—ÿí¥ÿÿý´¿ÿÿ¶—ÿÿöÒÿÿþÚ_ÿ·ÿÿÚéü<àp EI Q endstream endobj 812 0 obj << /Length 172 >> stream 31 0 1 0 29 28 d1 q 28 0 0 28 1.1 -0.1 cm BI /W 28 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¢”lÁ‚ÛYCþßÛÿöþßïïöÿ·öÿ·ûûýýû÷§Áx€ EI Q endstream endobj 813 0 obj << /Length 172 >> stream 32 0 2 -1 29 29 d1 q 27 0 0 30 2.1 -1.1 cm BI /W 27 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID '#`p‚ :MÒn“u½=oúzßÿÿÿ½mzÚÞ­¥m+iC ¡ˆP EI Q endstream endobj 814 0 obj << /Length 158 >> stream 28 0 2 0 25 28 d1 q 23 0 0 28 2.1 -0.1 cm BI /W 23 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID & ÄÛ3»·ßßÿÿ]z]ˆYzÿÿÿÿɨx€ EI Q endstream endobj 815 0 obj << /Length 170 >> stream 31 0 2 -1 30 28 d1 q 28 0 0 29 2.1 -1.1 cm BI /W 28 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID & ¼Û>øaöûûÿÿë¯K„ ²ü ûíÿÿÿþ¿ïþMC¶”C EI Q endstream endobj 816 0 obj << /Length 174 >> stream 23 0 2 -1 20 29 d1 q 18 0 0 30 2.1 -1.1 cm BI /W 18 /H 30 /BPC 1 /IM true /F /CCF /DP <> ID 8A(Fþ‚ Þ“×ïÿìwo"Mƒ°á¸7$·rj¿û¯í-Õv~Z @@ EI Q endstream endobj 817 0 obj << /Length 156 >> stream 30 0 1 0 28 28 d1 q 27 0 0 28 1.1 -0.1 cm BI /W 27 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID #ŒÓ/úß[ÿ®õÿþ;ÿÿÿÿÿÿNx€€ EI Q endstream endobj 818 0 obj << /Length 164 >> stream 31 0 1 -1 29 28 d1 q 28 0 0 29 1.1 -1.1 cm BI /W 28 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¡ÏˆmƒÚÿÿÿÿÿÿÿÿÿÿÿÿt·Ý+}°•°‚ƒ  EI Q endstream endobj 819 0 obj << /Length 166 >> stream 31 0 1 -1 29 28 d1 q 28 0 0 29 1.1 -1.1 cm BI /W 28 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¡M0»W¯ÛKûî—ö·¯ÛKûî—í¥ÿÛKøí{_À@ EI Q endstream endobj 820 0 obj << /Length 185 >> stream 43 0 1 -1 41 28 d1 q 40 0 0 29 1.1 -1.1 cm BI /W 40 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¡M…<(0@Á©«m×ÿöí/ÿí¢¥ÿÿÛI´¿ÿûi6—ÿÿ´›[ýðØï_ÓÞ¿§½@@ EI Q endstream endobj 821 0 obj << /Length 172 >> stream 31 0 1 0 29 28 d1 q 28 0 0 28 1.1 -0.1 cm BI /W 28 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡Î 6A‚´Öêé[K}Ò¶–û¥»wߢҾô›¥}é]&ûÖá;‚a EI Q endstream endobj 822 0 obj << /Length 163 >> stream 31 0 0 0 30 28 d1 q 30 0 0 28 0.1 -0.1 cm BI /W 30 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID &¡ÉÅ6lÚÝ]-­êÚ[î–Öõ´­÷K¯ÿÿÿæà EI Q endstream endobj 823 0 obj << /Length 151 >> stream 21 0 6 17 19 29 d1 q 13 0 0 12 6.1 16.9 cm BI /W 13 /H 12 /BPC 1 /IM true /F /CCF /DP <> ID 6•$©%I/ÒKÿä±qní5 EI Q endstream endobj 824 0 obj << /Length 159 >> stream 21 0 2 0 20 18 d1 q 18 0 0 18 2.1 -0.1 cm BI /W 18 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 0:>M¾Ý®?Ÿq„ ¥ë®¿þë¶Šv•’· EI Q endstream endobj 825 0 obj << /Length 161 >> stream 23 0 1 0 21 29 d1 q 20 0 0 29 1.1 -0.1 cm BI /W 20 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¥ÿÿÿüÁðaì7¦ý÷÷ÿÿýuõ´°‹ –˜P EI Q endstream endobj 826 0 obj << /Length 152 >> stream 18 0 1 0 16 18 d1 q 15 0 0 18 1.1 -0.1 cm BI /W 15 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID <8GçI4µkC_ÿ÷Ú¾ÚVÂP€€ EI Q endstream endobj 827 0 obj << /Length 163 >> stream 23 0 1 0 21 29 d1 q 20 0 0 29 1.1 -0.1 cm BI /W 20 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID ((?ÿÿÿž.°¡ôÒzúëÿÿÿïï¿ml0Ž>8  EI Q endstream endobj 828 0 obj << /Length 153 >> stream 18 0 1 0 16 18 d1 q 15 0 0 18 1.1 -0.1 cm BI /W 15 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 8T{t›¤Ýnxæ#þûWÛJØJP EI Q endstream endobj 829 0 obj << /Length 155 >> stream 13 0 0 0 15 29 d1 q 15 0 0 29 0.1 -0.1 cm BI /W 15 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 3:<8I:Õ®?ÿäÔ,Ýÿÿÿÿÿø"À@ EI Q endstream endobj 830 0 obj << /Length 174 >> stream 21 0 1 -9 19 19 d1 q 18 0 0 28 1.1 -9.1 cm BI /W 18 /H 28 /BPC 1 /IM true /F /CCF /DP <> ID :S†Â4ÒzÓoÿýëkm*\øýä.0{¢‘«i?ûi[Jà C  EI Q endstream endobj 831 0 obj << /Length 158 >> stream 23 0 1 0 21 29 d1 q 20 0 0 29 1.1 -0.1 cm BI /W 20 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¥ÿÿÿüÁôU‡Ò}Þ¿ÿÿÿÿÿÿÿ‚€ EI Q endstream endobj 832 0 obj << /Length 145 >> stream 12 0 1 0 10 29 d1 q 9 0 0 29 1.1 -0.1 cm BI /W 9 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID 1Óö£üš”ÿÿÿÿÿð@À@ EI Q endstream endobj 833 0 obj << /Length 153 >> stream 13 0 -3 -8 8 29 d1 q 11 0 0 37 -2.9 -8.1 cm BI /W 11 /H 37 /BPC 1 /IM true /F /CCF /DP <> ID ©íGùÂÿÿÿÿüé×[Udì@ EI Q endstream endobj 834 0 obj << /Length 162 >> stream 22 0 1 0 20 29 d1 q 19 0 0 29 1.1 -0.1 cm BI /W 19 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¥ÿÿÿüðö…Òè.—K§×eí_}û~ýÁA€€ EI Q endstream endobj 835 0 obj << /Length 144 >> stream 12 0 1 0 10 29 d1 q 9 0 0 29 1.1 -0.1 cm BI /W 9 /H 29 /BPC 1 /IM true /F /CCF /DP <> ID &¥ÿÿÿÿÿÿÿÿÿþ€ EI Q endstream endobj 836 0 obj << /Length 165 >> stream 36 0 1 0 34 18 d1 q 33 0 0 18 1.1 -0.1 cm BI /W 33 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¤`¢°>“¤û‡z¯ÿÿÿÿÿÿÿÿÿÿà‚€ EI Q endstream endobj 837 0 obj << /Length 154 >> stream 23 0 1 0 21 18 d1 q 20 0 0 18 1.1 -0.1 cm BI /W 20 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¤`à諤û½ÿÿÿÿÿÿÿ 0 EI Q endstream endobj 838 0 obj << /Length 156 >> stream 21 0 1 0 19 18 d1 q 18 0 0 18 1.1 -0.1 cm BI /W 18 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID > stream 23 0 1 -8 21 18 d1 q 20 0 0 26 1.1 -8.1 cm BI /W 20 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID &¤`àáÃØoWÛÿoÿÿô¿ÒÝhŽ‚]…Çÿÿ‚ EI Q endstream endobj 840 0 obj << /Length 165 >> stream 22 0 1 -8 21 18 d1 q 20 0 0 26 1.1 -8.1 cm BI /W 20 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID > stream 16 0 1 0 14 18 d1 q 13 0 0 18 1.1 -0.1 cm BI /W 13 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¤^ƒ @ƒµúkÿÿÿþ„€ EI Q endstream endobj 842 0 obj << /Length 159 >> stream 16 0 1 0 14 18 d1 q 13 0 0 18 1.1 -0.1 cm BI /W 13 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID 0A*+´ž¯ýøcd[aÃs3&¨>÷ýÖˆè%¦  EI Q endstream endobj 843 0 obj << /Length 152 >> stream 16 0 1 0 13 26 d1 q 12 0 0 26 1.1 -0.1 cm BI /W 12 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID 8¿õõ¬"pfïÿÿýÿß´¡ƒ€€ EI Q endstream endobj 844 0 obj << /Length 153 >> stream 23 0 1 0 21 18 d1 q 20 0 0 18 1.1 -0.1 cm BI /W 20 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¤p àÿÿÿÿÿÿÿÿÖþÂ8ødà€ EI Q endstream endobj 845 0 obj << /Length 153 >> stream 22 0 1 0 20 18 d1 q 19 0 0 18 1.1 -0.1 cm BI /W 19 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¢œ Âa]¯ÛKû[×í¥ý÷Köÿµ EI Q endstream endobj 846 0 obj << /Length 167 >> stream 30 0 1 0 28 18 d1 q 27 0 0 18 1.1 -0.1 cm BI /W 27 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¢—Á0š¾×ë D·Ú_þ“öûKÿÒ~ßiöýïú{Ô@ EI Q endstream endobj 847 0 obj << /Length 160 >> stream 22 0 1 0 21 18 d1 q 20 0 0 18 1.1 -0.1 cm BI /W 20 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID &¢›`µVêÚVÒëb¯ºå;¤Ý.­ÒnÂa EI Q endstream endobj 848 0 obj << /Length 163 >> stream 22 0 1 -8 20 18 d1 q 19 0 0 26 1.1 -8.1 cm BI /W 19 /H 26 /BPC 1 /IM true /F /CCF /DP <> ID &¢œ Âa]¯ÛKû[×í¥ý÷Köÿµéy5K­¤¬8€ EI Q endstream endobj 849 0 obj << /Length 152 >> stream 18 0 1 0 15 18 d1 q 14 0 0 18 1.1 -0.1 cm BI /W 14 /H 18 /BPC 1 /IM true /F /CCF /DP <> ID #‚MË^’ëë¥Õ*­ijµT¾‡ EI Q endstream endobj 850 0 obj << /Length 134 >> stream 21 0 0 11 20 12 d1 q 20 0 0 1 0.1 10.9 cm BI /W 20 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID &¡ @ EI Q endstream endobj 851 0 obj << /Length 134 >> stream 42 0 0 11 41 12 d1 q 41 0 0 1 0.1 10.9 cm BI /W 41 /H 1 /BPC 1 /IM true /F /CCF /DP <> ID & Ú  EI Q endstream endobj 852 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 7 0 obj << /Name /T16 /Type /Font /Subtype /Type3 /Resources 852 0 R /FontBBox [2 -18 79 61] /FontMatrix [1 0 0 -1 0 0] /FirstChar 49 /LastChar 120 /Encoding 853 0 R /CharProcs 854 0 R /Widths [48 48 48 48 48 48 0 0 0 0 0 0 0 0 0 0 0 0 70 0 0 0 76 0 0 0 0 0 0 0 0 66 0 0 0 67 0 0 0 0 0 0 0 0 0 0 0 0 47 0 0 54 44 0 48 54 26 0 0 0 82 54 48 54 0 40 0 38 54 0 0 51 ] >> endobj 853 0 obj << /Type /Encoding /Differences [49/1 /2 /3 /4 /5 /6 67/C 71/G 80/P 84/T 97/a 100/d /e 103/g /h /i 109/m /n /o /p 114/r 116/t /u 120/x ] >> endobj 854 0 obj << /1 855 0 R /2 856 0 R /3 857 0 R /4 858 0 R /5 859 0 R /6 860 0 R /C 861 0 R /G 862 0 R /P 863 0 R /T 864 0 R /a 865 0 R /d 866 0 R /e 867 0 R /g 868 0 R /h 869 0 R /i 870 0 R /m 871 0 R /n 872 0 R /o 873 0 R /p 874 0 R /r 875 0 R /t 876 0 R /u 877 0 R /x 878 0 R >> endobj 855 0 obj << /Length 164 >> stream 48 0 7 0 40 56 d1 q 33 0 0 56 7.1 -0.1 cm BI /W 33 /H 56 /BPC 1 /IM true /F /CCF /DP <> ID )Ýaa`²j ÿÈGÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþG¯À@ EI Q endstream endobj 856 0 obj << /Length 191 >> stream 48 0 5 0 42 56 d1 q 37 0 0 56 5.1 -0.1 cm BI /W 37 /H 56 /BPC 1 /IM true /F /CCF /DP <> ID !‰4!AÑ)º7A7Iºmá¾î¾Ûÿö¶¶±êºôµ]R¥ª •*T-R:4––’Tº]%¡Öµ­*ÿà EI Q endstream endobj 857 0 obj << /Length 205 >> stream 48 0 4 -1 43 56 d1 q 39 0 0 57 4.1 -1.1 cm BI /W 39 /H 57 /BPC 1 /IM true /F /CCF /DP <> ID :‚ ‰{ ƒtt› ï};ßÿþ×j­pÂXÖ©j•(JHÖK„ƒvíïÛûÌžžŸýúJפ¬*°iX0•І0¤0° EI Q endstream endobj 858 0 obj << /Length 180 >> stream 48 0 3 0 44 55 d1 q 41 0 0 55 3.1 -0.1 cm BI /W 41 /H 55 /BPC 1 /IM true /F /CCF /DP <> ID &Öµ¯­këE¯K×K¥××K¥×¥ë¥Òëë¥ÒëÒõÒéuò ¦¿?ÿÿü耀 EI Q endstream endobj 859 0 obj << /Length 201 >> stream 48 0 5 -1 42 56 d1 q 37 0 0 57 5.1 -1.1 cm BI /W 37 /H 57 /BPC 1 /IM true /F /CCF /DP <> ID 7’~ "ÅkZÖ°°°²àŒÿÿÏ Á\øAä'¼oMé½^®/¿÷æOO^ÿë^»Iaw­¥m+ + %b¬(aA‘* EI Q endstream endobj 860 0 obj << /Length 204 >> stream 48 0 4 -1 43 56 d1 q 39 0 0 57 4.1 -1.1 cm BI /W 39 /H 57 /BPC 1 /IM true /F /CCF /DP <> ID "šƒƒ„D÷AáÝ%¤´“ëK¯®­vª×Wþx-B§Ñ¨I¿Mâ¯úoþÿ«ÿ÷ÿÿßþ­þ¯ô­öÒ¶•†± Ô0 Á@@ EI Q endstream endobj 861 0 obj << /Length 214 >> stream 70 0 5 -1 64 60 d1 q 59 0 0 61 5.1 -1.1 cm BI /W 59 /H 61 /BPC 1 /IM true /F /CCF /DP <> ID )… Ãb‚ B B!ƒµ‚V ƒ: Òt'I×Iý'ô½ý¢õÿÿÿþÿ|•·ÿÛô­ÿ¶•ûi[[i[JÃJà Xa(d0€¡Š†)H  EI Q endstream endobj 862 0 obj << /Length 220 >> stream 76 0 5 -1 70 60 d1 q 65 0 0 61 5.1 -1.1 cm BI /W 65 /H 61 /BPC 1 /IM true /F /CCF /DP <> ID )”üƒ  aÁÚ •†´1 é¤ô½='¥ÕõÕÿKïúÿÐúÿÿÿþBCÿ~DÂßÿíÿ·þß~ß¾ßml>ka„H|2:xbžAàÂ)Œ@ EI Q endstream endobj 863 0 obj << /Length 184 >> stream 66 0 4 0 60 59 d1 q 56 0 0 59 4.1 -0.1 cm BI /W 56 /H 59 /BPC 1 /IM true /F /CCF /DP <> ID & ÙT"Ð)¨ƒ|7Ûíÿßûÿÿÿëý}zëÒá.,V ¢¿ÿÿÿÿÿÿÿù5 ßü@ EI Q endstream endobj 864 0 obj << /Length 178 >> stream 67 0 3 0 63 58 d1 q 60 0 0 58 3.1 -0.1 cm BI /W 60 /H 58 /BPC 1 /IM true /F /CCF /DP <> ID .ü… …F`Þ·Öúß[ÿÿ­ÿÿÿKoÿÿür 7ÿÿÿÿÿÿÿÿÿÿÿÿ$¯þ  EI Q endstream endobj 865 0 obj << /Length 193 >> stream 47 0 3 0 46 38 d1 q 43 0 0 38 3.1 -0.1 cm BI /W 43 /H 38 /BPC 1 /IM true /F /CCF /DP <> ID '‚!¢ ƒ¢3½†é·Û÷ÞÕÚíqÿóPg”xD>`ˆZhAtºô¿Òÿÿõ·ôqöÂWa„™ †+ 80@à EI Q endstream endobj 866 0 obj << /Length 198 >> stream 54 0 3 0 50 60 d1 q 47 0 0 60 3.1 -0.1 cm BI /W 47 /H 60 /BPC 1 /IM true /F /CCF /DP <> ID "c’aü¿ÿÿÿÿÿæ¡9 áÂ!&:zOIëÒÿ__ÿ_ÿÿÿÿþÿÿoýûkmn¶NÃä0jÄ,X0X€ EI Q endstream endobj 867 0 obj << /Length 180 >> stream 44 0 3 0 40 38 d1 q 37 0 0 38 3.1 -0.1 cm BI /W 37 /H 38 /BPC 1 /IM true /F /CCF /DP <> ID :„‚9Â0è'¤ßn—[ïK÷ëü!ßû|ƒoÞé[[i[ X0J… )¨$@ EI Q endstream endobj 868 0 obj << /Length 223 >> stream 48 0 3 -18 46 39 d1 q 43 0 0 57 3.1 -18.1 cm BI /W 43 /H 57 /BPC 1 /IM true /F /CCF /DP <> ID "‡!„à§4\4Eá PA…¤Þ¶Õ&ÚøÖÿÿÿÿ½~ÚW«iXa*Fp´ Gî»·1¤†iáÛ·nœ'DiôP-[¤ÿÿÿm/ÛJÚVJÁ‚PÄ(aHaˆ€ EI Q endstream endobj 869 0 obj << /Length 185 >> stream 54 0 4 0 51 60 d1 q 47 0 0 60 4.1 -0.1 cm BI /W 47 /H 60 /BPC 1 /IM true /F /CCF /DP <> ID 3š†?ó/ÿÿÿÿÿþh' ô_¾‚o ¯¤øï^¿ÿ_ÿÿÿÿÿÿÿÿÿÿÿÿþMCaÀÙÿà EI Q endstream endobj 870 0 obj << /Length 166 >> stream 26 0 3 0 23 61 d1 q 20 0 0 61 3.1 -0.1 cm BI /W 20 /H 61 /BPC 1 /IM true /F /CCF /DP <> ID >áOÓÿÚö¡…þf9ÿ8ÿÿÿÿÿÿÿÿÿÿù5 €€ EI Q endstream endobj 871 0 obj << /Length 201 >> stream 82 0 4 0 79 38 d1 q 75 0 0 38 4.1 -0.1 cm BI /W 75 /H 38 /BPC 1 /IM true /F /CCF /DP <> ID >2 q$Ô0@øL'Ñ>hŸ>Ð Üà‰ZWt Ÿ¬wê¼Uÿê¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&¡°ðl<?ÿð EI Q endstream endobj 872 0 obj << /Length 177 >> stream 54 0 4 0 51 38 d1 q 47 0 0 38 4.1 -0.1 cm BI /W 47 /H 38 /BPC 1 /IM true /F /CCF /DP <> ID >2q$Ô |'Ñ~ú ¹ÁWtŸ­úñ_ÿ¯ÿÿÿÿÿÿÿÿÿÿÿÿÿ&¡°àlÿð EI Q endstream endobj 873 0 obj << /Length 181 >> stream 48 0 3 0 44 38 d1 q 41 0 0 38 3.1 -0.1 cm BI /W 41 /H 38 /BPC 1 /IM true /F /CCF /DP <> ID :…‚ˆžátn“¤Ýoô›ÿÿ[ÿÿÿÿzÿí¥ûÖÖõm+ % 0‚±P` Á@@ EI Q endstream endobj 874 0 obj << /Length 198 >> stream 54 0 3 -17 50 38 d1 q 47 0 0 55 3.1 -17.1 cm BI /W 47 /H 55 /BPC 1 /IM true /F /CCF /DP <> ID 3˜’j6 pƒè—¼B Îì&õ}¿}ýÿ¿¿ÿÿÿþºÿþº_Ú[Kim,ˆ80—b . ‰V?ÿÿÿÿ&¡³ÿ EI Q endstream endobj 875 0 obj << /Length 169 >> stream 40 0 3 0 37 38 d1 q 34 0 0 38 3.1 -0.1 cm BI /W 34 /H 38 /BPC 1 /IM true /F /CCF /DP <> ID >32“Ppƒè>‹·ÐK8"I½z_ñµ¦»\uÿÿÿÿÿÿÿòj ÿð EI Q endstream endobj 876 0 obj << /Length 170 >> stream 38 0 2 0 32 55 d1 q 30 0 0 55 2.1 -0.1 cm BI /W 30 /H 55 /BPC 1 /IM true /F /CCF /DP <> ID $?ÿ¯þ¾¾µ­a0à¿Ï‰ÿÿÿÿÿÿÿ'ÿÿþéoºVÒ±V Â€€ EI Q endstream endobj 877 0 obj << /Length 177 >> stream 54 0 4 0 51 38 d1 q 47 0 0 38 4.1 -0.1 cm BI /W 47 /H 38 /BPC 1 /IM true /F /CCF /DP <> ID 395 ?ÿÎ5»ÿÿÿÿÿÿÿÿÿÿÿÿÿúÿ­þŽ>ÚWlÁ«µƒ  EI Q endstream endobj 878 0 obj << /Length 188 >> stream 51 0 2 0 48 38 d1 q 46 0 0 38 2.1 -0.1 cm BI /W 46 /H 38 /BPC 1 /IM true /F /CCF /DP <> ID &¡œÐÿÿ> 29Ü+km+Õ´­¥´­¥cµkW·zt÷DÇt›¤ô›­ÒoMÒzMÒn·& ¸"Íü@ EI Q endstream endobj 39 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Times-Roman >> endobj 61 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Courier >> endobj 179 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Times-Bold >> endobj 3 0 obj << /Type /Page /Parent 9 0 R /Resources 5 0 R /Contents 4 0 R >> endobj 11 0 obj << /Type /Page /Parent 9 0 R /Resources 13 0 R /Contents 12 0 R >> endobj 17 0 obj << /Type /Page /Parent 9 0 R /Resources 19 0 R /Contents 18 0 R >> endobj 22 0 obj << /Type /Page /Parent 9 0 R /Resources 24 0 R /Contents 23 0 R >> endobj 26 0 obj << /Type /Page /Parent 9 0 R /Resources 28 0 R /Contents 27 0 R >> endobj 29 0 obj << /Type /Page /Parent 9 0 R /Resources 31 0 R /Contents 30 0 R >> endobj 32 0 obj << /Type /Page /Parent 9 0 R /Resources 34 0 R /Contents 33 0 R >> endobj 36 0 obj << /Type /Page /Parent 9 0 R /Resources 38 0 R /Contents 37 0 R >> endobj 40 0 obj << /Type /Page /Parent 9 0 R /Resources 42 0 R /Contents 41 0 R >> endobj 45 0 obj << /Type /Page /Parent 9 0 R /Resources 47 0 R /Contents 46 0 R >> endobj 52 0 obj << /Type /Page /Parent 56 0 R /Resources 54 0 R /Contents 53 0 R >> endobj 58 0 obj << /Type /Page /Parent 56 0 R /Resources 60 0 R /Contents 59 0 R >> endobj 63 0 obj << /Type /Page /Parent 56 0 R /Resources 65 0 R /Contents 64 0 R >> endobj 69 0 obj << /Type /Page /Parent 56 0 R /Resources 71 0 R /Contents 70 0 R >> endobj 74 0 obj << /Type /Page /Parent 56 0 R /Resources 76 0 R /Contents 75 0 R >> endobj 79 0 obj << /Type /Page /Parent 56 0 R /Resources 81 0 R /Contents 80 0 R >> endobj 84 0 obj << /Type /Page /Parent 56 0 R /Resources 86 0 R /Contents 85 0 R >> endobj 88 0 obj << /Type /Page /Parent 56 0 R /Resources 90 0 R /Contents 89 0 R >> endobj 93 0 obj << /Type /Page /Parent 56 0 R /Resources 95 0 R /Contents 94 0 R >> endobj 101 0 obj << /Type /Page /Parent 56 0 R /Resources 103 0 R /Contents 102 0 R >> endobj 106 0 obj << /Type /Page /Parent 109 0 R /Resources 108 0 R /Contents 107 0 R >> endobj 110 0 obj << /Type /Page /Parent 109 0 R /Resources 112 0 R /Contents 111 0 R >> endobj 113 0 obj << /Type /Page /Parent 109 0 R /Resources 115 0 R /Contents 114 0 R >> endobj 118 0 obj << /Type /Page /Parent 109 0 R /Resources 120 0 R /Contents 119 0 R >> endobj 122 0 obj << /Type /Page /Parent 109 0 R /Resources 124 0 R /Contents 123 0 R >> endobj 129 0 obj << /Type /Page /Parent 109 0 R /Resources 131 0 R /Contents 130 0 R >> endobj 135 0 obj << /Type /Page /Parent 109 0 R /Resources 137 0 R /Contents 136 0 R >> endobj 138 0 obj << /Type /Page /Parent 109 0 R /Resources 140 0 R /Contents 139 0 R >> endobj 145 0 obj << /Type /Page /Parent 109 0 R /Resources 147 0 R /Contents 146 0 R >> endobj 150 0 obj << /Type /Page /Parent 109 0 R /Resources 152 0 R /Contents 151 0 R >> endobj 155 0 obj << /Type /Page /Parent 158 0 R /Resources 157 0 R /Contents 156 0 R >> endobj 162 0 obj << /Type /Page /Parent 158 0 R /Resources 164 0 R /Contents 163 0 R >> endobj 169 0 obj << /Type /Page /Parent 158 0 R /Resources 171 0 R /Contents 170 0 R >> endobj 176 0 obj << /Type /Page /Parent 158 0 R /Resources 178 0 R /Contents 177 0 R >> endobj 180 0 obj << /Type /Page /Parent 158 0 R /Resources 182 0 R /Contents 181 0 R >> endobj 186 0 obj << /Type /Page /Parent 158 0 R /Resources 188 0 R /Contents 187 0 R >> endobj 191 0 obj << /Type /Page /Parent 158 0 R /Resources 193 0 R /Contents 192 0 R >> endobj 194 0 obj << /Type /Page /Parent 158 0 R /Resources 196 0 R /Contents 195 0 R >> endobj 197 0 obj << /Type /Page /Parent 158 0 R /Resources 199 0 R /Contents 198 0 R >> endobj 200 0 obj << /Type /Page /Parent 158 0 R /Resources 202 0 R /Contents 201 0 R >> endobj 203 0 obj << /Type /Page /Parent 206 0 R /Resources 205 0 R /Contents 204 0 R >> endobj 211 0 obj << /Type /Page /Parent 206 0 R /Resources 213 0 R /Contents 212 0 R >> endobj 215 0 obj << /Type /Page /Parent 206 0 R /Resources 217 0 R /Contents 216 0 R >> endobj 220 0 obj << /Type /Page /Parent 206 0 R /Resources 222 0 R /Contents 221 0 R >> endobj 226 0 obj << /Type /Page /Parent 206 0 R /Resources 228 0 R /Contents 227 0 R >> endobj 230 0 obj << /Type /Page /Parent 206 0 R /Resources 232 0 R /Contents 231 0 R >> endobj 233 0 obj << /Type /Page /Parent 206 0 R /Resources 235 0 R /Contents 234 0 R >> endobj 242 0 obj << /Type /Page /Parent 206 0 R /Resources 244 0 R /Contents 243 0 R >> endobj 250 0 obj << /Type /Page /Parent 206 0 R /Resources 252 0 R /Contents 251 0 R >> endobj 254 0 obj << /Type /Page /Parent 206 0 R /Resources 256 0 R /Contents 255 0 R >> endobj 257 0 obj << /Type /Page /Parent 260 0 R /Resources 259 0 R /Contents 258 0 R >> endobj 263 0 obj << /Type /Page /Parent 260 0 R /Resources 265 0 R /Contents 264 0 R >> endobj 266 0 obj << /Type /Page /Parent 260 0 R /Resources 268 0 R /Contents 267 0 R >> endobj 271 0 obj << /Type /Page /Parent 260 0 R /Resources 273 0 R /Contents 272 0 R >> endobj 275 0 obj << /Type /Page /Parent 260 0 R /Resources 277 0 R /Contents 276 0 R >> endobj 278 0 obj << /Type /Page /Parent 260 0 R /Resources 280 0 R /Contents 279 0 R >> endobj 281 0 obj << /Type /Page /Parent 260 0 R /Resources 283 0 R /Contents 282 0 R >> endobj 284 0 obj << /Type /Page /Parent 260 0 R /Resources 286 0 R /Contents 285 0 R >> endobj 287 0 obj << /Type /Page /Parent 260 0 R /Resources 289 0 R /Contents 288 0 R >> endobj 290 0 obj << /Type /Page /Parent 260 0 R /Resources 292 0 R /Contents 291 0 R >> endobj 294 0 obj << /Type /Page /Parent 297 0 R /Resources 296 0 R /Contents 295 0 R >> endobj 298 0 obj << /Type /Page /Parent 297 0 R /Resources 300 0 R /Contents 299 0 R >> endobj 302 0 obj << /Type /Page /Parent 297 0 R /Resources 304 0 R /Contents 303 0 R >> endobj 305 0 obj << /Type /Page /Parent 297 0 R /Resources 307 0 R /Contents 306 0 R >> endobj 308 0 obj << /Type /Page /Parent 297 0 R /Resources 310 0 R /Contents 309 0 R >> endobj 311 0 obj << /Type /Page /Parent 297 0 R /Resources 313 0 R /Contents 312 0 R >> endobj 9 0 obj << /Type /Pages /Kids [3 0 R 11 0 R 17 0 R 22 0 R 26 0 R 29 0 R 32 0 R 36 0 R 40 0 R 45 0 R] /Count 10 /Parent 55 0 R >> endobj 56 0 obj << /Type /Pages /Kids [52 0 R 58 0 R 63 0 R 69 0 R 74 0 R 79 0 R 84 0 R 88 0 R 93 0 R 101 0 R] /Count 10 /Parent 55 0 R >> endobj 109 0 obj << /Type /Pages /Kids [106 0 R 110 0 R 113 0 R 118 0 R 122 0 R 129 0 R 135 0 R 138 0 R 145 0 R 150 0 R] /Count 10 /Parent 55 0 R >> endobj 158 0 obj << /Type /Pages /Kids [155 0 R 162 0 R 169 0 R 176 0 R 180 0 R 186 0 R 191 0 R 194 0 R 197 0 R 200 0 R] /Count 10 /Parent 55 0 R >> endobj 206 0 obj << /Type /Pages /Kids [203 0 R 211 0 R 215 0 R 220 0 R 226 0 R 230 0 R 233 0 R 242 0 R 250 0 R 254 0 R] /Count 10 /Parent 55 0 R >> endobj 260 0 obj << /Type /Pages /Kids [257 0 R 263 0 R 266 0 R 271 0 R 275 0 R 278 0 R 281 0 R 284 0 R 287 0 R 290 0 R] /Count 10 /Parent 55 0 R >> endobj 297 0 obj << /Type /Pages /Kids [294 0 R 298 0 R 302 0 R 305 0 R 308 0 R 311 0 R] /Count 6 /Parent 55 0 R >> endobj 55 0 obj << /Type /Pages /Kids [9 0 R 56 0 R 109 0 R 158 0 R 206 0 R 260 0 R 297 0 R ] /Count 66 /MediaBox [0 0 612 792] >> endobj 879 0 obj << /Type /Catalog /Pages 55 0 R >> endobj 880 0 obj << /CreationDate (D:191011129042351) /Producer (\376\377\000A\000c\000r\000o\000b\000a\000t\000 \000D\000i\000s\000t\000i\000l\000l\000e\000r\000 \0003\000.\0000\0001\000 \000f\000o\000r\000 \000W\000i\000n\000d\000o\000w\000s) /Creator (dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software) /Title (tix.dvi) >> endobj xref 0 881 0000000000 65535 f 0000000017 00000 n 0000010495 00000 n 0000663846 00000 n 0000009987 00000 n 0000010301 00000 n 0000637077 00000 n 0000656735 00000 n 0000531768 00000 n 0000670092 00000 n 0000010545 00000 n 0000663934 00000 n 0000010682 00000 n 0000016376 00000 n 0000593750 00000 n 0000612588 00000 n 0000623482 00000 n 0000664025 00000 n 0000016522 00000 n 0000025471 00000 n 0000573031 00000 n 0000584705 00000 n 0000664116 00000 n 0000025617 00000 n 0000037161 00000 n 0000564357 00000 n 0000664207 00000 n 0000037306 00000 n 0000039186 00000 n 0000664298 00000 n 0000039305 00000 n 0000039485 00000 n 0000664389 00000 n 0000039604 00000 n 0000046012 00000 n 0000550520 00000 n 0000664480 00000 n 0000046182 00000 n 0000051905 00000 n 0000663577 00000 n 0000664571 00000 n 0000052036 00000 n 0000062635 00000 n 0000062805 00000 n 0000063243 00000 n 0000664662 00000 n 0000063681 00000 n 0000070119 00000 n 0000070388 00000 n 0000070531 00000 n 0000070438 00000 n 0000070581 00000 n 0000664753 00000 n 0000070681 00000 n 0000077969 00000 n 0000671135 00000 n 0000670236 00000 n 0000078139 00000 n 0000664845 00000 n 0000078577 00000 n 0000086696 00000 n 0000663668 00000 n 0000545989 00000 n 0000664937 00000 n 0000086989 00000 n 0000094655 00000 n 0000094811 00000 n 0000103277 00000 n 0000095636 00000 n 0000665029 00000 n 0000096505 00000 n 0000102984 00000 n 0000535800 00000 n 0000103328 00000 n 0000665121 00000 n 0000103453 00000 n 0000112513 00000 n 0000534180 00000 n 0000534986 00000 n 0000665213 00000 n 0000112714 00000 n 0000121975 00000 n 0000122202 00000 n 0000130434 00000 n 0000665305 00000 n 0000123365 00000 n 0000130178 00000 n 0000130484 00000 n 0000665397 00000 n 0000130599 00000 n 0000138841 00000 n 0000138985 00000 n 0000145910 00000 n 0000665489 00000 n 0000139610 00000 n 0000145654 00000 n 0000145961 00000 n 0000146106 00000 n 0000155273 00000 n 0000147100 00000 n 0000155440 00000 n 0000665581 00000 n 0000147955 00000 n 0000154996 00000 n 0000155324 00000 n 0000155492 00000 n 0000665676 00000 n 0000155608 00000 n 0000163590 00000 n 0000670383 00000 n 0000665772 00000 n 0000163769 00000 n 0000172067 00000 n 0000665868 00000 n 0000172246 00000 n 0000179228 00000 n 0000179412 00000 n 0000188207 00000 n 0000665964 00000 n 0000182172 00000 n 0000187960 00000 n 0000188259 00000 n 0000666060 00000 n 0000188375 00000 n 0000195737 00000 n 0000195903 00000 n 0000204277 00000 n 0000196731 00000 n 0000204456 00000 n 0000666156 00000 n 0000197655 00000 n 0000203982 00000 n 0000204330 00000 n 0000204509 00000 n 0000204635 00000 n 0000666252 00000 n 0000205940 00000 n 0000209492 00000 n 0000666348 00000 n 0000209740 00000 n 0000217087 00000 n 0000217245 00000 n 0000227372 00000 n 0000218520 00000 n 0000227540 00000 n 0000666444 00000 n 0000219930 00000 n 0000227082 00000 n 0000227424 00000 n 0000227592 00000 n 0000666540 00000 n 0000227708 00000 n 0000235097 00000 n 0000235263 00000 n 0000241196 00000 n 0000666636 00000 n 0000236838 00000 n 0000240955 00000 n 0000670540 00000 n 0000241249 00000 n 0000241379 00000 n 0000250603 00000 n 0000666732 00000 n 0000243354 00000 n 0000250362 00000 n 0000250656 00000 n 0000250782 00000 n 0000252357 00000 n 0000263649 00000 n 0000666828 00000 n 0000254315 00000 n 0000263364 00000 n 0000263836 00000 n 0000263702 00000 n 0000263888 00000 n 0000263989 00000 n 0000666924 00000 n 0000265964 00000 n 0000275190 00000 n 0000663755 00000 n 0000667020 00000 n 0000275468 00000 n 0000284180 00000 n 0000284325 00000 n 0000293312 00000 n 0000285222 00000 n 0000667116 00000 n 0000286132 00000 n 0000293045 00000 n 0000533093 00000 n 0000293364 00000 n 0000667212 00000 n 0000293480 00000 n 0000305800 00000 n 0000667308 00000 n 0000305957 00000 n 0000309277 00000 n 0000667404 00000 n 0000309422 00000 n 0000329970 00000 n 0000667500 00000 n 0000330124 00000 n 0000333993 00000 n 0000667596 00000 n 0000334134 00000 n 0000341068 00000 n 0000670697 00000 n 0000341252 00000 n 0000343210 00000 n 0000350502 00000 n 0000354956 00000 n 0000667692 00000 n 0000352021 00000 n 0000354663 00000 n 0000355008 00000 n 0000667788 00000 n 0000355124 00000 n 0000365975 00000 n 0000366154 00000 n 0000376139 00000 n 0000667884 00000 n 0000367426 00000 n 0000375899 00000 n 0000376192 00000 n 0000376318 00000 n 0000379779 00000 n 0000667980 00000 n 0000377387 00000 n 0000379543 00000 n 0000379832 00000 n 0000668076 00000 n 0000379958 00000 n 0000381723 00000 n 0000668172 00000 n 0000381856 00000 n 0000387398 00000 n 0000387582 00000 n 0000396979 00000 n 0000390001 00000 n 0000397147 00000 n 0000390659 00000 n 0000397300 00000 n 0000668268 00000 n 0000394340 00000 n 0000396671 00000 n 0000397031 00000 n 0000397199 00000 n 0000397353 00000 n 0000397479 00000 n 0000409162 00000 n 0000668364 00000 n 0000402589 00000 n 0000408922 00000 n 0000409215 00000 n 0000668460 00000 n 0000409361 00000 n 0000419735 00000 n 0000668556 00000 n 0000419892 00000 n 0000427162 00000 n 0000670854 00000 n 0000427329 00000 n 0000429221 00000 n 0000668652 00000 n 0000431115 00000 n 0000432702 00000 n 0000668748 00000 n 0000432965 00000 n 0000438948 00000 n 0000439120 00000 n 0000447588 00000 n 0000668844 00000 n 0000439810 00000 n 0000447335 00000 n 0000447640 00000 n 0000668940 00000 n 0000447756 00000 n 0000456071 00000 n 0000669036 00000 n 0000456255 00000 n 0000461819 00000 n 0000669132 00000 n 0000461986 00000 n 0000468607 00000 n 0000669228 00000 n 0000468753 00000 n 0000477213 00000 n 0000669324 00000 n 0000477371 00000 n 0000484562 00000 n 0000669420 00000 n 0000484721 00000 n 0000491923 00000 n 0000532491 00000 n 0000669516 00000 n 0000492081 00000 n 0000498540 00000 n 0000671011 00000 n 0000669612 00000 n 0000498711 00000 n 0000506646 00000 n 0000531900 00000 n 0000669708 00000 n 0000506817 00000 n 0000513125 00000 n 0000669804 00000 n 0000513297 00000 n 0000520677 00000 n 0000669900 00000 n 0000520822 00000 n 0000527413 00000 n 0000669996 00000 n 0000527585 00000 n 0000531480 00000 n 0000531634 00000 n 0000531847 00000 n 0000532122 00000 n 0000532192 00000 n 0000532235 00000 n 0000532438 00000 n 0000532715 00000 n 0000532782 00000 n 0000532821 00000 n 0000533040 00000 n 0000533359 00000 n 0000533440 00000 n 0000533503 00000 n 0000533711 00000 n 0000533917 00000 n 0000534127 00000 n 0000534404 00000 n 0000534473 00000 n 0000534524 00000 n 0000534723 00000 n 0000534933 00000 n 0000535210 00000 n 0000535279 00000 n 0000535330 00000 n 0000535535 00000 n 0000535747 00000 n 0000536300 00000 n 0000536527 00000 n 0000537070 00000 n 0000537291 00000 n 0000537499 00000 n 0000537709 00000 n 0000537903 00000 n 0000538089 00000 n 0000538277 00000 n 0000538495 00000 n 0000538715 00000 n 0000538931 00000 n 0000539148 00000 n 0000539364 00000 n 0000539569 00000 n 0000539777 00000 n 0000539998 00000 n 0000540212 00000 n 0000540435 00000 n 0000540645 00000 n 0000540862 00000 n 0000541080 00000 n 0000541293 00000 n 0000541508 00000 n 0000541715 00000 n 0000541930 00000 n 0000542138 00000 n 0000542347 00000 n 0000542572 00000 n 0000542784 00000 n 0000542985 00000 n 0000543184 00000 n 0000543402 00000 n 0000543611 00000 n 0000543820 00000 n 0000544036 00000 n 0000544241 00000 n 0000544453 00000 n 0000544660 00000 n 0000544869 00000 n 0000545077 00000 n 0000545295 00000 n 0000545510 00000 n 0000545728 00000 n 0000545936 00000 n 0000546387 00000 n 0000546523 00000 n 0000546754 00000 n 0000546949 00000 n 0000547172 00000 n 0000547395 00000 n 0000547620 00000 n 0000547837 00000 n 0000548052 00000 n 0000548290 00000 n 0000548500 00000 n 0000548709 00000 n 0000548926 00000 n 0000549143 00000 n 0000549372 00000 n 0000549596 00000 n 0000549807 00000 n 0000550021 00000 n 0000550243 00000 n 0000550467 00000 n 0000551030 00000 n 0000551290 00000 n 0000551981 00000 n 0000552209 00000 n 0000552412 00000 n 0000552603 00000 n 0000552814 00000 n 0000553039 00000 n 0000553270 00000 n 0000553491 00000 n 0000553721 00000 n 0000553953 00000 n 0000554171 00000 n 0000554371 00000 n 0000554597 00000 n 0000554826 00000 n 0000555060 00000 n 0000555287 00000 n 0000555516 00000 n 0000555739 00000 n 0000555964 00000 n 0000556174 00000 n 0000556414 00000 n 0000556629 00000 n 0000556880 00000 n 0000557118 00000 n 0000557353 00000 n 0000557576 00000 n 0000557810 00000 n 0000558049 00000 n 0000558268 00000 n 0000558495 00000 n 0000558724 00000 n 0000558974 00000 n 0000559200 00000 n 0000559426 00000 n 0000559641 00000 n 0000559868 00000 n 0000560086 00000 n 0000560303 00000 n 0000560546 00000 n 0000560768 00000 n 0000560978 00000 n 0000561208 00000 n 0000561416 00000 n 0000561646 00000 n 0000561863 00000 n 0000562081 00000 n 0000562310 00000 n 0000562523 00000 n 0000562747 00000 n 0000562962 00000 n 0000563177 00000 n 0000563394 00000 n 0000563626 00000 n 0000563853 00000 n 0000564087 00000 n 0000564304 00000 n 0000564775 00000 n 0000564957 00000 n 0000565396 00000 n 0000565583 00000 n 0000565794 00000 n 0000566017 00000 n 0000566244 00000 n 0000566464 00000 n 0000566690 00000 n 0000566920 00000 n 0000567117 00000 n 0000567340 00000 n 0000567567 00000 n 0000567799 00000 n 0000568024 00000 n 0000568250 00000 n 0000568470 00000 n 0000568705 00000 n 0000568929 00000 n 0000569138 00000 n 0000569354 00000 n 0000569588 00000 n 0000569802 00000 n 0000570045 00000 n 0000570277 00000 n 0000570509 00000 n 0000570728 00000 n 0000570960 00000 n 0000571190 00000 n 0000571408 00000 n 0000571635 00000 n 0000571859 00000 n 0000572103 00000 n 0000572335 00000 n 0000572559 00000 n 0000572785 00000 n 0000572978 00000 n 0000573534 00000 n 0000573773 00000 n 0000574368 00000 n 0000574591 00000 n 0000574779 00000 n 0000574989 00000 n 0000575209 00000 n 0000575432 00000 n 0000575650 00000 n 0000575872 00000 n 0000576096 00000 n 0000576309 00000 n 0000576532 00000 n 0000576756 00000 n 0000576981 00000 n 0000577203 00000 n 0000577422 00000 n 0000577642 00000 n 0000577849 00000 n 0000578061 00000 n 0000578302 00000 n 0000578530 00000 n 0000578748 00000 n 0000578980 00000 n 0000579195 00000 n 0000579418 00000 n 0000579658 00000 n 0000579879 00000 n 0000580099 00000 n 0000580311 00000 n 0000580531 00000 n 0000580746 00000 n 0000580978 00000 n 0000581196 00000 n 0000581403 00000 n 0000581618 00000 n 0000581842 00000 n 0000582048 00000 n 0000582273 00000 n 0000582487 00000 n 0000582701 00000 n 0000582922 00000 n 0000583131 00000 n 0000583348 00000 n 0000583559 00000 n 0000583772 00000 n 0000583996 00000 n 0000584216 00000 n 0000584439 00000 n 0000584652 00000 n 0000585077 00000 n 0000585263 00000 n 0000585662 00000 n 0000585952 00000 n 0000586221 00000 n 0000586473 00000 n 0000586723 00000 n 0000586947 00000 n 0000587185 00000 n 0000587474 00000 n 0000587727 00000 n 0000588033 00000 n 0000588278 00000 n 0000588597 00000 n 0000588864 00000 n 0000589131 00000 n 0000589377 00000 n 0000589647 00000 n 0000589898 00000 n 0000590198 00000 n 0000590451 00000 n 0000590682 00000 n 0000590930 00000 n 0000591156 00000 n 0000591428 00000 n 0000591672 00000 n 0000591924 00000 n 0000592193 00000 n 0000592426 00000 n 0000592688 00000 n 0000592927 00000 n 0000593172 00000 n 0000593430 00000 n 0000593697 00000 n 0000594247 00000 n 0000594631 00000 n 0000595654 00000 n 0000595853 00000 n 0000596055 00000 n 0000596273 00000 n 0000596508 00000 n 0000596738 00000 n 0000596936 00000 n 0000597149 00000 n 0000597362 00000 n 0000597574 00000 n 0000597776 00000 n 0000597973 00000 n 0000598167 00000 n 0000598356 00000 n 0000598568 00000 n 0000598786 00000 n 0000598993 00000 n 0000599211 00000 n 0000599432 00000 n 0000599647 00000 n 0000599865 00000 n 0000600088 00000 n 0000600314 00000 n 0000600511 00000 n 0000600713 00000 n 0000600928 00000 n 0000601128 00000 n 0000601344 00000 n 0000601575 00000 n 0000601792 00000 n 0000602008 00000 n 0000602225 00000 n 0000602440 00000 n 0000602653 00000 n 0000602865 00000 n 0000603084 00000 n 0000603291 00000 n 0000603499 00000 n 0000603725 00000 n 0000603950 00000 n 0000604161 00000 n 0000604376 00000 n 0000604596 00000 n 0000604818 00000 n 0000605028 00000 n 0000605245 00000 n 0000605471 00000 n 0000605694 00000 n 0000605910 00000 n 0000606119 00000 n 0000606332 00000 n 0000606537 00000 n 0000606731 00000 n 0000606949 00000 n 0000607167 00000 n 0000607378 00000 n 0000607596 00000 n 0000607809 00000 n 0000608021 00000 n 0000608253 00000 n 0000608468 00000 n 0000608676 00000 n 0000608888 00000 n 0000609108 00000 n 0000609315 00000 n 0000609532 00000 n 0000609744 00000 n 0000609957 00000 n 0000610178 00000 n 0000610387 00000 n 0000610604 00000 n 0000610813 00000 n 0000611024 00000 n 0000611237 00000 n 0000611455 00000 n 0000611672 00000 n 0000611894 00000 n 0000612104 00000 n 0000612319 00000 n 0000612535 00000 n 0000613018 00000 n 0000613233 00000 n 0000613788 00000 n 0000613983 00000 n 0000614174 00000 n 0000614362 00000 n 0000614559 00000 n 0000614781 00000 n 0000615007 00000 n 0000615240 00000 n 0000615465 00000 n 0000615686 00000 n 0000615911 00000 n 0000616120 00000 n 0000616336 00000 n 0000616580 00000 n 0000616810 00000 n 0000617030 00000 n 0000617260 00000 n 0000617490 00000 n 0000617708 00000 n 0000617951 00000 n 0000618168 00000 n 0000618387 00000 n 0000618599 00000 n 0000618825 00000 n 0000619040 00000 n 0000619264 00000 n 0000619490 00000 n 0000619711 00000 n 0000619921 00000 n 0000620142 00000 n 0000620367 00000 n 0000620575 00000 n 0000620806 00000 n 0000621025 00000 n 0000621239 00000 n 0000621466 00000 n 0000621687 00000 n 0000621899 00000 n 0000622114 00000 n 0000622327 00000 n 0000622544 00000 n 0000622758 00000 n 0000622981 00000 n 0000623203 00000 n 0000623429 00000 n 0000623922 00000 n 0000624172 00000 n 0000624839 00000 n 0000625032 00000 n 0000625262 00000 n 0000625478 00000 n 0000625711 00000 n 0000625947 00000 n 0000626174 00000 n 0000626409 00000 n 0000626649 00000 n 0000626871 00000 n 0000627076 00000 n 0000627309 00000 n 0000627547 00000 n 0000627790 00000 n 0000628025 00000 n 0000628254 00000 n 0000628503 00000 n 0000628733 00000 n 0000628945 00000 n 0000629165 00000 n 0000629426 00000 n 0000629673 00000 n 0000629918 00000 n 0000630146 00000 n 0000630394 00000 n 0000630618 00000 n 0000630852 00000 n 0000631088 00000 n 0000631348 00000 n 0000631580 00000 n 0000631813 00000 n 0000632035 00000 n 0000632270 00000 n 0000632494 00000 n 0000632716 00000 n 0000632971 00000 n 0000633201 00000 n 0000633416 00000 n 0000633642 00000 n 0000633877 00000 n 0000634089 00000 n 0000634328 00000 n 0000634552 00000 n 0000634777 00000 n 0000635014 00000 n 0000635231 00000 n 0000635462 00000 n 0000635680 00000 n 0000635902 00000 n 0000636139 00000 n 0000636369 00000 n 0000636609 00000 n 0000636830 00000 n 0000637024 00000 n 0000637622 00000 n 0000637994 00000 n 0000639033 00000 n 0000639262 00000 n 0000639483 00000 n 0000639704 00000 n 0000639941 00000 n 0000640142 00000 n 0000640354 00000 n 0000640610 00000 n 0000640808 00000 n 0000641022 00000 n 0000641238 00000 n 0000641446 00000 n 0000641641 00000 n 0000641832 00000 n 0000642020 00000 n 0000642237 00000 n 0000642457 00000 n 0000642666 00000 n 0000642886 00000 n 0000643112 00000 n 0000643330 00000 n 0000643555 00000 n 0000643782 00000 n 0000643997 00000 n 0000644229 00000 n 0000644456 00000 n 0000644652 00000 n 0000644853 00000 n 0000645067 00000 n 0000645291 00000 n 0000645515 00000 n 0000645742 00000 n 0000645964 00000 n 0000646187 00000 n 0000646405 00000 n 0000646640 00000 n 0000646859 00000 n 0000647066 00000 n 0000647280 00000 n 0000647511 00000 n 0000647722 00000 n 0000647961 00000 n 0000648192 00000 n 0000648423 00000 n 0000648640 00000 n 0000648869 00000 n 0000649102 00000 n 0000649317 00000 n 0000649540 00000 n 0000649765 00000 n 0000650009 00000 n 0000650240 00000 n 0000650462 00000 n 0000650672 00000 n 0000650890 00000 n 0000651110 00000 n 0000651321 00000 n 0000651543 00000 n 0000651755 00000 n 0000651969 00000 n 0000652202 00000 n 0000652419 00000 n 0000652623 00000 n 0000652835 00000 n 0000653056 00000 n 0000653259 00000 n 0000653483 00000 n 0000653696 00000 n 0000653911 00000 n 0000654132 00000 n 0000654356 00000 n 0000654565 00000 n 0000654783 00000 n 0000654994 00000 n 0000655206 00000 n 0000655418 00000 n 0000655644 00000 n 0000655863 00000 n 0000656085 00000 n 0000656296 00000 n 0000656489 00000 n 0000656682 00000 n 0000657132 00000 n 0000657299 00000 n 0000657614 00000 n 0000657837 00000 n 0000658087 00000 n 0000658351 00000 n 0000658590 00000 n 0000658850 00000 n 0000659113 00000 n 0000659386 00000 n 0000659665 00000 n 0000659908 00000 n 0000660145 00000 n 0000660397 00000 n 0000660654 00000 n 0000660893 00000 n 0000661175 00000 n 0000661419 00000 n 0000661644 00000 n 0000661904 00000 n 0000662140 00000 n 0000662380 00000 n 0000662637 00000 n 0000662865 00000 n 0000663094 00000 n 0000663330 00000 n 0000671274 00000 n 0000671332 00000 n trailer << /Size 881 /Root 879 0 R /Info 880 0 R /ID [] >> startxref 671671 %%EOF Tix8.4.3/docs/html/0000775000122200012240000000000010767576212014304 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/html/gif/0000775000122200012240000000000010767576212015051 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/html/gif/tix/0000775000122200012240000000000010767576212015655 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/html/gif/tix/oop/0000775000122200012240000000000010767576212016452 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/html/gif/tix/oop/arrows.gif0000775000122200012240000000230207426315545020454 0ustar jeffhjeffh00000000000000GIF87aÄPòÿÿÿÃÃÃqqqëëëÓÓÓ}}},ÄPþHºÜþ0ÊI«½8ëÍéè`(Žä7šBª®l«~n,Ïtmßx®ÇðÎ(ߪ',Èä‹€*šL¥tJ¥‹Î¨ñZíz¿3®/;šÏè4!Ín»ßð¸|N¯ÛÍëû ü\’þ€‚ƒ|Zb5‰`Œ<‡7‹a‡dK;’Ž™˜—”A)œ.¢š¥V6¤?Ÿ}¡¨Š¯¦²UªCZ–/ ˆ±“³¿_µ¹½ˆÃˆ»Â®À̧ž*Å{˺­¼Ï¥Ù*ÙÝßÛÞÚ)Ýâäáâå`ÊÖ)ÑÇ•ÓÄ…òŽå÷ÚÛùúáàçÿæ{Å`Ô­0ð’”!­,|+ÔIäb¦DQÚ‚†þ°^<‡ïê5Ú°¤@ãÔ¥s„1”AŽ V#’ÇÍ1FUNäÖOŸ7<74óÒ]G‡ÈfëdÅ’;Ïñë”;šG¯|¼ºTJNt@ŸŒªrà5bYYQêÚ‚]‘”«ò,+6ßE¶«`ò¹öl³¿[ðnt‡ïàn+™J°á›KÖÁÕ¯5zjêÙ̹³g9šé„ž3úÁçÓ¨S«^íÙA²bËžM»¶íÛ¸sëÞÍ»·ïßÀƒãžùZ¸ñãÈ“+_Μ8qæÐ£KŸN}¸Ú2Õ³kßÎ=·óOÝËßüº.òèÓ«÷n>ìõðã“ÿŽ]¾ýûÕéŸÇÏ¿þrýîù'à€¾ˆ &X›@(è`‚ ¾—[Vhá…*‡á†jÈá‡z⇻E¸Ûˆ "Šª˜‹ºˆŒÊh!õMpØh…<ú(¿õèa%¶w nDÒnF¾¸c‘B×doQÎ8ålÚÜ–åÔ€Çä–²uiÛ—?’É¥—UwelOBÙæoo`fmhÚfâ˜Næsæœ¾Õ gœ´åi¥šÙäf¨›jÚ™èŸI⸟Ž\îC¨l‹ÒÙè —Æ–i dÞ ©”µ‰:Û§±íI)§– ho‚:ú(¦¯òÖ¤ŸrÙg§´Ffޏié>§ÖzâŽÃþÛ+©²&K(ª¶6jê²ìI Ÿ»²y¤³¸í±Í:KíquNëi­ª+í¬®nËí¥ßbûî³ÆÊËm±¾º÷¶•òz®®¥šïªÍ*Z/Áââ«[º·•Ë®ÂZÞ6íÀêök0Àá>ì-ºJ6Èo™ÿËlÀ£F\éÅ#³ê/´Î±n¶%“»©Ú¦ 'Ê&[óm ¨áÚË:ãypÅTbÌÅ oê¯Èì5PÜÇG4’6m±æºpÇíÛÕµe]sÎXJõÌZWûë¤^—m´Õf‡öØ2S­¶¾bêØãÞ|÷Ý·‡~î7à‚7m^x¾Iå¬â‹¿¹à“Nxå–ÿ½µµK>èy .:|¡nú|\Ÿ®zz¥¯îz~©¿.»v­Ïnû±ß®ûrµïî{o½ÿ.<˜x;üñ›¯}-òÌ߸!„D/ýôÔKÀ¹ Õg¯ýöp.Db“…Ù}ï˜øè¿Å.æ§ï~à+Åùï×&œ6kü÷ï¿ûËÌÿHÀ ;Tix8.4.3/docs/html/gif/tix/tix32.gif0000775000122200012240000000040507426315532017311 0ustar jeffhjeffh00000000000000GIF89a ³€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ!ù, ²ðÉI«½õèÍ»ÿšt,dI£Y¢ê*¶gÚ²0ðÖ²JÏ÷œ›;]O÷[OCàq&0æÒö˜Z£T`Ëíz¿`„„"ƒBU†z­nð8œz`³Ý1¹œn_ã¥zq|} (s"„…Vˆ ƒ}†Žv’”Š„—ˆY`žŸ]bUf¤ "”V ª«ªt¨X¬¬®œ©²­§µ°·¸U¯8¼ ´’ÁÃzżÇ{¶·žZÐÐÔÕ;Tix8.4.3/docs/html/gif/tix/tix32.png0000775000122200012240000000164307426315533017336 0ustar jeffhjeffh00000000000000‰PNG  IHDR TgÇPLTE€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÙuØÄ pHYsb&2IIDATxœcø¾—£€z†ï»€Nð”ÀÐq);œºô @´Ìþ Â¥ …-«€€ À.å€ý èÉ6}ˆê‰IEND®B`‚Tix8.4.3/docs/html/gif/tix/hlist/0000775000122200012240000000000010767576212017000 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/html/gif/tix/hlist/dirtree.gif0000775000122200012240000001132507426315542021125 0ustar jeffhjeffh00000000000000GIF87aÿóÿÿÿÿÿÃÃÃqqqëëëÓÓÓ}}}<<<}}<óÿ‚®Ûç,ÿþ0ÈI«½8ëÍ»ÿ`(ŽdiN@ª®lë¾p,Ïtmßx®ï|/§ pH,H 0(8ŸÐ¨tJ­Z¯Ø¬vËíz¿à0xÙK æ´zÍn»©è6ìØïø¼^ßûÿ€‚ƒ„…†‡ˆ‰‰hŠ{s?uy}“–—˜™š›‚Œ™tš•œ¥¦§¨¦ž˜ ‘¢Ÿ’©²³´µ|¯¬L±v¾¿ÀÁ¾NÂÅÆÇÈÉÊËÌÍÎÏÐÑѾx­»¸½ÔqÛÝÞßàáâËÓÛÖºe”oëìíîïðRç¡êФ¶øùú÷†«‡÷×ÒYËÖ—¾ƒOñ+ä¯`¶€24˜°¢ÅI IÔÈ "Áþƒ2êKq‡äÅD&i‰ì„KË€è"œ8ó`Ê”zpjÒ‰‡çŸ )r¼#ÔÚËŽ1?Ö YПv²øóÔŽ |+­jÚëèäõqMuõfÔ$_ M{vjÉ9ÏÆ½j•îZ¹*ÇþÙºô¥×y®Â"ÊJ–íÛºw§–m ÷­ÝÃPí6¾‹U¯¾Zÿ¾;hÍNMJf ×li¹¢Qã]KU5㺫eeŒr¹eß®½Òëlg,е›EÜÓ5dÄ8u>M­šråš’~;²9÷×ÝG=W@¸ÔhØÄ o{²s¨Žçæ›ýJú-í€ÜÃÄžÛs2à³”“þ{\@åþ‘šÎÂ^5ÓÁ·p öeR ¸kÇçSUö‡sëAø^o·qÇ gÙ‰"'¦G¡x«qHáx6§!¶tW›‚—Hw'ÖÖã&§©ÈÓ€¨_ŒÅ96Ü> 曎ñ6X“'UY¥ ‚xŸu€aã CV†)æ^T–81È@饔þ8æ›Lºù%M] df›pæ&–Ny]”GQƒæ8„jè¡Æ úL9Ðè ¢F*餔v£¨Gg é¦œvêé§ †*ꨤ–jꩨ¦ªêª¬¶ª);>âꬴÖjë­¸æšëuFD€¦+ì°Äkì±È&«ì²Ìþ6ëì³ÐF+­³Jûª£knì´Üvëí·à†+®³TKÅT”k¯›Åú«ãÆ+ï¼ôÖË­º›¢;…¾R¨Ë®6înËo<lðÁNH`n¿Cá/¶vj#0ÂWlñ sÚpÂðNñðŸÙJ o°n¬àE §¬r¿øËòµQ|ÜëGï Û ä¬@[ ¼òÏ)gœo¿CÇ óÌ”ÔLr1\³Î9ûŒÏ@WM±Ð.;Ü2ÑëBìëÄL+Q… VPmõÙcݱà ?!s»€ŠlsØ( 0öÓPç½sÙh÷vËk0§Fw rÄÜ)½ñ?ØME zëm6“ûm¹þjó«ö¶n wȉƒM9ŒWîä‘Cmz«_» 8çŽô9¢?AÆ ØLzêQýúðlÄ.øæ›vnûçˆË:òâ¤;î;ÞÀ¯Þ:ñØgaüì ¿ pÜ¡?/ãLH?>õ©›~}öìW;òÖþoâ‹O·Ö£¹úí÷ÏÅû¥B—÷è>çÍr0¸ðtÆ?ÿ9𠙃áØ ÜÙÏ d{ ÿ¸àY$‘Ü–Æ©mð„Z0ÞBX¿®Ã„(Œ¡û:(Ï}t$á ×'CF06$ çöðˆ £á©<Ä jë‚;D¢eW-˻aþóˆØ#ÞMS^—ÈÂr±„Ê-†<Ý!7É:62ÒcŽìcE>Rl¾»dðG9N2í“° %©âè5šIÒŽL`A._ Ê½±Ò•&s%,»ÀÇYBòkP)–ÁЬ˜×LhÒnù3Ozt =§H-¸Î’žÔý>µ¨Ï:ºô¥Ké=WªÎͤ8-^L=5S!Fr¡? êÕ†zÑ,µ¦~ód0{¦…E"Q§ͨIº26RϪãËP5ˆU™ò”ŽQ­jÅÊÖa–•¨g-¥Ooê4ðí•& ¦øÖ¦Ê‘”9´iWÅúPpúL¯-XØWÅ5°iZaáÎhÆÓlc#S«Õ?"µ¤5˜¬<©XŠšV†Í×cÏx6ˆ6¬¤½ì+¯ºYÕvö¨-¬d/Ùº"P¶Ðà¿9\{/—xÌ›vC]ä¸m´©«cÁ½ZŸzU'ÚVìžl½ýó:£ÎsŽöLui¬ÜäÛh.VÅþv9ÖñûSŠ{S¹ew®Énaôúörj·Ø—n0?Ï‘2¨ëiç‰Yì6Ùé-¹ÎGöƒ=º’º»®‡G [`W³Oÿ:Û;ßxy»Ó¼ñçé· CEÞ½Çy×|Ò÷Ìì\Ç@ô¿-<åÍ.ÑyV-ñî[=ã †kÞéšÀw0egø ÿlÈO—ò^>П.ú…—ûô+Ï\ïæ鋎2ë™ïz.°·f>õMøóþ_}óY_>Áÿú÷Ë~òtç\ô·Gö§z{ÇhúiÆ4Ñ'~ñ'Lä—X—×Ùç1Û§`ñ5\7C©·v¨~ ØxøÈ5øÇw­5‚îP‚…s‚Y*ˆRè.‚0ƒ˜3ƒŠwh38˜D¸ƒ¨t7˜REzÅ‚l3„¼‡å5q‡„S%LCx죄ÊSƒDxk~Ç€€75–W}b8{Ùƒ…ò³{¶æmw>QÙ\chtƒ~锆%ÕM^è±·\qØp™G‡ùô‚·†‡–{’7=˜Ev¶çƒ¥ƒÉÇ„vØUÍö|+~'ƇpHPþc†‚Ãw¸†þyX=çu}ê‡dˆ=œ¸xÜWý'в÷Lå‹içˆÚ‰Ë6ˆ Xˆz8~ VŠœT}퓊ž(‰¹z†XzДHŒWH‹h‹ÝZ/à~®ˆ„¤U{„7…ÁèŒ&ˆ†·Øƒb%_?x º¢n¨´K+T$ˬt ÝeRŸw¤æš¤£'«p›f»ªT™¶ê{0`‰[Ê·ßúC `¯4²w i‡¸½x}oû±G£¦µ˵j‹·X ¶„tŠ£›ƒæbE³«¹hk´«ë¹+­Á7y¤x¹þF»È&®© ³EÊŠ­Kµf9w|[Ÿy7Kd»è ¹u5›¦ãļÖ(ƒÝsM©z­{¢Ôk¼›Ù¶éªm÷´4Ä ²ªË¹*þÛ6ÈCBë+¾¸ë¾euD%¿Ò›Ÿ=[µïKö7¿Ek¿LN^§1 #À›Û¾ |œRE¶ãuø²1 |»L¾? ‘ßœ<½õÛÀ×ëK>{Á¤;ƒ´“ú´eµ„d½#Ì‘Ê)²˚åRGÌ¿ã;6Њ§ëI…+¢Ü•´¬ƒ>µxIÄJ¼ÄLœAhSîÕÄR<ÅT\ÅPE@$¤º²Å\ÜÅ^üÅ`l›`<Æd\Æf|Æb|Æj¼ÆlÜÆ§’ÆnÇr<Çe|‚Å@ÇxœÇz|+O ¡)Ïc/‚<È„\ÈÝb+°²sÿs¨_œ³¦¯8@»6¾¹™¸j¶DµGðËÁ,ÀÐ=Ò0ÔÎÇ¥ò¼:ÔÁ¯^•Êêñ¶ T³濾êRì‹›™>.õ;·¤Y¾x×"80¶¸KÒu¬³²•·Lë.쉲åÏ`âMfV4èÓ•Gç•ef¹(¦³rJ«ª¸’À*tŽšž˜}›æ°¹ûA‘­Bþwd±Þ ìšò­±Ôf€ì}¾(fµÜ"'Ù^Úí¸' +é¹è¦®¬ä¶Kä“*WÀºÎéî½ +ݼÌÊ.¾k otüÂêo½~ Ë'± 3¬pà G ñÄWìðÅ[œ1Æs¬qÇÌ+½k¨€(§¬òÊ,·ìòË0Ç,óÌ4×lóÍ8Û €ÈÏ "Â9-ôÐDmôÑ-/‹\Á#÷k©¬HG-õÔTW ³ÒêÅ ¯Ó¤JA`Ì»è|²Õd—möÍ;oM0É¥Â8¶Ëoë,7Øg×m·Ìi/­µÞ\ÿZ@Ü,>³à/Óƒ÷݈'ž2Ö0îußÚ:XxØþ䣲å^øÊ˜c~¹æ({~2芗î2ãL÷̶×7Â<6å°¿xÜ„‡~ùí•·L{è²óî»éÀsÎs¨«{ç¶ë¶§ü:îÊÓ¼{àºGß|îÓo}Þ¯ 9“µ'ÿüóŸS7ç ×.:îà[<êŽ7¾=Ô›Sï=ó™Ç_¿üp/?}úê—Îþ¾ÅûZü¾G?èï€ÝÛú Ø¿ÄaÏ}Ú3ØÓ€6ÀÞU΂ÕÃçè§¿ îÏ‚ük â˜:⽂¼ øTH8ÏIOy¤[!ïVx¾ Šqÿ‹àÏJÖºúð‡EËaÓ$Ø5ãIˆHLbÍHØ>Ÿñ…JŒ¢/7¼æ8ÑþN<üÛ·8E!ªî„YtÈÆø±2zìŒK#ѸF5šÑlÜE™sÅfe1`xÄÀ—SǃÝ1€ô’Ú†¸Ã¶Ù+ˆ|UöùÄ?&ò‘Š„ #±hHLk—|R&ǵGyp[°U(1 Ê”’§Œ@*7¥Nª­¬;$V©ÊPn’•… eØTË'¹’oDô›Ô”MñZ´e1¥UÊe¦éOb̤3M¹Kb“™Æ„¦´LðËìÁÒˆxã´lµJrâò”æ„cÄfÕ¨]âRQè<çGÐM~SD£¼­ÒÉNL¾óŸý짦ªKRÓñ¬@34È/3rþáD?‘)e²)•ÎLçDŸ™ÌjjÓ”=çB;PÏ>NБ¤”èH‰uP„T•/ÝçJ׉Pø “1Í黀9I;Vr˜* ¨;mÚË‚êTŸ%ªRÔv2”§½'(- NeÎt¢15¨ºÑj´¥û|ØLÖP>T\ùÄ&E]zK}ª•¥kå¨V³™Ô¸ÒT®qí*IËjÅOÊ’x,©_ IÁ‚ñ§„E¤aÏú¯Är±Rý«cÝÙF"v²å+‹ÙV/ƒ{¼U‚¬ûïÄ^ ®SÁÄ}«–§[âi^ÒËæqoóqSv¢ ¼Ì(•9äÍÙ¹§%WŒÑg9[Ù›6r){g{æÎ{®þÖœèn º^…nסQšhA÷Ù¤Íj£‹µháN:W•q„I9Þ_™Öóƒ‡û\Ø–øÓ,ZdTÿ,é5ŸZ¹ãíôžC hïj¹Â[Viš„æè†´·£msißÜêZ!¹Á-ï’ýØG›v©@¶*r¥üd%X±ð±%«cîRØnñ{ÕœcYsë[lÆòË S°²¸ÝKvµ—vgTÜAæ1”“|ïhE0Þ¶€çÛU&CLÊbÝ1j^eÆ"Ú·àŵÄÉìã3ƒÔ×Å1¾ÐM^Èɡ֨~Ç##88@Ô!WÕÈA½#È8å¸2—ºfno˜wjJƒ´þymžª]õLiêæùÍQÔ³^ \èž•_t¤ NVÕÑî¨AÑLSõÌo›‹+ª¹Æ;Àu®ú[aŠ‘Ø»î²S=Õ üÚ³nqëF3٠ݵ4»{ë1ó×}×&¸g„n$YIÝm¼%§ß^«³àÌÖ(³ƒÄqõ$iêøÎª{o Tó¾ö¸ý%Ž«ÈC˜'½.ÊyoëÛÌõ;»µ;`…/—á XêîÈÌkœõµ=<[¿&kóÛñ¾/=îpH¿Òüùоô§Oýê[ÿúØÏ¾öi¯êÛ<à¿øÇO~ñHµüèO¿ú×ožo¾’ }?üA} „º æþb°?%ëïüû úGhÐÿW€L€µÅ¸€ €€–BÄ!8(蘸H ;Tix8.4.3/docs/html/gif/tix/hlist/hlist_ex2.gif0000775000122200012240000000417607426315542021376 0ustar jeffhjeffh00000000000000GIF87aË£óÿÿÿÃÃÃqqqëëë}}}óÿ‚®ÛçÓÓÓ,Ë£þÈI«½8ëÍ»ÿ`(Žä8”hª®ìu®¯ ÏtmÏç­ï|ïÿÀ pÌkƒØ‘f\:ŸÐ¨”×t&%ÑêtËízq„¬ò©ýšÏh_™x ã’ð¸|N˜Ûïø¼~Ïïûÿ€yuLc/-Š‹ŒŽ†X`lni–—Ck=šT•ˆ‡œ;¡˜¤¥£7§6UmLž@©¥±g°­”‘ž´“²5K½<À²¹2MºÅ ®?ÄSÂÏCÑ6Ó˜ÍÆTÈŸ’ÅËjÞ–Õ^â—וàÅÚ¬Ú¯èf½ðоÏð¾ò2Âôñøóäfæ3Üêv«–Œccé»w/Ÿ=‡ü"Êëg¯œ7 ¨ÎeK˜Œ"þ¢Ø]Z!D“+Î iñ†›H@ꀹJYÀVÔ·“"Jû miãeÆ›!9nÃuNÈ4,ƒ›÷“WÊ•*-­Ó êlfr7N%D³S’dIT¶¤9ßxHjíU‰vñöŒE÷+ΚsÉ-uv¯^¬X£fÕ*X•LTaÛÚE™T_®w"3\¹3š¾Ep‰uÛØ³é# ÛC3¡×°cËnM;h׳sëÞÍ»·ït, @@¼¸ñãÈ“+_μ¹óçУKŸN]º‹¹Ã«kßν»÷ïà‘cÇN¼€ùóèÓ«_Ͼ½û÷ðãËŸO¿¾}øÄÇ‹.ÿ¨¿ÿÿZþ@~·í‡@&¨à‚) ˆ€~†ðÇà„V( «%#¡…v ƒ¾±¡õ€€‡(¦XˆFx  £'zP£Š8vÈb†ŸlãŒ2Þ¨99áŽrˆ õ4Y"D)å‡&éâ’?©e”p9å—Ž Ù‘’$ji¦—^‚©¦"b.ue™f‰æšt†Yå˜o2§œPÖé'›wº)â‹zîäiþ©(m®£!¡YîÉe¢‹VºA£ d‡¥¡‡Z@©¥ ^ø`‹ƒb餓¡¦Z¦äªê«Œ°J&¬´¶ kž}Öª+·–:ä®ÀfÐë£KæÊd½ˆì²Êþ6{¬³É>+í§Áª0l®"ÚåÜvëí·à†+î¸ÜR[- ×&1¢§Û’ëî»ðžë_ºšþ:¼øæû­¼ýÑ»nBz[¾è ®¹üŠào¶ì’Øm¤ã±Á'ÜÈÂÅjëð‘ ïÄskñÅ:ŠmÆ KÀñ©MŽ1È\îÊŒkÉ™þ #sJ£Ë3?tнTl³­8·Š2ÀÛv|¦¸1 <´ÔF½ÆC:é3ÈTsܵÌ^wk5Ò£ò¨.ÃLßëô–P í¶À/{;6 XgðÚr† s×TÃ<·µIÏjlÁxÏÈõÔEÓ6ÑÿÝ`à¸jÌdÏœ¾x¹þEÇ ÏÛ5;Ž.ä¾ÚÍ3Ë-‡¯ç«‚N¬½*›îú·£¾¢ê'³nùëÇ.ûu4î§ïBï’ŸíñÌN›<òÐ.«»ðħ̺ð*FŸöÏSÿŸõ;s½öýÒ~öÒÝc~õâ×+º÷PÂc¢ ÆK>2÷]v0)Ÿ6ÂϤüÓO¢ýž:S€¬ÝùoìƒéÜ—+!ÝèIû;Þÿˆ@ãE«Z¤‘ ×)9ðõ“™WÁä+ƒìÒÖ×½I•ïƒ,°Pè=­UŽ…!<ÖaˆÀ‚ð‡3LŸÎr8½BjN@Œ’sÃqW44ŒV(=¶ˆMLâþ¹¢XDÒH~$Ìb—§E m2\Ÿ o(=ö‚ÜD(ž‘|O4–²ø½óu€‹jô#‡©GAVˆü3ä‘îXÄB*’Aˆlã#ÉëM’Œ ¤&/™ J¦‘“T*›•BçÈDî1v}¬_*?©(OæÑˆ_Ì{8ËP¹²Ž°ì`#E@ÇZ‚ê–´Ôá×ÇC8N뇦w˜*`nмb/Cå5ïšÁ\”3Íë‰Ñ’q¤e/ØÌL–ÒS6<"‘9Ç–MOZ%Š€@6¦ÌŠÐr§8q)ÂqjÓœ¦ô^7±ÈJ:~³š>œf9E‰'R{c>þúÎåYt¢¿¨$íÑ`ºïí,£2»DA7&Kž¢'ÀøˆRNª””Ô¨%aš¢—Ò4”!ZÝ&o:H™²’§‡ôé+J!›õF=*É*(ž3™ Têð„ÊOˆ} M-=!¦Á]J•€d)VIм²fÕqaíèɈM¢¦ÕžÞ”f6šÁtJjpMBæWyGUD©5œqÝ+XûZOuV±x?å {×*²Õšt%,7áúÄdšUª‹])K7Ér“L5Ùø>‹£ÌF•´€ mÎЂ³~Ö´RDmjsZ;_ÊösªUšþnû¸Ü ®®å,l½ ÕØ’ •ÁgÒìþ0Ä÷1ac=-/í8ªàT@}(P¢¥;ӇʲV,º®nm+LÒ©1ž ´ì7©“R—¶£%¯£F’:«„öa[i5\MÎwu¡HÁø^R9¸vËkPÄuÀ°ê¯þúJÀꓟÕ•„9JYëU•2Ä'>_µavXœežë Yðz¶µÝ`I/»Ïeö£6v[ VÞÎη‘óñ"ìP!ƒ¾;6rL‰|`%+¨ÄNž­kå'ß1Xβ–·Ìå.{ùË`³˜ÇLæ2›ùÌhóÃÃæ6»ùÍpV’ãLç:ÛùÎÎAr•=d¶=óy”d(Íiý;A‹âKh¡=E#Ѩ14£'I£Òœ¡´¦gaiU¼ 7¸ù¨GMê=„º6¥NµªWÍj?D;Tix8.4.3/docs/html/gif/tix/hlist/hlist_ex3.gif0000775000122200012240000000357107426315542021375 0ustar jeffhjeffh00000000000000GIF87aÓ˜óÿÿÿÃÃÃqqqëëë}}}óÿ‚Ç×ãÓÓÓ,Ó˜þÈI«½8ëÍ»ÿ`(Ždi fª®l›¡+,Ìtmß4Šï|ïÿÀ pH,ÚtÆÚ@–̚ШtJ "¡K‰ôZíz¿`7™}FÇá´z=DËÊ¥|N¯êø¼~Ïïûÿ€‚ƒwƒqZN.‹ŒŽˆf3n>•l˜™m“B—<\pNoœš¥¦–¤@ž; L”©?«§³š²7¶Gœ¡¯£´;IÀ=þ¸J“¢9®Ç°¨ÆÅÓÁFÔ8سÈÌДÝÇÎܼÆÚ`ç§äÏ4ßÇá»ìDëUÀöÕø3öÖÅýÖÕÔ†ÝÛæŽ•²‡ÊQ§lC¸SƒùË7‘"¿‹Ó±qCAÌÁOþð¶CøÐTD}õ]TÉÒÆIu°Ì$Ì5¤Bq‰º›IÊK€4 m©òßOSÁÝúÈ*dNyÞø”Ôôs >‰)]®$Š4¦5›ÞŒ·®§lÿµ:´åÑRe™Šqª« ØY/+fͪW#¦¸açŽ9Ïnš´FXUm×^3vÒMYšåL€#Kü4óåÏjæŠ @¼ô‹n«êŽÉn I¾«ã¼ôz pÀäÚ{oÙ.±- ±Nð­–†<0Áãüf¾qÞ ,¥Ç oÁ¿û°=Œ·¯°¦ÓérÇž¦XnÇ"›\óɧ|)Æ.<‹@;lrÌ×lsÉG‡[´Á:c°²Ï"px#“Dƒ2Ò&“|õ·M›ð´£&ý²ÀU;ðÄEg½5Ê]Ês¦P‡ ¶ 0{švÒxßMó»m×úv©-o*Ùv›ýnÇ{_½tß"|ýëϧ 1žz+}òÙþZã}ãÿ½/²ƒ ì1Η¾9ç 8Žk覷.1êøV(£¯«oúì´·W­î¸7 »ª·û»®Áó;<­Åƒ¾¬+/¥çßã¿tÉ´óBO;°‘wš'l^ýÉ—È)³£;i¦µu>«ìø jo,Øæƒj$Ñêó.¨þðó*¿¶ôcØù”„?NñÈw.ëðþ§°þ¬}M¢šÝô„>öÍMñ“£æ÷¸¨ prj¢àþ®”@ n |´Ÿ™ (¸>ª„â ¨B$±„½K`îLhF­{+œ` !h$h½‡Äb Ë 4º#"Ñ>

Nîé ¤Ux@‡ç[ã@ùˆÑUò…t,qXJDŽÐM¬ŒùØBUÝÒ”³¬¡*ÄGþh—Ôæ)UK¶ð—`Ê%„i¨Tîn“Ëj¦þ®9ÌIóAÔüÔ3Ù;Y“y˜”$g'É65±›ãû&E%ÏyZªžö\çØÁ| Ÿþüd1ûPä ´ (B¿¤Ð…B©¡ýDþ#ꢉRôC½h‡2ªÑ ´£³â(HWùёҳ¤&½'JSªO.n¥•)L!Ó™öi¥6mSMsê‚òôb‚ÌØKMœH>=ª×ŒªÔŠ2µ©}*T7*Õ©z4¨YÀC­ ¡Ùá[å*IeW¸S¬]­*Z½©Öµ>«f%¨[ËØÖ¹B±®veDRóê4¼òUQpÜ_ÇI~öA{=ì«Xùµ±U|,dµXØÊu²*p\6ËÙÎzö³  ­hGKÚÒšö´¨M­jWËÚbšçµ°­lg Êz‡¶¸Í­nw;Ûb6Bû„Áo´O25È]ƒY\5Š…ã&÷¹_Xî Ïà\èZw Òjs¯ËÝT—0°n†CÞòš7ã5DzÏËÞöº÷½}ˆ;Tix8.4.3/docs/html/gif/tix/hlist/hlist1.gif0000775000122200012240000001631207426315542020674 0ustar jeffhjeffh00000000000000GIF87aÄDóÿÿÿëëëÓÓÓ}}}×××UUUššš aa ,ÄDþ0ÈI«½8ëÍ»ÿ`(Ždižhª®l+p,Ïtmßx®ï|ïÿÀ pH,Ȥré ШtJ­Z¯Ø¬vËíz¿à°xL.›Ïè´z½u:×¶|N¯Ûïø¼~§ nO„…†‡ˆˆq‰ŒŽ‘’“”•–—˜™š›œžŸ „‹€oƒž£¡¬­®¯°±²³´µ«›¥PŸ¸¶¿ÀÁÂÃÄű¾™º§‚½©ÆÏÐÑÒÓԠȘʨ‡¥ÜÝÞßÜàãäåæçèéêëìíîïðñòóôõö÷áñ†ÙÌû|ÿ H° Á5ûLió‡ÍYµ‡#JœXéZ$‹pñãÅðFŠþ CŠùë£#“4*ìW%#—$cÊœI3£CJ09Üx3ç¶›5…Õ ãWÑ Høìx` S¥+9¶*iiÒPC‡­µõêL«¢œ9špWOªÑz•Õµë&‘bðÈíZi`•нõ”çφw¹µ{é(aCEk¥˜ZÞUjEõzpcZv·Î@,—㊠%þ,ºsiÓ Q§nûîiî__žõxïÉÉfÿvö¬ÌŒ5NºÐfG°'O­¼ôiçÌ¡ÃÞ\:q߯,Jyi;%îeR{ïæK;,àÑ /¾z9"÷ªÓW_^øû嬡›‡¥]r"Èä‰þ' eº5 ^û¹‚ž|£ÅÆÙs„ÙÇYq±­'ßs¯µ¦áq&ÈJJqWHd!–7`nL‰cÎSz‚^~¡]ß ‰DH—„6RWŸŽÈ±×b.h©h€ˆãÝf"T(‰‰?V2ÌÅød0’6Úƒ8j¡–;R9_“œÔ6â*%)`EL‚׆\væÞ„¢Ú•ÖaŸŽnò˜%ž>ªéQšÿu÷Òw )9I^~*Ç¡¢¬)Fƒ~ô=Øž•:Øž¢˜Jxé„}&Цey¦_, ¨§T.'£<Êà”“rJé“n9Ÿ¥–¢j‰˜Ezw$©†Vuª®Ä; ¯MC(Kgþ.iì³ÐJ„ì§-Xª°Ñf«-4Ó:[­™zÁ#$>ä–kî¹è¦«îºìÞ3.;﮳STíÖkï½øæ«ï¾üöëM¼fQˆ lðÁ'¬ð 7ì0UXûíWlñÅg¬ñÆwìñÇ ‡,òÈ$—lòÉ(§¬òÊ,·ì2ʰ'¾lóÍ8ç¬óÎ<÷ìóÏ@ƒóÌ×ôÑH'­ôÒL7í4Ì2Ï ®.OWmõÕXg­õÖCK ^O€l-öØd—möÙw]Ö×Û„öÛpÇ-÷Ü.«ý-ÛeÑ­÷Þ|÷-·Ý'â=±ß„nøáGޤàF#îøãG.²â4#)ùåþ˜gþ8åE[®ùç ‡þ6çS»-ú騧Þ4éŒ{®úë°ÇŽ3ë…6Îq̸ç®ûî¼÷îûïÀ/üðÄoüñÈ'¯üòÌ7ïüóÐÇ|ññÓάë·G¯ýöÜwïý÷à‡/þøÃ0½è§/@Ìê§o¾ÇÖ‡‡ýÆì·oÿýøç¯ÿþü÷ïÿÿ  HÀð€L h? œ¯}¨«µµÕn~i#7ÈÁzðƒ ¡GHBþ9ÐbœàR¨¾÷u,~`saöJHÃÚð†8Ì¡CxбÐ}û!údH¿ Þí‚TƒŸwÈÄ&:ñ‰PŒ"{Dº°$Zþ鈘A)zñ‹` £EHŪ°Š-Ì¢×hºÞà Ç:ÎqŒxTŸãØ>>æñ`,ãËxÆìi±uI|áÑwGý5r€¬# ÇèGH’‘¬ä$7‰@A¦ñCT£¯—H7Úï‘øCeQ©JN>Q“­, &]IËzrˆ\À'yH6æcìc%í¨Ç8“‘Ƽ¤0O KV³–œ¥%19ÍK>Ó’ÄT&6™LiB·À/YøËé1p¾¤`*ý(InÞÑšs¼&2™™¾v²óžßô 4ùÈÏaö™ÿ¼ç?±™ÏoÞ²Œ¢{IÊ6qó¬ç@þ#êÎYªòîŒ(A ºÁ}R–z¤f%Òir´–½](ºÆ†–…‹Üh$'*SÒs™Û$é6åyÒzÔ¤Í<æO7úÑžÒÒ“½ØJyÙRù•ò¡9¥¨?5ZS‰ZôªÕi,êÓ7µ¤#=¥N¿ÊÕI"~âå]ªÎ¨VU«S%ª6©*U|µ¬ ü)?ÃÊW°FR¤xÍãY_˜V–ŽÒ©í¢[1ZLª26«8«2Ø6³ž€5i_«9V Vö‚L*Æ ËÔÃÆ°­Ù¬¨\ãªÚȺ5§­Ýêg÷çOvfö±ðÔln5;Û0†–x/õá9—N%s®×œ©FçþºSæBÖª²ímþö(VÞ´¶½.f¥ë["ÆÁ âp+÷TÅr÷¼èMïÿB µ¢“­ÆU¯|çKßÐ -¼+oçÊ›±`Ò÷¿®¬}«‡_¶­Àß °‚|Tïâw…f(bÌà [¸ÁÓ{0"ÜÔÓÆ÷ qw3|_÷¾Š±ŠWüÄÃæ=p[YLãÓÐÅ/„ñZ'—xÔE.µ)ˆh¡Bz™¹i•uMÙDC{ÛbÄö;¡;ïí^Ûu·u¹ ^oØÄ`¦°ÙýÆsßš±¬½4\‘ ÙÖÒÒ¶Ãt¬µ%{[-[œßVõ‹.gÓ–à7unr•Ûld3<ªw%ÄK RÞ®š¬0+Æû­ñsœÐG&ó£ñìiþY¯3®$µç«ÏðFOúg9Ñýjr^S{æù¶…]\SßyçÚMõµIôX;šè5z´½˜te/ÝÞZwºL¡uoÜO7T>ò*?W˜@öÈ}¾Ú°?»–eiºe.tM_úålÏx°¿]ZRË8ç‰ç.¼#¯ø©3Þ~¼Õ)WgsÞ„n·9Ü^èÏs•º¦ÿuè‡|óa{<õ°°ÔƒHu;ö¸Wïì!Üúªß>÷À—îî7Ü{ÛÏ=øÈŸíðkåß'ÿùF]~ñ›|è[ÿ¤Ò}ÇK?Àxÿû ¡÷~ð§ïûE¿úÂÿ?ö_€Ùo|¸5ï|þ–ü Ä¿ï¯õçÓÿèã~ý#€ïj«×dÓ'wæµý§ä€äꀴԀìG€ûƒ¨?ñ‡y1–7×} D‚ö7‚h‚›„@¸4·xÿ¦}8·y8ˆ‚ᗂë€åw?@˜‚H¨ƒ0~F(~ú³ƒæ€I؃ëƒmWs¬Gƒ®Ç}'H€(…ç×€_؃ø7†dx„_h?è„Nè…?ȆQ¨„pHC/…nX†t˜„TX…2øvòwôW}7È…Dx†oHˆ]è†mø†sÈ?èƒføˆl8ŽHBsˆ‡–x~wh‰•H…XD¦€þb–@H†kXˆxˆ<¨†&˜†a‰`xŠv¨‚T‰Dø„E(‹y(Nèe ø‡ X@£8ˆ°XЍ(Œ$h„Cx„“øŠ‘‹›¸A´˜‰Sˆ‰—˜‹•G{—牙‚6(‚·ØŠÃhˆßØŒ“˜ˆ˜ˆ’HˆuhŒå8B,H‡/X„Ôh-´‹pÖ‹ÜX”†‚¸Žp¨†¦HЉ~ÇhÊx†9è°XC©‰Ä8Òh˜AŸè‹¡H~÷‡?Á‡­h‡IŠ«Èˆ Ží3„Žˆ‹4ŠaØ‘y8‘bV‘ùˆÞø„h˜ƒù‘åHµ¨ü$yŽàè‘rˆƒ+¹ƒ-Yþi‚†ƒÓ_„’ô˜{0Ig2ù”úÈD 9•×W•æt•¶C“O”‘\ù~^ S`‰AY–léDg)\iÉ_tÖ–tÉDo)^qIl0U—|‰Cw™_yùz}9˜dÄ”VH‘Ûˆ•bI˜ŒÉ@i`3ù‹9™ ô˜úUƒYY“@É?R)„6ˆbøŒb¤’í×—–˜ZX“)šˆ8€<Éšž©Ž®Ô°©”lyš‰–’ Œ¯9’œY›ŠhŠ"(›œD›.hš†¹‡èx‘¹–Y’¾ù€\țĹ‚hè’ùœf™œ–‡…¾·˜.(‹½©“þ’›ø™Á©Œ™“¶Ø8ꉔJþ˜”Ky˜¼èÆ·›[˜ã¹žìx“´¸ŒìIŒíi† ùžMèŠË8\‰›¨˜ú¹âùŠÉ˜žž©Šâ‰Í˜¡è( :ŸÓY-Ø–ÊœꜼ¹ˆzˆŠè“Ú¢;é¡­I–ÌxC J£BI¢Ü‰øI}ž*J ã˜£A¹Ž7Ù¡Z—¨Ð˜ ¶™‰#z›;Ê{= Šs©@F)œ©¤*È¢‰¤ iŽØ™Lš¨‘ɤÈW¢óלW*Šý¹¢ãh~]:ž…hÌH”wz‹j @)£òÈ ôȦ~è¦ÅV‚6ÉŠÂYžçIcZ’º¡Š“c™¥-Ê !:•„Jzþ!ØfKH™à4¥ÄW¥ù¦¾ö©  Z¢Ê|Vz¨Ü†ª©Êe«ê”º‰¢ž «±*F›º}𫾠zöy¤j¨{ù«Æº^³:¬'jªÇÚ¬1Ø|¸œmº¬®ê¬ÖzT­Úø µÊ¬×z­»Š™àù­¿®YØ« ¹™„’uš} F¤Ù¬æú?*¡ÿ è®Ù¨'eœÎ:¯ùi«Ô9¸Ú~Ê‚ìú®RôŽOš«ë£{ƒfZ°þ“°˯éw «۪ź®š$Ƀâx±:©Jj¡êÙ‘dú€Nz©+9…)Ÿ-‹q[ªÕš¢üy¯Z eX§üè³íŽ’Jþ§5»@7Ê¡+:’zŠ{7K¬Â§AZ²I ’üY‡ä¦Š¯Y«¡%¢f¶:‚Ø {OK­Ë€SK´’:©*е[*¦Giq{´Xê¤" ³"Ÿcø|gÛ­9ˆ;KµZÛ†íÊ“]+·^¦ŠÊx»¯ó8¶>é·ÉÚ‡œ •ÃI°rZµ>Ø®Px’ΛGš¸v{·‹º·­Y¶©÷·jé­)*²=»²üX´_Ê´B»¸{Ú¹u«° ªµ’{’”¬M©¬€›¶R»•t‹ˆ‰*ŒbZŠ#+’艸k£–„,+…˜*Å«œWh¹¼Š¹äZ®•+­…жQ[¾ßêºrþ¸ìk¬î«—ë¿ÿz¾Ûj¢É[¿ö{¬ó+˜ýë«ÿ›šL™Œ®ܘL¾ ̘ œ™ <˜<®vvgt4y|æHàŠ¿ˆÉ­¯ ¿²„ÁÖgl¼( —¹ùÁÊë?S6vgæc&l­\¯¬i]'i"·uÎÃeek!ux˜…\Ú”Mô6Ä$¬d5±§w6enÝ„U!—jÄClfoUr'—Åœ·Ä°+ÂTæÄ»ÆS­´k\,_VŒIM—ÅiÇÆËy^ ÂMŒf4ÕnÉ6Å[<_ò†o,'s}üÇÙÖº“+ü¾-Ü?”ÅÅv,ÅxÅG'y‚·ÇBEx“¬t¨—ÄþmLJÌL­–pÕw7ÃwUÅWlv€ÌiœÊ›EyšÌ¿:ÇljçÆŒüÉ¢¬Ç¥sø†x|ÌÇööy­,^ˆ kN¬gÇ6ËbœU>lTÇj ÇtXlÇÇv¿œ_.Œz‹FÌïÆÉ—LÄɬÌ~lSx…gÄ÷ÖË]<ÈVYÈô ÌœWÛ™ÂЊ¾— Áíüst•|Óì_õlh´¶¦èü•ê ÀûL˜ù\g-¥ðÌ£â+®6|ÐeYÐ=™ÑüÏhÐLÑ jÑ*ìÁ†ìÊM—´‚¨°,º¯CË]ñ:€È™ÐÙ*ÏãKÏቲùª»4]ºÿ÷§ÇÉ—#½¼Dš¹™þŽé۵é»Á×Óä¥Í;»[kžÊ»²ŸI±;Ÿz+†ª»Ñ.=ª }® <Ó ¹¡×»²£»¥i´Á»»FxK ‘«£[ͪ8»É@ýÔÁëÔ¢kÖ ›ÒD‰Ó_û¸Øp ¾ˆ¼, ÒK›Š×eýŸ]’ê×”ØÔ8¶"ÍÑx‰Ñ\±ÅØ“| ¹Ùž ‹»sÙk’m­½Ÿ}Ù\´zØì ²ÔÛ´\[¸«+ÔzÖ'íE`+„‚Ð(¯ýѱ­¶Ê×X=ºÎk²¶;Ú…+Ù“}º ›º§mzájýÎÔ,ÛG*‰X=ÖËͲ¤ýØ{mÚcä¯Ú’Õþ}Π„݆MÜÛmÜM½Ôàý¢ÏëÜBœ9¹ºQ™½‰š”ë ÇÞ%Üï­ÝúÒÀíCÞÕôÊÄ>¨¾^Ù-Ю©þkžÑΉîÞ °_¼á¹xÝ&”á›-âHâû#×P[Ü(áí]âNá/ƒ*Î&þÕ5n}7u9.Ó;ŽÏ.ã±!.±? ²úª`+Í™-Ü>ã.¡4¥û_þZ±O®àQ^䋨±›äa~µFÔ;]—=^?NÁ;½Ú*˳hú¤û}ß^8³Åù²Ú‹‡ó)¨õ å.å'ÎÙ êÜ» ¹3ÕÎx¯K;II+¼|Þç\þç^>×þ`^×Ej¤6Ý×Ò{Ü ÝJÙðøÛ=ä+¾æ ý›sJ·Ò ÙC¹éªº1kÙÉ·Qº¨£ã¥è:Žê4 ë˜î¶¯®Ž‰nÛ¶ŽG½­±¡>Ø‘îá0ÍÐn°³Mè5:·ù½è¸ÍÜ€tìa{¦ÊŽF’Þì^ äMØÙÎ¥«§åݶŠkì[ëêýè#Nê8®ëâŽÒÝý³è®Ü­>»ÞÝéÉÍè:é©»±6.ï>Nïlî®Û³É=í· †HȳšîéêßÞ+¨žxi~?,®¾.äëó>é-ß Ïá"ð$ïñ&ò¸ñX„ð§îòTiðj.óÏNóGmóoþê9¯ó5Ÿò7¿òûûñ@ÿ½ËNäàÞàG~ôAlí…óMïô±Ç^àóSOõ‚|>ÔñEßò:gÍ Tʬ^eVö<=àá¥A^Û`oÏwWp>•]+6Ã÷û@)Ööð}à—wrÁobv/¯þR)¤÷nЯ¥nûMÏîütPÊePD%ÌPEuÔ0F•tRŸä\ðÈ3¯#R+JaØ4+ï"µîS¬:}Ô«Bµº 3þUª0uXcUÕH:÷¤'åx˜•We]sÕíªÔôPÞ|5Ø8oµ-Ç'NÙN™ ŽZ‰ÍoËê¬ÛI½uNØëDíÙÝÀ•T\ßÔV[h}2êÍ€öÈ¥”Ýêµ÷3|yq·9swE—aø·ß|Ýoá~æLbzô­®àéø b†_ ø±÷ãŽ'nÒbê0nNc„ ˜b’ YQoc¦Á_˜#þg…yöødgôNƒ³ùe…AFùÑš~Y⣖:b£zX\[%:ãƒ]öºd››9Ѧ#™ºj´uF[j¤^š`x‡Ö•k£¿nÛ±±þ-[%¨oNÛoÀî!è9µž{å®›8ºjÁÅ~[äóǹ朗¾wò»+&üÒ\¥{±Å;n¼°¼ Ý[qÊKäЋy|9•™cÙé{+W=»×É~X‡ÌS_ÝïÖ5ÇúY¹=G¼±„ÿι±Òæ§•|j¶v{sV7Änö9Þ™ùÜõ>ÔçžñMxyÆ¡&¿ñæ¿»óÄyã>ÏðM¶öÇÍZ{iÃóÊä¯OÖúùX#ÀÞÄn9ó»\9≀]g"˜®÷5bÜàýhÃ@üÕÏytÍiSnÇ+,€ñdGÂÖ˜N | éÇ–‡-„alþhXB ê‡1 ¢þv¸­0}Ž96tÓXÄveó‚›ÃÞ…½bq«hU\VKÃÄî/Z¯²QEä03¦ÑCXD¢«º¥F8‚1MŠ£Ù/-ÎJƒRàý§>þQh ä Ù¥BR‘RJä"©¤F>R’Šä$-y J^R“þÉä&=IŸN~R”ê å(M žRžR•Ù£~êøJXÆR–³¤e-myKµÒ/;äe/}ùK`S˜Ã$f1yLd&S™Ëdf3ùLhFSšÂZ®¦yMlfS›Ûäf7½ùMp†³—ÕÔÚPÌyN  ëdg;ÝùNxÆSžó¤g=í›yO|æSŸûäg?ý™N~fqŸPç? zP„&T¡ ehCúÐs4 m̧D!zQŒfT£åhGjQ} 4¤õhIMzR”¦T¥%)=EÊÒ•ÆT¦3¥iM1 ÒŠ–'…;åiO‡ÐBŸU¨C%jQzT¤&U©KejSúT¨FUªSE*P£š#ªfU«[åjW½úU°†U¬cåj";Tix8.4.3/docs/html/gif/tix/intro/0000775000122200012240000000000010767576212017010 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/html/gif/tix/intro/combo.gif0000775000122200012240000000040507426315544020575 0ustar jeffhjeffh00000000000000GIF89a ³€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ!ù, ²ðÉI«½õèÍ»ÿšt,dI£Y¢ê*¶gÚ²0ðÖ²JÏ÷œ›;]O÷[OCàq&0æÒö˜Z£T`Ëíz¿`„„"ƒBU†z­nð8œz`³Ý1¹œn_ã¥zq|} (s"„…Vˆ ƒ}†Žv’”Š„—ˆY`žŸ]bUf¤ "”V ª«ªt¨X¬¬®œ©²­§µ°·¸U¯8¼ ´’ÁÃzżÇ{¶·žZÐÐÔÕ;Tix8.4.3/docs/html/gif/tix/intro/ctl_subw.gif0000775000122200012240000000540007426315545021321 0ustar jeffhjeffh00000000000000GIF87a¤òÿÿÿqqqºººmmm,¤þºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ïtýx®ï|ïÿÀ pH,ȤrÉlîΨtJ­Z¯LvËíz¿`/4L.›ÏâzÍn»ß¸1|N¯sµö¼~ŸVçx:~…€|Š‹]‚Œ‘OOr‰q“@~ƒ½»÷ØÕh¿õ{<0î°|_o;¼y*Ùß{⮀6öøÁ£¶.?JþüþÐwßlæÇž{6ñ_‚‹hŸø!È  N¸‡ƒBxà~âY˜D…Ú¡ljØ„!bŠsŒ[‰&J‡"‹B¬H£.¦£w3Þ˜s>F’£0îH‡AÖX^’Š Y¤‘ÃõÈdF>M)âs¼Xä“Pâ&¥•=ù‰“]F÷¥•6Š ™eoj†g€Xjù`›Ä9ešsr‘ àé&œjòÙ' z"’‡z¨‰**#£}:ú(‘JjœžLZz©™jš'¥szú©¡Šz©qšz*©ªz§Iºúª–IB¨˜¶ÞŠÄ`ó%Wé’Mòeì±hýþ¬®ÂR…lI@>‚ì´Ôj¥lµØž…Ñ´ÐV©G¶à{m¸äbµm‡Kð‡„·YËG¹ðª5n¼äžÛ„ºG°»D¯~ÒëoWóþ‹­½K<†îün!ðÂæúÃp¶s8€\†¯ #ú0þڂ¯UheñÁ¡àÈ,ܳ_±1ÇÓòqU!g52…ù¢"”°ãî…/ ³ÌO Í„]¬"6¾ÃNAÑ2´ÐCÂ/WÝü!Ó¯äôÏßNíoÕV–ÖërŒ×Pë[‡Øc“MÊÌg¡¯Úçì¼MÛecµÜÔÊ=·Ùu'MòÒýè|9_GÝ`VþlMnþÛD·Yv—Ì‚ðÓ“B-C 9Å’‹K9[—•yZ46•÷Ž@é¦ÓTyMøš¦´­§ʾ¾¡UäÃ32éFOüñÊ/O:ò È~¸K·ÓÄŸi†w«³1NT_üì[EO3ôà½üøÍ#Ÿüúæ«?þì6U?·Šä“¶‚±ûí>óï›ÏûåãùÊW³^åoñCÝäø`¿¶= eÓðžô¾ò7â0r$ ùd@°œN)­ A÷;W Ãg‰K×½RÁ öƒ.ôúô·¿¬$0)ò“ k´½s8-…¸Z!a¾çi°ˆûh<®Ü(ŽƒF9á¹V8ãþÙø•™¨¼þ­O}Fäbø:HC2î®%9ôHK1Ež0q‘ ÇØE†Q€¬á ǨÇ'þdlÜa×G¶Áj‹ÿsž;X³=ŽŽ…}ü O¢XAºqq„tcÞ”¡Å9ï}y\ä'Ë(Ã%‚²”þócN‹ÖYde,‹¥,‡IÏá{tl‘hÆý/ƒD%³8V…!¡«Â÷ùK¢ò»Tä2É8LJ¤Ä˜ Áf9^w%†é1\½8‰62ÎmRhÞ4c½B’rúþƒ¹~Ïïûÿ€HypuIˆ‰Š‹ŒŽxŽ’“”•–—˜™š›œžŸ ¡¢£¤˜ƒ¥x†H¨­°±²³´µ¶·¸§´x…g¬¼y¹ÃÄÅÆÇÈÉš»³½«‘ÁÐÊÓÔÕÖרŒÌ²Î¿ÒÜÂÙâãäåæœÛ±ÝvßêáçðñòóÊé°ë‡‹½ûüýþþþ H° Áƒ*\Ȱ¡Ã‡#JœH1¡ Š´©ò¦þc CŠI²¤É“(^¬Øñ™Æ@0cÊœI³¦ÍvðSôjTOz@ƒ gÏSQ];éÄù3TÓ¡P£J=v]RPö–¾$õtª×¯`KUÝ4vÙÕœÙmõù.¬Û·p/•Í4×ÔY­úÚbÕ·¯_¸uåž5z7m>ž|&þk-E+Ç— 3žØÒ6,ú ûR›§bÏ“‹I0zTéI§C«\é2hW™™.üšìbÕ¹F§µ»QoÜ·XSrm*vK޹Þnë·1çÌy Fúm:lžš]&g[;:¬ˆ—f‘H²yŠÈ§G¿Â{pëd“Â×g<ïæÃJ—/Óï¾þxÒì¡·ž å  "˜àxBןSóÑ%_w<Õ‡Ø}´-‚Y~>hšá5˜`ˆ 8"‰'šH¢‚z¨|L 7aqØÉ†¡lítˆˆéèâ' –È¢ç Iä‘%2¢ˆ?r£4MBœ\æwãZ‰øÈ#‡MÎdy(†©â˜EJ²d’]Š2ÖNQJ2¥eUî8ŽšÒ&Z>¦™É™‹´8b{eöéç˜bê©æ“JÉX–q¢uåvY*Ô£¡¨ð9 šâ!(b¡‚‰)“”VÛJwº2#•5ÇÙ¤Š”«¡Šbé‚hk ¾!Yk¬X=¹¢­2šª}ÚÁê¼RþrZ ŸØÞ‰³~™¬¨N.J£RÙ!gì^yN»kЏ’É$®á:è­›Úe-ªØÚX,—Üˉ´â&n½à‚h®¼Ú¤+غp{á»rv+%²ü*©+½øxé¸ú‚špkþZvjÀíªŠ_ÁÊ<ñÇq '儯 l%Áxv òÊý‰Œî¢%gLì/yœŠÍ,ç•ËTL±«þ<ó„Ê:=ϦâÜï7¯ÑP÷…ôÒÕ:ñhÒÖ\wíõ×`‡DjDcC”íªV†­öÚl·íöÛp?töÆŽÆm÷Ýxç­÷Þ Í­Ù€.øà„nøáˆ'®øâŒ7îøãG.ùä”þWnùå˜g®yätãuáæ ‡.ú褗nú騧®zâÏÙÑê°Ç.ûì´×nûí’·~µ•¸÷îûïÀ/<ðº£ÜËð˜ üòÌ7ïüóÐG/ýôÔWoýõØg¯ýöÜwïý÷à‡?=áÅkË;ò–‹¯þúì·ïþûðÇ/¿ûäûm#úéó½¶ ü÷ïÿÿ,AýÜe>9 •3€þÂÀ:ÐŒ ÿ €jìoœœø5 zÐü ?@A Î mÌ {Q€ºð…0Œ¡ gHÃÚð†8Ì¡T»å-€‡«óaW>: ˆÛàrÈÄ&:ñ‰PŒá‘ˆ:!‘þЦ¢ VÀ#b‘qJŒ¢ÇHF(Nñ‹¤³"K§E"ÚïukL\ËHÇ:Ú±…gŒ#èÔ¨ÇеQpEÔ]7Ç;òMÌã “§¼.Rs \ 1øHÁ‘˜Ì¤PÉÌñ±“ékä%ùFû€2p—Ô¤*1©ÈSFî“®”\$7Éû¹2•«Ì¥[Ù¸t–‰{Á)gy€ZÂq˜,Ô¥2wÉIÉù²’ÀDœ0AILcš²p0À\ ²˜ÌezsŒ¼ & ·ÍAFópã$g:YÍR~›ë]90OOvó(@d>WNiž‹<§áâ8‚ö±4âñàùOÑͳžþÉ»§!÷9Q䲟èl¨:*ÊQŠ ÐåOÖÅ…¢¤Ciþð€IàÓ¢ülf/ƒYÐ>ô™œ NºÓx²@ƒí¥FçSœêT§(ý)Q‘jP¥¾R¤nL¨ êφn¢7µi jºSuup¸¬#LazGŠj£Ø¤)S½ÊÕ¶®õ­ô\gVŸB¡ž”­pk^åÊWêõq½ -yúU¼^• suW“jPTJÔŽc}éEeʸ’ӭ˜ý«fûŠYÇ ¤K%*g÷ê×ÑÆµ´¨ílã{©¶ª¾ÄªiëùW¸.¬tŒ, ó¹‚òÖ¥.4+ ˜É€ÇY6´qþ]œ\yšÓÕ¹€ je·ª¸åB´…mlM骀‘Ðxx¨bU{Z¼–×¶FìcË(\² Á¥(|[8ß÷’µ¾õ'e•«Öä§Ùõ+s™êTÏJW¹ÙýoWé9`/8À¢-ðj¡ HwžOÁ >o„Í[Ûôzv½dl¯oåKâû’8¾&v¯ÑzWinÃÖmseìà O¸®Ómq„ÜàÓòøºãn £*Øcš—ªGÖpmkœDQÄñ¡‰¥eúJYÅQdñe]ŒÔ×¾˜ÁÐ…ðs/÷Ù™¶sQg|æ5'‘¤”*%“LgÙ¦Ö¶^=.!E,[™¾Xžþòn«lßÐQË×ý²‘{æ‹Ìd>pu-ãF‡ÙјN4áLK §Éâ ðW7«g+·bôó{ \VÿÙ¾(nMc 'øÒ¸®µžßŒcc7Óº¶¥kmà!WXÎ uU½œYÓ‚Œ|†" \½j@SÙÚ¯>$­U‹ff?ÔѳuöékÏÜw†t›Ó]ìîFU BkŸÍìÅj•ÔÉ-bµ{T÷y†‚ö-µ®êCï×q^ôŽï=fEë{á»–£¤ÅIÝ…Ÿ÷Ñ>f¸º»lo ۣńBÓä­ìŒŠzœæ,Ê{ºo=û[ڸ̱]mDn;Ï”Îùþa­Úã‡Û;âˆ+3ÎM­ožÛzç 縃=¾icÇÙjàw½§¾XÒnâTw,KÅZpXã·Ä(&ô×»Îěߔz,%îôNËy°ÔŒvÍze¯×Ú½eµ¬ ^\.™‘½^;¯Ý}ì"_™[Ïm×[hçæ§»~û®Â¿G:ð‚o7È­ùNÄ/Ñ›’ñ7ehvÛI’Ï|Ó gÃw>î‰Wfè©=úÒg^íª¿-§Cþv#ÿRî’¥áì½i{Áã>÷–Ü=ç/ ûÏ/sø°= ‹¿öã#p¬å¢BÃ{KàKÿû.¤~,­ýì“tûRo>ø×Cñß2õ×'¤òþ=íEϳÿþ3tÿ0áÿ™ÿ»%Å}ö‡~×þǘ|mÇ{®Ç|¿{xúGM ¸€Ø7½wxÍ7Bèó‚ò³"X‚îÃzn÷€Ÿ†xØ‚`‚0¸> ƒ4>(耭5gè‚}êsDÔv&Ã5ÊÓ€c–jÝÊÕ¦«ZËýãÀ°h×e×´€Ý»xóêÝk×+Ûý܆™’¯áÃ}½ÆP±ã¼~'ø,™ŸàÅ …Z+ªò±ç»‘%v+–nãÏŽý.>úphÀ£ßжLº´º¹Œ;·Níµò¾Ë„ìF¬Ú6ëáz_Ovë[ßeÛ™«p.ŒÜ°rÚƒ¯Z±qÝÜ!÷ž”h9Êä×*½Üöð®ÿ&¾ø³ß©ÛOüžù3þƒló…:¸½ž|êeÇxû—„ö1P8Ž3`l˜!¨$ÿI%Ü~Ýõ‡q V'¡ˆ†ÑК…ra"8žxà9 RxŸÁXpÚ鸠wê‡× ;¢æcf5È\zù<ÇÞPÓ¨ž-9Y!‘,^ @’=ŽG V68)Û™Q®çNŽ^î(ÀœsŽ™¥™2 q}AÆ9$~EZy¤ú˜…4˜a¢ÿe(Nvˆã‡Ž†y%u–i"€~uê©_T—c ÉÝŠ' yƒ’xŠÃè¢6:ãºjÎ {8åfî™ ¦J\«œ~j¬¡ÎJ+Ÿ]þ ú% –Z«›‚óªyŒÊ¨fsÞš¦š’zÛ^ |ay(±^AÀºì¶ë–²42[jœDà…jZ~"i—.ºX(¡Znù$›Ö’#*€àÞ(.•½úyä^9”È-íº{ð£òš¦#Ç›¬½`¦š/¡ü"鯾ñ¡Û oj{k»‚X%bÂîk.¢VTÌn²èª1½úq‰«©J²Ícž °Êm®ÙmÁÖ‹°†n¢9n´ë€)Ê>Z€»¡ªã3cïQ¬óΡ&2¾Î°·MRí´Œ¡¾«ÌoR oŠûf½õÒÕºš3<‹1Ù¦ª®ÎCßW´Ã*2÷¶P*zñ·þr‡[œmçUó¿K\yÔ_~1¸õ•»xŃ ­ÈŸ*9š”·=·c¬kÞWÃNsÖ«òÇ­=v³3vC‰ÿ[úºïZ·6]FO«éðX™Së u‡{ÏU¤÷̇}>làK+ŠÉï«nëj¿ÎvÖdÞI¾\RCÚrÔs¿»Õ “þno;õ‡<Èíh}(Û˽ 7²øk~·©ßÀž65EåïRâ]ÿ°v%àÙ@tûù¶#¤m|‹Í^¤²kE(æ[ÖÜì1©`°{ôëÝû§5:qmvsмTØAÞ¸*ßø&+XÁs£š ÁjxÃýyO‡H¤Yþë8êÑãx$|˜SØ¢áàì‰Øjbîâ5C[yˆ´b7è»ÿ‰)tÂÝG˜>>/7 ìÛ¿’¦¯BpmlšæÊ‡E@±P”^Ê)0ö‘…Gtd$KFÈ’p9‰ÄGùÇ+ÿ‘h’^ "ú hÆ?†“© b,ã1Ê+Òq‡§|<,ÉJ?fò•Ôš%-¥)…mî{ {d+)9L!þL™˜$c.(K=ªÒ˜Œ¼%ƒÆÍnN@0à §8Ç9ÎU. ›è4V ÓÉÎ×óðç7ãIOr.wlJ;÷9Ïzú“—çÜg:×)PtöóŸÿ<(BéyOÁå3%egóºPôEt ß¹¨A'JÑ„vôŸ •Q>qBÒ’šô¤(M©JWÊR”v¤¥0miFbJÓšÚô¦8UiÌN§€œúô§:ÕPc:Ó¡õ¨H5éNc˜¦:õ©P}*n¢JÕªZõªò˜*V·ÊÕ®Z5 «XÇJÖ²šõ¬hMk=ÁªÖ¶ºõ­p«\ÍÊÖ¹Úõ®xÍ«^;ªU¯úõ¯€õG_KØÂvŽ¥<¬bËX|j³±¬W+ÙÊZ6!”½¬f7ÛÌrö³ ‡gCKÚÒNª‘¦M­jY…)¸öµ°­lg „ÖÒö¶¸Í­nw»ƒªøö·ÀÝF;Tix8.4.3/docs/html/gif/tix/intro/select-vert.gif0000775000122200012240000000600007426315545021731 0ustar jeffhjeffh00000000000000GIF87a°ãòÿÿÿÃÃÃqqqëëëÓÓÓ}}},°ãþºÜþ0ÊI«½8ëÍ»ÿ`(2@ižhª®lë¾p,Ï4íD®ï|ïÿÀ pH,H#à–læ§t:…Rƒew-Z»àpï+f™9zÍn»ßp+|N¯Ûïø·<ÏgCÏ[:}ƒ{„‡ˆ‰†‰uZ$‚Œv‹’•–m”—~P \šqQ¡¤•™¤Žh ¥›«¬¯}§¡©i°…£·º“¹°´¶›ÃÄÅÆÄÇÊËÌÍÎÏÊÉÐÏn¿ž‘­eÚÛÜ]ÕœªßÝãäåA߀À®k²„í»¢ëŒï±½ìàµò¸úˆôð˜öæT4К‚Oâ.ùûwß¡…x2 € CwÆS˜þñaA|êZ‚È$¯‹ƒ$‚¼¬!G”mL’©Æd£€IZ¡ët›Ë‘iªzI¨M:”`nÒ 0K}GçÈ"JÔ’ÑŽå)½ÇTOŠ>kbM´„F±[#âÌ¥ë=§=[¢}3ÅP³UíÞ°F(ѨÙ¤ÅåV,\°r÷Ñe£b¯€¼(úšuLy.P­lÆu¸báœ?O–Ì×ïdÓ|+ÿ+ Òµj7OôZÍà¶µ+«V=5éÍm\á¼æ¶æÜœ¿Ò¶\<ófÈ©óŽî[7=áljÛvŽ|vXÅ‚¹3× =ºãÈÕ‡ûsìî+ãBÅ9-;øßøI›Œ·´þê£!1í'Þ}o)÷]RõFU€üA(Sæ' `JÛÃ!h˜‚‰¦G/UUHÙ~vE†ŸL"ŠÔÜ{ã}ŽE‹™˜_z6B÷[‹4®Ç¡}*u¶ k|¢ãt¢ˆbofñøÙA‚8ß`'Õ¥¤ä1¹¤yM™™{?ÊbSÖx–†TÞ¤Uƒð ¢—j¥¹‹“¹I˜n–yÙ™jš)Ð|yº( ³Àù£œhî4£zYñYàžzµhCõ5cg¥˜Nsi¦Èpz   z*ꨤ–jj4Ê„zꪬ¶êj§ÇHùÃÔjë­¸æªë®¼öêë¯À+ì°» hSÄ&þ«ì²Ì6ëì­C+̳ÔVkíµÁF+%:Øvëí·Íj;©aضP­ à¦Ë«¸ùp{­¹Ô¢«î¼Ð¾)í[å–®¼ðKo·ì†„ì»úþëï¿×ü”»Öœ®ÃS«°| Ÿ[ð®ò¢{0¿«`k ¹Bq­“Yq¼ëºB¿)³ ÀÇûËqË"\òrœåû2¯+oóÏ;×:sÐB·<²­7G«3È0]´ÓC7}+ G+›´½:÷ê°ÏAG+ÓU{5 Yól4×R?2Õa‹mï¶7lôÔgÓ tÚ*×Ü6Òo›3ÁN]7Ôw«mvà{ã:öÉÏê½µÝ]Žñ܉þó ªß”=yàT³í²Ôúvyå,·Åˆã-xÁ^Þôã©ÛÜw»§£ûçy³.9î¯NºéÓ’.|ØÀã;üñO.òÌÏ«üßÍGïíó™Ko}³ üõÜ;K=Á þøä—oþù觯þúì·ï~úÃ~O+°Œ`ÿý÷ÇŸýµóZ?þ àôw9ÚmÏWÿ è€ÿPQ4Þ¯ؽ°Ol ÜØ+ Vðh @%ÁåMp¡ø0(,ù……)ŒXG˜ Ì~0Œá¿fØÂýQ¬»ò éÅÃlùÐd@Ô•‡¨®"º­€Ú“ sÈÄt9ñþW.Ä! æ-Ê}늾Êâ ·ˆºÛ-Ë‹Þc¯Ä8E2ÚÎŒÊBc·Ô¸®#â¬zcỄÖ-9b‹ŽÅ²£Ò´¨Ç†ñQp.KYèN@7º1ò+,ä!E¶Q’ñ:d#=DzDM‘œ¬ uÅÆRÑY t$ÞZ'9½%k”¹*¥ÿNÙ¬TÂ,d·üZ.ûµ¶kÁRq‚Ä!åÖÈ]~̘šŒY/­õËzA‘œ¥™•ºÈá²h×ìäÓÀF­fZŽ’Ð”¢)§yF “—ØÔe:ÑiÅHÒPF%„Þ%˶³Óšš—7IL² 3“*»§@× Çgí³týd\i™,4.2rþ]eD]×Mwöð™?ŒæBÉI,‡¾Œ•­œ(ï*êÀ‹‚3£â”&&ãx»Ezr“\§' J¬ƒÊr£+ÝWKiºC‹£HÔ¨ú-Ϧ Mb®–¨.£©@½ã óˆ0§ ª' jJqZÕÕ§“Ô  çGÕ*6¬XLªP—JT³2­aTëV‡ÊQ·Š®k”«%Ç™S»Þµ¤?ͪTÉ:O¿¦¯uŒê ËjXH6¬$¬¤<ùÚØ9"6ŠfßÇÙÎzö³ ÅªXã‰ÇK†ö´¨M­gëJJ½NVšª­lg+ÚȆs¯*e nuûÎäŒõ…» î{ëÍ^R¸ÈþÁcÓšY2¶²em,][ZÊB÷­ËksJ×¾^WYµ­!i§ZØïô²­Ý®RqÅTó.+¼ð”luUêÞóf7¯ê]+{ÛZßð¡wºù+[¥Û_þ˜Æ-WËéJ&Â×·ã%¬u‡…¶Æ>¸¸Î-¯°*lØ i°Àõ®ÙòVYßKÁÝí¨¯¬9´msmsdƒýw`g v±–Y 4'Æ.íO—ZãoŽV¾äp°v¬:ÞT¤Oo‘ù™à×.xÃ+>'‰óIÐe²SËœ2B«<ß+/9Ë21—µùå.#ò•b¾iŠ)Œf6Ë8¦œëš—Í çû&öÆÆUþ²Žëì»]æù˜ons³L¼Aï—ÀêäÙ=m©he&zÈö3faAëq”Ft1+­çKcÒF¶-JQ<`onu£–h©GeŠ ‹Ñ¿ý'…G7i(ï9¤"®#bjÆ4Ö½ÃÝ¡“ Êc×4ÎÔM2}ÝêG)k:½œæn«íZí>£šÊÙ^ï­Ú{½ÖùÚd–¶™+ÈMÇ~{ÌáÖï¸ù½vŸûÚŽ·£çýî³Ýúfõ£]íoãÁ·òœ þìƒÛøÈ·Uø¶ÞðwËyâ¿5À!¾j‰<ãÂÞ¸ªµ*p~ä¶6’%¬RÚºüå«=yªÅ»òÃüæ8OŸþÅ£Íòæüç@wøÌãñ2w7¹Hq?Œc¾&ýéXú‰=nr¨[ÝB7ÇINõ”Óå)9Í‹®î…ƒ½ƒb'zÇŽñ³|çéî¹ÙݮĴC¸æº¦{ݳï­ƒ8ïzÿ7ß/þñÀïî g{á /xÄû½éÓþ´ÇÌ«r²Ë½í+Î3¦+Xùµ—óZÓüw;ÏuÅ›|àÞ|÷Hÿ÷çf~ËÛ¤Ù‹WçcgÏ”Y¬‡üºCûÛOmöw†ð…Œ{»cXÛ‹ÿ•=UéºZ;ØMöïày^ì%Oþõk¶ê²'gmǼõ9½½a¿}ò{¹÷Ÿ~Ü«ÿél ÙÒ±^Yöþ?yý«?ñŸO>ö/MéíËlÖ†jéç}cçy—§¼÷kô'j¸€ó§:ÝÖx2§uß§{s—€¦–´¶g˜höG€jWzùwzÖc²Æ€ÕJ }ôc|Lh‘§|¢×|ð×€«´‚¶&} xw,± ì'ƒõ{Êv~¢³3åW„Þ6c–*ª0+?ÈxµU³"+>p€$…a§~S˜k®…¹ƒ»Çx_Øi1ˆ…cˆ|Wˆ…p†âæuýFql(on¨„‡û6‡j˜…;x|m…_wvvXrx˜‡kè‚Sgzƒ˜‡Øu~¨A÷ˆ/·‡/H†8‰–([’xˆ#è†—ØØ‰©•‰&ˆxu¤hRŠŒ¸†¥¸ŠpŠ\HˆôBx°ˆ-²8‹ÖR‹¶(1Ô—‹ê‚‹¼.»ø‹ßâ‹Âh5ÁXŒ´xŒÈx‹Ê¸Œº¸~Έ=qgÔXÝ€Ö˜Úè ÷&Ûøàx ‡ †â(ƒRŽ1uäˆ(æØ(·À‡¾€ŽíèìX$“¨ „2êX(õ¨q‚÷øŽòöøj‘'¯+ Ùа) ©*9‘Y‘Ï ‘™‘i‘ÊQù‘ ’"9’!ÉŠ&y’(™’*i? ;Tix8.4.3/docs/html/gif/tix/intro/law_comp.gif0000775000122200012240000000441707426315545021307 0ustar jeffhjeffh00000000000000GIF87a›šòÿÿÿqqqºººmmm,›šþºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾0Ìtmßx®ï|ïÿÀ pH,ȤrÉldΨtJ­Z¯Ø¬v Ýz¿à°xL.ëºæ´zÍn»·è·|N¯Û×ñ»~Ïïûy‚ƒ„…j†‰Š‹ŒJˆ‘’’“–—˜{•™œžd›Ÿ¢£¤Q¡¥¨©ª>§«ƒ°±²³´µ¶·¸¹·®x ¼’ºÁÂÃij¿i­Ç|ÅÌÍÎÊeÉÑwÏÖ×»ÔbÓÚtØßàÝaÜâo±èéêëìíîïðñÆå^äõlçòûüýñôðe¹'0>*\Ȱ¡Ã‡#6¤° ‚É”Èþ±£G‰ee¼‚qd˜Sªä2–É*%_zA¹²¦Í„-aÉäâkgš7ƒ~Ì Í§“˜F¯Ð@¨Ó…D“6A*• M ±>µª£ž^óÁJ§PkY[¹Î¨¶Õ¶M®¢]h6mÍ®pÝ‚Í[FnÖ¹vï®É—ÈÛÂHüÒX%^Ä€öB£ølcÁ OþqxóÊ ë^öøØóŽÎ¦€fÊxtÇÒ©q ŽÝcµh× »¤}F2ï*¶[ãŽû÷ŒÙÆqNZ·Îä6C¯±œ9KçE§÷­Iuëıwß®`¼”¥MÁ_ϼ»»ôîKÕ;?þ½öøò‡ÒwÏÝ|þâ±èägSqÆÙ7~®ÇtB‡`‚á±÷åù€A˜¿5˜ÜA{,˜à”h"-¥è³ŒfÔ”‰'Æè")2Ö¨‹83r¶€<:“b@¶×b8‘)ä‘7Òˆd8fWÄ„¬ì¸ä”"rB¥M”=Àx%•?~yb–Eléd—Rйd˜j©Í„´iK:\òàe›AZ(œ±40§™/¦‰'z&Åg´Ðy¦‚Êc¡F A¢€ €£yBºÓ„È¢h rbú¨¦2ñ9̧–ÎÒ¨¨ÖZjvÅ ªc¨°¬Êªap¬ÄÈ%­Øz+3méz ¯§Vþ:륲;,1ÅîJƒ?êÔyZ£Î>+L´ÇÎ@mµ‹^ l¶~ÖÊl°¡–ÛgºwºëZ등õ­¯hŽ ìºçÊÉn¿w¢{é»þ: p¼Í2Ëm½ß€z®¹' °¹üò«ïÀÿBL"Áª*œë® §*±0WL1º&Ì,¶Ù )½¦Á¼ Ëw쥻Fr ±ÆåÚ /ŠÇ,óÌãbðÎ8O¼³ÀGûp•; ]˜ÔDG,¬Î'ÝlŸ#×âìÓ.'E5\cC³-X¼´Å_½oÇÙxUvUöR´×ìv­6ÛzÛœËÛòF ÙÜUû7Æ´ªçÅ+lµ”ú.áóþʰ«­¸á6'þöÏ(/J¹8£›T·—#ª±æs.±ç53]³œ²•íáØ@¶ã/éŽð_ðΣï¿÷6ñÝœ>‡ñ6"?¦1OõÅK_"ô5FYöÇ€oöÚˆ@â¯â¼Ü—Oldõ¤ŸŠüãî>®/–C?)ûÃAþý¹0Lÿ1ÀN¬Oÿ`܆PÀD4HX‹#PœD±Ð> &É‚ÊØ`#.؇zŽ_îá!Šð/4 ÿÐBº"†„À¡g¨ ZÂXºÒa #QCHÇyBÈÁþ OfL´‡£H*’Äþ‰è£A!ø+ZîEÔà•øÃ.†Ð‹Wôa“XF5zMtcü*G*`QuLcAG6RBŽ`ÜãE Ž‘ˆ€Ô  Y½0ޝôd%éÀDò’$Ùÿ99L"Á“vô£rô+PºÊ€¢¥›JyJ™ñ•} ÛdÙK¶2W@¬#‹~`¦pÕÒ”·#'·°KôÒaÁ¤Í0¿ ™ „–9pd21èIÍð XŠòe4—¹ŠzS°¦ì°yLKYä›èlS8Û÷Yd™I§<¯´NSÕêOóÜ ¤IˆyúIõDÖ=kñNsÆóŸUÄ©‹‚.ëœþ (ÐT3ÑÙeåA%š‹{yô£ÙÔ§ ò 5o°3Í0×Àц‚ô¥Ô*é HZÌjœÔ¥$…§@ZÚQ˜úT*JÂJShšô¢·H)£l‰ žb4@º=2ç΢ŠÔí‰éUµÈMU85©Pjx¦:·õ²¦v Ì·ŒºÏ®¦â«øknè9UÐjÕª6kÇT6ÁõAr}ê:€³²U¤T)DMÆS²œ…r¥J­ºWdx‘Ÿ¯èGË”†'?’ué]Q×WS¸µ©š•(g…óYù„¶§£íE0+×u.okÝ¿¥µqºnµž+}ú[i”&§þõë×ÔÕ:Ù-ŽmmË™ãÎv•àFu¸ü(®ÙýÆÔ§Q+L…m4–çKŸÄ¨ sjqר_¯•õ3WTÝDw¯aÅ”¶«¶µY9õ[)®µºy;%´¸Ù^O}1þÖVß+Ã@17kÌŒ³ã³@#{š¼okiÂW5ƒ!`ì\ÊÊVvlÚ­=ûzÌhh|¤/WÖŠú£j`¬]ã¦Ûâ6çÐÙfþ<÷rk¼ù.þ*¸Íჩ½ÌùuåÕ­«§}½ûÙa›cÿDÑvÉû´‚‡ ¨üɧyþôÚr´Áמì‚ØuÌ(Õ €‰Ü7Z~l Æßþ`G¦W zb{‚,˜Þg„=hŸh½y÷ß~oõ‡ „6ùG‹‰Ò±cu:¾Ç u'º'¤3"Cc!,jç"MúáO;bƒ£sçáÆc‚CîH¢nµ Ίý¦Ê’¦‘'Þ;QÊÅ`‡U^Ù–‹!ˆå|)>y¤6IÚG&Œi¦d£,wØ&zAÆ·æˆ$)fVaf¸§…1†"Õ2x¨ˆ'Ê)çœtF•g„^)NÙT ç¥["êc¡?¢èi£ø½¢¤}õ' ˆšji¦—êÊ©¢·""a‹&j­0GÕ²Åþ,ÊW£î„ê²^Ëìµ#9 ´PK­fŠ2)¶äÚ¢moçj7ë±áJªl¹ð¢e-žóºT!»5ÂUo¼üÒûê¿ßâûŸ\ÐÁ'¬p9ÛsP@ë¾±ðÄWlñŇó°8¬dìñÇ ‡,28‡#˜ òÊ,·ìòË0Ç,óÌ4×lóÍ8ç¬óÎ<÷ìóËL”ùÝÏDmôÑH'­ôÑ#¨lÙwà½ôÔTWmõÕX7]ÀÓ/Fý"Ö`ÀØd—möÙh§­öÚl·íöÛp·Ý²81×™„­÷Ïq÷í÷߀xsKPóˆÛ}ï´ÂííøÎ‚G.ù䔳M8ËþžøÖwë÷øç7W.úè¤Ã9憯¬Âˈ×Íùâxƒúì3›mÀí¸ç®ûî¼÷îûïÀ/üðÄãNAá—À‚Ë­+n,ãRÓ.}˶oýõØg¯=ðÇ£žüò-7ÿúó±§<ýù*W¿ýúì·ï¾ݯœ9 ,‹_¾×y£¾úï÷ïÿÿ»‹ŸÊ& ƒ•Ù¯slÑßþÊÀ:ð},c`ÀÍÝO`ù‹Ù h5þ¹à aï"xº™vž“Ù9H5õ`w*¡ CHÂԙЂ¬ÈÌVÈÂ¥¹†/œ¡XÃäÉì„äK¡W×C2ðvAÌ] ‡HE–p€6<"þQ˜@2Qy«kÁËÄè22²lƒ+ßͨº/Æì‡º›b總"¶îŽx¼£ó½¯ym$éFB²ehd¢ yÈ56òO4@q'G:ZÒzvÌ£&·˜Ä..±‘à[$YÈD>r”‡ åyÈÃQÒ ŽRœä%g<nò–®»`33VºÑ— \e)…Ìbò˜:ƒ%%eIËfò.‚=ÓeùvHLG"Ó•*k%6· ÌkjÓfÊ„"3IÎÛA“gÒTb/«éÍBZóÜd'* ÎH2³’åÌç9w–NO®Ó˜í<%<³)ÏnT ³'óÉPs^Q‚"ØciþøÔ¸?^3ž=(" ÊÑŒæ,œ’gCgYDHT8ø“E5ЖÂÓ -Hñ9RZ–Ô¹Ì!e¨ P–S›¦ÜhO™Ê_ºÓe3iMéXDÍ唋:\é6§êJ †q˜C%fQùM¤*4ŽJ]j›J3$òqšRmå7é9Ï2vÔ‘k=*õ"RˆµœE, ÊÌ:Ñ”š¯‰ãß]kÚTúUð©Œ*`'ØÁ6´°/¨'ϪÎņ­±ŽÕçCK(Êð¥T©eõ†ÙÌ’“¬eÝdûÚ¿Žl¥5m3Q FÕ"–²þ|íÕb+[’n6‹1û,ÔZ«ÛË– ÈM®r‘þ‹<§žt¸»mq;xÜåZ÷ºØÅ@s˺ZÐF×µÓmáØ²KÞò^w»7¼-k¿ÞÝ"À¼ð¯ ‡Ë<>·kÄmoÕÆ+ßþú—ô­¯LJ[Åê÷ÀNZl_¯­ ް„×OOøÂ^Z…wšá{¸hžè‡GÜa­…¸¢$Nq„M¬S«ø£¥‹±ŒgŒä}@½Þ…ð‹ëIãû8pF„ha&\ü²wÇ¡û±’—ì¶ ?”ÈÝ…®Ž‘\;&[ùÊüurZd&q˜Ê¯¤koOûÛï}³ËBó#˜«L¶13µE3E£·fH¶ÙÍx-ó<[)g¿Ö™ÍcÃsž;þAÃz6ÊFžòŸçzgA϶Ìz=4Ž¥Ü0^ή«Œ¥ë-DÚw‹ç8YÀ :Lï-©œ–¡§¡üÔQƒeç35i¿ËT‹pÕ¶Uœ«ýL;HÕ¶!®™‡h/»øÒ üäUáêNY§ÖË ¶°ËÌà>çÙªS6)™-PgØÒn`&«}_c£øs0ý©Óímp‡û¶¬¶µ\jyR¦Þ~™»ßÝ¿}êìÄt~»±êR7úžaå·öü3€«Ùqqí©O)˜Lh‹Sáð~2:[|î½Ñà¢1%Ú¾1ξ›z Üi¶´Þ>îÓ‰ËÕà†âBInEBGÔÁ9®ìÊ›mïþóÍâ!¥y͵ ‚I'Zç`3u7ͨJ®¾|e#zö†¾b§\º;÷èÒ×F£zê@§©Ô±GuÉÝܛҽÞr_ 5Ì®ë Æî¾¼R\Ò(ŸóË›ïŠÇîDÔ³¡ñŽsJçV·}‡9ÿ@Ⱥ}¯V×»Ê9HÔ¯÷Œ·Œ_œÏy^[6²SÃ|æ®ç6æºðG?|AïÄ¿¾î¥O-±Ï~uR/ì®}Éc¯EÚKë·Ç}–ÿKüÿ¢·÷y÷|ðYf¶â;ß¿Çÿ´ï•¿üg¿÷ùØoôYükWÿÙÙ¿yLnÔ£}ïÕ¾ø×¯\ò3¸ûôþ¾üö`y©wÞûóÏ? >yýû_zü×1€X€(‰Å¸€ Ø€€8v€Ñ°/ý’®^¡w¦0.‚ÂÀ™á¶ð."˜‚͂ڑfˆ‚*ƒ¤@‚…a‚3ƒ2˜ƒ!‘.è5/È‚:„ƒ%(Si#“„J2%£0³„P…R8…îð„Tx…X˜…Jè@Ð…^ø…`†b8†dX†;Tix8.4.3/docs/html/gif/tix/intro/hierarchy.gif0000775000122200012240000002000007426315545021446 0ustar jeffhjeffh00000000000000GIF87aQ‚ðÿÿÿ,Q‚þ„©Ëí£œ´Ú‹³Þ¼û†âH–扦êʶî ÇòLCÁçúÎ÷þ ‡Ä¢ñˆL*—̦ó J§Ôª5Џj·Ü®÷ ‹Çä²y™=«×ì¶û Ëçº4ýŽÏë÷ü¾?iw€3(Hxh˜P¸HÈøˆØ¨9I)‰iðTÃɈÔYó'::H çyжªÚ”Ú Ëc*{öZ;tK¤‹ ÄÛ ìølE\œsü£ŒŒÙü¬7 í»9½Ìj=›½GË]ÅŒ®ý\~n{€~5Ü^·î?¿å]äýûúN÷noäße_¤sé¼§nà.EÿÞ„w¤Ð­K×äyØOÓþMw%w0$¸J$6Ä1¥ ”)Õ©Tsá“¡–-W®¤$1碇B84””ʤÅL=Já)2i’€4H($“(×´Û—P*"ªQ5jEã¿G^½Îdé²ìÍ­6Ÿ:•©4.“ŽEÍA•-K6WáVÅ›÷dà¿aóȨYÀ€ ¯m<ôžÜÉMßb…(2ѧ‘µèêñ®PÈZ3sõ|X²æÓ£¿fŒ,åƒt}9Íêv/ÙÍœmýDx›°Nµ Ù|KE¬êÒ®açeNzîì鹘ÆN¹GO*×™û¸÷¶/Q?¿ÌºRìS“>;Iø¤>ÿn_2ýøïþÕ'e_ŽvøñG )»U‚ o—,h‰% &ø`dW2Ê@`†µÍ³_†~͆úHb‰×ù'R‡&®Èâ"®£b‹2Î8Ç‹Ùu! 4î(r×Ý Brc〹Œ8d’!¢€ï) ¥8LÒä“Q^‰K‘Aªv#–^¢¥• Áøe™§„Id•³à“Æ^!çchndf.Ni“r•˜BŒù‰ÙhÒÙIh4xÒS]â1´XxÆe2Übà•V¡–Þ1g6z®9•#8‰ÆTÜyúÚ81^Šª+‡r¨&9v%UP½Múj¨|R“j®|­Šä˜•âUXiÀÚEѧÍ©þk²fdjͦK¥•Û¨Y¡õZ³ŽÇ¥¸*ËmÌNãl³ÝŽûÅ·!¶ª)¹êÖÃ+™\¹n¼X´Û¥¯ðÊ‹ï\ôÞk[Ž/ä °ªqþpÁJšûÌ©/Œè¾[2 1‹73¡¿.DŒ±œ‹‰l½¼ÓÀ)¢+.È O,Éàš|òÆi¾û0Ë£\L¸+ËŒ1Íî¨|.Î3»¼Í7™'S"?«0f>/¬30Bæ§ ·Ö:u)KCÜt/‰þJ^µÉ´)s‘B‘ôÕPf%ÏE—mt£>v¬e›$Úµ<-O¬ðÜÖuƒ¦êÝòÚ- Þ²:—ÔoËx5‚Lx,OÏþ²x»MÛVÈßÜï9˜jSü9À¡·‚wÊ¥ã{º*©×¼:ë@§ 3DZ“Ûú™8ZÌÂíñæ^ŸïÂ×<{ÉÃ_xñ7#ϼëÊ÷Ü|ô¢? hЭöÚj×oŸýöRGÄ{ Òó|Âñ óøóMåÙ½ª¿¾ç¨þ£»ðÇ?ü…ôýG•O:÷ÙÏr êìÅýÕˆ€d3 ìj ¬&iùKo¸€¾žÔFdÔ{õžø^¹>XÀ6¬p!Opº‚òä$l Ô€št˜­fl쀡À<rí\iMå:%[9Ž…Ûê˜þ^ž#¸a5F´ YU¥‹AUb377e8ÉVŽŽÃØÅ’8pgp<ãi5Çð¦3XPTu˜˜Å¿¹q‹EŒceX=úyŠ‚7Ü\s­G¹‚„U¬Ž»cH[V3ä'æè´ýñ±•´'-‰Èé%/•£¬šñN¹V C‘t¤bE<K ~ñ}R#/sÙ/Yö¡ÝÃ!öŽÉ=Å™PSZ Ã×;`¢2&¦4µJ­Uóš+ê ‹¶ÉÍys–âÔ%4SÎ`R³œKL_:‘¶Nùr€ï„çl¬)ÊR¾¬žoÚ%==4O\òshñQ@ùÅÏqœúìß@þíI|JΨŒ >%j6…ò£ókgWRWz£KÓèHz& üp‡kNHòPˆN¥Ilh Y¨ÇË5“ 4•™I£ÁÐ[Zq‹oVzʲŸæ©ßô¨mù·Í•§1ýš?ª!ŠšóQ/—UÕE´—ZÝgU•Ц’Ó¦¯Œ)Z1Ô›þs oåG\)‰ÐzÖuì æ9OV‚Þó®•Ë^å Ö…6ÙL[_;ÓÆÞ°M‘dóiPsþÕ…=l7(ëLSÒõ²}¬\±šPҊδxuçh¯š×ó•Õ¡aõ,*@{BѦ¶®-ÐliW[ÕvTž¿Õn$þhÛVr3¹nHìF‹[ÂÐþé¥#í¬p]WM•Þ§QªÜŸÈÛü–¹mpîI¡Ë©Äçzni'ƒ^³’Õ©•ÔgÁêŽ÷ººc- ‡jT6:È[Ö/m3KßgJ‹sÐÒ¤ á_óZ·Ô-"%Œ5þÖÁlõV*1Ì0òò…Âî5ß~ \ µ·zÕp"ýÛÏÍröÄ +Œ+K«òÆ8žaJâ÷èÇTåñ"eL‚y Kþl‚ÛúPOØÈ%`„Ç PôšøÊƒ¥²r­|V7•¸O^^˜Q 嬖zgn2½\±7ilh$u³ìÐlæùvø¿+üTy•Œþe i÷]_mݭ̽·Íöíšm™E=zwVn3 @-;“#gñÛ€¿¢0;NÌkUñiÇdÇ»$‹qK »Læ=#Z›£upl<·6ʤVl¬W¬Ûëz˦޵|y=l0ëØÇ~­¨õûëS³øR†I‘ ØKúØBÎS¯Ÿëån÷'Ù䶸õóíó†ûÜšJ7PáŒí¼:¢×þ¥³1-ÛG+Ùφ)œí½Û~ðßs 8¾ÑsÐi§³Ú)Œ¶±ìVw/µÞ»+s­/<ï™R1¬0?œqÃf7ÛmSWY**Hy—“ü¶À!lné 5§P¥ù£Hþ²…¼~çsiéçpÚÐ’ž"£·½li´½Î°f·Ÿ—‹á6î9¤·:i¦3˜Ó˜Ãä—‡Ê'á5|1—éMð–«ûìO{eúËv‘»]áá¤:áïì|=Afw»Éý@«û=@Okß¿$À×2æVÍ{öN°¹›Ú…‡«ä›mp¤gYß厸âCyyˆ‡]ój–õ¾ïMzG›¾ó£G»àsÁ 4Yêݲ{‘_ïñŽ’©´ç–í™øƒ)ˆYšÆzDØ,@Ø\jsq¥¥„EHƒ‹¦iB$s†…RÈX4TÍWí•XS˜… &†}$„)'`àQc.LøggxCG}Ôl؆F…`]"(ÎU†vØx/H].±r—c|kˆR‚‡«…@“—ˆ«ô‡F‡„÷ˆÄ³ˆÃ¥‡1X‰wãþ†#‡I¸‰(ˆtV‚>ŠîЉSvŠÂ#‚·Š¾ÓŠ0÷Š«‹\4‹±S‹¤TQ¥¸·È‰—ˆ]ŸH‰¾è<Àw™È‚ÄX©hm¸xʸŒÆ¸a“øŒÐ8=ÌØpÈxƒÖ¸QØXuÚØƒÜ8LÞxwÈ)ÃHùõ5(ŽÂ@Ž·Ž}r$&ôp5ØŽw"ÕcÈ‚h—ÔU‹ò„Ñâ(ƒrî˜;fŽéUs87FÔFA7]âUãxc°ÒFƒäPWi’8‘KõŽÏ—¶ts© æ*z3l‘˜ˆ¹hi#iU¤âuZ÷H^ç&ª&7I‘,9IÎz:i(YjÔø“@þ™V!¹}>éFy”BékyzL‰ Hù€šÅ‹>$•˜B•˜•9³•Ø•æ”à–!ö•ì{WÙ‹À¡–XYY. J¹€P ŠG}D¹”t9ŒØ>0ŽÌ¦‰vÙv~9„œ·—Ð7˜zY«w˜ây„Ilx9—‹—ö•Ø"Fgy)S6´vU™TøhwDE ö:ò¸j› šgû¸t“Æ]ÝÈ…?q“ ²Icùuî‡›ïÆ™’U¹ÙŒW~kƒ_iM<™*¡yŠ”‘ž6q>œC„ )9œ¢‰˜r™ÔéœX(œÑ9,EeœÙH™¬éŠÙuºñ…ÏÙDôqþ‹RŽ«¹›ê©˜E ƒÈYž‡ŸYŸyyŸû×z‰)™*¸žŠzwi˜‹)!šyêWm¹52¡kù–ä)‹›W–Ge¡¶ÈxŠAª‹Iç¡¢/Ù¡#Ê%—V7¡n¹‹-J»£1c£( ¹§ JçˆÝ™Œšc£Øy…Û˜ŸB =ªœfÈ¢ ƒ9¤…飩—iEJ¤<Ú£€i¤*j™"Z“™ 9Ú¤‘)XªzAú—:Šyfz¥óÉæÆžt¨hdøj¸œJ©4,jdÖBKxZ§m¢™Y÷§çx§æx¤:c—¨­Dš²¢õ9Uö%¥„TšeW…S#5úÀþ'Ä€¼¥ÖY PCè9`-E›„£$8hWˆNTè—h°ù}l9VôÄŸ}D+ÇDµ)I”S£PšoTzZàù¸Z’©ª˜XágÆŠ=鳚ö¡KP›D•†Þç7Íšr°W¨YzdJIö­{Ói©i¨œIìE®¬f®q¸™H­µ8Ò‰’›z_RÕ7M$]ßš“‡êüzL¹81ršÌ¤L É®‰®³5¯¸rG‡žoS,[!°ì(þÚ“I*£½j|þ86阥]:è™Iॆ_e“é9­_꘴`ù»ÙK>‚1næâyØÃißñŠš®’耩æÄ¢þË‚}ÊHîã÷Û’íÌ´ÝÊZT|¼š°,GÔØkÁºÁ‡¿ýÁ]è§~èÞÙ]rÐÙŒ“»Ë6 õèôm܉#è÷Íæ©Ÿf[ýt´2]ß'EøË壪8Mâ]Ýu®ÞZ~»ÀÐï=íÈÝ8ŽžÒÂÞÞ¢-’„îìSþæÑÉјãÑ»Z|d·™¨àmçg{Ã^¥ÂgŽêßÎÜá¾åÐÙåáËëILãpΈ F°½ïÝîëWë†üäŸ”Øæ€ÍäeNïËð³Fä\nä<þçïïÖüØ™Lá}Éá@®ä#^é6®ðU¹ê#MîéMñ/nñòÍÕæŠÍñ-çMþ®Ó»®ñ¹òõ~„ì>ç–>ó`‰æ˜wðƒ ñó@ŸóI¿×ÍÎô,ÝîQõT.õI>Ó÷^ V~½=ßóýçy§îNÝ-²×‰a¯NZשÚèÞ½ÜêXõÇ^õ£ HæÅöéQôÔÝìç>|³Fµí¦++q*ê¿AêdD³†Îà%çŸÄ(­° ±ÌžôœG©&Q{_ànoïù¡ÝÓ9íT´ü“ùêåAç§âÞ>õÚ±^ßîmÑrß:j½ÏìKú.Úäß7{Ñã^›`áç{åÌúòNéAnÄ?B¿ó ö”ÅõïõëQóe-åNÿï&>ôþÕý’úwõâ*ý5Ëâ1/ó^~ýëÖôÿûßÿÄòà_ÿ‚åOñp¹ýa”“Ö¨ЛwÿÁPÉ2t0Æ\ÙÖ}5KžéÚž¸[ßù9íA¡ä—‘‹âaih&¡¼g”ZEm¬ÙèTÛÝ¢¼a8#6C¸gµ-·vSÒoù¸<7?ñös\ßgbýúøÉ­òêÿbÝ#×)‘,•.¡&7ÃÚý‘þñqÖ¡ŽôKºòÝÜë.ž¹wÂØ›j§‰ž—eòÍc¯]ÐÙǵ]wC5Ï}÷ß ÄÝ=à‰×¯÷á‹O~:áVÞùã˜Ï÷ùé¥=¾yê±×Ñzéw^Ý{Õ·*Vüï­”8Ù×Ñ÷,{R¶¿®sÛ²Þc}DÛ'~´Þÿv~;¢wÿqÑ÷7²ÐÙ*n$ WÕÐ?ûq.qúC «îGˆ.rƒÿ“¿ íÍ`ʰˆŠä¯¥j€ ² Hê—Á†yÏ„ Ô ¾ùx¬…rþ;áRèA’)Ä,/êXÕ&øœè ,i ‹žŽÕ dUî†á(!ü †‘ºHHlK©¡x¶6ke\2¢ˆšˆÃ'Ú§Š«Zñæ%,ÚH@!]ÎÔ„F±„ñ‚9„âϸ„&üÍðkk£M7µU¬{tü„'· ÙmM¤Êëf§¯œ¥M!ûáÕcÈ.`ð† qä&5yÈ1†RƒŸì)7‰HJ‰DeMT‰@O𕘈%ÃÀ¾ñår—½4_>ÒL!ÖÒ·¤£)‰Ù­Q&†Ì\'Q‰Lg͘a”æ4ÝvMâS˜Ý”6QÍ&nÈwà$‡8;yEä™sè<þ!9×ÉÎØ,Sž¿¤e=y¦MàÁózø¼‹;-ÈOîù³"} @ F1ÝÐsˆEˆAe©Î#î„­¬‰C ÊPvŠ`gTì¢ YR‘`´15§@¿84z‘HŒ éCM N”–“‚Œc,õ™ùÂuªq‡îÛÉ0#whÎäͬút<÷¹ÃP½riSÚåüÃøÌ‹^W”_Öæ·Êù’›>«§#9겚z‘«««9ë­Úz»Îª¯9ìÏd9¿“ž®£´ì§{Ûî³×<íPŽ;˜É ;Tix8.4.3/docs/html/gif/tix/intro/lawyer.gif0000775000122200012240000000152007426315545021001 0ustar jeffhjeffh00000000000000GIF87aÐ5òÿÿÿqqqºººmmm,Ð5þºÜþ0ÊI«½8ëÍ»ÿ`(Ž$eª®l›À Ïtmßx®ï|ïÿÀ p¨kÀˆÈ¤rÉl:yFÔsJ­Z¯Áh Ëíz¿C-xL.Åæ´zD³ßpçiN¯×qî¸~´ûíx G|j†‡ˆ‰Š‹ŒŽ‡5“ ƒ„fœž’'4 7‘7yšcŸ¬­¬¡4s¤[5§6©ª_‡¼½¾¿ÀÁÂÃIJ±£2 6¶5¸¹]»ÅÓÔÕÓÇ3²4ͳ˜RЫ†ÖäåÖØ2Ú܆— ™á^Òæôõ¾ès3Ý3¸ ñ¨ÌãåÀžÁaøðáè§L8o§ Pð Å{ɲeÔÁþpÀ¿RÌS ÀÅ“ 7æèø‘VÈ%#Mþ’yò`JX;X:tÙçK$1KÖ´x³‡Îo>ià¤G§nAeÚt‹Ò§Ëœ9tæP›*ç|r^ÏW•¦šâZZÛÞjuÙÕͯô¶"k+Z¶gc½Zկ฀!òGð.A¼öô²âû°°µ‰ýÊ=œ¹êVu{9†|N¥“–;Ö¸Ùð`ª®ç^ɘâèѤ©)l‚z)lÌ1Z¿*Xöç…µIzÍ]n7“Þ¨2í±©âè>eƒN~›yó°”þPNzÜ2õÖž·Î¾þ7{-îB½—Æ™.¼KØßU.>×<þgòmQÇÞ%Û ZwòUs“}b'•{†èÚz2…^O¥ÌFXh%¨x(D°~êà6þçߊé¹Dák²c ] x¨ ˆ0nu”‰%ª6˜Šü‰¡zåÁø Œ3Õhã58¢(ÃŽeígÆ‹â̸dd8¦ø‰ÆõE•U^iPQÖ1ÓN~QBxF‘dL$&9d6dÊ™=z¹&˜`¸ùæôåcÚœ\zÃãOWè¹'“}:·¥ƒ„Zaè¡ÄÄÉ]JÙh‡0¨é¦œŠ‡LŸÈšž—*aH§¨¦Ê (•xÂh©Oœªê¬´Þ4š¤Âª«­ÞZ§¥»ûÆ3›±Æ& ²Ê6‹³ÎF;´ÒV»„ Øf«í¶Üvëí·à‚;Tix8.4.3/docs/html/gif/tix/intro/ctl_noopt.gif0000775000122200012240000000473607426315545021513 0ustar jeffhjeffh00000000000000GIF87aÙ†óÿÿÿÃÃÃqqqëëëÓÓÓóóó}}}’’’,Ù†þ0ÈI«½8ëÍ»ÿ`(Ž$œhª®lë¾p,Ïtmßx®JáÿÀ pH,ȤrÉl:ŸÐ€­Z¯Ø¬vÛœzÜâ L.›ƒã3p0ð‚ ‚¸|N¯Ûïé»~Ïïûÿ€‚syƒ‚lmT>†‡‹Œ‘’ƒ…“zˆn?–{•›žŸ }¡˜Šp¤r£©¬­« ¦_š­°®·¸|¶ž²o®»¹ÁÂÀ–½´„ˆÉÊËÌÊ>ÍÐÑÒÓÔÕÖרÎÙÓuÆŽÈÜÑÏâåæçèÜäéˆÞl™àªjóôõöEñqÄþÂâ÷Šà£UßP T(  @ýDE0¡7ƒŒ&>Ì¥‘FCþߺÈ0RÇ¿>RRÙ¨d)‘û\žÄÃeÀ™vp’ÌOfM@:é 5ôOÑ?ÿtrB'¤>_M“J”:çh«–°îÑJÑåÁxRD• êÂM'±r´ÖNÛKTuõŠg,Ï‘v‹Å½z¦۾ ÷Âe6o¸ž;õÒ½ÓB@Q«+ä X²Šª€S(L“ðbo†U•=&ïsË@Wv|™/˯] m-›õj¦‘zºßèŠs™ôö9så¡”cۆͼ¶í¾´ï"w·ÒáC>+¨¸rèÇÃßü¯rçÒõ€‹{ÎöÒwc&Žó¾ß^ï–—;O^¾­ÚÛ9©þ´^uîå¦ v¿ùdDÃmu›w«©fÜxç¹V!~S}6`{rÔWJE Î'À:Ô4¨ÇçE÷ØUûØ_„.¨á6ípHŸý øiöyv‰Œ=#†±I^bVazwH`‡8–¢#b@®¥Vü )á…àq™dyON²T”ìÁ×TˆUžfÔ/z &-º¹Y”]Èw‡á…gCRa¨ßŸq*Ù&˜€†Éç‚¢L©§™bR§Ÿ™¤1ʈÖ\w2*ÚŽÀÑi¨_6µ'‰Ýìé§ ^ê)¨©ˆª)©Ò(*_šº± ª«=ªŸYššÄ™­¼ü*¢¯d¡:lA«û ®þ&ÛÙ®<6˰NkíµãÐÈNµå€¸#¶à†+î¸ä.Ãí·å¦«îºìf MOC°QÀ¼ôÖkï½øæ«ï¾üöëï¿,ðÀf8'¬ð 7ìð¿#Ìmv?lñÅglqÄL|𦇬1$—lòÉ(§¬òÊ,·\²½" ±·TV,òÍ»¬óÎ<ïÌÔ{¾=s±5ƒŒóÒ ÷ìôÓNÿ\ïB@´ÑÓ¼è©LwMpÉ„-öØd—möÙh§}6ÕS=o ÷-sÖHoýÒ^ç 0Øj÷í÷ß}³M/Õ-Ô+÷ÑÐz«÷âüò øãû-ø¼„³`8Öþ{&ÞŒw~¯ã‘‡.ºØ“0Á ôNwâÅÒ‹‚猃nÀ £×Žvé¥ç«zæIsýöаë-;í¶?6înó»»Ö³Úüzðy;~BÙo=òR+9ó¼ú^ÀóÐw-}õd“o½íØû»|ÝÍ+ý=ðá3=>õçŸ~¿ë³žëð¿®¾ÿ»W«fµçÁÍ^+ üô5¿òÕ}É£œäFÁ Rq›ëÝÝøgµßï€|_C>vð€àKáK˜¯ŽÍ| î,Hà b0Oíóž ?ÈBÿ-P„@$à Ø¿"Ž0ˆûr¡Ø`CÈͰ†P¼á¦4ˆˆz€VDbþ˜Åf1`J ›¸Ü%Œwv«â×ÈFbñZä¢ F’-qŒc$£ä"¸04æpƒm\¡øC/r„.øšňG=FÎŒóc÷Ç#’G¬dÙ´Eή‘Ž|ö@ ÅSQQ^‡„ã%·ˆÈA^²“¸#ýBYF>Ƭ”w;%ç4¹ÉVú® f&ÆÙѲ–Ù“ æ&ÉÌõŽWd%SyÈ!Zò‡ø*fi6ì¡n^ùË`QÉK6r›"Äæ* Â/¶Ð“ŒL7ÿ–¾Â¥n{웤Ë9Í9bRÂ"@‡ù9x~Ržó œ-ƒfOpâS›‹_çþd—ÐG.4{ít(3¹çL‰.Ž¢åE«vµæ³£žAC*Òdš.‚è 'õIΔŠo¥,¥çHñ÷PqþqŸ6•NsªP—BÒ^2â8wÔ¥”¨j»ŸöL Q›5g%+V· 4—ê®§3EéUoF²­š•]…" qI1÷Ude=«\?VµÚpu>¥)SßÊWÏÀ®kÅkX××–­óÞa{Õf–±µ©c[ÙÊö‹cãèc-ËÙ{aV`“Ý_géµÒšve]ýÀÜ2{ÒÍvö´°…­QaJPÕ±¶ªn}mlwû´Ù&3¦X»m^ŪÛXBµ¥]=gÜ‚þ ZÍRv´xêq×6Ò†À¶ÍmísG+Ýé–­ž–»çj³ -i@w^Ýõîñ.úÍë27`?x×)âµW‚¹1v%žz¥º/ìÂW ¨¢oÃîûÑüª@½a㯾ü 0ƒiΪ #°ð<9=îw§S=£sEa:N” ô®‚¿:Þÿj—Ãöõ0~ûÉYŠÃý}oƒ7Q…õO_ÿc§%LZ»xºØì#Icì•Ñá+yŒ^[øÅFò]…;Øí É@à’Ñi/m"ø‰R–ñ¿B[ãÿÒë$h¿¼|a¯vÌFö׎9YÉŒÍPîœsû¯9Ÿ¹—vžÌþG¯íY±‹šéLL'¿ðË%%‘O\æ#tц¥,ŸLhߪVÔŽs¿üŒiw6šÅ~t›SëÏ8Ô|5—5©e"^SÍõôq½™H‚·ˆ–ó¬Khk“ÉÑ50BWݶŸY—Ác.r¬ù%abóðÖ¤nœ²Q€`€7Ðîuu´aì¥![‘,î6u}«\¤ŠÙ_‡¦¤Æv8kM«ûv0®¸á-ír[ŒÞ¸¶÷½»™ïÚ¾»_ñjÈÂ;²¡|Ä%ýõp]ËÙôvâËÝ7Âû-ïâ|ÝÉ婯ù•ðšw®(ß@È3Mz°bÈc}ð‰Jy³Ù’4ëh¾È7“_ÇŸƒ«Ýšõpãu+F^ØusØ|dç¡ µ2ïËhéŒýf]TŠ×Í‘‹~žzyræÂÏ+5ÌÜÖÕpUfO®nÛòÙÜÚéòÞ^é·þzð«…y‚WÚV',÷˜zªáòÞ+ñM7#Ý…ßÍHÓ]_1Öšy H^g¦­‡`‡þá_%qa"JRá]‰E͆¾¡by"²g`ƒ%¸"€ ùÕƒÇÈ—™~£Ø…Ý…ûôv‰‘¦èãˆ@'¤ŽD¸ã0‘Aãl3>™?IÙ_ƒÀµWœsUЍ •Ê©%,a†µdmûQ…Û™i¡¹HN=Ö¹%‰ˆ®ø[ ú· ž‚ê©“1™™W¤’¨I ¡Æyh– ê¸è£«¡Hªƒ˜*9)ŸMú9 _iê‘…ÐÚXevc}×ÝëD²2Ä¥!¶z…«ª±:þé륾E`$Å›g®ÍÞö*³É:Ûå Ãj{¬„©N—•…gvsL†æ¦«îºì¶» ºÚ¸h®²R¸kï½øæ«ï¾÷Â[‘U ðÀlðÁ'¬ð 7ìðÃG,ñÄW̰—<€ÅwìñÇ ‡,òÈ c¼ì(“¬òÊ,·ìòËã…òÉÀlóÍ8笳Ìä^§óÏ@-´Ä<ÓèäÐH'­4ÐE[ŠòÒPG-µÈMÓðÔXg­õÅmÏÖ`‡½uÕú,öÙh'MöµO§íöÛ8¯Ý4Üt×½²Ü]§l÷Þ|[Œ÷Ñ}.¸Ã=øáˆ\¸A‰7Žøâ–9.yàþ›í°˜g®ùæœwîùç ‡.ú褗nú騧®ºWÞöåôÄ.ûì?ÐzÞVëݰ´÷î»<¶?ìzÍóþûñȯ<ḗýúîÉG/ýË7<üÕ°O¯ýöKTÏ5½lŸýðP>ç‘>÷è‹àÃúNx¿ðõº3l<ùø—ÿûì§1ÿZŸÂè±û™Ï}=Øßþ…þ!|„»w;ðÍ­xäËAú&Ørt Ö'AêUÐUßA@`… ‚3Aîà…æa uø>Jo‡ês¡mxC2”`,Yó‡=èõˆ7Œ =8D ̰þ‡5,£èC Ñ‹È#cEê0†ID1˜ÀFQˆE4⫘Ã"Fð‹vÄ#õ˜E-NOŒ ìc a8G2¤ñ`kT¡ ݸH+Ê1AÌc#ë˜Á7NÒŒtŒ )iÉó]±v'´V ¸Ç6^Ò¥L%';ÙÂ3ÆÐ’t¥ö6iIVÂ0‡4X"IiFSB•½Te-mÉI`þ’‘²ü#78ÌOú —Š[â(í'Å#NrŠDf5_ÙBlÖR‹¤åìÄYF"zRƒ¸ ¥}œ'>^Šqeì#$óçKf^²—°æ=“GÂaš’ö„f̤™·ú³ŽLh6c©O8"°‹þ ý¦§¸=l³“…¨:°]RsŸ•äCÏùDGžQøœc1ZÎ0‚ó¢×Ìh!7ªÎ^±³‰mé_ªA*ÎS›}¨OzÌX’q–t´ç{ºÔrT`]˜EHUö=µQUØT«ÊUé]5« ÛjWÇú»¯pŠ$«ZigV ”këìڊ·¦U®xE]EiW^æõ¯æØë:™X?©ö°­éÌnZX­"ö±l¬M kPÈZ¶ ’],eázÙÎf!³={^N=KÚ'€ÖkŒãl ÐB¶V®ïÔBNë´vŽvµú›9ÿÛ,ÌV±¡µ­aØ…£Žðµkþ5.r‡ð[áÕpwªoÑé„ÝâÕˆ­Ôm€‹ÚÈq6»MÅ"9ÙÈ£þÏ¢Þ)·ÈCã’»¾teD*DÚæ®²V¤ázÝ Ð1Vñ¼<'Q•KF*Z÷û p¥Û\æ¹­~j!å8_zS½"䂉zÊ„nX£çÈgL?,âÚ—±øoÙG.õÏ…3ǘ¨o<œŽùÌ£½õà;:ïN,ûñL¥¤ÝyzêbÞþ÷§”nXyËŸ]ö ¬¸f~0¤ÛÞÓÉýî‡IßCÎ+5ñ5{ã¿´ÇôÖ±ßFéo¤;¯;ðA_Ô†föÝw=þZÿq~Ý9×§ªqßbx*õ§ºwä§{Ù‡ð·}óç}Fu÷‡o…7w4¦xî#çwg NQ¶i|²ö~˜çw™×wÜçwÈ'‚6×€ý&~ny–w"Uõy/xx$ƒÂç4‚"¸ƒ®÷zÜׂ§|ÁÅrùçqŽd^BµT§÷BêEh.gw͆wh€ß÷wõg‚%èzá'qã@r[Øq¬5S_(;aX„c¨we<((p W\üµ†çp†G'‡ÛF‡Íg‡׆—ozYxh0bõ‡ˆˆ3ˆ„X†H0ˆ˜ˆyµˆÓˆŽ(W(0’8‰kU‰ЈWxþÇ׉8¸y?ÈOEà…³Ç‡'†@˜…Nð‰¬8 øŠ´óA¦˜|fi¨Š 8Šž8‚ Ø‹¼HUgagBØ]}È…ò÷t£(‹Mð‹Ü³söY¨Èqh¸Š?¨ƒ=Œ<˜€ØX|'G€·Œ°çŒ²_¦4m•I†TDX‡iWy8Ž¢h…ßè‹áè}¨€ÝøCè×ax—wF¦‰œX|ýXŽ%Ž»‚XøÄ'ûXQÿˆj5H_íxŒk†sð(Š>ˆ&¸ŒVX…ñ’õØö8Kß„xy$z“DÇÙ}ŸX’1¹‹ÙŒ"I ùG)™’8Ä’Dä’ñØ‘ )“"þ¹ŠEi“xÛ'{æ;1•?)j-鎙‡5)“Y)ŽÜˆ”^©•ÝX ‘‰’v$jÞ4i(”`“ûH”Eà”š7–YÙ–‘féP\·’DlI‚x Žpy’XH–Ki˜s “OIÿ7b¹FCöf•ø˜e)˜u¹“F‰˜$©• È•˜©Ià%yŠ6li”óxšÐèŠ8™ƒ¬¹š­ –tɓާl>ea4…‘­6p˜XUéSš»ÙUt䛿ɛ`$œÃé@™dœÇ©VʹœcÕœÎÉUÐT5Ôé@ÖyV%™ß¥ÒɺéÛ‰›Â6pµXŒú#²…žm7ƇþFÀžë©z=·t±óžêYе¸@im¾5Wàéoäu\òphÅUŸ÷ ~8 )^˜ä‚nGuÔמù3a#e}–¡‘7 ñ€ŸÑÇiµi`r…2¦žË4j ôb幡WGÂÙxšvHƒ6Ú~*ÖlX›¸b ƒJž —o2ÚdFúvÕ·['Ú@*zz>Ú9ªW ú€ôÔh|I¢,š¡t×gÛäµJ“Ç~0:¥-§~xv¥]:}pW}lÚu]”zc¦É†BÊ|‚˜¦¸G%ªJNøk<Æ¥Ôæ¥=zOr¥sH¦E˜tVª§TšêhücW”cGº~cZ§„7þo„F¨fk;ZkƒŠEŒ&ªÓ¨zCæk:ê~‡Š©ø·‘›ú¤Åb7«Žv~øDªR¨s?u¡n&Ÿ`ˆ¨®Êk`Âdz)juñù_úõiÚN-J¢£—X¬š‹×(ž"”ÖêUÀŠ•ÙZUØÚ­Èó­àZVÛz§ãz­åzˆçŠ®Óš‚ʸ®Ñ#®ðj†éʈó:ž·èmÔº‘÷:=òÚ¯tš¯ñ–©Õº™Ì¨°è‹¹oõ‰/Ù•­H™{‡©‡Ð Ë•»€‰¹±w± K±r‰k‡ ›¨ÉŠæ¨“=¨”ß§°Û¸™›‰ k‰ëÂX“±¸±k|_©±0û‘bþ²ÕY³›x³ ©—Ù#¹•>ø³ú´œ)ûœF[ƒ ›%‹™9Ù±N›˜äHµa ¶—u²_ÛË´:;“mi—^Û¶¦I™ŸYˆW‹´o‰¶;kvM)· ¹”C˶± ˆu{¶më™qÉ‹›”n;¶ØxdçY©´w ·HÛ·Á8¹9k¸«”;¸™ù¹æ/wÊp¥ÊRÅÊ­ì°N¼;™#Ëß³ U¡1)¦¸lɼˢŒÆzüËHTA?‘Å̘stº¬Ìrœ¤ËÏÄÆÔ\ÍUœÌÊìÊÀã=Ü|Š‘<Í=pÌ›xÍ»œÍhðÇçl‹³Œ‹îÚ¼> Êo<ÎË<‡Á3Ï]\ÏúzÏ™ü± Ç= Ϙ½Æé|ÆDðÆ$<Ñ Â.¬ÐÕ+ѽÑ]:ÃþKÃ"=Ò$ÍÂÌÏ(­DFÐ)ÝÒƒ,Í.Ó³Á2]ÓPåÀÌkÓ:ÝQ8]È;µmÓ4ýÓ-ÔBÒD]Ôã|ÔH½ËJ½Ô¡ÜÔN­ÈPÕf<ÕTÍÄV}ÕœÕZ]Áô3¿ÛfÏ–ÖÚ&Ö—BÖ¥eÖÃ,ÚÒÖ1-(á4— n]×+ñ-.AÈsÍÖvÝ׿€×{!×=Á×~]سØi"Ø,BØ†ÝØ¦€ØPa4úBËüRÙ–}Ùù"/÷R“ÙžýÙ .šm/ Ú¦}Ú¨Úú26ÐÚ®ýÚ°Û²=Û´m ;Tix8.4.3/docs/html/gif/tix/tlist/twofont2.gif0000775000122200012240000000343707426315547021277 0ustar jeffhjeffh00000000000000GIF87aËxòÿÿÿÓÓÓ}}}×××UUUššš,ËxþºÜþ0ÊI«½8ëÍ»ÿ`(ޤœhª®lë¾p,Ïtmßø»DïÿÀ pH,ȤrÉl:‡€ÝsJ­Z¯Øl1jÒ Þ°xœ,€µn€G0¸ßð¸\žÛïø¼~Ïïûÿofm€vfjl„…ƒ‰ŒŽŽ‚n†R‹u“š›œ˜™•]—‘£¦§¨p’“¡k=qf±²³´±_µ¸¹º»¼½¾¿ÀÁ²·Âf°i–°dËÌÍÎCLJ¯ª¥|Ÿ©ØÙʉ«€×­ˆÔÜÕÚæ¦ß}ÝßáÓåzéçô›ó{ë~íÈ¢Û„÷õ6˜'ŸºQîÆ+¸°Ó GñDD×ðN·$ð¢%÷þ¯b£‰@)‡¤&‚x.,Q?W É¥29@*”?54F áKq-½y©"¤M)Ü PjÓhS§&µ7”ŽÎ•A)ý|×ó Æ®§}*µéR£Lͪ] •ª sT¦d 6ÐÖ˜n*ÒWX¥N™¦mɧ†Y•ÄóØ¢{÷IÃk@oVNCŽx–³ç9™¿Õ÷êÜË ýU–wYSè©h“zF|–pá“‹I[}Œµ®Öɪ‰éj=éum©€gVû¦¶è9ÂKó>íÜ]ÕìúöùY,ÛÁQ?vûÏtNÔ×9 5žùíðÍɺOìü¹7ó…"û®>{þX¶íÅ' mm xnÜàWzü‡vEh„Z=Ö ƒ9(…v¨áJJ–auyhâz典߈|Étâ‹&¨¢FýPSŒ 7æ¨ãŽ<££pÁ¬ØEDiä‘HòdBA À“PF)å”TViå•Xf©å–\véå—V‘ž]`–iæ™h¦©æš\Y× VO çœtÖiçxæ©çž|öé矀*hO¶™šKqªè¢Œ6ê裊P¨0“蚘fªé¦œ.0)•"*€œœ–jꩨNé©†Ž ç¨¤*무š¹j«oZwi­¼öêk”·R Ô«¤>Ù‚¦'xþ™B”Éþêl–Á‚:¬®°BÙ¬±0›í™×rÙ­ß>+.° |êR®fì î¶U†«,»Þ»î¸ôJí¹,¦[-¶]® - Ú~ù­»*ìn½iÞkºNî».ÀRBŒí¶_[qÁ[vë/¿?Œ1Âk*ü[¾ ;¯•Ëk­Ä÷+o¸'+óà c*²›$«{pË'S¹ìÊ¿¬ò±3³\ó™7J¦Ã;÷ìt»Í6 uÄC«Ü³ÑG—™´«ÔšÜtÊYB,µÏBOI0»XgýåÖ ël5ÐpS½2Åt¿-wÀ4Çœ­Þj£ÉvÎLÛýóÓsœ6Ù†§,1ß}ÛZ.«Â¶ªnã”þ#üwK{}låœËzy¨™Ç:ñÆ—^êçÓêk²é¬ÓŠºä·.;ª¯û4ùì¸oZ»¥±çî{Èã øê¿tð‘ÛÞ»ñÌ{¹»¨ÄÞ«Ô7¯5òÒ¾:¼csÚ½Õv[Oåó¡3Kï÷>‹Ï%ùÄŠn,ÊFKï±ùñ˾µfË?øÅ¿³ßµû£3ܸG1¼Åì} [úÌf0v¯oþSïÆ2p€Ä–À‡¸ep¦‹`É&hÀ½€< xAªìƒT›o—Á¶P…5äÊl(Àˆ9ð~”›aìVHÄ⃠ܠ £Ö@péuBŒ^ý'4iþWª^˜B–.Š$TŸU…=|a®}…Óâ‹Æ4Êoý+ã†F8ޱvÌ£ð¨G8ò±w”ãÈÎø?@úQ8#¤ÿåA  ˆÒ‹aÿȳ¯9Ò…Z2œ!µDI§Yò‘™,Û&±ÔIÅŽ‘¦<¥Ÿè1JŠˆTï–ÀÅ)®cQSeÜZ‰¶^î­‚â{.h¶-“–ºÔ!Ì|9¯_^–’‚\-¤1Ìå“eǼâ÷D©Í_:1™² Ö4-Ñ$b®f»<ÛÜBIK7Úì\°šÔ6kž›çì&;WÉJÆY¯”÷̦:ç6Qb1oÌ f,¹¶Èvúsò'$ü¨ˆÊ¸³u¥ñøè†s¡õÔ0=BÒ‘¤ÿ4©"GˆÒæe´¥³{)L1ªRÐÍr¦¾“)N¿XÓÔ±t§¹Ó)P+'Ô¡6Œ%HªR—ÊÔ ˜kŽ+MTS§JÕª.õ©ƒ´i׬ÊÕ®z5XM¤VõeTæ /ªe5kò󌶺õ­UÈžBàJ׺ÚfÔê@8£¾Ê'êàÚ^ýJX{Ö‚eÄa ËØ¹ðÕ*¹lc'›¢“$ÖE”Í,b+W#-)I  ­hÁp$jŽö´¨M­jwqˆ¸öµ°­lgK[|õ¶¸Í­nwËÛÞÞ6;Tix8.4.3/docs/html/gif/tix/tlist/widgets.gif0000775000122200012240000002112407426315547021154 0ustar jeffhjeffh00000000000000GIF87aÉáóÿÿÿÿÿÃÃÃqqqëëëÓÓÓÿÿó}}}óÿ‚®ÛçYUE,Éáþ0ÈI«½8ëÍ»ÿ`(Ždižhª®lë¾p,ÏtÍx®ï|ïÿÀ pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬vË£là°xL.›Ïè´zÍnþ¸{N¯Ûïø¼~Ïïǽ~‚ƒs†‡ˆ‰Š‹ŒŽ‰„‘’“fr–”™š›"žŸ Žœ6¡¥¦§¨©ª«¬­¡–˜£³´£®·µ2®¸¾¿ÀÁŸ½¬°€ºÉÊ‘Ž: Ë.†ÔÕÖ×ØÔ½ÙÜÝÞßàáâãäåæÙÛçÚÆ—ÈÏïðñòó«É ù ôŠÑ-ÓÔi+ ° Áƒ’K§Ž»X€ëG±¢ÅDo±«ÅŸ¾|þü,þcP C…(Sª\Ùí¤9‡Çþ8¤Ð%Ë›8sÞ´ir#-EEî! Y Ç¡8šÉ9¢ä‡P£JZ`ªÕ«X³jÝʵ«×¯`Ã:¬ ÖÌv2i&䩳­Û·ãØž;Ë1Žxõ:ÔQ¤IÁÂÁ´„ÓŒ+^üÈìCwN Ê…K¹2ÜÉåèþ´ë1ïǽvû :——…A&¸µåװͺ‡ùÚɳgF.X;¶ïßsgKö9 hgÏ …=¸(4 ¨SoXY8ðë8{Ëní8fLµëÄB%+¾¼ùóèÓ«ÏJ^|w]Æ‘Vî—sýO7K¿@;öÿÙYþ÷v½—xO×Þz 6èàƒè-Ö{u ur¥-§!s÷yòAtûE4Â…5'ˆ"; èM:ž”¸Žwh!ˆc8æ¨ã)nf¡|zÑç\hCzˆ©õ—‹7¥˜â5O¥5SBÉ"K$>Å“Oɘ pØÈå€cªhfJc5T&7iV£™$KÅä>÷Ö!RÏ CaJÒ¶¦BUb(9:p3è‡"”%Œ/z‰d#þ‰Ž¤gVÚ¥ÛÍuqƒègœ@fÈ?5'ª?( iO¤Õ锢W: ë°Ö:+•¯R™ ­·®`«pI€£¥Õ'°–&«R›/þaêæ¦p.5qCЪűJMc^®ää·+žø$­±–ëk5W 𮹶bi"“nÛ¨–BšipÊÎZ¨­‰æ»Ž³^~ò순ö!-;2ò¶š(Éä°Ý¦%¸ˆâŠîºæŽ›nÅ»²+îÆ+ÙÄĶm9/´h}w¬ÉJ±¿-eéælc’Ìì—‚xªA‹Ȱç&·43NŸ[ô¹á~»/ІbleN"ko°' ¦ˆÚâ«l¢ýÂ|3ËTÏ› Õ~è<ÏÔÀ° g5t“óë4ÒS òÅHãýë5äM-,±Wë–u³-W™ëĹ^Ü5l_/iMÍ÷¨ÇÁ 6þkó±2™DÇM1âz‡.hÇz¿ì.°Óûlàb𰉆›¾tÒ•6îçãF¾úf‡xBæxlþâëâ”ëñÜíÖúùÆGmúéþ¥Žò} üv¥‰+nôòìªh{°Þ¶ÐÿJ^Gᆱðó·D<ÌÞc £V€§\cõ¹_fáÊ=wögúÞÈØD³üÍ|s \úV<6´€ð‹ ûŽéÙKÓŸŠØ+¥Í®Wd˧&/±ÝìMn@ßcÐ@4<„ŒaÄ8ç¸ÝQopšŠø6»ŒÝt!tQß`˜Áî. \! UèÂH…%‡Š¢£Eö€…l7Ü!þØxx·Ã±ÈeÌûáu¾Ž“ñ„KC•Hƒ†¡ŠSŒ£çHÇ«Hˆu/ö~ؼÿ!ÏLd¤a Égĵ‰lÃṵ́à‘Œ¤$'IÉJZò’˜Ì¤&7ÉÉNzò“ Œd#ñ88 Œ¡ãUÒĈ@ê±gD™™È3¸‡qd(wÉË^úò—À ¦$sIJ-ÖP†È|‘̶ÝRµÌÃ-IB°G"àšØÌ¦6·ÉÍnzó›à §8ÇIÎršóœ‘,§ˆi¿0åq‚ÉŒ':–©º—ȲkŒæ¦‰‚\Zóœ ¨@JЂ4éTz¶N,^p†·“§DþiʸÜS‘ùÔg ùÙ”jàš– )Ï$PD`¡þhh½ŒUÊ-N4™®„§=ɆQN‚£ðçGQ*Òž2†¤ä©!*Ô¡ªÔ†Õ’yàXǦ:õ‰åaªVh†ŒÚtr´ì„GAÊ g€âT>)BƒjÒ±¦”zªZ×ÊÖ¶Že*bÈêUs&×蔫ª8XEVŸÕš&%k`Ñ )Œó°ˆM¬bËXF¤qaV+]ëZ¹­õÉË^‹Ôמþõ£‡ø,$ŽjÈ,>‹±¨M­jW«Z=¶‘•l´b«ÇüÓ.È„ÔÙ~–§c¬Q ËRÛ²ö¸ÈM®r1þéÚ6ÒV¶7¥lmO»SÜzG·sêHoÃú[£N¸¤Å™i×±Üòš÷¼¨mî¡ë;7Þõ²—Øv¤Ýíz6¸ ý¬(‡ëÐâR½°€=©Þ…±W‰À{¯uS6_ùÔ×¾¾ÅïBñ+I”"”¸*óè€7Ìá7”ª |îu±H¯~‘É%q¡¼°Â÷M§~‡Y€ ÷7ÃÆõ°Žw¼Ü«OÄ#Žˆ<”ܲ8»|q„eŒÉ ‡÷Qþ%/§LåÔú8UA†®Q,Ë™™¾IV2Ú~KaJÖøÉÅÂñ«Ìæ6ÿòÊ%n–W˜8‡Ü6»sg;N¯TÍRv³ Mþ`vš@Îs^á4t K»b³zkI=„æb®™Ð˜Îô$á|¤Dgù09pt+ é‘Ù•n'Ör¬éVkšÓ@´§íÑ-߂ԥÎÑo5‰?#5Ê rµ°3 ë ÈzÖ´>ñBm½ \çú§浯K›T;óÚ ØÎ¶¶·Íí‚j²Ø2²ÓGd¿0Ûöê³EíLö:Õã öµ»MïzÛûÞý¶¡;pìq'›º¢6·¨NµY½®›Ýé”6¼«­KwüáÏ(³™÷­~ûûßR¸…Hc*/y>ŸÇ®Ý=mñ2|“E ¹Êë¡oCçâ³.÷#Œ"¤ð‡Z˜}ñlM*þgGzäM.9”-o‡¯üè,Ï$¸ã ó˜s¹:cØÇ=3p éé=kwÐlkë`EË8˜¦#[æŸXÊv_„êÁ¥2UØËšp’sè^oò¨š3w`ì`¤c?bÄmv%¢Ý](;€òvsÖÜš;Ð/ùn ßOÃz/ ^|Þ÷´o>œG…Ä7Mq¦þìOÏ+Û§ÅxùT=òVï|µNy¡§ùò¬¦¼æ5+û[Sý«ò=©jñÓ'òð¨ˆSë1Ôè‡ø—”öIYIK•Q©“A•Ì7sWiŒY¹ƒµwwE©‰Ó–ÑgM9q.g–s%• –¿Ç–±€ÅciwéZ/i—a——dI|iS~ €)&9˜ cB©Ôv‹É˜H÷Pøˆ‘y–6¸ ü¸™\‰‹^X— ¹n+Æ!©øaOYš'og…±ù Z©‡rÙ•ù]½ùlkg‚µY–¸™›Ö¶›vXœøñ›—œ®i”º'€Ð zàh-p†É ™ËYƒ—riÉb"xžçÙ‚èY‚I‘’ïÀšÔ9‘¯þù•Ø™i·Á £õ†{žâ™qäI¢¢Z z š  º êž'¶X}Â9ŸèŸzûÉ\àéŸÌÙhÊ›‹p 9À  &Š¢ ê ÂŸ‰©S—‚.fëF£"Wsòý ¢!zgŠ¡[)*Dª¢,j¤Ф Š Jª{¡×ŸŠ©ú¸õYŸç~Uêx‚XÍÑYZ£)…>"“ykçIJ¤lÚ¤Gš¢8§Mú¤p¹…R*£ȉ!È‚ì Œ5¤¤ø`Îá¥a¦zIÊY¦I‚–h Ñ A° Fê¦ à¦Mú§¿£Zþt©‹Ê¥¤{ÐgœŸj£æ(ŠÉȈüy›ŠÊgúh2ñ¨•º@«µz« @©Iª«–j¢}¥©ú7¡Öù‡zê“Fx¬'Ž‚w"zcÚªµôª£Övkç´ lš­mʤKÊ­+j t*\‚q§?H¬¡ˆ¡úx£škÊ ªö±ˆ ø¬ÐÚ~Œêޱš Z«Øª­ÛÊ ½ú­Iú«ö„1Z®žZ¬ËЬ˜Iªë® 묫z“óê;ÒÚU÷Š š«üš­ºš¤Þš¢¾Ê] ƒë•Yª¢˜®*[ˆ(ë‰Iv…<ʪ« ÛlŽ:ùº¯+ÿê± °®€E²›*þŸÃz°çê“~ê§,Û°Æy^štÚ£3ëªõŠiZº³ãšsá¿àsö]Ù®ã.Îk>„ü´¡Xˆ°å\~kËžˆWÌ|Šä$nÒJÞ5~™|”,^ÞŽÆ×éÆ¹Ñ§]jÐå\þåkͽ)ûë}æÙÍ䎭Òa>¿l˜­Éé’TnÈï÷ãc ~x¾åþaÊÁ§® ýç€^i¾6ÞòýÅ Ø ®ÚoþÒˆ[-u¢€`MˆÝ aw¾yŽÇ@®}lÜžš¾éîÞ$ºæ÷@ڢ®ËæÙÖLÏ@ Ì`ŒOþ—“>ëÌÝÑŽWɸþߺÎH‚Ú„¾êÐLÉQ+Ö"—ã­ùáíŒìw’?ÉÆ°îå9ÐåÅYÛÑðK*¹~í”í·¶í¼–ïºÖp-i¥ÞâÅâ…ÖÀX޵Þì”ùì”NëJ ÏXùÎdîÐTkïMÄëÏ uîpÓTWp§˜ºD c±.ë^Në?äõ'ñõnñiÐéÁîéÉÍ’?þì-}êgÑIë¾m¸ì)¿î è” ñÒîçÖNóo„參â¿ÎñlÍó Óæù=ðå~ÓnYôþ~ðáÈî:ÐðÑþò‘ÞNŸäPæR½7^õ:¿ÍéîÜŠ¡õ¾è†ÛõC?í3òb‚dßî-öu¾½j3ßöe`ó.¯æû.Ë¡µvoÉâŽÃÓ}ì^OÐ`Ÿî¯n_wžô.ï‚÷zG¾øŒ?Žöož@PÔ—¿ãù¨ê´Ù?õô©?«¯î­‡±?åÀ ãc†û¹»é8ß{x/å\OåÂÚÄ_ü/pü|Üûðn®÷šLðØÿüKýÒoßUú¾š¿þßüÁïýo þá¿Ô_ù/~iWþÉ Ë/ò¨þÀêŸõìßþ)ðþP@¡Õ^:1N=é­Cl$¥3U« 0^Y —î Z åÛ .G€/ÙL¹d6OhTJqAœÎ·åv½_pX<&—ÍgtZ½f·¿¶,1–œFM$@^Ÿ<;©ÀÁ:–*¤™š!­€H¬++:ÃLÍMÎNEK£É!7ÒRÓSÔTÕU38J9LO• ȭÀ=]= >`”aߌ ½Í–"Y’ÅÆG\ ×!P£æYímîî ÄkQGVòrósôt±êÊ9ï“Z ÈÛÜ?ûÞ_ã}`þÿ}úZ#Û7ì¢Ý’@œœk‰ÞM¤X±8PÕmäØÑãG0 ‘œ/ØžG»òÜû“«X±;E¼ô§KSA‰*žÅù‰£8 žfщIŠ*‹ÖAÖ£% ¥N¥ZµHwFg®˜‰K.‰ ‹ù’ìV¤OpÆø¤°gχB%úi©$­¶»ÞàÛ÷@^®[—<µÕêaĉ­b¥UpŠ®<¾‚ÅW¬̳c1cæ´–ä…¯Þ6Œ+W]{iwZ½m¯_¾¼ µf!×°bܹu“cüYï †’KP®lë2?™ý’× HœïÚnÂÅ*R•„dÿÚ~Lyþ0îÀùüÛnŒ|÷€Eÿ•ø»§oYãÞÁÓô•̬ÂW¤ïæßßšÞ»솣L¬õÌŒdŽ!J™çÚJ´éH«.¢ëˆ¤ç¦êã»ðú0Då˜#&Ay`ó >yLqÅæf!¿PöûoG{thBk²r °x°+O@瘑šÑ$¹ðš 5\*Æû8kJÄ"T/ÄÇ2£ï8[ÚËãÅ|`šÏKμÌÇ"nóñM8 P@"‘´ó%Wm” ²ëP;Ã.­D‹Å©Ü²ÄBÁ¤±K Ä|-¶2ѼòRãÆÂÏ6ãôôÓæ’ Úîì,B=ús¡i~þ\U®kÊwqTÅmÑÑîlÕlA*[t‘RËÐ:s³*«d7AuöÙrDÕªNS‘ôlIžúü X£$ŽÖ/‹ýrQE4½>‚½rÀ½v!6S3k7SzàtUhóÕWi¢¶ZÇ®MU:†üäÖ4YY÷Qq%7ÑCƒU4]`aØwã[÷D‡éµeÙšÝwd’[yUÈiIåêHŠÓ4TuR•Im]=8P ? ´FCa"‘@eû¹¦ Õõ0&IÇü+]ŽBVS\óYU|K¶úêuNnŒN•U¨ ²x_þ&æöt¤àmƒB8ç…eD¯âñÚ–g¼¹—*Ϧ[þëÖ4RŒw®Õذibpj‘±6Üê~-R­@Ã[b±-Xf‚[--P#íóDîÈVêNÂ;=|t’¯Hµ.rÉ<€Xxò²gÎm›Õ¶ÎNÎ;×ý„Ы&ý÷‘MO ¸Ô'›•õôJívÞe§öË1Ä=¦Ïw·žŠ{i~{h…/I<”°ûù_;gÞçù„þIP ëfJ쮿¾wí¹·ßSïßA‹z$ÿÜב­y•óIí^Ñ-ù%0ôËÖýø¦üý†+ÅkœÂþ¹æ‰rU[ßÉn§@êŽz` wÁ÷Ƴ`±‚¦7ÁÏ-jN÷0 ¯ê•ÄÁ4:ª´á/¡§à2ká¤JøPôEÔw¥é,ª ŒöÁ Ô[]ËÄ9Î(Èp’$M§%qxÊœxƒ¥›tiµª°…æÉ´~5¥ªÉ¶µQéR…Ó‰‰”à!P NA¨¿4hÍnØ>g`¤©bÚ × :#ø`R¥bUíšµ«¾õ¢ÞÔ©.R² ¯ú^a•‚gÌPÖªó¨0;éD–ªI½ZË r5']±yWÌzᦙÈ)! øˆ ¶0 ƒ…[™aÓ¬&=&|€þVǶU‘Ž(‹=ËÚ3³»¥l^‘ÔÙ|¶«FmXyùËç,KªM¬QaûXl0T¶¤mÀ"UŽƒ·ÛÝìløêY n”¸àÞL;(-±«TlûbÀØÂ²ºZik,²ír÷–¿ýn ¸(‚À’¶|>o"p”æ²×¹–(&|ß]LÎ×(õMm=µ›ßÌv—)ýÅÃW{91Á뵡Llbø¾Wzñ}¥„-¢ÜbÒà^'¾0†ïªá)·Ã¦œ!ªC‡—Y1Ì`éÊW‡ƪŒezüÚ³8‡)Æcäj°µ@&qQ‡©P ¨8º,v¥‹+òãþ&ã6"³”òD©l+W ËxŠš“d/'´ÈsR—7]@𙡨Hsmr[ã6×ôÍPÐñ•çLç¤2õ]c{‘|1 ¥JvèH ]ÐCG9ÑT]ô-ç%¤³€"dçJ/¸±)0f’[¼äCtÍõ=K}”8ÿ´‚ ¶˜7sRR˜z^ì 4ÇyJ×J¸o¯íúë&œÚ±]ìÒ‚w…ºúðI¶­7îí"K,t¹— (t·›*ë8M{SpT ²Ùð7BKˆG\â™d3ÂåÈÚ‰g\ã¯T¶Ã‰¼qþ‡\䜩Åk‰ñ‘§\åhìøYWþr˜o²â&¯"Êc~sœ·Üæ8çyÏË8sšÿ°4~¸Ïþr ý .?zÓ®Ÿ’]‘€E´­~u¬gj¤úÒwþt°óèR/!côDƒÝ¢T×gÔ9+Ãþv£ì4{$Õ ÷»ª1e9Qc}n¼>缞»ëîE¶Zð…Ôû ` ê¾Ó¬¹€_|åS.÷Âsïð’‹â-OÝT9þñNŽüìLùϧ>ã˜Ï<ð6öÖ’^õ­l|nkg3¶ÝÒ³ç=Ç ßzºk ÒÑõ|ïÓXû¸þ¤ø”67³ÿ|™ÿøö«;›îý‡þ~²@X¾îe}ð ’õÓ?\o ½å‡Ì|q÷ýÞ|S’ýã¿K‹-ã²4ò>!¨@ ¼À, Ü@ì@ü@ AA,A $ 4ÁËBÀ>>Ë?s@BB¾\«¬Ò{žÓSÁ ÔAìAüA ôABDcAêsÁ P1”A7ª½OýŸ@„âÁ! B+¼B,ÌB¬B!d7#<«¢µÆh@&T¸o¨A„˜@)*LA-|C8ŒÃ äÂ,Â/t=$Ä4Ð:>ìCxÒèp?ÉËÁ6”CþCÿúQâ$° ÁRH¸ƒ¡Â÷JœHÄØÄs8rþÑCÄŽ õé9Ò#=$%-|LÉÒ—[ªD§(‰Ì+oêdÕMTAGu0´ÂH›m~bP:'çΧžz2ŠYƒ£¸¢ °NhÄ”›U•FjM µl§ž«ú¤¦Õb‹mýýºð(]ncãšÝ›Gn9½ôJ& Õ…YïâÊË·±¤ƒ·V$¹'æOËŠ–7rÖf——Låx¸+ÌÌAœ:^m2;«¥IÛÝ4uíÖèì½®\™+×ÞkdKöŒ‘1ëãx\ÛÀì›÷hàωÂ&.8÷ ê§GB­:fÉbÓ"ÏÙ¯Z»ÁÃFgŽuùر·§›vúÞ¦¸Omœ¼þ¼È'zÛÝ·^f›…bÝ7 }UYìÕ…›xÿUy4DfÞ!¸1 ¾¥‘†øq¸!D.–¢…,6ƒ!PžØaŒ&&â>į̀߃2J\Sýµ(d޾†Þ‘’Èá‡êÀ§ÛrG׎Í)†T0+©åu/j£T}³Ñ&›m >cB|FÒw—šTåÇ›üe¹åœ*(ç_gOÎ"`ªÑéç™]‡'—¸twKŸ&‚ä Ê`¡S)¤¢”ŠÀèxŽŠX(“Ÿ Zé§KÊZ¦8þç)¨¨n%êj¤®°'<§¦*+aEšz£«¶SÓ®¼R1k õ*ì°JÜZ'±È&þËØ«ï0Kç¥ÈµZg®ËRû«“µÞi,°Ôrâì:ßn ­ Û–똮Ö^[]¶š ¨­Þ¦«nqìbêîºÚÆkë¼$Œ;ê½ýv»J¸ä<¤¿¬Lo¾ËË/Ÿ«°¥_bðU/ü‹¶Ø>ʰÅgŒÐªw¬éǪ\ e"/JrcÒr oÃ|©ghË#×íÄ.Ï rYe&+ô®j r61óüº»³ÙÍ5½q»&—в4j%s™[Q/¦3¹UãêsÊ éw lÿzmôˆQ1ND¾ëñ\<ŸrtnúþµrÚI½¬ËÔªšäœGvÇïɈ‘e”„`ùUµPŽÙ&sbþH%§&¬6à} Óõ̧Ҡ_ñß‹Ózä‘xw°M£™0Kj]NW9œfè{ï\·©ë~›tØ×˜²îËTþ;„X_ÃúyÛ}wàìΕ¹y×}{®ºqiIeQøp?0iãëòÛr¤ Ž»¡IB}Zún„9)Óg¨{z_îߣfwK\ɺ·¶ÔAˆfãs›1Öº­I}ÀË×`Ѿœp-Ì‹ÛB‡Ái4puÔ_Œ!íIAš# ç>‡ú/q TOKÁ²ýè…ó@žÌ.Ø»æ3¼YBUÏJþ“å@”Bþx/‚Ÿû ÍæŒ vÇþ'ðSœñ*è·¿aЇ$Ûg8F"zÅCbüì†=Ûíeˆe\aùwFß|‰Œ@ ý<Eåv’¹ÐmÐò4LN†~Qrä98VQ‘õÛ#Žˆ •ؾ¯'¥£“{>›y2‘áíì{ð·Ô/:÷ƒRäc!ÚJâuX£Ó˜Z\Íbv™¨Ó¯wyW½MªO† ¥êëàÀV0û\î2¸:ä…„Ñ –üȼ®@oÇhßý®³Å~¬ì„é[ØýŽ•ZŒ/ãÈÂí"’‚¢åÇeg©¶-ö¶ li»Š]€ñr5Ô°XåáùöA|9Æñóò Þ?Ø¿ð ï«üYÊÊ7ºLîl“óœ3˜]¯(EË ¦‡LÖãšvÅ›J`î‰âÐBUuÿÅïËã ‡™¿¬¥¡ùþ,^]kº£T-SAÑì—³Ü.ºµ…yLl+r½TZb3Œí`gº¼A=ðÚ<kr/ÛUrbË^¡E›ÛÝ:®ôðä¬p)GÏÞúþ¶I‘ÍØ} ›Ä†ýÆ «AæFÿõÂv‚»l%NþzÔÛdÀÝf—™­¨¦)¶CÝä>—9”™´þý"Mi$Cœ•+ÿ£Ä%n}êÙ¨ýv4’V.LKÿ¼}”Ùäô%ðåJvkš[~åŠÍ|ÆB?zÖ½õ¡géh–ðűÎupß;¦¸ÁjÚ‰ô˜·•ìœÖjÜEºvÖJϸ}1kÛí®Ö¯“ßnŽ8àOVÃ/þ&*¼Ùó,sÔbôòa8<ÞM‡ùÎ/âž}÷Éo¾èz?{á“^ìDþØÏ·ÄBìzÍö¥§<ÚûžbÛk„âKûwãY÷Ú'ží¾g"ßµiúÛ—ñbþÜ¡ßúßKžú`ß=ó±?ñëô^'þØïr5û«Ÿ>îáêmåWßEÞ'×þå~ÒZÎ#üà‰þö÷˾v´v‡\3±v¼·:Çg~0·w•—v®ÕZh³Z;Æôií÷:ñzÏ÷}Ñ÷/‰fc×pì_»&['Qõ y—|Nˆräawƒ5'tˆXàÒ‚wµ€ª'}ÛàK hHÃ1r:fj˜€îÓ,:Xe±‡„.øl,TmT6E,V…Š·„ë‡4X8€,è„£õ‚RfmêE#XGGx†›†qã ‚“etó·|ŒSg8”k;gsÈg\è~ì·†[Èr]X~Qó¢¦\Â%cƒ`…(k=ØTJè…L˜{ž‡ÉVQoxX|èˆ&ø‡i胳Eþ‰è׉—ˆ÷—zº—~!~¶v(8xlˆzšèv €uø(nt…1˜˜‡heÚÇN{ˆ‹¢¸ƒnø‰…þÈЊýg‹th µ?‡1²(zQ‹¤Ô}Yè>ÍÈq·0Û(pÓØÕ˜‚}ˆ†û·ˆ±hŒÅ—„î ŒWxŒÁTáÈã(îˆ|Mø6)Q°RŽê'ĘŽk5ŒjŒ›¸ŒãÇxÅX¤ˆPÿ˜‹~˜ IË#z©ž¸ ÷XYù‘¾z 9’P@zð¸Z8³’…ŠÍÇŽ9(‘,9“*œM:¡)Ú£1ʤSÊ Oª.IJ],š¥Z£¶¥ü ¦‰"¦©Ò¥lV¦fê'h¤Wú¥mÊ"oÊ¡dªusê¦[ê¡K*§y:Njj–‰é§ZUÚ–qú£…J£U:¦‰*¥‹*¢Ëù¨lúp©˜šþ©šº©œÚ©žú© ª¢:ª¤Zª¦zª¨šªªºª¬Úª¡ Hš¦wzz–ꪶz«¸š«ºº«¼Ú«¾Zª°ê”vJ©x¿Ê©p¬Êº¬ÌÚ¬¾:ÉڬЬ‡J—}ª¨µ*­Îº­ÜÚ­Þê©Ðê¬Óš'ÕŠœˆš£5€©°®ìÚ®îú®ð¯ì­òZ¯öz¯øš¯úº¯üÚ¯þú¯°î®»¯Ð:Ô:©× ©@ ®›¯ôú°;±[±{±K°û®›°š9«Î'»±í±${²(›²*»² ±)۱䪰ƒŠ­n0²(k²,›³:»³<+¯.{³ãjJåþºŸæZ©5{©+‹³=»´LÛ´û³' ³B+³ôI¨;`³Q‹´N»µ\Ûµþ µ$+µ3´Zµ4ÛX»®»¶lÛ¶nû¶—ú¶r;·t[·v{·x›·z»·|Û·~ë·ð·s ¯b{2d+ 3˰?¶-+¸r·Ž¹’;¹”[¹–{¹¸—K¸A;¶T+¨V«Œ­ßZº¦{º¨{ºœ‹°1kHúºì™Œà £«µ«´^›»º+°áJ ¶¼›¬«›°‡ ~ÞÙ{Fڵ뻿k»»û¼Ðk°¸°ÀK½Â˱k¸ÂJЏ¡›Ë[±Ó½ä[¾ó:¾ÿZ½ ¼þ…k5>™Ÿ¿X¶gáÛ¼Ìk¾ø‹¿½û»×{»ý[²Ùë¾Û+ŽÝ[šÉËõ{»Î›¿ ü¼ûë¿÷+±ìÀ!õ¾ ”ò«¸>À¼À+Ë)K ,¾èûµÿ+¨:°'¬¶L[ü”ÇÛ çÙœ±¬² Œ²"<ÂÁ µ) À>̬;µÅÛÇI´´z´Cܲ7L½O¬ÃCг;ÌÃ[Âý ÄMì³*ÜÄí[ÁLÌšèJ5üÃQ|²U̲E`Å=Ì¿>œÆÛÅóG\‰ñë½óÛ°7ŒÅY,Ç»Æ,Èn¼¾~,½q¼Åñ:tŒ½Eì¹w<™¸F‹þ¶} ÈüzÈKÈîºÃž,ÈŸ¼ÆmÌ®H@ÊSÜ®U|ðªÊïÊÊa«É{˜<¯¬Â¬½‘¬ó º{¼¸—œÈ¦:°³\±œŒÊmlëšÊ£,Ê|ÊÌìÌ¡ÜɧÜ̦ ÆlÍÉ ÍÅ,ÁX¼©öªÅ[Ë|ËœË ˜Ç\Æ3PÃA<¯ÃL±ÛœÍ"ŒÌÏŒÍõ¬Íö¼ÌÔ\ÏÒŒÍûÌÏÕÐòlÏûÀòêÍõ ÎúÊÈB\ÇF¼}“l¶Lÿ쮊̹Â|Ѽ}ÏMÏýÏò<Ò$ ÊÓìÌ$ ÐIÛÍ%ûͲ¬Ñ+ÎçKÎ`lÎèѼ<Ñ<ÀÎÒ›Ñ9þÏÒÍLÐ%Ïý,Ô']ÊÕìÊ×LÔkÐñÁ í³/Î íÈÄ[6'Øw±{6³û<½ÐS­¶ïü°@­ÏF=ЭœÔ]ÔùœÔL­« Ôo\¯RíÒ‰lÕçëÅ-¼C/,ıq_­‹\Éô[Ñíª¹yëÓlŒÒsÖ*½ÌA Т¼Ïó¼Ít½ÖNm±P ¯Š ­xmÑ0ÝÒWmËYÝ4{jQ\=Ƴ©Î2ÀÎ{ËØƒ¼ÙMÝÑC]ÛnÛ”=Å’}ÔüšÙÁ+ÇŸ=Öœ›× -ÓD|Úz#b«dI\ØÅ gÌ»e]°gýÏ·½Ô!ÒhíϼَíÛmý´°Œ¯ ±þÈݸ4íÂa 1´Dj³q=ÙáÜth¬Ç:}µˆ­À£=±×ýÖ=ÔlÒ‘Þ ÝݶÝáMÞÕÐU}Ü¥=ÎÊFÂ<ÈFFOƒÎdŒ¥úíÅ žÐ!þ¯ÿÝÖîÝ~Íã}ÏžâH ÙÀýÃå}¯çmÞéýÅì.b=°†áòÖd»ŸV†ÍÇ Þß =âþšÃàiÝÛ&ÝÛÚÝÏœÌÔã2®äØkÜèá3=á"tD6“DÒF>ƒ÷­Ë t0ÝPŒäЋåû*çæÛÙÁ-Úz{ã}½ Ý/þÓ#=nKǤ‚çL[.ºûÝÁpþ¼tž¯Nþ¾vn½‰œç^žÜvÜ b.kJI¼ˆ ’ÌáìSn¾¾ZÞ´‘~¯©.é3ÚpìЬéiTjk$è…^äÎù6ØÊ»è6Üè¹»êõ*ìÐ;é† ì®nÚ™n$†æHµL½öéi~è¬]vPêé{êLKì]ÈxìT îá븜&42KµdbÎSŠÓ~Ó¢ní¤þË– ¹˜[ïö~ïøÞ·ô>¹Ã-¹|½Þ~ÝÞVYí‘ÈS¸¾Áò^¹ûžï ßðoï ¹ý.ñä^Îm‹‘°ë¼ÿðÿñ ò"¹ãoÓì¾Ë ñ®  ­ó2?ó4_ó6ó8Ÿó:þ¿ó<ßó>ÿó@ôB?ôD_ôFŸó/ð|.ð]IðÒÃïþá óG_õVõXŸõZ¿õ\ßõIæÙî)¿æ×(Ý}Lõ]Ÿöj¿ölßönÏõ£»çÓç õlnðÑ­«ûö|ß÷~ÿ÷€¿õq¯ôsïºB^¡NÏd?êm~öøù’?ù?ø`ÿ ,Ÿèàëø”ÿù ú¢Oô–¿ìöÜ¡êw/²ž?ú®ÿú°/ú¥ÿо¨úÔn÷bÿá{û¼ßû¾ïö³뵟ûO¿øðÞøÿþûÊ¿üÌôÁ_îïòÝhürí­ßüØŸýÚ_óÏoñÑújޡևüþ»¿ýæþÊßý5}ñ0¹òkš÷L\þè?ÿô/ûŽù¯Ø†î?nðoÉÉ_ÿPºÜþ0ÊI«½8ë‰`( d`žhª®l œïÛÎtmßx®ï¼*÷´pH q£ҵlÖ<Qˆ4àX¯Ø¬vËíz¿¨DuÖ~1³zÍn’M¸{£›ävd¾)SÁ€‚ƒ„…†}Re{ho{vxG“‘qy•–>šC‰"‡¡¢£¤¥„žS%Œu™œ®¯-­@²°;´”µ3·¹¨d$¦ÁÂÃÄž#ª˜¬¼ÍÎwl»Ï±ËÓuÖ-È ÆÜÝÞßÚÊ’ÌØæ‘Ò9éçÐäæë¯âUàôþõößòðìý¶Ñþtðû÷.à y (\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱcÆpüŒ£³Ï I3œSjƒ)@“13(„BµªÕ«X³jÝʵ«×¯`ÊK¶,X=Ç$º ­uÒÀ‘«„. ».Ÿ®ÔÕÒšÓ6¶½ zmøžˆÃ¬øÄ=.Aä‰N´èš»môèÄWùwð#ƒn:é9ï=nåϳ oà ®_á³Óþõ’·#Eq·)^5ðÍ MþÚL#_~ò¥>åË3êè9ëÁF9¬dÙ'¾ý~ÝóSî^'¾óOnE«Ÿú†§³³5ðn<“ÑÄ?Í/z¤ÛôZðÕkÃq“GHšð„(L¡ WÈÂÌZZSœ gHÃÚð†þ8¼!ûÔ½ñ„Åk^ßܧÀõyŽylŸSw?ê9Àz0ä_ÿ÷¿è4N€þÐ]tÂ^.ƒð2a¨:J°P?D¢Ùœ·D 6‘ƒãye7ŕԎŠuLÓ“jF¶›ÐŒ` ¤ùôFÆÑÑjïž·ÆC2ƒNlQ²¦ArS[9D]½0§¥k@¶;"¦zË“áÍ/r;Z¦³öé²Òy“†‚{‹vkð…«o¨]û†Ï©úð‹Æ›¢ò²ç¹:ZÖ\Ô[*|! ÁŸš¯|ã«XúÚ »ø®„WÜ p¹M1Vƒ Üá»È˜M4foˆIŒ]<¢ÖÁõÂ/‹‡üÿÆÅrn„ÓY·(™³8²ñârHe㘘­?.è}!Lä.oÇÈ*#ªþLAcI¥H7† Öòƒyª¼nç~cs—1çL±È äE2–ûÄM3“ö´F½2 PÌE1r,1r&2Ssg×ù5Ì–%0_Tàþù9Á¿-1-Æåc®Fm„I4‹A]NÄ4ºƒ”µðšAcuÕÎt–¿GY!·²V¥Žsó›PŠ*æÔq|ôl$fUàòrÏ ¾¤¦ÕäN7T5½.Œ¨Wm`.سveÿ+ic§ªª;4N]ú1˜Ž’gÑUN§a´Q“››ôàgʹµ¹KÕ^ŸXÆvyØW«¤··…ìn‹xÙ´ö%›ÓÆÕiÔáž–&Ä«‰:eò[nÇ'¿þ O`&ó”öGµ­ê3±f0¨m[o|šð{¹úâM¹´eÜæ×wÍsu¼|Odéþ½mb§ÕäK-8¹g‘æ„7uáõ´¶Gqf®“ê¯dø­HÈý¼¦D£œEÞ_’ëéIG9¦U>k–×ÚÙŸ”º0©NJ‰ÒãmÌûæ¶È$èë½ëºÓ¾Dô’£=—·¬½i›k]Ÿº›ÑÍÀ°KŸûŽ{E(MËn½R¨º—GvIù×è•><:ÀíU¶3žÙœ†z¿}=w;—Pî¯|ÉÆNLPF<†{ÓÐUø³«‰o½²Û.ΖwÚncŒ¦ó€þØî ö¾î ·{çÿàçž{+þʪLþò›ÿü'd}²EÊ|:_öcwå®A{ëKŸóz÷½ß»ÏN‡Š}÷â'fLJxêgp<özN·e 'jAÇsЧ}bGH XFÉô@ç€Üg(é“J;gw!€‘¶tÆ–|ëPíÇ„. xw#sñww@Ç‚w7q–“o¶{1ØVW% Èm"ØtDpf‰u‚ç‚¢—ymæ7¤†™ãy÷FsCôCx³nÕçu:xwJMWòƒ¨g€8b|R‚½e„_en'5“·„ÑÓ„ô„‚oçoTXo …À—…sÈ‚9çoüezfþRaˆ|„×…€n§pçæeŒ¸^pÅ6ˆ«§t]cˆh•ˆO·ˆ¸‰cò‡óˆ(‰œ@‚`È–ÈgÍ÷v²Ç‰¬/žˆ2 ‚¢X_”ˆf+—ŠŠ˜†­¸‹®ˆgf|³¸?C˜rˇˆ¸˜‰ºÈ‹ÊHH8¥ŒÇ8ÄÈ~Æè~ª¨‰Ë˜^ÑŒ×óŒÐ8ŒµX„Õˆ‚h £è¨ÜE©÷=ÆtkWŒãÖx}”ŒéxW±ŽWutîx‰°Ô8°çx戙¯X5§‰üØFŽŠçz™€k†‰úˆXíècŽÙu‹Ö˜‹y‘$™‘ý´‘þG&8ŽGXŽrŽ$™Ž&Ù‘ ™’ï(,Y†.y†ïg‘3©5 n(‰“ÿ¨v)4uŠ&€„AiC‰eEi”:‰”ÊKIß2’l¸k¦Æhk¨yudÙdyQ‰”SI•‡x”WÙ’‰‰ ¸ˆLè•fa—·¢u8–e¹g‰– )8 éŒL™•éc=‰ NIƒˆxÉnz9mOu–¬ñ—i ‘kÉ–êPˆ•(„Ç8—ÉHggŒÆN£ÉJ”é—ey™G™™šYX‡©Kž’ÈÈ•{)™‡qšŠ”Æ•šªA™¬ 7ùšVé–dÈU IŽ?š!GA5øPÔzIØþ†/È›J¨†g4Lºy¾ yXñ๖˜Õ3˜Ýè·U˜i‘oÉ“qù™Éœ»9ƒÚ‡N8v2¨JgmûÉ7WqÒšê›jgœUéšüq[ÐHŠìya‰ÉX0 +*Øœ9Wöcq;( þƒZȃÚs Z Ú—):žÚ—Y± æùDèÉŽÞHœGQœ5ºIf¨˜ 9ZŸXKK´7§ƒ.×ÙwW'…›¨ .êÝé¤,Š 1*I3ºj£7êžÇ)W³©œ×HŸè–u:¤Ó9‡é³¤Ò™¤:Óƒ{ÙRZQ*žOªŽUŠMWª‘9ª¥;þI¡]zp;j¡Ëi›pMׇ>ŽäœR˜…jZŽêQ÷qJsJ§Ûx§û”§'¹§|úž~Ê©¨Ó°˜oZ{º5‰zqB£¡ù…žç¦LZ+êuZ©Ìˆ©0¥©6™¥Ú§çá©^šœ/9¨1é„SÇ›ˆŠuùYj)¢·¦Äóªü)–MZ«.:«´:¥g«B‹@Ø«X•À ¨:ª=º;?ºudª9©z…ýI{Ïú¨" r‘šØÚ¢Új«_œÜJUR©/è°;°5Ä™1D°›° »°)$.Ë:r jƒðÚn½7& ©Æz߉¯Ö:ž+ ²u*§0ê‹þ/v/àÚžš²6)—óI¨Ôù°ÿ9où)±ÓT±óz±|±ÓZªŒÑ±K©*ú±"«­$K– º’ Ê²±É´¨H›  ³V˜nÐ74ô¶}¢gƒÍ AwȤv°ºaa©W´ j¶ZQ²Ž–j³å´„è«n‹£`*’Åêsbû”-Ö¯ºJ”që2ÓØ·á:¬aj›Ÿw·xëˆzë­_¸ß·Œ«´.Ûl«Èöy¸ê’´×5¡I„»`‚:¸uë•k¹¸‚¹jµ²Û´©¸> ºÊqòDº‹bº›‰º«kœK{»ãZ ¤*»¼H»z`»º ¹Â;¼cµ/º¾û»‰Ë¶(kþ¼Y¼Ð븰лËËŠÀ ›¹;½&¥¹aX˜Ö{½›˜½Yå½îȹÜ+œ‘{@)¾^F¾f¾ßˆ¾éK¼È+¹íë¾D¿–R¿2#¿ª¾çºE2©¿]Æ¿<ÀÁH¿þ[»‰¿öhÀïÛ¼²õ¼ ܲÒ[¿L¬¯+ÁãKÁÊeÁ¬º#ü«ò Á„ëÁû Ây&Â%Œ» Œvìº>Jž#û³tš ÕzÃPÊÃj4m†k|£1,Š üÂát¿ìÁG[™OжöªÃ=l´¬´µ[[Cü HLÂ[ü·Î¾BKÅ‹Q©>¬ù¢e,?¼ÄU‘Åϲ»]œSElr3L·ŒÆbþlÆ#+ÅcÌÇOeűn,$s<ˆGÇÔœRœ­g+ÅâÉ ²;ÅÙzÆ—ìÈ–ÜRé„6{8Q± 5ƒ "…ü½^ÜÅu\›Ê[¶{ŒÉìÇ›ÆG‹­RêÊ«ÉøÚSlNŠÊ®nh%£L$¥<€‡ŒÈp¬È\Ãi[ɶìÊ~LÆaÌ¢µŒÉ“zË÷ºR»J©Ì¢b̧›”ÆœÊQ»ÊÜÄÍ\ͬ<¥é|­îɹËg|Í•Íp¸Í£+Ê,ü‹. ÎYuÌLÎÉ{ÇáùÎM<ÅÒ\Æ9œÇ²ËËœÐPÏ,:ú¤ u(ÞŒþìÀÝÀ ûÑ-ôÐþ¸,Ï -Ò™<ËÎÌÃ9|É“œÆ¤CÑ\w¦‚Ä>]c­½}ÓÍÆ¸|¯ ÍÐÐŒÒêÍ)ѰüÒЊµØy¨‹?k[Á±£Ó8ÁR]½‹VTâÓ•ŒÐ`ÑÒ Ñ#ÝÓï žôФçi.ãçŒ@†Ž˜Ñ!âzUsŽÝu.án¾ã.^è{^Ý3¾¸Jn¿ó…å1Æ”wŽÂæü†dȆrÅæâénÃÆ¿é}ÞžèrÅj˜Å꡺<-ê|‡onøi²>ß]r迭꟡ÝHÐä‡â[ÎZ\ë¶§(\xh¡~¹|^t èt ¹–Ž‚åêƒé‹^äNµ¦FêÒFs9è˜ÞŽºÞÛbŽã´‘#&°¡uåþ‚œ>ìÄUì¹vì!ƒëËžï¥Ûìs”ê ûò#E’/ð5íÞëòî]ô>¯÷QÇ£ï6z€œ—7L änÊt‡ZkÏþ^Rî®%D)¡0še¡uðÖNWÙåy~Ïÿ7ñ»¼PØIµ2¿{óÓñÚLφ1¯†>{ òD ì!2ZHŸ0/B±°ò¸'Ö x3»ÍOõ=[¯z©µEduྡ/sÆïmKôáÜ0˜`òÊÁ0ßîï¬ñþæX­Nnz¬§uÕ9{ø¾‚ñB—Ù3=»bÝdŸÄÔÿ’öûRíØõ ŸbçxýPÏv÷ ôõþ|Ïó¥4ùã~C?ø‰Ü‘søbø—ï ÷î„0mHAjóJ–›q»©¨ßw}s/|vßù½øÔ!ì࠯ߌð Ó×>þð*¿øoÏèp®ÖIM÷’oûßµ™°/9¢”ù~ϘÌnêÎîçÁÿÏ…øãY8B¦`˯íÍß•ùÙõ}z!—óY¯ûñÚ÷ÑÊùÝïû- üºÜþ0ÊI«½8ë}ÿ`xai‚ä©nD+¼°0ÌEmßømm;ö@ÂÏ$úÅ¡TÍg)…6©T`vª52Ná3»]&ËÕ´z½VäÞ¹^ 6¬*©Ô}Ïïûÿz€# ‚ƒˆ‰ƒrs24p‘;ZhfV\GgSeaIci–]cX Ÿ™_šœQ§˜—•l±²³-n’psu‹† ‡¼ÀÁ‰¿Ã……ÆþÊ ÅË,.Žu·p”®§hX#ÙÙgÛÛœd¬¡aÚ™Wß°«WçࣕJå´òóA¶Ó8¹1»¼yÎþÿ)4¨m`@@JÈGÒ=<¬±Âv*©Zq´Èí#È“#;ÎÚ˜òÝ`:i¥zÔ*O-ÃVy S(Mb¾€ª]«â'Û·Üö4ë°h5±xóêÝË·¯ß–dÒµÃ/-ÜÈ'd\̸±ãÇ#KžL¹²åËÉ3\ÔÆÝ¿ C‹M:tà{ƒÙÔÌZ³ÜÖ°{þÅæÜyRÄÒ¸sëÞ½ûô´Ô…eÇ®ö5q×ÃiwþÌ»¹óçÐeù¾¼¦áãØoÏwûMåvoGO¾<ïé’ª£ν½3ïîÂ?&sóøóëÇ‹>’zD«Å'`0ó ¨]rÐèR—}âíçàƒ¦Ñ. ê3ƒjרá nH‚82Tm¶Ehâ‰&NøÆfèá‹wtã22úSßC÷¡¨ãŽÏ©G… f{3BF¢ˆÒÔ–#PF9šø9Ó…Á‰ä–„pÙÝ’Ñ,ˆcƒR–i&_TÞÀ"B.zé¦H¾ÉælVŽè$™gæ©çQð^íüny؆¦ëqk/—n‘ðÚ¾`c¿A’hîÁè‚,p¯|%,òÂä5̤¶k<1O#{àa.ÿAn$“<²ÂêºkðÉi¤ûó¹ÐÝ3µ ´Î=ðŒ²þ*?Œ!‘/Ï33ùz ![Ã)BÖYV2ù~­GÍ' ÝÇÍÔÜôɼJ¡tNË÷Ð -4®Õ*ísÝO?omóîQoÕþTp“m±@Ž3ε֓s-ùå_Òé°²»}ôÎKï¬3à€ƒÞ3ÓÎlòèFMëß@>Öà¾1Õˆ'Þ‹–ÇbRÎ Õ«_)Ì_ùoxÍ&-òêo3]„ëw#=ëÒ›|}ôÓçí<ö²Óµ²SKœ;ŒW›ÏíÙ¸;À¾ ½yåí÷¤6l¿‘3÷¦‡þ¹Ý¨óÛ÷À×?èýÿÓ^ø¤C»¢ØNSÇ;_|Ò?öÄÏkcþkÀ1÷»ù±å~{È_öw@ënnÝ“õö½ (Ð& ¸@6ŒÏ_å¡•AA ZqÀûaÕ'1ãyp-:\qpÕµ°€¥saì^84)Ò°op‹ÀÞVCÊ+[£Tývèžô1x½0ûÎH¼ëØD,Nòì0&ðyœ…Ó¨˜B+®1¤»hÖŒ9$ã‹×5³ùÂqt$éçÈGj ™Ád%ß’D,Ñ(%ä£eÁ3@öïŽØ£¡EBà†AJ¤"7ÔɉÕÒŸôÌmâV½£­ën¥ÛùF½P汄K#™ÂZéÊWR0ˆÌþÒ-g)FjÎ 6¹¬AuÕKëýrZÁæ0_WÌ@Æp˜),Ø2µØL ÀRy²´¦€¦Ù-z‚ ›%ºžÏNÈJv¦“˜VÜ#ìR¹J}ª™í,Â;‡Oy–Ñ¡€ÒÜÊ–Ç  ô¢Ì@·¼M®„^›žØ^Ӹ…n‘¤»0vN¸–ºéD‹]$b lòŒ#.ê.Ÿ$J¯z×ËÞöº÷½ð¯|ýä܈þµ»È³@$s^ þ¢¿p*¯jçKàøÀN°‚X_SE¿ 1ãÅ[[E\³5è]°†7Ìá{˜½l˃!l¨Ýaí}¿;Û%Ó˜âGºXK[B.¹FJnÆfÕ€?ÌãûøÇ@VSƒþ…5bÿƒ‘dóÙØ¸ÊÅ/@4¶Üúf|A#ZÙÁPå\·Ìå.{Ù½!N[‘ü«¯Êëqe³Æ÷É1hä ùúa,óź_γž÷Ìç0›àpd>Hß|â­©Y~¾#t|èÿ5Çbβ¿øLéJ[úÃ~ÖñRíA':PhæÝçLjÅ ºƒ0ï}ÿ¼cíàհ޵¬gMëZÛúָε®wÍë^ûú×À6¯µ+µàr'žf3¢½ì!¶9Íob©Ù˜ê ¯š³’jL[ ÀBè¼|b®†Ì¯M›‡f¦ö«í>rpÉʾqmC=e±É¹ÜØÄó¶ùþÔí¸~ûÎò¸lJÏÍ_ý6òàeCx×b,oCWráÂS Ø:8I'CºKÙVžg]€ˆŒêÒ[Æ+tàZb“ÏØ/ñ¶ÌªVO–´ó¸¸A¾g‘÷È ˆ…Àášòg‰åÍ8™sÏt›æH׿aGŽóê¶aæ+"·KÞó•sШ²s»ÜÀÈ<éH·¹sž™óåš<§¯ºÊkÂppië³óúÑÁr±7‡ìNÜÙc‰rµÓÈïTç Ü랯ÓýÒv?$òîN¨ÿè· í;àu2ù·ë›è‡ºá_éÄ÷æeŸ{í¤ÎR­Öô²<äaŠù,@Q¢ç<Ÿ=¯þ¨‡¾­£_=Ve;ùNWÞågu}š6/ûš/ýæ0ÉùÎKÛû¿^õíÜ«=ûâç™ö¹q<w°|Þ7ÝϾ§`M}Ü[ÿúÇ»ô»ÿÜïƒßï–¯ƒüå¿ñéÛ§úçï2öq£}Û¼Úü‡Dó7Üå~V×sñ7€ô·Zö‡#ø—!—~wÿ×0 ˜Tíg€Â€z¢zR`VãW X.@¶¥¡y°Öx7õ}•¨c5ƒ4Xƒ6øUâ+n3‚#T‚&èc(H̵‚OÀ~öÅN…„ó”ƒå²ƒ;@‚øƒ'(Ї3ÿW„ýG_º÷‚GƒJ~BÇz¥þäÇD>(…„S2BD8;{\iç…˜rÐU«Å H|høcj(1׆P“…‘²…(‡XLh…³‡g¸‡Ö‡¦¡KWøtoyqhˆ~¥vu¨eû& DøqŽ8_ˆ…T‰Ø…˜XMš˜ˆm3Ÿ(ˆ¡H`£ø¥8‰:'‹™†m×¶Š‘†ˆa‚:Ø2'lÆxŒÈ˜Œ»ömØg„‡¨„;Œ’uV¾¨¸{0xD†ù¶…×Åš‘\øŒâxˆ­H³¸Žì_»ˆcvŽáò{êØŽöx¾µ]’'šŒß}ø9n„¸üÞˆa—7 )þïˆq½x󘬑a y‘²÷2‘™nU·‰“†‘"ÙŽ¹Xבé Ž#Ù’¡X’Æ‘(Ia*Y‘ é’8™0™’Ò¸R=É ©m99”Ö·“ß3y ôøvH”NÉyFif?éPS‰A©qO™•`•ú…”Iim5©©•déa\‰^ù•î–‰1–eù– v–4Y•ÖD—Äq•C—zÙerij§–k™ŽLɉ{Y˜AÖ—$“€Ùn)–7i˜i–¤÷Tй˜Ë†oFäv®™œi`ˆ©”i™•“™YO›Ù™¨éŽ“)b¡i™v9x)†©9›ö™ªþÖš‹ùš±›3 \¾iúx‰¢Ù•Ù–’ò›ÈIÁÉsÃ鑸RÉϱœÌלÄÉ–ˆ!"²Ü¹P'Ýžâ9žäYžæyžè™žê¹žì¹2×žÜ™Šæh×)˜+ ŸåùüÙŸþùŸ èÙ›JÞGŸsƒ º  zƒs$ úY :¡Z¡Ÿßy¡òÙ£‰ j3à z¡$Z¢&z¢æI º¡˜ù¡.ê Ú)¢!Š¢4Z£6*¢º¢Ú¨Š/Ú£®2£ÿ9¢7:¤DZ¤ì©¢Ê¢Sס>ڤХR:¥½)€Tz¥Xš¥Zº¥\Ú¥^ú¥u`¦Wj¥bª¥…è¤hªD-P¦Yº¦lú¦p§r:§tê¥dZ§x¦iº§!à¦xú§€¨‚:¨„Z¨¨§|š¨Šêº¹¨Žú¨š59 :©”Z©–z©˜š©šº©œÚ©žú© ª¢:ª•©¦zª¨šªªºª’;Tix8.4.3/docs/html/gif/tix/tlist/tlist.gif0000775000122200012240000000642207426315547020651 0ustar jeffhjeffh00000000000000GIF87añÐóÿÿÿÃÃÃqqqëëëÓÓÓÿÿó}}}óÿ‚,ñÐþ0ÈI«½8ëÍ»ÿ`(Žd¹hª®lë¾p,Ïtmßx®ïíÀ pH,ȤrÉl:ŸÐ¨t:ø¨ÅvËíz¿Síw0°J~zÍn»Ýâ·|N¯Ûïø¼~Ïﯵ~odeWimq‡Š‹ŒŽ‹€ƒfhމ™š›œ~‘Œ“…—@¥¦§¥Ÿd”–lƒ°±²±@³¶·¸¹º»¼½¾¿ÀÁ°ƒ¯¬¢ÇŵÅÍÎÏÐÑÒÃÎÊ­¤¯`ÚÛÜÝÞÜÖɆ|˜¨çèœdä{ªíì¡gØãžóé÷øŠëõªñ•ö¸Ëc.ŸÁƒwöõH2yìFl8¡R¨AaQÄþì–d QE';²Ñ؆%G•ú>ÚQ•RÍ€‘Œ(³NA˜-_^4fM:4}â´©Ó½…‹nºÆ%Ñ©,±R•ª°\H¥O™*¹”ɸ£³V}ɶ-Ö©Rsž"')Ò¥›üdÖfT©jßf¼jUðV ]ÛÐôõnؼcwš\ó÷ÕÙ¸AW¼u»V0f¹r ÝdÌæèh¿$%—5}ùóà7BÛj^{¸hâÒ6ë6žsZbj§¨Õ0ÃÕúsíØDk»Q®ò6ec¤)ƒ .öO´º±<~õ5÷•Ýã:Çc—7ÞÀ}CÕžï;Ü×ï‘»ÎË~²tÇÔ![·ïµþ=÷ð þ¦Öl®nø©W8ùéñÓ|zäßcÄärž^×Õ3a„"ÕRæ‡Þ^!>Øá‰í|È[ˆ êÇ`‹V†âŒ3©¨[?E–žËT8Í@¤ÀYäoF ©ä’L6éd/IêhÄTiå•Xf©å–\véå—`†)æ˜d–iæ™[f!%OT¢éæ›pÆ)çœt¢iψlÖ©çž|öégwbˆH›j衈î蚃&êè£FšfŽû#饘fÊ碕æ¤é§ †:&§/’!ꩨ¦J*Yž¦êê«—®ªZ«°Öjk¡²îHè­¼ö*g®{íêë°ÄŽJi©Â«ì²Yþ›'˜D+í´ÔVkíµØf«í¶Üvëí·à†+n˜Î6 ­¸è¦«îºì¶ë.¶äË*Saðͽøæ«oÄ‹ä³_Ú»ïÀ;ŸèÒW·Ä™Œn tŸô—=¿)°qSùªd>‹µ­kÄÞ°A$Œ°%ìÒŤ½¦°…Gxa ¹4Ã(ÔІü¡t88]±Œ Bâêp8DâÉiS¢1FĦå.ŠSÌ¢þÁªx»N‹Z ãÆœ(¨+ÊPŒhÄóG¸ý,pTqW±3ÆñŽ_XãÛA0^*ôÚÈôøD3òk!¤7þ˜1B–±Ž‡üZÐ’¸Jx–Tã½èÆ(n0“4Œã'¹Idn½{Ùþf²DNq…—K^7çGÒñ‹2Üà$ý'@Í©R• Œœ.mÆÀœí}Ll`Š,ÐõÏmÇÞïà8L×¥òt! &¿J Aµi‰mÏD¡ü¤©>jÂ/}²ëlÉÉ>æ2œ±Ë™Æj óæ:¹ÉGof œ¼¦ýæÉ>sŸ´ßØiJþšãTÞ4þëyN&4Ÿ å§Š>óŽÓ¦ÖìÙ=ÿ| ­¥F›ÉÑ zt•Ëä/µHÒ NM€(=ØJfBT*ò °,C»yÄŸ5£Ë´"$×vÔ¦šm§P´£S§šC¨’©TÍjĬºÔojõ«ÛLjúF°~u¨ý,ªY©ŠÖ–u­lå*.# ש¶•¥oedÉÄÙT½Bì®<µ#&‘ÈW£–”be£[=9½)ˆ4Œ£Ô`£ÊÃvm–zƒ›+_iYÈ¥³oÇTib÷¸Øw>´°[H;³š’Îx{ ßfï7ÚBvõŸ5µ(-=¸¹djϵ—EÝâ|‰Ô‰13°•…gÛþ§ºœ¦TŠÀ…(F±§ÍÉ^õ›¹å¥s±ù=ŠôšÆÔ[uåÚIÓviånðX+³èò•qÊom9×µei¥_D³è^ö™R°îm±Ðó¢v·ª]¯wÑ×Aút¦¢5®Rë‹]å.¥™U0û[XÍùM¾+Q£çÓº¢·Ä[$¯;éj⣠˜Âÿl±S_\^ËX‘4^1VoüÓû“À<6ªÕä;dEÆã‘ßšä8.ŒM†ã“¥ê×­I7½b|vé‚x"¶SŽäaCùÞç¾ÒhN³ðÙÛG3laÆê˜}xe3CWÍif³>%[Åñ-Î^,;<þ]þâÍ®|­Õ+O©·(Îfg)M™Þyy&´D%—OE[AÅ?¾R]*Ýø†À´¼ó¡Mèí–Y|Ø|4ï+iæËìÅÖœ5¿–~fäv=-kQÓºÖ®¾u~ ½ê5·ÖžÕïå>=ß[ÖØ¾n§¸mC³€Õ^.¨ÛZm°ÛJ£.Þð–Sæq×ÍVt,©·¾ß9ÔÎ<­—qÍmÐÒ”×*w4Åî±…÷ÞÕng¨Ñ}ìqò[Úþö6¦]ðMWüqÙ¹«”îÆjWžý†)d›MñSدûp67^¶E:Ê1h$¾‘å4²¼‡5ãÍs.åþ™3™çZÜ9ÐÅ(ô¡ÝçP6º‹®ô¥#]ªMWbÑ«L´\µË@…6mC¬X¼bqÎ4Ó5Éàg«Ë ;tØ!fö.Ý׾ůNNÖžÊ`Ü ]Þ/չʻÝôË|»ë7? ™6¹j#q‘ôæ ÿÞèË·ï{¦îjeÛÝ*ü¢¦ûß<jÅA>Ûnón—íчgs¢Ü.|Þïë;˜à®¯Âéõýf?§“à‹®žðûLÏØsöO|ïoON‹7_ãOO.ïlæ;¿Ð ï¶ãa¶¦žjŸ·ý-ž{ÓGÛÓï|<ùîî?Ü÷…>~ì1ºëoþ—Üá¿o~ù©¶{ïûÊífrîÇzÅ·|Ò¦PoWvÐÄw{rø5ýGj¨Ey«‡y–÷`—''Ì?õ7q)×€€ê#@¨n¼„A D‚³l Æ}.è‚Ã&y/~ñÖz˜ã€²tS÷r`Ðvº2Gw#ös„5Çt ókäuB „NX@P…Ú3…T¸:Vx…vss&Ð…^ø…`†bèçÇ,fX,;t†jè+i¸†nX+mø†rˆ*qH`ïr‡x˜‡z¸‡ÛR†ÿć€ˆ‚8ˆÝâ‡@Æ900c@$OE„iEs9Ñ¢ˆ‚sÂS"dˆ¢6>S‰þûòBu‚‰XX%àBœˆn“(j¤(GÒŠ[ˆ%ÐDXZ6Fð‡–øŠ¨%³8L'<‹Û ŠtBŒD8§B'Œ2„Œ``Œs3ã<§xsÑr.»è(Ô(3/-ØxÚŠ—Ø‹çrW¶pDÙøŒÛ˜(Ýx2#-¸/³`D°p'ëøMïÈÒ('ý(YÊó¸LC@_׿UC -ºH޼hCK#À˜ŠùhûØr‰ÿ'IEvHŠYëHù²‘pÒ‘ÅqI‹\GZ^uG0-íˆ((ù0”¸’UU‹/y‹1Y“Qp“„(“Ù\¸ˆFy”H™Ó”bH‘-§”Nù”P•À”sX•’R‡V™•Wy\”¥•^¹•–_9–ˆ‚•dy–›Â•×…–l©(j9`m—qb–rY—fB—v™—T©—|É4"‰}˜d‚—‚Y˜0ô–0f˜ŠIBˆIZWa)¹Vay&B#˜¹ 6Bi™2’™ ) ,‰#£š¨¹"—Pš’š®9 «imžyš¯Y››™2 Ãñ$¼Ù›¾© Qâ ×ð›ÄYœÆyœ½Ð <°œÌÙœÎùœÐÒ™;Tix8.4.3/docs/html/gif/tix/tlist/twofont.gif0000775000122200012240000000352507426315547021213 0ustar jeffhjeffh00000000000000GIF87aÌ{òÿÿÿÓÓÓ}}}×××UUUššš,Ì{þºÜþ0ÊI«½8ëÍ»ÿ`(Ž$œhª®lë¾p,Ïtmßøk|ïÿÀ pH,ȤrÉl ;§° ­Z¯Xišå  Ï@.›Ïh45Ín»ßð¸|N¯—·{{ Vˆózik„…†‡‡xˆd|Q‹ƒ’“”zŠ‹ac˜€•žŸ w‘‰_Žœ¡¨©—ˆ™~›¢[²³´µT¶¸¹º»¼½¾¿ÀÁ´³g®Ç]ÌÍÎÏÐ@Ç¥šŒÖt£ªÛžÚs¬uÚÈÊfÞræÜé­ØßèpâÔ¯Øîoôê÷vö{úlð}ɰ®â÷è„!ƒnV"¨&’;óâœÇî\ÅO eL³þQÃi ,'‘ÄeìX‡¥—ë:¬Wà$É&GæK‰¦'Ÿ‰xºa%t‹MQ8Bº‡©F ®DA†jTUBÍzèN™!ieTR©Ã#c'M½ZF*Ö®\ᲕK5…Ç‹?ÍZS'Ù¤Ë0í»ãÛ¸X­"Tü–1ÇÃsO¥d´aX¾iÇ™½<4mAÈZ­²µ»x*èâ%£¡L˜$ç~„ý™:JŒ—g•§ÛŠ–Zunê¬Q{ ‡×˜eÁbýB*Ø’S;KG¦:±ðàº!Ç´´w_fæËPVŠŽÝ4ð쑟¿ 9fåš›¥TqhÝøíç—Ëžûþk½ßžs?gzq¥wÚZëõ—Ow°8›rß<‡Ï…CY’`½HXÍ€óa(bˆá|TNDž(Þˆ,VØ7M¸T1xÐhã8æ8Km4ò( Š;è(äDidŽ>Êàä“PF)å”TViå•Xf©å–\vée•S,ùC“_–iæ™h¦©¦šaʸŚpÆ)çœt‚ ä‡$99Àž|öé矀*è „j衈&ªè¢~:ixy À褔Vj饘R€£wÊ3žÔ)ꨤ–*ÀœN“¢( šêê«°v‰ª®JV«±æªë®³Öê&™{î*ì°¥öÚéDŸJþê“,«±Ðfi¬ª¿âêd³Ã>í¶TN#ž¬* %V’›¦¹\¢;.·Üz‹Tµâ2[ªºZÒ{-»Ûºû¼ÁÊKå R’‹B”)Œ[p½ÌìÀ× 0¾p껜­ËY+€Âë¼ð½sœî”ö^l°È$? 1šÇ—l¿ƒì2È!‡|eÌ0?kîÍ2ŸÌeʆË2Éÿ¾ü/½9WI³ÆHã¬3Ê ¤ú­§‘þ\ôÑì±Éå ý°ºsŒõÒ^òLñ›ñ¶l0Ãþ&üõÅk×¼6Ú ›LtÑ`_)6¿Ëš½0Ü@Ì7ÛtÇýö× Ï]w™wƒ{kÙ‡7NlâPûœ· ŽþW>*äÈF=y –w>'æ9U̸ç¤_Þ4­Ç†NöÏ¥·þùé¾*.:ë®×®&èZlûîgâ‘ÅÚæú·Ú\Îû”¾¯œ7àm›:¼ßX7¼•ÉkÞ1àÂKoõõÓkY½ä×??ªøÛ7Üýΰ§ž{ÙÍÏ|ñh¯p6ÆFN|ñlÛþýâRŽîÀ àÿ¶5 .KÑ žÜ(¿ÖíovË;[þâ6A¿í­‚¼ –g¯ L`Øs`ú¨%»ÕEð‚œk›1h@ nÐ~ó+X×Èw¸š0|-´`ÂP8Àjpf0ä·4ks<ä!Î|HÁP{B|" ™ÂÒÑþZNìa3ØD->Ñxìb]hÅ>-sàÛ[áæ>jñ}Pdôà·À’;Ÿ«„G–Qnçëãæ°Èé ²ˆ”Ò!ÉÈS™ñ]%õPƒºÍ˜®’¨®*RmjTPæq©çl*OoÕ;J,­ªP¯ªº’jµ¨:UßïžúU°)µ¬d ÖÊÖ¶ºuNƒäTøÖºÚõ®më'çª'¼úõ¯€Í€^UéT´ºn§Xa[‡Ø®F㱬dƒ ÒÄra²˜Í¬f­PÙÐÂD- m‰4DŠ}–´¢MmÀa[nGµ°%j÷aZB€6¶¸uÍ*€ÙÚÙæ6·¬ý,sˆ”¤#÷¸È)­‘šÜæ:÷¹ÐÝNr@ÝêZ÷ºØÍ®vaØîz÷»à ¯xÇ Þ;Tix8.4.3/docs/html/gif/tix/tlist/horizontal.gif0000775000122200012240000000531007426315545021674 0ustar jeffhjeffh00000000000000GIF87aOðÿÿÿ,OþŒ©Ëí£œ´Ú‹³Þ¼û†âH–æ‰.Àʶî ÇòL×öçúÎ÷þ a@êˆL*—̦Ã8ŒJ§ÔªõŠÍP§÷ ‹FRÙЫ×ìöç,‚§Ýôºý€‡äy¼ÿȤÂ7xˆ˜˜aØÀHÆÕ§(9Iù41QX¹É9騀ù ÙIZŠ÷ ‰&1jÚê:†ªš* ûz‹k– ÁÚ1õ$%*ÜH\Œ|kÈ\Køféj»*ýK;}ÍQ½@ý­Ý8^Nþˆžî½Îô Ÿ­ÚÝk®b¯Î«¿Ïžï"Þ7pâø-x!û¹;×°„#gûÐÛe°>þ‡>¬ØQá…‹U›X0âB‘Âe”¥RãËH1ã´“GP#I–<†äIÁgIœ?o]ö¯^ÒPE?&múô¨Ñ„ ¥F¥ŠbÉf)BÍY“¦W°cÉ~UVÚ ™Z=+3ìΩqÓÖ… Ӯ͵—ÚŠÕÛh_ÁÖªb½ºÒpâr€u{ø­YÉ“#óµ|y1â‘ï$vÅÛ’°RÅœI‡‘niÆžuB›9ws^б9ÚÆ<›²Ú¾³55ÑÊšeW}šõn‹¯kÖ&~WwnÜÓ‹COžµõ¼æzŸgŽNÝ;øïØo[×¾wûÆðëÉ7þx|øƒ•óþ,½üõ÷ôþ #çoÞjý–Ýr‡`u˜ƒÃí7_€ú¡·~Ôè^„b8Þ‚j˜a}ÞçZ{†èß v8!Š~(b@\8†Ö'&øW~9²7ÓŽ8Ч`z>¦(–-Þ$‡,*9ä‘I®ødŒ&ðqXo 1 d“ZB¹¥”z¹$—†ù•:rÙÌ LæÈ‚“i^äÒŒ[!Ô¦˜ÜÕ¦‡™¢©Â /ÞFDƒ€ú)è -YY ø–ž8s8XÈi…¤•RZ…¥™nƒçc]‚‰äŽŠò¤Õ¨¦½yh¡“™zjŸ.üy!•Å9*–®®Yêœ†Õ jn¼öúæšbʺ ­NÚÚþc–BÅjâ§°>JlyÆ l³ÎªJ&¢_j›í³µFËß´vV›l³Ê.ê¹åvû”¸½"+—¹Öª«â»ÃºØ®…ò¹®sóÊÛã½ìrä.·éþ Âþü.¸ì­› w71mÖ %Hc{p¿{l1ÃçÕi×r,1ÈùÑ[ïÈ,_épŒ£›r¼ «ÌcXŸlÖ̱ô2Œ.W¼òÅ ãK°¾µòkóÂM¬óÑ÷¬ô±L4Ò¤õÈE6Z5µCãü#Ñ9û&uÆ7ù,¹O‡üvÑ"Güu•a;vÜgÃÌ5Ú^ÇL$Û-GœµÖ­’Ýq×tþ¢àmvÙˆ×þì÷â†ßå¸Ð„Gž8Ö}_¹sÉu)öæ“ÃëùÍŠ£\÷¬wÛëvêNËuå¬3.hæÛš®·ä½wzÚ<¯¥ûå²>õá¿Sü߯ÿU|òÈ!¯6ÊÔ?½ÑÎK?[ôÕÓ|=õá~¦ð¢“Œ=Ƹ:¤íó>üB$?íçe.úßgúп¾¿ pI¸#Š÷ˆÀJôï~L ±@°•è`í6Á j0t]7ÂVt°X ¡ 1Bi•ð„,¼C õÂʰ /|X gˆC1ÔPf7Ì¡°ÃÀõð‡DLB7Ä"*QFœ’ z–Eâ„IŒ¢þ=FÅ‚B \좿F/NщÌùÙϨŽ,>qphl£?ÔXƶ¹qŽM£‘òGÇ<š ƒk|œÿØD>Æ‘€,d;ì¨%<Ò,SÕ¹H46RcŒ¤%çƒÈþ]r“‡$ヲ¾-*C~[ %LùƒRLrm•„]Þh7X–…ÏËS+½v5¾©N–{:Ä*ó¥ÅÝùï:ãÛ¥.Wç‡_&-˜ø瘧£ë!B™Tc&»œyº\FS{€ &ñnI7m2˘ۜÛ¼‰9p²NœÐ"ß8‘yŠZzJ“4CÝ1kwÏæuSž&£§³—ÍØås–ûäÞÿ¬Y=l.Ïžå„§ þù9ºDâw¼ô]E—æKˆ¢ÏŸr¤è@÷ÖPÛ%S£ø«§0Á÷L†¾S¤ñ4¨-z-…^š+Õç9Ij,zÈô£å)FiéÒyšôyÄL);¿ÅÍ›µŸC5hQúJŸZ-£K(G 9¨z4¤6iU7ÚÔïeu¡G=–4©*ÖoÂT§îl'9kJP¥¦5k¨õŒ*P®ÆÕ«síž:ÃzW­–¬®,h_ÚGÍ “<ÅœTK'Wÿ½4±ÂÜ©^A ×^õ°“$ƒ,›Ùž^v_h•¬PQ“+šþÊr–R­šv††×Ú•¯¦e*jÙ·Z€j*·ÆAo%ä[ÙnM”¿U,m3þé¾MÅ6R˜¢BsñÜQbõ¡_-ézb0ØèÞ·ÅeQp…ûŸï†³´ÈÝÈ«òš‡T±Sâ<ïz‹ Þñn¶¶VåNlw_\m¿é5ë~§:ßòš¥‚%0aqI^O.–¨ŒÅkTGûSÃÒ¬I5ðLUêV‡Ú~…)d-üزêwÀ-åìiI¬¼ ‹¶{-ñ„­‹bݪ½f)uMlÛÏÁ[ m„#+` ï¸Àc1‚¬àü¶Æ± qaœdûÊíÀ=fr‹oüâ.©oµ²f%dËØÉö1€Áå ™ÌUæ²éÀaÄz¶«k†0M½LZ$ ’t³­³™1ìþf1×!Îåó“Alg@ûWÇpÆiOêg<óWÒg†òžìÔ9Ål^g‚/­ä¶ºÉ‰î3–ÃLgN—汧ò†íaSyÕe¦ô‡]ŒjW™ÊÙí4`›fF?•׈þ³¬ kÊ~¹×´nó¢ßìBŸø¡Üm)QéúÍOÛ׿„´sÌÉp¿'×â.wEÈmîtïуÊV·»¿]_wËÛS ž·½ÑWï{ÏÞÖ÷»“=g‹›ß0¸¹ Þ@ƒ+áV¸k‡ÿâí–¸!)p‹/ã†Öø9Žiÿäy InòK¢<å‘\9Ë/ðŽ¿<Š.ŸùÄ£›ƒþiÛ<%/øÎéØó„ÿ\ƒAoøÐMXôˆˆI¯øÒ—ØôŒ?ŠQ—ùÔgXõ_ýYïùÖ÷×õ¯Ÿ1ìb8z¬^ö’=íP?»ÖÙv·{î"”;Ýn÷»3=ïz÷áÚûŽÃ¿^†‚< ox¤ó=ñ‡_<ãϨ¹?^ˆŸ|+oy®;>ó—ß<ç5ùσó¢ éK÷Уž‚§_=.ZïúWÀ>öuW=í-èùÛ¿>÷º—=ï{_{9ø¤˜=ñøûãwÂøÊ—ó›ÁäCŸÏŸþ|Ç4|ëS^úÚ¾í»¿|îƒÿúwzûøÁPýó#ûûê÷„øÛêS±öþ·´¯ŒN/tVCBÏ¿+*øç‚ðY$yH!Ýbˆ€ÿ×(¡t ¨Xdh'è7\xä§içf~8%èA‚ÃcD‚%èZA ¨‚K` û§/øj£q HƒBB ÝÐ987׃>h;lBè€Â'uF¨ï§„Á~MˆO…KÈ(éFWˆ…Y¨…[È…3`S¨@](†cH†eh†?P;Tix8.4.3/docs/html/gif/tix/tlist/vertical.gif0000775000122200012240000000532707426315547021326 0ustar jeffhjeffh00000000000000GIF87aMðÿÿÿ,MþŒ©Ëí£œ´Ú‹³~ û†âH–扦êʶî ÇálöçúÎ÷Rm¨É†Ä¢ñˆL*O`óé‹J§Ôªu!¤A¯Ü®÷ n³á²ùŒ®ŸÎ´û ¯×ñÜrTÏ[æ[½­-è7ˆ5ÖGˆ!裈ˆÈÇØøc©÷X™8‰Yy¹©¦ééhHª@jWJØ™ qŠãʶÛûG›7‹k ºû¦ë«Ue<¾Íâ›bª7Ü¥V>zº›:»ÍµÆû´·×™ûлCF{í¸rMNñŒß'à{ÿîwìËO¾iâé¸wÙªÛ*wëÈnü×xƒ¾¼|Û…8îÙh^ºúC~x8GB÷‚ðÏŸýóퟱáøÃ«'良 ݺ›þ§ ì°|t¤@µ¥o‚Ñ£ öÆö½ü¥n€Ü ù(; 6ŽƒÖ á÷WÁþ t%4àñ–5`-†&ØšÓÇ:òIms›I‘üжÃÒõ°B?´_…¿ 1jGäaH4#q&P»ÂþüxÂ!r¨>l"ñ‡ÅñEÑ‹N#—ØD*¶Pƒ[$c«FÃÌ0Žx`ŸŸ@6pOôÞùºç¾=æ0Ì`§gº²‘twì#!U(H@>Òõ›$õ¶§DEbð8|$óÉBr2“¤^A)8CžÎsˆ´$ðEJFðRÊ[$ ƒ‚:Tú„.\e-9ªÐý˜¶CჳO¾®w4¦ /¥»KvŽ™úk$¨¨iJI²˜ÖÔf4 ÍA"£’¦Ø&&¿ÂÇX3…ð;'ñÒÉ–YJO‡Áäc-!Ï"ÎÓ‘?kf7Ñç?ÌØ‘T÷l' g.^âñŒ—KV5þ ŠÐRö’¡Œ„¨8yPIò/‹Õ(FÿfO*”Ÿì”&H/úѵ©R“,d'])u¦T¢õDé3E9RsŠP™¶ìé&sJGÌ1¨°ô'I‰ÉÄ.¦±QUâÊȨF›ÒsŒPe*<÷ÙÔ)ZUª>åª~¢êQ=¾D`k,ÅÚ²²’’ªI=¢ZÏêU“êì­hÍêS½¢ jŸz­cB9Q¬îT®4ê sºÆ.´¥‚å¨l¸ªØ£Þ´°‡ìb‹Y1êT„²\ifCé¨Í2Ö2¬AOVÓ¦r”põ$aA ÛÕ"—Ã-O§YÛÏv–µÉc¥a3Ê»ÜRö§–•ì‹|þÛU—¹ÉÅiq¯ùM˜–S¸ÃuìiÙÌׄ¹H%î?qÝb׬×ól+¨ ÚÛvÉglÁ©Y;ˆÖ¹ß%o`ãëÕ‚ºÆ¼ïu-|û+Ýqº×БЍQëÐlø¡–V@œ/þx…úÕ®lŸ›Ø”Á×­îgÕKQnvÔ¾—Åï†#Ì[]ú7Àm…Ó€-ü_¿ųMm‰C+пZ³¯E½{LãâÚuin4ÒÖ:ä"èÈ­%±’gÅ亲÷ÉG»!’§LåÁŒ4ÉJÍò’­Üä+{™c`–r\Ç|™(«ØÉh®ò–± ã6C†?F¯qåìf C–³xžsþÙ>KGÂqïÝBÿ·ÃwFô é×Vx‡¥½oz} ?‹yŘQŠ)—9Ývzjz^]vGíiM7ÏÎ1FuªK­ªS»zП~Txg-²Z#s­“–Z¥{k\»LÕfæ´°‡ ëMºÑˆþu£}ì<×7[‹>¶³¹¬Za_›VÑÎ5±Ïín£¬ÁÔfñ¨=_f ÝÜ·Ÿ“晪»Ïì¶»I=íxO¶×LËkù¬í­Ú¸¹Ý¦ëš•íjƒÿ÷–ö¼«}f<+œàØv÷Ä»Ëð†kYÈp†8®/ð7[àlù¬A>ÚŠ‹墎¸œYîá»j<Íe>¸¾; sþ#Õ9´ËÛÜóBïüÜ$ºÍ‰®æ…·qæø~¸¹Žó¢ß\é+—z±KNo«Cê×:×UÞõ¤S¼ãYºÇ±.q¯ýçh6ûÓ¿nmµc|éL§ù›µ™µº7ßzÿ¡Øû ·Ÿ<&oø‘>ñ@<ã;³øÇÂñ’·Ü+?ùËcžð5ß|#ïy–€>ôï<é1s‘:«~õ¬_‚æO_ú»Ã^£Ÿ=_oûâ>÷ß0ý6·°úZ’qUg µ¾ÊùxÍ±Ë ê/ÕÀ¶ˆjñ´ïÖ¿ãÝů%øµ:üÚfçü”?Ã6¤~¡À ù²3¿}\Á~_»¿:À nþû½‘}Yô·6Çý ÿ7øJvçLø'@c€‹¥îp Hh.*q|8Wø" q1 !ˆ€²12Ês‚3S4‘[`%-˜Vû·€$W94x2/ØèõVøpvˆPÏ@W@ ƒ!Çöh½‚.˜ Ë·„è|S8˜h¦Ç{5Q{YèwXÈ…··…_¨ ©G…eh†fhbHåq†m膭§†¾P;Tix8.4.3/docs/html/gif/tix/container/0000775000122200012240000000000010767576212017637 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/html/gif/tix/container/sl-nobar.gif0000775000122200012240000000370107426315540022040 0ustar jeffhjeffh00000000000000GIF87aä•òÿÿÿÃÃÃqqqëë뎎ŽÓÓÓ,ä•þHºÜþ0ÊI«½8ëÍ»'Ã'Ždirᘠlë¾pÆtmßx®ï|ïÿ2Ð5X Y³£rÉl:—ÉcQ>¯Ø¬vå¥Ö­xLÖvÓ° Èn»ß!¸|N¯Ûïø¼~Ïï·A}D_k'…†‡ˆ‰$‚TA>ge‘’[8•7]iDj:—“Ÿ \œ9ž5™ƒ¥4©¡¬­¦£–°˜jšŽ=«®-@»6¾¹1¸/Q¶H¨²6àÀÎ=Ð0ÒÁHʯ-×ÇkÉ×®ÔXâÕÌÇÚܵÖßÕ/»ïϼÎï¼ñ,Àóð÷ò䬿ë,ÐDÖh ±íöéâ§_=‡ íÅãW¯,ÂÂ$Äþˆ–ÆeÜæ»'bɇªlWÉÊ6Å@"TÇ1 Ìš %êÔgžÉ}G&l‰$c¶›§ â4'd5¡UÊ;9 åJ–Ùµi*·[àš¥„8ÖO³A­FÄÊŽ«*¯Jÿál'ô§]µwsÎíô±ë̯<ä’!›v%TzWûù ³ïÛ¿q“¬·r¹ÅêÀõØÖ²gI˜)oÞÔù³i1¡KӌÇ©Ÿ×°cËžÇuí>´XÓÞÍ»·ïßÀo»y0À€ñãÈ“+_μ¹óçУKŸN½ºõëØ[<»÷ïàËO~:wîÆ ¨_Ͼ½û÷ðãËŸO¿¾ýûøóë߯_{þnô È€h`ø×‘ éèàƒ˜ çå–=ÀVÐ!F(âˆLX!ƒ2¢†Z°b¾Ø=$Öh‚‰ÿY˜â+ʈˆ„¤DZ€ã‚2t' lø“ ÐèÀ‡R6©á“WW¶e‘`fpd’.e“1Æxæ—P 9åš]ÆÉåœo²æŒIŽf²¨âŸ~èjÂ9(œ/º‰ç¢èÙM™€²Yh–2R‰¥•~RJ'¢uÊè§ 8ºš’‘:)‰N™j¦•~¹ª§ ~***¤Ú©h«˜æÚ¦œÂªh¬±Î ©­€žºê¯»Fþ™f¯™J ,°ÂòYj³“V©µ®¦É%«¼Rú,´ ’)í·ä–[A´(öiîºì€n’ ¶+¯¹ï"ï¼ø‚KaŽéæë/¨õvsᅢpbø$® ºXðà \«§ êp³# q"Üã_péÆv¼#ÅYf»íµ#o‰e•N. #ÉšÜg2['²kZªìÏrÎLsÉáîÙ/±É zª—TëªÐChó´·¢º²Ê¸Z*eÓ°v5"S#ݳª¢ºs·\c<í×ýè¸('«k×Ç¢ý4!³=BØqMíÙ¼V›óÝ^ê­ßW­ìÕˆ¶Üøâi§]¶á‡þ NùåXŽùæhÎùççº=êÀ —ž§è´’núêxÎúë6+¼pá{ø:£ˆ<9Ôµçí¡ã·cûÜŠø^{×Á‡¾/’öžœxÊ3Î*ð1ÏyiÌ@ëj|ò¡¢>,Ńÿ)χʙóÒÄs¯ü‰ð:¯»ßJ#/·âÜâ­~‰ÞÃýüüÔ[µÿ›ªßîî·>~µïfÚóÕ«Ì6>»1km, óæ¾ªMmóÛ#7ÀR`x¥*ùtÖ@ Pròó`@è¬éIOk ³Þ¶8ˆ&l©ð®»¡Þr¨Ã¯ñ°‡Cû!I&Ä!B¬ˆF,Xìdç$ÚI oÛKbæòw´¾AÐþ‰B‹"Œ€gD¦°Z¤]ƒçE]Ï…³¡_vFë‰QŠ (£ˇASÎ|&D_ú†(G§]ÐYl! U5F2Rñ€T¤aÈ4VËkìaåÆÀµ1î‘Ba8I Z‹˜Ì•&É×ÅC6!ôdÝ÷¸ =ÐŽpŒ˜))ˆJA¢1“ýËã §".òq–s^,i†ÄaΫ˜Æl2“¹®e2³\Î|æ·–(» ^¬aÒ,D'¯¸Éš@z¿\ž¸ª¸¿²Eçd]Ϲ4öokm”Y#‡)Çð–Š<Ÿ í÷GNsbå›RôÛ-›Ïèô‘¼ [Çoµ|N¯Ã©îœtÏïûW‚ƒ„…†‡ˆ‰Š‹ŒŽ„zS=2–—˜™š›"“b7lD¡v¤¥¦mqF£Bdy•I«§²³´ ©E±@­”¶°·µÀÁv¹?Ä<»ŸU¾ÂeKÎAÑÌx¿C_¯=¼ÊHÆÔDÓâHä;æàËÞqÖ=Ú Üß:òé@è\÷õªíNìNïQâñÓ5PŸ=gÑ>»pá´‡ Ç!Ä¡0¢AQùÓÐU¯þÙ>^<"N!ÃgOª”¸râđ׬QЈcà€Žkþ 3\ć,ƒ¦jqeОy¼¹¹ÛÎnð’9åÈéAŠ?K¢4yTbV¬Vû)EäSd©°–‡V¬_Q=çðkÛ²:"IÁk§ÔŒM÷$—Ң˷oækKï]_ž¡î»û#ñй-ë]ÌX°žÅü¦õÌ–2X–‰1+~¹Út`uKŽÜ¸ªëÛµjCÕ+HôgظƒÏÒM+ž‰»¡•Œˆ;$^QŒob°8F5͌竗çHÇ:ÚñŽxÌ£븽=úñ€ ¤Ç @ˆL$"Õ¥ÈF:Tœ’ù¬EI E¯’˜<`!3ÉÉ2:ñi å?):QšÒs›<¥)/©Êf±²•Éz%,‰%ËY«–¶ä.s‰«]ò’V¾ü%¬‚)LV³˜¨:&2I¥Ìe‚ª™ÎÜ4£i©iRRÖ¼&§R©Íae³›‡ú&8KÅÍqîJœæ U9Ó Ìu²ÓRóÑ$)ÑøÎDàøÌç Oº°ž§º§>ñÉÏ4…î‘M¨BÊІ:ô¡sè@þ 0ǃ²ë¢ͨF7ÊQö ” îq'@%Q}´è©À>ºÏ~vÑf©LgJÓ˜²Ô.2UMwÊÓžú4?ªPƒê.ÒS¥ˆ ˜Q‘º*¥þLMjQŸzԨʩó4T­Zª©fµ[åêž°êÏ'†U¬y"ëK]xV´ÎI­U„iUÝ*'¸J²_m¥ëQJU½VÓ«ee^ýŠ1À®Õ¬s%la úÕÁ*6V†+[ûXÈ26°\rleyxÙà –²›å,_ ÚÐfq´˜u‘fM›ÆÎJ±¬íªkï*ר^5²´¬mÇŠÛ-©¶´»RoÇôÛà¦u¸TZ­qþdWßj¸Ëír™¤Üèþ¨¹Ä}®ue¸Ôín±»Þ],j=›Yè†wGØM®yÏ[£ôRw½ìåÓtñ ßøfi¾µµï—ÜK_ýõ¯hÁ+à6ÎÖ¹`­o¯`Ø.ØÀã}íge@ UøA0seƒ'|¨ ó,{a+Zç¾ÇÌ —·Ã⃉†·wpTüÍo H¨7±õMi|\ìrÜâûå8Ã'DZßãê{›[àúhÂ$Ë oìS“,ÛçÖÁG®ßÕ';ÚOj"Œ2’½N7Ëá‹2——gÁ±UNÌZî2‘ͬÝ#YÎpNˆ HfåÅ™y¼=pv<þã«™z~q¿ŒhYÄr>µ¢ƒ¬c•e°ÉCt¨D=é3XÐêµuk#=èZëzDEÆò¯‘l›Ø´Vð±Í–ìe#×ïuö‘Š}biKÚýµvš­íër»Û=¢ö™Á¬o“[Gâ®ó¹ÑmîuËÛ2v÷»yky+«Ýö~QºGïûÂÛÈýÖ7¾~kzG›àÿ·°^p3ÜY¸Æ".q’Q¼â–¼8Æ¡‡Ü?Œ{ãg¬Ôóq[œ±èµ²¾o_W¼å+g8ÌMn0Óúé”®úꬷîúë°Ç.ûì´×nûç^5±97¦£î;¥ÿ.¼·oüñÈ'¯¼ç}é.rç ,/ýô«/à¹õÔgO;öÚwïý÷Æ?Þ37уo~휯þõ ¬ïþûÚ+Ý)–ÜÃo¿çÐþýßçÏÿÿŒø^†úP}ùÛß§ç¿:0€ò{ ¸:”΂ÈÃàOPA¼Nƒ®K`èÁ Ú„­kàWxÂy]mmTQx;j…44!ìDHB–Ðu9ÌàChñ}dýغ±†OdÞƒÈ:*–Žþ‡°+E!ÊN…G ã÷ˆ#ò1±ƒ[,€ pçA jQQÄáoøF8J‘ˆgì ÙèÆÜÑŽR¬£YB*‚QŒˆ¤^Mš²q‹} $!%‰FHò’w´"¹ÈH²“˜å#á¨ÅI1‘¨T¤ ûTÀŸR…iOG Ô¡zõ‚(mhùR˜Št¦Æ”¤³¹U >3­t¤(W=ºÕ¬4¨_j;çõNªæuªÝf`õZT¥õu°;¼é_IŠØTî2‡mì>ý:TÆJ‘Ì4¬#%«Ñ¯Zö²a|, ù‰ØÎzõ³ 5bf“ÙÔönx°­lgKÛˆÖŒ”½lmwËÛÞúÖXmSZëÚâ‘ùþ»­JËÜæ®0¹…eífKÝꂺ|J)¦kÝîzWyÐÕ–XÏÀÝïš÷¼³Ã®Ëʸ\ôº÷½´ ¯–”8VÒÂ÷¾îU¯¸]ûâ÷¿Þ•/ÁÆK\½úÝ |àwWÀ!£/yýëà ƒ6Áôâky-ÌáÆBømF­on;Lb7¬ìíïˆKÌâ¼~ø…¸m±ŒM,\g®xÆ8^'†aÜÞûؤ/–à†Ld#*.²’•d 3xÉP†¨wdí>9Ê÷ËŸ–·Ìå.{ùË`³˜ÇLæ V¯à=±xC<ácy}e޳œçLç0?TQDmíª¼à!¿ùº8þ€ MèBúЈN´¢ÍèD+piÕs|Õ<_ûùÏÞË_£7ÍéN{šÑ¡4ËÀg·ÏÆt¦ýéV»úÕˆµI-½&[:Õ%=çúV`P*³šÐ(´ `Mìb :Ô6õµr“ Z]#1§ýûõJìjûÚŸFö)K]ã£^öªtv­¥-è`ÚÜ寶º9­íc*Åî¼tB ©GšÓ£öÎ%SùQ\&uušv¢Ñ½î‚ÇúÎó»×¬Y\«ókM…ÙÖ\ÊQžãôi]uih‚[Ûà 7ô£ÉüîS§øÊ^…xÅ-JÓ´b©Áä ŽìQ£ÓïÈ|¼7¯ê4¯þö"Gx=?'éôR:í³wsíWûâ[÷/=Ú#|ká_{7þäÛgØOöTwþó}-}Ü·û®Ëqõ¿ýqwÿö߸õ‡}È ¾ü×ßåoþkÛ»dKáÒ¥=üm'ÿùÓ¶w 'u&|û÷f €ãÖm"V€ ˜=í7Zä×€HD Øfxñ·l>‡xW¸‚Û¤ï'‚˜yãg‚36e¸^¨‚iVg28ƒ4èe¯%ëW<(˜ƒwUƒ@„r†|¥:½÷E¦æ‚ÙçƒwwçWvõ—|G;;8\%È„¯÷„Ó§{®7…‰E‚úçƒÑ§…{‡p³¦|÷Çs)¸k¦Dâæo?oh~6—z$lÃF†‹–~F˜ƒ·ó€1ƆÿÖuŒg;¦Ç†Ó£kc8mæFpˆzzxpQèni|<è>m'wq7;‡¨þ>sØMTxwÁöˆ‘çq7‰ƒÆ‡ºTrJh…aÈNmv„ØCs‡ˆÒ£ˆ¢ˆwº˜n»È‹¨˜{“~-¸_÷еsMH—qÒn,åOI%qsGQü¶Ge…Œp·M¨GмhŠ¿xh¡†€˜÷{̧y=¸LôV„Ö¨xÀ¤uØ„U˨xñäM‡§rðLñ؇§ºÈÝXh#Ži†åèEèhW·tÑXWÕR²tÉr³¨~’·ÖÆý˜ŠŽx…ÅcJ m¥ÇŽ–”…(UÙ(Y‹4ç‹YŠx‘`Œ:˜„Äø‚H$JWSBwö¸Ðô‰‘=)‹ØXn(þЋúØ‹Éw~ó³€r(Wû‘Y4ˆöøv?™’A‰•\¹“øX‡HÉ’JÙL~È4©`Ř‘™•1×o"IOWyVMÕS*UqNuY–Ž(–§ø‹•7j^hS)“Ç8ˆSiQVä“„W!õ‘x g•ç„»˜‡FIm0‰‘õ×…giwùfçô‰¾×™ê¦m‘š“v˜lù_ˆW•ćš×F}êÇŠ5¹„JæzF}˜I›ÙF„˜€Ñ劯)†¿ œ¦Š¼Çš¾7šXÈ~ý籌·Y‰ã¸†Ñù‡ÔIìMÛYa(fN)dˆ9žEˆ=¦žX…þ6æž!ÈžÌ&ŸŸÞfŸHŸ ¨ŸÃ·ƒî—žþ)cø •z_,Hœ¨›zLBø úe7h–çéd‰œš¡J„Õ‡›ji“ *‘ÊIlª‰B…IÅŸ!v# k­wU'zLâ¹¢§×¢®6˜O£˜¢ù‰‰–§<ÅA¦iŽö³ˆ™É™›y‡´Éœ—S Ç Ež×–¦· ¸ÿå·{K¸ &¸ÐЏf¸ƒË¸‰” V» q›¶z¹J®д_È£j¹˜º3´f{ªû |ë³[ë6k¢œk˜žÛ«r«º«ë*kL«K.»¢´[»žÉ>ûº(J¦*j`¼9F1ë­âª™'«¤y§…]kº_û·ÖµFG›=9ixØ¥Û‰(K†Ñ;¦jx·ø…C¾*bÇ’qj¯þÐKµ¥û¶ ‡+Yi°”iV!+¨É°éˬý;–íÛ¶u›†Ø@tó¹ð—ôÈ•çv'tcȽ|sr*}ÿè¶“«9Ø‘9`›ÀVz—y¬ë•ÍÙ¿,–(Àü^N°;ü^õË©í*Q1‡¬ÊËt'˜l|Û²‡À.,»÷à ’*9ÂJ—‹·Ê¾ü„=ì´?,Ó;¿¥À@i­YåFóŠÃùø¥;\|eY®Žú”B<ÄÖTw ¯YÌŒ,ÊÅ.©h_ì}øJ¡Ò‹dÔ[]Ö‹©›J©~:Og:²J¬¾)ü¼Nl†?š»Íù´Æ{Uw©Oz ]Ùu€ü¿š™þL|~/Š»Â+£OŠºDƦ°xš¾ ´Qx³cŒž‹‹^ LB1Û»£l›ï;¹DëÉ?¶Ê½$n®ì»ákµÄÛ£Y›Ëµ»ËNJ¹´l¹k[ìcâk‰X;»ÇŒÌ C·ZÇVFÅ›JÒ<ÍËœä{Íë™–§ˆÞ¬dŽ›Êãœ_à<ÅO|ÎÖUÎìüÍ»ûÎ,æÎò¸élÇÖ\Ï&ŽÚÌúL ÷\Í º]Ð}ÐÐ f«¥ ýÐÑ=ѽ‘}ÑѽÑb¦—óÑ Ò"=ÒHÑ˶‚(Ò*½Ò,ÝÒ.½ļ ‡@{ñw‘—@;q7]ÓmtÑÓr¡Ó4ÔdÁÍOÓ1G5J½ÔSá, A³ÔR 5½ÔÓ)Qh cc6iC6 !9b]6`-àÀ9ù`=‘8{“9n×r=×t]×v}×x8pM×AÒ~ý׀ؕ£‚]؆}؈;Tix8.4.3/docs/html/gif/tix/container/pane_horz.gif0000775000122200012240000000514007426315540022307 0ustar jeffhjeffh00000000000000GIF87aóóÿÿÿÃÃÃqqqëëëÓÓÓ‚‚‚ÛÛÛ}}},óþ0ÈI«½8ëÍ»ÿ`(Ždižhª®lëš@,Ïtmßx®ï|ïÿÀ pHÔ„¤rÉl:ŸÐ¨tJ­Z¯Ø¬vË…Ž]ç L.›Ïhó8ýEð¸|N§ëø¼~Ïïûÿ€‚ƒyw„vmI‡voŒ‘’“”p†‘‰`Ž˜œ•Ÿ ¡¢„—™Šž¥£¬­®¡«Œ§›s™¶·¸¹¶º½¾¿ÀÁÂÃÄÅÆÇÈ¿¼É™r³nµiÒÓÔÕÖ׋qÏÙÚØÞßàáØÎšÐΩ±¯ëì¢ê}ïðžÛ©ñ{öíùú¤è~øz¥èEã·¯ ÁCÿð$T8¯7Kýäí“!'† Ší0²ZØH•sþäP ı’F„”RÏJXù”Ši ¤6‡õhÔ)êdKƒ?ëUÒ&Œ ¨PQIAΈCÑbÊT5V½JNW¯Ö=…èñžR¦ÝâTI›/jX”\ÁNu+¬Ü·-ó¾…k÷Õ»% Ë<‹s¤€µdÛîí‹‘ëÜÅ|áâ·oäÈCÝE\g¦Y¶– å™4qÆ’³ÖUÍZ+eÖ—çX…¼qsÍΞ9Z&èutSÛõ¹XïÞÙÇ_g»ÕßÛÕ~6½T4èeÀ~¿¢+U¹e½½;†]Ùïf[¥þ–ºSžŸ¸÷ΗxøÕõÁ·¦M>nÁ…ìþFKSéø7IpúÉY‚óá7^sÎhØaÓ-ÕoÚxšlɹơdÌ}›qË Ç_© {Ö¹§áA0Æx„Jaç‹€ædè2öh^Š$]8 Žùh¤ŒcYˆ9º¸ã‘P”d’JÞ„!DÌØÈÌ–\véå—ÁhYŒ˜c†˜h¦©æšl¶¹¥˜¨41À tÖ‰u‚p'žyö9ÁWV@„j衈&ªè¢Œ6ê裆â 餔F*A¥˜fŠ)µ'¨¦ †*ꢒŽ:*Ÿ¦¦ *§L>ô©ª°ÆÊh©²VŠj­¸*ʪ™M¾šë¯©Ò l£·ûë®VÚ Æþ6›©°Î"Zl´±"Z ™0Kí¶³jËm¡Ó~{j§-ú*î¹@ûm¸èjjmuØÎÙ.ºêrËî¼¶’¯·øR[ï¶÷ö 點f+p³l›ðÁ“\®Á ÀWL± [l1Æ?êð¾ÿ:±ÆgLò‡<«¾Êš«2¬#“œ²³1k<óËÒ²Ü+Ä8Ã|2Ê&Ëܳ®:»ÊóЦּqÐ6#s«õÈëtÒ?ßl¬Ò[ôÇ-=5¨X—LmØ@M(×;Km6ØU3½ôÚh­öÚ™`ÀÝxã­pÞ|ÓwÔüÒ½jàö^*xºE~ø©„l¸à×2÷âÏ6îïãþ~'.¹å”{̹³;99ŸwÞí¼¡o­9馻[º±©=úM¯·.míÀÆÞóìËÚ¾)îÇb÷ê´ûn+ð¹êŽ3ï.O,ò¸*ÿ2ó^;z»Ò«LýäÖ“ }­Ù‡¼ý÷­ÿ{9ùß½ç¨ o¶úë?ß>úý¿÷ó/nÿý‰šmøÛÿå?йïk ¸è§*F, LƒuÀ©APl–vÁfvñzANÐT”ö¦´é)ZF34¥×êÚC5)Sòt:Ý¢F‡Ô¢Þp©9lêOozTq:õU½cRÑÕ.Zuª;íª¿Q–n §ܪ=³ÚGµ¾”­‰tëLáúȲ^B5ëÿäjT±†S«W­#]!z.†­¢ãëSUºÑž^”R†µ(b·¦X¬úužD«RËT²ö£lfíJÕËt´ŸÕ+d'+»Ê Ö´Ce`÷(ZÙj–«œªg- ZjÖÖ”³=äoY\IW–®¥-lUþ«Áä w¹Žu®q¡+UÒ†5·^ìm×JÝÝv”¹cíî¤ëÉãâ’¼¤4¯/ÑkKõ“½Ât¯2áëLùB“¾ßì®v­»Ù ®4ºÅ-¯~Ûàô8®nïëšÚ»,¶ÀÝî[LXÞ‚×câ]~'JaÔZØÁƒ0q%<×Û–¿¸õoc«ÛàÒbw¬ûmñuUÜÙØÅ4Ö­¿ b±øÆ3ÆëÌc yÅÞ-Ü…%Hä&8¾&Ž0йû⿘Ä}­2fO,ãþ¹ÆWžò„µ|Z.ÙË^rðž\ß(XÌ%&³ˆŒåÅæ8»aîrŠ¿¬ã<ŸyÏip-+þg5·‘Íù-´ áœå;ÃØÏEr ‰¬äçuÑz¦²£­ŒàA¿VÑ”vœ¡I•áém¤öµæ©Cëf:3ÚÎ|Æs§_MèMoYÊ™³­ËŒë?k:Öžu®ã¼ë9ŸÑu’Emé!/û|ÍFòŽ+mäI?{¯£&Zª·‰lT·úØžV®²§Íìj‡8Û\µo¿½Þn³zܦ¶¤Ïi_ëØœf°½‰ï[¿yØî7¯ÿ½ï€[›ÜÐ6·¯m@t?Ýïu÷ºá-ì‚Ãúàñ.÷¼ŽplGÌ4šéê„oüÒ%÷¸ÂQÎðæ:œ€¥Öžº ñùJœæŒíÅËiyóþÃÂéLºØ9{.ÙŸ»ANB&Ñ×(–w¼áïsÈå=rŽgÜäUwúÕU~rg?ÝåQ—µ¾Eh’·„IGܶÑ9sŸ×ü¾K·âÚÝÙö¢¿]ÕqXÌÅWw¦ÏŸ}—ûݹîçR|ìT/»Õ§®ñ¬{}ëP_ùãuÅkò\wüF÷ÄùÎ{þó ½èGOúÒƒ>¦O½ê;/Õ»þõ¯_¢8fOûÚÛ> ¦½½îwÏûqhY<Š’ð¥|…” øÃO¾ò«„‰ã/iùЇ•(äGÿúH*~gœ$ì{Ó—*ÐD&7™ÿüèWSù™¡ˆô»ÿýð¿ûÛP„úÛÿþøÏ¿þ÷Ïøéÿ€8€X€x€Ø';Tix8.4.3/docs/html/gif/tix/container/pane_vert.gif0000775000122200012240000000375307426315540022315 0ustar jeffhjeffh00000000000000GIF87aø óÿÿÿÃÃÃqqqëëëÓÓÓ‚‚‚ÛÛÛ}}},ø þ0ÈI«½8ëÍ»ÿ`(Ždižhª®lë¾ Ïtmßx®ï|ïÿÀ pH,ú&‚rÉl:ŸÐ¨tJ­Z¯Ø¬vËíRHïs .›Ïè´šœ€cJ|N¯Ûíì»~Ïïûÿ€‚ƒ„…}d†wna‰xq’“”•–—tˆ•‹oIŽ›‘˜£¤¥¦’š”œ–y§¯°±±©“«p s‹º»¼½ºJ¾ÁÂÃÄÅÆÇÈÉÊËÌÅÍ‹u¶ž¢rljØÙÚÛÜÝÕÓŸÒÞäåæçåÒŒ·ã†®²ðñ²´ƒôôáßö€ïòþÿ—öñÃU ¸uÔ ôӠÇ„24xO!Bq™(ÔèpFþd$éPâ!\VrYì„Q¥»oAΑˆ¤›„pú3É'ÇL.3]Ô÷ódQ4uÖ@I©<ž{|2 šk¨Â£Qa>LÊt&×›7ÀÒ¡ññëC¨z¤¢jÍj;9)­iíh'ɺde╳W,ß®%96I‹rª\u,‰Î‰ n.@½€ýâõÙë_Ë~38XQᵇ…&¾ºøè•XãU¾ÌZsåÕeÁFÞ,8áņ#f•±4èÆ©á´[ó_ÀwÊN>ûgÛžqÿÆç¶7ÜgÄPC,Û•¹âÈ™ÒôÚ½|ó‚w݆››úè·wÌ<Þ¸N‘¯ûÖGŸHmO¶½þg]|Á©kf!˜Üq žÇßKÒýZUXQÂGƒc-xxâ…èàS‡Õi¶UaŠ‚4´Ý‹0ÂßbƘi…¸ãŽÛ¡]Ž+ñfáF< £@(š,^hä“g•8`A»±“4À@£å–\vée2Ø5æ2AÂñå™h¦©æšlr9¦.£91 tÖiçxŠEuUPÀŸ€*è „j衈&ªè¢Œ6êè£Fª(úðÙ–Ÿ’fªé¦œvêé§RZfBê` ꩨ¦ªêª©ŠZ%©B™ÊꬴÖj+«®.ieŸ·öêë¯ÀNZéŠÉì±È&«j®þ2Y¬²ÐF+­¤Ìªèì"ÆN«í¶ÜVàµsr+î¸Òz{c©ä¦«î¯æZúìºðÆ»ì°àf+ï½øBÚ.±Øæëï¿î[/ÀL¨À»^jðÂ# +¯ Gì¯Ã-),ñÅòR\©½w¼­ÆqìñÈЂŒ.É(Okr¬)·\2½ ¿ëòÌÀ® 1Í8ßj³Å9÷<ëÎ2û,4ª@÷;ôÑ .ÒLsª´ÈMG-ì¨-õÕ‹>õÖYÃü0Ï\‡}°×U-öÙjöÚ¨ÍöÙn¿vÜroMwÝWßwÔzïÍtß~ xàBNxφŽsâŠÏÌxã-?9Ê’O>råþ–wŒyæoÎyÄž¾pè¢Lz韎úÄdo¼:ͪ¿~oì²ÇK{íëÞŽ{ººï>nï¾wÛzÈÁ_>üÉÅc |òåÏ2ó;3ô /O}²Ö_löÚ×,=ØÝ‹» Ü‡ï©¤¯þ@þ÷V›¯-úë§ßþûTWŠÀþü÷ïÿÿ  HÀð€L ÈÀÒ¯~íëü€¨Íé%sS×,¦µŽ‰ÃsªP˜df#ݹ¨töòŽ_¤ç;ÅÙC–|ú„”ˆHPu~‹0 h¨æ©P22´¡gügþ!ê)]*Ñ¢@Äh5CŽ¦Ð£"©üDj>’†Ï¤ÝC©öTz=–RϥЃ)ódš<šϦÁéïtº;žâΧµªì„ú:¢®Î¨¨Cjé”*:¦~Ωœƒjæ¤j9ªNΪÃjã´ª8®Ϋ„kàÄê7²îͬxCkÝÔ*7¶¾Í­lƒëÚäŠ6ºÂí¡m#^ó G‰"“¯Ý+`íxÄ&t°Ž²«Ø;7Á"öPŒåZdíæØÇ²²–5$f3›H¿¶“³úÚ,hýyÇ`v´†•/cZÔFtµÓi]«Ù1ðë³´%¬1‘ø×Üêv¼Å­o!+ZÐNkÇÍ[q9§›\©5—oËÍìs›6Ý¿EײÕEZvwÝÇnwhß-\wû´jš÷¼èM¯z× @¢ã½ð¯|©€ÏqÌ÷¾øÍ/9ê )Aé¿AÒ!ÜõøÀEpOÜù øÁöoZü CøÂ¦PpT( $ cøÃñ0>Ï”¥6™øÄ(Fñ›¸ÄÚ»øÅ0Ž1ŒYb„ÛøÆ8αŽwÌc€óÇ@²);Tix8.4.3/docs/html/gif/tix/container/sl-bar.gif0000775000122200012240000000417007426315540021504 0ustar jeffhjeffh00000000000000GIF87aä‚òÿÿÿÃÃÃqqqëëë}}}ŽŽŽÓÓÓ,ä‚þHºÜþ0ÊI«½8ëÍ»'Ã'Ždirᘠlë¾pÆtmßx®ï|ïÿ2Ð5X Y³£rÉl:—ÉcQ>¯Ø¬vå¥Ö­xLÖvÓ° Èn»ß!¸|N¯Ûïø¼~Ïï·A}D_k'…†‡ˆ‰$‚TA>ge‘’[8•7]iDj:—“Ÿ \œ9ž5™ƒ¥4©¡¬­¦£–°˜jšŽ=«®-@»6¾¹1¸/Q¶H¨²6àÀÎ=Ð0ÒÁHʯ-×ÇkÉ×®ÔXâÕÌÇÚܵÖßÕ/»ïϼÎï¼ñ,Àóð÷ò䬿ë,ÐDÖh ±íöéâ§_=‡ íÅãW¯,ÂÂ$Äþˆ–ÆeÜæ»'bɇªlWÉÊ6Å@"TÇ1 Ìš %êÔgžÉ}G&l‰$c¶›§ â4'd5¡UÊ;9 åJ–Ùµi*·[àš¥„8ÖO³A­FÄÊŽ«*¯Jÿál'ô§]µwsÎíô±ë̯<ä’!›v%TzWûù ³ïÛ¿q“¬·r¹ÅêÀõØÖ²gI˜)oÞÔù³i1¡KӌÇ©Ÿ×°cËžÇuí>´XÓÞÍ»·ïßÀo»y0à€ñãÈ“+_μ¹óçУKŸN½ºõëØ[<»÷ïàËO~:wîÆ ¨_Ͼ½û÷ðãËŸO¿¾ýûøóëǼ€þÿÿèŸv¹¡w€Š$¨à‚ Ðß<ààçå–ƒf¨áa|" ’=(À+VÐ"/n(ãŒtx€ˆ 8ˆ£Vhâ Ĩ"‹A‹Fv@LF`ãŽô8"…ZäB&‰ˆ–ÄÈe“2>9åSú(CwbÙÀŠï¨©À’¼çš*¶Yç.jâY'‘n‚駘9ÚXf•?¦ùæšH"yhŸnzç¢{Fªç¤2ê'“€ò˜ŽR–xæ…–::ä¨GB ¢¦¢Jª‘¢^Úd¦Q*Ç@§gh(©©B:gXÚIçª)®j)®_ºÚàƒš*þ'"­Yyk–¼âú&«qR+l¥×Fkª±a"ër9’X«³Úæ*í¶çž«j’rÛ*·Ý÷¡›&k&2 n+ªªêš­œ‰êên¹ðj(æ·ÌÙKè§Wêûo¯zþz'»½Nq»èN\0?!³ÝغñÈ$Oð$ÂÍÕ(n³…–ìòËÉz¢€4ƒ¼š0ç‹,ôÒ`ž]I“ËôÔ3: Ô+‡ì,ŠKRìb‘TëlµÇQ·*Ÿ0‚®ņÍÁØÎaM¥§ø6,mÛ&à]dÄn—wsrßÛM¾wßÙ箇ûÊ+œs²p©}›ð7sþ/\÷³ˆN»è»›<*ÀšKʯđ0ùr•Ó=¸ÝÐ6šñì {¶Ø–.ÂéÊ–Í0æå®«xâ|»n±¯m¼íྩî—¼oµµ‡>»×´“Ž|Ê÷Çüê¼3::ºÔ Ÿnñ\ê}½ÙË»}„·Þ9±•rþyÅ’ùùØkÿôú@;,>âºú]‡g¿×=ÓßÕøG8:é“YÖnÖÀZÐd $ÛVÁ zмíöÁÎ*ƒqá­LȦn\fc¡ ]¨B®µ)|±S› †BÀ©Ðyh›€Þ¾§$î0\êÛߕ濙Oˆž;¢Ê’¸À%JÍþa¾Xð¸Å!1.‹¢ â-HC+Æðnã—µäç»ÐMŠˆÃ’â%XŹÁpw@^±àø¿éÅÑ€G,£Y†Ç³ýψZôZ")%° Êñ„TÔà µvF÷Í/sÖ‹”±U¼(>rŽ"Tâ$)È:ÒÑZ™”'öI õr?4äûØè¯Cº±€žü¤ ǾRöŽ‹Ô °ØHu«•»´÷ZyÁdª®—+dæùœyÇæIÓÔ$¤5¯‰¿lR²Üœæ+QËp^Ï›¤4€ ñ„ÃûAÑœ…@'}Ç!ªmŒ±3¢åÉÄÂ1Ÿ§Êå Ç™;3‚³p`$¦Ä„é¸7^,Œþµ(ùyE4Þ~¿¢å0!ÊHw>’¢•4åû ·Çb^²z»&HjIßu1‘|Z¤*(Ñntyݦ?GJ?Ïmq¦Úê¤#å¸R¶4c¨ô©Iq™ÔšŠ3’)Ìé2eyIZ•~*F‘©=šÕLªÐÌãH ±`&ê¡KU(Wåur³t<Ãà(çÍ·†-®èkÿìÚ7¼:I¯ä+Óü · –j„uå\ûyØ©%„€=Ð:Ù4Ô€~­±BVÜjÉ?F¤…èb 5›ÀÅ¡}™L„S‰´Zä=vPo j‡Vq‘¶mDc*Í×Br;ÍRkÉÓ5b5pþäã@Õ‡´æ~‹—{=êI-[RÚÍ4˜½}ÐÕ^¨Í©6ñ¤dUë!‡Kïe—­ôRÖ¡;[óó³?Mk¶XÅ5f*n‹l÷ÌÕÎþÊ—|ï\«‡b¦Þõ*3¬TEÕUY ºúÉW -Ô,忥_±‚·â mç`]j6½dRØ3÷ŠÙ¥ñLY˪p‰KZzqJÅ+61i П/¶¢1ÛŒ;%çXÇlm€‡z|ã3þfxÕd‹¼»ÉŽO‡>òfg¬ÿ,™½ôD*”sxÀ Ô×¾T&ÀŽD\Mî9÷ÌhN³š×Ìæ6»ùÍp޳œ¦½6G¶ž=X‹:rC œ¨©Q§I¥B¢•¬8²ªµ¶?´ŒF°g¤»®·@HÃ>ÆÁ¡À˜r¾L½O˸ÓÉ4ÈØEÚ8ÜÖÏDPÕ–à–±ã<¹ªÞ_ìß–è­5ãå£Ò¿ï7ÃüÙÄØüˆù»&`?‚þêS‡={çæm(§o BdÆ0܈Ðb¿ƒþï.QçðÄhðæ™lX±£Gaº¬a°¢È'$ã=ªM#WšFµýºÔóf¥ê*r· V·ÿÆÄjSퟡNN5¼·¥[€çBV¸1¸¼S#òµ,´³—»Tû(nlгçÓhòm¦”V5ê×LƒÎœÖÐØC¸sëÞÍûÐíA¿ÑîM¼¸ñãÈ“ã…çУKŸN½ºõëØ³kßν»÷ïàÃO¿‹€øóèÓ«_Ͼ}xŸåŸ˜O¿¾ýûøóëßÏ¿¿ÿÿþ(à€€ÏÁŸ|’4èàƒRÀpÁ„(˜ƒvèá‡&`È¡„Z€¡†”ŒxB@ â‹0^Ha–(a‚´mh€&À ¸è1ù¢ˆ;Òx"8²¦#$e>ù#‘`iä–" ¥ˆ_6 Í“h%R¦9 •\¶Ù匀$“æ˜b’©'šVöy%›n*‰—7ÂYÀ’NÞ e{žyA•AªÉ"f ji „Ɖ$ŽqЉ™y2Êb¥Œ^égŸZ’zéª%dz(u6":¦¢eNÐh™¦žúg¨¬öªB¦rV7¬ŸÒÊ+£¶ò ©®©þúêlˆ3n­§=Jé£Êê d³Ïv¡ÁZ×i‰2¡b”’¢¹¬Ÿkëí»€‹…ÄVkl ’N ï¾ßîu¯’;«¹x¾ *¿gàeÿÕ{9ç²pp±ÂÔ>¬ÅÅ*L\qÅ Ë)òÈ$;_Á.xüq kw€É ¢Ü‚Ê¢¶ËÍ+ê¯Ë0[›r˪ŒsδœÝËŸ¼(¾é>ÊîÍDÇhô¼=ßÛ1¶eæËš5Sºõ™íÚ\óÐDO}ÒKðÒ$ÜZéºO?*dØs×®£tGíÙÖ¡âÚ3'ëhžÛjÍ-Þ×";øÜ‰ëïÎGW ¸Äc»˜o®þÚ®8–Œ/Žî¤ŽkÀwu~Û9ù n;¤¶AÖ*8çž#ú£Ã*ù:®p£êºìÀ7J¶ãµOWz¹¸ËÜ#Ö„÷n¥™°‹z·âÔÛ-ýìC‡6ÕIÇ̶îMçéü•o7úîcc/:äܧmïé.¶úG²öí+ÿâðôGR¼tÇXò¾ç!þõïÿƒÜßÈ%° Ôþ6¦?9ð.ˆ |&hž ~ˆf ÛÀÁ.È2ûõƒ¹+ О´,aÐb;’–íºç³†p¾{! 4CZíƒÌóšá¸ö¹[½‡TaT>\±ŽTÖ ›ǵAžù~@üþ¥X×:¬E„C" =ø ËJR\„âà67Å€U1rW\âþ‚h«4ñ‹mcóG@5‡™»câÀÈ/=ºOcìcƒþ¸Å'Þ1Šy4!鯍HIäKudÞù")A+RiÏ’!hÈò1a£Ôa)M'Ç}¥òˆ’œá'½‡JuM/o×Ã¥.£IA­y§D@Ìbó˜ÈL¦2—‰ÌWf0–Æ£d-uÌ€03™Ö¼æ2/õK“_ª2&@N@›Ä†8ωÎcr𔿻.Ib޳œädç5õiÏvVÓRÝTâ7»ÅHvŠR™ül&øÑφ. ðT +þJÁQQéT€4ÊÑn4¡ŦA *Îb¾³“pœe …> ¤Ó£ò«æ:չВÖÔ¡'}cûLIÁJÊŒ[Ë—Fï‰Ï¢&¤7å'IêLLE¥q°‡=Ô»:ÈÍ~öZKí¬f;ÍÅžò;£½Êé¶m‘Ýžv»óïõŽôp—ޝ [M|²÷Þ/kx_ݺˆô”›Ø6Ù_ºM^Ý"¼Œ„~÷J݉¹V0m¥XaX+šêt·ºß™½%»ÚèE¶ì%Ý!Í›ˆìÕ4aDóø|úzS꙾ú•×o5¯gE{Èöt‚ûª\OìÐ3Øoný†_xܳtÔ°§/l—_úë í‡3âAŸü¬]þýõUðûÅ CÆþ{ë{Ž<,¹¿yé;^îmgœ÷wÍ€]WuÄwiCçtØ}üw{ÈznBeƒ€è54˜G]9}…‚)¶BÛBoQãÃrê—&‰oW}ÅÇ€V9Ãö9Õsl…6n臂!xt¯g}µ5z²Æ^Ø1fÇ÷ƒíWj×—ƒDø‚x„™vFj‚s-FyH\E (j>X}Khz3¾b‚o'…q—„`x*jôr6k[ƒ Øy­~@8~—‡jPx‚XXëHa(78?z÷„;؇—5H?fØwsH€^Ø€Awˆ]ˆY’˜=”ˆ†2x‰|˜‰(þm’…ñ‡Qø‰û6d…¨|ø‚a|—~q—p‚(SÇo¬(€•Š57óGC#Šc·‡ghŠ2ø]CôZ–§i]#ˆ¾Øqž¨j ø_i]”5»vƒ£·Œ“ØŠ<8}ŸˆlÈ\ñgD¾W‹aw‹ž§{UÈ{n(޳ç&èŠÜV˜}QG†Øˆ‰ÚˆˆHè„kØ]uxÄEòŽÛh‰CØŠ'†n#~÷è€ÍlϘ‚ÁghH~ATB4†RCŠ|hŽ‘¨.Ÿ<ðBúXvôiŒÎH‡X$ I$é‘-ɉ™2Š4Y“¶¨‰øç~ Dg%ŒŽ¸’8“^²¸þu©m™b¹è‹WŽÃq,é’¦u惃A™‰x`Mõˆ|ßèE½´•6é•Úµk$–Pé†dXHþR2r.7#@µc»w‡Mh–r4¿e\Ei•ò¨ŽÉ—nD:C ‘Ui—ÝH‘cù†n —3w6ôR€ç.l™xS–J‰'ªå™–ikÃ&m˜>k‰’\G:%ЈŠ|mp"C±š`™“õGÆ3›%ùu¶y˜<²)¿I›Ù›¾Yœ»¹‰4‰r`"‡D Šž§©h]§ÙfU'a’œ=I‘Hé|Ö™z5Â…<)‘!ä˜Ó˜”)™3â)ŒXGŒ¯ ™€ 2¸4”4—ø™Ÿú¹ŸüÙŸþùŸ : s—ý9cî‘  º  Ú ê!W¡:¡êQEœ xiš¡Þ„} ª Lj!z¢`0¢ &Š¢.J**P%ú¢4Š 1Z-¼Áʱ£<ڣʡ£¶á£B:¤DZ¤=;Tix8.4.3/docs/html/gif/tix/filesel/dirlist.gif0000775000122200012240000000734407426315540021445 0ustar jeffhjeffh00000000000000GIF87aßòóÿÿÿÿÿÃÃÃqqqëëëÓÓÓ}}}®Ûçóÿ‚YUE,ßòþ°ÈI«½8ëÍ»ÿ`(Žd)fª®l[¢+<Ìtmß4Šï|ïÿÀ pH,uÆA–̚ШtJ¥"¡K‰ôZíz¿`#7™}FÇá´zÝEËÊ¥|N¯êø¼~Ïïûÿ€‚ƒ}w„qZN.‹ŒŽ,ˆf3n>•l˜™m“B—<\pNoœš¥¦g¤@ž; L”©?«§³´8²7·6­‰¯£µ73Á;ÄÆ_Èš¹J“¢9®Ìп4ÆÊ5ØÂ<ÙÃÜÝà˰–Î=ÕÓÒÔ½Öß?Þá8ñ×âã¾3ä”é¡íCì^‚ ÛöŽÁoÛjÈa½Y¯è›Æo³ éL%|wÌáÁþö8väHo ¶Ì}ªÈkšJV5)ùdÈxG–4 Ë :\/m±ä$ñ\ÌLÈhÖœ™4äH‘5OÜ”ÆÄŸ.%5³Êç(¦6B ¬¡ÓjNÊIiÕ¨?u-#NLöi]ƒàðÎËËwì½#Aq Ý xÖF»â”æ\lÖïßu özn.]½ˆÅ>íx·/BÏ-WÍç6k´¸¢u¥vÇš\®{&¿ °µíMø k¥üiõíßU^>MÔ ã„’+_μy 䀠ÿ!ŠÂ¹õëØ³kßNHú‹O¾¼ùóèÓ«_Ͼ½û÷ðãˇÿ=.øùøóëßÏ¿¿ÿøöÙþ÷߀hàûH‚ 6èàƒþ)„Vhá…áI †vè!Rr߇$–h¢y!ªsâŠ,~˜â-Æ(#„/Ž8ã8FH€9öèã|5þ(äë©ÞH&©ä’L6éä“PF)å”TViå•OŽwe‘;.x$$`†)¦hyÁ”©ž‘é¡9æ›pÆY€šá¹IAvÞÉån"®—g €œ„Zü9g¢ z›èå @”&0¨—ªiœˆþ€šîIÜ„_J0i¥”fªª›¶f§‡Šç©¨"òئ© å*P¬ºêk#°Nðéx±®Ù%©·Šê²©þòú볎+£y:Šâ±–zª¥ºæZA¯Ð†›‚´Ã’§§±|ª¨mªÌ.Ë*¸âÆK¦™Óšg§µåAzž›§nÛn¯ðÊ+pÁ–›o½èŽšm²“úûï·G<¯¬Û[1zúZ¬¬Ã̾+ñÇÀjðµøš‹mŸÚrŒj0 òË‹R\²Ì´Âå%ÃÝz óÎk9ò£3‹—qyŠòlôâ9eО¬n²GG4½='\ëÍ‘J­uIêõ×`3mÀÐä½õÙ¡Ê*v¢b“M5¯»và2Ú…&ÍÞm; c©¼®,7ÝÐÚígÞéî õÏ (àÏ ~$á £|ø·9Š8 þ,O`ùâ™gŽ«çŒsíóÝ_lÖ¨ì7â—vÞú븚;æ¡O\çÚx×ÜÏÓ¨#^iåqkNAëÃËnüâÈ_{È£®û:6îÛ·¥í®.üõªüë›/_õí¤?okï-³[½¥-Ÿ<ò™¶¯¼÷ 8Þfé6Ÿ.}êÔŸ>ÄØ«ï¾ñŠƒ_šš÷8ñaí~¾SÝïÒ‡=Ø%ï®à÷Ø>«Õoa䣜þ@w½íï ž5 ¿HÑow†Ëàð€ÇÁnª„û:!ôüä­ÁÐ^2kx´-‡Ô{HÀùÐ~B"Ï|X6 "‘h#èÞª¦¨Ä©©­‚éqþÅB௺,€ULøœgAF/‰rëXåÄÄ">Jog„âXØBzŒk–cxD î lÖåhGH<æ1fc,`gÈ·4¦Š…üËÞûIÂ=â°’SáªÌw>­O{”ä@¯¸H¢qýÚ %¹¾Pf`”‰Äi8Çüur•þs¥(-ùCLòeõ6»Îér°¤`)ƒ(GL²Žíûà1+IJEfq–$§¹ˆdæn™O,7ååM'úñ”ãôU9}™B`ÎÑ,$<çYÌAmëç9›9øóŸ ¨@JЂ"àžgËç5 Gq–  1hAþ Ñ"Ô†¼l";ú6.þ©(ZÑ€’´¤ÿ¬¢BeÉPZFÑŸ iHOŠRš¢T¥ÍiÓZšÍ”Ž ÆA?*B¦J\éy:9Ÿ@€ªT£U›¦$êOazÔƒ&U§±\jä~‰NL”ª@í*W‡jT¶®§Õ4¢>3éN³>u¤2ÍëLMÚU]µõ¤p +çJV~Šà¬ ˆ©^÷Ê׿4«ýj\M¸Q—öó©Š]ìHJSÈZt­^¢R¯ÅTMÚ¯še,D³ÊZ¬® U¦5Y:Öv–Un?MíH­ŠUŠž4¢¯M©d{IÂÚÖ°NM+J—þZŽö`¥­«˜KÝ’^TkÏ5Yto«ÍzzWžß'Ë®+µì ›MM§«Ì+4ôšV½šbïNkËÑ-6BŠðE&XeK[ÓíÓ¡Œè"Éë=ùŽÍ½Ò5AâæØÊPX‹u ð6Õ`J&Jæ¤+wIÈý¥n’î(5J_˲ Ã¡.¥µKãÖ7‹@ñ‡;¸b¿²²=UŒY§³Û·Å$ö¯†‘«cýy˜ŠÇd±~]lâì•ÜTòˆû{Á!¸OF²añ„ó;À/9ÈU³É\·5—Ífl2›Ûlæ){9ÍÇ óœéÌe S9Î9Þ3§Ü,þÆ?32½b®ã G)ߘÉ.òIáC:Vs¬FT‚KÑ¢%t±à|è÷–€Žð²'Ä¢ ºîá—ˆ›Æ4Ž­`#§º•ªï'¿‹]QŸ‹Ô¦$r ²œK*”•.¯¯õiZŸÚÖ3†àç>(Â+;Öo6t°õ,é[.:×ìóôì*¼Äe_ì΀v6‡¡ýí‚8’êë5¶ îR'xݪd4+Åë?Ê»ÏgÖ63¹=lv3ðØš«¶ÂíIà_]:ÛõÞ¶¹5fA#’QÌk¶©-þª‰g:Ïç8#NoÒ–8Ò"ÉG-ðp†<å-Xù¯[þß—SÔÃ9Ÿ1Þeþ“äó®õ¤± &Ž:á.9³=p›;ÒzN.:”i\¼†³Ül÷9ž_Ìs,Wœrw¬zÜ\½p÷笄wÌ=>ëGÑà”+f±u-^z’Áƒ´ú̱^rèž\ÝoÏ÷Ô÷Mcdáä>8ÿoE€ÛYëév»ˆ½Â±ÏðŠG¶öºïÅ3Þv]xÄ›ôÀ{»eÒîâ?=÷pOÇGo|èï÷Ÿsïø>½ç5¿½Öó~ןǣޗ>ûG3Ý奟<ÜW^PÖ½ù«}ç©>.¶küÞ¦&Üþ¹N»òÙ“¦ê·oyÅ«@é熼½7ůïý=òóŽþ'?ýµßºœë øüöü'þ×vØ€kwñ§~‡€“'BZF}k4€×Ç~¹wdÉ6~”{°F²6ÂVpî’jçi¬#ÇWs èLt9Ò{Ó‡x;ƒ‚4geNL‚ww÷y1|3h})hƒ+øtÚ§oƆ)FXnøû'tº×y›—pÖFnS24(*ÈNX„™w„#}/s… HzZøl9…^(‚h¨„eÈrX(„m˜}Ã:rǃ‡çƒ0#†ùyÈEË'<âGHÒÇjÃG(z¨]'yÖ‚wˆçµ]h€Ý„5¨iq(‰+àˆí‰‡‰IG‰þoh‰Å牟¸„Hæ€0§‰óe{M‚‚Eæ7m:·£˜u{¸~‘h†P'(•ÇhËÊƉ7¸*î'…Ü“v=È8Âa·È‹\¨ƒÆäy&8͈`¨((}ÔH‹ÁŠc8ÏXsˆz–CL`ˆOà˜‹ x‰~x†ˆŽ¨Ž¦èåØ V‚ïöoã8s¡tî¨ð^]ˆ‡tsÄ8„€´ß‡twˆ9µh‹¸ᘅÿØ€Œhq ™ˆ}HŠ$Б®ˆr Y}õ„¢X‘%’눈# x+){*‰.©$©`ª˜r"i“0™}…u$˜“¸&”™Ø’è‘ÙHþ½¨)FG‚k8rF¹‰H¹‹í·‘`çoã%‘à·•ùE_(ƒ“x’•(ùŽO‘ÓÈ>v÷|<èEO–É„7©|éƒà†yiXȘbWù;ɇI‰)©+o™Œioœ7‹`ù“{÷rÙ“Jˈ‡†b÷tk —e™€ìH†›YKuyk*V™À×”&¨ŒŒI|3É™5 ˜TI—gi´–k©††‡šÑ•­È“Š™ùØ—‚˜•eÇ•ã–:ø>0h’qyН¹ˆÀ3laô—ºxñ’šV¨›Ã8•Ô).Öù1ÒÙŽŸ“·œöXŒâÙ䉒d¹šI`ÑÔhØéŒìþ™äEš¡&– €Öi§bøy‘pžrsŒÝG6ú3š’ûšÅÖyh&~òM꩟.@yܨ¡ah&Lƒ&Ù› ›¥Ù5,m‚¢Ì¹°)™whŸÎE/3ã&)ú‘+j£²I¢×i_û£3jžøS—Zù ði_ør/GÊAY9_¹e]G4PZJxðŠqOIö6Ôb‘c¢®’œÑÙQZR-\RÓ‰¤çyu£6+å)¥qšmŠR'tú¡\Š“`ÀøƒuV&ŠÒ£ù£B¨v(0ކ$}ךoj§›‚p’¨†hcEc¨?4¡§œÚ©žú© ª¢:ª¤Zª¤¡¡¥D²ª=⌬úª1⪰:«&"«´z«b«¸º«¢«¼ú« â«À:¬"¬Äz¬ýa¬Èº¬ø¡¬Ìú¬ïá¬Ð:­uJ­Ö pt§hS8Úº­cE¾â*áj Ү㚮ÀQºp®bP®ê¯aÀ®é‚®òz¯µ@¯ÄáÒÁþú¯‹ýÚ[°{°Ë;Tix8.4.3/docs/html/gif/tix/filesel/fb_comp.gif0000775000122200012240000014641407426315541021403 0ustar jeffhjeffh00000000000000GIF87aó.òÿÿÿªIUª¶ªUmUª’ªUIUÿÛÿ,ó.þºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ïtmßx®ï|ï pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.#æ´zÍn»ßð¸|N¯ÛïE4~Ïïûÿ€‚ƒ„…Vz†‰Š‹ŒŽ‘`ˆ’•–—˜™š›œQ” ¡¢£¤¥¦]Ÿ§ª«¬­®¯…©°³´µ¶·¸O²¹¼½¾¿À—»ÁÄÅÆÇÈlÃÉÌÍÎÏÐy ÑÔÕÖ×½ËØÛÜÝÞÚßâãäåráæéêëì‡Óíðñòógïô÷øùãèúýþÿ¾øH°à)*\( !Ç#þq(±¢Å‹ÊìaÜÈþ±£ŠCÚùA²¤É“0Dª4d`å7.c®i`€Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´(L™PÉмy€ªU›U±^•ëÖ®`¿ŠÕJÖkÙ°gÇš]‹–­Ú¶pßÊMK×mݸwçÚÝ‹—¯Þ¾UŸFüe*NÀç]ì—1bÇŠK~<92åË–3C.+˜°g-S»6Mº´éÓ¨S«^íTãç×j ›ÍJ›,ÚÚ³¯âÆ»÷mÛtwnWxqâ¿}ëF¾\9óÞÎy—þ<¹ñèÃûî »{ÙEEÿï“|Oó<ÑïT¯“}N÷‡‡Âß t~Ùúòó µ¿ÿþNîÞÈ„aÓŸvÍñ–à}Õµ÷Ü×-Ø_ƒï=(!yVˆ …x¡ƒb§a„À(à‰G€g,êT‹û¹èß‹2ŽWcy7ž—cz7šˆâBH¡‚"v݇#zÈ!’FY$“P.)å“SfØ$ƒTf™•@þ¨âŠ4N¸– Âçd™þ™If’6Љf›jºÉ&ŽrIgœxâÄe—' )"‘V^Éã‘lªG¢ cŠè›†*¹h¡:**a¢gZé •zµ'Ÿ~ÞŽ“2i¦‡†z)¥k†h꣬®êª¥­Â:馜vçg†€(Z©oÞ™æ¯pëk°Äkì¨Â"þ[¬²>ÑZëkž‚z_£ªVk-¯×:új¶’Êê-·¤jû-¶Ó9û¬g·¹ê®©Î‰iªäŠ .¼òÆÛí¼uÚî½ú¶;€¹ç-S™NùmsǾ»¬Â £º°Ã ÷ÊìÄ +»¥kg\DºÇ¶+ìd UÂJ²–&§âÉ,«|hËÖþ‹±Æ40pNܤ€M ì-Ȇ)ôŒD·9´ÑEÓy´ÒIGfm×¼Ç¸í¬¡Õ ð¼sUñÒVµåê× †M¨Ùb“öØekEö„h·ÍöÚo‹7ÜnŸ7ÝzÏíoÔR‹t3UV“·uÖdýp‡öÁ¸´ÓMú¸ä‘þ':¹å•ƒø´m€îÕdYýœâŠ«jïlØmÛ×x£.·×¯cźꮷ»í²ÇÎÕì…òÞ¤ï œð¾¿ñsºÔ½GocæVVÖk#cÍoŸ›\èú·¿ÞîqìÔ—E5¾ê¤r|&Ђ¸;…)G™ˆ2½QQu®P†ã³a«t8‰†ä0ˆ5#úÒ³Žu­µ|kO;úÔ;t Ù¡Î¬\Y(²—­ìe3ÛÙÏN6´§íìfK›Úж6²mlS[Ûàö6¶­­íl›{Üçþvº§]îrW{Ýðvw·‘-ozÃûÝøV÷¹ëla[š%!Ž¡Ýhk7ºàÏF¸³Îpe3üÚÒ~¸²É å„o»â2ƸƹÍí‹/áß8Ä;~pÛ›äWxÄ?žrˆ‡üâ%§8Êcnq˜›|å6WùþË[®óŠçÜå>ç9ÐQ~ñOÜßÿ6G±m¢ãd«¼ã×.9ËŸÎr‚/<èAç8ÖwNñ«{¼æ;×z³g^õ‘ûêö¶9ÖÓÞòµ›]ëé–:ÚßþõnËÝS¯;Ûï÷³ï½ìÜFzÒÉ1h›ðØêE×ûŒ­ÞqƒCÙñÙn¼â³žxŽwÝéu—¼ÛÙžö—Ï=âžW÷âánîÑëýä¡Ç»é7ïðÔ—Þõï^ýç[ïwÕ‹<íüàÅñb%§\Àʹq–ø7'þãsÏŸ+[øÂw¼Á…ñè—œøÔ/õqr9åÏ>Ô£ù°gŸÞÿz³3n~{[ëšg?åþ;Ÿþ ¯¿þñÇ´åOôk³ê—q§{»ç …74ÆlÀç}éft±×yÆçv prÁ§}Ê÷qÍ&~Ò¶}{§Þ{Ú—nÀW~XwX{öGówm%È€þ§|¤((ƒ1¸3hƒ5¤‡j'y@€È K7¾—Ї~Uu;ˆxíxgW‚Á…-§m?uX|Nø|^w|Wø„G¸mÛ×xRÚ·}Åw|ù÷~PF†ÁW…#ˆvx†ýwH¨~uˆ†ûG|sx‡{ˆyý7mHWAØ…wß—{`ˆ‡˜·ˆt(€QWtG~ɶ} pH¨yˆqÏV‚RGþnˆÈuÙ…g¸uâ|Ççu‹è„Ç °u ·s+ˆ…Ô&†§gK¨~·h‹vÈl׋›(ˆƒ¸óå{ý¶Á׊Å×|}#ØŠô6µ÷‰?}W82ÆŠeèk¸llØ#ØoçkhŠQø†ÇhŒÊxŒÎ˜qΨŽètG¨°HzÇG‡U÷uèqø¸ˆúè‹üè|þxŠz˜x㎚Œ.1hUñ}׸ŒÔ7ýÖŒ¦ø¦X…ÓH}#Øu.،܈‘͈p©€ é‘7’ïXŒNX…'xpéÔ¸‘`H†,iŒ È}šÇޏ…¨È“e瓵h‰›'”8ç‹hþ„Y óÕtÅ‘9Ž èŒÀÇ|YØŠÓ(‹ËØ‘¹·xS¹™¸•S7‘Ç|¥H‰“(m ÙÏØ”™XŒeøŒ•xŽýÆŽ(¹ŒŽè‚l‡•§'!€ÙvH8ŠR˜0芌èwhWoáwI)8 †+DÈ~â÷| ÷’— ¨…ܨ’›é~È…'ŽÎ†‘'ør!˜•nY‚!¸•!…Yø‰çȆ É|¨ †ÈmÙ†‰‚8ÇJhn§Ø›Wsf÷€gœœÇwþˆ” ófM¹7ù–y–‰h—ÉwG™ºy–™ÈŽÜ)…îçqÖWŠiG~æÝÙˆ8€FØ‘þhë÷~ÙWvWy¥ˆ™·vp§—7üÙ“·|y©rP™GÍù9Ù =¶ørQ™™r9™Ýyšf¸nU(…°I“›™¡ˆy]Øu)n¸rl8c!y~§ÉŽ3I’£¸ˆVقʼn´h{0Xù—gp˜“‹go8ºm—Ÿð7šÀ˜ ñœOæšÑ©–戙£9ž,)vJ,¨Škɤ(žµi¥Õǧ™¥n9—%‡—"*“ˆ—#ùŒƒœù8v¦Ù“\ws‡q×·ŸEš§¿©§xˆ‹‰ H*Œ ŠuÊZ•f(–—ù{œÉvªy„Š-•Z(™‡y¢æ9þŸ'¹†›Ú‹ÕX1É‚”h” ¥j™<ÈxúY~? ‡9êvÒ—‚@j yùEùŸCJ–€¨ñœ:Æ¡°)š^©ŽÒ©ž1ù’mÉšçy›“8‘ÛH›´ˆ¦ ˆ¥”ø…Xêš) ‘Oy¹.‰‘¯yuŠø£QgˆŸçöyj§|—„°W§Ê·~Ä©Ž»Ê«a]Ævcâ©…žj¤OŠ~²i‘ôŠ—ÙÈ‘eêsИ¡ÕªR‚az–iŽ#'n(‰Ú‰„9¬ðù‹S9o¶ ¯=é|)Hr®÷£ß§‚@) ìúªZsJX°Re¯½ª`Bqx+Xmþ¨s{južXyá6viŠ®_þ –˜ºØŸ†©“ÖŒ(”]@óуL2·<>¼|@Ô 0ÌETÍgµÌçÜ1¸ŒÓM΋RY%ÖÍÎÊÐÎŒ;jÕZÍ D<ÝY”CÐX„Ôy•ÖÍÌ]8S TO.\%•Ô #r=ך 1}&”VÂÕLv$^ÈìS’mÖ‡]ÔJÅRÔÌÌò‚ÙéÜ7”­ÖÆØ(]æ|<¥­Wa Î74°íÙœ½ÙKeÕwEƒ}ÓÕdÌÓ”Ø ²Ø¨} *2ÒÐÐsTÙ}#E&eÜ:¡lPÅSš½Öô5Ñ{%Øu„×Ô=Wb;Ü‚F³HÕ]îeO$&t¤TþyÍ;æZ†Üâ­Ëe=,ê•SÌ­Ý´,ÜÞ- _òÖ m0²²aͬMËÝ?@±UáÍÏÁuÎ>=E ÍTØ­(› ÉÈÔÝù½UõÏ¥Ö±²ÒÂÚè 1Ú!5ÑÙ·ÍU´­QmÝe…áÎuྂßþCÝJ‹EÐ ´Y–¼án]/ÞDxÑÑ£òWŽ%Ö3ÚþÅܸ½Ógã1Þ1S@áDËäMå E>Nå=ä»}Ù¨3WNÑÍõ&LÞä‹°ßÄñW?N·sGVR=þ̵#` Ú’3$H;ÍÛÌ„àö„еóÒœÜ(q舞芞èðä4Fþþ+ì=ÄuQ‘å~"îA¤)`WíBÛÍUþᦠµà¸QcÔ¬ê­þêDë®ë´>ë¶.ë¸^ë¹¾ê`»ÎÚ×è4‹ ¤”?ªÄ+ÆQìÉmÚÐŒ_CY¾!¡T)|Þ× "Ê´ÅÖÉRи× •Q_#c†ˆ€änˆãî>žî½^Âä.îéNîíÞîï_sîònïõþîènîóÎ:á.ïôÎý~ïŸïöð2ðøŽ€ú^î ïîÿïè®ðÏð Ïïñô^ñù¾ñÿðé®ñÏñïññûÞðônàëUñï(oñ*/ñ €,/ì#N-”þN:Ñ£?QeMüUõcéz"Fƒ”Q…?;EÕ:í”ÓéÔóIXÑ4Dé(®-.'~ 9¶S Ðg4öBVbßg¾.ðe?ca?öcŸön¯öl¿öe/÷qïöv÷pOöx¯÷s¿÷wß÷|_÷~?ø€/øöoøŠøy¿ømOøŽ/÷e¿î _øŒømc!ÜÅ%JŸIeÔNeú üãPÉÔ3ò#úøƒô%L€]†—óv]QµA>G…”E ­Ò × cÌȾú^ùöÆ?ö.¿÷Êü—¿üÎÏüÏýÐ?ýÒ_ýÔýÖŸýØ¿ýÚßý“ïëÜün¶ùþ|àè¥û<_LYÃóEïóŸ/=¾þ=ŸûÕâµO(wÎ4%Jf4FDoõ0ºÜ} ë,2GŸÍÎtYK‚! ª…Anܳ ¿5m¿1îÖµ¡ð*o»ÜQ¨óñœ?aïØì)[Bâkœ]‘¹oÖèÛF»`«y¼FWËÐ÷ªE›å\êyÊT>õx 3…†‡ˆ‰Š‹ŒŠ…!+" •”*— ˜šš¡˜™œ Ÿ¡ž¦™¤(''µ…··$%¥+¬+§ Ÿ™›Ã–(É“¼Ì³–ËÎ ÓÍÍ ÕǾjJ}m€-àd{FT4Zåãâdbæ:íäþiE~7o3èqñîæ\èØ pù…!áASž äWp¡ˆx7c@"-9I²¤#Hv‰ñªT1Qœ,uK•ªB¥S1]£psfÎÝœÅ"‘-š (ÄRqTç0Ÿ |I›ºmh´«²d)aí™4jºÉ0—ÇI$]ÈÚ£a6E=wÎî` hm‡|ܸD Æ†zëÆ•Ò—ßß?f†¢gßa´éÏ%<¹âÈ휆ŒCntEšMz$Êm“n C5*'Ì §–Òœ3ÎbR]I= µJIÖjÛfëÕ°qó6ʼ)ÖßË«j£jB©Öèþ×qûÜν»÷ïàËO¾¼ùóèÓ«_Ͼ½{©Ú•žOÑih[I½tÊj?´šÈ‰ ZO®ñ'ÍnÏX—ÝV–°OÔ/Z€`oTUÅLuÐu oV)ˆá$Vñ’܃Í1‡âŠ[µ¨"2/¦ÈbŒ θ0Ú˜£‹.Ö¨ã=bƒ#C9ä1}¤ƒhõ59Ú}SMØß€¬ubÌjšBÊ–ÇA¨e J¹"‰ÐEÒ$:cL«`¢KÞ(§RÓ¥sØu•áˆÀiàœUAy$ˆ A¨ ‡Þ™è …‚¶è6J¤‡BJi¡Ie*襄jÚ¨¥‘:*é¡bÊéþ¤ž2Ú)¨›– Ú©ªbºè¢¨r +ª‡Òêj|‰fj뮩ò*é®±¾šê­Ákè°Â[i°¾P”G.0éäµ'Eb£N½HŒL•„Ì·ábI¥‰­iò”º.Xç‡/&Å\»û­[Û—ì8-uðzÅ †Wõ¨âWe²é ¤J‚ÄV 7¬… +,±Ä S ’Å4`ÌðÆ;œqÇk,²Ç!ƒñÄ$—¬ñǧl2Ê0“ÌòÌ1sÜrÍ._<h7Óü2FŠ…ˆÊ4#ýe8¿ë_ýì7]D'Mk[­ãD'Âí‰#V²ø¯P;î“åÒ8zÐroœáwHBômrl!ø¸»ÕÐo/LØöü¨G rŽËCää2˜HŒÁ€‹#ÆJˆ…$iFìÜüèWÀqŠZ,£FÅÞ(…"û˜Á(ï·Ä(2ŠŠH°ZÆŽ|&Â×ÃÁµìz+¡øôÈ– ò„+¤a “9Ìfîñ{¾ôÞÎdÈ7D.c뻡:ÒÇi “™T—¡Ä2ÒRŒý‚Ås™¿~ÕïOþ@æùr2qÑ1,ŸxË3ÊèxaL›?ËDn8œ0•Ìë­ óEDŠÌ†s›Û\ô§2e:“£0ôè i˜Ãì}¬—ü°ã ))DDÉ'œâÔ¿jÐ/âÒæ<çoâ@@â“K\%Àð‰SSF`:¬ü¤Û>ð®YÂSw»¤#àPÈ…]Ôp´ÞµªQ®ª´b -fú êUÅ4qU•œH Ù8m î­.D¨A«YÒH2b#|¤ .i-˜6iœcJgÃX¼¥úާ ãÚ|#/#íod¤éÜd©ØÅ²HmÃCàPg÷®‚fU¾•8+ïÍàNTµÜ„<Î;ˆ×°î<Ýüet[çíK?÷±ÏI‡fÑ9Á sû†0]2qÃ<ë$¹ðU2¶÷eEŠXƒ{¤–µ¬Y‹üö‚Ú=ÂKÅûPíø¼O8ò}ïq&66F’?¡G¶þÃöêùÞP3A»|ë‰üíS_TÈ7òÇ|ðSœüJ2ñ[ÿ{Q­_ò£]Üçx/'}è( À+Ih(˜~ƒâRi7v.è„P(…{µWžhs´3ltzço g3…ôy(z HzhŠ'URwM`¸‹a “9özزwE|çR¶w‚Œþƒ~(~1(v{·|w}秈邹‚vµÇ4¤7AR= §s–ˆqn¶,Û‡xñÅ~â·KBhxéGˆí÷‡½§|WˆŠ,¨~‰øuêÇ~»wm\¨2ógHmÔPq¸2í¦tjx`cHh¶†Ø=Œw†X‡–hCxöo{åzyHi2õ×D‚‰È,÷ˆÙØ,g~SŠ»Šh…‰‚ŠV‚5/·'™xv>(„å—Š%vòu}:§sª’ WÜG+ÝX‚‚g~½8*²²~áÈwDˆ}¹Ñ1ŒƒAñ—G$³P%³y¶Eo ȆÄèyý¶‘•C©1vT>wöBADi‡uþÑX{ 4PŽæX*S8“ÏŽ%¨„„(,C(ƒ#è„§}‚Ò|´$D© ‰„h„ò•‚¢2;¹}"7Öã(P‰f9وחŠè·=©xaÉ~Kˆˆ¨8}éÕ† &W¹‹¡W[ÙH…‘i€ÈCu9LÁˆA‚9ʘmc uˆ‡+™øC0r)…G–ŒyŽYhŽ`÷ ™‘–9éˆ)é¨ 7( hv(>¸£¹Ó·£éƒáh}uó8kV×(‹ù‚Œ9+g©øA½·ˆÿ¨“¨i7à³3¨‘–Vé‘&€æ‹m)— ÄKðþ…tÉP½tÞA4œ`;8@˜…y-I7‚9žŒ(xèY“¯ÈŠ/v"¸Ç7™>Ù(O(Ÿw”̰ŽÛ’‰³˜põ8…ØW(:‡•¢"„­YŠP9Š;yx9©žá÷›)™ì¡­8ƒæç ´h€uÈ–yéVhønƉ†¹Èt½¸nmùy†Ã¡Ð‰zÊx€9XZàßY‡É £‚‘YЇ¨ˆ=–ºž=Ù›õ„…ñx„Ÿæ˜ŽW$T¯õs ɃÊõÔ”*x•ïxÁ)QZÉ(c)xfÉ›´)ŽB ”º×)aJŸðÇ>…as  š!t@ö°a1rjޱ¦Iþ§@@§W¨n€lÐw°Qjð`eñe”1džÚ”Ó§ŒÖ·¢’3Êá /éžî„·)+Y¦¿ù£8¹™¯ª[‰¦u÷‚"‰;•]4ršô˜,0•–ó› Ê”ò¥š¿ºŠH›Ëתׇ~ºÙ•剓Ò*yÉhMØjMÞ ­<€­ì“­à ®v®äúHÝZ®æŠ®êª®Ûº®Üº®ãê®é:¯è¯òZ®öj¯Es®÷Ú¯Ùª¯äJ_üÊ®èð®ôZ¯ÖW¯÷ sõ £3Z£H¡|—©›¶zžÚ¬@ ‹u¦ð¹„;)|Öø•¡¤wþTQ4 Ç”}˜vÜAšÙX„X‰¡ :Šð¸“5)Ÿ::¤©+LÈ{MH…XH¦gºƒñê ÛJ_âÚ­HíZ4Úº¯K+DÜz´®ízµV[µØº´Tû´P›µNûµa+µæº´[ûCF[=e«´üz´j °k¶û µh˶øú¶jK·nÛ´{«µã °^»­J[¶~›·Öd·ôʵk{¸„¶[«µak´û£š‰  -xª\Š“–饮Xˆ=ê`]Jx¸ ƒ¶‡ŸUñSFb‰ÏZ³TJÔšøš§Ù‰Þ÷˜Ä·~6yÕ¤ê÷» «gùÆ{¼È›¼Ê»¼ÌÛ¼Îûþ¼LѶ¡jÓš¼i…h¡e§³ë‡Aë½hê½½¤4y–ÚЙ!ð™Î@ ¾º¼9‹Éz¬¦ˆ¥ªšðØ©Ž¹Šˆfy¦ß+´czöÙ,²Ò Ó{ÀœÀ ¼ÀÖÂÀÀöQpcL&¤‚A˜¿™ùªéˆ2éŠä;­Oø¾QºD€«£Ÿ£”#XF˜vJIr¯) XJqüH Û§¹›_y(£ËŠÈÁÁ;¼Â[„¾@²ÑuÄHœÄJ¼ÄLÜÄNüÄPÅRì ø )Q¹… ±"@Á7¬žeZާØí ‰ܹI¼¦–7ùvxb”ü⺒ҔÛA ½KQZ¥Qþ‰ Y*Qº)±é³@»žäHÀ#,ÀÜK hÀ4TftN­ÔIDÑÈ‘@Óõȼ@ã5ÉŽ|ÉïÄÉLÄ@ ,"•âAé{=-J-7ílSÕEÊï Ù˜Î?ÝÝŸì?Þñþ2î|ÎØôŒ?=ßö}F……ÒrÚ—þÊF1ž×€,ƒxýïˆÌîªéÇwäÇà4§í”XFM:fнû›~-KËŽÉ(5œÒm> »þ~iª£;Ä×{ÝZÄè=Þ†ÅñU„N!ïÔÚ^Sdÿõä èëíTߥÔ6YîÞìPÁGÞòFüÛÞËŠ£´9Ÿz/­6ݽŠÓy{¼Mp÷0w´Kx"lªÝ> #·ˆ­ØŸ¶7D¹n_£)ƒc,Ý'Þæ•I«¯Æ‘¢È-îÙ9¾Ù6>о]c¿ú~®ñ›•ñw®õŸX‰ÝâÏìïIi¿ ª,//…Ú^ ‰‰þÆà»£´‡å-ê:ݱln™a¦Pî~ô‰Ý¸¿êB/xRÙób>(Þ·ùQ^xhˆB¥fº íˆ8Êä¢[ô¾®Ö})~òqOYñÝÔÆîû­¿ûètÔ0zÛú0>6ètGk«ë—yäšI‰›¶¢ï˜Ê^TDAüÀ pH,DÃÉ O´ ž×,ö1½n½Ð¯X{­>Ãèmu]nŸÝ`iyhÍž ;#G½ qVRgk„6T6fh]o\ˆgZ‡RX‰SˆqŒk‹›ƒšr ™gQT¢P««u%*'zv±y11·°µL2¶-º4 y(¾0Åw²þ¯*aÄÏ»Ñ#ÔwÏÖÆÒÇ%=QO6HãäåãJ®º9d[£ß§}îñ•…¥S ¦l†s÷¤øñÒÈ‹¦€«Wy¤CVOŠ"G¬VÉ‹¨ƒâ‰ü.´%âÃ?¦(VŒød•£Jsú-b”rÞ)Gûb–Ñ7ÇãÁY <²R`’'\´RdÛÆÛ±`³†¾X†¡Pœ½’!Ö ЧËv9k0•ÛV§Á†A=1´$Ê=Ì©][]U3ÿ¥jiÆ_>q;ÍA4pÓÝzndªÙ f¦£›Õ*()ú ÜEf$&º¡Ñ *ŠHi Æ‹ŠXU4tè”dL Ó„ x^ÁÁóLþÁ“½O”ͤtš<Г7å§_©jÍÅÙÕ¨šÑꊜ(ñ¥Ü’ gŠ•Ø¯M‰7gœu»SîÇMàÒÌ@‡Ž´lÓ«âvx¾§ò®,u gÚu_þkÊp¦EïèC›våµsˆEÔÿ” d˜a†Q< ¦“eQh! e…‡ò5a&þõç!„ð'W`, JI!Ö]O)иÛNàa÷VsÖyU\Ùá¦M Ìý¨ wË„¤t± ÔqaIÝtâEÇ 3Ö„GGh Ùz`¦×ÞŽ B"<b |ö˜÷°”L-îgbmlÈÈK‚CÖS…$f‚TFh§þ j™n€@öY`¥Uø'ÍT(<-ÞS§j‚¹¸"lƸའ׎"d£d1SQ‡ä•YÝ¢ÜXh‰S]••*ª‰õãvÑÈÊ«Ž;jec”õÁƒa&ÛÖî5À‡#ª©˜Q!þi1_*ªù&=Ü’‚¦™ÞB2ÅAZÄÏ–Ðd"±Ëá¡lNq™za\ 䇃bÜ“¢‹²ùCß—Ά柞 —Óo*ØxƒN>íÄÀ*ß`ªv¹^© .¾ªŠ±,,‰“ ë¯V¹ëÆÒ± Ý°ÌMy±ÇÆ×å—Êæ|Ęó`·fº*Ûþ“}ú•Ÿ ëµZšþt¬Ü˜ž)ã¥.$n¸Fš ²™}ô:¯eªüGɽœabí´ÕÆÙ´Ð´Qêv%·Ënà=ªÃ Rqu%kÕTYɽ ,à¬R²®NÆú꯰À̸ÂÐÌà'Cžc¬ÂDÇÑ%; «óèB´W«fwîÀ¯ LÚkúŠW¥Œ¸nikøt`|Jù^@‚~ˆ|– £gþ‘ïƒÅ?F!@Êó ß'*ÅÐ þ†²O^?–°Ê}{äÃ[ 7þ&«ËÝI%N•gIeûIÛ+â!ûºª{Á5Ûçu2óÊ«X ¿ïd€<|B ÎHÇÀðLa>ƒ›¶‚¦íqêLÚþêìPb´I¨D0Yר¦su.yÙVȸÐQ{A ¤RX¼¡-l§ñLç&˜n pPCHf E 7{ûn|¢”]ÃJ<š—9ðµï+„k¢ìF¸þ)(^Üß ¿ˆ9Ãíâsæ9Vhºs•InPÝô*AÇÛýìhùÉñaÇ•‘‚O W®ã?ÑMûRFŠE‰®IH[ƒRÞD.#šÒ82D© &î“&5¬K`ß„ÈG î‹2bh¤Á7 aè3ýޤ ˆLcVÜŸþ q.÷5iê˜by1%-Šq‹Q–åþWE+ü$^þÝuöÀ „b{|´7ù ïDÓ”~Ø€¼×L"`ˆ@ÌU@H_pÂP£°×¡Ns<ݘDD©¤D*ôBBéS…ÙÂÔÛx(4¹ô0žžÊ’ 7‹áh• X¨à†¹KðIn–R¬eŸœ'®ê¢Yü¢û”ÒcÎ/~‘óÆØiNSYmôÝ¡)m /ò£µúr'‚ö+ ±QSFÜp  ôŽ9ÏÂiø.¬-u#NÕÞS£j6»¢©9ˆõè´qŽòŽ_e—pÉD\´’TFŒ%G¥X$üMŽ¢ð3&ÉÖ™K@™p ý ¸#þ!ó®&[+i@Сç¥9«¦þ º -MSNµS*(üÒTÊ^«?ßTS¥ü¡ÎŒšPjVc¡ ‚´85ÕL'é¦5Ö&Ciã©çæA¡éµ·«[†Fì"®ô ͹]£Œ,kë/«¤+aeL°ÁªR6DÖÖdòÕ¤½.ÿ0“¶h"–šÌR&ꊓ ~°ö™“lsçS ºä¦ $Ƀ׆°{:­ ~ ³ž(²¶^>rZ Êr+{ètQÁlšZ¶íŽl» þJA¦Î‘mš“ËíI<Æ‘Ü@½žÉ,èÁ{HÐ4µÈbèFeâ`læÃ7zÒmt‘ÃfTRIOøñµN¼:aèÁJËchn¯'ÑÅð™Ë+Ùÿ¬nœb›kÚË` ¦7ßòEŽ OÙ,ÿ‹{é=útUÓEv;*5MõÇÆw¶žèÈ÷.:¿ÆÕ€‘³«1‹æ×·;'÷5±‰ùåF÷SBÙó1ƒéqXÑ=í½ÆøárÑ5Ð-ÐåbªqQÊD0®òtZc^ÛáCIk 8?ÆÓ¸°»b€ˆ ~†¦éuã)È¢Õv;5®^¸ikšãÚ•¢n´×ç+þñ¾ÒµárÅpv;L{òäfREîv¶sÜ=dùß¿˜Kƒ›¤gúÂw*1‹áhM¡è³—ïMèiK•w’†Â9;žDH6ÕÓ¹éãJ/ªti¸>"Õî·½Ù¿ïEZlâVüîköV`Çu”“QÓf7ÌàV¿T|W?z‡€Ã¦vØq{D+E·W]“m;pXÌ×|‚W3gÂ}­Az~‚M¦es–n˜ÆzCÖc¤Eá§*ò–1–4eíReAò§U×tLÖý€tÀdŠ_m“j>dÝsJ­mØk…×b7R&…yoá ·”al–v×qÈ…þ¹ wyÖu#Ç10Æøæà|ãÑn«Ãok¢eOcGA^¦}.r¨ß—Cçãwo3§ƒ°%&ÒeB$z«EŒµÆ:Â8 «DÓÐé½LòP) ](™+…ý8ÍêÛ—*`¶•kuCÁVþÙoq$ ŽP8uAÇ$!óib‰ÏïŒ6\ÏrMÀWÓ(õ‚0< š‘§—4=‡¸„À“PÔ›ž š)mË]³‹]Ñ®lË7ÝÑŸû³ Ù¡¢6«¤´kÒ? ѫӎ]³›Ç{Ð0Ù&­ŠC¼Ð§mÑ#þ=³»Z²ÐŠÃ¤Å8\× ÂÎ+¦Ìé­A-«´M½YkµY ¾º/¨¶Tý®Õ|@¦†’PsÁ”ÈÕr¤nžúe{û¬16ZXœ9OÑÓΘ¹"RIíÜÇ ùOú4f ÊIr”_µ’á‚Ù\'] CÄ¿{Ú}Ú?ÜÁŸ|ؘ®«ÍÚ’ Ñ£ º¦-¥¬ÊÝÚ »´màÿ]¼¤í£íÁ£š¼ÙÍ)®>lÛ¼ºÛO Ô+‘M£]kÛM+´È[ÔÅšÔÊÜ[KtÎÌ\r¾ÍݶV½2Çdס!ÙušÕÈ( ÇüQi ™ÀtÌAxó/þÄãoÝÄT UlÒtafZü&f‹Œ·€ÝÈþB’L «êѿ˥5LË"Žá¬ÞzÐ=¼Ÿ-ÚMÙÑI´*¼Ø²;Pêѵìç}îÉ(ª³ºq¤ þà ý«*nµA:«$Œ´í¹*¤ÃY´¬ Ì+¸ê›åšö c¸ *÷2öãUÝú<`Ißr0ð]‡õ‚`íÕ§cî©®„xCÈ^x{o(Ø4` _‘æoáüj$J®3 CÐêà%|þÁ1šÒXÓ¾è®ÝÄ$íÊ´pþ¹.àÔÉÙ »ÝÉþáÎéÉçþ¹ªÛ³É Ó’ðæ6Lºœ¤1[þÂ++ܪ¨Ë¬Lé\û«BÝ;MÌ>}¬Dº§ðö[Y‘s‹e¾ìоTMÆWÝ×=Nô:ôje×/yùºGe€d- Ö‡ÕuD}ZJ~T`£×?—ýð^?…Z™FJHØ‘˜û‚ûºæÙàˆ~Â-Ù®Âô®Ð‹^Éo¾à~îðÄߞخèÞŽî^¼¡}Ùݼ'«Ñ¡MöÃíŒG{­®j[³´º¼;:ïÕ ðÇœâÑúËL+›¥¾ ¼Å¨>‚—i$ÍÍ ¯M`G>L¯è$d;GÖ¥4ßô¡„ÐiËàfójks‹iæÔoí×±D^xøš:AµƒR…`ìþöcÍn抔k!7S®èB¬Ø³;ç”-öæþÑÿÝѲíÚ«mîÎØCºà·ÿçµ?ÚûŽç¯]õ!ÍïæÎàŒžõP[ÓAºðÜ›éÕ+¥š^¦hð+ûµà©ð'ëïnœàšÌÀòÇañ#`+—ñ®þê~eHÜ2óÑm¹–ú)¸ÿ*ÏÕ@SºÊkÄB! RÇæqcwU!=•ò4j<©p4ÀÔ+QK»÷¹íFd-=é(uè#Ù„L& €V‹ù|:`† Æå³¹llÙë±»=/¸ßm2žL¯¯·bndgzolleztvˆ…ˆZ‚–r[““–vxþjwlv¡r‘„ ›”›Ž©›(j„f¬“¨«}“b£µ©ºª‘¾¾gjb± £”v"††%*Ñ$¯×ÊÝÞßàáâãäâ!Ë`é7N3,FASñU=B61>JV—ÊTªãŒYCz¢Ýòz ÚïþÈ7šh²JGäã¶€–®¸Ž-l-iÑ `U/0¯ 1u!ZŠ–NA¥;¸ZÒŽ0=Åv“±(™Edh»èkX(?š+âáÓ«Hò Š´Ê$U´µ,jO ÌÑžöµ–Y­laëÚØÒVŸ‚­Wo«[̶֚³U­ow \“âò ±K-r¥Ëð’¬UãVbåxR­À â;õÏ[©Æˆ  ÖÿˆP?®oŠMšd#‰Sq†s‘@Pé{ÛMpJÍ8 ÊBÙº.`í9Kà ’Z”=ÛýN}P5¨RmI\Ò†V¹¢²jVa)a­NøÂNîG*Üjž*]+t'þcÖRj@VÁ*µHµA‰V {áÍDŠJ`gŠšê°æ5™g˜Þ¾<Õ¯8ezÓõö½AŽäØ{_dsÉÂYñözŠ]…ôŽRø,‡cU ƒP€\ÕêTMlR¨JõËcˆéŒ!]“ö·L|ð[\_C¸Ø¼†³±—{[/ÃŒ·K­0œ]©f1»y´f– þè@+Û§,aµ=óФ߼ v¦\ãHCÇŠ³ìRè-#ƒÚœßŒ ì½B}w/Ô9À³fµ­uox7+Ùö¨YΊ&]WÂç²™1038ÂiÆxi§Ý`§’ÌÕ^³œ¿}l‹|ÎѾ³µ›à“{œØ–«¾(ân‡ã¡NE±÷"x½èãiÔµ‡ Ü:œ:f©ÅÁ;:ñ–qÜ’.¥&§Ô4M릦ùf§"ÌÓê]ò’þ˜VFÒJ¥±9º˜N [a•Ør/tHÃç=îÅÃlÑÝZÚµ}»'w¸s®sË¥/wÊW?ã­4ÓuP&FžÄ‚’ŽÌFe‡Kd³×J¸õÄžÅz|yG‚“:"Vï€á2€R2eAÕ(Q™±Ge$>>t5c5ö¶fÝ·UhxˆWZ!g}Ë•}Û7mØÖeÎv‚àWröh¦J`¶ag¶3Ñx¯bçG „K„GÍ$kÚ"nÝb3ÀG¥1„¦þvbd=¥W@§WFõdyÚ•VCÀVVfL2¢;…À3v¬3w5…±¦{4&c7‚(×|&§w¿µr½}ækÊÇrMØ} ;·öf„Çlx,§Þ§fÉgK~gb‹±Üvƒ’—~Õ”æz)–j]he£Q„:R>9SL¡ôb ´Bio&LŸgÇÑ…]§GË!4D烌Ø{K¢4Àn<ƒn¥(MÍqTÜ7rë#w,hrÇw]eÀˆ|•¦qh‚ †gØ‚‚§‚7ˆ¾xŠÍEsˆ˜ˆÔ÷ù A¸3.Ò#9‚5ž÷Á'WÖ5z°„£o—Ñ_¤bàþXQ™8LFÔò„€¹Ñ¥èíVQ¿ƒQ#±n-òY†ç‹føm/XfÕ‡^Ƈ¦ujw¹È.u'+Øqo˜9‘ÙŒ&Sq4øx5w/cU$>õ;æ=´ãd]‹AtYÌ4û—Ož¨f™µ3YÓjÁ3TÓsŸÄ4C¥nÿe…\S5§¨{k5cŸ'¸¨rµÕŒ Õ‹/§qÇWŒÃF‘`bÄ‹&x×x¸Œ"¸eXÉ|Î肵‹£B~Îõg×è*ˆ¢…bÕõNeS.ªöCD÷ˆFW™nwÄ’z…\:¶a ¨pHÔ€|Yt«Ø"J÷~­–]¢8þ/òhC9—z ÆvÇ8–V9wkw*G}ÈÅ‚¾6%h‚Óxm è}"§‡ª•li‰š˜šº)lì’PŽ—EW—ðKC’’I©—AÔª(6Q6†Ú¢A`R.L§aÈ#gØan»“3@øCTXc©våXW§±s²„³hhµâ,Ëù+ZWu¨³)}d9š¶iŸ$haîÃfhy‚Œ»©‘mé†.çlÑ~öYJoG:Õø\ÄÙ 'ùY-„žçsγQ2°64âu;ö·¥× P¢¬Ç;Øòz´Æ^åæA☞îFFÊ1t¨£Åd„y¥:¢T6kÙþvyh›±©}µÉ} Uµgˆp)›Ç¶–HÚ•Y9}€Ç›¹Ÿ©SPÀYƒÃY—Æ9BD'|µ¸QšU6 ·™ßqëÆ;#j„ª‘“k³“P…R<Êù†XY#Ž­¨€Ä6VRÑ94«(WEÔ$³–„]Ÿ‘%šwK!2ˆ”ŒÊqéP©úYšæ• p¡†…‘!§¢[‰Œ¯Irà7¤¸I›Èe‰Œß—‚Ú³Kt¡Å©FØ&~ `¡:ºs~j„Û.0Â{.Do´d˜è,ìÈ ‹imÚ³—%{VqºRŽ×Šœ7¿5¶yŽX;€Ëœ‘–‰6Û£Ÿ¡Ž¤Ó¬ƒ+{¥^ÐÃþR?ÜN“CÓªX`7d4¹Šùç,’Oit8Â1Œ£–T*X¯ÎP´ˆ4Àˆ$©Z|À{´^Œ´ì ﺮ Yœ´¸DŒ9¬ˆ±ÀѰÅ»¿iü¿ªIµ¼kmQ ±}üÁ¼‹¤fyšÕg¶Z’ˆhµpË¡hU¦,ö4ñèÄaó]4D¶¢sJ\رŒxšNîåÃíEB4rjìåÉ;B­š­O¬j¦”T“ÊÏÔŠŽ:AÁ-CK¼c gÆl\©t,Á‰«À¨KºbìËZ{Ì ƒvª ê?¸¾L‹Æ_¼ÆkÌ©Àk&ª›Á²ÊºMû–°:‚Ù¼°Æg,Ú¦:©RÂMþz§¾z9s‰+vâÒ¦oz˜¶h‹ãU4‰™fEd¿ÑNBfiáDo RC¦Ñ=(…y‹¥nÙ‚AUæ™võ]+²·Cù“ñ©*h»¿^`ÌüK‘ÅÉr´ŒÇeÀ ÍxÎhJ  kB«©Ý¿ükÁÐüµÉÌ©#ã½yöºÌ«ãL¼öŸ„|ѦrÒ ¼jœù]A˜#ùhyŒ–]¶ò{õ™3LK–²_ÀWþ—^žæBüÉŽ¾B‹C‘kĸ’4Z(%JWŠÝ8.EÄ’?÷pÖÛSZ6¼û›µÀ µ£;Á™ºË%@ÇI«Ñ¢Û®Yúµq’´{»º Ówm=ÞBÝ¥J«Ç{›L°é8=‘Ùè½®;~Jè\b7±·!ÅŠŠ§(™Ñ…½ÓÞU²ç‹z¥TNWi uiä„ÛfN¦ÆM‹$¨^-Yň@u;Ý:™à´îäN;«]ø+BzmÝ¿ü´u ãŒÇÍ×ÑüÅ¢"ǘêþ†kc°Î­¿þ{×@þÒ[‹‘6}XÉÀ©‰r…«„'—ÖØ¶é¼ˆÉÆäø‡¡ðäÔÀÓ¡3¦yÀý«÷\Z„;RÞR©‡æÜ¤=DLIÚ¤_ñÕ^-›oܪ¬ªXv"KGÞóÃ"z¢w¡«6]Ìyã„n̵ÌjlÇ_㻜è‹nÀ•z¤º[饓ZrÌÑŒ-¯i éñM¤Î Û‡NÔ vš>ž»ß§ÆEÈ“—<ÿ'˲V¬Þ3ø÷ÛFW¨à”é+ƒ¡!´ÕÔŸ>Ö£–C1TÊúçDL¼v}yë¹ÉBó¢Ýé_)Ž>N©Í8©qÌËRÒÿþ›Ý<èÅØ \îÃ’¤3ÑÁýÜ„ÍîKÓÚ¼ºŸNê÷y‡̵'(sE}«GýÙ‹†è±è†×uàK|·µž£_^O|¤Ã$ª•P·uûöæ.Jáü¥M\íu=ÆB•Ôá.1ž‰"úŽ¿ºhòØYH8Jl·\* 0—¤6r”N›e{2fëÁnÂêþ9߲ɪ9ý‚Égߔǫ28_Êç,å“ǰ²²¬*¯éÔ@×H²I½²”˜|ÜÄ”²ìm§µ4;³r€Õ’=y-<¸rÚ ½µˆ­š5“ïH*¾þÂu½|mÙÀ#Dów¯Ù.Çk–*¢ÌÚôþmV}¬zßñômÌÞæ›ô OœS®Ûên™qtA(1LÑš”Ÿ„vä©àùÌUen<;ˆyà*ÅØpgª…¶Žj<“‰}ªò]O+LÙȼk?8•z|• Ùgxê—†ÿÝ`ÚE]Ä–6 ÈBÏÇ\æ¤ù$BA­ä>-ÈGoß*ðô^Pˆæ¼ùbÊßÑà½:—œ½úþø«N¹žðÒ.^×+®A`öëèÿ@LP5:4Œ-ö¨‹J½ZÞêø…Ü…‰¸…z}«—b²•¹x @ßÈ!H$‹ÅcðÈD:Ê'TèlJ‘Ñé’šN¤„pËíV¹Q«ÚHm&Ö+þy­Í²ç_¹]6ËýZO …‹ŒŽ‘’“‹}U,›#65‡;"¡£! ¬¯ž0«8!cWG–·Tš›5+-1¬Ÿ.'¡ /Ȩ7%¥Ã;Л°4-¢Ÿ&ƥĬ>?˜tu˜ƒgã}tvJveâdäåwëA—ñífì‚ûCâoüø$ÉsΠuyÒ¡8G`: ¥*`¥‹3^´d‹aM-¨©™‚Ù1VÀ:AHy¡D*­r¼tæÉ [î„qˆä™…mÄðЊ[ÌS+NÙ@ù³“°bx‰¼QÌW˲FÊtñÍ"–€ Þ ˜Æþ<@ùš… ÀÞØpOž$w¾w=¦Å{Ћ\(_î®ý*¸ À'u†HdQ£ãÇ9Â󷲪§¤MÕz-3RXB­r‰íó0:°u4»S*EȾq’ª¨’OIÀ V:)7—Ý>ªÀÛTHN°˜+vu'ë!½Z±”ûÞ›BÀÞÃÁÛ«&ð¾ìã«[Ná÷:ÿÊ«SˆÁŠŠ ëßßH2Z!RE¥L)D-u‚U–ÁÔL4¡eÊV ŽÖ› c¤“|C€´T2#ùæTS—Yã Q)„Ø q19¨*«üv’ ÷áV}ÓQD š$‚_þüHQ@ú˜HH⧤‘šìX€A–$’:ò¸d’Râ·c“\>Ù¤4j­$Æ[ZxÉ£“I¢%‘CÂvä_Âæäœ]©¥•oV $OF©ç’^ %“wºù§œ{vÉç–=:Ih";ÒYÄ– z¨£àèD!÷áÙ >æß{Jð²[7Ȥ””f/Y£Ùf½<茫)AøJw®‰©G,ræ‰!ÔRÌÆÃÅ*ešV¦$ËRQ "/§,‹¤Í”,ÎI7Uà†+î¸ä–k®mçÒ–n…qÕÂ.9°¥+ï¼ó†ô ½öÒ‹™ºúÞëï¸!½‹®üÖcõ- þc¡6¬‘gAa@iG9HÓ+¨nm%þ$ S/)gÔÇžäö.ŽÊWYf4É–ìLUlÈÉFôŒoØ\ÓÂÌž©R`,0ƒÄ²€Ó^ÅAªD§¦@·òo¹*öKoÔá(õ¾­ÜHN«5„Y¾ú‚=mØWKMµghƒ‹UÙâ®&Õ ¼ 7CY@†Q~êðÞ‘ŒªÖRyh\I3.#`R†—ÕHÃŒ†Ú,صKÑÄÛ„£¸4i1éV3 ÀÚ\m'Å’x•Í÷-â€5y¶[rÏRœÍr¡0­)¶˜;â³°. )!?«ïÄG«û»ó0攳¯u³Jð€½´F,Ðb‘ff¯Ž!K4ÛÃØ)xÖ: 8KA ŒVÄ;Rå§£…˜öŽyÀ†¯ƒrjB-h‚SÜ+lŽ †_kÁjô±²pz7ð±ªo‰K–ólX£ ÔŒ6²q+èbób㨨26¥EØ_wì1»Îe~w£@*r¿:2Âoã¸ч³šdA¹Óq`Æ!& rÖ8Áä¾Ò×h¢+!èÊþAÉ Â6ûÆæ P½BŒ“”¥èbÖ@Î@$ÒR )‘#@’-£[ïIcÈÈ”²8QûÙgJx’ÒÈ—@Þ\ê±È"T13H|Y‚,Y¬"уV”"ö2¸Lሗ¥Ä 'DH^”PiOY†lÞõ6Ú"p (æ¢%?DäÇŽ÷ËŸüµªjÐx!{P …BKYxs–÷ª†²J)‚“1Dyk —d1ÁÐí«–+ˆF¶KbÒd'ùx63ÿBõXÀ¯p7ZMhz€ÅÇ0ćËWÈNÅt¡Ðê‰`úU³ô,èÔ'JG¤J!+xVuM0lÿ¸e•>G/öQçB«IÌH/ÎÑ‹¦1º¹;—z£N´åQ#mVìt6‘„8Ô;0“yeæ|G3©†þÄÈ‘Gl2¨Â+…x‘ך«à%ˆ -m ƒ´°„ 邳öÚÚÍSf”‰:Ôñl‰º%ÝšQçIe^…ƒÜ¾èµfš ÁÕj4ùð={EÕ°p/:éó Oû¯¨ŽøÏ{ĦHigZ¾~ ˜M˜òzTlà†‡K£›ƒ¬~…˳‡FRmµâDäÀœU¢i—0mÕì„7!Ù< RéÞ"À.Á$l~° ¶°÷£p4 äŠS ÆDn Þ¹›%q-Ï'“Ñ6G…AØkÜ 6Ÿz“p†æ$)¨Xåø¤& -~Ö™˜æ²q8ï²QÇi¯h*ÏeåÐ]åmEUØE`85Fh¤þ‘9;Ís‹9 «ÔM’oâÏcªË¼4©‹NÇk/ ³œ+hØñõ-îPå…ÿתnª3• ÿùEŠþšrˆšÀ„NŠáN X‡‘á´÷Ri·c ø}‰sl/2:A1vɆz@f5G÷Iç|s…EùDY&6ÍàÂuXM⢇&2æåG7É£T¢…€¯QÔ‚"„FkØW©E¡Ñ Ä^릈W0z\ |6v6ÖB>GA.Øô3ÎÅ9«×ùX8¬µ‰Z'HÕ¥wwqq0š@?ߎ”’=‘ '7¶x`½@S­_þs\I˜ ÄjÙ•ô!'¶¢K³³dB‡}5åYÃ^bYd5èz((a ™SHÀ“/ÇêîbuWFö×þ3¢r|°F µ2(y}ýÈ–l§‘ü“>è3 ,) ´¤;Ì%•8eBh‹OùS€£?i%xÒ?©eVÝõNB)*âh•PYÏ"t$3@¶È|ã:µ!{$m§t€‚`fUo=äzòŠÒ7PG!P÷7rçuCæXZ¡9…Yz ‚ å< yvkHåh"°‡UbFwNy†\„j‡yÛè„·`lý¨@cA˜MÜ Dî•W†³s:ø±˜^¹áU{ÅœgLqƒ'ôó#TbDìðr §©D¹ÿT‹éÉ}±CFUDÈyY›:e:Øv9*“oʸY!6h7—ƒ B•3þ‚zëÖqÿ”.âxµbSpçu­H}ø 1V“W~6>ê„Ó‰¢ò¶-ãJ¬˜ð!˜r¡d0±\ÏÖKáÙ}i)N8j”ìeZ˜EhE•w–ÑfÖxà¢CGDB‡ ꀩ WÓEŠÖ·,½ÓMîIHA¸hØ•·e9×ÉUNz><†œ¯ÇŽvM©%HÆy”:o ¥i(h¡ô–ê€vÞgUz¸->´~5ŸÙ{™Sk¥!šH7rƒ—Å,º£,ú'S”Ú×Tkœ±—?}Q ýù©Žñ¢€PV¦á8óëÀ ´GƒÉb¬Èš¬‘`Šm¨F–UKþcH•HC©eYDÇŒ^õjo¨‚i•xƒ’ØWh®ZýWˆCƒ¢¥"ã36Ε3DH2µo–:–j¸i¾êçÇdi5dª¬}s¦ Á5þ:° NfbéD° ¬<¸y6Ê*rÉ—¬¨xÀ m¯¹wµ!gI›×øÊ3øZb5ŸÈ¢«tzA–JAUeD¥Y®'Ê81µ–ع¹€YÐH·ówûº°° ÉD[´F[´òá‘Öy´LÛ´Nû´PKÔwv7§j¼>§AÓ%­‡D«Y|"D|à°ã€[ÜÃms—qÂ8=Ó¶eõiÇæP«I¨ØòЉþtƒ8¯Â}±"0Èó²KPoð“ý ´Ak¶x7´Qû¸‹´‘[¹–{¹N K®uÉZ<¤a¢¥jw±&ŸÝ©¾Ú­óDî§!–=îGºTRÈAÊ=\&va6;BÇŸ‰©ï9{H‡§9’¯†±= s¦©¸BÛŽ«]˜&{|Q£t1¬ƒð@cËdÔ{ã°˜kK¹kph×èy®h¨§Kɉ¶ ¦JªËx¡î˜ë­„ nÚm³¡_;Ó»˜*ƒógjíËT#©xÿ£x.ÖŠîèZ¿4P˜2ª©:{i•o=”Êú€FÄ”œþ7” ‚"\'LÂoѸ̃´¼Ù)œÂÇ»1¬ÂxWÃ8lÃ:,ÂxšÃ>¼ÃW@£ ak›*w‡­óŠW•©"vŸ4Rbd2ÍÛ øxt›j˜?œ“ŠÀRI¨I¸KQ¸‹»¾ “~¥À±Žª•¤ ¬˜¨p“¹¢››§=Yšœ¬Íë¼M+½Ò‹«àw¡ÔA7˜¦~¾{\È•Kšë½¾y@øt¢`k\»¾±‰Ä""“:¿ÉݪJ&:È I`ì‹ÆXKšø~™H:nËiºen"›|¡(‹ùD3i+9·dZp³K{¼,œ² ¨¸ýÁ¸ÕÛ†ç‹Ì[þzÁ<rÏÇÓÇÎÜB~ðÿð7ƒ)ÈÔlÍÞœÌáÁIF¸•qŸÃÙWÒé k }{±–ܦHF&Lм ¢¶¦ÜmÞ–…¦åf™4Yêæ9ǨXŸ}Ås›æ•µÑw·¶¾7âóA¬â›€ó“7Ä|GwÍ€ÐR+ M¹üð¨Q¬¿yQÍ€\¬ßËц<ÍdA´9±ýjаâA"W„5„–^xºïv™>Ö£u ÎôˆmR¼/õ7|U‡LÏx(XŒX³_£ÌL÷Å[Iˆ ívô Fˆc''XÑ‹Fã{bºº¼@û€Þ ‚*«ÌÜÂØûÐ8Íä‘Ò„\Òí- ]þøV¬ð#ÍÞâ̯̚Çxš%GeÈWʨÀæúx³º±¶Ìk!yÑ›‚=|%=QÆÓººGgéG‰žñ[(ÙÊÍÙµyUŽ&†(³µì‘/¼5u’† Á@YÑ‹ ´­Ç«­Ç„ ÒÇLÎ!}׌Í<K» ÜgÎ'=ÅÍÖšBÒßœÜe Ó8û4Ì”Óp„0c-SºxV#“}*žw\#Òþ’=ó—‰nR׿‡G‚Øm¦¶~JAÆtØ5ÉG,#NÌ`Ñ- 7p‚%mÒÉ`г÷ñ³ KÖaòÁÞû¼Ö‰àýÕÌ~pÍ´zÖ¶íà Ž×¤×0½á»}Cþ@£ï‘Óëö¬ª±5‰`ßÇG•)#²™· æyèT»X“/m¦Ï*Yݶ…KÄã…'xáE~´Ú”C\·ðÜŽ["nC/Û˜rˆ¸wŒ¬Dyv.ÜNa®Ìs1fmmÈÍW>Ü®Ö <È Ó‹2^½Ù ܃ÆâÛz%ûqZЫ¸:ÚÔ^3rV=aÌÜÁ!ü<= UÙ§U)\ëGgT5ÆUÈ»ø^®ú¹Lzù™|Óº>æ"¶‚ÀÂLà kànÞÍhÎÖ„Aæ}ÜÛŠL¼G ܮ괎ÑÚÖeþÇ;©Û&vB|/ä—ëÙµ"–5½Sþަä ù”ÓHåWô,n"I…m{u± DŽUX uXK‹\³{öÙTf'i³¥ç=BMÇ­ý“kÛ‹XLpÁæ\~ê¹~ï¼~È"áýn½zýå Ôy­ïaÑüîå5Ê2ýKÙ¹4yl“Ù‡§®6q6¸!F±AžlðÝú+VªÈ/kSg^º•(jV5úˆsWÖì%j}²7p4;¤ š±Ztóxa=åÁjêzÜ´~ÒfŽÜïïÇ}Ü;ÂrMÒܽ·në+}æo„«.Îo‰Òu pÇ y‘¹84˜‘ëÈìØÖ*ÇzÁ†xØ9‰4’¨`ñ…¹³ÛþlŸî\ËŠ^ù^hòÿ¶’XKb–WR%‡ˆxg ô#ÖîØÚ<õÍ FðgöÒÞáØ;áÿù _ô‰ÎdŽ~/MõIëÒáÜÎ W˜?úYO˸Äú˜dçJ¢IÇ— åjÕ]û i†›ÁvbÈ:ì¸U§]é.ÿ¦ä §æjp³Å#:® ìî‰;Ö‚á׌õšÿøØÌ-mù /á‹ßïñùv€”OÜ´ÝÕœ¯ê >‰fŠ–ã¯Ò}]%dù´Yö×úä ã`06(k0EªUc°ߪ¾y›b#J_iqØ•9Ž:•á·yÚÄÙ°¦QO¬³þØ…78DŒÅÒ8€  @­Z¯Ø¬vËͨ½pI>šÇg¤­—“ð³[¾žÇëH=Í¿¿ÿ}ox{„mq€w…v†jjŠ}kyŠ‚‘••˜˜<ކG 485¥%¦B¦Oz@#&B* -Dœw¸¹$3*,µ¡O81#©±ÀƤÁ¡¶§Â$¬=˲·1Ò&/OÂÀ½NÖ-OD{ŽE L]óôõó_½pºûŒt‡èPòg¦Ÿ¾#z|\ÈRÁ‡û´SƈÅE“ ÒE¦€#DƒQ”I›}?f#Ñ ‚+nÂPèhñrÔ1–ÓfÀ¡• þuÌà h¡Â-Ÿ XäÄ6Ì%´aF‹> ‡,Õ‰sEc2•æÓYQf:‚Q#…¨„™4YP70  F H±G·n½¡…6þ;øn!½l,I (¡¥¿ /òüÇp"†m/ä¹áÄIi_®SrÊÞ4jñÔ ¶¥žĺ€ù Ú­`®EE»€-Fò m­5Õa«Z}=¢¸,e¤Nv¡ªªç¢WºZ\ާB€àýë›·f *hòá‡<»èÓ[Á 2`GÄ"3c¦r°{‡íê‡ß‰±c¾yAô‘Šdàb ¤_EÔGgfµÕ[jÑhœuÎ$ÕÜl\™þJ89lµ!p „ç‡`<"¤ádƒ;°(#îä›k×-#ˆ`â64Òh -9¬"d†˜OJà˜ƒ‹CbHÑ€QL¡Þ•váßa"љƠb\b¢Ïm-eF‚ÈEi eÿigš„…„G“Ý'ç~x@øYŸDcÍà`Øa Ou¥SuÏ¥ÅÌ6§lòYªæx,ª†c§*µ4 §c8SuªƒiWµtÕ,7TÃè5†^x•3¢öž­Â0Ê“ƒ”!E\?p–ÈÒÃÞš]Â`a¾·i!a Æ eø}–ŸDÍצ¶Ïò'-€È—Xa|þày® ”z’c)Uժϵ„CjJÕt¢#MHÞ꓉ºhYÈŠ¯ y¨Içc£Ð†µ!¾à¡(ô6ÓL±…H11åØkØÆ¤h)ÝkÛc¸Ã•í$+s VRÕ–sPôE£™áÊQî¦êÚ9-A”!„´‚,ÓÇòF¢)f€€6-ž}îi ‘Qèl5Z<¯§¯@e\Wwƒ/†k7ÎÊ'£íT<šW s8rÇ—j¿ȈӬ3Öòˆ³ECTc"S¢Ë˜/ªÿšذ¯T9óæ^¤˜ÐÐ’GîÏî ”æÎƒ*m5d‰që´žl®#uDþÜŽ{í³ûHvîŸE–ÔI÷µuI+”òÈA²&Óˆ±>0¬¶X¨¡¡ßÜËM„ÿàf¹L°˜É %©Àðá{Pþxuïø÷œ~ßNr˱*[ÙÞáúÂJ$ÊzSÂÊ'¿¤SŠ£°Úõ™ÇJœK`jf‰›í£3¡sÅP#t©LÎÂè†GºÒ èhüðÅ—âóÝÍZ%\ÐêNx;?åi/›—‰wŸ$o'¦é˜ow1L ^‹½p´¯|X‚çZ¨Üá>3=@FPÄÄ+&ź] Šî#_(°(E}+Ì¡QoÒBÆÕ*-ÉñÐ Ù¦íØ°pÚÞ˜þà„ hN \V¸042€ÎLÔ Œ©A’.‚`2!ÉHluMa % .ž9²2bšîF¢:ÓAÄijàš '§ÀÍ)h{ÕÆêgF©VÉ’)ÂC ÖÁŠP•TÅ0\>1p»f.÷Ë+~¨˜*áX‘~±”#¥ÀÁéü(MçÕæ ÇkŠLÆ!¥µãÅ:gfËÀL0 }ZµÖ™A@º“9 èIÏ¥­Ðh¶ƒ’º6YI~Nkh- ($«É{vÐ3óùÊ9FV¶^é„ËKœ“@0æÉ‚VjÜ€+¡½GJ@Š$Ug\âŽ÷Y1¤¹, /"þESF÷+©wPð/© CmË™¨¿\ƒ*ÄцQD’Ü)T ËéBJ™›Ë87§Gu9Ð?Þ ß™ÈÐI‘„êçBÆðL±¡@ÓUª‘0xùQSœNô'Â0€qWZ㵿hV²,ÜüžÉÆkð9¥…v !7~t/Þ«¢IcTÌ*¢v)b½XLŠ •±¨ÑUØ|Å”4¦âHÍðÉEée½GMÀd£ÚææaÉÀX\j²ÊéPþ±K‚äÍ8ȉxªž¢›çEèºú|" ÒHíTxÏ´Šõ…µ$A!ÙˆâFÂ]vŠàzú0²•Mo"ºP¢š$°þœ€1?égS逰”*Ö¤&âÙ² Èôg &øÞ§°!=¨Ø²ñßS¬m4Ö‹Y²ÂÙqv-£Áe;[Ï­ÉÀM;3ˆ„ v¸S• ˆá°ÈÍ0F?#4nt‡æÜOâóu'®­=ÝÄÜ?K®kÊŠxW#¿ÁuÅQ£ù1L~tLç¬âš¯ƒ‹‘>%V¾}ì÷VÔ2!lk»Õc9Ù.ŽÍ8ÉphÍ«J!ç>²ãv‡ãADÅ Ì[B…ØRøJ´ Z™¬Šáߨ}T‚oKW­=’Ï Dñœ4)¦‰¸µ«¹»pX ëNzÆŽÄîµ²²oþ€6:7t›7ÞËj›‹ÃÕgáÆ$ aafb!‹Ìô•TÖ0e,@ÊK.6±¼ÛhuXéÌ ¨†Ÿ+°àßlrlC;ꨀ ßÏ——ÐùçE&2Äœñ!gn­þ9ªÍÝÝ_,ÍP7Æí^™ýÈqaÒ­kä)#Ê=ž;¤ÅJÌlfÆM¬š×PÆ^Á\2¢#7˜±¢ûڇ˼Q,‹í •I/þËú‹rpTR³LhŠ*Ig›sÆK`¹…9d‰Š¦X¬¤ÁXJ½6¶£ýaE.’WåãÏl;ë2ñ¶G'q;9Œ êÂð¸Wƒt%½…B¬Mþ­jñþ*X©Öâ9ôÜ$-LmþNn“ß”šRÁÎ?K›Œ‚væƒ(l~x3“|}qyÊT^£/§èÇ!ò rÖ,ÚµÛí~Ÿ™%çÌ¡®åêè OÊr®óô¬W$¸¥àSÍÕžÁÏq@ݶ ©oµrê6îÚîØ%i¤ýn]‰·Š+¢µ¦{ O8ŽO˜d¡¦œ9H2ä\™rÖà0Dr…Qyñ1ÙPï÷Ë(ñWqSRù²±Hµ¿4ÆJ‡a‡Á?ó,bÄÅ} ¯ÚKX‘·$ÕΕ¯Kž úôùh NôŠ="èÛÞþÓ€+¤u*ÆBf€óVJ— Sþœæ!Ý@*w“+Ç6vÉÄSFaÛµPª1þ‡"¬%e4XõóâiÕ×S+HS%vSxÈSD`!#~.‡ß+ЀkàZPgñ§——uAQ éB (]§]DÃ'nbiU—:¦çU¸&þA€mUü§ZÈ3Ž{,¦ƒ5peÔùCr´±]Ö#dg†mI Íç4:)<’ß×ÉÔw(¨LXñ<Ãq(h§¦õ†Ÿ&Md·ƒ¨5j€7@LSHeG”7„[  ë‘"ˆñ…W8u‘æQ³×z®ç'1&€ŠMÈ:þÑ'é¶ut 4äÜTÖ{žõþ°àc7¨l‚H`¢ˆÄÀZœàji’M¾—1’’p£¥~"ç*U‘W´^J1Dò2Ñ¡pæZ@†d>x!×pz‚@Hd‰\€‰WP„F3:y’b$ä„¢ˆŠ[¨zVŠò8…E#u}ñ‰ûèhÉ5ýÖ·ò1¶Ø1Ä$Ñ#xš+Å|ÅL%bVe\ÏW#8F’SÐáÖ3f½¨Ch+ÖYǃkæ)5Õ è·ƒ¥ÅxòM@%•hŽT€ŽXg]a„GØŽêö-¼ccüXŠùxŠ£,S·'Vzöxož¨i Êô]³¢Jcs#o&/b^2ƒ+þ¡úbDISX ò} Õxede…³Éf8¥$}T¶/hÁ7Å÷/=-"~éÇc~³²dB±#á–ˆ“#ŒXcÁÓhèB¤è‰5¦h¸z«…æb-ñ˜N׉ŽF™|!†{*`ƒ™Õ†´¢ZµÒ<7’ô£‡³Ô;Ì7XÐ^.˜~)j¤ð7%5dåå*¿9#UÔ‚bt^µlòB/¹vjq~Ø4 §©Œ%M€ÕV“ñ§˜Z0xb±“^†‹&”ù$”E”G‰”Ý´ž–Iò”ý7”è¹RI…â–Èø¬0n¹l9Rø_×çCâ@˜ Gþ•pRa–ªRxȤk5`cLªÆe©8Ñ——_9TÙ—SBf†lvÚ…$øÂsž0œP3æÈ[ Žéož©{žZ¸Vóx™“ š°7oiÒuýñ“õ¢¹OLH4¤ù6´•¨ÄWÏ@!Èà%1i¨‹ˆòY‰£3>9‡åwÒÉ[—ÀÀ–ïÃPׇ¥gz+Wd¦ Tvé{'+"¦m—vð? ¥cIQ€Ið[‰‰˜\àf€sr‘¨Q¨æAŽ Z, ©ä(丨ª¨–º¢¡Ñ©•º¨¨+j–Ú¨  ¡‘© ªª¨Úª¤Jª©ª¨¬úþª²Z«à©QÆ"« «²š©ÀÊ©ªªŸZ¬Šª?©¥ª¬«*ª±Ú¬º*¬–*ñÀªºJ©›Ú= h³HˆÐT=KaMjã¤Á‡$©F¦aä"‡Ð|k¼–X÷Ká#Áp3åck‚³Dwq‘k Å‘{z$nxx{Š—è7 T(Ç((ZîG‰„:N.zÙ–&“ꨑº¬ŸºÆŠ­Áê©Ìª±ŽZª$k²$K©ä¨²ÂZ,Ū«» ³‘ŠsÃz©¦Ê«ë©%Û«½j©= ³­ª³Õ:³‹«¥:­%«±Ø­L‹³0ª$ë¨*³5³Æ¬;k¬J¬JþdÎu‘ž¦M§¦x öo¹‘àב ‡ºÙFå¹{š¨VJ4EMæKK4L˜å^óE·]6Ew"ÅE¾ÄWª‰1fgÕ‡°?¢–A`2‚©(yZc@˜³›@«,q‹BÊ «›ª3«©E© «±®Ê¬¢Z³®:ª¯ú¹ˆê©®Z©+© ¬°»«;‹²È»ÙZ»T »ÏÚ±Pë²ÀK»«»»Dë±²{©Aë±Ë;»Åj¼?k¬:k»]‹P*ö u5®TŠf¶p2Xé(¼H9—E$@>˜Ù¶íE¯+•RðE¯ù¥q’µ·ºÄ_-ÐkRÆa®<؇jp¿¢‡åe¸]©)þ4‘L@„ $aÚi¹•‹¹~ú}Q \Á|Á\¬Á|¬ÌÁŒÁ,Âü¨$|ÂÔŠÂ' Â),Â&<ÂŒÂ,œÁ+LÂ|Ã*¬Â3Â5ÌÃ>lÃ9ļÃ4ŒÂ/ÌÂIê€}h®Ú[ZG çU‚ck?ý³‚ryì§5ÓWƾÀ„RykY^„>‘e_ÊÔK`,>$¥*!¥qbDM‰hhþ;Z}I «vôgu0g[ûÀÈr¹ta¨Ið©J­<¬Ô0|È-|ÈlÂÉj‘|ÈÉjÉŽ¬Á•œÈÊ ÉÉŒÉëÈ%\Ê¢LÃ/œÂœÉŠ ÂŠ\þÊœ,ɪüÈ|¬­ ɶŒÈÜʲ¼É‹lÊ¥ÌÁ·Ìɢˡ<̳Ê•|Ì)ŒÃÁ,÷©&Ï‘}¨/ª8ØÜPƤ9 YwÏ™I¦d+„KbÌ–òûKOà=ez¦èƒe.UL*ó¼k¹ÆeÇ„1+‡v=â$(h6Æ·Œ‘{¨lj#̆OÂrÈê!Èòw±Ÿ!ÉLÊ,LÉ lÊË<éÌÂMÊ«œÊEܽÑìË |Ò¤¬Ë(=Ò!|ĺÜÒ>œÊ¼Ò¨\Ë%íÒlÑ0¼Ì Ì:­ÑEœÑ>Ó]Ô²ìÑЋêBJ$×½{óÔ|ÕÕ0MüÍgVÐüþ;Ъg–Iy/Å º”7z‹ì¬E– PÔ΂¿À¤¿y¡6ðSÚ8Õi§°Þœ®CÒl ™­'%åPŽÌ9„¼{“¼ËEüÊ)ýÊÂlØ:}ÉŽüÑ|Ó°œÒ)=©¬<ēؿœÙ/ìÒ8MÒžÑ Ã¯ÌÒ™}Ø–ìÊÀ¼Ø|Ô<ÝÙ=MÙ íÊ<Ú‘ýÌÍéB•9dˆ ɿ̠ |Ù•a+ƒ«+®éAú}îêuÛE+…Ræ Ýmº¦kZœ GÖ]öÎs+qnü(ƒhWF›9Mh“¥Ê-Ža1 ±áƒe “Ë9myÍ2]Â+-ÙLÚ Ô†Ò$]ÓþŽ=Ú›;°MÑGÍß NÔ¦,Ë Ø ÎÓ“jÙÝÈÞߘlÛ-lÙ¡íß­Ù Ù£LÒ#¾Á°}á¸<Ÿá½Â s Q:DNZdFÞ%9M—ƒBÓ¹ÕåÕwëXéŒ_ÃÖìì¾'…_ökYgÏAn7¥½›1ý¼š7.–ãͰ–l¦.t„8ÇÐõ0ßD˜¹Ö"µ´à±íÁBÌœ,̾¬ËÃÚæ}á½ÊÎüÒCŒçÔ¹ìÌß«üáz®çuþØš Ì<<ÛjŽØ7 á(>ÊŽÙ¡ Ê8Íá4MáD Òº-4ùÉJãÚ$ éxÈ(QëmWAäâi6þ—H¶ÕÍÍ3ðú·R¢Eï>~{äûqÑ-LŠÕëMDL€³}ÌùˆÖHMþL2ݨ%ÇÞ ãHãד'æ]@æ;W™Å¢è‘ÍÚÿ=ËÞà%MéÛžàœÍà”ÜÙš,Ó"ŒéäîæømÓ’¼ÃŽméßÞÓ¹¼ÑNàênâ6Íà‚>Ô…^Û£|Ë/¤CÃ{"'=Ì4ìÃ-ÅäWZ2¾cÓƒ1ãe›‰P‘ä™ÏëM^ùÌw~FOÊwáìñÚ]ËÓ•5eQ17`Ç!@5xÍsÔä¶’6‰Ù)íU[ÔŽ%:y=é,-á_Ùì>é<ðì~ô¨=Ã@à|à/]ÛJoÙþnÄ<|Òƒ®ØH]õýÁþï…~ij]îJ¯ÒߎÒÞ^örnàA}ÛN¶­ ‘MÄ`½¢YbŠ?M¢—<8=¢‚/f´Ä){t¾NL}Uir$×Û®tÊøvU¶ˆBd§ÎÏÂÇ(¸È×mFãeË(ôM-„t1¤ó<_ß(‘ïj¯é£õ¸}Ú\Oôj?Ô£¼æQÓ5­è~ிû·Ô°Íè8mØT?õÁ?ûµ¯ç¬ÛÌßË]ÿõË¯ï¨ØkŸÔpÏz‡ê§D$35×=V|v­œÇ)lc³QX‡–DWÖ/ãÔÀˆ×K+ÙϨžøeKD®rÕ¬â6Œ þ5ÀxPZ34 BÆi×¶Ý8ÄU^`žh&Àªp,φÉÝXNB!¼ïçûý†À/ˆ4&›D#Ó(LZ‰C_ÑÙ‹BÉjöZ¬rÁXômîR›UR®ôR×Îm_OK¹tsKyjA`fHpŠg~g.8 B • –—•ž›££™œ¢¤•˜š¥°²–‘9”5‘“¹" ±— ³—¢žÄÈÆ¦¬ªÊÐÅÂÆ¡²ÈÕ§µÄž±˜² Ãå™–Ôľ¶ÚÓ¸8ºœî/3-,.+ü LÑ X®Bè¸ù3Ä#.îúDA„GáFOþÂL2eáAd6Úôæ!EŒ,6$Ô$Ë -VèìáèF K@ƒÒé'DòLòè_=zlYSwV³pÇ@UKæ´ê2pK±ºâÆŠÙvH;ØØð‹ƒ»T£Ü-Ë„U]¶hÑ©:eêU¨osÏÅ6ËÔSqæ”n:‡¶ëߥsç9XÐÁ•߯dÞТ‰}3üiÆ<°sŒ‚aëíø†$w ÉÓ§•–Ѳf×lΈÜÄæE'Ö̹óKNÞjÚùÒeÑjäm;!¾££¢Š#ë2À8¼YâðjËöÌÕÖ­ÖÂ+mEÎ*Ób¦²ïÊQàØ£‹­)þKKk-ãªÚè7zŒÉEà6R¥gK*ÎØÞzYIcU€­è ,ŠÙÕTÙÔÎ=$D€>õg(Ò0Ö|” ÄÝmW¬$[17†CAco>Ù‡}øvZlÆý(›ŽÂåÈLù‡EqH'…´‘æMSâÑrmHi¤–}a"Xe™Å@] Þõ 5Ê„çØ„U‰âÕ^㜢ŠU àR& …u÷\EË9.(Ph¨ —šÕ˜óQs9ÊÊ`v]¡håT[ ᆷär–† AfXTwœ©IаªØ!ó`k°ÉÔ[GݵÅ6ät…üþ$ti¨4Ût0 ;EP2²ÒPéFlÉher¤‰clÈV E Í=yÈrŒI‹*%h€¯œc¡W^æfxm&XyëuŠ¡$`»j§U‡&,¨[rZŠ ‚$º`§»ž ^¥‘öGoƒwâ»1óð’)U#Ó!Á„wY¬0à Á8Œ`Q²ÁêVCÝ&Âäl¶É¨1â E¦I»œ¹] M¬®¯™Û쌨ma›ÕÍÁTF“4.áôG¤);¥!/½cÒMF鄺øÕ,¥R¥‰Ì£Ô¥ž¤ú·ÔÇ.L'5÷!U߬-ê“h_ˆÛb°Ä 0Ž ã|‘þ—裱HLç2o!†9Ý]1ª`SzÛ¹§x*(°¨sbש‚ƒX5‰1ÇîYŸëæ2ÚDÌѸ‡BÒéalîÝ6ÍG®|¬QƲ[úŠsNØJ»ã·¿n©špå½-˜0&I¶7cO=j`ÜX¼˜Ø!Åb~lN*!æpÕeW›æm'§òž<Õ‚ò>P²‡¬(™ˆ’˜¾¬q¨ˆiÌr²à‚c®,ãpvŠP›ö–¾ïHec LÇ&(žUh.ŠUÝ6Æ–Y2!€ÀËdÇ€̌°™¶ 4µ­&|ÅYÀW¥^1«\#qCDŽ7CêeFÎbØV²4’̤iDóÞsJ2þ‘jEílÔ!îj´œ¥É¡YDLbsÔu¾´«a POߢ² ·y_û‰‹„š˜¼QÎcw!\d`ŸÚñ©P0”M@&ê dËŠ‚¹B.€d£¢Þu§OèEN‡Ñ˜çær0zÝ­N{ÓS~£> À02ˆÂÇZÕÂVž€v~¼Àhš=$bI‡]Ó™ó¤¤-ØXoiÔ “®º„¼þ*7\ "ÖÆ¥Äb~i8–“”ˆ„xajÆyf¶xg-ž €m´ú_-îx9Må„{Û”€4Á ¶³éÉ“‡.0‰°N€’ xHÆ1.€Óg1‡@CE =aäÂ0þxš“}›UÜÂ7nN~#̃4¥b>HáJàÊ’¢à…mY-¢#ð•†iXj •vub^kÍjÞѤÈD"a¦¹)šÎ’)#à) \=ٙزÌ#rÄH½ôÝõ€‡K$Ò(-2ãÔB…žç‚—ŒUèT¡øyƒoñˆG½¼¢G²Ø34[5¢Z‰~z‚Ÿ–¨A󺹥s½T¯…®5^ó‚ È0V'ÃÔI`á*è sÏš¹.!°3©Ia 0 ÜN"Jô7»(ß-›;%WOwøÓŸX7£%ØÀÕLs%o$CdæQo¬³I“6Ý{^¶t‰ÅÓþï"Ò›­²À™Ò3ÊO­—ºc_)Å(õPÐ(Ã^¼ú0½‰²m»Ï|þT¨Yصç5`]3(jPèáæ(n06*åT46Q6Nð)‘ÛÆxº —FT XYÀU‰j¶¤(-ãVm¸CbE“¥» êø˜Šáã¾öi<#—p‘ká K³·`,Vš5ãÕ¸I|*i¬Y‡™)šG$Ò…‡å me* CE‰ùÀy«'3w1û¥i¢E[30¸pÒ w¥«AËØfy®€`ã¸á^öýÓÉ$lŸûƒ•ñX¬Qèd,L'·€°™$™vPõ9þˆ•Žgµª[ý¬›&n¦UŸS© [3äåÎ|ÛR¨qw8}&ón¸ÛkQÏŠ3êaަÖÛoMHÕ9Ö ÅåÃiY¸ Ì•L=Ûˆ ÎIpPðtl:« ù…n@lçéŽR”$D€â«\íjÐ LÎË`|/TæKRcÍßy*ÚØtH²öý”võ?)ß@²é¸Ë°µÃ.}¸Œ¤ne„ÿ×`â`Z':„nWLÌ^òÖÑZdj|f°EÍÑJÞ׸àTápÄóÚ}˜$×B Iˆ^ÖÖ`ŠÃœê.K\ £¬‹Ñ.IV°¬öÝ~Çà"‹{É»½¦\‰±¬ þ¤ó5`y§]ÀÖׯÕn +ž Á*”ˆ='­{=àznN† ŒÔA)ʳԺ Î*ŸA Ç›…ƒfw¸Ó }åëhO{¼Ïζ—Ôíj»«Ê×Y„äÚíÙOƒ{)½çsEvºÝìJyˆ=«ó6c>êÈDb¹eÖ>\yç{§èÓÙuMص?øïÀ)ïK³†ÜÔwrë =ú³»7(•·ïÒ,•°È å>Ä™´Ï½îwÏûÞ«ȱwÜ(Itª{cvd'ß„—s<¥[}[ ÝÇÎf ÙäµË«^£/ûEºâôÉH07ò1î›ä~ÙXVR$Íþ(‡zEÙ~MPÓ+×Uoß»ÐææW8€X€x€˜€ ¸€ Ø€ø€Ì%aIÜ/wa_òÒ_rFQ l|ÑHÚ ¬#dþ£u ó *× žR ×X¾ƒû’/#Èkà f‡åA‚‚'©`XåÆ V*é´ó î˜5{þG'XF4P…R8…TX…Vx…|u‡„xq!h‚tm’|‡qQ]ømQv?^èXf¥GõT}Ö7J £IØå.Øå>p„Až‚Ÿ‚!kµmPöwUgÒ•1wÆdm ùWW濾KøJxs~BoX¸'Xx‰˜x…–þ˜‰œH±¦u×g! µ–F¶”Ôt ÓƒPWd¤X*©Gl‘^)5aGûÒ¨¨è´Šr ÄX6ˆkçç1¯g«§Fìó0ù¥gfu*EH ”ág™õˆ2`{„FôT„Ý(‹ÐßXâŽæH3è8阎õPŽà8Žç˜å8AîÈŽbGïû¸öhŽñÈŽÝ(r-R&g9mÁ‡œ$]ËW ¥DˆÜ•#´X†7€U¶n_ˆ_ÐWz‚wH–|œrV{WV¤xNDF]Éxd3óÓ(U1f ‹ ÆŽˆa·g؉(è“@”¸‰þBÙ‰Ÿhe%×èaHvŠìsIŸbŠä&så.|ãzÀ`*ƒV7“¤÷dÇh)krzÛõ ´‘M6`ßq]z€8’SéIE/ %ã%pîwØÚˆ”<9 ø(o¸gDI˜ýˆ˜Š ˜‰É˜V¦ŽÉ˜Ox>ä™’i™|—‰Zø“ ²–h°¨>%y ¤y1¥˜aøFE€ouxTVzKFJP†Ga ƒµ(^ù9ŸÐ R©ƒU™n¡YNÄÈ 0k“~—°ˆöP8Ù—²W{b‰DI‰“X¿ E9€ÕÓ)kÜNÝ)‘)€ßø€ÿdxxþxè#'åf|*Ø7#Ù‘Éxƒrä–'ó…6X‚¹p [9~Ø–Ÿ£)~7Vˆ3uíñ%Q£mžÂ‹Q9ÊHŸ²“{“w5g˜’yâuÐÉ„þ阧ô„˜¹…Ö©™‹Ù˜,ê„'Š‘æyJ=9™2 ›2º¢™9‰›)aY;óBN/ˆf]( EdòPÚ¦¸‹øš6:*7ø)Ϧ7o£—QÑ^d¹~uÁ`'³ Õ…Ê_pæ‹ÄÉ–Š ’"„&žÕÈUý¢'‰kêGCY§äÙ“Û9…9J™ÞÉ?݉)Ú§ ø§åy§ð‰6|Í7@ý|ö¢z­ÈrH§‹ðþ2 #JOQ¼ù¤ðs…Ø G·Wg†dϦ’~EQZ)¢¨d 3“dø&:ˆï”`uh+[i79R9ùˆ Ž6*¬ÃÊ00Š£/ª¬,Z˜å™£:*a|ª¢ÇV˜ˆi™3Z£K"D¤r躚ñà¥?8–òPe¸FMjsO8* ZêÕUáVPcfp“e‹‚^áæ>ÙˆdõA¸¨ƒjEd|CŒ–î ÙéV ""| §&°“wª€ã9§tz±y…{ZwÅÊ“xê±Ð ²ƒJ€!˘íù“à&šf®#³(ÊtîA z˜œæaXYN€jQ~ñHÎvPþ<ÛOÛ§Hí¥8µ}tª…÷•ŸÙ•&÷Xkô‡™ã7¢ôa! û?‚9v!eˆ±*ð—w¹£Óh¶ X£ÆÚ¢ËÚ¶lkÒʱ::¬…J%j­ØÚÉ ·=ê!"¡( ` *j‡ˆ¨šÀ¦ksxQu³ˆU†Žw¥y‰Ô^eFP ð}ÚI–_^6¹‚d~ŸD¥éJ¤ÙµXÇ8Q¢ç’â„ÇÉj!šJH({b+¢v:²x˜”X²[€•é™ ‹·+·ôV²Á[‰ C±F¯kzt†ŒCØ›¦¡…U]ÕKzOÇ™:vrJɆ9Ëv&EËW~e^J±y’‡þ½›;/ÿÄ@É×–p™/Øæw㊸ýbdΊye$Кé·½ ¢bK¶\‹—‰Íz¶î¹·o[¶ÌJ˜¿«™Õê™Çêžq›­ië¶ë¨¶5J =Z¶j‘8Hæ/z× @ X‚uP):€;]Øë¿ÒI‹ûø½ÊP@pPͦ¯©êeúJ~3t¥I9\1ƒk]·6 bùA.ç¥.™%óºß• Àœ²û:¿º„K¼ X±É»‰¼Û»$û˜v­pë±K¬Ã›‰Ð*­Ë›µr`ßZŠxw?@œ¨9Â’¥¤7û 9›µ\&¾ƒôe $~Æ fs%y¤ eÄ‘Z¤¨¹ÂÀþ`örøkXË)*S¬U\hJz[{ÅþGÀ@rYI0|­íÈÀkº˜\üÀ žLÁJ­ÿ£Y%Ë,‹™¹±°­î ng5¤dXÌõû•³Šº³É‡òøKsë°½ß ‡2mÓ–ªÙ\ÈÒ¦s¤Úk©úÃ^µ¿¼Ö"“rqAƒfI »Rü¿Ð¿ÿ£©T  ±½`+ù`hýûÏþÌÏ#5"ý #2RýÏ ÝÏ ÝÍZ=R# Ñ]Ð-ѽРíÐMíÐ^#ÒÍhdÇÐJ0qàƒÑZÒ-Ò*+­K1ÝÑíÒþ2ÍÑ%í5$}Ò4}Ò¶NÆú·úNš„~•Ôο¨V'‡’ÜÄÓ0¢[冡Q͉¬Pæ'y§àÕt¾âg(«€Íê•e9·Ÿöƒ¸*—w<ºòÊšò“³ °Ík«hÜ2{)ÊØh&ØØ‚MØ@ØØ‡}ˆ=Ø(`‹ÙØŽÝØŠÙŠ]ÙÝØ˜ÙŽÍØ— ÚŸÍØ“-Ùƒ-ØýÙ“¨-Ú¨]ڠذ­Ú©]Ù«mÙ…½ÙšMÚ¶}Ú¾mÚ»ýÚÛÃíÛ10ÙG)NéDÇ Ú´‡+VDL—Õ9<øÌºƒlˆ›:Ž„}…ò½@Gte ßþHe¾]yäW¾búÂòjÉ uŒÔ5³.š@¨záPhî ÏÜúµÏY»à>àž"©žc7ˆaš¤b(µðÛA’‹ô ‘gÕb‘`ÙwUuS_„DÖ  ´çÍÍ©Še.Î O,زÄ'¦‡UµÃˆ†5k'õG2¸ÀPîµ¥Œ[à>þã@佇¨ÕÚ¼ï ƒ“F¬(ºw¤RÌ×’À¹Œƒ+ Ò|‘é˜×JÎtXÂo,ƒãDX.³p¶>_¥1':£¹IÑ‘– 0|¤ÝÀo*äv~çxžç1Ó·Þ Ou”–wØÂÙ¦¥I–ÄåªM9÷äÇÝë6_þ®rJ¶šˆ%ÄÐØmú¥ ä¨céUç\®qyˆöS_®×9Ú2³»JzÞê®þê°Þ`¶NÍ´ð‘]Yú†;dðù®#3.š¢ `³X}¨œàžÊÖ…±¤ü2Ê ˆ‚µŒPÍmµêÂF<›-9u÷ýŒü*Yé¬÷\o~ëæ~îè¾{|ŽÜÁ¨¤¢åët,‹¿¾ÞŒ‚n›åÅWÖèv·>h¨ì ÃÄ4í’œÌSmëjž¡×5–ž×‡êô¨YG ·8gÓUYd)«Þãé¾ñßñiGäyæ–"S?Àˆrìd†É¾ƒFÆwD(ÆE‹4šáÑGGÞìþUiVõ#½a%©f%‚¼>¦Og’ÎÜAøm¢×$š*ÖXîõR?õüpàXvT´lX½¦á•õw.*jZ‹TFçPöhŸöè~”‚¹¿`üör» ‰—Æp_÷vÏźüG"Àãg¯ö~ÿ÷xÎçÇk÷½‹à[Õ½_LøŠï“xËõ0îÿ ø’?ùæ~²cžœÁfì¬]l±TfìelË‹¯ÆP8ž]KË_Œ÷|- ¬Nù®ÿúOwcܵÇ~ú éòøqž‰‚¼¯µ¬Å¿Üû¹_üÄò¶üÆÊËßûÎý¹œ¢¹¶¼àß¾ ûÚ¿ýò„š÷¢þþZŒ±äOýž¿»\ø›?ú˜¿€¿‹÷«ê¡Ìýô_ÿpjõ(šÁ&¼ÃŸ·4Z·0zºíp°7¬2Úˆ«oH‰™fMߥjiZ–nõƒ× åxæé…^:¡d^q{½È™wî½)Ì=À¹Nv8²f–]çHƒ‚¦ƒªéȘgâˆÉ™DŒ¨ç¨þ¤–šS|%ÚÀ8d¨•XŠd«DnY)Yª˜«›0©(3°\j©e–g¨˜i2gù1iê³Ð:)e°*Pí+×îXǵ´$K§ rôW°ºÉ,yn^ l˜j úöa* ¼kn¥á¹€(¢³Ñöë¯t|Š;@·Öµ ¬0åqí?šÞ¨Ø®ºò8XßÚ¦™çèh¥õÊJÛÆ4̉ä5úýkòÉÿ¡*àÂŒ³*­¯ò‚Ì1¯rÁ5ÃÐ*ÍÞê0¥ÛK1¼g|`º¸žµ®­F î±=(—X¨ü¢|«UÖHd …__ÁªÕb¤¸Ø8³•Á@«7ÓÊvþÌ/á6Ì0Ã]7¬4—ñÑ|Wõtª"©ú®Ÿ½Š©½ØN¨º/!½gB-I6]^oÝõ×YW®uåNhýØ`OÞÅ´¾¸,AµsEw5o“±öê¬ÎºÁ1÷¬‡ôÇh¡VýX´ß——™y|Ë&ìÅ}†÷ÖÔ͉ŽçS„ÆdÕ¡oNQÒ;?ºÊåƒ:«ÏîrÛ4 wÁ±»~þéÕüŠxU K VÐÖ5î’îg…üÄŽ[ütʳ8Q2í]m ™Ûö’°@Ëu t¡c`õˆ=r.‚Õ;B (Á24%\9«™ÌÚ&>š½­Ü2˜ìÐ7ºA£XDkZáæ!„þ„ň;éŸÿÔ‚ö¬L‚ò ²`´¬Èƒ™øÀË91¬ /g†*j°‰Môà'è9ç,hHݾ7†/}/Kß쀳ÛÍËX¬â*&Äù-ïùH ¸Üýp^;üc²/$>D¤˜9-R‚ S §×À)2QІD Ê,¡¾4’Ð;¡'áöIô±/n§la5 »@ Ì>¾Òá Ô%|å04¼£ ³ãž«Hèohªc€bÄ.fòJLä™ 9EZÒYWƒ&—™EjZò˜’d…Ãð–‰;£å&@ôÝm•¤ìáIÞ—4þ¾PoîëXo%–=Nb`œ%|4Œå›I¦$¥ÉÌ'z “‘´\$ZÉ-^pƒ†$-ÀWÓ…P„«|Ý C‰ÎœU´}ëSSÃúR¥L1ŠŸ¿#S‡ì·Cv „’êK¦tèË @Ždƨ6ÉH b’ l$'8ÐG‚L$D9h6¶ìŸè€Lñ¹ˆBcÚ •¼Þ¬Ep>$Åîy/¥xZÒܘ'*ºõ­bÛ¤ôaWúÀWîy˜ÓžôpyÚß÷ÙÜê‡ç½ÜÉNqÏw]ä„¿»ç_n|¸ÛýõþïºÎ·Ã²ô¼%^Hó.Ï}=Ý®¿ýáé¾ò™ëÝïv/?˯pñ;=ãî¿ëÇ~õÀ ÞêÏ_ýÄ ®~ºßÿó§~¦v¾‡u'€sGxËçt%Gzª‡vŸ—{ 7} Ð…Nyï""CyÝ÷y’y°y×åÇ|[w€*Ø€ç}¬gxy—€(|·· KÇz]'|Z—ƒ˜x x‚äÇ€¨·÷W„èWW{~|G(ƒ6¨rhxÂ×zE„7}ðAjôÀŸb]G‚bH"¦†. ¡x1(qQXvnXvO(qJèq7¸qX‡Çǃ —zÈ7pþ(·²çƒ§öW{%—|§7zú÷†œW‚;hw)G„×P€l¨{mh€øtX\U'¦V@P[q…LÄLcÓP¦6£ÈS¥èLcˆMVàö{+ȃÀdžkX‹Æ÷†6ˆ‚wȃµHw{¸ƒ…èj8„q—„Œè€»Ø€Àø‹ã„kØtY×ì'‰×xˆO'Ó¸qg—e‡…“Q-uÐ…•¡d'ÓñD‹t*ÕÔŽŠd=X€TÖ䊯˜IE‡P–Œ«×æç†\„º§~®G€¸È€O‰Ýø2× wvy‡yq·è‹¾È‹¹8„@|Ë(vŧŒ5G… …"Éþo›xÕG ø?G5bQ=•Š2y“cMKUP÷‹Cf³è‘"‰‚qX…ÐÇ‹¦—‹Eù„!iƒq(…57„÷ŒüW’ I|(w µ€'™”nXqɈ!™’i”N¹‘n(Ž$„55p}Qñ#ZLVDM”TEå——”A•äH?õ—xRy ˜k°–JI–ÞØpI¹” Ø~”({v™f‰Œ׌Áè€S z2—–Çב'ɈGˆœ¹–Dˆ1‡½øv˜šìÇšK—’€55À°V“5MXÔ—IY¤9>µEXÔŠ TEK´—Åþ csH=9“?Yû˜vÌȈᧂE zßé‘E¹ˆN{aY–ޏƒƒwè§š°¹‹Î‡ž9‘–ãÉ™Ïh™þgLi’Ê(Ÿ\Y…±iŒn —ác>>aŽ@)@Å”—δA͹L¤øH¤(T¹œ%= ÔœÐÓ$ÓY§âA7ö!†–þùš8—šÛ8Ÿw·{o÷™Nøwe ™š·h–©Þ‰{J逯‡žÚø˜šišP‰U)„’9h¸Y>ft†½Š¿¹Ž5yM­xI„©T<)Pú Ïù¥‹ÄŠD¢˜#¢8A]AêIg‘+¸¦uWƒt؄ǔ…7¤‰™ ‘þT¹¿8zô™ƒIzŒ1š‡ð‡‰ËÇ8rÆø|÷™¦±Çqn –‹g oÉÃtI _Ø ªð Ä“=EEJÕLÏTªDÕ¥ŒôœÄY6Š"dú9 – àöžG¹ŸB˜q› z-8Œµù*wb)ƒjúÄX£mÊy¦‡«Äh’{˜~„Љ´w¸J€® h0H„…Gx­MZ>ÍPCÊòXœ Ž£Tɹœaê—j˜€©Eîš@Ê=T;y"ŠùRr´ê£ ‰{KÈžý©£+˜r“¸¦üyƒ²—¬!ÇtÊÚv°I¬´wr·€¿~…šŒJšŸq7‡Äw’ü'ˆ'Z>ªþžÖú€TW Te º ÂØ jøØ¡¯j*fSà––”Y‡؃EÚw6š«³G›@úyIiÀ(ب‹¥ ëY‚ y¬8¸Î(”h÷”Œ °»£?x±©ûÖ­eQ,¹EÄ_3 -øvÙÉ1ˆ™H„ÒH‹ñ×™RÛu(·ù§z:¤Ø¢˜‰Ñ˜Ÿn*¬YÛ·†›¬–(µù‡k´} Ž¢¹°?8”ŠºiF×W ŸÖ0³÷š¶dˆ*l1«pš¢•ùu Y¬†h›„û«éYw|[¸FKu7Ci›4xtJsÂ(»;[‡F«ŽÉžy»±ˆ»ˆª‡ƒˆþv›·´·‰–ö]5r<“÷c¢›½”s"Ѷ깕rsi‡Ûj›«+¼+:¹Ö½së™/ „ˆ—“i¸fW§¶*£zú±Z‹¶;ƒâ ˆ”ˆs²›s”z¹nÒn’ñ’Û§½ \Œù8%:h¨{¸Œš£ ž÷{¢*W•…K²#;‰Èë£xÚš*|Ï÷¦ü†»Â¹¼8·)è°ì»Nø¸ 9{`ë?='"YäÚÀBLU ›`iWð–£ Ä[ ÄL¼ÄZðÄN ÅAÅMBgà>—’þtCüÅñÀÐn`ìa/[nx&g]aÃ4Œºe<Ç_‹þ÷4©tœ]¬¥ËÇœÈÑüS$–ºÖ> ®‘EÈzy®¬8Iì:œtmE-˜‡™AVŠDb¬ÖcñÕ#¦KæË3¡U÷_ Ôt1G³Ì[²¼c&›Š½tœ¡¥¨Ð{é×ïjPÇùLçêPP´¡g{6’ØÊ%]NE_K XÞ…Ë vÎ3²Ø-5D<¶ÛO¡Õùt,*`ɼٞ¢ïˆ¥xþ-Úʩ܅¹ªõª=b|U\½c ¦!‹Ý.ðÕ~e`ˆ|ZK=Û;7Ù‹Ö±Ñ ¨¼ÎsÌ¥§ŠTR=ªÌ-œðÚPÎÙŽÏ-:YíÖÊUØóô]Í%v¤ ¸Ô†1ã¥ØñÜÖ£…a­åƱ֣ÕÔÃÞžÚÜ£}ªÅIÐß:I×€ º¬Ñ¡ÕY†óÛ –c?4< nÛ¯mÝgÝR¶\SfÍØó|\Þq½q½ÙŸ몛ÉMz=P†YÚ/äÍTL!lÏiÚhkŒd©¶±¶«h€ÆgSn±ª;húf±ŠÆdYnfÖJu³ªoI†å\Îd%»lÞ¶åM&­¶yV~³ý~þ·V>Áeæƒç‡n}ÖäZ¾çcþæƒH‘¸ÖçP~åp~åvháÆçc¶m^&Ü ÜΔ~= š†H\iR€Äš~iŸ¾éŸꞎé™6ê¥>ꦮê™ê®îê™®i±¾i«¾±ë¤^ê­.ê·^묮·.ê žêªþê²~êÃ^ì­êÉnì¸þ»쿎êÈ.츎iÍîéÚ~êÛžíÇÎ@!È]é¬,‚ù|îèžîê¾î¢ á“Nîð¢Úd†ôˆØƒ½8û@Ûš¥b¾¡ÔìÎÖÖÑ8ÄïýÎà†€Žœï /ïä`ï?à|K"$CMï%1ñ?þ ԼÌ6=.ä¬ñOñGá,ñŽÇÍÙLO¯Íú†ãÞðylîÌlðúGúðöÌâñCð=ËæÔ4ôâ-ÿ>Ñ3öïÎ]ò.‘ï^-Ë] O=Ñ"MõÀõÐïØw0?²7…—Gö_tà¯A>ýÝ6}`¯1Ø=¢ÊàG¢Ý mGF ÑÄÖ Þß–¿O(¾øûíøÄåJóU!»qÞfüñ>-å¢Ï’&ïE‘¯ÖXÓOÝwÎ=ýùƒýƲû¹-Võ@[Sêý”núŒÅ\C?Þ0s«ÎMAŸtÑâÍgç[åEލ©•Z»ªæ˜¥ð{ÝìGÆø½‡›@Q( @`Él:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xLnÎç@æ—Ûµm¿™O·Æ¼kí’¾·ÏÙ.<€ w:2†@64t04o…Œ‚…5u FFIežŸ ¡¢£¤¥¦§\hi•Šˆu¯”‡k"‹|,‡{¬|Ž»º¾®“¿þ¸=”Âlů¶Ð³@BÍÕ˜¨ÚÛÜÝÞßàܪJµÒ}½~ürƉ•·ÉÂèÁÁçõω9²ƒýî*èíËwç_;Z’ÙÔ)œÃ‡#Jœjœ~,Ѩ1£GŽ9‚ù±ä“'=ªiråG”Ñ<ŒD²æÌŽ,G†¤I’åËœ<[ꢀ²hЛFS"Õi¨M‘33¦›`MÂÑ:‹–ÜÈ5©R¨^Ãò9ÓD°)¡È¶­Û·pÅ©RÓ¢c\)hÙ½ …@Þ©³øâ}'Aðà˜l"ÐаãÇ#C´èƒÁ’v˜3ÿ:óÍ CoðÛìË¢Sk&-þ]Õ°ù-› íYµ’sëÞÍ› e¨².¼`Ýãsfÿú\¹UæâÎ÷@2ÐêØ‘}àW@¾ןkÇ„sÄg®í;½û÷¿i…‡Þ¼¾4ÓÄÇk2 PÄeúÇ" =j·Ç=ø à×_'¸öH 9÷IøŠ¶¹QÕtE!…¹Èd!‚­Q—5Ö ‘Í{,¶è¢`¿UÖ!yÎ)#ˆ‚ öÒa46È#¥áÁ=¦ããv aÀwá”]‘øuHš¨÷â•Xfée94™Ÿ}‰€i‰( ̱ @ F‡Ž9®P•F€ýaö± 6sÊcÕŒ„þ©ß.Äâ‰~ w„_iéè£z#ù™‡˜‚úiäØð¸‘šNh'@—.3Â&r~ॠðXr£«Ö!,sÌ·©š·>¹L%ÓýbZ+F*ì°Ä^Ÿ«>SêýèNFàêÇŽèÙê¦2,Ëdè x•¾©?£æ:\Jš¨b¾ÚïÞf$•Õ,l±øæ[ì¤ëú%qh˜6ÄC$H æÑŠæu´ä0<ð®O"t¨rÓéˆ*¹à9nsš°ÇŸNk_&>LüFȃÈf -¿^s¯¾4×Œå± ›»,Ä œÊ °\gvêÉa¸Ù tÏLþ3°´@²QÚ†ÍW™ÏA³|gÇ5¼‹ŠBzæovKmƒ×ßÑØ ‰Uc¥ÍpÇ ß\1Œ­0 XC€öÄ>[¬H ãGšq”àõ!|‹[=`]Áªzs€v9ÏÆ´t”Ñ®S˜2 MÊ'€®x F¤`V^*®'÷ê¬CÆe€^úýÙ?K¼€ÖíÒñ/»öÚ:—£,1ÖsÜs&Äÿ§¦Æ1p˜JóÌ4ÏzK_|òÏ'ƒ ² `µ>”]û <„*å0R4Ô°X£­Ç/¿[ür~uóõùòd;O½ñO¸º×3‹™/|àYߨ/`UîÉÊ«´ýþñÍ|>³àa.u) Y4Zù²v<F/|—ƒWàp`„!¤7ó‹¡ #‚³تe’ ÝCfw­ï„³Vð˜FÄë•Ј™Y”ÿæ@§ÐîLàðHhÄ’/bŒ8Àö–hš&2/@¸àí¼†A)ú㻋RmÀ!ÌðpìÆ¤g7fpVœÜâ´Îêh„’Ü8"§´ E.e<㙀%±Â2¿#XÆ$HIJfŒ(,b":H˜ØùâasÚϘ¿cæ9ÕÀŠ $ÕÅñ•°üD 7W§l½ wÅ#¢èl$nyL€˜Â$ÞŠxÁqŒ4¨Rä5fþMz{ Z:@IDY¨¨?ÖøÞ“Äw<ôÝì~¨Æ³Ë•±L§:»P?H~ÑG—Ìd)s©ª£^î‚$3a€Ká ³ŸžkÍ%/ žå#GyGI†ñH :åï$ñM=ï’‡¼¤3«Sº ‡•H@ç:GJÒ)¼.M2Ó?’WHi>  Hr@§ˆ¬HšLš·Ø %ÿ©)ºtžX¬f.Q&0©Úl7+ÉP”¢ §b–º’zõ«P¨ßæxÙœPÒ³i ­eL¹[«E4\CÉhÁ#B}RÓ‹M = –Q”˜¤'Ä4¨Éóhþž4‡è’Z<§-ô„Ž=å:ºƒ¶q‚1"«fÕYCwÚ¢4})ñi=$«½s+¸öº~‚ó˜×ëÛYÓvYEi€e`7‹È xÓ±£5-*) 5/* Œ´P™7uÛôÉã° Ê @]ømöº±ëPõ’;ÙqŽb`Œ nñ=3 -V±'[GöÖ¶æ\6úc+¹ÈiŽMλï$RyjH»N'Î&€[ô6˧d]baõ)÷zpM¬’l¶çÜÇ#¦°2ïÿlL•6\î_ƒ`¯ A—JAý\€WG±R+˜ß¥\-M¸%ÙÓUÌë?ì ¬j‚½þ5ˆ zÝEäw*ˆ 7Jiµº›²Ô@€¸“u!YLež”Ž棶¾õH¶Q î+Œƒwü±KX¦kS¯Æ2Å#s-l‹Üb}ÂLˆ±QT…!4œU‚é|yôZÌ̪Lè¸i× ¹º—÷X¸­ ‡øŒŽ™èAe]¸Ué‰b':cqñø‹”àä•\ä²Y3lô*¥,³ÌúÕøð2iæ<‘ ™üisIðåBAÏÈ~Zž¡(Åà6ëŠÒç Á5‘í¨&û½¼2#ìE½ ÖØÖסŒ_ ¤–y|¶­L7„ç[ޱàžüè¡D2D“lt·Ý'ý"ÚÒÜþ=n—9˜Ú'Kù6ƒÎ¶À!%ë¡Yq²#k/”£è;cè¶>”ô!ïÕÑØHÂ4£µåê°Ë/s ÜÜ_Gr Ћ²îÀWž¥mŸ²×W«2¯¿…í|Ÿž÷]µLa½þÍ`B%²€š;ZêCáëÎøŸ“¤ê𲺫&M˧¾›+‹¹Ä©ê´³@ã>þc×÷¶­ï7•//ÊÌŽùè:­ÚAt˜Ù³>o5—Eu_ƒÎ€[åµ¥ð0ªûÝ1Ú]‚T¤¤Â^E„_âùÄøuKI@šŽä#φ,(Íbä!/yÃOÇó¤ÙPßùÉ›žòÛ#=ÚXéO ^ñŸ§þü‚>?yØW¾ñªO}çA¿øîY#œ÷|äCz rþð…ß}ï¡â¯Ï§;§”4üýúo)8ðIOüÁëž4ܺüåUß}ñ›ŸQÆG=™&þÏ{ßüàDâÓ{ðŸÿü*r¿è ?gJ@IÛóxû×F´—xá‡~»Wx h/î—x X{pIûGxØH¸yHxñ7~ßgyÉG~¯ ¥ ÓájNP}&ˆ}*÷~Ý7| ˆx¡ƒ ˜{«G±·€…?C2ƒ´÷‚µ÷~‰÷xŇz²7|Íw{¬¡ãg/·×|1Ø€9hÄ·zîW…W¸z—·h  xxƒº·þx4{Ê'zH8€?…óGlÄJ*ÇwK u+8‡[B7}@gFvèLJ5f¼3oïsvjE÷H#xlÑ^ §‡gò@ ÒEÆAOCX°rH‡š¸ .†-ñZâ¦fw3·hyXˆåòfÕ"m DrÒr-êÖo2&-¥¶v‹øí{)Vf°‹›ø‹c`uâSK¦vˆ^wt\ÖCÅØcƈ8Œ¶Xiª¨Šob¼Fo"Ø…–ø™ PŽâ8ŽäXŽæxŽØÑ‰žø%ugjr¤WîHwΈC°t¨¸Hsg)ûjA‡gm÷‰÷Ô ð¹¸w`ðeþ&Ò ùÿ éI‘ ‘Y‘i‘¹‘©‘ ™\vЇˆŽe†9·Ž®è$ûÆŒäQ(Éhª!_øÆKç&(¶羸F’‘@Ù‘!)”Aù‘E9”FI”J™”L‰”N)Ú…vZ7wïøˆ“r¿„l÷U•A÷s´r¾¶g‚8•¥x‡5×•Ž˜þ…!!U=‰Ïh’r9—tY—vY$5–ŽXް˜o§(0I#òˆø(tÏx“.™oí’nG‹&“­& éߊÊd™Å%T˜)PšÙ™—é™™ù™¢š¤É™£išsÔv3rÃV âökGcÏVlþ©eT nby7ÐÆc¬)v{Y•4%8p°s?ùsÛ™£0™>™’ͨˆÍY‹úzÙzÔIoÕs ¦˜ž²Ä¸'5‰%iŽx‡‡q K–tE’˜1¶oáÙ„8˜,‰a,ycÓ]?ÖJ¦ œpÉd£Hœþ meùŸý  êcz š ª ²¹ >Æ/zÐ'®’Eke1²XŠæŠnà›wVt~œõhOa9›\ôYr]éaRY–< ¿poúYc—òùœíy{¹£6ʞ܉£Ò©£=ú£Î¹M#Y¤ñµtØŸ&Ê—ËÈ¡°¡ž'ˆÊE  ¨vf\‡Œ5€þrœ£b0£RF–fZ¦hŠ–Ú lmÊ›o*b ê¦t §çÐNwóm©ob¹un¢ ÇB‚Ÿ½é§dé’"R zk‡º›ú(o‹Š¢€@ ¶ÑF`Œ`Z.¶˜˜œjdª‡ŸZ¥ž:ª Jª¢Zª¨zªªšŒº2K$cˆyÊ¥ë9ŠL*)j«Vú/9êd²º¹ê‡;ú˜(ó>—êo)ƒ™¬Œ¸¬a׬=¤¬ÎŠ›ÑŠsÌú¬Õ*­Ö:­ð`¯×{6€>è>…³w|Á‡z@X~dXyH†èg„µÇ®ZÈ{Xzòº®î*†íj„EØHÇ×xû°`(¯°‡…þ»®æª…È|§wz{¯(†ø:°Ç÷o@U¬e ¦ÇvCŠÛ± +“!˱"[²${²³ˆ²Xº²´Ê²xJ0³2;³4[³6{³8›³:»³<Û³>û³@´B;´Ô”imY‡Tp¢\¸´g9«ù´NµL«´M;µŒJµX{µZ+«ëfL$òµñ@á–¨¡¶f{›²¨… j{›š¶Z¶­è¶â·r+·m»/´“räjr:iÚZ1Ø:¸Ô¸õø±&›²Šë²×Z¸Ùú¸ÒŠBf%o¦)¶qÛ¶þS¢w›·k;œ;·öh››››Ÿû¨£;º¥{:‰±’)RõÙ¸þ[C¸±ë¸²+¸´{»³›»¶«»‡;²‹Û²¡V:hÑ SS ÈK¼aVÜS¼ä¼Aå¼ÆÛ¼ª[©Éû¼×{½Åk¼Ù˽Ó[½æ¾Íë½È[½È{½ÆK¾Ae¼æD¼×k¾ßK½ë‹¾ò¾Í‹¼œA¾âû¼à‹¾ü{¿í›¼Ò{¾ä«¼Ôë¿\ š@¿ðKôë¿â› À\¿• ¿¡ÇºÉéJpG«¡ÊªPkµ\kª ,µU{ÂY;©ZÂ",Hh@Rã…0,hœ@1L›Ã2,Ã9<Ã7¼Ã¬Ä><ÃC ÄŠ§ÃE<Ä8,ÄFœÄ<|Ä?LÄM<ÅR\N RTœþÅX|ÅHüÄNL]õRWÅ7 uqñº8§vºÆ§ºY§m ÇoÌÆsÇtìŠwì•$0ZÌÄÓÕUÜÇ0,È„<Ɔ\Ȉ¬Ä‰¼È‡ÜÈŒüÈŽÉ)Æa ÉNø† N¡-ÁÉYÁŸÌÜ]!ö桬£,Ê©L«¼£Œ¤\QÊ©LË£lËŸŒË¤lÊŠØ üÊ81ËãþÚyùGÌØnÇL]@å¯ËÌ ;zÑL]ù×FÉ,yöÚx¥—ÍØHÓ,xÍÓÕÌËG€Å¼|ÄüÌÏLÍÑ\ÍÞ¬ÎÓÌÍë,Ïñ Ï×LÏ÷ìÎàlÎâ,ÎÌl¯þlcÉþ<Ïö¼Íf 6ÀyQ¢ÖM÷Š }¹+°aª ÕuÑÑ ÕÕ ÍÒ"ÑÒ#ÍÑ#ýÑ)½Ò+]Ò,Ò)íÒÔ%Ó-mÒ'mÓ"MÓ1ÓÕ¥Ó,=Ó<­Ñ>-ÔAMÒE}Ñ.U/}ÔHY|¡ ­pí¡i›æÐí KD›ÕZ½Õ\ÝÕ^ýÕ`Öb³O Üv—¬€1 7‚A„Ö˜áuýqÖnÍAp `׌zÝ:: MGù×KÙìE æÖ”€mØ8"QþrØO©”¢öH‹­”y½×” 7ýÃiˆÙ I+yuÍØŒ½B3wC­Ù¹„êEÚG9Ùþ•ÝÚùÎ6×iý¦OqéÖ 6 'ÛÑs>¬*ÀÚ®=ÜÂ"‰¨”»™-#”¥9m½D¯øÙŽ€œkúØ%6å]ôÑŽEIQUÙ=œÐ ÜÄ]ÞZb&¤¶ê£ð|Zyủª¿G¤¹=Æõ—¤ª3¦Eõé£ämÞî"}BzܨîÑ’½cÛüi²ëဠ÷ÈŽoŽ_!§D¶)^*#à>âíáß5ªÄ8¤IRW[ØÇ«rª«î’W»Ùã/ž¥Óekv’!â$äºQ¤mǾ%[8uä+ŠiEóG®©Ýô0ŒõD}™þŠåb"ò(dãs‹$ySzÝ€ÆÙ³Xä­S $ähÎØb7ÞåÂ’KJpNm0ØZI-×ÒLBX-59ßR‚`%s§²0c©q?®'ÂV¸N“T5F@žæþÔÒX»kV–¾Çð˜éOfr[öÜÁMb‰Óè×Èv‡Âé»b_ŽþæV~.³jZPÃgéYŽã[?pæ‘~ëaâ#º2‚ç)Äfsþž@ iÎÐSÓTQ¡òÞ•d‹óßheFÖˆ¸Eõ1‰¾eÆ¥ eÓw¸¾íe½7tªÔ9ÈŽQ€>3•ìžM1HÞL´\^;=OM~n¨ÎC¹Å@È3¹ÆôLyƒK—þ0!òmß>Þr`ëÜ~ðnÕu”™OäR„ÇÅÈìçàâ‹`ìÕ¤S'[g…ã+þÛ•-®^=ò$X„Eò©ŽTëEn:²ÛÕð0/„òn˜±XÌUIJSXŽ›A”gä¾S…$òv…ä󈋎„vo5At%ôdT%¿K7~±w…˜íóZ¿ UïèïÓ7*ÛKA%“vÞi0;Wš49¡¾«o ~mB÷uQPX~Àö¯¨í›ªò¼t³[øá° ¤f ®.AtŸqý‡(6Òóañ-µç¢5HÏœŽvô£Ú”$ R®I’ß9U5FÕ²ðqaæþÚ.øªÏõuSÇù¥?ÄDºÆÐ+‡º±}°îpn> µï¢ÞzÍ] ¶ßP#öîxßûÔÔû°÷N.×K?ùs±úÐ €À0ØÉX!`;¤…q¦³Ðº&£0e^(` jL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~ÏÏã:)6],.‡7‰*&޼uÆ\BØË»þV‹É9³[Í¥Îaà°f¿´a~Ä…'TÑárDqÛîeÔr•†¡L¼¸ñãÈýè ìu³ªãnx×-ólÁŸûÅ«óù”Ù9® v>¸î‘äZÞ~´öY“ËŸO¿¾dæî•Û{`ó== WTbÖ~úõæ—*ë ¥p+äwÎZ“”Ø„#8•Ý•‰tÊDÃÙ'âˆ$–ÍhŠõòÇzöˆ“–‡ý9 —PæÀµØ„ÐåxštC´¥£âé^J4z¨.,^bYŠÁEט‰PF)å”m€ô[yDæ–%‚ѩКþ`A†E’?‚Yž‹¨-0E‚õä§%go9$ŽhHž›Öß1TöéçŸ$†Ô#!æ\mØàSÝ_1¥¹¡–¢%çzж#Jƒ!Qh¤{½YØ’d~È€x6ò$ ¨¦ª*d¹] ¡#žÍ•çj´òS €—Fàêyïêk6®1à㣦BgZ6hæ)R¬™ Uxnºe1ñ­jíµØfDÉ fþj)„*…ºB¥¾Ðh¹+‰Zª¬àbAEjd¢¢i‹z6I¯­UÑ-L2ÛOˆÙ,ðÀÈà'ÈNÁ²û潈&øn²“¸£§Þb9ím¡ÉO‡Ï>Zd½¯MáRtKŠêÞUÕ¬þòÊ,³¢‚ójºR’jà#‚è,&²/Øæ¯²‰s;AòZ/®¯²wÏÍÒº91¥ÚòÔT³l%“ “ü¨™d]ðî›ÁŠIè W\«Î„Vf´/ siƒÌJ@K‹ÚÐW¡éîYõÞ| ,h$†µæTK€S‚ȇ'nøâ 1nØÜ !Þ¸àWxäân@$— á„[ÞÒãŠ#Ù¸é‡[Nºã‚#™/uJ€ç©'^¹â·³žû箣Î8ä¸ûþøÈû2Eà½S¼‹ ußÐGOe«›§ÞyáØïn¹êNm¯ ö¡sž½ë" ½.:•‡zçN}o½ï‹ü9âíwþ|ýâC>¿væT?÷óÛõ²W¸áɯ%¿û^þÒw¼öñ€g2™ÝÅç¹ímïyÒË íC Ú½®{¸Ó^íôg½Ú)Ïpü`öPø mn}§³Ÿ÷H9¯w÷3` _WÀÊiT âänxB]Îu2DÞøšÃËQÐp™kû’÷ă̢‰²5B\/"ÅÆ#¤vU£6Q4ÛÑðÖE£ýªa^DÛ{Ì‚£Yí¬!k⬉¯¤Hy#î+ysæJŒ-pHjtfÑP%F:ÕçϨ&­JÝJµiG¤ê„pDÂÔ+K9¹º«Ã‰Z%Þ< ÷ªÙŠ`½¦ì]<{V«5hÛ¬ëÊÕù×_^:³:ùml‘®M¶‰/'îY¸3T•”Í=æ;thm -gÚÖðÛ̈¥‚>=nô:Úý@*îÊ{·ç×À÷ÆíÎö™Ä ~›v§nݱíJ·›svrgÆ™¾Î½»÷˜_n7‚ü»ùó§³G)¾½û™£MEŽE¿¾ýûøóëßÏ¿¿NáÍþ÷߀hà&¨àRD(á„Vhá…f¨á†vèᇠ†(âˆ$–hâ‰(¦¨âŠ,’xÁK ãŒ4Öhã8æ¨ãŽ<öèã@)äDiä‘H&©ä’L69äéxcNViå•Xf©å–\véå—LB`xT‚iæ™h¦©æšl¶Ù¥˜ÂéæœtÖiçxæ)$œ.EIF™z æ j衈¾é甉6jå€:*餔òÈgŒVªé“‘nê駇^*墂jjžªêªsŠ ¦¥² jª²Öj«¢cÖë­•ÒÊ+«œ+ì°Äkì±È&;¬®þfú«§¾>{ª²ÔVkíµØÆÃ좤J í®ÞV O‹ä– "<Ûæê¸6+#ºÀ®—ѶÛSò~™ï¼4Žkî¿W¸À¾4Û­Ç À» ó›%†7Ê«-ÃH&¼£Åóúë°¥7L£Ár"ì1Žoœd ¤¬rDЦ-wDJzúóŸ ¨@ë™Í é³››ì8[5ÇbBR›èç@þ'JÑŠŸøìÑAYÈOsZô£ é91 Ñ‚q3HÞœ—8 Q‰Šô¥0ý'Iíµ¼¢jš1Í©Nß9SåÝì¤@Ji¸VúP ¹t§HÝiO±öSiv4P@TwÕ©¶ÓªIçRe×TMfTpD ›‘éÑsb5«h¥èV¥v#›~ §è¬*Råê㦕k•[WúUµ…utæë‘D{r×Â4¯M„"PßúT³:V§v5¬L êÓ¶.Vd}íÚ_1u0²BU² ¥'b-æÖÁÁUªŽTU›Ú©Âcµ¯ëc¥ÊZÔ†V£­éeK!Bùö·À ®p‡KÜâ÷¸ÈMîoþ)V; ¶¬t½­t×¹Ôe}l·;­k·kVîÒ¶»mlmë]ñNÕÍâuƒ¹Aåº÷½ð¯|— Ê¢–ó¼ømçVϸM§êh°² 0V]`ò~Ö¶p~÷ëÂõj2[ް„«%:ÎGGͯ†×š8·®VðlŒàíâc¶V0~9œ;£tÂ0ޱŒ›8NQzVÃ8V@n÷ÊÑÿz4Äq‰U¬N #˜ÄÓݱe/i¤ó¹9Æq^Aˆ*ìZrFýrxƒ\àxËDN2eýÈc&”¥F-k”Ï;e•Š8Õ2yËÛeð~WÈâõ²˜giPìšyGNn©š×,þÝôòפþÍQ–¿\âÚ¹Ñæí²£ýlë ê¢vayíµDã(ÃÊF+³«\ì:Í˶¶ù MXwTÛàþ·­Mì…ûÜ,º®1Œîv«h–ñuöàîz›Þð5’½÷ý¡Ý^»Ú6 €|åjÇ»H™µÙ›ÿ p,]¹áXJøÌ¾nˆ7éᯒÄMFqûfÜIÿ8“6¾±Ž7—œ"OcÊ·Dòaú»â+orIc.¤–³×‡»’É;Vþš)ä>GøÌÏ—¼&áœH;·p`ƒŽô¡3G6G)™ûø¨—{üéœÂz“¢Î3åŽj7´! Anõ“ÛXëu:ÚoÄu„åètÓƒûÙt^vž;wíùT;Þǽ¤£/ xTŽãß«®î«ïÝRz?¼ÚN3¯Ïîeqœ Ïè^x³?yGȼæ7ÏùÎ{þó ½èGOúÒþºÊu3»æËúÖ»þõ}ï‘o¼·ó„ƒŸ:à­Xw¥÷óÀ¾"%¦ Ÿ«_½ð—oâ_àøH<íkxÈã^ð‘Ïþ’’~ì¥ëÌ¿œ__ ù©?óÉ|èö‰'™íbg}¹þ+Žòm…9Ž ô¿ÿW¨~4À~ÑçPȧzé7øH€)`€ïç~Ò¶·?}s}Av·Ç{•gw(Ç#üçð€%¨&" ÏÔ| XI 0ƒ ‚`ƒ*8,X&.¨oÈ*Ü÷*!ˆy&ø8˜G˜ƒÀ‚ct€DHƒ4˜„'¨„…ïGG èƒFgiˆ„Î"‚EX…È€ñP‚gÈ€V˜ˆOå÷‚…w,H؆(ð†‘‡\øM^*½×}¿÷}c€`„1H†fˆ†v؃Z˜…MXèƒQ(…”Xƒu¸ˆ%ð†#äˆD2}¼†þ%†Á‚ˆjHˆ$X†¥ˆ‰œX|_µ…¾6‡SX,¨¨Š:…­è„B·B ˆl92‚¨˜‚Ø€¤hŠÃh‡ì+¬(‡ù7‰2X‰Rø€TH‹pŒË‰ð§‹(„gG„§Œþgˆ³HŒªH~™…‹¡&‰ÍØŒÎh‰á(@Ž»bŽC≷²‹Þ׋ƒèÝxŠÅ؆ä(‰‘‹ê¸ŽÐ莵8Fà"&ˆè{w'ˆû‘UŒˆè|lj=&ë8…íh€‘좑5gp°w’(ùz ˆ‰ÝØd(ŒŠŽýh… hÖø„cYƒƒ’ïH>D%Ò—’Fy”gþlÚxyß”9@|$—“¯¸Œtè”&•G$•>Çp"h•7•ÉÕè•3–Èõƒ…Ä•ÀG–ˆ… –é–0 Ã÷tjÙ”r9—oå!Ê—yÙXÙ!v©7~éP©Qp¹‰‡¹‰‰xƒixxÙ˜ŽÉX©“ˆ„iÈ9Ž– hh©Gwé’Šxˆk¸™h“âX“6ù™}yS xƒÏ؉‰ š‘iyÚä‹kø‹1H‘…È´x›¯éš~é•H…µ¹ˆÄ‰™7šûG‘H“1y‰¬Ùš¦¥˜Åùˆh,7xš¿É†'(žâ™šËiÍ9•4… œî)‘Á¹šÃþiœê ›’Xˆ=ÉŽßXšäi„þ9‘ÿù éyŽAÇž6›4I¹åiº‘:–‹ÄŽÔ™ ¥8Àð öY „y ÀiŠ *¢ªù›NÉ¡ô™¢Üƒ38ÎXjš!êŸ2Ù (šLg 5‚ 1*Ÿ#*£@y£p¶™9¡5Ø“?)¢@Zò) *Ú¡[ù¡;¢„8¢?Z‘ )¤ÙE¤ˆœ.šœÂy¡Lª¤ë÷¤fšq:J#<ª† J¥š¥g:¤Îé~ x¤H¦ü‰¡Zš¾ ¥@×pi:#kšˆâXž6˜¤ž‰£¸9§š‰¤ú“›9£fØ 6§[º&2dtžxþœztù$¥jê¦ý‰š§)Œˆj›–úpªª™²H™z(§‹Š&šã©nGf<¤{H¨2b˜®z…ŠÊ¥«Ú«¾ «\ê=¶ª©¸š¬œZ$ºj¼*¬W™ª‹é–ÐzÄêœÆ1z5A`Ôc÷A(>híá“XJ†kY­™(­Àêý™§ðÚ›òú®*è§¡É^wMHӯયcé§›?ò¬êº‚ìʨÀ Û°û°±«„öºGÖ®ÀÓýJE¹÷;õW}»'‰ë#{° P± Û‹ ±Ð² ð² @± k±Ø§ƒw«Ô±<»“÷­Ë8²=R²&ëþ([ŸÔzƒ д ³0³0+³ç™ G»G7û±«­Çг »©Ú7BBÛ•ñY´ÓX³zœHȰLë´M µQ·U‹ Wëƒòv]‹±;ÛCº©=ëµ`»¬A4¶éú‘fkŽ@§ªÊ·°Ç"±P˲l˰4û«Øú#‚]³Z}Ó#®$ã· °÷´çŠ…kš‡Ëˆ—«i˘³ ¯»° »p»²lKµT+¹9X·¹Øk²(t±Ëã¯âª7\¼cçCÍ ~2Ùih¨J¯^É»fJ§…³³k,›»K¹1»»h»‡Í: *¨ôz¾©¯s{‘á ¥jþ«´ðºmë¶ô[»Üë½T ¾”‹´ó¸+oÖ‡@X¾»ê›©è¼üè¦pº¿«[½€½0¿ôû¶.ë½ø«»õھ迻À«²¼¥*¦é[À!œÀ×Ê¿%œ´àºÁO;ÁRÛ½/<¹' ¡âKmä+™øøžéû¨ì ¬À+ ¿OËÂn[»/ ·‹¿ú;ÃîÛ»ã Vì¬Z¨lzÀ#ìÃ@ÜÄ L›1»ÂõkÄ/ÜÅH¬ÄœÅ–Ú#™uj¶›²¼ç :,©ÓûÃLÜ¥­Û¸qÛ²2œºÅj¹Œ·\K«‰âÁgȆÎ+½†<¦ë«~ÔkÆÖ{yÉz¼Ä|\¹>Ò[þÄÈš|*|ºAiÆŽ¼¸œ Ǥ¬¾¥\Æu Ê–k\›üµºC®_ÅDëÉg«Ê•¬ÅALËçGÇmÔ¹w!+(¬ËoÉËÁJÌui˺D‰“³®ì(Ì̵œÊu|Ì'P£´IªŒÌËÙê¹yó3CN²,ÍÉLÍ·¼Å×<›Ùl¢ØÈ åË{?†ÍäüªçLø\¤#ð¥ÑxªeªÌ÷ÚMðÌÆ¢›'nŒ‹|î|ÏúU)œ$©¦Û ÝÍ]{:Á(I˜ÐjÌ¢L_J‰‡Š‚p<Ñ qn|Êä‰ÒÁxÒFMÓ¡œÔ"0Òê ÑNÖM Õ› ¸Ù£bmÅ`ªe²"ÓÖ©Ödz5 ÒR-ËSÌ:Íֆ˜ ÍÕ-×7xÕ; =ýÖŠÃÑÙÔ…=‹* mÍJÝ‘]ÕTœšcx ¨zíØßiº{=Ó‰;­¹ü¤QíٌݞT½ÓÊŸ¤ÝEH}ŸõlÏ¥mÖ9„Ô¾m¨„Ú¼³­p}ÛˆKÛFôlÜZ )aÙ®ÌíŠZmάM¸“ÝÍýÉ&lÇÌÝÙ·ÜÆM—nÝ1­Í¡ÍÔð™Ò«þýÝãŒÝ«¨Ý |ÚøÕ(8×é½Þ]mà}Ûâ=ÍñÝЃMÒ£\ˆý¬ ù]lû]Ïý½ËÅÝÕÞœiØ:œØGÜZÓ5àÑN*ßöŒÏ(ŒÚ„ÑeHÕvÝ–Š¥­ ¢* ÓYýȨëáΙ!NÀu½¤¾®'¾žŸÍÑ JÚð ãâK-‘ jª%^–ë­ßŸýÛÓIªD Ü-þãùÌÝnÙçmÀ{êÔ7NnkSmÊX*ÚXíŽ þâSîâ´9ã¢MŒ°½Ù_™ä¾ãb}¥c*æG®Ðnæè×Cþ¦ŠÕ[n­Ó=èÕ}ÖLIšÚ¼ÚÜÆ˜Èþ˜ç~æéÜçþÍÓ…Œåް9sNç|Zç=J©”ŒæÒ äTî€~¢pîår^ãç]瞎A®çŽìÞ«ˆÜºÍ’¼Ã`žÙE.ÛQn´äÝ]Žj@Ý B]Ôóªì’ é¥.é¶^옖àä\摾çÑ-íFíÒlíÏŽí%€Íö}ç» ífÆíÈìíòí“Þ¢´‰ÞágîL†îĬî$ î] ¦=îÖžëK¹›¶žÝÂÞàê#凜é* ï—DïºlïZiê¤Î jÜà(½Þï9ÚÞ÷ý ×ξîø>ß”¾Ãs.| /IûëðÎâ£.å#/äVÎÔÒ•ºé+·òáÞÖ6¿þÍ1.òµn^í‘4òxŽó)GÈE-ál:ªL_ªOï!ïAîæ üÑH/r_>¯YþÆÃxÕÀþò¿Ý‚W¿ìF¯õ¿ØÖè6îØVzÅoâ³~íUÏç3Ñßóå¾êÆÞê¡®š£ Ùðîówÿíy¿Ï?Ü—éö†¾›úø£…¿æÇ[ÿœÉŸíSÏü‹¯÷úÉ–Ç/šÓßÝÕú§Nòô ýmâoþ¿œÿýÃÎø­JàÈÎûãI£MþüÑýhÚýá­þ/þùØjûP €V‰çµÙ0Ì£4ÒTWtu_8–gº¶oü^¤¡ÏLÕ"dR¹d6ÏPñ䔺Z±ôht½ßÆ$ö9eM!kARÔB>§Ó«9|^¿çç³¾Ÿ @¢›£37¨6ÅF78*™+˜¬F.00F5¶5³M‹Ž ÐPGȦ»>ÕUÖVI¡ ØÀT˜Ã±M&F͵Rß§S¦Ú’É—JÅKL/^MωN‘PÞßà¥aWìlm›¿!AB‚ë•Û-Kܤé_õj¥ëb«Òdå°hhÎgüéÄuþS•cwÛ$hl–¬AÞÄ©82JPœ"n 墘týÖµKòs)Âã+¥£ä:][7  €¹îåKÃ+Bp0K h¶SnÊ\Ç>ë`Õ®^¼G)%}\Ù2;¬Âúnæ9¡M°‚ ^,ŸÙ^…¥:¾ü&³5I”[Ï®Û6JgÜ|ÿÞ´)šôC©‹QŸVIÛ—m×HágÞ9æÜÑgî“g"iƒ£Îκyþrb’Éþ^^ÑsÒÕ¤þ™–¡‹Àã#6‰‘dEóZÐUŽEÕ'¼Ë¯€ý$m=sh/0øtP¼¼^Šm9¥¾P»! /«;leAœl 'CÁ›‚ÃÉ(D/4¯@=”Q{k°DÓÛP³þ(‘g®¹ˆÈ>üN+ÆgT+pª1G( |í®ý«0¤z¹îº^ŽœRÃ%ì¡Æ÷žŒ2G$'´Ò,³j»á\*M1ëœÌBÌ<³D:«ôñʘéä°á¼ôŒG;Ç=ÀB4bOûOE-–bÑùÎ’sÎ/%TôSÏšd4,=!}PR+È«´MA3þ-ëÅNÝuVØ[7V²c~ãW;ÅvùcOàUåÊrvy=˜g ¬Ü „åV¨Mùd9`”õ@túIú‘¥uüYa|GE@ªœÝ¶¸ˆq®ºd‚ÝeS¤%öõnjýÆ–òê—³f°Ô´…äBñþʾøl ëjmÚ|†;· eQ f؆6gxXøÞg—½ï0¯Íh,p·c\ÆÂc8<ê1_<ó·Ì^ËÄ%Žèm{&}sÎåv4æ»1?ôd½S^uL¹3iÛ)–ö;·¥öÙßÙ K3éýáßékMpâû2þ…Ï‘_Kù‚ôõc~Bžyú׫Gðz²×žÓÛëݵ{æ¿3üèiÞd÷ÍÇ ýqÖ·Œ{ÓõŠwàëDÐÅ­ËPO[áCüçºö ì}ôÞçg@”T® —K^ùš !téZTD††È‰-‚ËÓÞ¹ÖUJi+Þ ';1Œu储þyÀ½åHtÎñ  ;ÂÁ4 xié!Mc* êNˆ3Þ·ŒxD–Éc´Ï¦+Š.| QxEöd1O[üâÖEžÈkŒŽ+cmŠˆFݨÑV1Ûø²ÕÆÚÍ1sˆKáÇÞ©;â‘+HMwv¸ÁL 1?‚¤¡»`•tHÒŒ‰T¤V9B¨”ðY}Ä «Ø² Ñ –Ò$ñ'ÁNNGÈbžÝêÈ´Õ°it´ cèÄ"AéŒ±ÄÆ'ô«[Z-—VÜå !?Mq)JÃ$æ‡fy#]h)™¸Ì[*¥xº@aŠ”ˆ¬$*«YcnS#”<¥. ùª'’ˆšç¤Ñ5éþ¦Îãp/ËkBóúVšW‘³V£':íy+|²EŸÄà§;-¨©€ºr™æ,è6Ò¶E|1 ÕüúùN}HS˜­¨+.Š–cÞ,5£+'ÓZÈËÝ…S8%œ&IKÊŠ“–2£*%KJ6o’±R¾le·ZJЛjØCÒ–åBÆ~M^ÊÂÀ/ï7Q—¦ -Å<“ª ƒòñ‘E#kHUUN’£s&W+†U¤~Õ¤a)U3²™‰oœ°:*PÿÑP·¢è•,”ë\G•/>ªkÁëj»ºÇžj­€ ìÉàê×®â“{=šô U@´µìì* yŽxŽ´¯oËl1éjþ8ÎÚ¢èhÏ3YÆmˆûlMW«¹ÖVTsÓ×XyVÖ­î¬"íew)ÞòM6 .X«5ø0•ªO ÊÃGÂ-Ó¨?em3;_гªV•ìo“TÝ;½Ös•íê_p_üæW¿jR¥%¯¥Þ²NwŸú%p~ákÍë—vô­QüÂÖ}æ6m 5Kc%Z€¿÷Àîì„ÆàGF;(]+(SÔzV S1p7̇œ‚oƉùûMÿ2À–'V$aã÷!Æ2fW†aä 5ÇÐMqU»¡#—7È~ïñˆ|•CQÉÔRò‰ÿ Я¸Z–ò”­Ûáþ"¥•±í&•ŠJ”Ç^Ö1˜5x¦`À³fS•±§Ñud¤Íì“–âœä­5½ë«†¡÷Ìçø&ØÃ†ô¢ Å×Tárîò•ßJÐMCšÊ’N3í´›¬dyÍhó¡)¦Û÷Ps9Ñž@`WQGÍZëKÖvǧø+@8=kZëÒØíÓ0¤7 ÏÐöt¥‡Ä󗈱lY·•ȹvVs­ko ¶®Š•êL#&>éŠÙ5y9¶¶µÄÞˆBŠ#$`÷·qðlWE´Ò®ô“+Š2T½d6uº'—ÜÛöæp¸±Ë°x÷Ý^Ì·o)¡vŸ7L¶¥ÁÎL†þÃe×kŒYM~r”§\å+gyË]—#Ú¾/§yÍm~óšÏ|å!ï3©yÍól@èC×#‰~ïf]éù—N£¤?èF—ºÌ«~u:6=êXï(×½žu‡+øëH{Ù©^ö®£ëgW{Û×îg·Çíl—{ݧw»ç]êt×{ßEÍw¿>È€|á«KxÃ'^®ˆW|ã+ÊxÇGž˜—|åшD ¸ óxR 6¿ùl€Âð²|éÁ š‡Óô£€ VÏú|¾õ¡Ÿ½ækozÜWKë6x} zo€ß« ø}þðsozÌßÞóµÅòE/|å/_úο}óað|àcþú°‡}æ_oýéßìxçþö³ßzÙÇ>úÙŸ~úÏÏ~ÛÃ_þ+ýê½î×ýâ¿zòã?ÿðƒ>ðs?Ü¿ðs¿ÿk¿ÙÓ?俸ó?úc>ìû= \@ @í+?Œ@óC@Ù?œ;ò @|¾ T¿¼¾Þc@,?Ï{Á´À¬;4¿\¿„?ã[A $A<¿LÁt»Ì?üc?åËÁÔÁ#ä@L@=ýC¿ ÂþA ”B ´¿èSÂ-¬¾ @ä@2¤¾$Ô>ã³B £<¸áB5ô;6TÒÀ4|Ãñó9’»"ÒËÀ:´Ã¯‹C? D ÁBA,Äþ:DCL˜›»BDÇm\Goì p”Æà#FalDÑÇLÂt=úkÇÍxGÛÛ?{\:sDG|dGç[Ç/@äÇ=ðÇHr<:êŠÌÃSGƒìÆ}DȬ>†t‡ÌB<ˆ¼»¨H„øGÄF}ÌGTþGôHƒüHŒF… À,ÇàŸ»È|dÇ—lɘ” ÖëCš´4Ãq¬FÔ;ŸIæûIŽœÊ0Ê£œ¤<È¥ÄÅa Æ‚¤J¡„Á…”ʫă¬$KjäJzF²ŒImÊöÃȲԃ³¼“’ºÄA±|ËtÁ‘œK³´I3Éœ”È®ÌD IÈa»\ÃÃDÌ:©Ë§dÆÇ„Ì0‘L–œGTTFËÌÔ2¦üŠÔË0œ+MÓˆ^—_MœJI5-¼„ˆ¤š:ˆzŒ¦ŽN5†ˆt±a‰8ÅUÓ$b›¨ô@|^JèíÇ"JÈ”™ZÕ^©p”pºn€ d¸"e–¨T%+Ätd Qk™M“¥ UIØ=bX±Ã2ôc‡ÐÏž0gõëý ±2U½F¸Y‹F—Pç¯ux¸· 3vk̈D‰ý¯ ¼zÃ4âö[oÜü$Dë¾O½X¹jp§j홊wX3U«»Ë¾»‘ˆD$â,ñ6Æ»“ô5vËz&¯?l©‚'6“ç„Mü&¥Æ³ì á—Ìò¬G§…©°’·®º]²Kbž7¨¹›»Çg½ÁÅËÃʶÈÔ¯¦2̓ÓµÄ×­á2áåçãæâ1åêìéêíhÒÞ1ÙÏÛÌú–íÿâÆ˜Ý»ƒî&»EaÕ¯4ø¢=Ô¡­ž.€3äi$ˆc¨HYÿ*ú±_>‹÷úUˆ°¥Bƒëäų2•C’#vcÈÎ3Jen$WP 9…DG1tsÓ^I‹Ðv6+åžÇ–Cß,š”=žO¿œü:UKPxH¯&Ì*sá7faiq*[ƒ^“˜»m«6àGº³pÑ9÷mµÃc´‡‡ðâ vKVK±ãŸ•'kBÖ°9‚z Mº´i=¢ù¤Þ³úÂé×°cËžmÚB´rëÞÍ»·ïßÀƒ N¼¸ñãÈ“ßy[¹óçУKŸN9sêØ³kßÎ}¹Ü6ÝËO>¸õSåÓ«__ý»0öðãË7ï>îùøó³?^¿ÿÿÝñ÷ÿ€€ö¨à‚Æ! ƒFØ›ƒHHha„Þ\vèᇠJâˆ$ŠH≚ˆâ‰Ãe8ÜŠ' "ŒÊ#ÚŽ êè#ýmrøè‡D©’Çib’-Ö÷ pLòpNÞ8d“J&WeqYî¸ånâüæÜ G嘺•éÛ™G²I¦™]"÷enWbYçqwàfopúæâšVôæžÆõ‰gž¼꥜áç¨rúé¡Q9 dĨn“òY颟æj¢lþ‰©–½©ºÛ©¹ Ê)©ž6ŠhqŠZz)¨·W¥¡z>Yh©¼fšfÀ1éé@¯öúâÿË2[,«ºFË(¬¾Vêê´ôiš ¡ÃÒù¤µÀ€í³ÕZËís}nkj¯²&«í®¶ŽKî§ç‚{ïµÎêKn³ÆÚw¸û®°­ºšï¬ÕJÚ/Ãê,\¼¿µK¯Äbþ¶íÂòì0Âé^l.¼RVHp›"Lm«fÜéÇ+Ój0¶ÖÑn¸-³;ªŸâÆŒ'Ì.{œóoÈaÛÍBúpÇ\‚LÇj°ÊôUÐÜÉO/5”>µo¹;qÉ2mÜ×½…ÝsÐ`j öÎbw{ì¦f·í´×n§ ÷Ú:s-·Àj Yäà„^¸‰†'n8âŠ7ž7o:ÞxÀQž¬ä“߈¹–â"nžxçž>¶·S^hzŸ®:~©¯îú~d¿.{|­Ïn{€±ß®»xµïîû¹ÿ.üt½o|qů<š€#»üó£Ïý-ôÔ3_¹#Œd¯ýöÜk@º ݇/þø‡®Dd›¥ŸÙ'o™úð¯?Æ0îÇoèKÆû÷÷ÿ.xÍjhCÀÐ ÍÈÀ:;Tix8.4.3/docs/html/gif/tix/hierarchy.gif0000775000122200012240000002001007426315531020307 0ustar jeffhjeffh00000000000000GIF89aQ‚€ÿÿÿ!ù,Q‚ÿ„©Ëí£œ´Ú‹³Þ¼û†âH–扦êʶî ÇòLCÁçúÎ÷þ ‡Ä¢ñˆL*—̦ó J§Ôª5Џj·Ü®÷ ‹Çä²y™=«×ì¶û Ëçº4ýŽÏë÷ü¾?iw€3(Hxh˜P¸HÈøˆØ¨9I)‰iðTÃɈÔYó'::H çyжªÚ”Ú Ëc*{öZ;tK¤‹ ÄÛ ìølE\œsü£ŒŒÙü¬7 í»9½Ìj=›½GË]ÅŒ®ý\~n{€~5Ü^·î?¿å]äýûúN÷noäße_¤sé¼§nà.EÿÞ„w¤Ð­K×äyØOÓMÿw%w0$¸J$6Ä1¥ ”)Õ©Tsá“¡–-W®¤$1碇B84””ʤÅL=Já)2i’€4H($“(×´Û—P*"ªQ5jEã¿G^½Îdé²ìÍ­6Ÿ:•©4.“ŽEÍA•-K6WáVÅ›÷dà¿aóȨYÀ€ ¯m<ôžÜÉMßb…(2ѧ‘µèêñ®PÈZ3sõ|X²æÓ£¿fŒ,åƒt}9Íêv/ÙÍœmýDx›°Nµ Ù|KE¬êÒ®açeNzîì鹘ÆN¹GO*×™û¸÷¶/Q?¿ÌºRìS“>;Iø¤>ÿn_2ýøïÕ'ÿe_ŽvøñG )»U‚ o—,h‰% &ø`dW2Ê@`†µÍ³_†~͆úHb‰×ù'R‡&®Èâ"®£b‹2Î8Ç‹Ùu! 4î(r×Ý Brc〹Œ8d’!¢€ï) ¥8LÒä“Q^‰K‘Aªv#–^¢¥• Áøe™§„Id•³à“Æ^!çchndf.Ni“r•˜BŒù‰ÙhÒÙIh4xÒS]â1´XxÆe2Übà•V¡–Þ1g6z®9•#8‰ÆTÜyúÚ81^Šª+‡r¨&9v%UP½Múj¨|R“j®|­Šä˜•âUXiÀÚEѧÍ©k²fÿdjͦK¥•Û¨Y¡õZ³ŽÇ¥¸*ËmÌNãl³ÝŽûÅ·!¶ª)¹êÖÃ+™\¹n¼X´Û¥¯ðÊ‹ï\ôÞk[Ž/ä °ªqþpÁJšûÌ©/Œè¾[2 1‹73¡¿.DŒ±œ‹‰l½¼ÓÀ)¢+.È O,Éàš|òÆi¾û0Ë£\L¸+ËŒ1Íî¨|.Î3»¼Í7™'S"?«0f>/¬30Bæ§ ·Ö:u)KCÜt/‰þJ^µÉ´)s‘B‘ôÕPf%ÏE—mt£>v¬e›$Úµ<-O¬ðÜÖuƒ¦êÝòÚ- Þ²:—ÔoËx5‚Lx,Oϲx»ÿMÛVÈßÜï9˜jSü9À¡·‚wÊ¥ã{º*©×¼:ë@§ 3DZ“Ûú™8ZÌÂíñæ^ŸïÂ×<{ÉÃ_xñ7#ϼëÊ÷Ü|ô¢? hЭöÚj×oŸýöRGÄ{ Òó|Âñ óøóMåÙ½ª¿¾ç¨þ£»ðÇ?ü…ôýG•O:÷ÙÏr êìÅýÕˆ€d3 ìj ¬&iùKo¸€¾žÔFdÔ{õžø^¹>XÀ6¬p!Opº‚òä$l Ô€št˜­fl쀡À<rí\iMå:%[9Ž…Ûê˜^ž#¸ÿa5F´ YU¥‹AUb377e8ÉVŽŽÃØÅ’8pgp<ãi5Çð¦3XPTu˜˜Å¿¹q‹EŒceX=úyŠ‚7Ü\s­G¹‚„U¬Ž»cH[V3ä'æè´ýñ±•´'-‰Èé%/•£¬šñN¹V C‘t¤bE<K ~ñ}R#/sÙ/Yö¡ÝÃ!öŽÉ=Å™PSZ Ã×;`¢2&¦4µJ­Uóš+ê ‹¶ÉÍys–âÔ%4SÎ`R³œKL_:‘¶Nùr€ï„çl¬)ÊR¾¬žoÚ%==4O\òshñQ@ùÅÏqœúìß@íI|JÎÿ¨Œ >%j6…ò£ókgWRWz£KÓèHz& üp‡kNHòPˆN¥Ilh Y¨ÇË5“ 4•™I£ÁÐ[Zq‹oVzʲŸæ©ßô¨mù·Í•§1ýš?ª!ŠšóQ/—UÕE´—ZÝgU•Ц’Ó¦¯Œ)Z1Ô›þs oåG\)‰ÐzÖuì æ9OV‚Þó®•Ë^å Ö…6ÙL[_;ÓÆÞ°M‘dóiPsþÕ…=l7(ëLSÒõ²}¬\±šPҊδxuçh¯š×ó•Õ¡aõ,*@{BѦ¶®-ÐliW[ÕvTž¿Õn$hÛVr3¹nÿHìF‹[ÂÐþé¥#í¬p]WM•Þ§QªÜŸÈÛü–¹mpîI¡Ë©Äçzni'ƒ^³’Õ©•ÔgÁêŽ÷ººc- ‡jT6:È[Ö/m3KßgJ‹sÐÒ¤ á_óZ·Ô-"%Œ5þÖÁlõV*1Ì0òò…Âî5ß~ \ µ·zÕp"ýÛÏÍröÄ +Œ+K«òÆ8žaJâ÷èÇTåñ"eL‚y Kþl‚ÛúPOØÈ%`„Ç PôšøÊƒ¥²r­|V7•¸O^^˜Q 嬖zgn2½\±7ilh$u³ìÐlæùvø¿+üTy•Œe i÷]_mÿݭ̽·Íöíšm™E=zwVn3 @-;“#gñÛ€¿¢0;NÌkUñiÇdÇ»$‹qK »Læ=#Z›£upl<·6ʤVl¬W¬Ûëz˦޵|y=l0ëØÇ~­¨õûëS³øR†I‘ ØKúØBÎS¯Ÿëån÷'Ù䶸õóíó†ûÜšJ7PáŒí¼:¢×þ¥³1-ÛG+Ùφ)œí½Û~ðßs 8¾ÑsÐi§³Ú)Œ¶±ìVw/µÞ»+s­/<ï™R1¬0?œqÃf7ÛmSWY**Hy—“ü¶À!lné 5§P¥ù£H²…¼~çsiÿéçpÚÐ’ž"£·½li´½Î°f·Ÿ—‹á6î9¤·:i¦3˜Ó˜Ãä—‡Ê'á5|1—éMð–«ûìO{eúËv‘»]áá¤:áïì|=Afw»Éý@«û=@Okß¿$À×2æVÍ{öN°¹›Ú…‡«ä›mp¤gYß厸âCyyˆ‡]ój–õ¾ïMzG›¾ó£G»àsÁ 4Yêݲ{‘_ïñŽ’©´ç–í™øƒ)ˆYšÆzDØ,@Ø\jsq¥¥„EHƒ‹¦iB$s†…RÈX4TÍWí•XS˜… &†}$„)'`àQc.LøggxCG}Ôl؆F…`]"(ÎU†vØx/H].±r—c|kˆR‚‡«…@“—ˆ«ô‡F‡„÷ˆÄ³ˆÃ¥‡1X‰wã†#‡I¸‰(ˆtÿV‚>ŠîЉSvŠÂ#‚·Š¾ÓŠ0÷Š«‹\4‹±S‹¤TQ¥¸·È‰—ˆ]ŸH‰¾è<Àw™È‚ÄX©hm¸xʸŒÆ¸a“øŒÐ8=ÌØpÈxƒÖ¸QØXuÚØƒÜ8LÞxwÈ)ÃHùõ5(ŽÂ@Ž·Ž}r$&ôp5ØŽw"ÕcÈ‚h—ÔU‹ò„Ñâ(ƒrî˜;fŽéUs87FÔFA7]âUãxc°ÒFƒäPWi’8‘KõŽÏ—¶ts© æ*z3l‘˜ˆ¹hi#iU¤âuZ÷H^ç&ª&7I‘,9IÎz:i(YjÔø“@™V!¹}>éFy”BÿékyzL‰ Hù€šÅ‹>$•˜B•˜•9³•Ø•æ”à–!ö•ì{WÙ‹À¡–XYY. J¹€P ŠG}D¹”t9ŒØ>0ŽÌ¦‰vÙv~9„œ·—Ð7˜zY«w˜ây„Ilx9—‹—ö•Ø"Fgy)S6´vU™TøhwDE ö:ò¸j› šgû¸t“Æ]ÝÈ…?q“ ²Icùuî‡›ïÆ™’U¹ÙŒW~kƒ_iM<™*¡yŠ”‘ž6q>œC„ )9œ¢‰˜r™ÔéœX(œÑ9,EeœÙH™¬éŠÙuºñ…ÏÙDôq‹RŽ«¹›ê©˜E ƒÈÿYž‡ŸYŸyyŸû×z‰)™*¸žŠzwi˜‹)!šyêWm¹52¡kù–ä)‹›W–Ge¡¶ÈxŠAª‹Iç¡¢/Ù¡#Ê%—V7¡n¹‹-J»£1c£( ¹§ JçˆÝ™Œšc£Øy…Û˜ŸB =ªœfÈ¢ ƒ9¤…飩—iEJ¤<Ú£€i¤*j™"Z“™ 9Ú¤‘)XªzAú—:Šyfz¥óÉæÆžt¨hdøj¸œJ©4,jdÖBKxZ§m¢™Y÷§çx§æx¤:c—¨­Dš²¢õ9Uö%¥„TšeW…S#5úÀ'Ä€¼¥ÖY ÿPCè9`-E›„£$8hWˆNTè—h°ù}l9VôÄŸ}D+ÇDµ)I”S£PšoTzZàù¸Z’©ª˜XágÆŠ=鳚ö¡KP›D•†Þç7Íšr°W¨YzdJIö­{Ói©i¨œIìE®¬f®q¸™H­µ8Ò‰’›z_RÕ7M$]ßš“‡êüzL¹81ršÌ¤L É®‰®³5¯¸rG‡žoS,[!°ì(þÚ“I*£½j|þ86阥]:è™Iॆ_e“é9­_꘴`ù»ÙK>‚1næâyØÃißñŠš®’耩æÄ¢Ë‚}ÊHîã÷Û’íÌ´ÝÊZT|¼ÿš°,GÔØkÁºÁ‡¿ýÁ]è§~èÞÙ]rÐÙŒ“»Ë6 õèôm܉#è÷Íæ©Ÿf[ýt´2]ß'EøË壪8Mâ]Ýu®ÞZ~»ÀÐï=íÈÝ8ŽžÒÂÞÞ¢-’„îìSþæÑÉјãÑ»Z|d·™¨àmçg{Ã^¥ÂgŽêßÎÜá¾åÐÙåáËëILãpΈ F°½ïÝîëWë†üäŸ”Øæ€ÍäeNïËð³Fä\nä<þçïïÖüØ™Lá}Éá@®ä#^é6®ðU¹ê#MîéMñ/nñòÍÕæŠÍñ-çM®Ó»®ñ¹òõ~„ì>ç–>ó`‰æ˜ÿwðƒ ñó@ŸóI¿×ÍÎô,ÝîQõT.õI>Ó÷^ V~½=ßóýçy§îNÝ-²×‰a¯NZשÚèÞ½ÜêXõÇ^õ£ HæÅöéQôÔÝìç>|³Fµí¦++q*ê¿AêdD³†Îà%çŸÄ(­° ±ÌžôœG©&Q{_ànoïù¡ÝÓ9íT´ü“ùêåAç§âÞ>õÚ±^ßîmÑrß:j½ÏìKú.Úäß7{Ñã^›`áç{åÌúòNéAnÄ?B¿ó ö”ÅõïõëQóe-åNÿï&>ôÕý’úwõâ*ý5Ëâ1/ó^ÿ~ýëÖôÿûßÿÄòà_ÿ‚åOñp¹ýa”“Ö¨ЛwÿÁPÉ2t0Æ\ÙÖ}5KžéÚž¸[ßù9íA¡ä—‘‹âaih&¡¼g”ZEm¬ÙèTÛÝ¢¼a8#6C¸gµ-·vSÒoù¸<7?ñös\ßgbýúøÉ­òêÿbÝ#×)‘,•.¡&7ÃÚý‘ñqÖ¡ŽôKºòÝÜë.ž¹wÂØ›j§ÿ‰ž—eòÍc¯]ÐÙǵ]wC5Ï}÷ß ÄÝ=à‰×¯÷á‹O~:áVÞùã˜Ï÷ùé¥=¾yê±×Ñzéw^Ý{Õ·*Vüï­”8Ù×Ñ÷,{R¶¿®sÛ²Þc}DÛ'~´Þÿv~;¢wÿqÑ÷7²ÐÙ*n$ WÕÐ?ûq.qúC «îGˆ.rƒÿ“¿ íÍ`ʰˆŠä¯¥j€ ² Hê—Á†yÏ„ Ô ¾ùx¬…r;áRèA’)Ä,/êXÕ&øœè ,i ‹žŽÕÿ dUî†á(!ü †‘ºHHlK©¡x¶6ke\2¢ˆšˆÃ'Ú§Š«Zñæ%,ÚH@!]ÎÔ„F±„ñ‚9„âϸ„&üÍðkk£M7µU¬{tü„'· ÙmM¤Êëf§¯œ¥M!ûáÕcÈ.`ð† qä&5yÈ1†RƒŸì)7‰HJ‰DeMT‰@O𕘈%ÃÀ¾ñår—½4_>ÒL!ÖÒ·¤£)‰Ù­Q&†Ì\'Q‰Lg͘a”æ4ÝvMâS˜Ý”6QÍ&nÈwà$‡8;yEä™sèùßÂuªq‡îÛÉ0#whÎäͬút<÷¹ÃP½riSÚåüÃøÌ‹^W”_Öæ·Êù’›>«§#9겚z‘«««9ë­Úz»Îª¯9ìÏd9¿“ž®£´ì§{Ûî³×<íPŽ;˜É ;Tix8.4.3/docs/html/gif/tix/hierarchy.png0000775000122200012240000000620007426315531020333 0ustar jeffhjeffh00000000000000‰PNG  IHDRQ‚ËPLTEÿÿÿ¥ÙŸÝ pHYsb&2 IDATxœíÝoPçp3É_$:é‹V#•V™8Ó4/@E Ñk§V›ÖÆÉ‹ê'µS Vð`R®bpÛ2Sµþ×[‹†™š™N˧^oOXaubÁTm2=Ë­çÚÁB*9e¼Cöé>ûçnï€c÷Ù_åçyÁ¸ìÝÇß>·ìw÷a÷aÖ¬ m.Ôä™a­PZŸGk c÷棣¨¿ŒVŒºÔʰ’s¦.P—äfÕcj7þ‚ÀñB&Ý» ²¿2fŸ –S«V9C²Š(CXZýºª®=,œ³^´öæÿ¨ƒ²Zô¸šîÝÔ¢™F-KÖçêkÁ,¿(Hδ‹7næ­a`ê:lNÔ…­ÖÊ‚Bµðà/×/²p´ú-”iÍ4{Í!jcåÔ÷Î…²x1Va©9Ô¾¢ú·§ê*ög÷—ÂX­Åžšk;`,_q¬¦¡ ÆzjÝ¢•ûsa¬D£Í¡ ¶h¦Qkk/â‡{€¬¥8Æ™ö³¼¥_Ú´x H]ÕB£{cc˜õ7Œ•¯XlÆúÕËÞ/ŸÍý ˆ•¸[!³¬ÎJ4‡Í4{Í!jc©‡³*D£8gΡ—o\±RÒï‚-`Ö»á¬2ÎÊ>ØÉ@Y‰F­I-ú¼µ2Ö¢ÏPk¬Õžgõ¹x ßCy§iþ¨ºîø|õPÖ§^/e…ý~0ë¯ó?̲L«©5©EŸ ˜:‹fµÆZ yö+ŒÐë¢ìÜ™ÎëøÞñ•WO@ÔÕhøIsÀçøYpõù´“u¥Íöˆµ‘óTXçÓÚ?¿Þ_ýʆ-™¶=þÍ4{VJýÜ´”e×JùyÓbÊãSÔÊlëZj¶GºÈ­ âÌ–´'Bfáê,äÌ«¥W*sHëêýg¢.†GÃÑpc©õð“$K*q`¯'[Xm¯÷Wlµd±î†þWãVT¨úÈW³C·ô¹¯¸‹Ör·¿ì‡‰þJÙp™nés_y7 {,}Žo¯­œŸ»Î°ŽäÎÙ×¹5wŸfés_e­Ù¾ÚâþÖâûרú]lÅ›|Ó¢Õ“biw $[VëB)–þÚàÏ]+Ýq5bó¸ŠÒ´HÒÒôµÒØí/Þ´znâlŸ Ö£µ•ã›YÚÜWJRYÌ!É•YÚÜWJRYÌ¡mùsŽǺeÌ}¥$•K¹æ؆þq,cî+NI*k–¤X &°´¹¯X;–P5¡…ç¾R’Êšu··ðé׎w|K›ûJI*k–rõÁoc- hõX´F˜œI-+ûWúñ ›VÚk+{ÇUm†Z)óY]×:³Jiެ”7€Õõøncr]~GºÃh¤k(k€!²$ñýœ¤•Ä£(’#=Ⱦ…¯—º^(jÚ~ëü¤fÚÐß:~<ºž¬®Þ{‚ÏýÅb¯ =¸È†‹ÛÊȬ‡QÁëÞT¬Þ¡Xr ûY0ÚObÅP0*øË#›=ºmaÃÁ*"K¹ ^œ7ÿdäÂ.mï^íXûÆÓ;yûª¬þf\Nv9·’VZNëJ™ÏŠŽÚ³ÒŽñÙ´xÓ˜q&jM# çнE« ë3ÔΓZ8‡$#éÖFŠh»°]KÏ¡­ž]Çô1>>ûZE¾‹°.œC›³jv+uIJ]|isäQ]z žΰv\ˆøI-œC‚Ç-èÖ™2ÎÍ‘Z8‡¶-z&[·>ȽöÄÙzB+ÑTkÂ×R ¥W%gÇÕ¤% ¥iÓׂì/Þ´IûµìZj­ÂJEµj[W‘[j1øO©¨V7b$2ËÈ¡]øO©Ä†• ½€#‰°.5‡jðŸRQë yq$ZjÕp>N·ü5±¥æ[ðéuuûq$Zj=“=g›þ9þG¡•h™µ¯f¦Eshê,šiÔk©™67nÕ¶Î%·Ô1¾sêŸzŒ–ÏZF¦]<®¼NÏ´æâºÔLk¾nÔò^ü±¥fZS$nù[N[j¦qñººý-äù¨ŽñeŸ¨7>dzóÈû+Ñ2k_ÍL‹fš=‹æµÆZjÍŽVíD¯µœCøÆÕj ¶Œjé]§çЀ×5þk-çPËýˆ>öù*On©9Ô[% ¹¥æP‹¿Â°Ê'x­åš·¬R·Ú–ºÆítÎL+é¸êðw'Èr£šäž@»oZ˜ÒßeRË¡…3mpÍ–>KÍ´ 9´Œû'vk[SïüÞ5Ó¾ð5òÎ-5Ó¾ðùç–vmð°ÔLã>þNõÔÞë3-Àãª6,ð>>z¿y]™µW¾i"ñ½é1y1ú¬®p|µz¯5ƒG}¼†à>¾ÛᎣ]‰ÕReîÒª­‡ºˆ¶ñ~OCÈ_Tê¾+ËjtŸ#ÚÆûýg„zm5¶öUõy^t×YR¸5À'ê’*|çªÝ<Ñ6JW®þÝxdçPþ²üE¹GIú+iuFí«pVÒj‡Vò}|4‡¨•¹=°gÍŒm¼²Å£C±zÄ»9h/r‘Œþ”¤º1ÔÄ‹.ä sÉ‹¦Õ±SÏ5 ý¶-ü†û}ÕýÆ’r»ÞÌÛöÏp»/½¥?è«ÞO¸‚î`à‘% ¥ñ³&|íâ „`€l¥öÚ¯™¬[ÿ¸Üt{o¡—¨.ÓjGc©Í™•ü¸ºœn#ܽü©I»–Zc,ȾçM SºßSË¡e$„õ@O4Ç–²ú¡žhu=Ô Â’ôDƒ±´DùõDË´ýëñ·h¦Ù³†ûË|ÓÏ‘ZSi £¡}Út¿Î­¨(…DÀšõ$ÚMŸîס…$ôàfó§Út¿Î-ùÆ…;Út¿Î­hИî×¹u÷ÖµÚt¿Î­D£ÖäàqÕF£µ¨E­ÇÛ2ŸãÓž´cñéWKÔ¢µ¨5C¬QíBþâÐJw íde@+µÑmk%oãð!„ÞÍAƒ×%£QQBbê«pl!4r굯ˆ;:"Ÿõ2Vò6Ê-uåâÂæHäu§uÉŠÅíwvGÊZJ«áJÅÒþ>·‡!°Rö՚죇ç¼²†Ä2·ÌÝWYææt%åpZ¢ÞÕÂữÀêJmÔ¢µ¨5#,ÈqkZÔ¢µ¦±•¡íq,Q[šäF`IEND®B`‚Tix8.4.3/docs/html/TixBook/0000775000122200012240000000000010767576212015663 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/html/TixBook/subsubsection3_5_2_2.html0000664000122200012240000000611407426334130022401 0ustar jeffhjeffh00000000000000 Display Items and Display Styles<A NAME=322> </A>



Next: Creating Display Items Up: Display Items Previous: Advantages of Display

 

Display Items and Display Styles 

The appearance of a display item is controlled by a set of attributes. For example, the text attribute controls the text string displayed on the item and the font attribute specifies what font should be used.

Usually, each of the attributes falls into one of two categroies: ``individual'' or ``collective''. For example, each of the items inside a TixTList widget may display a different text string; therefore we call the text string an individual attribute. However, in most cases, the items share the same color, font and spacing and we call these collective attributes.

One question concerns where we keep the collective attribute for the display items. Certainly, we can keep a font attribute for each item, but this is not really an efficient solution. In fact, if all the items have the same font, we would be keeping a duplicated copy of the same font for each of the items we create. Since a host widget may have many thousands of items, keeping thousands of dupilcated copys of the same font, or any other collective attributes, would be very wasteful.

To avoid the unnecessary duplication of resources, Tix stores the collective attributes in special objects called display styles. The relationship between display items and their styles is depicted in figure 3-4. Each item holds its own copy of the individual attributes, such as text. However, the collective attributes are stored in the style objects. Each item has a special style attribute that tells it which style it should use. In figure 3-4 , since items a and b are assigned the same style, therefore, they share the same font and color. Item c is assigned a different style, thus, it uses a different font than a and b.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsectionstar3_7_1_5.html0000664000122200012240000001001507426334130023272 0ustar jeffhjeffh00000000000000 5.1.5 The <b><tt>tix filedialog</tt></b> Command<A NAME=515> </A>

Next: Selecting Directories with Up: File Selection Dialog Previous: Specifying File Types

 

5.1.5 The tix filedialog Command 

TixExFileSelectDialog and TixFileSelectDialog are very similar to each other. So which one should we use? That is just a matter of taste. However, since we know that programmers usually have bad taste, clever programmers would rather step aside and let the users exercise their own taste. To do this, we can use the tix filedialog command.

For any programs based on Tix, the user can choose his preferred type of file dialog by setting the X resource FileDialog to either tixFileSelectDialog or tixExFileSelectDialog. This can usually be done by inserting a line similar to the following into the user's .Xdefaults file:

*myapp*FileDialog: tixExFileSelectDialog

When we call the command tix filedialog, it will return a file dialog widget of the user's preferred type.

The advantage of using tix filedialog is it makes coding flexible. If the management suddenly mandates that we dump the Motif look-and-feel in favor of the MS Windows look-and-feel, we don't need to dig up every line of tixFileSelectDialog calls and replace it with tixExFileSelectDialog. Also, tix filedialog creates only one copy of the file dialog, which can be shared by different parts of the program. Therefore, we can avoid creating a separate file dialog widget for each of the ``Open'', ``Save'' and ``Save As'' commands in our application. This way, we can save resource since a file dialog is a large widget and it takes up quite a bit of space.

set dialog [tix filedialog]
$dialog -title "Select A File" -command selectCmd
$dialog subwidget fsbox config -pattern "*.txt" -directory /usr/info
if {[winfo class $dialog] == "TixExFileSelectDialog"} {
$dialog subwidget fsbox config -filetypes {
{\*} {* - All files}\
{\*.txt} {*.txt - Text files}\
{\*.c} {*.c - C source files}\
}
}
$dialog popup

proc selectCmd {filename} {
puts "You have selected $filename"
}

(Figure 5-4) Using the tix dialog command 

The use of the tix filedialog command is shown in program 5-4 . This program is very similar to what we saw in program 5-1 , except now we aren't really sure which type of file dialog the user have chosen. Therefore, if we want to do something allowed for only one type of file dialogs, we have to be careful. At line 4 of program 5-4, we use the winfo command to see whether the type of the file dialog is TixExFileSelectDialog. If so, we set the value for the -filetypes option of its fsbox subwidget.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsectionstar3_8_4_2.html0000664000122200012240000000454007426334130023301 0ustar jeffhjeffh00000000000000 Chaining Methods<A NAME=6411> </A>

Next: The tixChainMethod call Up: Standard Initialization Methods Previous: The InitWidgetRec Method

 

Chaining Methods 

The above implementation is not sufficient because our TixArrowButton class is derived from TixPrimitive. The class derivation in Tix is basically an is-a relationship: TixArrowButton is a TixPrimitive. TixPrimitive defines the method tixPrimitive:InitWidgetRec which sets up the instance variables of every instance of TixPrimitive. Since an instance of TixArrowButton is also an instance of TixPrimitive, we need to make sure that the instance variables defined by TixPrimitive are also properly initialized. The technique of calling a method defined in a superclass is called the chaining of a method. The following implementation does this correctly:

proc tixArrowButton:InitWidgetRec {w} {
upvar #0 $w data

tixPrimitive:InitWidgetRec $w
set data(count) 0
}

Notice that tixPrimitive:InitWidgetRec is called before anything else is done. This way, we can define new classes by means of successive refinement: we can first ask the superclass to set up the instance variables, then we can modify some of those variables when necessary and also define new variables.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsectionstar3_8_4_3.html0000664000122200012240000000704507426334130023305 0ustar jeffhjeffh00000000000000 The tixChainMethod call<A NAME=6412> </A>

Next: The ConstructWidget Method Up: Standard Initialization Methods Previous: Chaining Methods

 

The tixChainMethod call 

The above implementation of tixArrowButton:InitWidgetRec is correct but it may be cumbersome if we want to switch superclasses. For example, suppose we want to create a new base class TixArrowWidget, which presumably defines common attributes of any class that have arrows in them. Then, instead of deriving TixArrowButton directly from TixPrimitive, we decide to derive TixArrowButton from TixArrowWidget, which is in turn derived from TixPrimitive:

tixWidgetClass tixArrowWidget {
-superclass tixPrimitive
...
}
tixWidgetClass tixArrowButton {
-superclass tixArrowWidget
...
}

Now we would need to change all the method chaining calls in TixArrowButton from:

tixPrimitive:SomeMethod

to:

tixArrowWidget:SomeMethod

This may be a lot of work because you may have chained methods in many places in the original implementation of TixArrowButton.

The tixChainMethod command solves this problem. It will automatically find a superclass that defines the method we want to chain and calls this method for us. For example, the following is a better implementation of tixArrowButton:InitWidgetRec that uses tixChainMethod to avoid calling tixPrimitive:InitWidgetRec directly:

proc tixArrowButton:InitWidgetRec {w} {
upvar #0 $w data

tixChainMethod $w InitWidgetRec
set data(count) 0
}

Notice the order of the arguments for tixChainMethod: the name of the instance, $w, is passed before the method we want to chain, InitWidgetRec. In general, if the method we want to chain has $1+n$arguments:

proc tixPrimitive:MethodToChain {w arg1 arg2 ... argn} {
...
}

We call it with the arguments in the following order

tixChainMethod $w MethodToChain $arg1 $arg2 ... $argn

We'll come back to more detailed discussion of tixChainMethod shortly. For the time being, let's take it for granted that tixChainMethod must be used in the three standard initialization methods: InitWidgetRec, ConstructWidget and SetBindings


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_8_1.html0000664000122200012240000000651007426334130021450 0ustar jeffhjeffh00000000000000 Introduction to Tix Object Oriented Programming<A NAME=61> </A>

Next: Widget Classes and Up: Tix Object Oriented Previous: Tix Object Oriented

 

Introduction to Tix Object Oriented Programming 

Tix comes with a simple object oriented programming (OOP) framework, the Tix Intrinsics, for writing mega-widgets. The Tix Intrinsics is not a general purpose OOP system and it does not support some features found in general purpose OOP systems such as [incr Tcl]. However, the Tix Intrinsics is specially designed for writing mega-widgets. It provides a simple and efficient interface for creating mega-widgets so that you can avoid the complexity and overheads of the general purpose OOP extensions to Tcl.

The hard thing about programming with mega-widgets is to make sure that each instance you create can handle its own activities. Events must be directed to the right widget, procedures must act on data that is internal to that widget, and users should be able to change the options associated with the widget. For instance, we'll show an arrow widget that needs to know what direction it's pointing; this requires each instance of the widget to have its own variable.

Furthermore, each widget should respond properly to changes requested by the application programmer during the program's run. The whole reason people use Tcl/Tk is because they can alter things on the fly.

The advantage of an object-oriented programming system is that you can easily associate a widget with its own data and procedures (methods). This chapter shows how to do that, and how to configure data both at the time the widget is initialized and later during the program.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_8_2.html0000664000122200012240000000400607426334130021447 0ustar jeffhjeffh00000000000000 Widget Class Declaration<A NAME=62> </A>

Next: Using the tixWidgetClass Up: Tix Object Oriented Previous: Component Widgets

 

Widget Class Declaration 

The first step of writing a new widget class is to decide the base class from which the new class. Usually, if the new class does not share any common features with other classes, it should be derived from the TixPrimitive class. If it does share common features with other classes, then it should be derived from the appropriate base class. For example, if the new class support scrollbars, it should be derived from TixScrolledWidget; if it displays a label next to its ``main area'', then it should be derived from TixLabelWidget.

In the case of our new TixArrowButton class, it doesn't really share any common features with other classes, so we decide to use the base class TixPrimitive as its superclass.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_3_1.html0000664000122200012240000000253607426334130021447 0ustar jeffhjeffh00000000000000 What is Tix<A NAME=11> </A>

Next: Tix for Application Up: Introduction Previous: Introduction

 

What is Tix 



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_3_1.html0000664000122200012240000000306207426334130022376 0ustar jeffhjeffh00000000000000 Subwidgets<A NAME=131> </A>

Next: Subwidget Names Up: Accessing The Components Previous: Accessing The Components

 

Subwidgets 

As we have seen in section 1.2.1, the TixControl widget is composed of several widgets: one label widget, one entry widget and two button widgets. These ``widgets inside mega-widgets'' are called subwidgets in the Tix terminology. We will often have the need to access these subwidgets. For example, sometimes we need to change the configuration options of the subwidgets. In other cases, we may need to interact with the subwidgets directly.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_8_3.html0000664000122200012240000000736507426334130021463 0ustar jeffhjeffh00000000000000 Writing Methods<A NAME=63> </A>

Next: Declaring Public Methods Up: Tix Object Oriented Previous: Using the tixWidgetClass

 

Writing Methods 

After we have declared the new widget class, we can write methods for this class to define its behavior. Methods are just a special type of TCL procedures and they are created by the proc command. There are, however, three requirements for methods. First, their names must be prefixed by the command name of their class. Second, they must accept at least one argument and the first argument that they accept must be called w. Third, the first command executed inside each method must be:

upvar #0 $w data

For example, the following is an implementation of the invert method for the class TixArrowButton:

proc tixArrowButton:invert {w} {
upvar #0 $w data

set curDirection $data(-direction)
case $curDirection {
n {
set newDirection s
}
s {
set newDirection n
}
# ....
}
}

Notice that the name of the method is prefixed by the command name of the class (tixArrowButton). Also, the first and only argument that it accepts is w and the first line it executes is ``upvar #0 $wdata''.

The argument w specifies which widget instance this method should act upon. For example, if the user has issued the command

.up invert

on an instance .up of the class tixArrowButton, the method tixArrowButton:invert will be called and the argument w will have the value .up.

The invert method is used to invert the direction of the arrow. Therefore, it should examine the variable .up(-direction), which stores the current direction of the instance .up, and modify it appropriately. It turns out that in TCL, the only clean way to access an array whose name is stored in a variable is the ``upvar #0 $wdata'' technique: essentially it tells the intepreter that the array data should be an alias for the global array whose name is stored in $w. We will soon see how the widget's methods use the data array.

Once the mysterious ``upvar #0 $wdata'' line is explained, it becomes clear what the rest of the tixArrowButton:invert method does: it examines the current direction of the arrow, which is stored in $data(-direction) and inverts it.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_3_2.html0000664000122200012240000000426507426334130021451 0ustar jeffhjeffh00000000000000 Getting Started: the TixControl Widget<A NAME=12> </A>

Next: Creating a TixControl Up: Introduction Previous: Tix for Widget

 

Getting Started: the TixControl Widget 

Pre-requisites: you should be familiar with Tk widgets and programming, or read the Tk book along with this book

Before delving into the deep philosophy of the Tix widgets, let us first have a quick example to demonstrate the usefulness and convenience of an Tix widget: the TixControl is basically an entry widget that displays a value. Next to the entry, there are two up and down arrow buttons for you to adjust the value inside the entry widget.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_3_2.html0000664000122200012240000000313507426334130022400 0ustar jeffhjeffh00000000000000 Subwidget Names<A NAME=132> </A>

Next: The subwidget Method Up: Accessing The Components Previous: Subwidgets

 

Subwidget Names 

Each subwidget inside a mega is identified by a subwidget name. Naturally, the label and entry subwidgets inside a TixSelect widget are called label and entry, respectively. The two button widgets are called incr and decr because they are used to increment and decrement the value inside the TixControl widget (see figure 1-4).


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_8_4.html0000664000122200012240000000433407426334130021455 0ustar jeffhjeffh00000000000000 Standard Initialization Methods<A NAME=64> </A>

Next: The InitWidgetRec Method Up: Tix Object Oriented Previous: Declaring Public Methods

 

Standard Initialization Methods 

Each new mega-widget class must supply three standard initialization methods. When an instance of a Tix widget is created, three three methods will be called to initialize this instance. The methods are InitWidgetRec, ConstructWidget and SetBindings and they will be called in that order. The following sections show how these methods can be implemented.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_3_3.html0000664000122200012240000000423407426334130021446 0ustar jeffhjeffh00000000000000 Accessing The Components Inside Mega Widgets<A NAME=13> </A>

Next: Subwidgets Up: Introduction Previous: Validating User Inputs

 

Accessing The Components Inside Mega Widgets 



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_3_3.html0000664000122200012240000000552307426334130022404 0ustar jeffhjeffh00000000000000 The <tt>subwidget</tt> Method<A NAME=133> </A>

Next: Chaining the subwidget Up: Accessing The Components Previous: Subwidget Names

 

The subwidget Method 

All Tix mega-widgets support the subwidget method. This method takes at least one argument, the name of a subwidget. When you pass only one argument to this method, it returns the pathname of the subwidget which is identified by that name. For example, if .c is the pathname of a TixControl widget, the command:

.c subwidget entry

returns the pathname of the entry subwidget, which is .c.frame.entry in this case.

If you call the subwidget method with additional arguments, the widget command of the specified subwidget will be called with these arguments. For example, if .c is, again, the pathname of a TixControl widget, the command:

.c subwidget entry configure -bg gray

will cause the widget command of the entry subwidget of .c to be called with the arguments configure -bg gray. So actually this command will be translated into the following call:

.c.frame.entry configure -bg gray

which calls the configure method of the entry subwidget with the arguments -bg gray and changes its background color to gray.

We can call the subwidget method with other types of arguments to access different methods of the specified subwidget. For example, the following call:

.c subwidget entry icursor end

calls the icursor method of the entry subwidget with the argument end and sets the insert cursor of the entry subwidget to the end of its input string.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_8_5.html0000664000122200012240000001050107426334130021447 0ustar jeffhjeffh00000000000000 Declaring and Using Variables<A NAME=65> </A>

Next: Initialization of Public Up: Tix Object Oriented Previous: The SetBindings Method

 

Declaring and Using Variables 

The private variables of a widget class do not need to be declared. In fact they can be initialized and used anywhere by any method. Usually, however, general purpose private variables are initialized by the InitWidgetRec method and subwidget variables are initialized in the ConstructWidget method.

We have seen in the tixArrowButton:InitWidgetRec example that the private variable data(count) was initialized there. Also, the private variable data(w:button) was initialized in tixArrowButton:ConstructWidget and subsequently used in tixArrowButton:SetBindings.

In contrast, public variables must be declared inside the class declaration. The following arguments are used to declare the public variables and specify various options for them:

  • -flag: As shown in the class declaration in figure 6-2, the -flag argument declares all the public variables of the TixArrowButton class, -direction and -state

  • -configspec: We can use the -configspec argument to specify the details of each public variable. For example, the following declaration

    -configspec {
    {-direction direction Direction e}
    {-state state State normal}
    }

    specifies that the -direction variable has the resource name direction and resource class Direction; its default value is e. The application programmer can assign value to this variable by using the -direction option in the command line or by specifying resources in the Tk option database with its resource name or class. The declaration of -state installs similar definitions for that variable.

  • -alias: The -alias argument is used to specify alternative names for public variables. In our example, the setting

    -alias {
    {-dir -direction}
    }

    specifies that -dir is the same variable as -direction. Therefore, when the application issue the command

    .up config -dir w

    it is the same as issuing

    .up config -direction w

    The -alias option provides only an alternative name for the application programmer. Inside the widget's implementation code, the variable is still accessed as data(-direction), not data(-dir).



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_3_4.html0000664000122200012240000000455207426334130021452 0ustar jeffhjeffh00000000000000 Another Tix Widget: TixComboBox<A NAME=14> </A>

Next: Creating a TixComboBox Up: Introduction Previous: Caution: Restricted Access

 

Another Tix Widget: TixComboBox 

The TixComboBox widget is very similar to the ComboBox widgets available in MS Windows and Motif 2.0. A TixComboBox consists of an entry widget and a listbox widget. Usually, the ComboBox contains a list of possible values for the user to select. The user may also choose an alternative value by typing it in the entry widget. Figure 1-8 shows two ComboBoxes for the user to choose fonts and character sizes. You can see fro the figure that a listbox is popped down from the ComboBox for fonts for the user to choose among a list of possible fonts.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_3_4.html0000664000122200012240000000444707426334130022411 0ustar jeffhjeffh00000000000000 Chaining the <tt>subwidget</tt> Method<A NAME=134> </A>

Next: Configuring Subwidget Options Up: Accessing The Components Previous: The subwidget Method

 

Chaining the subwidget Method 

Some Tix mega-widgets may have subwidgets that in turn contain subwidgets. For example, the TixExFileSelectDialog (section 5.1.3) widget contains a TixExFileSelectBox subwidget called fsbox, which in turn contains a TixComboBox (section 1.4) subwidget called dir. If we want to access the dir subwidget, we can just ``chain'' the subwidget method. For example, if we have a TixExFileSelectDialog called .file, the following command will return the pathname of the dir subwidget of the fsbox subwidget of .file:

.file subwidget fsbox subwidget dir

Moreover, the following command configures the dir subwidget to have a border of the groove type with a border width of 2 pixels:

.file subwidget fsbox subwidget dir configure -bd 2 -relief groove

The chaining of the subwidget command can be applied for arbitrarily many levels, depending whether your widget has a subwidget that has a subwidget that has a subwidget that has a subwidget ... and so on.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_8_6.html0000664000122200012240000000437107426334130021460 0ustar jeffhjeffh00000000000000 Summary of Widget Instance Initialization<A NAME=66> </A>

Next: Loading the New Up: Tix Object Oriented Previous: Configuration Methods and

 

Summary of Widget Instance Initialization 

The creation of a widget instance is a complex process. You must understand how it works in order to write your widget classes. The following is the steps taken by the Tix Intrinsics when a widget instance is created:

  • When the user creates an instance, the public variables are intilized as discussed in section 6.5.1. Type checkers are always called if they are specified. Configuration methods are called only if they are specified in the -forcecall section.

  • The InitWidgetRec method is called. It should initialize private variable, possibly according to the values the public variables.

  • The ConstructWidget method is called. It should create the component widgets. It should also store the names of public subwidgets into the subwidget variables.

  • The SetBinding method is called. It should create bindings for the component widgets.

After the above steps, the creation of the instance is complete and the user can iterate with it using its widget command.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_8_1_1.html0000664000122200012240000000413707426334130022405 0ustar jeffhjeffh00000000000000 Widget Classes and Widget Instances<A NAME=611> </A>

Next: What is in Up: Introduction to Tix Previous: Introduction to Tix

 

Widget Classes and Widget Instances 

All the mega-widget classes in Tix, such as TixComboBox and TixControl, are implemented in the Tix Intrinsics framework. Also, you can write new widget classes with the Tix Intrinsics. In the next section, I'll go through all the steps of creating a new widget class in Tix. I'll illustrate the idea using a new class ``TixArrowButton'' as an example. TixArrowButton is essentially a button that can display an arrow in one of the for directions (see figure 6-1).

Once you have defined your classes, you can create widget instances of these classes. For example, the following code will create four instances of your new TixArrowButton class:

tixArrowButton .up -direction n
tixArrowButton .left -direction e
tixArrowButton .right -direction w
tixArrowButton .down -direction s


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_3_5.html0000664000122200012240000000555307426334130021455 0ustar jeffhjeffh00000000000000 The TixSelect Widget<A NAME=15> </A>

Next: Creating A TixSelect Up: Introduction Previous: Monitoring the User's

 

The TixSelect Widget 

The TixSelect widget figure 1-10 provides you the same kind of facility that is available with the Tk radiobutton and checkbutton widgets. That is, TixSelect allows the user to select one or a few values out of many choices. However, TixSelect is superior because it allows you to layout the choices in much less space than what is required by the Tk radiobutton widgets. Also, TixSelect supports complicated selection rules. Because of these reasons, TixSelect is a primary choice for implementing toolbar buttons, which often have strict space requirements and complicated selection rules.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_3_5.html0000664000122200012240000001072007426334130022401 0ustar jeffhjeffh00000000000000 Configuring Subwidget Options Using the <tt>-options</tt> Switch<A NAME=135> </A>

Next: Configuring Subwidget Options Up: Accessing The Components Previous: Chaining the subwidget

 

Configuring Subwidget Options Using the -options Switch 

As we have seen above, we can use commands like ``subwidget name configure ...'' to set the configuration options of subwidgets. However, this can get quite tedious if we want to configure many options of many subwidgets.

There is a more convenient and terse way to configure the subwidget options without using the subwidget method: the -options switch. All Tix mega-widgets support the -option switch, which can be used during the creation of the mega-widget.

tixControl .income -label "Income: " -variable income -options {
label.width 8
label.anchor e
entry.width 10
entry.borderWidth 3
}
tixControl .age -label "Age: " -variable age -options {
label.width 8
label.anchor e
entry.width 10
entry.borderWidth 3
}
pack .income .age -side top

(Figure 1-5) Using the -options switch 


(Figure 1-6) Using the -options Switch to Align the Labels 

The use of the -options switch is illustrated in program 1-5, which creates two TixControl widgets for the user to enter his income and age. Because of the different sizes of the labels of these two widgets, if we create them haphazardly, the output may look like fig 1-6.

To avoid this problem, we set the width of the label subwidgets of the .income and .age widgets to be the same (8 characters wide) and set their -anchor option to e (flushed to right), so that the labels appear to be well-aligned. Program 1-5 also does other things such as setting the entry subwidgets to have a width of 10 characters and a border-width of 3 pixels so that they appear wider and ``deeper''. A better result is shown in figure 1-6.

As we can see from program 1-5, the value for the -options switch is a list of one or more pairs of

subwidget-option-spec value ..

subwidget-option-spec is in the form subwidget-name.option-name. For example, label.anchor identifies the anchor option of the label subwidget, entry.width identifies the width option of the entry subwidget, and so on.

Notice we must use the name of the option, not the command-line switch of the option. For example, the option that specifies the border-width of the entry subwidget has the command-line switch -borderwidth but its name is borderWidth (notice the capitalization on the name but not on the command-line switch). Therefore, we have used the capitalized version of ``entry.borderWidth 3'' in program 1-5 and not ``entry.borderwidth 3''. To find out the names of the options of the respective subwidgets, please refer to their manual pages.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_4_1_1.html0000664000122200012240000000523307426334130022377 0ustar jeffhjeffh00000000000000 Adding Pages to a TixNoteBook<A NAME=211> </A>

Next: Keyboard Accelerators Up: TixNoteBook Previous: TixNoteBook

 

Adding Pages to a TixNoteBook 

The example program in figure 2-2 creates the TixNoteBook widget shown in figure 2-1. In the first three lines, we create the notebook widget and two pages inside it. While we create the pages, we also set the labels on the tabs associated with each page and use the -underline option to indicate the keyboard accelerator for each page.

Each time we create a page in the notebook using the add method, a frame subwidget is created for us automatically. This frame subwidget has the same name as the page (the first parameter passed to the add method). We can use the subwidget method to find out the pathname of this frame subwidget and pack everything we want to display on the page into this frame widget. Lines 4-10 of program 2-2 shows how to create the widgets inside the ``Hard Disk'' page. Creating the widgets inside the ``Network'' page will be similar.

tixNoteBook .n
.n add hd -label "Hard Disk" -underline 0
.n add net -label "Network" -underline 0

set frame [.n subwidget hd]
tixControl $frame.access -label "Access Time:"
tixControl $frame.write -label "Write Throughput:"
tixControl $frame.read -label "Read Througput:"
tixControl $frame.capacity -label "Capacity:"
pack $frame.access $frame.write $frame.read $frame.capacity
-side top -fill x

(Figure 2-2) Using The TixNoteBook Widget 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_8_7.html0000664000122200012240000000416707426334130021464 0ustar jeffhjeffh00000000000000 Loading the New Classes<A NAME=67> </A>

Up: Tix Object Oriented Previous: Summary of Widget

 

Loading the New Classes 

Usually, you can use a separate script file to store the implementaion of each new widget class. If you have several of those files, it will be a good idea to group the files into a single directory and create a tclIndex file for them so that the new classes can be auto-loaded.

Suppose you have put the class files into the directory /usr/my/tix/classes. You can create the tclIndex file using the tools/tixindex program that comes with Tix:

cd /usr/my/tix/classes
/usr/my/Tix8.1/tools/tixindex *.tcl

The tclIndex file must be created by the tixindex program. You cannot use the standard auto_mkindex command that comes with Tcl.

Once you have created the tclIndex file, you can use your new widget classes by auto-loading. Here is a small demo program that uses the new TixArrowButton class:

#!/usr/local/bin/tixwish
lappend auto_path /usr/my/tix/classes

# Now I can use my TixArrowButton class!
#
tixArrowButton .arr -direction n
pack .arr


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_8_1_2.html0000664000122200012240000000236407426334130022406 0ustar jeffhjeffh00000000000000 What is in a Widget Instance<A NAME=612> </A>

Next: Variables Up: Introduction to Tix Previous: Widget Classes and

 

What is in a Widget Instance 

Each widget instance is composed of three integral parts: variables, methods and component widgets


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_3_6.html0000664000122200012240000000633007426334130022404 0ustar jeffhjeffh00000000000000 Configuring Subwidget Options Using the Tk Option Database<A NAME=136> </A>

Next: Caution: Restricted Access Up: Accessing The Components Previous: Configuring Subwidget Options

 

Configuring Subwidget Options Using the Tk Option Database 

The -options switch is good if you want to specify subwidget options for one or a few mega-widgets. If you want to specify the subwidget for many mega-widgets, it is easier to use the Tk Option Database.

Options in the Tk Option Database can be specified using the option command and the pathname of the widget. For all the Tix mega-widgets, it is guaranteed that the pathname of their subwidgets ends with the name of the subwidgets. For example, if we have a mega widget called .a.b.megaw and it has a subwidget whose name is subw, then we can be sure that the pathname of the subwidget will be something like

.a.b.megaw.foo.bar.subw

Therefore, if we want to specify options for it in the Option Database, we can issue commands like:

option add *a.b.megaw*subw.option1 value1
option add *a.b.megaw*subw.option2 value2

Notice that it will be wrong to issue the commands as:

option add *a.b.megaw.subw.option1 value1
option add *a.b.megaw.subw.option2 value2

because in general we will not know whether the subwidget is an immediate child window of .a.b.megaw (such a decision is left to the mega-widget implementor and may vary in different versions of the same mega-widget).

Program 1-7 demonstrates how the Tk Option Database can be used to achieve the same effect as program 1-5.

option add *TixControl*label.width 8
option add *TixControl*label.anchor e
option add *TixControl*entry.width 10
option add *TixControl*entry.borderWidth 3

tixControl .income -label "Income: " -variable income
tixControl .age -label "Age: " -variable age

pack .income .age -side top
(Figure 1-7) Using the Tk Option Database in Place of the -options switch 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_4_1_2.html0000664000122200012240000000353507426334130022403 0ustar jeffhjeffh00000000000000 Keyboard Accelerators<A NAME=212> </A>

Next: Delaying the Creation Up: TixNoteBook Previous: Adding Pages to

 

Keyboard Accelerators 

Note that in line 2-3 of program 2-2, we have indicated the keyboard accelerators for the two pages using the -underline option. The value of this option is the position of the character to be underlined in the string, where zero represents the first character. When the user presses $<$Alt-N$>$ or $<$Meta-N$>$ the ``Network'' page will be activated; on the other hand, if he presses $<$Alt-H$>$ or $<$Meta-H$>$ the ``Hard Disk'' page will be activated. The TixNoteBook widget will automatically create the keyboard bindings for these accelerators for us, in a way similar to what the menu widget does, so there is no need to set the keyboard bindings ourself.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/sectionstar3_2.html0000664000122200012240000000267207426334130021407 0ustar jeffhjeffh00000000000000 Preface

Next: About This Manual Up: Tix Programming Guide Previous: Contents

 

Preface



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_3_7.html0000664000122200012240000000371407426334130022410 0ustar jeffhjeffh00000000000000 Caution: Restricted Access<A NAME=137> </A>

Next: Another Tix Widget: Up: Accessing The Components Previous: Configuring Subwidget Options

 

Caution: Restricted Access 

In the current implementation of Tix, there is no limits on how you can access the options of the subwidgets. However, many options of the subwidgets may be already used by the mega-widget in special ways. For example, the -textvariable option of the entry subwidget of TixControl may be used to store some private information for the mega widget. Therefore, you should access the options of the subwidgets with great care. In general you should only access those options that affect the appearance of the subwidgets (such as -font or -foreground) and leave everything else intact. () {In future versions of Tix, there will be explicit restrictions on which subwidget options you can access. Errors will be generated if you try to access restricted subwidget options}


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_4_1_3.html0000664000122200012240000000564207426334130022405 0ustar jeffhjeffh00000000000000 Delaying the Creation of New Pages<A NAME=213> </A>

Next: Changing Page Tabs Up: TixNoteBook Previous: Keyboard Accelerators

 

Delaying the Creation of New Pages 

If your notebook contains many complicated pages, it may take quite a while to create all widgets inside these pages and your program will probably freezes for a few seconds when it pops up the notebook for the first time. To avoid embarrassing moments like this, we can use the ``delayed page creation'' feature of the TixNoteBook widget.

When we create a page using the add method, we can specify the optional parameter -createcmd so that we only need to create the page when the user wants to see it. This is illustrated in program 2-3:

tixNoteBook .n
.n add hd -label "Hard Disk" -underline 0 -createcmd CreateHd
.n add net -label "Network" -underline 0 -createCmd CreateNet

proc CreateHd {frame} {
tixControl $frame.access -label "Access Time:"
tixControl $frame.write -label "Write Throughput:"
tixControl $frame.read -label "Read Througput:"
tixControl $frame.capacity -label "Capacity:"
pack $frame.access $frame.write $frame.read $frame.capacity
-side top -fill x
}

proc CreateNet {frame} {
...
}

(Figure 2-3) Delayed Page Creation 

In line 2 of program 2-3, we use the -createcmd option to specify that the procedure CreateHd should be called when the ``Hard Disk'' page needs to be created. CreateHd takes one argument, the frame subwidget of the page. As we can see, program program 2-3 is not very different than program 2-2, except now we can issue less commands during the set-up of the NoteBook widget and the interface can be started up more quickly.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_4_1_4.html0000664000122200012240000000326607426334130022406 0ustar jeffhjeffh00000000000000 Changing Page Tabs and Deleting Pages<A NAME=214> </A>

Next: PanedWindow Up: TixNoteBook Previous: Delaying the Creation

 

Changing Page Tabs and Deleting Pages 

To change the information in the tabs of the pages, we can use the pageconfigure method. For example, the following command:

.nb pageconfigure hd -label "Fixed Disk"

changes the label from ``Hard Disk'' to ``Fixed Disk''. To delete a page, we can use the delete method.

You should avoid using the pageconfigure and delete. Your users will just feel annoyed if the interface changes all the time and notebook pages appear and disappear every now and then.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/TixBook.html0000664000122200012240000001242207426334130020116 0ustar jeffhjeffh00000000000000 Tix Programming Guide

Next: Contents

The Tix Programming Guide

Tix Group,
http://tix.sourceforge.net

Fri Nov 30 00:51:12 PST 2001 .



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/labels.pl0000664000122200012240000001647307426334130017462 0ustar jeffhjeffh00000000000000# LaTeX2HTML 0.5.3 (Wed Jan 26 1994) # Associate symbolic labels with physical files. $external_labels{"65"} ="$URL/subsection3_8_5.html"; $external_labels{"335"} ="$URL/subsubsection3_5_3_5.html"; $external_labels{"137"} ="$URL/subsubsection3_3_3_7.html"; $external_labels{"3"} ="$URL/section3_5.html"; $external_labels{"12"} ="$URL/subsubsection3_3_2_1.html"; $external_labels{"642"} ="$URL/subsubsection3_8_4_4.html"; $external_labels{"514"} ="$URL/subsubsection3_7_1_4.html"; $external_labels{"111"} ="$URL/subsubsection3_3_5_1.html"; $external_labels{"31"} ="$URL/subsection3_5_1.html"; $external_labels{"24"} ="$URL/subsection3_4_2.html"; $external_labels{"17"} ="$URL/subsubsection3_3_3_6.html"; $external_labels{"652"} ="$URL/subsubsection3_8_5_3.html"; $external_labels{"121"} ="$URL/subsubsection3_3_2_1.html"; $external_labels{"43"} ="$URL/subsubsection3_6_1_1.html"; $external_labels{"36"} ="$URL/subsubsection3_5_3_4.html"; $external_labels{"29"} ="$URL/subsubsection3_4_3_2.html"; $external_labels{"336"} ="$URL/subsubsection3_5_3_6.html"; $external_labels{"131"} ="$URL/subsubsection3_3_3_1.html"; $external_labels{"62"} ="$URL/subsubsection3_8_2_1.html"; $external_labels{"55"} ="$URL/subsection3_7_2.html"; $external_labels{"643"} ="$URL/subsubsection3_8_4_5.html"; $external_labels{"6412"} ="$URL/subsubsectionstar3_8_4_3.html"; $external_labels{"6122"} ="$URL/subsubsectionstar3_8_1_4.html"; $external_labels{"515"} ="$URL/subsubsectionstar3_7_1_5.html"; $external_labels{"211"} ="$URL/subsubsection3_4_1_1.html"; $external_labels{"141"} ="$URL/subsubsection3_3_4_1.html"; $external_labels{"112"} ="$URL/subsubsectionstar3_3_5_3.html"; $external_labels{"02"} ="$URL/subsectionstar3_2_2.html"; $external_labels{"67"} ="$URL/subsection3_8_7.html"; $external_labels{"1511"} ="$URL/subsubsectionstar3_3_5_2.html"; $external_labels{"1221"} ="$URL/subsubsectionstar3_3_2_3.html"; $external_labels{"221"} ="$URL/subsubsection3_4_2_1.html"; $external_labels{"21"} ="$URL/subsection3_4_1.html"; $external_labels{"151"} ="$URL/subsubsection3_3_5_1.html"; $external_labels{"122"} ="$URL/subsubsection3_3_2_2.html"; $external_labels{"14"} ="$URL/subsection3_3_4.html"; $external_labels{"2"} ="$URL/section3_4.html"; $external_labels{"33"} ="$URL/subsection3_5_3.html"; $external_labels{"231"} ="$URL/subsubsection3_4_3_1.html"; $external_labels{"26"} ="$URL/subsubsection3_4_2_2.html"; $external_labels{"19"} ="$URL/subsubsection3_3_4_1.html"; $external_labels{"132"} ="$URL/subsubsection3_3_3_2.html"; $external_labels{"6"} ="$URL/section3_8.html"; $external_labels{"52"} ="$URL/subsection3_7_2.html"; $external_labels{"45"} ="$URL/subsubsection3_6_1_2.html"; $external_labels{"212"} ="$URL/subsubsection3_4_1_2.html"; $external_labels{"113"} ="$URL/subsubsection3_3_5_5.html"; $external_labels{"142"} ="$URL/subsubsection3_3_4_2.html"; $external_labels{"64"} ="$URL/subsection3_8_4.html"; $external_labels{"321"} ="$URL/subsubsection3_5_2_1.html"; $external_labels{"222"} ="$URL/subsubsection3_4_2_2.html"; $external_labels{"152"} ="$URL/subsubsection3_3_5_5.html"; $external_labels{"123"} ="$URL/subsubsection3_3_2_4.html"; $external_labels{"04"} ="$URL/subsectionstar3_2_3.html"; $external_labels{"11"} ="$URL/subsubsection3_3_1_1.html"; $external_labels{"331"} ="$URL/subsubsection3_5_3_1.html"; $external_labels{"232"} ="$URL/subsubsection3_4_3_2.html"; $external_labels{"133"} ="$URL/subsubsection3_3_3_3.html"; $external_labels{"6521"} ="$URL/subsubsectionstar3_8_5_4.html"; $external_labels{"23"} ="$URL/subsection3_4_3.html"; $external_labels{"16"} ="$URL/subsubsection3_3_3_5.html"; $external_labels{"411"} ="$URL/subsubsection3_6_1_1.html"; $external_labels{"213"} ="$URL/subsubsection3_4_1_3.html"; $external_labels{"114"} ="$URL/subsubsection3_3_5_7.html"; $external_labels{"143"} ="$URL/subsubsection3_3_4_3.html"; $external_labels{"1"} ="$URL/section3_3.html"; $external_labels{"6411"} ="$URL/subsubsectionstar3_8_4_2.html"; $external_labels{"6121"} ="$URL/subsubsectionstar3_8_1_3.html"; $external_labels{"42"} ="$URL/subsection3_6_2.html"; $external_labels{"35"} ="$URL/subsubsection3_5_3_2.html"; $external_labels{"28"} ="$URL/subsubsection3_4_3_1.html"; $external_labels{"322"} ="$URL/subsubsection3_5_2_2.html"; $external_labels{"223"} ="$URL/subsubsection3_4_2_3.html"; $external_labels{"153"} ="$URL/subsubsection3_3_5_6.html"; $external_labels{"TableofContents"} ="$URL/tableofcontents3_1.html"; $external_labels{"61"} ="$URL/subsubsection3_8_1_1.html"; $external_labels{"54"} ="$URL/subsubsectionstar3_7_1_5.html"; $external_labels{"5"} ="$URL/section3_7.html"; $external_labels{"47"} ="$URL/subsection3_6_2.html"; $external_labels{"332"} ="$URL/subsubsection3_5_3_2.html"; $external_labels{"1513"} ="$URL/subsubsectionstar3_3_5_4.html"; $external_labels{"134"} ="$URL/subsubsection3_3_3_4.html"; $external_labels{"01"} ="$URL/subsectionstar3_2_1.html"; $external_labels{"66"} ="$URL/subsection3_8_6.html"; $external_labels{"511"} ="$URL/subsubsection3_7_1_1.html"; $external_labels{"412"} ="$URL/subsubsection3_6_1_2.html"; $external_labels{"214"} ="$URL/subsubsection3_4_1_4.html"; $external_labels{"144"} ="$URL/subsubsection3_3_4_4.html"; $external_labels{"13"} ="$URL/subsection3_3_3.html"; $external_labels{"224"} ="$URL/subsubsection3_4_2_4.html"; $external_labels{"154"} ="$URL/subsubsection3_3_5_7.html"; $external_labels{"Contents"} ="$URL/subsection3_8_7.html"; $external_labels{"32"} ="$URL/subsection3_5_2.html"; $external_labels{"25"} ="$URL/subsubsection3_4_2_1.html"; $external_labels{"18"} ="$URL/subsection3_3_4.html"; $external_labels{"333"} ="$URL/subsubsection3_5_3_3.html"; $external_labels{"135"} ="$URL/subsubsection3_3_3_5.html"; $external_labels{"51"} ="$URL/subsubsection3_7_1_1.html"; $external_labels{"44"} ="$URL/subsubsection3_6_1_2.html"; $external_labels{"6511"} ="$URL/subsubsectionstar3_8_5_2.html"; $external_labels{"611"} ="$URL/subsubsection3_8_1_1.html"; $external_labels{"512"} ="$URL/subsubsection3_7_1_2.html"; $external_labels{"413"} ="$URL/subsubsection3_6_1_3.html"; $external_labels{"63"} ="$URL/subsection3_8_3.html"; $external_labels{"56"} ="$URL/subsection3_7_2.html"; $external_labels{"4"} ="$URL/section3_6.html"; $external_labels{"621"} ="$URL/subsubsection3_8_2_1.html"; $external_labels{"03"} ="$URL/subsectionstar3_2_3.html"; $external_labels{"631"} ="$URL/subsubsection3_8_3_1.html"; $external_labels{"6123"} ="$URL/subsubsectionstar3_8_1_5.html"; $external_labels{"334"} ="$URL/subsubsection3_5_3_4.html"; $external_labels{"22"} ="$URL/subsection3_4_2.html"; $external_labels{"15"} ="$URL/subsection3_3_5.html"; $external_labels{"136"} ="$URL/subsubsection3_3_3_6.html"; $external_labels{"641"} ="$URL/subsubsection3_8_4_1.html"; $external_labels{"612"} ="$URL/subsubsection3_8_1_2.html"; $external_labels{"513"} ="$URL/subsubsection3_7_1_3.html"; $external_labels{"414"} ="$URL/subsubsection3_6_1_4.html"; $external_labels{"41"} ="$URL/subsection3_6_1.html"; $external_labels{"34"} ="$URL/subsubsection3_5_2_2.html"; $external_labels{"27"} ="$URL/subsubsection3_4_3_1.html"; $external_labels{"1512"} ="$URL/subsubsectionstar3_3_5_3.html"; $external_labels{"110"} ="$URL/subsection3_3_5.html"; $external_labels{"651"} ="$URL/subsubsection3_8_5_1.html"; $external_labels{"53"} ="$URL/subsubsection3_7_1_3.html"; $external_labels{"46"} ="$URL/subsection3_6_2.html"; 1;Tix8.4.3/docs/html/TixBook/subsubsectionstar3_8_1_3.html0000664000122200012240000000502707426334130023300 0ustar jeffhjeffh00000000000000 Variables<A NAME=6121> </A>

Next: Methods Up: Introduction to Tix Previous: What is in

 

Variables 

Each widget instance is associated with a set of variables. In the example of an instance of the TixArrowButton class, we may use a variable to store the direction to which the arrow is pointing to. We may also use a variable to count how many times the user has pressed the button.

Each variable can be public or private. Public variables may be accessed by the application programmer (usually via configure or cget methods) and their names usually start with a dash (-). They usually are used to represent some user-configurable options of the widget instance. Private variables, on the other hand, cannot be accessed by the application programmer. They are usually used to store information about the widget instance that are of interests only to the widget writer.

All the variables of an instance are stored in a global array that has the same name as the instance. For example, the variables of the instance .up are stored in the global array .up:. The public variable -direction, which records the direction to which the arrow is pointing to, is stored in .up(-direction). The private variable count, which counts how many times the user has pressed the button, is stored in .up(count). In comparison, the same variables of the .down instance are stored in .down(-direction) and .down(count).


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_5_1.html0000664000122200012240000000477407426334130021457 0ustar jeffhjeffh00000000000000 tixTList - The Tix Tabular Listbox Widget<A NAME=31> </A>

Next: Display Items Up: Tabular Listbox and Previous: Tabular Listbox and

 

tixTList - The Tix Tabular Listbox Widget 

TixTList is the Tabular Listbox Widget. It displays a list of items in a tabular format. For example the TixTList widget in figure 3-1 displays files in a directory in rows and columns.

TixTList does all what the standard Tk listbox widget can do, i.e, it displays a list of items. However, TixTList is superior to the listbox widget is many respects. First, TixTList allows you to display the items in a two dimensional format. This way, you can display more items at a time. Usually, the user can locate the desired items much faster in a two dimensional list than the one dimensional list displayed by the Tk listbox widget.

In addition, while the Tk listbox widget can only display text items, the TixTList widget can display a multitude of types of items: text, images and widgets. Also, while you can use only one font and one color in a listbox widget, you can use many different fonts and colors in a TixTList widget. In figure 3-1, we use graphical images inside a tixTList widget to represent file objects. In figure 3-2 , we display the names of all employees of a hypothetical company. Notice the use of a bold font to highlight all employees whose first name is Joe.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_5_1.html0000664000122200012240000000314607426334130022403 0ustar jeffhjeffh00000000000000 Creating A TixSelect Widget<A NAME=151> </A>

Next: Label and Orientation Up: The TixSelect Widget Previous: The TixSelect Widget

 

Creating A TixSelect Widget 

Program 1-11 shows how to create a TixSelect widget. At line 1 of program 1-11, we create a TixSelect using the the tixSelect command.

tixSelect .fruits -label "Fruits: " -orientation horizontal
.fruits add apple -text Apple -width 6
.fruits add orange -text Orange -width 6
.fruits add banana -text Banana -width 6
pack .fruits

(Figure 1-11) Creating a TixSelect Widget 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsectionstar3_8_1_4.html0000664000122200012240000000344507426334130023303 0ustar jeffhjeffh00000000000000 Methods<A NAME=6122> </A>

Next: Component Widgets Up: Introduction to Tix Previous: Variables

 

Methods 

To carry out operations on the widget, you define a set of procedures called methods (to use common object-oriented terminology). Each method can be declared as public or private. Public methods can be called by the application programmer. For example, if the TixArrowButton class supports the public methods invoke and invert, the application programmer can issue the commands to call these method for the widget instance .up.

.up invert
.up invoke

In contrast, Private methods are of interests only to widget writers and cannot be called by application programmers.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_5_2.html0000664000122200012240000000615207426334130021450 0ustar jeffhjeffh00000000000000 Display Items<A NAME=32> </A>

Next: Advantages of Display Up: Tabular Listbox and Previous: tixTList - The

 

Display Items 

Before we rush to discuss how to create the items inside a TixTList widget, let's first spend some time on a very important topic about the Tix library: the repationship between the display items and their host widgets.

We can better define the terms by taking a quick preview of the TixHList widget, which will be covered in details in the next chapter. Let's compare the items displayed on the two widgets in figure 3-3. If we take a close look at the item that shows the usr directory in the TixTList widget on the left versus the TixHList widget on the right, we can see that this item appears exactly the same on both widgets.

If fact, all the items in these two widgets are of the same type: they all display an image next to a textual name. The only difference between these two widgets is how these items are arranged. The TixTList widget arranges the items in rows and columns, while the TixHList widget arranges the items in a hierachical format.

With this observation in mind, we can see a separation of tasks berween the widgets and the items they display. We call the TixHList and TixTList widgets in figure 3-3 host widgets: their task is to arrange the items according to their particular rules. However, they don't really care what these items display; they just treat the items as rectangle boxes. In contrast, these items, which are called display items in Tix terminology, controls the visual information they display, such as the images, text strings, colors, fonts, etc. However, they don't really care where on the host widget they will appear.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsectionstar3_8_1_5.html0000664000122200012240000000367107426334130023305 0ustar jeffhjeffh00000000000000 Component Widgets<A NAME=6123> </A>

Next: Widget Class Declaration Up: Introduction to Tix Previous: Methods

 

Component Widgets 

A Tix mega-widget is composed of one or more component widgets. The main part of a mega-widget is called the root widget, which is usually a frame widget that encompasses all other component widgets. The other component widgets are called subwidgets.

The root widget has the same name as the the mega-widget itself. In the above example, we have a mega-widget called .up. It has a root widget which is a frame widget and is also called .up. Inside .up we have a button subwidget called .up.button.

Similar to variables and methods, component widgets are also classified into public and private component widgets. Only public widgets may be accessed by the application programmer, via the subwidget method (see section 1.3.1) of each widget instance.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_5_3.html0000664000122200012240000000377207426334130021456 0ustar jeffhjeffh00000000000000 Creating Display Items in the TixTList Widget<A NAME=33> </A>

Next: Creating Display Items Up: Tabular Listbox and Previous: Display Items and

 

Creating Display Items in the TixTList Widget 



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_8_3_1.html0000664000122200012240000000342307426334130022404 0ustar jeffhjeffh00000000000000 Declaring Public Methods<A NAME=631> </A>

Next: Standard Initialization Methods Up: Writing Methods Previous: Writing Methods

 

Declaring Public Methods 

All the methods of a class are by default private methods and cannot be accessed by the application programmer. If you want to make a method public, you can include its name in the -method section of the class declaration. In our TixArrowButton example, we have declared that the methods flash, invert and invoke are public methods and they can be accessed by the application programmer. All other methods of the TixArrowButton class will be private. Usually, the names of private methods start with a capital letter with individual words capitalized. The names of public methods start with a lowercase letter.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_5_5.html0000664000122200012240000000524507426334130022411 0ustar jeffhjeffh00000000000000 Specifying Selection Rules<A NAME=152> </A>

Next: Accessing the Value Up: The TixSelect Widget Previous: Accessing the Button

 

Specifying Selection Rules 

For simple selection rules, you can use the -allowzero and -radio options. The -allowzero option specifies whether the user can select none of the choices inside the TixSelect widget. The -radio option controls how many buttons can be selected at once: when set to true, the user can select only one button at a time; when set to false, the user can select as many buttons as he desires.

With these two options, we can write a program using two TixSelect widgets for little Jimmy to fill up his lunch box. On the Sandwich side, we set -radio to true and -allowzero false. That means Jimmy can select one and only one sandwich among beef, cheese or ham sandwiches. On the Veggie side, we want to encourage Jimmy to consume as much veggie as possible, so we set the -allowzero option to false. We also set the -allowzero option to false so that Jimmy cannot get away with eating none of the vegetables (see program 1-13).

tixSelect .sandwich -allowzero false -radio true -label "Sandwich :"
.sandwich add beef -text Beef
.sandwich add cheese -text Cheese
.sandwich add ham -text Ham

tixSelect .vege -allowzero false -radio false -label "Vegetable :"
.vege add bean -text Bean
.vege add carrot -text Carrot
.vege add lettuce -text Lettuce

(Figure 1-13) Specifying Simple Selection Rules 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_4_3_1.html0000664000122200012240000000621407426334130022401 0ustar jeffhjeffh00000000000000 The Scrolled Listbox Widget<A NAME=231> </A>

Next: Other Scrolled Widgets Up: The Family of Previous: The Family of

 

The Scrolled Listbox Widget 

You can create a scrolled listbox widget using the tixScrolledListBox command. Notice that the widget created by the tixScrolledListBox command is not itself a listbox widget. Rather, it is a frame widget which contains two scrollbar subwidgets: one is called hsb (the horizontal scrollbar) and the other is called vsb (the vertical scrollbar). Similarly, the listbox being scrolled is also a subwidget which is appropriately called listbox. Therefore, if we need to put things into the listbox (as we always do!), we can use the subwidget method. As shown in program 2-7, we first find the pathname of the listbox subwidget by calling ``.sl subwidget listbox''. Then, we insert some items into the listbox subwidget.

tixScrolledListBox .sl -scrollbar auto
set listbox [.sl subwidget listbox]

for {set x 0} {$x $<$ 6} {incr x} {
$listbox insert end "This is item $x"
}

pack .sl -side left -expand yes -fill both

(Figure 2-7) Scrolled Listbox Widget 


(Figure 2-8) Scrolled ListBox with Automatic Scrollbars 

Also, as seen in the first line of program 2-7, we use the -scrollbar option to control the scrolling policy of the TixScrolledListBox widget. Usually, we'll set it to ``auto'': the scrollbars are displayed only if they are needed. Other possible values are ``both'': the two scrollbars are always displayed; ``x'': the horizontal scrollbar is always displayed, while the vertical scrollbar is always hidden; ``y'': the opposite of ``x''; ``none'': the two scrollbars are always hidden. The result of program 2-7 is shown in figure 2-8.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_5_6.html0000664000122200012240000000451607426334130022412 0ustar jeffhjeffh00000000000000 Accessing the Value of a TixSelect Widget<A NAME=153> </A>

Next: Specifying Complex Selection Up: The TixSelect Widget Previous: Specifying Selection Rules

 

Accessing the Value of a TixSelect Widget 

The value of a TixSelect widget is a list of the names of the button subwidgets that are currently selected. For example, in program 1-11, if the user has selected the apple button, then the value of the TixSelect widget will be apple. If the user has selected both the apple and the orange buttons, then the value will be the list "apple orange".

The TixSelect widget supports same set of options as the TixControl widget for you to access its value: the -value option stores the current value, which can be queried and modified using the cget and configure methods. You can also use the -variable option to specify a global variable to store the value of the TixSelect widget. The -command option specifies a TCL command to be called whenever the user changes the selection inside a TixSelect widget. This command is called with one argument: the new value of the TixSelect widget. There is also the -disablecallback option which you can use to control whether the command specified by the -command option should be called when the value of the TixSelect changes.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_4_3_2.html0000664000122200012240000000643007426334130022402 0ustar jeffhjeffh00000000000000 Other Scrolled Widgets<A NAME=232> </A>

Next: Tabular Listbox and Up: The Family of Previous: The Scrolled Listbox

 

Other Scrolled Widgets 

The TixScrolledText widget is very similar to the TixScrolledListBox widget, except it scrolls a text subwidget, which is called text. One problem with the TixScrolledText widget, though, is its -scrollbar option doesn't work in the auto mode. This is due to a bug in Tk which doesn't report the width of the text subwidget correctly. Until this bug is fixed in TK, the auto mode will behave the same way as the both mode for the TixScrolledText widget.

Another scrolled-widget is TixScrolledWindow. Sometimes you have a large number of widgets that can't possibly be shown in the screen all at once and your application doesn't allow you to divide the widgets into several pages of a TixNoteBook. In this case you can use TixScrolledWindow. It contains a frame subwidget called window. You can just create as many widgets as you need as children of the window subwidget. An example is shown in program 2-9, which uses the TixScrolledWindow widget to implement a ``cheap'' spreadsheet application. The boxes of the spreadsheet are just entry widgets and they are packed inside the window subwidget. The user will be able to scroll to different parts of the spreadsheet if it is too large to fit in one screen.

tixScrolledWindow .sw -scrollbar auto
set f [.sw subwidget window]

for {set x 0} {$x $<$ 10} {incr x} {
frame $f.f$x
pack $f.f$x -side top -expand yes -fill both
for {set y 0} {$y $<$ 10} {incr y} {
entry $f.f$x.e$y -width 10
pack $f.f$x.e$y -side left -fill x
}
}

pack .sw -side left -expand yes -fill both

(Figure 2-9) Cheap Spreadsheet Application with TixScrolledWindow 

There are two more scrolled-widgets in the Tix library: TixScrolledTList scrolls a TixTList widget and TixScrolledHList scrolls a TixHList widget. The subwidgets that they scroll are called tlist and hlist, respectively. The use of the TList and HList widgets will be described in the next chapters.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_5_7.html0000664000122200012240000000472307426334130022413 0ustar jeffhjeffh00000000000000 Specifying Complex Selection Rules<A NAME=154> </A>

Next: Container Widgets Up: The TixSelect Widget Previous: Accessing the Value

 

Specifying Complex Selection Rules 

If you want to have more complex selection rules for the TixSelect widget, you can use the -validatecmd option. This option works the same as the -validatecmd option of the TixControl widget which we discusses in section 1.2: it specifies a command to be called every time the user attempts to change the selection inside a TixSelect widget.

In the example program 1-14, the procedure TwoMax will be called every time the user tries to change the selection of the .fruits widget. TwoMax limits the maximum number of fruits that the user to choose to be 2 by always truncating the value of the TixSelect widget to have no more than two items. If you run this program, you will find out that you can never select a third fruit after you have select two fruits.

tixSelect .fruits -label "Fruits: " -radio false -validatecmd TwoMax
.fruits add apple -text Apple -width 6
.fruits add orange -text Orange -width 6
.fruits add banana -text Banana -width 6
pack .fruits

proc TwoMax {value} {
if {[llength $value] $>$ 2} {
return [lrange $value 0 1]
} else {
return $value
}
}

(Figure 1-14) Specifying More Complex Selection Rules 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsectionstar3_3_5_2.html0000664000122200012240000000322407426334130023273 0ustar jeffhjeffh00000000000000 Label and Orientation<A NAME=1511> </A>

Next: Creating the Button Up: The TixSelect Widget Previous: Creating A TixSelect

 

Label and Orientation 

As shown in program 1-11, with the -label option, we can put a label next to the button subwidgets as the caption of the TixSelect widget. We can also control the layout of the button subwidgets using the -orientation option. The -orientation option can have two values: horizontal (the default value) or vertical, and the buttons are lied up accordingly. Figure 1-12 shows the output of a TixSelect widget whose -orientation is set to vertical.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsectionstar3_3_5_3.html0000664000122200012240000000500407426334130023272 0ustar jeffhjeffh00000000000000 Creating the Button Subwidgets and Configuring Their Appearance<A NAME=1512> </A>

Next: Accessing the Button Up: The TixSelect Widget Previous: Label and Orientation

 

Creating the Button Subwidgets and Configuring Their Appearance 

After we have created the TixSelect widget, we can create the button subwidgets inside the TixSelect widget by the add widget command (lines 2-4 of program 1-11).

The first argument to the add command is the name of the button subwidget. Additional arguments can be given in option-value pairs to configure the appearance of the button subwidget. These option-value pairs can be any of those accepted by a normal TK button widget. As shown in program 1-11, we use the -text option to put appropriate text strings over the three button subwidgets.

Notice that we also set the -width option of all the button subwidgets to 6 characters. This way, the three buttons will have the same width. If we didn't set the -width option for the button widgets, they will have different widths, depending on their text string, and the result would look less esthetically pleasing than buttons with same widths.

The output of program 1-11 is shown in figure 1-12


(Figure 1-12) The TixSelect Widget 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsectionstar3_3_5_4.html0000664000122200012240000000463507426334130023304 0ustar jeffhjeffh00000000000000 Accessing the Button Subwidgets<A NAME=1513> </A>

Next: Specifying Selection Rules Up: The TixSelect Widget Previous: Creating the Button

 

Accessing the Button Subwidgets 

We have already seen the concept of subwidgets and how they can be accessed in section 1.3.1 - when we create a Tix mega-widget, some subwidgets are created for us automatically. For example, the label and entry subwidgets inside a TixControl widget. We can access these subwidgets in a multitude of ways, including using the subwidget method.

One thing about the subwidgets we saw in section 1.3.1 is that they are ``static'', meaning they are created when the mega-widget is created and they remain there for the whole lifetime of the mega-widget.

The TixSelect widget takes us to a new concept: dynamic subwidgets are subwidgets that can be created on-the-fly. After we add a new button into the TixSelect widget, we get a new subwidget. The name of this new subwidget is given by the first parameter passed to the add method. As the following code demonstrates, we can access this new subwidget using the subwidget method:

tixSelect .s
.s add apple -text Apple
.s add orange -text Orange
# Mmmm..., let's make the widget look more educated
# by using French words
.s subwidget apple config -text Pomme
.s subwidget orange config -text Orange


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_7_1.html0000664000122200012240000000514207426334130021447 0ustar jeffhjeffh00000000000000 File Selection Dialog Widgets<A NAME=51> </A>

Next: Using the TixFileSelectDialog Up: Selecting Files and Previous: Selecting Files and

 

File Selection Dialog Widgets 

There are two file dialog widgets inside Tix: the TixFileSelectDialog (figure 5-2) is similar to the FileSelectionDialog widget in Motif; TixExFileSelectDialog (figure 5-3) looks like its conunterpart in MS Windows. Both widgets let the user navigate through the file system directories and select a file.

One advanced feature of both types of file selection boxes is they use ComboBoxes to store the files, directories and patterns the user has selected in the past. If the user wants to select the same files again, he can simply open the ComboBoxes and click on his past inputs. This saves a lot of keystrokes and is especially useful when the user needs to switch among several files or directories.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_7_2.html0000664000122200012240000000577207426334130021461 0ustar jeffhjeffh00000000000000 Selecting Directories with the TixDirTree and TixDirList Widgets<A NAME=52> </A>

Next: Tix Object Oriented Up: Selecting Files and Previous: 5.1.5 The tix

 

Selecting Directories with the TixDirTree and TixDirList Widgets 

There are two Tix widgets for selecting a directory: TixDirList (figure 5-6 ) and TixDirTree (figure 5-6). Both of them display the directories in a hierarchical format. The display in the TixDirList widget is more compact: it shows only the parent- and child-directories of a particular directory. The TixDirTree widget, on the other hand, can display the whole tree structure of the file system.

The programming interface of these two widgets are the same and you can choose the which one to use depending on your application. As shown in the following example, you can use the -directory option of the TixDirList widget to specify a directory to display. In the example, we set -directory to be /home/ioi/dev. As a result, the TixDirList widget displays all the subdirectories and all the ancestor directories of /home/ioi/dev. You can use the -command and -browsecmd options to handle the user events: a double click or Return key-stroke will trigger the -command option and a single click or space bar key stroke will trigger the -browsecmd option. Normally, you would handle both type of events in the same manner, as we have done in program 5-5

tixDirList .d -value /home/ioi/dev
-command "selectDir" -browsecmd "selectDir"
pack .d

proc selectDir {dir} {
puts "now you select $dir"
}

(Figure 5-5) Using the TixDirList widget 


(Figure 5-6) The DirTree and DirList Widgets 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_2_1.html0000664000122200012240000000654307426334130022404 0ustar jeffhjeffh00000000000000 Creating a TixControl Widget<A NAME=121> </A>

Next: Accessing The Value Up: Getting Started: the Previous: Getting Started: the

 

Creating a TixControl Widget 

The following code demonstrates how to create a TixControl widget and specify its options:

tixControl .lawyers -label Lawyers: -max 10 -min 0
.lawyers config -integer true -step 2

This example creates a TixControl widget that let us to select the numbers of lawyers we wish to be allowed in this country. (Figure 1-2)

Let us examine the options: the -label option specifies a caption for this widget. The -max option specifies the maximum number of lawyers we can choose. The -min option specifies the minimum number of lawyers we can choose: although we would love to enter a negative number, reality dictate that the lower limit must be zero. The -integer option indicates that the number of lawyers must be an integer; that is, we respect the lawyers' rights not to be chopped up into decimal points. Finally, since lawyers seem to go in pairs, we set the -step option to 2, which indicates that when we press the up/down arrow buttons, we want the number of lawyers to go up and down by two each time.

As shown in the example, you can create and manipulate a Tix widget in the same manner as the standard Tk widgets. The options of the widget can be specified during the creation of the widget. Alternatively, they can be changed by the configure widget command. In addition, options can also be specified in the option database or as X resources. Here is an example that produces the same result as the previous code fragment:

option add *lawyers.max 10
option add *lawyers.min 0
tixControl .lawyers -label Lawyers: -integer true
.lawyers config -step 2

In figure 1-3, you can see the composition of TixControl: it is made out of a label widget, an entry widget and two button widgets. Widgets that are composed of other widgets, like TixControl, are called mega-widgets. Most widgets in the Tix library are mega-widgets (xx: and as you know this book is about them!).


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_2_2.html0000664000122200012240000000471007426334130022377 0ustar jeffhjeffh00000000000000 Accessing The Value of a TixControl Widget<A NAME=122> </A>

Next: Disabling Callbacks Temporarily Up: Getting Started: the Previous: Creating a TixControl

 

Accessing The Value of a TixControl Widget 

The TixControl widget allows the user to input a value. There are several ways to read this value in your program. First of all, TixControl stores the current value in the -value option. You can use query the -value option by calling the command

.c cget -value this command will return the current value of the tixContro widget .c. The following command sets the value of the widget to a new number (100):

.c config -value 100

The second way to access the value of TixControl is to use the -variable option. This options instructs the TixControl widget to store the its value into a global variable so that you can read it at any time. Also, by assigning a new value to this global variable, you can change the value of the TixControl widget. Here is an example:

.c config -variable myvar
set myvar 100

In some situations, you may want to be informed immediately when the value of the TixControl widget changes. To accomplish this, you can use the -command option. The following line causes the TCL procedure valueChanged to be called whenever the value of .c changes:

tixControl .c -command valueChanged


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_8_5_1.html0000664000122200012240000000470307426334130022410 0ustar jeffhjeffh00000000000000 Initialization of Public Variables<A NAME=651> </A>

Next: Type Checker Up: Declaring and Using Previous: Declaring and Using

 

Initialization of Public Variables 

When a widget instance is created, all of its public variables are initialized by the Tix Intrinsics before the InitWidgetRec method is called. Therefore, InitWidgetRec and any other method of this widgte instance are free to assume that all the public variables have been properly initialized and use them as such.

The public variables are initialized by the following criteria.

  • Step 1: If the value of the variable is specified by the creation command, this value is used. For example, if the application programmer has created an instance in the following way:

    tixArrowButton .arr -direction n

    The value n will be used for the -direction variable.

  • Step 2: if step 1 fails but the value of the variable is specified in the options database, that value is used. For example, if the user has created an instance in the following way:

    option add *TixArrowButton.direction w
    tixArrowButton .arr

    The value w will be used for the -direction variable.

  • Step3: if step 2 also fails, the default value specified in the -configspec secton of the class declaration will be used.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_2_4.html0000664000122200012240000000376307426334130022410 0ustar jeffhjeffh00000000000000 Validating User Inputs<A NAME=123> </A>

Next: Accessing The Components Up: Getting Started: the Previous: Disabling Callbacks Temporarily

 

Validating User Inputs 

Sometimes it may be necessary to check the user input against certain criteria. For example, you may want to allow only even numbers in a TixControl widget. To do this, you can use the -validatecmd option, which specifies a Tcl command to call whenever the user enters a new value. Here is an example:

tixControl .c -value 0 -step 2 -validatecmd evenOnly

proc evenOnly {value} {
return [expr $value - ($value %2)]
}

The value parameter to evenOnly is the new value entered by the user. The evenOnly procedure makes sure that the new value is even by returning a modified, even number. The Tcl command specified by the -validatecmd must return a value which it deems valid and this value will be stored in the -value option of the TixControl widget.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_8_5_3.html0000664000122200012240000000757007426334130022417 0ustar jeffhjeffh00000000000000 Public Variable Configuration Methods<A NAME=652> </A>

Next: Configuration Methods and Up: Declaring and Using Previous: Type Checker

 

Public Variable Configuration Methods 

After a widget instance is created, the user can assign new values to the public variables using the configure method. For example, the following code changes the -direction variable of the .arr instance to n.

.arr configure -direction n

In order for configuration to work, you have to define a configuration method that does what the programmer expects. The configuration method of a public variable is invoked whenever the user calls the configure method to change the value of this variable. The name of a configuration method must be the name of the public variable prefixed by the creation command of the class and :config. For example, the name configuration method for the -direction variable of the TixArrowButton class is tixArrowButton:config-direction. The following code implements this method:

proc tixArrowButton:config-direction {w value} {
upvar #0 $w data

$data(w:button) config -bitmap @$value.xbm
}

Notice that when tixArrowButton:config-direction is called, the value parameter contains the new value of the -direction variable but data(-direction) contains the old value. This is useful when the configuration method needs to check the previous value of the variable before taking in the new value.

If a type checker is defined for a variable, it will be called before the configuration method is called. Therefore, the configuration method can assume that the type of the value parameter is got is always correct.

Sometimes it is necessary to override the value supplied by the user. The following code illustrates this idea:

proc tixArrowButton:config-direction {w value} {
upvar #0 $w data

if {$value == "n"} {
set value s
set data(-direction) $value
}

$data(w:button) config -bitmap @$value.xbm
return $data(-direction)
}

Notice the above code always overrides values of n to s. If you need to override the value, you must do the following two things:

  • Explicitly set the instance variable inside the configuration method (the set data(-direction) $value line).

  • Return the modified value from the configuration method.

If you do not need to override the value, you don't need to return anything from the configuration method. In this case, the Tix Intrinsics will assign the new value to the instance variable for you.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/images.pl0000664000122200012240000000015207426334130017450 0ustar jeffhjeffh00000000000000# LaTeX2HTML 0.5.3 (Wed Jan 26 1994) # Associate image original text (scrambled) with physical files. 1;Tix8.4.3/docs/html/TixBook/subsubsection3_5_3_1.html0000664000122200012240000000510007426334130022373 0ustar jeffhjeffh00000000000000 Creating Display Items<A NAME=331> </A>

Next: Setting the Styles Up: Creating Display Items Previous: Creating Display Items

 

Creating Display Items 

Now it's time to put our knowledge about host widgets, display items and display styles into practice. The following example code creates two items in a TixTList widget using the insert method:

tixTList .t
pack .t

.t insert end -itemtype text -text "First Item" -underline 0
.t insert end -itemtype text -text "Second Item" -underline 0

set picture [image create bitmap -file picture.xbm]
.t insert end -itemtype image -image $picture

As we can see, the insert method of TixTList is very similar to the insert method of the standard Tk listbox widget: it inserts a new item into the TixTList widget. The first argument it takes is the location of the new item. For example 0 indicates the first location in the list, 1 indicates the second location, and so on. Also the special keyword end indicates the end of the list.

Then, we can use the -itemtype switch to specify the type of display item we want to create. There are currently four types of items to choose from: text, image, imagetext and window. In the above example, we create two items of the type text and one item of the type image. The subsequent arguments to the insert method set the configuration options of the individual attributes of the new item.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_5_3_2.html0000664000122200012240000000776607426334130022420 0ustar jeffhjeffh00000000000000 Setting the Styles of the Display Items<A NAME=332> </A>

Next: Configuring and Deleting Up: Creating Display Items Previous: Creating Display Items

 

Setting the Styles of the Display Items 

Note that in the above example, if we want to control the foreground color of the text items, we cannot issue commands such as:

.t insert end -itemtype text -text "First Item" -foreground black

because -foreground is not an individual attribute of the text item. Instead, it is a collective attribute and must be accessed using a display style object. To do that we can use the command tixItemStyle to create display styles, as shown in the following example:

set style1 [tixDisplayStyle text -font 8x13]
set style2 [tixDisplayStyle text -font 8x13bold]

tixTList .t; pack .t

.t insert end -itemtype text -text "First Item" -underline 0
-style $style1
.t insert end -itemtype text -text "Second Item" -underline 0
-style $style2
.t insert end -itemtype text -text "Third Item" -underline 0
-style $style1

The first argument of tixDisplayStyle specify the type of style we want to create. Each type of display item needs its own type of display styles. Therefore, for example, we cannot create a style of type text and assign it to an item of type image. The subsequent arguments to tixDisplayStyle set the configuration options of the collective attributes defined by this style. A complete list of the configuration options of each type of the display style is in figures ??? through ???.

The tixDisplayStyle command returns the names of the newly created styles to us and we use the variables style1 and style2 to store these names. We can then assign the styles to the display items by using the names of the styles. As shown in figure 3-5, by assing these two styles to the -style option of the display items, we assigned a medium-weight font to the first and third item and a bold font to the second item.


(Figure 3-5) Two Display Styles With Different Fonts 

The name of the style returned by tixDisplayStyle is also the name of a command which we can use to control the style. For example, we can use the following commands to switch the fonts in the two styles we created in the above example:

$style1 configure -font 8x13bold
$style2 configure -font 8x13

After the execution of the above command, the font in the second item in the TixTList widget becomes medium-weight and the font in the first and third items becomes bold, as shown in figure 3-5.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_5_3_3.html0000664000122200012240000000344307426334130022405 0ustar jeffhjeffh00000000000000 Configuring and Deleting the Items<A NAME=333> </A>

Next: Choosing the Orientation Up: Creating Display Items Previous: Setting the Styles

 

Configuring and Deleting the Items 

You can configure the individual attributes of the items using the entryconfigure method. There is also the entrycget method for querying the attributes of the items. To delete the items, you can use the delete method. In the following example, we use these two methods to change the first and third items to display the text strings One and Two and change the third item to use the style $style2. Then we delete the second item using the delete command.

.t entryconfigure 0 -text One
.t entryconfigure 2 -text Two
.t delete 1


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_5_3_4.html0000664000122200012240000000562107426334130022406 0ustar jeffhjeffh00000000000000 Choosing the Orientation and Number of Rows or Columns<A NAME=334> </A>

Next: Event Handling Up: Creating Display Items Previous: Configuring and Deleting

 

Choosing the Orientation and Number of Rows or Columns 

There are three options that controls the layout of the items in the TixTList widget. The -orientation option can be set to either vertical or horizontal. When -orientation is set to vertical, the items are laid out vertically from top down and wrapped to the next column when the bottom is reached (see figure 3-6). The opposite layout policy is chosen if -orientation is set to horizontal (see figure 3-6).

When the -orientation option is set to vertical, normally the number of columns displayed depends on the number of items in the TixTList widget: the more items there are, the more columns will there be. However, we can use the -columns option to control the number of columns: the items will be wrapped in a way so that the number of columns produced will be exactly as dicated by the -columns option.

One use of the -columns option is to specify the same layout policy as that of the standard Tk listbox widget. We can do this by setting -orientation to vertical and -columns to 1. This way we can get a replacement listbox widget that can display multiple fonts and colors and graphics!

The counterpart of the -columns option is the -rows option, which is used for the same purpose when the -orientation option is set to horizontal.


(Figure 3-6) The -orientation option of the TixSelect Widget 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsectionstar3_3_2_3.html0000664000122200012240000000427007426334130023273 0ustar jeffhjeffh00000000000000 Disabling Callbacks Temporarily<A NAME=1221> </A>

Next: Validating User Inputs Up: Getting Started: the Previous: Accessing The Value

 

Disabling Callbacks Temporarily 

Now, if you want to change a value from within the program, you have to disable the callback. The reason is that the callback runs whenever you (as well as the user) makes a change. In particular, if you make a change within the callback procedure and forget to disable the callback, it will recursively call itself and enter an infinite loop. To avoid this problem, you should use the -disablecallback option. Here is an example:

tixControl .c -command addOne

proc addOne {value} {
.c config -disablecallback true
.c config -value [incr value]
.c config -disablecallback false
}

The procedure addOne adjusts the value of .c by one whenever the user enters a new value into .c. Notice that it is necessary to set -disablecallback here or otherwise addOne will be infinitely recursed! That is because addOne is called every time the value changes, either by the user or by the program.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_5_3_5.html0000664000122200012240000000334107426334130022404 0ustar jeffhjeffh00000000000000 Event Handling<A NAME=335> </A>

Next: Selection Up: Creating Display Items Previous: Choosing the Orientation

 

Event Handling 

You can handle the events in a TList widget using the -browsecmd and -command options. The meanings of these two options are silimar to their meanings in other Tix widgets such as the ComboBox. Usually, the command specified by -browsecmd is called when the user clicks or drags the mouse over the items or presses the arrow keys. The command specified by -command is called when the user double-clicks or presses the Return key. These commands are called with one extra argument - the index of the currently ``active'' item, which is usually the item under the mouse cursor.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_6_1_1.html0000664000122200012240000000543007426334130022400 0ustar jeffhjeffh00000000000000 Creating a Hierarchical List<A NAME=411> </A>

Next: Creating Entries in Up: TixHList - The Previous: TixHList - The

 

Creating a Hierarchical List 

A TixHList widget can be created by the command tixHList. However, most likely, you would want to create a TixHList with scrollbars attached. Therefore, usually you will use the tixScrolledHList command to create a scrolled hierarchical listbox (line 1 in program 4-2). The tixScrolledHList command is very similar to the TixScrolledListBox command we saw in section 2.3.1. It creates a TixHList subwidget of the name hlist and attaches two scrollbars to it.

As shown in the first five lines in program 4-2, we create a scrolled TixHList widget, using the -options switch (see section 1.3.5) to set several options for the hlist subwidget (we'll talk about these options shortly). Then, we can access the HList subwidget widget using the subwidget hlist method (line 7 in program 4-2).

tixScrolledHList .sh -options {
hlist.itemType text
hlist.drawBranch false
hlist.indent 8
}
pack .sh -expand yes -fill both
set hlist [.sh subwidget hlist]

$hlist add foo -text "foo"
$hlist add foo.bar -text "foo's 1st son"
$hlist add foo.bor -text "foo's 2nd son"
$hlist add foo.bar.bao -text "foo's 1st son's 1st son"
$hlist add foo.bar.kao -text "foo's 1st son's 2nd son"
$hlist add dor -text "dor, who has no son"

(Figure 4-2) Creating Entries in a HList Widget 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_5_3_6.html0000664000122200012240000000401007426334130022377 0ustar jeffhjeffh00000000000000 Selection<A NAME=336> </A>

Next: Hierarchical Listbox Up: Creating Display Items Previous: Event Handling

 

Selection 

The -selectmode option controls how many items the user can select at one time. In the single and browse mode, the user can select only one item at a time. In the multiple and extended mode, the user can select multiple items; the extended mode allows disjoint selections while the multiple mode does not.

Normally, the user selects the items using the mouse or the keyboard. You can find out which items the user has selected with the info selection method, which returns a list of the currently selected items. You can also set the selection using the selection set method. For example, the command .tlist selection set 3 selects the item whose index is 3. The command .tlist selection set 2 10 selects all the items at index 2 through 10. The method selection clear empties the selection.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_6_1_2.html0000664000122200012240000001066507426334130022407 0ustar jeffhjeffh00000000000000 Creating Entries in a HList Widget<A NAME=412> </A>

Next: Controlling the Layout Up: TixHList - The Previous: Creating a Hierarchical

 

Creating Entries in a HList Widget 

Each entry in an HList widget has a unique name, called its entry-path, which determines each entry's position in the HList widget. The entry-paths of the HList entries are very similar to the pathnames of Unix files. Each entry-path is a list of string names separated by a separator character. By default, the separator character is the period character (.), but it can be configured using the -separator option of the HList widget.

In program 4-3, we add several new entries foo, foo.bar, foo.bor, foo.bar.bao, .. etc, into the HList widget using the add method. The relationship between the entries is signified by their names, in a way similar to how Unix denotes directories and subdirectories. For example, foo is the parent of foo.bar and foo.bor; foo.bar is the parent of foo.bar.bao, and so on. As far as the terminology goes, we also say that foo.bar a child of foo; foo is an ancestor of foo.bar.bao and foo.bar.bao is a descendant of foo.

The output of program 4-2 is shown in figure 4-3. As we can see, the entries are displayed under their parents with the amount of indentation control by the -indent option of the HList widget: foo.bar.bao and foo.bar.kao are display under foo.bar, which is in turn displayed under foo.

Entries with no parents, for example, foo and dor in program 4-2, are called top-level entries. Top-level entries are usually entries with no immediate superiors in a hierarchical. For example, the owner of a company, the principle of a school or the root directory of a Unix file system. Toplevel entries are displayed with no indentation.

As evident from program 4-2, all entries who entry-path does not contain a separator character are top-level entries. The only exception is the separator character itself is also a toplevel entry. This makes it easy to display Unix file and directory names inside the HList widget, as shown in program 4-4.

set folder [tix getimage folder]
tixScrolledHList .sh -options {
hlist.separator /
hlist.itemType imagetext
hlist.drawBranch true
hlist.indent 14
hlist.wideSelection false
}
pack .sh -expand yes -fill both
set hlist [.sh subwidget hlist]

foreach directory {/ /usr /usr/bin /usr/local /etc /etc/rc.d} {
$hlist add $directory -image $folder -text $directory
}

(Figure 4-4) Displaying Directories in a HList Widget 

Each entry is associated with a display item (see section 3.2 about display items). We can use the -itemtype option of the HList widget to specify the default type of display item to be created by the the add method, as shown in program 4-2 and 4-4. Alternatively, we can also specify the type of display item using the -itemtype option for the add method.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsectionstar3_8_5_2.html0000664000122200012240000000432707426334130023305 0ustar jeffhjeffh00000000000000 Type Checker<A NAME=6511> </A>

Next: Public Variable Configuration Up: Declaring and Using Previous: Initialization of Public

 

Type Checker 

You can use a type ckecker procedure to check whether the user has supplied a value of the correct type for a public variable. The type checker is specified in the -configspec section of the class declaration after the default value. The following code specifies the type checker procedure CheckDirection for the -direction variable:

-configspec {
{-direction direction Direction e CheckDirection}
{-state state State normal}
}
...
}

proc CheckDirection {dir} {
if {[lsearch {n s w e} $dir] != -1} {
return $dir
} else {
error "wrong direction value $
$"$dir$
$""
}

Notice that no type checker has been specified for the -state variable and thus its value will not be checked.

If a type checker procedure is specified for a public variable, this procedure will be called once the value of a public variable is determined by the three steps mentioned above.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_6_1_3.html0000664000122200012240000000327307426334130022405 0ustar jeffhjeffh00000000000000 Controlling the Layout of the Entries<A NAME=413> </A>

Next: Handling the Selection Up: TixHList - The Previous: Creating Entries in

 

Controlling the Layout of the Entries 

There are two options to control the layout of the entries: the -showbranch option specifies whether branch lines should be drawn between parent entries and their children. The -indent option controls the amount of relative indentation between parent and child entries. Notice the -drawbranch option is turned on in figure 4-5 but turned off in figure 4-3. Usually, you need to set a bigger indentation when the branches are shown - we used an indentation of 14 pixels in 4-5 compared to 8 pixels in 4-3 .


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_6_1_4.html0000664000122200012240000000423507426334130022405 0ustar jeffhjeffh00000000000000 Handling the Selection and User Event<A NAME=414> </A>

Next: Creating Collapsible Tree Up: TixHList - The Previous: Controlling the Layout

 

Handling the Selection and User Event 

The handling of the selection and user events for the HList widget is very similar to the TList widget (see section 3.3.5), except that for the HList widget all the operations are based on entry-paths, not list indices. The methods info selection, selection set and selection clear can be used to query, set or clear the selection; the option -selectmode controls how many entries can be selected at a time; the options -browsecmd and -command can be used to specify a command to be called to handle user events.

There is one more option worth mentioning: the -wideselection option. When set to true, the selection highlight will be drawn across the whole HList widget (see figure 4-3). When set to false, selection highlight will be drawn as wide as the selected entry (see figure 4-5). Normally, you would set -wideselection to false when you use imagetext items inside (as we did in program 4-4).


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsectionstar3_8_5_4.html0000664000122200012240000000332007426334130023277 0ustar jeffhjeffh00000000000000 Configuration Methods and Public Variable Initialization<A NAME=6521> </A>

Next: Summary of Widget Up: Declaring and Using Previous: Public Variable Configuration

 

Configuration Methods and Public Variable Initialization 

For efficiency reasons, the configuration methods are not called during the intialization of the public variables. If you want to force the configuration method to be called for a particular public variable, you can specify it in the -forcecall section of the class declaration. In the following example, we force the configuration method of the -direction variable to be called during intialization:

-forcecall {
-direction
}


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_4_1.html0000664000122200012240000000502207426334130021441 0ustar jeffhjeffh00000000000000 TixNoteBook<A NAME=21> </A>

Next: Adding Pages to Up: Container Widgets Previous: Container Widgets

 

TixNoteBook 

When your need to put a lot of information into your interface, you may find out that your window has to grow intolerably big in order to hold all the information. Having a window that's 10000 pixels wide and 5000 pixels high doesn't seem to be the perfect solution. Of course, you can ``chop up'' your big window into a set of smaller dialog boxes, but the user will most likely find it impossible to manage 20 different dialog boxes on their desktop.

The TixNoteBook (fig 2-1) widget comes into rescue. It allows you to pack a large interface into manageable ``pages'' using a notebook metaphor: it contains multiple pages with anything you want on them, displays one at a time, and attaches a tab to each page so the user can bring it forward with a single click on the tab.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_4_1.html0000664000122200012240000000423307426334130022400 0ustar jeffhjeffh00000000000000 Creating a TixComboBox Widget<A NAME=141> </A>

Next: Controlling the Style Up: Another Tix Widget: Previous: Another Tix Widget:

 

Creating a TixComboBox Widget 

tixComboBox .c -label "Animal:" -editable true
.c insert end cat
.c insert end dog
.c insert end pig

(Figure 1-9) Creating a ComboBox 

In program 1-9, we set up a ComboBox .c for the user to select an animal to play with. If the user is just a dull person like you and me, he would just press the arrow button and select a pre-designated animal such as ``dog''. However, if he wants to try something new, he could type ``micky'' or ``sloth'' into the entry widget and he will get to play with his favorite animal.

Of course, sometimes we don't want too many sloths around us and we want to limit the range of the user's selections. In this case we can do one of two things. First, we can set the -editable option to false so that the user cannot type in the entry widget at all. Alternatively, we can use the -validatecmd option (see section 1.4.3) to check input the input.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/tableofcontents3_1.html0000664000122200012240000003551007426334130022237 0ustar jeffhjeffh00000000000000 Contents

Next: Preface Up: Tix Programming Guide Previous: Tix Programming Guide

Contents

 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_4_2.html0000664000122200012240000000466007426334130021451 0ustar jeffhjeffh00000000000000 PanedWindow<A NAME=22> </A>

Next: Adding Panes Inside Up: Container Widgets Previous: Changing Page Tabs

 

PanedWindow 

The TixPanedWindow widget arranges arranges its subwidgets in non-overlapping panes. As we can see in figure 2-4, the PanedWindow widget puts a resize handle between the panes for the user to manipulate the sizes of the panes interactively. The panes can be arranged either vertically (figure 2-4) or horizontally (2-4).

Each individual pane may have upper and lower limits of its size. The user changes the sizes of the panes by dragging the resize handle between two panes.


(Figure 2-4) The TixPane Widget 



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_4_2.html0000664000122200012240000000355207426334130022404 0ustar jeffhjeffh00000000000000 Controlling the Style of the TixComboBox<A NAME=142> </A>

Next: Static Options Up: Another Tix Widget: Previous: Creating a TixComboBox

 

Controlling the Style of the TixComboBox 

The TixComboBox widget can appear in many different styles. If we set the -dropdown option to true (which is the default), the listbox will only appear when the user presses the arrow button. When -dropdown is set to false, the listbox is always shown and the arrow button will disappear because it is not needed anymore.

There is also an option called -fancy. It is set to false by default. When set to true, a tick button and a cross button will appear next to the entry widget. The tick button allows you to select again the value that's already in the ComboBox. If you press the cross button, the entry widget will be cleared.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_4_3.html0000664000122200012240000000455507426334130021455 0ustar jeffhjeffh00000000000000 The Family of Scrolled Widgets<A NAME=23> </A>

Next: The Scrolled Listbox Up: Container Widgets Previous: Changing the Sizes

 

The Family of Scrolled Widgets 

With plain Tcl/Tk, the widgets do not automatically come with scrollbars. If you want to use scrollbars with the text, canvas or listbox widgets, you will need to create scrollbars separately and attach them to the widgets. This can be a lot of hassle because you would almost always need scrollbars for these widgets. Sometimes you will wonder why you need to write the same boring code again and again just to get the scrollbars to working.

The Tix scrolled widgets are here to make your life easier. With a single command such as tixScrolledListBox or tixScrolledText, you can create a listbox or text widget that comes automatically with scrollbars attached.

Another advantage of the Tix scrolled widgets is that you can specify their scrolling policy so that the scrollbars appear only when they are needed. This feature is especially useful if you are displaying a lot of widgets and running out of screen real estate.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_4_3.html0000664000122200012240000000463607426334130022411 0ustar jeffhjeffh00000000000000 Static Options<A NAME=143> </A>

Next: Monitoring the User's Up: Another Tix Widget: Previous: Controlling the Style

 

Static Options 

The -dropdown and -fancy options are so-called ``static options''. They can only be set during the creation of the ComboBox. Hence this code is valid:

tixComboBox .c -dropdown true

But the following code will generate an error because it attempts to set the -dropdown option after the ComboBox has already been created.

TixComboBox .c
.c config -dropdown true

The restrictions of the static options, although annoying, nevertheless make sense because we don't want our interface to suddenly change its style. If sometimes a button is there and sometimes it disappear all by itself, that will certainly create a lot of confusion and makes the user wonder why he should buy our software. Also, as you will see in chapter 6, having some static options will make the life of widget writers a lot easier.

Accessing the value of the ComboBox is very similar to accessing the value of the TixControl widget. The ComboBox has these four options, which we discussed in section 1.2.2: -value, -variable, -command and -validatecmd. You can use these four options to access the user input and respond to user actions in exactly the same way as discussed in section 1.2.2.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_4_4.html0000664000122200012240000000665507426334130022415 0ustar jeffhjeffh00000000000000 Monitoring the User's Browsing Actions<A NAME=144> </A>

Next: The TixSelect Widget Up: Another Tix Widget: Previous: Static Options

 

Monitoring the User's Browsing Actions 

When the user drags the mouse pointer over the listbox, the listbox item under the pointer will be highlighted and a ``browse event'' will be generated. If you want to keep track of what items the user has browses through, you can use the -browsecmd option. Here is an example:

tixComboBox .c -browsecmd mybrowse
....

proc mybrowse {item} {
puts "user has browsed $item"
}

When the Tcl command specified by the -browsecmd option is called, it will be called with one parameter: the current item that the user has highlighted.

The -browsecmd is useful because it gives the user the possibility of temporarily seeing the results of several choices before committing to a final choice.

For example, we can list a set of image files in a ComboBox. When the user single-clicks on an item on the ComboBox, we want to show a simplified view of that image. After the user has browsed through several images, he can finally decide on which image he wants by double-clicking on that item in the listbox.

The following is some pseudo Tcl code that does this. Please notice that the -browsecmd procedure is called every time the user single-clicks on an item or drags the mouse pointer in the listbox. The -command procedure is only called when the user double-clicks on an item.

tixComboBox .c -dropdown false -browsecmd show_simple -command load_fullsize
.c insert end "/pkg/images/flowers.gif"
.c insert end "/pkg/images/jimmy.gif"
.c insert end "/pkg/images/ncsa.gif"

proc show_simple {filename} {
# Load in a simplified version of $filename
}

proc load_fullsize {filename} {
# Load in the full size image in $filename
}

As we shall see, all Tix widgets that let us do some sort of selections have the -browsecmd option. The -browsecmd option allows us to respond to user events in a simple, straight-forward manner. Of course, you can do the same thing with the Tk bind command, but you don't want to do that unless you are very fond of things like $<$Control-Shift-ButtonRelease-1$>$ and "%x%X$w%W%w".


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_8_2_1.html0000664000122200012240000000774407426334130022415 0ustar jeffhjeffh00000000000000 Using the tixWidgetClass Command<A NAME=621> </A>

Next: Writing Methods Up: Widget Class Declaration Previous: Widget Class Declaration

 

Using the tixWidgetClass Command 

We can use the tixWidgetClass command to declare a new class. The syntax is:

tixWidgetClass classCommandName {
-switch value
-switch value
....
}

For example, the following is the declaration section of TixArrowButton:

tixWidgetClass tixArrowButton {
-classname TixArrowButton
-superclass tixPrimitive
-method {
flash invoke invert
}
-flag {
-direction -state
}
-configspec {
{-direction direction Direction e}
{-state state State normal}
}
-alias {
{-dir -direction}
}
-default {
{*Button.anchor c}
{*Button.padX 5}
}
}

(Figure 6-2) declaration of the TixArrowButton Class 

We'll look at what each option means as I describe the command in the following sections.

The first argument for tixWidgetClass is the command name for the widget class (tixArrowButton). Command names are used to create widgets of this class. For example, the code

tixArrowButton .arrow

creates a widget instance .arrow of the class TixArrowButton. Also, the command name is used as a prefix of all the methods of this class. For example, the Foo and Bar methods of the class TixArrowButton will be written as tixArrowButton:Foo and tixArrowButton:Bar.

The class name of the class (TixArrowButton)is specified by the -classname switch inside the main body of the declaration. The class name is used only to specify options in the TK option database. For example, the following commands specifies the TixArrowButton widget instances should have the default value up for their -direction option and the default value normal for their -state option.

option add *TixArrowButton.direction up
option add *TixArrowButton.state normal

Notice the difference in the capitalization of the class name and the command name of the TixArrowButton class: both of them has the individual words capitalized, but the command name (tixArrowButton)starts with a lower case letter while the class name (TixArrowButton) starts with an upper case letter. When you create your own classes, you should follow this naming convention.

The -superclass switch specifies the superclass of the new widget. In our example, we have set it to tixPrimitive. Again, pay attention to the capitalization: we should use the command name of the superclass, not its class name.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_4_2_1.html0000664000122200012240000000545007426334130022401 0ustar jeffhjeffh00000000000000 Adding Panes Inside a TixPanedWindow Widget<A NAME=221> </A>

Next: Putting Widgets Inside Up: PanedWindow Previous: PanedWindow

 

Adding Panes Inside a TixPanedWindow Widget 

You can create a TixPanedWindow widget using the tixPanedWindow command. After that, you can add panes into this widget using the add method (see program 2-5).

When you use the add method, there are several optional parameters which you can use to control the size of each of the pane. The -min parameter controls the minimum size of the pane and the -max parameter controls its maximum size. These two parameters controls how much the user can expand or shrink a pane. If neither is specified, then the pane can be expanded or shrunk without restrictions.

In addition, the -size parameter specifies the initial size of the pane. If it is not specified, then the initial size of the pane will be its natural size.

In program 2-5, we set the initial size of pane1 to 100 pixels using the -size parameter. We don't set the -size parameter for pane2 so it will appear in its natural size. However, we use the -max option for pane2 so that the user can never expand the size of pane2 to more than 300 pixels.

tixPanedWindow .p
.p add pane1 -size 100
.p add pane2 -max 300

set p1 [.p subwidget pane1]
button $p1.b1 -text Button1
button $p1.b2 -text Button2
pack $p1.b1 $p1.b2 -side left -expand yes

set p2 [.p subwidget pane2]
button $p2.b -text "Another Button"
pack $p2.b -side left -expand yes -fill both

pack .p -expand yes -fill both

(Figure 2-5) Adding Panes into a TixPanedWindow Widget 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_4_2_2.html0000664000122200012240000000323207426334130022376 0ustar jeffhjeffh00000000000000 Putting Widgets Inside the Panes<A NAME=222> </A>

Next: Setting the Order Up: PanedWindow Previous: Adding Panes Inside

 

Putting Widgets Inside the Panes 

Each pane we have created using the add method is essentially a frame widget. After we have created the panes, we can put widgets inside them. As shown inside program 2-5, we can use the subwidget method to find out the name of the pane subwidgets. Then we can just create new widgets as their children and pack these new widgets inside the panes. The output of program 2-5 is shown in figure 2-6


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_4_2_3.html0000664000122200012240000000335107426334130022401 0ustar jeffhjeffh00000000000000 Setting the Order of the Panes<A NAME=223> </A>

Next: Changing the Sizes Up: PanedWindow Previous: Putting Widgets Inside

 

Setting the Order of the Panes 

Usually, when you create a new pane, it is always added to the bottom or right of the list of panes. If you want to control the order in which the panes appear inside the TixPanedWindow widget, you can use the two optional parameters, -before and -after, for the add method. For example, the call:

.p add pane2 -after pane1

will place the new pane immediately after pane1. The call:

.p add pane2 -before pane1

will place the new pane immediately in front of pane1.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/section3_3.html0000664000122200012240000001233107426334130020507 0ustar jeffhjeffh00000000000000 Introduction<A NAME=1> </A>

Next: What is Tix Up: Tix Programming Guide Previous: Organization of This

 

Introduction 



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_4_2_4.html0000664000122200012240000000327107426334130022403 0ustar jeffhjeffh00000000000000 Changing the Sizes of the Panes<A NAME=224> </A>

Next: The Family of Up: PanedWindow Previous: Setting the Order

 

Changing the Sizes of the Panes 

If you want to change the sizes of the existing panes or change their maximum/minimum size constraints, you can use the paneconfigure method. For example, the following code changes the size of pane2 to 100 pixels and adjusts its minimum size constraint to no less than 10 pixels:

.p paneconfigure pane2 -size 100 -min 10

Notice that after you call the paneconfigure method, the PanedWindow may jitter and that may annoy the user. Therefore, use this method only when it is necessary.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/section3_4.html0000664000122200012240000000705707426334130020521 0ustar jeffhjeffh00000000000000 Container Widgets<A NAME=2> </A>

Next: TixNoteBook Up: Tix Programming Guide Previous: Specifying Complex Selection

 

Container Widgets 

In addition to providing some nice-looking interface elements, Tix offers some useful ways to organize the elements that you create. It does this by providing container widgets, which are widgets designed to contain whatever you want to put into them.

Different container widgets have different policies as to how they arrange the widgets inside them. In this chapter, we'll talk about TixNoteBook, which arranges its subwidgets using a notebook metaphor, TixPanedWindow, which arranges its subwidgets in non-overlapping horizontal or vertical panes, and a family of ``Scrolled Widgets'', which attach scrollbars to their subwidgets.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/section3_5.html0000664000122200012240000000524207426334130020514 0ustar jeffhjeffh00000000000000 Tabular Listbox and Display Items<A NAME=3> </A>

Next: tixTList - The Up: Tix Programming Guide Previous: Other Scrolled Widgets

 

Tabular Listbox and Display Items 



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/section3_6.html0000664000122200012240000000374207426334130020520 0ustar jeffhjeffh00000000000000 Hierarchical Listbox<A NAME=4> </A>

Next: TixHList - The Up: Tix Programming Guide Previous: Selection

 

Hierarchical Listbox 



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/section3_7.html0000664000122200012240000000501607426334130020515 0ustar jeffhjeffh00000000000000 Selecting Files and Directories<A NAME=5> </A>

Next: File Selection Dialog Up: Tix Programming Guide Previous: Creating Collapsible Tree

 

Selecting Files and Directories 

One task that an application has to perform frequently is to ask the user to select files or directories. To select files, you can use the Tix File Selection Widgets: TixFileSelectDialog and TixExFileSelectDialog. To select directories, you can use the Tix Directory Selection Widgets: TixDirList and TixDirTree.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/section3_8.html0000664000122200012240000001102007426334130020506 0ustar jeffhjeffh00000000000000 Tix Object Oriented Programming<A NAME=6> </A>

Next: Introduction to Tix Up: Tix Programming Guide Previous: Selecting Directories with

 

Tix Object Oriented Programming 

This chapter is intended for experienced programmers who want to create new Tix widgets. If you just want use the Tix widgets in your applications, you can skip this chapter.



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_6_1.html0000664000122200012240000000474407426334130021455 0ustar jeffhjeffh00000000000000 TixHList - The Tix Hierarchical Listbox Widget<A NAME=41> </A>

Next: Creating a Hierarchical Up: Hierarchical Listbox Previous: Hierarchical Listbox

 

TixHList - The Tix Hierarchical Listbox Widget 

TixHList is the Tix Hierarchical Listbox Widget. You can use it to display any data that have a hierarchical structure. For example, the HList widget in figure 4-1 displays a Unix file system directory tree; the HList widget in figure 4-1 displays the corporate hierarchy of a hypothetical company. As shown in these two figures, the entries inside the TixHList widget are indented can be optionally connected by branch lines according to their positions in the hierarchy.


(Figure 4-1) Examples of the TixHList Widget 



http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_7_1_1.html0000664000122200012240000000436507426334130022407 0ustar jeffhjeffh00000000000000 Using the TixFileSelectDialog Widget<A NAME=511> </A>

Next: The Subwidget in Up: File Selection Dialog Previous: File Selection Dialog

 

Using the TixFileSelectDialog Widget 

An example of using the TixFileSelectDialog widget is in figure 5-1 . At line 1, we create a TixFileSelectDialog widget and set the title of the dialog to ``Select A File'' using the -title option. We also use the -command option to specify that the procedure selectCmd should be called when the user has selected a file. selectCmd will be called with one parameter, the filename selected by the user. When the TixFileSelectDialog widget is created, it is initially not shown on the screen. Therefore, at line 3, we call its popup widget command to place the widget on the screen.

tixFileSelectDialog .file -title "Select A File" -command selectCmd
.file subwidget fsbox config -pattern "*.txt" -directory /usr/info
.file popup

proc selectCmd {filename} {
puts "You have selected $filename"
}

(Figure 5-1) Using the TixFileSelectDialog 


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsection3_6_2.html0000664000122200012240000000664307426334130021456 0ustar jeffhjeffh00000000000000 Creating Collapsible Tree Structures with TixTree<A NAME=42> </A>

Next: Selecting Files and Up: Hierarchical Listbox Previous: Handling the Selection

 

Creating Collapsible Tree Structures with TixTree 

The TixTree widget is based on the TixScrolledHList widget; you can use it to create a collapsible hierarchical structure so that the user can conveniently navigate through a large number of list entries. As shown in figure 4-7, the TixTree puts the little ``+'' and ``-'' icons next to the branches of an HList entry that has descendants. These two icons are knows as the open and close icons, respectively. When the user presses the open icon next to an entry, its immediate children of an entry will be displayed. Conversely, when the user presses the close icon, the entry's children will become hidden.

Program 4-6 shows how to create a collapsible tree. We first create a TixTree widget. Then we add the entries in your hierarchical structure into its hlist subwidget using the add method of this subwidget. When we are finished with adding the entries, we just call the autosetmode method of the TixTree widget, which will automatically adds the open and close icons next to the entries who have children.

set folder [tix getimage folder]
tixTree .tree -command Command -options {
hlist.separator /
hlist.itemType imagetext
hlist.drawBranch true
hlist.indent 18
}
pack .tree -expand yes -fill both
set hlist [.tree subwidget hlist]

foreach directory {/ /usr /usr/bin /usr/local /etc /etc/rc.d} {
$hlist add $directory -image $folder -text $directory
}
.tree autosetmode

proc Command {entry} {
puts "you have selected $entry"
}

(Figure 4-6) Creating a Collapsible Hierarchy 

Note that in program 4-6 we use the -command option of the TixTree widget, not the -command option of its hlist subwidget. This is because the TixTree actually used the -command option of its hlist subwidget to process some low-level events. In general, if both a mega-widget and its subwidget have the options of the same name, you would always use the option that belongs to the mega-widget.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_1_1.html0000664000122200012240000000614107426334130022375 0ustar jeffhjeffh00000000000000 Tix for Application Programmers<A NAME=111> </A>

Next: Tix for Widget Up: What is Tix Previous: What is Tix

 

Tix for Application Programmers 

The acronym Tix stands for Tk Interface Extension. Tix is different things for different people.

If you are a GUI application programmer, that is, if you earn a living by building graphical applications, you will appreciate Tix as a library of mega-widgets: widgets made out of other widgets. To use a crude analogy, if the widgets in the standard TK library are bricks and mortars for a builder, the mega-widgets in the Tix library are walls, windows or even pre-build kitchens. Of course, these ``bigger components'' are themselves made of bricks and mortars, but it will take much less effort to put them together than planting bricks on top of each other.

The Tix widgets not only help you speed up the development of your applications, they also help you in the design process. Since the standard Tk widgets are too primitive, they force you to think of your house as, by using the same analogy, millions of bricks. With the help of the Tix mega-widgets, you can design your application is a more structural and coherent manner.

Moreover, the Tix library provides a rich set of widgets. Figure 1-1 shows all Tix widgets - there are more than 40 of them! Although the standard Tk library has many useful widgets, they are far from complete. The Tix library provides most of the commonly needed widgets that are missing from standard Tk: FileSelectBox, ComboBox, Control (a.k.a. SpinBox) and an assortment of scroll-able widgets. Tix also includes many more widgets that are generally useful in a wide range of applications: NoteBook, FileEntry, PanedWindow, MDIWindow, etc.

With all these new widgets, you can introduce new interaction techniques into applications, creating more useful and more intuitive user interfaces. You can design your application by choosing the most appropriate widgets to match the special needs of your application and users.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_7_1_2.html0000664000122200012240000000516507426334130022407 0ustar jeffhjeffh00000000000000 The Subwidget in the TixFileSelectDialog<A NAME=512> </A>

Next: The TixExFileSelectDialog Widget Up: File Selection Dialog Previous: Using the TixFileSelectDialog

 

The Subwidget in the TixFileSelectDialog 

We may also want to set other options for the file dialog such as its file filter and working directory. To do this, we must know the composition of the TixFileSelectDialog widget. As shown in figure 5-2, the TixFileSelectDialog contains a subwidget fsbox of the type TixFileSelectBox and a subwidget bbox of the type TixStdButtonBox.

The fsbox subwidget supports the -pattern and -directory options. At line 2 of figure 5-1, we use the -directory option to tell the fsbox subwidget to display files in the directory /usr/info; we also use the -pattern option to specify we only want the filenames that has the txt extension.

The fsbox subwidget also supports the -selection option, which stores the filename currently selected by the user. We can query this value by the cget widget command of the fsbox subwidget.

Remember that the -pattern, -directory and -selection options do not belong to the TixFileSelectDialog widget. A common mistake that people make is to try to configure the non-existent -pattern option of the TixFileSelectDialog, which causes much despair, long error messages and great loss of self-confidence. Always remember:, when you want to configure an option, find out whether it belongs to the widget or its subwidgets.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_3_1_2.html0000664000122200012240000000412207426334130022373 0ustar jeffhjeffh00000000000000 Tix for Widget Developers<A NAME=112> </A>

Next: Getting Started: the Up: What is Tix Previous: Tix for Application

 

Tix for Widget Developers 

On the other hand, if you are a widget developer, Tix provides an object oriented programming environment, the Tix Intrinsics, that is carefully designed for the development of mega-widgets. If you have developed widgets in C, you will know how slow and painful such a process would be. In recognition of the difficulties in widget development, the Tix Intrinsics includes many tools that dramatically cuts down the efforts required to develop new widgets. With the Tix Intrinsics, the rapid prototyping/development of widgets is finally feasible: you can write a new widgets in the matter of hours or even minutes.

With the Tix Intrinsics, you widget code can readily become reusable. Tix also provides a set of rules and mechanisms that allow you to develop widgets that are inter-operable with other widgets.

In Part I of this manual, we will talk about using the Tix widgets. The discussion of writing new Tix widgets will be carried out in Part II.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_7_1_3.html0000664000122200012240000000374307426334130022410 0ustar jeffhjeffh00000000000000 The TixExFileSelectDialog Widget<A NAME=513> </A>

Next: Specifying File Types Up: File Selection Dialog Previous: The Subwidget in

 

The TixExFileSelectDialog Widget 

The TixExFileSelectDialog widget is very similar to the TixFileSelectDialog widget. It supports all the options and widget commands of the latter, so essentially we can just take the program 5-1 and replace the command tixFileSelectDialog in the first line to tixExFileSelectDialog.

The composition of the TixExFileSelectDialog widget is a bit different: it contains one contains one subwidget, which is also called fsbox, of the type TixExFileSelectBox widget (figure 5-3). Again this fsbox widgets supports all widget options and commands of the fsbox subwidget in TixFileSelectDialog, so the line 2 of program 5-1 can work for TixExFileSelectDialog widgets without any change.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_7_1_4.html0000664000122200012240000000354507426334130022411 0ustar jeffhjeffh00000000000000 Specifying File Types for TixExFileSelectDialog<A NAME=514> </A>

Next: 5.1.5 The tix Up: File Selection Dialog Previous: The TixExFileSelectDialog Widget

 

Specifying File Types for TixExFileSelectDialog 

The TixExFileSelectBox widget has a ComboBox subwidget marked as ``Select Files of Type:'' (see figure 5-3). This widget contains some pre-set types of files for the user to choose from. For example, a word processor program can include choices such as ``Microsoft Word Documents'' and ``WordPerfect Documents''.

The TixExFileSelectBox widget has a -filetypes option for this purpose. As shown in line 3 through 7 in program 5-4, the value for the -filetypes option is a list. Each item in the list should contain two parts. The first part is a list of file patterns and the second part is the textual name for this type of files.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_8_4_1.html0000664000122200012240000000346007426334130022406 0ustar jeffhjeffh00000000000000 The InitWidgetRec Method<A NAME=641> </A>

Next: Chaining Methods Up: Standard Initialization Methods Previous: Standard Initialization Methods

 

The InitWidgetRec Method 

The purpose of the InitWidgetRec method is to initialize the variables of the widget instance. For example, the following implementation of tixArrowButton:InitWidgetRec sets the count variable of each newly created instance to zero.

proc tixArrowButton:InitWidgetRec {w} {
upvar #0 $w data

set data(count) 0
}

Earlier, we showed how each widget you create is associated with an array of the same name. Within the methods, you always refer to this array through the name data -the method then works properly in each instance of the widget.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsectionstar3_2_1.html0000664000122200012240000000301007426334130022324 0ustar jeffhjeffh00000000000000 About This Manual<A NAME=01> </A>

Next: About This Document Up: Preface Previous: Preface

 

About This Manual 

This manual is the programmer's guide to the Tix library. It takes you though a step-by-step tutorial about the different widgets and functions available in the Tix library. It also covers how to write new widgets using the Tix Intrinsics objecr-oriented programming interface. The accompanying Tix Reference Manual is a collection of the Tix manual pages. It describes all the options and other details of the Tix widgets and functions.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_8_4_4.html0000664000122200012240000000450707426334130022414 0ustar jeffhjeffh00000000000000 The ConstructWidget Method<A NAME=642> </A>

Next: The SetBindings Method Up: Standard Initialization Methods Previous: The tixChainMethod call

 

The ConstructWidget Method 

The ConstructWidget method is used to creates the components of a widget instance. In the case of TixArrowButton, we want to create a new button subwidget, whose name is button, and use a bitmap to display an arrow on this button. Assuming the bitmap files are stored in the files up.xbm, down.xbm, left.xbm and right.xbm, the string substitution @$data(-direction).xbm will give us the appropriate bitmap depending on the current direction option of the widget instance.

proc tixArrowButton:ConstructWidget {w} {
upvar #0 $w data

tixChainMethod $w ConstructWidget

set data(w:button) [button $w.button -bitmap @$data(-direction).xbm]
pack $data(w:button) -expand yes -fill both
}

The tixArrowButton:ConstructWidget method shown above sets the variable data(w:button) to be the pathname of the button subwidget. As a convention of the Tix Intrinsics, we must declare a public subwidget swid by storing its pathname in the variable data(w:swid).


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsectionstar3_2_2.html0000664000122200012240000000251607426334130022337 0ustar jeffhjeffh00000000000000 About This Document<A NAME=02> </A>

Next: Organization of This Up: Preface Previous: About This Manual

 

About This Document 

This HTML document is converted from LaTeX source files to HTML by a modified version of latex2html.

This document is also available both pdf and HTML format from http://tix.sourceforge.net.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_8_4_5.html0000664000122200012240000000423207426334130022410 0ustar jeffhjeffh00000000000000 The SetBindings Method<A NAME=643> </A>

Next: Declaring and Using Up: Standard Initialization Methods Previous: The ConstructWidget Method

 

The SetBindings Method 

In your interface, you want to handle a lot of events in the subwidgets that make up your mega-widget. For instance, when somebody presses the button in a TixArrowButton widget, you want the button to handle the event. The SetBindings method is used to creates event bindings for the components inside the mega-widget. In our TixArrowButton example, we use the bind command to specify that the method tixArrowButton:IncrCount should be called each time when the user presses the first mouse button. As a result, we can count the number of times the user has pressed on the button (obviously for no better reasons than using it as a dumb example).

proc tixArrowButton:SetBindings {w} {
upvar #0 $w data

tixChainMethod $w SetBindings

bind $data(w:button) $<$1$>$ "tixArrowButton:IncrCount $w"
}

proc tixArrowButton:IncrCount {w} {
upvar #0 $w data

incr data(count)
}


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsectionstar3_2_3.html0000664000122200012240000000374007426334130022340 0ustar jeffhjeffh00000000000000 Organization of This Manual<A NAME=03> </A><A NAME=04> </A>

Next: Introduction Up: Preface Previous: About This Document

 

Organization of This Manual  

Chapter 1, Introduction gets you started with the Tix widgets by describing their basic options and operations. Chapter 2, Container Widgets, describes the Tix widgets that can be used to contain other widgets and maintain their geometry. Chapter 3, TList Widget and Display Items, describes the tabular listbox widget and the Tix display items, which are used by many Tix widgets. Chapter 4, Hierarchical Listbox, describes how to create a hierarchical list structure using the TixHList widget. Chapter 5, Selection Files and Directories, describes how to use the file and directory selection widgets in the Tix library. Finally, Chapter 6, Tix Object Oriented Programming, describes how to use the Tix object oriented programming library to create new classes of Tix widgets.


http://tix.sourceforge.net
Tix8.4.3/docs/html/TixBook/subsubsection3_5_2_1.html0000664000122200012240000000540007426334130022375 0ustar jeffhjeffh00000000000000 Advantages of Display Items<A NAME=321> </A>

Next: Display Items and Up: Display Items Previous: Display Items

 

Advantages of Display Items 

It is easy to see the advantages of seperating the display items from their host widgets. First, the display items are easy to learn. Since they are the same across different types of widgets. Once you learn about a type of display items, you will know how to use them in all Tix widgets that support display items (currently these include TixHList, TixTList and the spreadsheet widget TixGrid, but the number is growing). In contrast, if you want to create a text item for the Tk widgets, you will find out that the listbox, text, canvas and entry widget each have a different method of creating and manipulating text items, and it is quite annoying to learn each of them individually.

Second, the hosts widgets that use display items are extensible. Because of the separation of task, the host widgets are not involved in the implementation details of the display items. Therefore, if you add a new type of display items, such as a animation type that displays live video, the host widgets will gladly take them in and display them. You don't need to modify the existing host widgets at all. In contrast, if you want to display graphical images in the existing Tk listbox widgets, you'd better set aside 100 hours to rewrite it completely!

Third, display items are good for writers of host widgets. Because now they just need to implement the arrangement policy of the host widgets. They don't need to worry about drawing at all because it is all handled by the display items. This is a significant saving in code because a widget that does not use display items has to spend 30%of its C code to do the drawing.


http://tix.sourceforge.net
Tix8.4.3/docs/FAQ.txt0000644000122200012240000003103010162670172014470 0ustar jeffhjeffh00000000000000$Id: FAQ.txt,v 1.4 2004/12/24 01:27:22 hobbs Exp $ TIX FREQUENTLY ASKED QUESTIONS TABLE OF CONTENTS Legal Issues + [L.1] Is Tix free software? General Questions About Using The Tix Library + [G.1] What does the "-disablecallback" option do? + [G.2] How do I set the width of the entry subwidget inside the tixControl widget? + [G.3] What is the "setslient" method? + [G.4] Is there a Tix interface builder in the works? + [G.5] Can you tell me about the syntax of tixForm + [G.6] I am not using the tixForm geometry manager, but it is giving me errors about TixForm. What happened? + [G.7] How do I generate the tclIndex file for Tix? + [G.8] Can I ignore the default arguments passed by the various -command and -broeswcmd options? + [G.9] What does tixWidgetDoWhenIdle do? + [G.10] Why isn't such a feature in Tix? Will it be implemented? + [G.11] Who are using Tix in their software? + [G.12] I am using a DirList widget. When the user clicks on an item, the procedure of my -browsecmd gets called twice. However, I just want it to be called once. + [G.13] I get an error "can't read data(-value): no such element in array" when I use the tixExFileSelectDialog. Question About Porting to Specific Platforms/Software + [P.1] The configure script gave me strange errors. _________________________________________________________________ LEGAL ISSUES [L.1] Is Tix free software? ANSWER: Tix is distributed under the same license as Tcl/Tk (a.k.a. BSD style license). Application developers can freely redistribute Tix along with their products. _________________________________________________________________ GENERAL QUESTIONS ABOUT USING THE TIX LIBRARY [G.1] What does the "-disablecallback" option do? ANSWER: Many Tix widgets have both a -value option and a -command option. Any modification of the -value will cause the -command callback to be executed. Sometimes this is undesirable. For example, calling "config -value" inside the callback procedure will cause the callback to be re-entered and thus an infinite recursion. The -disablecallback can be used to advoid this problem. When this option is set, the -command callback will not be executed even if the -value of a widget is changed. Therefore, if you need to modify the -value of a widget inside its callback, do this: proc my_callback {w} { $w config -disablecallback true $w config value blah $w config -disablecallback false } If you find this too troublesome, you can call the command tixSetSilent: proc my_callback {w} { tixSetSilent $w blah } [G.2] How do I set the width of the entry subwidget inside the tixControl widget? ANSWER: You can use the option database or the -options flag to set the configuration options of the subwidgets. E.g: option add *TixControl*entry.width 10 OR tixControl .c -options { entry.width 10 } [G.3] What is the "setslient" method? ANSWER: This is an obsolete method. You could use it to achieve the same effect as the -disablecallback option. selsilent used to be a widget command for the ComboBox, Control, etc. It has been removed since Tix 4.0a4 and replaced by the tixSetSilent command. Please note that tixSetSilent is not a widget command but an external procedure. [G.4] Is there a Tix interface builder in the works? ANSWER: Yes. But I don't know when it will be finished. (probably in 96). [G.5] Can you tell me about the syntax of tixForm ANSWER: Please see the file man/Form.html or man/Form.n. [G.6] I am not using the tixForm geometry manager, but it is giving me errors about TixForm. What happened? ANSWER: When you get error messages like this: (TixForm) Error:Trying to use more than one geometry manager for the same master window. Giving up after 50 iterations. Most likely, the problem is when using tixLabelFrame widgets, you packed to the wrong frame: This is WRONG: tixLabelFrame .d button .d.b pack .d.b This is the correct way: tixLabelFrame .d set f [.d subwidget frame] button $f.b pack $f.b pack .d Remember you don't pack directly into a TixLabelFrame widget. Instead, you should pack into its frame subwidget. [G.7] How do I generate the tclIndex file for Tix? ANSWER: Tix tclIndex files cannot be generated using the standard auto_mkindex procedure. You must use the tixindex program in the tools/ subdirectory in the Tix distribution. The syntax is tixindex *.tcl [G.8] Can I ignore the default arguments passed by the various -command and -broeswcmd options? ANSWER: You can use the tixBreak command. For example: tixFileSelectDialog .c -command "puts foo; tixBreak" [G.9] What does tixWidgetDoWhenIdle do? ANSWER: It does the same thing as tixDoWhileIdle (and "after -idle"). The difference is it takes its second argument as the name of a widget and executes this command only if the widget exists: i.e.: tixWidgetDoWhenIdle tixComboBox::Update $w blah blah .. will execute tixComboBox::Update only if $w exists. $w may be destroyed after tixWidgetDoWhenIdle is called but before an idle event happens. [G.10] Why isn't such a feature in Tix? Will it be implemented? ANSWER: Generally requests for new features are welcomed. You can submit your requests to http://tix.sourceforge.net forums and we'll be happy to hear from you. We can't guarantee to implement the requested features immediately. Usually it depends on how important the features. If the feature is requested by more people, it will usually get done faster. However, some frequently requested features probably won't be imlemented. Usually these features are cosmetic changes and: + they do not add new capability to the widgets + they are not universally liked + they confuse the user. Some examples are: + Different foreground and background colors for the NoteBook tabs: having a lot of colors may antagonize the users that are "color haters"; also, the different colors don't make it easier for the user to locate the desired tab. + Ring-binder metaphore for the NoteBook widget: a waste of screen real estate. + Rows of tabs for the NoteBook widget: the user may be confused when the rows of tabs are switched. If you need to have a lot of tabs for the notebook, use the ListNoteBook widget instead. [G.11] Who are using Tix in their software? ANSWER: See http://tix.sourceforge.net [G.12] I am using a DirList widget. When the user clicks on an item, the procedure of my -browsecmd gets called twice. However, I just want it to be called once. ANSWER: The -browsecmd procedure is triggered by three types of events: <1>, , and . When the user clicks on an entry, a <1> and a event will happen in rapid session, which causes your -browsecmd procedure to be called twice. A crude fix for this problem is to ignore all the events. You can find out the event that triggers the -browsecmd procedure by the tixEvent command. Here is an example: tixDirList .c -browsecmd Browse proc Browse {args} { if {[tixEvent type] == ""} { return } # .... } However, the above solution is not perfect. For example, if the user clicks down the button at entry one, drags it over entries two and three and release it on top of entry three, the following events may be caused: 1. <1> on entry one. 2. on entry two. 3. on entry three. Therefore, if you use the above method, the browse event on entry three will be lost! To devise a better solution, it's better to understand the basic design conventions of a Tix-based GUI. Suppose we have a list of entries displayed in a listbox (or DirList, or HList). When the user clicks on an entry, the GUI usually responds by displaying a "detailed view" of the entry. For example, if we put a list of file names in a listbox, when the user clicks on a file name, we display the contents of the file in a text window. If the user then clicks on another file name, the text window will load in the contents of the new file. Now what happens if the user clicks on the same entry twice? Do we reload the contents of the file into the text window? This is usually unnecessary, inefficient and probably not what the user wants to do. The Tix convention is, when the user clicks on the same entry again, the detail view is not updated. If the user wants to force an update (e.g, the user knows the file's contents has been changed and wants to see the new version), he or she can double-click on the entry and the application will respond by redisplaying the detail view (reloading the file). To implement this policy, the Browse procedure should be modified as the following: proc Browse {args} { global currentView set ent [tixEvent value] if {$ent == $currentView} { # We have already displayed the detailed view of $ent. # return } else { set currentView $ent DisplayDetail $ent } } [G.13] I get an error "can't read data(-value): no such element in array" when I use the tixExFileSelectDialog. ANSWER: If you use tixExFileSelectDialog like this: tixExFileSelectDialog .f -command foo foo {filename} { destroy .f do some other stuff ... } it will cause a Tcl error because the dialog assumes that it still exists after calling your command. This usually result in errors like this: can't read "data(-value)": no such element in array while executing "set data(-selection) $data(-value)..." (procedure "tixComboBox::SetValue" line 30) This "feature" is built into many Tix widgets and can't be fixed easily. To work around the problem, never destroy widgets inside -command calls. Usually you should unmap toplevel windows instead. If you must destroy widgets, do it with an "after" command. For example, the foo procedure should be rewritten as: foo {filename} { wm withdraw .f do some other stuff ... after idle {if [winfo exists .f] {destroy .f}} } Execute the "after" command at the very end of the -command. Otherwise the idle handler may be activated by some "update" calls. _________________________________________________________________ QUESTION ABOUT PORTING TO SPECIFIC PLATFORMS/SOFTWARE [P.1] The configure script gave me strange errors. ANSWER: The problem may be you have several operating systems sharing the same file system. Some people encounter error messages like this: # ./configure --prefix=/usr/vendor/tcl loading cache ./config.cache checking for a BSD compatible install... /usr/bin/installbsd -c checking for ranlib... ranlib checking how to run the C preprocessor... cc -E checking for unistd.h... ./configure[603]: "${ac_cv_header_$ac_safe+set}": bad substitution The problem is at line 2, configure loaded in ./config.cache, which may have been created by a different operating system, with settings only usuable for that operating system. To get around this, you should type make distclean ./configure make all Tix8.4.3/docs/Release.html0000644000122200012240000000134610162673273015602 0ustar jeffhjeffh00000000000000 Tix 8.4 Release Notes

Tix 8.4 Release Notes

This is a list of all the release notes of the Tix library for version 8.1 and greater.

Contents

8.1
8.2
8.4
Tix8.4.3/docs/Release-8.0.0.txt0000644000122200012240000001617507170701742016122 0ustar jeffhjeffh00000000000000$Id: Release-8.0.0.txt,v 1.1 2000/10/10 21:02:26 idiscovery Exp $ ============ BUILDING TIX ============ 1. You must have a recent source distribution of Tcl/Tk installed (we have tested with 8.0.4 and 8.0.5). 2. For Unix, You should be able to change to unix/tk8.0; then, configure and compile with: ./configure make > make.log 2 > make.errs Before running "make", you can edit the Makefile and change the -O compile option to -O2 for slightly better performance with gcc/egcs. You may find the configure options --prefix, --with-tcl, --with-tk etc. useful. For example, I have a copy of the egcs compiler installed as /d2a/exper/bin/gcc, the tcl8.0.4 and tk8.0.4 source distributions at /d2a/src/tcl-tk/tcl8.0.4 and /d2a/src/tcl-tk/tk8.0.4 respectively, and prefer to install Tix to /d2a/exper, so I use something like this: env PATH=/d2a/exper/bin:$PATH ./configure \ --prefix=/d2a/exper --enable-gcc --enable-shared \ --with-tcl=/d2a/src/tcl-tk/tcl8.0.4 \ --with-tk=/d2a/src/tcl-tk/tk8.0.4 [If you reassign the PATH variable like this, remember to do the same thing with all the "make" commands as well.] If the compile failed for some reason, you can look at the files make.errs and make.log for clues. 3. If the compile is successful, you should now be able to run it: ./tixwish source ../../demos/widget This will bring up a demo window with lots of Tix megawidgets. 4. You can now run the test suite if you wish and install Tix: make tests [optional] make install [If the "make tests" fails with a complaint like this: ld.so: open error 2 for /libtix4180.so.1.0 edit Makefile and remove the line that assigns a value to LD_LIBRARY_PATH for the "tests" target (I had to do this on SunOS)]. 5. For WinNT, read win/README. ======================== NOTES ON FUTURE RELEASES ======================== 1. If you are interested in a support contract for Tix please contact me by email at ram@netcom.com. 2. I plan to make at least one more release of Tix, though the timeframe is uncertain. Among the changes planned: -- performance improvements -- cleanup various obsolete elements from code and docs (there is a lot of clutter in many files). -- more bug fixes 3. Support for all versions of Tcl/Tk preceding 8.0 is now discontinued. ==================== CHANGES in 4.1.0.007 ==================== 1. tix.h:TIX_RELEASE changed to 4.1.0.007 2. Changed all uses of strdup to tixStrdup (changes to several files) and moved declaration of tixStrDup to tixInt.h to avoid various compiler warnings. Also, removed check for strdup() from files 'configure' and 'configure.in' in unix/tk8.0 since it is no longer needed. 3. The following erroneous code crashes Tix: # test Tix crash package require Tix tixWidgetClass ab { -alias {-dir -direction} } The problem is that the argument to -alias is supposed to be a list of pairs. Added a check in tixClass.c:InitAlias() for this. 4. Changes to suppress egcs warnings: -- Uncommented prototype for tixStrDup() in tix.h -- In tixGrData.c, changed many occurrences of "(char*)i" to FIX(i) which has better casts. 5. Replaced generic/{tixItcl.[ch],tixMethod.c} with fixed versions for dealing properly with namespaces. Also fixed 'level' bug in tixItcl.c:TixItclSetGlobalNameSp(); see test code below. 6. For very long lists, tixTree was showing stray vertical lines and indicators. Caused by overflows in window coordinates which are limited to 16-bit values in X. Fixed by adding bounds checks in tixHList.c:DrawElements(). 7. An initial "see" command on a tixHList before the window is mapped was not updating the scrollbar; fixed by adding UpdateScrollbars() call in tixHList.c:WidgetDisplay(). 8. Removed directories win/tcl7.x and unix/tk4.x (versions of Tcl/Tk earlier than 8.0 are no longer supported). 9. There is a problem with compound images which causes a crash upon exit, illustrated by the following script: ------------ set i [image create compound -window .] $i add text -text Hello exit ------------ This now appears to be fixed by changes to tixImgCmp.c 10. An incompatibility between Tix and Jan Nijtmans Img extension has been fixed. 11. Fixed a bug in tests/library/TestLib.tcl:TestBlock that was causing the button test in tests/general/event0.tcl to fail. Running "make tests" under unix/tk8.0 now produces no errors with one exception: The label-entry test in tests/general/labentry.tcl sometimes fails for unknown reasons that appear to be related to the way focus events are generated when a window is created directly underneath the current pointer. [NOTE: the fs.tcl tests attempt to locate home directories of all users on your system, so if you have a non-existent home directory (this happens on Red Hat Linux 5.2 because the home directory /var/adm of user 'adm' does not exist), this test will report a failure.] 12. Some cosmetic changes to a few files in the test suite for better readability. 13. The Tix Programming Guide is now included in the release; see docs/pguide-tix4.0.ps. Note that we have not made any changes to this document and have not been able to locate the original TeX/LaTeX file. 14. tix.h: Changed the definition of strcasecmp to be the same as in tk8.0.5/win/tkWinPort.h 15. Added the BUILD_tix mechanism to tix.h. 16. tixInt.h: -- Changed EXTERN to extern. The EXTERN macro is used in Tcl to implement the DLL import/export mechanism and should therefore be used _ONLY_ to declare functions exported from a package. -- Removed some stuff within "#if 0 ... #endif" ================ ACKNOWLEDGEMENTS: ================ Thanks to the following people for reporting bugs and/or providing patches: -- Bruce Stephens -- Ric Klaren -- Jean-Paul Dzisiak -- Jan Nijtmans ======================== NOTES ON THE 'level' BUG: ======================== Both the 005 and 007 releases print: 0 1 2 1 a 2 b 3 c with the following code fragment. But 006 prints incorrect values: 0 2 4 One patch to 006 floating around replaces tixItcl.[ch] and tixMethod.c and prints these incorrect values: 0 1 1 Here is the code fragment: ------------------------------------------------------------------------ tixWidgetClass class1 { -classname Class2 -superclass tixPrimitive -method { foo } } proc class1:foo {w} { puts [info level] set a(1) a set a(2) b set a(3) c $w.a baa a } proc class1:ConstructWidget {w} { upvar \#0 $w data tixChainMethod $w ConstructWidget class2 $w.a pack $w.a set data(w:a) $w.a } tixWidgetClass class2 { -classname Class2 -superclass tixPrimitive -method { baa } } proc class2:baa {w var} { puts [info level] upvar 1 $var a puts [array get a] } class1 .foo puts [info level] .foo foo ------------------------------------------------------------------------ Tix8.4.3/docs/Release-8.0.1.txt0000644000122200012240000000472407170776104016124 0ustar jeffhjeffh00000000000000$Id: Release-8.0.1.txt,v 1.2 2000/10/11 05:36:04 idiscovery Exp $ ============ BUILDING TIX ============ 1. You must have a recent source distribution of Tcl/Tk installed (we have tested with 8.0.4 and 8.0.5). 2. For Unix, You should be able to change to unix/tk8.0; then, configure and compile with: ./configure make > make.log Before running "make", you can edit the Makefile and change the -O compile option to -O2 for slightly better performance with gcc/egcs. You may find the configure options --prefix, --with-tcl, --with-tk etc. useful. For example, I have a copy of the egcs compiler installed as /d2a/exper/bin/gcc, the tcl8.0.5 and tk8.0.5 source distributions at /d2a/src/tcl-tk/tcl8.0.5 and /d2a/src/tcl-tk/tk8.0.5 respectively, and prefer to install Tix to /d2a/exper, so I use something like this: env PATH=/d2a/exper/bin:$PATH ./configure \ --prefix=/d2a/exper --enable-gcc --enable-shared \ --with-tcl=/d2a/src/tcl-tk/tcl8.0.5 \ --with-tk=/d2a/src/tcl-tk/tk8.0.5 [If you reassign the PATH variable like this, remember to do the same thing with all the "make" commands as well.] If the compile failed for some reason, you can look at the files make.errs and make.log for clues. 3. If the compile is successful, you should now be able to run it: ./tixwish source ../../demos/widget This will bring up a demo window with lots of Tix megawidgets. 4. You can now run the test suite if you wish and install Tix: make tests [optional] make install [If the "make tests" fails with a complaint like this: ld.so: open error 2 for /libtix4180.so.1.0 edit Makefile and remove the line that assigns a value to LD_LIBRARY_PATH for the "tests" target (I had to do this on SunOS)]. 5. For WinNT, read win/README. ======================== NOTES ON FUTURE RELEASES ======================== 1. If you are interested in support see the web site at: http://www.sourceforge.net 2. Support for all versions of Tcl/Tk preceding 8.0 is now discontinued. ==================== CHANGES in tix-8.0.1 ==================== 1. Restored missing files from Tix-4.1.0.006. 2. Changed documentation to reflect http://www.sourceforge.net 3. The Tix Programming Guide in HTML is now included in the release; see docs/tix-book. Note that we have not made any changes to this document and have not been able to locate the original TeX/LaTeX file. Tix8.4.3/docs/Release-8.0.2.txt0000644000122200012240000000440507177664553016134 0ustar jeffhjeffh00000000000000$Id: Release-8.0.2.txt,v 1.1 2000/11/01 00:52:59 idiscovery Exp $ ============ BUILDING TIX ============ 1. You must have a recent source distribution of Tcl/Tk installed (we have tested with 8.0.4 and 8.0.5). 2. For Unix, You should be able to change to unix/tk8.0; then, configure and compile with: ./configure make > make.log Before running "make", you can edit the Makefile and change the -O compile option to -O2 for slightly better performance with gcc/egcs. You may find the configure options --prefix, --with-tcl, --with-tk etc. useful. For example, I have a copy of the egcs compiler installed as /d2a/exper/bin/gcc, the tcl8.0.5 and tk8.0.5 source distributions at /d2a/src/tcl-tk/tcl8.0.5 and /d2a/src/tcl-tk/tk8.0.5 respectively, and prefer to install Tix to /d2a/exper, so I use something like this: env PATH=/d2a/exper/bin:$PATH ./configure \ --prefix=/d2a/exper --enable-gcc --enable-shared \ --with-tcl=/d2a/src/tcl-tk/tcl8.0.5 \ --with-tk=/d2a/src/tcl-tk/tk8.0.5 [If you reassign the PATH variable like this, remember to do the same thing with all the "make" commands as well.] If the compile failed for some reason, you can look at the files make.errs and make.log for clues. 3. If the compile is successful, you should now be able to run it: ./tixwish source ../../demos/widget This will bring up a demo window with lots of Tix megawidgets. 4. You can now run the test suite if you wish and install Tix: make tests [optional] make install [If the "make tests" fails with a complaint like this: ld.so: open error 2 for /libtix4180.so.1.0 edit Makefile and remove the line that assigns a value to LD_LIBRARY_PATH for the "tests" target (I had to do this on SunOS)]. 5. For WinNT, read win/README. ======================== NOTES ON FUTURE RELEASES ======================== 1. If you are interested in support see the web site at: http://www.sourceforge.net 2. Support for all versions of Tcl/Tk preceding 8.0 is now discontinued. ==================== CHANGES in tix-8.0.2 ==================== 1. Many bug fixes from egroups.com mailing lists - thanks to everyone who contributed. 2. Added parentheses to library code. Tix8.4.3/docs/Release-8.1.0.txt0000644000122200012240000000415107200427412016103 0ustar jeffhjeffh00000000000000$Id: Release-8.1.0.txt,v 1.1 2000/11/03 03:20:42 idiscovery Exp $ ============ BUILDING TIX ============ 1. You must have a recent source distribution of Tcl/Tk installed (we have tested with and 8.0.5 and 8.2.3). Stubs are not yet supported. 2. For Unix, Change to unix, then sh configure DO NOT make yet. You may find the configure options --prefix, and --with-tclconfig, --with-tkconfig useful. For help on the options, run sh configure --help For example, I prefer to install Tix to /home/tmp, so I use something like this: sh ./configure \ --prefix=/home/tmp --enable-gcc --enable-shared \ --with-tclconfig=../../tcl8.2.3 \ --with-tkconfig=../../tk8.2.3 Next, choose the subdirectory that corresponds to your Tcl version, and change to that directory cd tk8.2 Configure and compile with: ./configure make > make.log or in the example above sh ./configure \ --prefix=/home/tmp --enable-gcc --enable-shared \ --with-tclconfig=../../../tcl8.2.3 \ --with-tkconfig=../../../tk8.2.3 Before running "make", you can edit the Makefile and change the -O compile option to -O2 for slightly better performance with gcc/egcs. If the compile failed for some reason, you can look at the file make.log for clues. 3. If the compile is successful, you should now be able to run it: ./tixwish cd ../../tests source Driver.tcl This will bring up a demo window with lots of Tix megawidgets. 4. You can now run the test suite if you wish and install Tix: make tests [optional] make install Then install in the unix/ directory cd .. make install ======================== NOTES ON FUTURE RELEASES ======================== 1. If you are interested in support see the web site at: http://www.sourceforge.net 2. Support for all versions of Tcl/Tk preceding 8.0 is now discontinued. ==================== CHANGES in tix-8.1.0 ==================== 1. Added RedHat's Source Navigator's approach to configure. 2. Changed Tix version number to 8.1 Tix8.4.3/docs/Release-8.1.1.txt0000644000122200012240000000132707207100161016102 0ustar jeffhjeffh00000000000000$Id: Release-8.1.1.txt,v 1.2 2000/11/23 02:26:57 idiscovery Exp $ Release notes for 8.1.1 See Release-8.1.0.txt Changes for 8.1.1 1) Added tixDebug procedure. To activate debugging messages, use tix configure -debug 2) Minor bug fixes. 3) Bulletproofed ComboBox.tcl against a bug showing up under Python. 4) Fixed Windows to properly handle TCL_STORAGE_CLASS with USE_TCL_STUBS 5) Fixed TkConsole declarations in tixWinMain.c 6) Added winDumpExts.c for 8.3 - should change to use Tcl 8.3's method. 7) Rewrote the patches to Tkinter.py so it will work with or without Tix. 8) Updated README files to say that Tix should now build under 8.3, but it's not "supported" in that it hasn't been tested on it yet. Tix8.4.3/docs/Release-8.1.2.txt0000644000122200012240000000257007404566764016134 0ustar jeffhjeffh00000000000000# -*- mode: text; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # $Id: Release-8.1.2.txt,v 1.2 2001/12/09 04:52:04 idiscovery Exp $ Release notes for 8.1.2 See also Release-8.1.1.txt Changes for 8.1.2 1) Added lib/pref/WmDefault.* files, a Package for making Tix apps use the CDE/GNOME/KDE/Windows scheme 2) Many minor bug fixes to the library files. 3) Removed font and color overrides from the demos, so that the native look and feel would be preserved. 4) In the past, the interactive initialization file was inconsistent, and on Windows, $env(HOME) is undefined or most users don't even know where there HOME is (Profiles\User\Application Data\)! So a site wide initialization file tixwishrc.tcl is now used, which must be in the same directory as the executable. To restore the past behaviour, simply add the following line to that file: if {[file isfile [set file ~/.tixwishrc]]} {source $file} 5) On Windows, initialize the console even if there is no script. The problem here is that frozen/wrapped exes never have a script. To invoke this, simply set the environment variable TIX_CONSOLE to 1 if you want the console shown, and -1 if you want it hidden. 6) Added pkgIndex.tcl for Windows to the install. 7) Removed the patches to Tkinter.py as it is now standard in Python. 8) Updated README files to say that Tix should now build under 8.3. Tix8.4.3/docs/Release-8.1.3.txt0000644000122200012240000000167707404566510016131 0ustar jeffhjeffh00000000000000$Id: Release-8.1.3.txt,v 1.2 2001/12/09 04:49:12 idiscovery Exp $ Release notes for 8.1.3 See also Release-8.1.2.txt Changes for 8.1.3 1) Added a starting User Manual in html and pdf. Changed the programming guide from ps to pdf. 2) Minor bug fixes to the windows install files. 3) Minor bug fixes to lib/pref/WmDefault.* files, a Package for making Tix apps use the CDE/GNOME/KDE/Windows scheme. GNOME is still barely supported because of the difficulty of finding and parsing sawfish definition files. 4) Added index.html files to help users find the documentation. 5) Updated old /README and /docs/FAQ file, and added Roadmap.html. 6) Fixed bug with -debug in library/Init.tcl 7) Chamged demos/widget to demos/tixwidgets.tcl 8) Made sure default target for windows make is all not install. 9) Begin removing subwidget optiondb for things like *entries, *scrollbars, *text, .background, etc - remove them next from schemes. Tix8.4.3/docs/Release-8.2.0.txt0000644000122200012240000000466207423747750016134 0ustar jeffhjeffh00000000000000# -*- mode: text; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # $Id: Release-8.2.0.txt,v 1.2 2002/01/24 09:12:08 idiscovery Exp $ --- Tix 8.2.0 Release Notes --- OVERVIEW ======== We appreciate your help in testing Tix. Please follow these steps: + Read license.terms in this directory for licensing terms and a disclaimer of all liabilities + Read this document + Download Tix source release + Build Tix + Run the Tix regression test suite and demos + Install Tix (with care) + Build/run your local apps using Tix + Send us feedback CHANGES ======= For a full list of the changes, see ChangeLog.txt in the parent directory. Here's a list of the major changes and improvements: + Improved support for Tcl namespaces and Itcl + Revamped build system for Unix and Windows + You can now compile Tix using cygwin as well as VC++ + Better support for native look-and-feel on Windows (incomplete) + Preliminary support for ::tk namespace using ExposePrivateCommand (tk8.4) + Some features have been deactivated and may be restored in future release: + Embedded TK (ET). See http://hwaci.com for the successor to ET. DOWNLOAD TIX ============ The sources to this release of Tix can be downloaded from http://tix.sourceforge.net/ You also need to download Tcl and Tk sources from http://tcl.activestate.com/ BUILD TIX ========= Please read the files win/README.txt and unix/README.txt. Because of major changes in the build system, you may run into difficulties when building Tix. Do not despair. If you have questions, bug reports or, better yet, bug fixes, please send post them on http://tix.sourceforge.net. RUN TESTS AND DEMOS =================== Refer to the win/README.txt and unix/README.txt files for instructions. You just need to type "make test" and "make rundemos" in most cases. INSTALL TIX (WITH CARE) ======================= Refer to the win/README.txt and unix/README.txt files for instructions. FEEDBACK ======== Please send us feedback so that we know about the quality of this release. If it works fine, consider sending us a message such as "it works" and noting the versions of OS, Tcl/Tk and other relevant components. If you encounter problems, please let us know so that we can fix them. Again, thank you for helping with Tix testing. Tix8.4.3/docs/license.tcltk0000664000122200012240000000407307110476665016030 0ustar jeffhjeffh00000000000000---------------------------------------------------------------------- COPYRIGHT NOTICE OF THE TCL/TK SOFTWARE. THE TERM "SOFTWARE" SHALL MEAN THE TCL/TK SOFTWARE ONLY. THIS NOTICE DOES NOT COVER THE TIX LIBRARY. SEE THE FILE "license.terms" FOR COPYRIGHT NOTICE AND LICENSE TERMS OF THE TIX LIBRARY. ---------------------------------------------------------------------- This software is copyrighted by the Regents of the University of California, Sun Microsystems, Inc., and other parties. The following terms apply to all files associated with the software unless explicitly disclaimed in individual files. The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. RESTRICTED RIGHTS: Use, duplication or disclosure by the government is subject to the restrictions as set forth in subparagraph (c) (1) (ii) of the Rights in Technical Data and Computer Software Clause as DFARS 252.227-7013 and FAR 52.227-19. Tix8.4.3/docs/Files.txt0000644000122200012240000001123110162673273015131 0ustar jeffhjeffh00000000000000$Id: Files.txt,v 1.3 2004/12/24 01:54:03 hobbs Exp $ This document describes the operating system independent file handling capability in Tix. This is pertinent up to Tix 8.2, but isn't 100% correct for Tix 8.4, where the FS handling was simplified using more Tcl core file routines. In general, this should all no longer be relevant for Tix 8.4 users. Use Tcl core routines instead. 1. The problem: (A) Handling user inputs. In various Tix widgets, the user may enter a text string to refer to a file, a directory or a file pattern. File: tixFileEntry tixFileSelectBox, the Selection part Directory: tixDirBox tixExFileSelectBox, the "Directory" part Pattern: tixFileSelectBox, the "Pattern" part tixExFileSelectBox, the "File" part (B) Interfacing with application These widgets support a -directory option tixDirList tixDirTree tixFileSelectBox tixExFileSelectBox These widgets support a -pattern option tixFileSelectBox tixExFileSelectBox (C) Displaying the file system in a single hierarchy tixDirList tixDirTree 2. Issues: (A) Unix: Tilde expansion (B) Windows: No single file system hierarchy. (C) Both: Need to translate relative pathnames, "." and ".." 3. Reusuability: Many widgets need to list directory, glob, display hierarchy. We don't want to rewrite the same code again and again. 4. API. (A) Types of API External interface: Takes an input from the user or from the application and translate it to a canonical form. Internal interface: operate on filenames that are in canonical forms. There are run-time checking whether the filenames arein canonical forms. We have the two types of interfaces so that we don't need to perform needless translations from "user form" to "canonical form". (B) API Consistency External API always takes a filename in the native format and return file names in the native format. (C) Errors User errors are reported in an error dialog. Application errors triggers a TCL error return code. There should be in-line comments stating whether an input is from user or application. 5. VPATH: virtual hierarchical path Unix: In Unix, a VPATH is the same as a file pathname. Windows: In Windows 3.1, a VPATH is "xx\" followed by a normalized DOS file pathname. "xx" by itself is "My computer" and refers to the root directory of the C: drive. In Windows 95, a VPATH is "xx\xx\" followed by a normalized DOS file pathname. "xx" by itself is "Desktop" and refers to "C:\Windows\Desktop". "xx\xx" by itself is "My computer" and refers to the root directory of the C: drive. Normalization do not go into the virtual prefix. E.g.: the VPATH for "C:\Windows\..\..\" is "xx\xx\C:", not "xx\xx". 6. Normalization: tixFSNorm context text defFile flagsVar errorMsgVar This is the main function that translate a user input to normalized (canonical) form. Parameters: context:VPATH The "current directory" under which the translation occurs. It is used only if text refers to a relative pathname. if context is the empty string, then text must refer to an absolute path. text:string The (user/application) input that needs to be normalized. The exact mode of translation depends on the flags defFile:string If the input is a directory, append this to the directory. flagsVar: ref to array flag(noPattern): we don't want patterns. Treat all wild card characters as normal file names Return value: No error occurs: errorMsg is not set and a list of three elements is returned: index 0: the normalized path of the input index 1: the VPATH of the directory. index 2: file(s) in the directory. index 3: pattern(s) in the directory. Either index 1 or 2, or both, are empty strings. They cannot be both non-empty. A Normalized path: 1) is absolute 2) has no double slashes 3) has no trailing slashes 4) has no relative pathnames 5) has no tildes file normalize directory This is mainly used to check the validity of -directory option of the widgets. Parameter: directory: Must be an existing absolute path. Return value: Returns normalized path. Error given when directory is not an existing absolute path 7. VPATH translation: tixFSVPath pathname: returns the VPATH of pathname tixFSPath VPATH: returns the pathname of VPATH 8. Valid file names: Should prompt to user about invalid filenames (E.g. In Windows, names cannot contain "*") 9. Creation prompt: If user enters a file or directory that doesn't exist, promt to ask whether he wants to create it. 10. Tix8.4.3/docs/FAQ.html0000644000122200012240000002661010162670172014625 0ustar jeffhjeffh00000000000000 Tix Frequently Asked Questions

Tix Frequently Asked Questions


Legal Issues

[L.1] Is Tix free software?

ANSWER: Tix is distributed under the same license as Tcl/Tk (a.k.a. BSD style license). Application developers can freely redistribute Tix along with their products.


General Questions About Using The Tix Library

[G.1] What does the "-disablecallback" option do?

ANSWER: Many Tix widgets have both a -value option and a -command option. Any modification of the -value will cause the -command callback to be executed. Sometimes this is undesirable. For example, calling "config -value" inside the callback procedure will cause the callback to be re-entered and thus an infinite recursion.

The -disablecallback can be used to advoid this problem. When this option is set, the -command callback will not be executed even if the -value of a widget is changed. Therefore, if you need to modify the -value of a widget inside its callback, do this:

    proc my_callback {w} {
	$w config -disablecallback true
	$w config value blah
	$w config -disablecallback false
    }
    
If you find this too troublesome, you can call the command tixSetSilent:
    proc my_callback {w} {
	tixSetSilent $w blah
    }
    

[G.2] How do I set the width of the entry subwidget inside the tixControl widget?

ANSWER: You can use the option database or the -options flag to set the configuration options of the subwidgets. E.g:

option add *TixControl*entry.width 10
OR
tixControl .c -options {
   entry.width  10
}

[G.6] I am not using the tixForm geometry manager, but it is giving me errors about TixForm. What happened?

ANSWER: When you get error messages like this:
 (TixForm) Error:Trying to use more than one geometry
           manager for the same master window.
           Giving up after 50 iterations.
Most likely, the problem is when using tixLabelFrame widgets, you packed to the wrong frame:

This is WRONG:

   tixLabelFrame .d
        button .d.b
        pack .d.b 
This is the correct way:
   tixLabelFrame .d
        set f [.d subwidget frame]
        button $f.b
        pack $f.b
        pack .d 
Remember you don't pack directly into a TixLabelFrame widget. Instead, you should pack into its frame subwidget.

[G.7] How do I generate the tclIndex file for Tix?

ANSWER: Tix tclIndex files cannot be generated using the standard auto_mkindex procedure. You must use the tixindex program in the tools/ subdirectory in the Tix distribution. The syntax is
 tixindex *.tcl
    

[G.8] Can I ignore the default arguments passed by the various -command and -browsecmd options?

ANSWER: You can use the tixBreak command. For example:
 tixFileSelectDialog .c -command "puts foo; tixBreak" 

[G.9] What does tixWidgetDoWhenIdle do?

ANSWER: It does the same thing as tixDoWhileIdle (and "after -idle"). The difference is it takes its second argument as the name of a widget and executes this command only if the widget exists: i.e.:
  tixWidgetDoWhenIdle tixComboBox::Update $w blah blah ..
will execute tixComboBox::Update only if $w exists. $w may be destroyed after tixWidgetDoWhenIdle is called but before an idle event happens.

[G.10] Why isn't such a feature in Tix? Will it be implemented?

ANSWER: Generally requests for new features are welcomed. You can submit your requests to http://tix.sourceforge.net and we'll be happy to hear from you.

We can't guarantee to implement the requested features immediately. Usually it depends on how important the features. If the feature is requested by more people, it will usually get done faster. However, some frequently requested features probably won't be imlemented. Usually these features are cosmetic changes and:

  • they do not add new capability to the widgets
  • they are not universally liked
  • they confuse the user.

Some examples are:

  • Different foreground and background colors for the NoteBook tabs: having a lot of colors may antagonize the users that are "color haters"; also, the different colors don't make it easier for the user to locate the desired tab.
  • Ring-binder metaphore for the NoteBook widget: a waste of screen real estate.
  • Rows of tabs for the NoteBook widget: the user may be confused when the rows of tabs are switched. If you need to have a lot of tabs for the notebook, use the ListNoteBook widget instead.

[G.11] Who are using Tix in their software?

ANSWER: See http://tix.sourceforge.net

[G.12] I am using a DirList widget. When the user clicks on an item, the procedure of my -browsecmd gets called twice. However, I just want it to be called once.

ANSWER: The -browsecmd procedure is triggered by three types of events: <1>, <ButtonRelease-1>, and <B1-Motion>. When the user clicks on an entry, a <1> and a <ButtonRelease-1> event will happen in rapid session, which causes your -browsecmd procedure to be called twice.

A crude fix for this problem is to ignore all the <ButtonRelease-1> events. You can find out the event that triggers the -browsecmd procedure by the tixEvent command. Here is an example:

    tixDirList .c -browsecmd Browse

    proc Browse {args} {
	if {[tixEvent type] == "<ButtonRelease-1>"} {
	    return
	}
	# ....
    }
    
However, the above solution is not perfect. For example, if the user clicks down the button at entry one, drags it over entries two and three and release it on top of entry three, the following events may be caused:

  1. <1> on entry one.
  2. <B1-Motion> on entry two.
  3. <ButtonRelease-1> on entry three.

Therefore, if you use the above method, the browse event on entry three will be lost!

To devise a better solution, it's better to understand the basic design conventions of a Tix-based GUI. Suppose we have a list of entries displayed in a listbox (or DirList, or HList). When the user clicks on an entry, the GUI usually responds by displaying a "detailed view" of the entry. For example, if we put a list of file names in a listbox, when the user clicks on a file name, we display the contents of the file in a text window. If the user then clicks on another file name, the text window will load in the contents of the new file.

Now what happens if the user clicks on the same entry twice? Do we reload the contents of the file into the text window? This is usually unnecessary, inefficient and probably not what the user wants to do. The Tix convention is, when the user clicks on the same entry again, the detail view is not updated. If the user wants to force an update (e.g, the user knows the file's contents has been changed and wants to see the new version), he or she can double-click on the entry and the application will respond by redisplaying the detail view (reloading the file).

To implement this policy, the Browse procedure should be modified as the following:

    proc Browse {args} {
	global currentView

	set ent [tixEvent value]
	if {$ent == $currentView} {
	    # We have already displayed the detailed view of $ent.
	    #
	    return
	} else {
	    set currentView $ent
	    DisplayDetail $ent
	}
    }
    

[G.13] I get an error "can't read data(-value): no such element in array" when I use the tixExFileSelectDialog.

ANSWER: If you use tixExFileSelectDialog like this:
	tixExFileSelectDialog .f -command foo

	foo {filename} {
	    destroy .f
	    do some other stuff ...
	}
it will cause a Tcl error because the dialog assumes that it still exists after calling your command. This usually result in errors like this:
	can't read "data(-value)": no such element in array
	    while executing
	"set data(-selection) $data(-value)..."
	    (procedure "tixComboBox::SetValue" line 30)
This "feature" is built into many Tix widgets and can't be fixed easily. To work around the problem, never destroy widgets inside -command calls. Usually you should unmap toplevel windows instead. If you must destroy widgets, do it with an "after" command. For example, the foo procedure should be rewritten as:
	foo {filename} {
	    wm withdraw .f
	    do some other stuff ...

	    after idle {if [winfo exists .f] {destroy .f}}
	}
Execute the "after" command at the very end of the -command. Otherwise the idle handler may be activated by some "update" calls.


Question About Porting to Specific Platforms/Software

[P.1] The configure script gave me strange errors.

ANSWER: The problem may be you have several operating systems sharing the same file system. Some people encounter error messages like this:
# ./configure --prefix=/usr/vendor/tcl
loading cache ./config.cache
checking for a BSD compatible install... /usr/bin/installbsd -c
checking for ranlib... ranlib
checking how to run the C preprocessor... cc -E
checking for unistd.h... ./configure[603]: "${ac_cv_header_$ac_safe+set}": bad
substitution
The problem is at line 2, configure loaded in ./config.cache, which may have been created by a different operating system, with settings only usuable for that operating system. To get around this, you should type
make distclean
./configure
make all
Tix8.4.3/docs/Release-8.4.0.txt0000644000122200012240000000564710162670342016124 0ustar jeffhjeffh00000000000000 --- Tix 8.4.0 Release Notes --- CHANGES ======= For a full list of the changes, see ChangeLog in the parent directory. Here's a list of the major changes and improvements: + Complete rewrite of the build system to use TEA + Separation of Tix package require and Tix style usage + Code cleanup to use Tcl 8.4 as a base version The python binding has not been updated and may require some maintenance work to function with this release. DOWNLOAD TIX ============ The sources to this release of Tix can be downloaded from http://tix.sourceforge.net/ You also need to download Tcl and Tk sources from http://www.tck.tk/ BUILD TIX ========= 1. Uncompress and unpack the distribution ON UNIX / OS X: gzip -cd Tix.tar.gz | tar xf - ON WINDOWS: use something like WinZip to unpack the archive. Because of major changes in the build system, you may run into difficulties when building Tix. Do not despair. If you have questions, bug reports or, better yet, bug fixes, please send post them on http://tix.sourceforge.net. 2. Configure ON UNIX / OS X: cd Tix ./configure Tix uses information left in tkConfig.sh when you built tk. This file will be found in $exec_prefix/lib/. You might set the --prefix and --exec-prefix options of configure if you don't want the default (/usr/local). If building on multiple unix platforms, the following is recommended to isolate build conflicts: mkdir / cd !$ /path/to/Tix/configure ON WINDOWS: Version 8.4 added support for building in the cygwin environment on Windows based on TEA (http://www.tcl.tk/doc/tea/). You can retrieve cygwin from: http://sources.redhat.com/cygwin/ Inside the cygwin environment, you build the same as on Unix. Otherwise, hack makefile.vc until it works and compile. It has problems executing wish from a path with a space in it, but the DLL builds just fine. A DLL should be available where you found this archive. 3. Make and Install ON UNIX, OS X or WINDOWS (with cygwin): make make test (OPTIONAL) make install ON WINDOWS (makefile.vc): nmake -f makefile.vc nmake -f makefile.vc test (OPTIONAL) nmake -f makefile.vc install RUN TESTS AND DEMOS =================== Refer to the win/README.txt and unix/README.txt files for instructions. You just need to type "make test" and "make rundemos" in most cases. FEEDBACK ======== Please send us feedback so that we know about the quality of this release. If it works fine, consider sending us a message such as "it works" and noting the versions of OS, Tcl/Tk and other relevant components. If you encounter problems, please let us know so that we can fix them. Again, thank you for helping with Tix testing. Tix8.4.3/docs/license.html_lib0000664000122200012240000000374607110476665016507 0ustar jeffhjeffh00000000000000---------------------------------------------------------------------- COPYRIGHT NOTICE OF THE HTML_LIBRARY SOFTWARE. THE TERM "SOFTWARE" SHALL MEAN THE HTML_LIBRARY SOFTWARE ONLY. THIS NOTICE DOES NOT COVER THE TIX LIBRARY. SEE THE FILE "license.terms" FOR COPYRIGHT NOTICE AND LICENSE TERMS OF THE TIX LIBRARY. ---------------------------------------------------------------------- Sun Microsystems, Inc. The following terms apply to all files associated with the software unless explicitly disclaimed in individual files. The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. RESTRICTED RIGHTS: Use, duplication or disclosure by the government is subject to the restrictions as set forth in subparagraph (c) (1) (ii) of the Rights in Technical Data and Computer Software Clause as DFARS 252.227-7013 and FAR 52.227-19. Tix8.4.3/docs/tix-book/0000775000122200012240000000000010767576212015074 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/tix-book/fig/0000775000122200012240000000000010767576212015641 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/tix-book/fig/oop/0000775000122200012240000000000010767576212016436 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/tix-book/fig/oop/arrows.gif0000664000122200012240000000230207170675205020433 0ustar jeffhjeffh00000000000000GIF87aÄPòÿÿÿÃÃÃqqqëëëÓÓÓ}}},ÄPþHºÜþ0ÊI«½8ëÍéè`(Žä7šBª®l«~n,Ïtmßx®ÇðÎ(ߪ',Èä‹€*šL¥tJ¥‹Î¨ñZíz¿3®/;šÏè4!Ín»ßð¸|N¯ÛÍëû ü\’þ€‚ƒ|Zb5‰`Œ<‡7‹a‡dK;’Ž™˜—”A)œ.¢š¥V6¤?Ÿ}¡¨Š¯¦²UªCZ–/ ˆ±“³¿_µ¹½ˆÃˆ»Â®À̧ž*Å{˺­¼Ï¥Ù*ÙÝßÛÞÚ)Ýâäáâå`ÊÖ)ÑÇ•ÓÄ…òŽå÷ÚÛùúáàçÿæ{Å`Ô­0ð’”!­,|+ÔIäb¦DQÚ‚†þ°^<‡ïê5Ú°¤@ãÔ¥s„1”AŽ V#’ÇÍ1FUNäÖOŸ7<74óÒ]G‡ÈfëdÅ’;Ïñë”;šG¯|¼ºTJNt@ŸŒªrà5bYYQêÚ‚]‘”«ò,+6ßE¶«`ò¹öl³¿[ðnt‡ïàn+™J°á›KÖÁÕ¯5zjêÙ̹³g9šé„ž3úÁçÓ¨S«^íÙA²bËžM»¶íÛ¸sëÞÍ»·ïßÀƒãžùZ¸ñãÈ“+_Μ8qæÐ£KŸN}¸Ú2Õ³kßÎ=·óOÝËßüº.òèÓ«÷n>ìõðã“ÿŽ]¾ýûÕéŸÇÏ¿þrýîù'à€¾ˆ &X›@(è`‚ ¾—[Vhá…*‡á†jÈá‡z⇻E¸Ûˆ "Šª˜‹ºˆŒÊh!õMpØh…<ú(¿õèa%¶w nDÒnF¾¸c‘B×doQÎ8ålÚÜ–åÔ€Çä–²uiÛ—?’É¥—UwelOBÙæoo`fmhÚfâ˜Næsæœ¾Õ gœ´åi¥šÙäf¨›jÚ™èŸI⸟Ž\îC¨l‹ÒÙè —Æ–i dÞ ©”µ‰:Û§±íI)§– ho‚:ú(¦¯òÖ¤ŸrÙg§´Ffޏié>§ÖzâŽÃþÛ+©²&K(ª¶6jê²ìI Ÿ»²y¤³¸í±Í:KíquNëi­ª+í¬®nËí¥ßbûî³ÆÊËm±¾º÷¶•òz®®¥šïªÍ*Z/Áââ«[º·•Ë®ÂZÞ6íÀêök0Àá>ì-ºJ6Èo™ÿËlÀ£F\éÅ#³ê/´Î±n¶%“»©Ú¦ 'Ê&[óm ¨áÚË:ãypÅTbÌÅ oê¯Èì5PÜÇG4’6m±æºpÇíÛÕµe]sÎXJõÌZWûë¤^—m´Õf‡öØ2S­¶¾bêØãÞ|÷Ý·‡~î7à‚7m^x¾Iå¬â‹¿¹à“Nxå–ÿ½µµK>èy .:|¡nú|\Ÿ®zz¥¯îz~©¿.»v­Ïnû±ß®ûrµïî{o½ÿ.<˜x;üñ›¯}-òÌ߸!„D/ýôÔKÀ¹ Õg¯ýöp.Db“…Ù}ï˜øè¿Å.æ§ï~à+Åùï×&œ6kü÷ï¿ûËÌÿHÀ ;Tix8.4.3/docs/tix-book/fig/hlist/0000775000122200012240000000000010767576212016764 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/tix-book/fig/hlist/dirtree.gif0000664000122200012240000001132507170673505021110 0ustar jeffhjeffh00000000000000GIF87aÿóÿÿÿÿÿÃÃÃqqqëëëÓÓÓ}}}<<<}}<óÿ‚®Ûç,ÿþ0ÈI«½8ëÍ»ÿ`(ŽdiN@ª®lë¾p,Ïtmßx®ï|/§ pH,H 0(8ŸÐ¨tJ­Z¯Ø¬vËíz¿à0xÙK æ´zÍn»©è6ìØïø¼^ßûÿ€‚ƒ„…†‡ˆ‰‰hŠ{s?uy}“–—˜™š›‚Œ™tš•œ¥¦§¨¦ž˜ ‘¢Ÿ’©²³´µ|¯¬L±v¾¿ÀÁ¾NÂÅÆÇÈÉÊËÌÍÎÏÐÑѾx­»¸½ÔqÛÝÞßàáâËÓÛÖºe”oëìíîïðRç¡êФ¶øùú÷†«‡÷×ÒYËÖ—¾ƒOñ+ä¯`¶€24˜°¢ÅI IÔÈ "Áþƒ2êKq‡äÅD&i‰ì„KË€è"œ8ó`Ê”zpjÒ‰‡çŸ )r¼#ÔÚËŽ1?Ö YПv²øóÔŽ |+­jÚëèäõqMuõfÔ$_ M{vjÉ9ÏÆ½j•îZ¹*ÇþÙºô¥×y®Â"ÊJ–íÛºw§–m ÷­ÝÃPí6¾‹U¯¾Zÿ¾;hÍNMJf ×li¹¢Qã]KU5㺫eeŒr¹eß®½Òëlg,е›EÜÓ5dÄ8u>M­šråš’~;²9÷×ÝG=W@¸ÔhØÄ o{²s¨Žçæ›ýJú-í€ÜÃÄžÛs2à³”“þ{\@åþ‘šÎÂ^5ÓÁ·p öeR ¸kÇçSUö‡sëAø^o·qÇ gÙ‰"'¦G¡x«qHáx6§!¶tW›‚—Hw'ÖÖã&§©ÈÓ€¨_ŒÅ96Ü> 曎ñ6X“'UY¥ ‚xŸu€aã CV†)æ^T–81È@饔þ8æ›Lºù%M] df›pæ&–Ny]”GQƒæ8„jè¡Æ úL9Ðè ¢F*餔v£¨Gg é¦œvêé§ †*ꨤ–jꩨ¦ªêª¬¶ª);>âꬴÖjë­¸æšëuFD€¦+ì°Äkì±È&«ì²Ìþ6ëì³ÐF+­³Jûª£knì´Üvëí·à†+®³TKÅT”k¯›Åú«ãÆ+ï¼ôÖË­º›¢;…¾R¨Ë®6înËo<lðÁNH`n¿Cá/¶vj#0ÂWlñ sÚpÂðNñðŸÙJ o°n¬àE §¬r¿øËòµQ|ÜëGï Û ä¬@[ ¼òÏ)gœo¿CÇ óÌ”ÔLr1\³Î9ûŒÏ@WM±Ð.;Ü2ÑëBìëÄL+Q… VPmõÙcݱà ?!s»€ŠlsØ( 0öÓPç½sÙh÷vËk0§Fw rÄÜ)½ñ?ØME zëm6“ûm¹þjó«ö¶n wȉƒM9ŒWîä‘Cmz«_» 8çŽô9¢?AÆ ØLzêQýúðlÄ.øæ›vnûçˆË:òâ¤;î;ÞÀ¯Þ:ñØgaüì ¿ pÜ¡?/ãLH?>õ©›~}öìW;òÖþoâ‹O·Ö£¹úí÷ÏÅû¥B—÷è>çÍr0¸ðtÆ?ÿ9𠙃áØ ÜÙÏ d{ ÿ¸àY$‘Ü–Æ©mð„Z0ÞBX¿®Ã„(Œ¡û:(Ï}t$á ×'CF06$ çöðˆ £á©<Ä jë‚;D¢eW-˻aþóˆØ#ÞMS^—ÈÂr±„Ê-†<Ý!7É:62ÒcŽìcE>Rl¾»dðG9N2í“° %©âè5šIÒŽL`A._ Ê½±Ò•&s%,»ÀÇYBòkP)–ÁЬ˜×LhÒnù3Ozt =§H-¸Î’žÔý>µ¨Ï:ºô¥Ké=WªÎͤ8-^L=5S!Fr¡? êÕ†zÑ,µ¦~ód0{¦…E"Q§ͨIº26RϪãËP5ˆU™ò”ŽQ­jÅÊÖa–•¨g-¥Ooê4ðí•& ¦øÖ¦Ê‘”9´iWÅúPpúL¯-XØWÅ5°iZaáÎhÆÓlc#S«Õ?"µ¤5˜¬<©XŠšV†Í×cÏx6ˆ6¬¤½ì+¯ºYÕvö¨-¬d/Ùº"P¶Ðà¿9\{/—xÌ›vC]ä¸m´©«cÁ½ZŸzU'ÚVìžl½ýó:£ÎsŽöLui¬ÜäÛh.VÅþv9ÖñûSŠ{S¹ew®Énaôúörj·Ø—n0?Ï‘2¨ëiç‰Yì6Ùé-¹ÎGöƒ=º’º»®‡G [`W³Oÿ:Û;ßxy»Ó¼ñçé· CEÞ½Çy×|Ò÷Ìì\Ç@ô¿-<åÍ.ÑyV-ñî[=ã †kÞéšÀw0egø ÿlÈO—ò^>П.ú…—ûô+Ï\ïæ鋎2ë™ïz.°·f>õMøóþ_}óY_>Áÿú÷Ë~òtç\ô·Gö§z{ÇhúiÆ4Ñ'~ñ'Lä—X—×Ùç1Û§`ñ5\7C©·v¨~ ØxøÈ5øÇw­5‚îP‚…s‚Y*ˆRè.‚0ƒ˜3ƒŠwh38˜D¸ƒ¨t7˜REzÅ‚l3„¼‡å5q‡„S%LCx죄ÊSƒDxk~Ç€€75–W}b8{Ùƒ…ò³{¶æmw>QÙ\chtƒ~锆%ÕM^è±·\qØp™G‡ùô‚·†‡–{’7=˜Ev¶çƒ¥ƒÉÇ„vØUÍö|+~'ƇpHPþc†‚Ãw¸†þyX=çu}ê‡dˆ=œ¸xÜWý'в÷Lå‹içˆÚ‰Ë6ˆ Xˆz8~ VŠœT}퓊ž(‰¹z†XzДHŒWH‹h‹ÝZ/à~®ˆ„¤U{„7…ÁèŒ&ˆ†·Øƒb%_?x º¢n¨´K+T$ˬt ÝeRŸw¤æš¤£'«p›f»ªT™¶ê{0`‰[Ê·ßúC `¯4²w i‡¸½x}oû±G£¦µ˵j‹·X ¶„tŠ£›ƒæbE³«¹hk´«ë¹+­Á7y¤x¹þF»È&®© ³EÊŠ­Kµf9w|[Ÿy7Kd»è ¹u5›¦ãļÖ(ƒÝsM©z­{¢Ôk¼›Ù¶éªm÷´4Ä ²ªË¹*þÛ6ÈCBë+¾¸ë¾euD%¿Ò›Ÿ=[µïKö7¿Ek¿LN^§1 #À›Û¾ |œRE¶ãuø²1 |»L¾? ‘ßœ<½õÛÀ×ëK>{Á¤;ƒ´“ú´eµ„d½#Ì‘Ê)²˚åRGÌ¿ã;6Њ§ëI…+¢Ü•´¬ƒ>µxIÄJ¼ÄLœAhSîÕÄR<ÅT\ÅPE@$¤º²Å\ÜÅ^üÅ`l›`<Æd\Æf|Æb|Æj¼ÆlÜÆ§’ÆnÇr<Çe|‚Å@ÇxœÇz|+O ¡)Ïc/‚<È„\ÈÝb+°²sÿs¨_œ³¦¯8@»6¾¹™¸j¶DµGðËÁ,ÀÐ=Ò0ÔÎÇ¥ò¼:ÔÁ¯^•Êêñ¶ T³濾êRì‹›™>.õ;·¤Y¾x×"80¶¸KÒu¬³²•·Lë.쉲åÏ`âMfV4èÓ•Gç•ef¹(¦³rJ«ª¸’À*tŽšž˜}›æ°¹ûA‘­Bþwd±Þ ìšò­±Ôf€ì}¾(fµÜ"'Ù^Úí¸' +é¹è¦®¬ä¶Kä“*WÀºÎéî½ +ݼÌÊ.¾k otüÂêo½~ Ë'± 3¬pà G ñÄWìðÅ[œ1Æs¬qÇÌ+½k¨€(§¬òÊ,·ìòË0Ç,óÌ4×lóÍ8Û €ÈÏ "Â9-ôÐDmôÑ-/‹\Á#÷k©¬HG-õÔTW ³ÒêÅ ¯Ó¤JA`Ì»è|²Õd—möÍ;oM0É¥Â8¶Ëoë,7Øg×m·Ìi/­µÞ\ÿZ@Ü,>³à/Óƒ÷݈'ž2Ö0îußÚ:XxØþ䣲å^øÊ˜c~¹æ({~2芗î2ãL÷̶×7Â<6å°¿xÜ„‡~ùí•·L{è²óî»éÀsÎs¨«{ç¶ë¶§ü:îÊÓ¼{àºGß|îÓo}Þ¯ 9“µ'ÿüóŸS7ç ×.:îà[<êŽ7¾=Ô›Sï=ó™Ç_¿üp/?}úê—Îþ¾ÅûZü¾G?èï€ÝÛú Ø¿ÄaÏ}Ú3ØÓ€6ÀÞU΂ÕÃçè§¿ îÏ‚ük â˜:⽂¼ øTH8ÏIOy¤[!ïVx¾ Šqÿ‹àÏJÖºúð‡EËaÓ$Ø5ãIˆHLbÍHØ>Ÿñ…JŒ¢/7¼æ8ÑþN<üÛ·8E!ªî„YtÈÆø±2zìŒK#ѸF5šÑlÜE™sÅfe1`xÄÀ—SǃÝ1€ô’Ú†¸Ã¶Ù+ˆ|UöùÄ?&ò‘Š„ #±hHLk—|R&ǵGyp[°U(1 Ê”’§Œ@*7¥Nª­¬;$V©ÊPn’•… eØTË'¹’oDô›Ô”MñZ´e1¥UÊe¦éOb̤3M¹Kb“™Æ„¦´LðËìÁÒˆxã´lµJrâò”æ„cÄfÕ¨]âRQè<çGÐM~SD£¼­ÒÉNL¾óŸý짦ªKRÓñ¬@34È/3rþáD?‘)e²)•ÎLçDŸ™ÌjjÓ”=çB;PÏ>NБ¤”èH‰uP„T•/ÝçJ׉Pø “1Í黀9I;Vr˜* ¨;mÚË‚êTŸ%ªRÔv2”§½'(- NeÎt¢15¨ºÑj´¥û|ØLÖP>T\ùÄ&E]zK}ª•¥kå¨V³™Ô¸ÒT®qí*IËjÅOÊ’x,©_ IÁ‚ñ§„E¤aÏú¯Är±Rý«cÝÙF"v²å+‹ÙV/ƒ{¼U‚¬ûïÄ^ ®SÁÄ}«–§[âi^ÒËæqoóqSv¢ ¼Ì(•9äÍÙ¹§%WŒÑg9[Ù›6r){g{æÎ{®þÖœèn º^…nסQšhA÷Ù¤Íj£‹µháN:W•q„I9Þ_™Öóƒ‡û\Ø–øÓ,ZdTÿ,é5ŸZ¹ãíôžC hïj¹Â[Viš„æè†´·£msißÜêZ!¹Á-ï’ýØG›v©@¶*r¥üd%X±ð±%«cîRØnñ{ÕœcYsë[lÆòË S°²¸ÝKvµ—vgTÜAæ1”“|ïhE0Þ¶€çÛU&CLÊbÝ1j^eÆ"Ú·àŵÄÉìã3ƒÔ×Å1¾ÐM^Èɡ֨~Ç##88@Ô!WÕÈA½#È8å¸2—ºfno˜wjJƒ´þymžª]õLiêæùÍQÔ³^ \èž•_t¤ NVÕÑî¨AÑLSõÌo›‹+ª¹Æ;Àu®ú[aŠ‘Ø»î²S=Õ üÚ³nqëF3٠ݵ4»{ë1ó×}×&¸g„n$YIÝm¼%§ß^«³àÌÖ(³ƒÄqõ$iêøÎª{o Tó¾ö¸ý%Ž«ÈC˜'½.ÊyoëÛÌõ;»µ;`…/—á XêîÈÌkœõµ=<[¿&kóÛñ¾/=îpH¿Òüùоô§Oýê[ÿúØÏ¾öi¯êÛ<à¿øÇO~ñHµüèO¿ú×ožo¾’ }?üA} „º æþb°?%ëïüû úGhÐÿW€L€µÅ¸€ €€–BÄ!8(蘸H ;Tix8.4.3/docs/tix-book/fig/hlist/hlist_ex2.gif0000664000122200012240000000417607170673610021356 0ustar jeffhjeffh00000000000000GIF87aË£óÿÿÿÃÃÃqqqëëë}}}óÿ‚®ÛçÓÓÓ,Ë£þÈI«½8ëÍ»ÿ`(Žä8”hª®ìu®¯ ÏtmÏç­ï|ïÿÀ pÌkƒØ‘f\:ŸÐ¨”×t&%ÑêtËízq„¬ò©ýšÏh_™x ã’ð¸|N˜Ûïø¼~Ïïûÿ€yuLc/-Š‹ŒŽ†X`lni–—Ck=šT•ˆ‡œ;¡˜¤¥£7§6UmLž@©¥±g°­”‘ž´“²5K½<À²¹2MºÅ ®?ÄSÂÏCÑ6Ó˜ÍÆTÈŸ’ÅËjÞ–Õ^â—וàÅÚ¬Ú¯èf½ðоÏð¾ò2Âôñøóäfæ3Üêv«–Œccé»w/Ÿ=‡ü"Êëg¯œ7 ¨ÎeK˜Œ"þ¢Ø]Z!D“+Î iñ†›H@ꀹJYÀVÔ·“"Jû miãeÆ›!9nÃuNÈ4,ƒ›÷“WÊ•*-­Ó êlfr7N%D³S’dIT¶¤9ßxHjíU‰vñöŒE÷+ΚsÉ-uv¯^¬X£fÕ*X•LTaÛÚE™T_®w"3\¹3š¾Ep‰uÛØ³é# ÛC3¡×°cËnM;h׳sëÞÍ»·ït, @@¼¸ñãÈ“+_μ¹óçУKŸN]º‹¹Ã«kßν»÷ïà‘cÇN¼€ùóèÓ«_Ͼ½û÷ðãËŸO¿¾}øÄÇ‹.ÿ¨¿ÿÿZþ@~·í‡@&¨à‚) ˆ€~†ðÇà„V( «%#¡…v ƒ¾±¡õ€€‡(¦XˆFx  £'zP£Š8vÈb†ŸlãŒ2Þ¨99áŽrˆ õ4Y"D)å‡&éâ’?©e”p9å—Ž Ù‘’$ji¦—^‚©¦"b.ue™f‰æšt†Yå˜o2§œPÖé'›wº)â‹zîäiþ©(m®£!¡YîÉe¢‹VºA£ d‡¥¡‡Z@©¥ ^ø`‹ƒb餓¡¦Z¦äªê«Œ°J&¬´¶ kž}Öª+·–:ä®ÀfÐë£KæÊd½ˆì²Êþ6{¬³É>+í§Áª0l®"ÚåÜvëí·à†+î¸ÜR[- ×&1¢§Û’ëî»ðžë_ºšþ:¼øæû­¼ýÑ»nBz[¾è ®¹üŠào¶ì’Øm¤ã±Á'ÜÈÂÅjëð‘ ïÄskñÅ:ŠmÆ KÀñ©MŽ1È\îÊŒkÉ™þ #sJ£Ë3?tнTl³­8·Š2ÀÛv|¦¸1 <´ÔF½ÆC:é3ÈTsܵÌ^wk5Ò£ò¨.ÃLßëô–P í¶À/{;6 XgðÚr† s×TÃ<·µIÏjlÁxÏÈõÔEÓ6ÑÿÝ`à¸jÌdÏœ¾x¹þEÇ ÏÛ5;Ž.ä¾ÚÍ3Ë-‡¯ç«‚N¬½*›îú·£¾¢ê'³nùëÇ.ûu4î§ïBï’ŸíñÌN›<òÐ.«»ðħ̺ð*FŸöÏSÿŸõ;s½öýÒ~öÒÝc~õâ×+º÷PÂc¢ ÆK>2÷]v0)Ÿ6ÂϤüÓO¢ýž:S€¬ÝùoìƒéÜ—+!ÝèIû;Þÿˆ@ãE«Z¤‘ ×)9ðõ“™WÁä+ƒìÒÖ×½I•ïƒ,°Pè=­UŽ…!<ÖaˆÀ‚ð‡3LŸÎr8½BjN@Œ’sÃqW44ŒV(=¶ˆMLâþ¹¢XDÒH~$Ìb—§E m2\Ÿ o(=ö‚ÜD(ž‘|O4–²ø½óu€‹jô#‡©GAVˆü3ä‘îXÄB*’Aˆlã#ÉëM’Œ ¤&/™ J¦‘“T*›•BçÈDî1v}¬_*?©(OæÑˆ_Ì{8ËP¹²Ž°ì`#E@ÇZ‚ê–´Ôá×ÇC8N뇦w˜*`nмb/Cå5ïšÁ\”3Íë‰Ñ’q¤e/ØÌL–ÒS6<"‘9Ç–MOZ%Š€@6¦ÌŠÐr§8q)ÂqjÓœ¦ô^7±ÈJ:~³š>œf9E‰'R{c>þúÎåYt¢¿¨$íÑ`ºïí,£2»DA7&Kž¢'ÀøˆRNª””Ô¨%aš¢—Ò4”!ZÝ&o:H™²’§‡ôé+J!›õF=*É*(ž3™ Têð„ÊOˆ} M-=!¦Á]J•€d)VIм²fÕqaíèɈM¢¦ÕžÞ”f6šÁtJjpMBæWyGUD©5œqÝ+XûZOuV±x?å {×*²Õšt%,7áúÄdšUª‹])K7Ér“L5Ùø>‹£ÌF•´€ mÎЂ³~Ö´RDmjsZ;_ÊösªUšþnû¸Ü ®®å,l½ ÕØ’ •ÁgÒìþ0Ä÷1ac=-/í8ªàT@}(P¢¥;ӇʲV,º®nm+LÒ©1ž ´ì7©“R—¶£%¯£F’:«„öa[i5\MÎwu¡HÁø^R9¸vËkPÄuÀ°ê¯þúJÀꓟÕ•„9JYëU•2Ä'>_µavXœežë Yðz¶µÝ`I/»Ïeö£6v[ VÞÎη‘óñ"ìP!ƒ¾;6rL‰|`%+¨ÄNž­kå'ß1Xβ–·Ìå.{ùË`³˜ÇLæ2›ùÌhóÃÃæ6»ùÍpV’ãLç:ÛùÎÎAr•=d¶=óy”d(Íiý;A‹âKh¡=E#Ѩ14£'I£Òœ¡´¦gaiU¼ 7¸ù¨GMê=„º6¥NµªWÍj?D;Tix8.4.3/docs/tix-book/fig/hlist/hlist_ex3.gif0000664000122200012240000000357107170673634021363 0ustar jeffhjeffh00000000000000GIF87aÓ˜óÿÿÿÃÃÃqqqëëë}}}óÿ‚Ç×ãÓÓÓ,Ó˜þÈI«½8ëÍ»ÿ`(Ždi fª®l›¡+,Ìtmß4Šï|ïÿÀ pH,ÚtÆÚ@–̚ШtJ "¡K‰ôZíz¿`7™}FÇá´z=DËÊ¥|N¯êø¼~Ïïûÿ€‚ƒwƒqZN.‹ŒŽˆf3n>•l˜™m“B—<\pNoœš¥¦–¤@ž; L”©?«§³š²7¶Gœ¡¯£´;IÀ=þ¸J“¢9®Ç°¨ÆÅÓÁFÔ8سÈÌДÝÇÎܼÆÚ`ç§äÏ4ßÇá»ìDëUÀöÕø3öÖÅýÖÕÔ†ÝÛæŽ•²‡ÊQ§lC¸SƒùË7‘"¿‹Ó±qCAÌÁOþð¶CøÐTD}õ]TÉÒÆIu°Ì$Ì5¤Bq‰º›IÊK€4 m©òßOSÁÝúÈ*dNyÞø”Ôôs >‰)]®$Š4¦5›ÞŒ·®§lÿµ:´åÑRe™Šqª« ØY/+fͪW#¦¸açŽ9Ïnš´FXUm×^3vÒMYšåL€#Kü4óåÏjæŠ @¼ô‹n«êŽÉn I¾«ã¼ôz pÀäÚ{oÙ.±- ±Nð­–†<0Áãüf¾qÞ ,¥Ç oÁ¿û°=Œ·¯°¦ÓérÇž¦XnÇ"›\óɧ|)Æ.<‹@;lrÌ×lsÉG‡[´Á:c°²Ï"px#“Dƒ2Ò&“|õ·M›ð´£&ý²ÀU;ðÄEg½5Ê]Ês¦P‡ ¶ 0{švÒxßMó»m×úv©-o*Ùv›ýnÇ{_½tß"|ýëϧ 1žz+}òÙþZã}ãÿ½/²ƒ ì1Η¾9ç 8Žk覷.1êøV(£¯«oúì´·W­î¸7 »ª·û»®Áó;<­Åƒ¾¬+/¥çßã¿tÉ´óBO;°‘wš'l^ýÉ—È)³£;i¦µu>«ìø jo,Øæƒj$Ñêó.¨þðó*¿¶ôcØù”„?NñÈw.ëðþ§°þ¬}M¢šÝô„>öÍMñ“£æ÷¸¨ prj¢àþ®”@ n |´Ÿ™ (¸>ª„â ¨B$±„½K`îLhF­{+œ` !h$h½‡Äb Ë 4º#"Ñ>

Nîé ¤Ux@‡ç[ã@ùˆÑUò…t,qXJDŽÐM¬ŒùØBUÝÒ”³¬¡*ÄGþh—Ôæ)UK¶ð—`Ê%„i¨Tîn“Ëj¦þ®9ÌIóAÔüÔ3Ù;Y“y˜”$g'É65±›ãû&E%ÏyZªžö\çØÁ| Ÿþüd1ûPä ´ (B¿¤Ð…B©¡ýDþ#ꢉRôC½h‡2ªÑ ´£³â(HWùёҳ¤&½'JSªO.n¥•)L!Ó™öi¥6mSMsê‚òôb‚ÌØKMœH>=ª×ŒªÔŠ2µ©}*T7*Õ©z4¨YÀC­ ¡Ùá[å*IeW¸S¬]­*Z½©Öµ>«f%¨[ËØÖ¹B±®veDRóê4¼òUQpÜ_ÇI~öA{=ì«Xùµ±U|,dµXØÊu²*p\6ËÙÎzö³  ­hGKÚÒšö´¨M­jWËÚbšçµ°­lg Êz‡¶¸Í­nw;Ûb6Bû„Áo´O25È]ƒY\5Š…ã&÷¹_Xî Ïà\èZw Òjs¯ËÝT—0°n†CÞòš7ã5DzÏËÞöº÷½}ˆ;Tix8.4.3/docs/tix-book/fig/hlist/hlist1.gif0000664000122200012240000001631207170673532020657 0ustar jeffhjeffh00000000000000GIF87aÄDóÿÿÿëëëÓÓÓ}}}×××UUUššš aa ,ÄDþ0ÈI«½8ëÍ»ÿ`(Ždižhª®l+p,Ïtmßx®ï|ïÿÀ pH,Ȥré ШtJ­Z¯Ø¬vËíz¿à°xL.›Ïè´z½u:×¶|N¯Ûïø¼~§ nO„…†‡ˆˆq‰ŒŽ‘’“”•–—˜™š›œžŸ „‹€oƒž£¡¬­®¯°±²³´µ«›¥PŸ¸¶¿ÀÁÂÃÄű¾™º§‚½©ÆÏÐÑÒÓԠȘʨ‡¥ÜÝÞßÜàãäåæçèéêëìíîïðñòóôõö÷áñ†ÙÌû|ÿ H° Á5ûLió‡ÍYµ‡#JœXéZ$‹pñãÅðFŠþ CŠùë£#“4*ìW%#—$cÊœI3£CJ09Üx3ç¶›5…Õ ãWÑ Høìx` S¥+9¶*iiÒPC‡­µõêL«¢œ9špWOªÑz•Õµë&‘bðÈíZi`•нõ”çφw¹µ{é(aCEk¥˜ZÞUjEõzpcZv·Î@,—㊠%þ,ºsiÓ Q§nûîiî__žõxïÉÉfÿvö¬ÌŒ5NºÐfG°'O­¼ôiçÌ¡ÃÞ\:q߯,Jyi;%îeR{ïæK;,àÑ /¾z9"÷ªÓW_^øû嬡›‡¥]r"Èä‰þ' eº5 ^û¹‚ž|£ÅÆÙs„ÙÇYq±­'ßs¯µ¦áq&ÈJJqWHd!–7`nL‰cÎSz‚^~¡]ß ‰DH—„6RWŸŽÈ±×b.h©h€ˆãÝf"T(‰‰?V2ÌÅød0’6Úƒ8j¡–;R9_“œÔ6â*%)`EL‚׆\væÞ„¢Ú•ÖaŸŽnò˜%ž>ªéQšÿu÷Òw )9I^~*Ç¡¢¬)Fƒ~ô=Øž•:Øž¢˜Jxé„}&Цey¦_, ¨§T.'£<Êà”“rJé“n9Ÿ¥–¢j‰˜Ezw$©†Vuª®Ä; ¯MC(Kgþ.iì³ÐJ„ì§-Xª°Ñf«-4Ó:[­™zÁ#$>ä–kî¹è¦«îºìÞ3.;﮳STíÖkï½øæ«ï¾üöëM¼fQˆ lðÁ'¬ð 7ì0UXûíWlñÅg¬ñÆwìñÇ ‡,òÈ$—lòÉ(§¬òÊ,·ì2ʰ'¾lóÍ8ç¬óÎ<÷ìóÏ@ƒóÌ×ôÑH'­ôÒL7í4Ì2Ï ®.OWmõÕXg­õÖCK ^O€l-öØd—möÙw]Ö×Û„öÛpÇ-÷Ü.«ý-ÛeÑ­÷Þ|÷-·Ý'â=±ß„nøáGޤàF#îøãG.²â4#)ùåþ˜gþ8åE[®ùç ‡þ6çS»-ú騧Þ4éŒ{®úë°ÇŽ3ë…6Îq̸ç®ûî¼÷îûïÀ/üðÄoüñÈ'¯üòÌ7ïüóÐÇ|ññÓάë·G¯ýöÜwïý÷à‡/þøÃ0½è§/@Ìê§o¾ÇÖ‡‡ýÆì·oÿýøç¯ÿþü÷ïÿÿ  HÀð€L h? œ¯}¨«µµÕn~i#7ÈÁzðƒ ¡GHBþ9ÐbœàR¨¾÷u,~`saöJHÃÚð†8Ì¡CxбÐ}û!údH¿ Þí‚TƒŸwÈÄ&:ñ‰PŒ"{Dº°$Zþ鈘A)zñ‹` £EHŪ°Š-Ì¢×hºÞà Ç:ÎqŒxTŸãØ>>æñ`,ãËxÆìi±uI|áÑwGý5r€¬# ÇèGH’‘¬ä$7‰@A¦ñCT£¯—H7Úï‘øCeQ©JN>Q“­, &]IËzrˆ\À'yH6æcìc%í¨Ç8“‘Ƽ¤0O KV³–œ¥%19ÍK>Ó’ÄT&6™LiB·À/YøËé1p¾¤`*ý(InÞÑšs¼&2™™¾v²óžßô 4ùÈÏaö™ÿ¼ç?±™ÏoÞ²Œ¢{IÊ6qó¬ç@þ#êÎYªòîŒ(A ºÁ}R–z¤f%Òir´–½](ºÆ†–…‹Üh$'*SÒs™Û$é6åyÒzÔ¤Í<æO7úÑžÒÒ“½ØJyÙRù•ò¡9¥¨?5ZS‰ZôªÕi,êÓ7µ¤#=¥N¿ÊÕI"~âå]ªÎ¨VU«S%ª6©*U|µ¬ ü)?ÃÊW°FR¤xÍãY_˜V–ŽÒ©í¢[1ZLª26«8«2Ø6³ž€5i_«9V Vö‚L*Æ ËÔÃÆ°­Ù¬¨\ãªÚȺ5§­Ýêg÷çOvfö±ðÔln5;Û0†–x/õá9—N%s®×œ©FçþºSæBÖª²ímþö(VÞ´¶½.f¥ë["ÆÁ âp+÷TÅr÷¼èMïÿB µ¢“­ÆU¯|çKßÐ -¼+oçÊ›±`Ò÷¿®¬}«‡_¶­Àß °‚|Tïâw…f(bÌà [¸ÁÓ{0"ÜÔÓÆ÷ qw3|_÷¾Š±ŠWüÄÃæ=p[YLãÓÐÅ/„ñZ'—xÔE.µ)ˆh¡Bz™¹i•uMÙDC{ÛbÄö;¡;ïí^Ûu·u¹ ^oØÄ`¦°ÙýÆsßš±¬½4\‘ ÙÖÒÒ¶Ãt¬µ%{[-[œßVõ‹.gÓ–à7unr•Ûld3<ªw%ÄK RÞ®š¬0+Æû­ñsœÐG&ó£ñìiþY¯3®$µç«ÏðFOúg9Ñýjr^S{æù¶…]\SßyçÚMõµIôX;šè5z´½˜te/ÝÞZwºL¡uoÜO7T>ò*?W˜@öÈ}¾Ú°?»–eiºe.tM_úålÏx°¿]ZRË8ç‰ç.¼#¯ø©3Þ~¼Õ)WgsÞ„n·9Ü^èÏs•º¦ÿuè‡|óa{<õ°°ÔƒHu;ö¸Wïì!Üúªß>÷À—îî7Ü{ÛÏ=øÈŸíðkåß'ÿùF]~ñ›|è[ÿ¤Ò}ÇK?Àxÿû ¡÷~ð§ïûE¿úÂÿ?ö_€Ùo|¸5ï|þ–ü Ä¿ï¯õçÓÿèã~ý#€ïj«×dÓ'wæµý§ä€äꀴԀìG€ûƒ¨?ñ‡y1–7×} D‚ö7‚h‚›„@¸4·xÿ¦}8·y8ˆ‚ᗂë€åw?@˜‚H¨ƒ0~F(~ú³ƒæ€I؃ëƒmWs¬Gƒ®Ç}'H€(…ç×€_؃ø7†dx„_h?è„Nè…?ȆQ¨„pHC/…nX†t˜„TX…2øvòwôW}7È…Dx†oHˆ]è†mø†sÈ?èƒføˆl8ŽHBsˆ‡–x~wh‰•H…XD¦€þb–@H†kXˆxˆ<¨†&˜†a‰`xŠv¨‚T‰Dø„E(‹y(Nèe ø‡ X@£8ˆ°XЍ(Œ$h„Cx„“øŠ‘‹›¸A´˜‰Sˆ‰—˜‹•G{—牙‚6(‚·ØŠÃhˆßØŒ“˜ˆ˜ˆ’HˆuhŒå8B,H‡/X„Ôh-´‹pÖ‹ÜX”†‚¸Žp¨†¦HЉ~ÇhÊx†9è°XC©‰Ä8Òh˜AŸè‹¡H~÷‡?Á‡­h‡IŠ«Èˆ Ží3„Žˆ‹4ŠaØ‘y8‘bV‘ùˆÞø„h˜ƒù‘åHµ¨ü$yŽàè‘rˆƒ+¹ƒ-Yþi‚†ƒÓ_„’ô˜{0Ig2ù”úÈD 9•×W•æt•¶C“O”‘\ù~^ S`‰AY–léDg)\iÉ_tÖ–tÉDo)^qIl0U—|‰Cw™_yùz}9˜dÄ”VH‘Ûˆ•bI˜ŒÉ@i`3ù‹9™ ô˜úUƒYY“@É?R)„6ˆbøŒb¤’í×—–˜ZX“)šˆ8€<Éšž©Ž®Ô°©”lyš‰–’ Œ¯9’œY›ŠhŠ"(›œD›.hš†¹‡èx‘¹–Y’¾ù€\țĹ‚hè’ùœf™œ–‡…¾·˜.(‹½©“þ’›ø™Á©Œ™“¶Ø8ꉔJþ˜”Ky˜¼èÆ·›[˜ã¹žìx“´¸ŒìIŒíi† ùžMèŠË8\‰›¨˜ú¹âùŠÉ˜žž©Šâ‰Í˜¡è( :ŸÓY-Ø–ÊœꜼ¹ˆzˆŠè“Ú¢;é¡­I–ÌxC J£BI¢Ü‰øI}ž*J ã˜£A¹Ž7Ù¡Z—¨Ð˜ ¶™‰#z›;Ê{= Šs©@F)œ©¤*È¢‰¤ iŽØ™Lš¨‘ɤÈW¢óלW*Šý¹¢ãh~]:ž…hÌH”wz‹j @)£òÈ ôȦ~è¦ÅV‚6ÉŠÂYžçIcZ’º¡Š“c™¥-Ê !:•„Jzþ!ØfKH™à4¥ÄW¥ù¦¾ö©  Z¢Ê|Vz¨Ü†ª©Êe«ê”º‰¢ž «±*F›º}𫾠zöy¤j¨{ù«Æº^³:¬'jªÇÚ¬1Ø|¸œmº¬®ê¬ÖzT­Úø µÊ¬×z­»Š™àù­¿®YØ« ¹™„’uš} F¤Ù¬æú?*¡ÿ è®Ù¨'eœÎ:¯ùi«Ô9¸Ú~Ê‚ìú®RôŽOš«ë£{ƒfZ°þ“°˯éw «۪ź®š$Ƀâx±:©Jj¡êÙ‘dú€Nz©+9…)Ÿ-‹q[ªÕš¢üy¯Z eX§üè³íŽ’Jþ§5»@7Ê¡+:’zŠ{7K¬Â§AZ²I ’üY‡ä¦Š¯Y«¡%¢f¶:‚Ø {OK­Ë€SK´’:©*е[*¦Giq{´Xê¤" ³"Ÿcø|gÛ­9ˆ;KµZÛ†íÊ“]+·^¦ŠÊx»¯ó8¶>é·ÉÚ‡œ •ÃI°rZµ>Ø®Px’ΛGš¸v{·‹º·­Y¶©÷·jé­)*²=»²üX´_Ê´B»¸{Ú¹u«° ªµ’{’”¬M©¬€›¶R»•t‹ˆ‰*ŒbZŠ#+’艸k£–„,+…˜*Å«œWh¹¼Š¹äZ®•+­…жQ[¾ßêºrþ¸ìk¬î«—ë¿ÿz¾Ûj¢É[¿ö{¬ó+˜ýë«ÿ›šL™Œ®ܘL¾ ̘ œ™ <˜<®vvgt4y|æHàŠ¿ˆÉ­¯ ¿²„ÁÖgl¼( —¹ùÁÊë?S6vgæc&l­\¯¬i]'i"·uÎÃeek!ux˜…\Ú”Mô6Ä$¬d5±§w6enÝ„U!—jÄClfoUr'—Åœ·Ä°+ÂTæÄ»ÆS­´k\,_VŒIM—ÅiÇÆËy^ ÂMŒf4ÕnÉ6Å[<_ò†o,'s}üÇÙÖº“+ü¾-Ü?”ÅÅv,ÅxÅG'y‚·ÇBEx“¬t¨—ÄþmLJÌL­–pÕw7ÃwUÅWlv€ÌiœÊ›EyšÌ¿:ÇljçÆŒüÉ¢¬Ç¥sø†x|ÌÇööy­,^ˆ kN¬gÇ6ËbœU>lTÇj ÇtXlÇÇv¿œ_.Œz‹FÌïÆÉ—LÄɬÌ~lSx…gÄ÷ÖË]<ÈVYÈô ÌœWÛ™ÂЊ¾— Áíüst•|Óì_õlh´¶¦èü•ê ÀûL˜ù\g-¥ðÌ£â+®6|ÐeYÐ=™ÑüÏhÐLÑ jÑ*ìÁ†ìÊM—´‚¨°,º¯CË]ñ:€È™ÐÙ*ÏãKÏቲùª»4]ºÿ÷§ÇÉ—#½¼Dš¹™þŽé۵é»Á×Óä¥Í;»[kžÊ»²ŸI±;Ÿz+†ª»Ñ.=ª }® <Ó ¹¡×»²£»¥i´Á»»FxK ‘«£[ͪ8»É@ýÔÁëÔ¢kÖ ›ÒD‰Ó_û¸Øp ¾ˆ¼, ÒK›Š×eýŸ]’ê×”ØÔ8¶"ÍÑx‰Ñ\±ÅØ“| ¹Ùž ‹»sÙk’m­½Ÿ}Ù\´zØì ²ÔÛ´\[¸«+ÔzÖ'íE`+„‚Ð(¯ýѱ­¶Ê×X=ºÎk²¶;Ú…+Ù“}º ›º§mzájýÎÔ,ÛG*‰X=ÖËͲ¤ýØ{mÚcä¯Ú’Õþ}Π„݆MÜÛmÜM½Ôàý¢ÏëÜBœ9¹ºQ™½‰š”ë ÇÞ%Üï­ÝúÒÀíCÞÕôÊÄ>¨¾^Ù-Ю©þkžÑΉîÞ °_¼á¹xÝ&”á›-âHâû#×P[Ü(áí]âNá/ƒ*Î&þÕ5n}7u9.Ó;ŽÏ.ã±!.±? ²úª`+Í™-Ü>ã.¡4¥û_þZ±O®àQ^䋨±›äa~µFÔ;]—=^?NÁ;½Ú*˳hú¤û}ß^8³Åù²Ú‹‡ó)¨õ å.å'ÎÙ êÜ» ¹3ÕÎx¯K;II+¼|Þç\þç^>×þ`^×Ej¤6Ý×Ò{Ü ÝJÙðøÛ=ä+¾æ ý›sJ·Ò ÙC¹éªº1kÙÉ·Qº¨£ã¥è:Žê4 ë˜î¶¯®Ž‰nÛ¶ŽG½­±¡>Ø‘îá0ÍÐn°³Mè5:·ù½è¸ÍÜ€tìa{¦ÊŽF’Þì^ äMØÙÎ¥«§åݶŠkì[ëêýè#Nê8®ëâŽÒÝý³è®Ü­>»ÞÝéÉÍè:é©»±6.ï>Nïlî®Û³É=í· †HȳšîéêßÞ+¨žxi~?,®¾.äëó>é-ß Ïá"ð$ïñ&ò¸ñX„ð§îòTiðj.óÏNóGmóoþê9¯ó5Ÿò7¿òûûñ@ÿ½ËNäàÞàG~ôAlí…óMïô±Ç^àóSOõ‚|>ÔñEßò:gÍ Tʬ^eVö<=àá¥A^Û`oÏwWp>•]+6Ã÷û@)Ööð}à—wrÁobv/¯þR)¤÷nЯ¥nûMÏîütPÊePD%ÌPEuÔ0F•tRŸä\ðÈ3¯#R+JaØ4+ï"µîS¬:}Ô«Bµº 3þUª0uXcUÕH:÷¤'åx˜•We]sÕíªÔôPÞ|5Ø8oµ-Ç'NÙN™ ŽZ‰ÍoËê¬ÛI½uNØëDíÙÝÀ•T\ßÔV[h}2êÍ€öÈ¥”Ýêµ÷3|yq·9swE—aø·ß|Ýoá~æLbzô­®àéø b†_ ø±÷ãŽ'nÒbê0nNc„ ˜b’ YQoc¦Á_˜#þg…yöødgôNƒ³ùe…AFùÑš~Y⣖:b£zX\[%:ãƒ]öºd››9Ѧ#™ºj´uF[j¤^š`x‡Ö•k£¿nÛ±±þ-[%¨oNÛoÀî!è9µž{å®›8ºjÁÅ~[äóǹ朗¾wò»+&üÒ\¥{±Å;n¼°¼ Ý[qÊKäЋy|9•™cÙé{+W=»×É~X‡ÌS_ÝïÖ5ÇúY¹=G¼±„ÿι±Òæ§•|j¶v{sV7Änö9Þ™ùÜõ>ÔçžñMxyÆ¡&¿ñæ¿»óÄyã>ÏðM¶öÇÍZ{iÃóÊä¯OÖúùX#ÀÞÄn9ó»\9≀]g"˜®÷5bÜàýhÃ@üÕÏytÍiSnÇ+,€ñdGÂÖ˜N | éÇ–‡-„alþhXB ê‡1 ¢þv¸­0}Ž96tÓXÄveó‚›ÃÞ…½bq«hU\VKÃÄî/Z¯²QEä03¦ÑCXD¢«º¥F8‚1MŠ£Ù/-ÎJƒRàý§>þQh ä Ù¥BR‘RJä"©¤F>R’Šä$-y J^R“þÉä&=IŸN~R”ê å(M žRžR•Ù£~êøJXÆR–³¤e-myKµÒ/;äe/}ùK`S˜Ã$f1yLd&S™Ëdf3ùLhFSšÂZ®¦yMlfS›Ûäf7½ùMp†³—ÕÔÚPÌyN  ëdg;ÝùNxÆSžó¤g=í›yO|æSŸûäg?ý™N~fqŸPç? zP„&T¡ ehCúÐs4 m̧D!zQŒfT£åhGjQ} 4¤õhIMzR”¦T¥%)=EÊÒ•ÆT¦3¥iM1 ÒŠ–'…;åiO‡ÐBŸU¨C%jQzT¤&U©KejSúT¨FUªSE*P£š#ªfU«[åjW½úU°†U¬cåj";Tix8.4.3/docs/tix-book/fig/intro/0000775000122200012240000000000010767576212016774 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/tix-book/fig/intro/ctl_subw.gif0000664000122200012240000000540007170673750021303 0ustar jeffhjeffh00000000000000GIF87a¤òÿÿÿqqqºººmmm,¤þºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ïtýx®ï|ïÿÀ pH,ȤrÉlîΨtJ­Z¯LvËíz¿`/4L.›ÏâzÍn»ß¸1|N¯sµö¼~ŸVçx:~…€|Š‹]‚Œ‘OOr‰q“@~ƒ½»÷ØÕh¿õ{<0î°|_o;¼y*Ùß{⮀6öøÁ£¶.?JþüþÐwßlæÇž{6ñ_‚‹hŸø!È  N¸‡ƒBxà~âY˜D…Ú¡ljØ„!bŠsŒ[‰&J‡"‹B¬H£.¦£w3Þ˜s>F’£0îH‡AÖX^’Š Y¤‘ÃõÈdF>M)âs¼Xä“Pâ&¥•=ù‰“]F÷¥•6Š ™eoj†g€Xjù`›Ä9ešsr‘ àé&œjòÙ' z"’‡z¨‰**#£}:ú(‘JjœžLZz©™jš'¥szú©¡Šz©qšz*©ªz§Iºúª–IB¨˜¶ÞŠÄ`ó%Wé’Mòeì±hýþ¬®ÂR…lI@>‚ì´Ôj¥lµØž…Ñ´ÐV©G¶à{m¸äbµm‡Kð‡„·YËG¹ðª5n¼äžÛ„ºG°»D¯~ÒëoWóþ‹­½K<†îün!ðÂæúÃp¶s8€\†¯ #ú0þڂ¯UheñÁ¡àÈ,ܳ_±1ÇÓòqU!g52…ù¢"”°ãî…/ ³ÌO Í„]¬"6¾ÃNAÑ2´ÐCÂ/WÝü!Ó¯äôÏßNíoÕV–ÖërŒ×Pë[‡Øc“MÊÌg¡¯Úçì¼MÛecµÜÔÊ=·Ùu'MòÒýè|9_GÝ`VþlMnþÛD·Yv—Ì‚ðÓ“B-C 9Å’‹K9[—•yZ46•÷Ž@é¦ÓTyMøš¦´­§ʾ¾¡UäÃ32éFOüñÊ/O:ò È~¸K·ÓÄŸi†w«³1NT_üì[EO3ôà½üøÍ#Ÿüúæ«?þì6U?·Šä“¶‚±ûí>óï›ÏûåãùÊW³^åoñCÝäø`¿¶= eÓðžô¾ò7â0r$ ùd@°œN)­ A÷;W Ãg‰K×½RÁ öƒ.ôúô·¿¬$0)ò“ k´½s8-…¸Z!a¾çi°ˆûh<®Ü(ŽƒF9á¹V8ãþÙø•™¨¼þ­O}Fäbø:HC2î®%9ôHK1Ež0q‘ ÇØE†Q€¬á ǨÇ'þdlÜa×G¶Áj‹ÿsž;X³=ŽŽ…}ü O¢XAºqq„tcÞ”¡Å9ï}y\ä'Ë(Ã%‚²”þócN‹ÖYde,‹¥,‡IÏá{tl‘hÆý/ƒD%³8V…!¡«Â÷ùK¢ò»Tä2É8LJ¤Ä˜ Áf9^w%†é1\½8‰62ÎmRhÞ4c½B’rúþƒ¹~Ïïûÿ€HypuIˆ‰Š‹ŒŽxŽ’“”•–—˜™š›œžŸ ¡¢£¤˜ƒ¥x†H¨­°±²³´µ¶·¸§´x…g¬¼y¹ÃÄÅÆÇÈÉš»³½«‘ÁÐÊÓÔÕÖרŒÌ²Î¿ÒÜÂÙâãäåæœÛ±ÝvßêáçðñòóÊé°ë‡‹½ûüýþþþ H° Áƒ*\Ȱ¡Ã‡#JœH1¡ Š´©ò¦þc CŠI²¤É“(^¬Øñ™Æ@0cÊœI³¦ÍvðSôjTOz@ƒ gÏSQ];éÄù3TÓ¡P£J=v]RPö–¾$õtª×¯`KUÝ4vÙÕœÙmõù.¬Û·p/•Í4×ÔY­úÚbÕ·¯_¸uåž5z7m>ž|&þk-E+Ç— 3žØÒ6,ú ûR›§bÏ“‹I0zTéI§C«\é2hW™™.üšìbÕ¹F§µ»QoÜ·XSrm*vK޹Þnë·1çÌy Fúm:lžš]&g[;:¬ˆ—f‘H²yŠÈ§G¿Â{pëd“Â×g<ïæÃJ—/Óï¾þxÒì¡·ž å  "˜àxBןSóÑ%_w<Õ‡Ø}´-‚Y~>hšá5˜`ˆ 8"‰'šH¢‚z¨|L 7aqØÉ†¡lítˆˆéèâ' –È¢ç Iä‘%2¢ˆ?r£4MBœ\æwãZ‰øÈ#‡MÎdy(†©â˜EJ²d’]Š2ÖNQJ2¥eUî8ŽšÒ&Z>¦™É™‹´8b{eöéç˜bê©æ“JÉX–q¢uåvY*Ô£¡¨ð9 šâ!(b¡‚‰)“”VÛJwº2#•5ÇÙ¤Š”«¡Šbé‚hk ¾!Yk¬X=¹¢­2šª}ÚÁê¼RþrZ ŸØÞ‰³~™¬¨N.J£RÙ!gì^yN»kЏ’É$®á:è­›Úe-ªØÚX,—Üˉ´â&n½à‚h®¼Ú¤+غp{á»rv+%²ü*©+½øxé¸ú‚špkþZvjÀíªŠ_ÁÊ<ñÇq '儯 l%Áxv òÊý‰Œî¢%gLì/yœŠÍ,ç•ËTL±«þ<ó„Ê:=ϦâÜï7¯ÑP÷…ôÒÕ:ñhÒÖ\wíõ×`‡DjDcC”íªV†­öÚl·íöÛp?töÆŽÆm÷Ýxç­÷Þ Í­Ù€.øà„nøáˆ'®øâŒ7îøãG.ùä”þWnùå˜g®yätãuáæ ‡.ú褗nú騧®zâÏÙÑê°Ç.ûì´×nûí’·~µ•¸÷îûïÀ/<ðº£ÜËð˜ üòÌ7ïüóÐG/ýôÔWoýõØg¯ýöÜwïý÷à‡?=áÅkË;ò–‹¯þúì·ïþûðÇ/¿ûäûm#úéó½¶ ü÷ïÿÿ,AýÜe>9 •3€þÂÀ:ÐŒ ÿ €jìoœœø5 zÐü ?@A Î mÌ {Q€ºð…0Œ¡ gHÃÚð†8Ì¡T»å-€‡«óaW>: ˆÛàrÈÄ&:ñ‰PŒá‘ˆ:!‘þЦ¢ VÀ#b‘qJŒ¢ÇHF(Nñ‹¤³"K§E"ÚïukL\ËHÇ:Ú±…gŒ#èÔ¨ÇеQpEÔ]7Ç;òMÌã “§¼.Rs \ 1øHÁ‘˜Ì¤PÉÌñ±“ékä%ùFû€2p—Ô¤*1©ÈSFî“®”\$7Éû¹2•«Ì¥[Ù¸t–‰{Á)gy€ZÂq˜,Ô¥2wÉIÉù²’ÀDœ0AILcš²p0À\ ²˜ÌezsŒ¼ & ·ÍAFópã$g:YÍR~›ë]90OOvó(@d>WNiž‹<§áâ8‚ö±4âñàùOÑͳžþÉ»§!÷9Q䲟èl¨:*ÊQŠ ÐåOÖÅ…¢¤Ciþð€IàÓ¢ülf/ƒYÐ>ô™œ NºÓx²@ƒí¥FçSœêT§(ý)Q‘jP¥¾R¤nL¨ êφn¢7µi jºSuup¸¬#LazGŠj£Ø¤)S½ÊÕ¶®õ­ô\gVŸB¡ž”­pk^åÊWêõq½ -yúU¼^• suW“jPTJÔŽc}éEeʸ’ӭ˜ý«fûŠYÇ ¤K%*g÷ê×ÑÆµ´¨ílã{©¶ª¾ÄªiëùW¸.¬tŒ, ó¹‚òÖ¥.4+ ˜É€ÇY6´qþ]œ\yšÓÕ¹€ je·ª¸åB´…mlM骀‘Ðxx¨bU{Z¼–×¶FìcË(\² Á¥(|[8ß÷’µ¾õ'e•«Öä§Ùõ+s™êTÏJW¹ÙýoWé9`/8À¢-ðj¡ HwžOÁ >o„Í[Ûôzv½dl¯oåKâû’8¾&v¯ÑzWinÃÖmseìà O¸®Ómq„ÜàÓòøºãn £*Øcš—ªGÖpmkœDQÄñ¡‰¥eúJYÅQdñe]ŒÔ×¾˜ÁÐ…ðs/÷Ù™¶sQg|æ5'‘¤”*%“LgÙ¦Ö¶^=.!E,[™¾Xžþòn«lßÐQË×ý²‘{æ‹Ìd>pu-ãF‡ÙјN4áLK §Éâ ðW7«g+·bôó{ \VÿÙ¾(nMc 'øÒ¸®µžßŒcc7Óº¶¥kmà!WXÎ uU½œYÓ‚Œ|†" \½j@SÙÚ¯>$­U‹ff?ÔѳuöékÏÜw†t›Ó]ìîFU BkŸÍìÅj•ÔÉ-bµ{T÷y†‚ö-µ®êCï×q^ôŽï=fEë{á»–£¤ÅIÝ…Ÿ÷Ñ>f¸º»lo ۣńBÓä­ìŒŠzœæ,Ê{ºo=û[ڸ̱]mDn;Ï”Îùþa­Úã‡Û;âˆ+3ÎM­ožÛzç 縃=¾icÇÙjàw½§¾XÒnâTw,KÅZpXã·Ä(&ô×»Îěߔz,%îôNËy°ÔŒvÍze¯×Ú½eµ¬ ^\.™‘½^;¯Ý}ì"_™[Ïm×[hçæ§»~û®Â¿G:ð‚o7È­ùNÄ/Ñ›’ñ7ehvÛI’Ï|Ó gÃw>î‰Wfè©=úÒg^íª¿-§Cþv#ÿRî’¥áì½i{Áã>÷–Ü=ç/ ûÏ/sø°= ‹¿öã#p¬å¢BÃ{KàKÿû.¤~,­ýì“tûRo>ø×Cñß2õ×'¤òþ=íEϳÿþ3tÿ0áÿ™ÿ»%Å}ö‡~×þǘ|mÇ{®Ç|¿{xúGM ¸€Ø7½wxÍ7Bèó‚ò³"X‚îÃzn÷€Ÿ†xØ‚`‚0¸> ƒ4>(耭5gè‚}êsDÔv&Ã5ÊÓ€c–jÝÊÕ¦«ZËýãÀ°h×e×´€Ý»xóêÝk×+Ûý܆™’¯áÃ}½ÆP±ã¼~'ø,™ŸàÅ …Z+ªò±ç»‘%v+–nãÏŽý.>úphÀ£ßжLº´º¹Œ;·Níµò¾Ë„ìF¬Ú6ëáz_Ovë[ßeÛ™«p.ŒÜ°rÚƒ¯Z±qÝÜ!÷ž”h9Êä×*½Üöð®ÿ&¾ø³ß©ÛOüžù3þƒló…:¸½ž|êeÇxû—„ö1P8Ž3`l˜!¨$ÿI%Ü~Ýõ‡q V'¡ˆ†ÑК…ra"8žxà9 RxŸÁXpÚ鸠wê‡× ;¢æcf5È\zù<ÇÞPÓ¨ž-9Y!‘,^ @’=ŽG V68)Û™Q®çNŽ^î(ÀœsŽ™¥™2 q}AÆ9$~EZy¤ú˜…4˜a¢ÿe(Nvˆã‡Ž†y%u–i"€~uê©_T—c ÉÝŠ' yƒ’xŠÃè¢6:ãºjÎ {8åfî™ ¦J\«œ~j¬¡ÎJ+Ÿ]þ ú% –Z«›‚óªyŒÊ¨fsÞš¦š’zÛ^ |ay(±^AÀºì¶ë–²42[jœDà…jZ~"i—.ºX(¡Znù$›Ö’#*€àÞ(.•½úyä^9”È-íº{ð£òš¦#Ç›¬½`¦š/¡ü"鯾ñ¡Û oj{k»‚X%bÂîk.¢VTÌn²èª1½úq‰«©J²Ícž °Êm®ÙmÁÖ‹°†n¢9n´ë€)Ê>Z€»¡ªã3cïQ¬óΡ&2¾Î°·MRí´Œ¡¾«ÌoR oŠûf½õÒÕºš3<‹1Ù¦ª®ÎCßW´Ã*2÷¶P*zñ·þr‡[œmçUó¿K\yÔ_~1¸õ•»xŃ ­ÈŸ*9š”·=·c¬kÞWÃNsÖ«òÇ­=v³3vC‰ÿ[úºïZ·6]FO«éðX™Së u‡{ÏU¤÷̇}>làK+ŠÉï«nëj¿ÎvÖdÞI¾\RCÚrÔs¿»Õ “þno;õ‡<Èíh}(Û˽ 7²øk~·©ßÀž65EåïRâ]ÿ°v%àÙ@tûù¶#¤m|‹Í^¤²kE(æ[ÖÜì1©`°{ôëÝû§5:qmvsмTØAÞ¸*ßø&+XÁs£š ÁjxÃýyO‡H¤Yþë8êÑãx$|˜SØ¢áàì‰Øjbîâ5C[yˆ´b7è»ÿ‰)tÂÝG˜>>/7 ìÛ¿’¦¯BpmlšæÊ‡E@±P”^Ê)0ö‘…Gtd$KFÈ’p9‰ÄGùÇ+ÿ‘h’^ "ú hÆ?†“© b,ã1Ê+Òq‡§|<,ÉJ?fò•Ôš%-¥)…mî{ {d+)9L!þL™˜$c.(K=ªÒ˜Œ¼%ƒÆÍnN@0à §8Ç9ÎU. ›è4V ÓÉÎ×óðç7ãIOr.wlJ;÷9Ïzú“—çÜg:×)PtöóŸÿ<(BéyOÁå3%egóºPôEt ß¹¨A'JÑ„vôŸ •Q>qBÒ’šô¤(M©JWÊR”v¤¥0miFbJÓšÚô¦8UiÌN§€œúô§:ÕPc:Ó¡õ¨H5éNc˜¦:õ©P}*n¢JÕªZõªò˜*V·ÊÕ®Z5 «XÇJÖ²šõ¬hMk=ÁªÖ¶ºõ­p«\ÍÊÖ¹Úõ®xÍ«^;ªU¯úõ¯€õG_KØÂvŽ¥<¬bËX|j³±¬W+ÙÊZ6!”½¬f7ÛÌrö³ ‡gCKÚÒNª‘¦M­jY…)¸öµ°­lg „ÖÒö¶¸Í­nw»ƒªøö·ÀÝF;Tix8.4.3/docs/tix-book/fig/intro/select-vert.gif0000664000122200012240000000600007170674610021707 0ustar jeffhjeffh00000000000000GIF87a°ãòÿÿÿÃÃÃqqqëëëÓÓÓ}}},°ãþºÜþ0ÊI«½8ëÍ»ÿ`(2@ižhª®lë¾p,Ï4íD®ï|ïÿÀ pH,H#à–læ§t:…Rƒew-Z»àpï+f™9zÍn»ßp+|N¯Ûïø·<ÏgCÏ[:}ƒ{„‡ˆ‰†‰uZ$‚Œv‹’•–m”—~P \šqQ¡¤•™¤Žh ¥›«¬¯}§¡©i°…£·º“¹°´¶›ÃÄÅÆÄÇÊËÌÍÎÏÊÉÐÏn¿ž‘­eÚÛÜ]ÕœªßÝãäåA߀À®k²„í»¢ëŒï±½ìàµò¸úˆôð˜öæT4К‚Oâ.ùûwß¡…x2 € CwÆS˜þñaA|êZ‚È$¯‹ƒ$‚¼¬!G”mL’©Æd£€IZ¡ët›Ë‘iªzI¨M:”`nÒ 0K}GçÈ"JÔ’ÑŽå)½ÇTOŠ>kbM´„F±[#âÌ¥ë=§=[¢}3ÅP³UíÞ°F(ѨÙ¤ÅåV,\°r÷Ñe£b¯€¼(úšuLy.P­lÆu¸báœ?O–Ì×ïdÓ|+ÿ+ Òµj7OôZÍà¶µ+«V=5éÍm\á¼æ¶æÜœ¿Ò¶\<ófÈ©óŽî[7=áljÛvŽ|vXÅ‚¹3× =ºãÈÕ‡ûsìî+ãBÅ9-;øßøI›Œ·´þê£!1í'Þ}o)÷]RõFU€üA(Sæ' `JÛÃ!h˜‚‰¦G/UUHÙ~vE†ŸL"ŠÔÜ{ã}ŽE‹™˜_z6B÷[‹4®Ç¡}*u¶ k|¢ãt¢ˆbofñøÙA‚8ß`'Õ¥¤ä1¹¤yM™™{?ÊbSÖx–†TÞ¤Uƒð ¢—j¥¹‹“¹I˜n–yÙ™jš)Ð|yº( ³Àù£œhî4£zYñYàžzµhCõ5cg¥˜Nsi¦Èpz   z*ꨤ–jj4Ê„zꪬ¶êj§ÇHùÃÔjë­¸æªë®¼öêë¯À+ì°» hSÄ&þ«ì²Ì6ëì­C+̳ÔVkíµÁF+%:Øvëí·Íj;©aضP­ à¦Ë«¸ùp{­¹Ô¢«î¼Ð¾)í[å–®¼ðKo·ì†„ì»úþëï¿×ü”»Öœ®ÃS«°| Ÿ[ð®ò¢{0¿«`k ¹Bq­“Yq¼ëºB¿)³ ÀÇûËqË"\òrœåû2¯+oóÏ;×:sÐB·<²­7G«3È0]´ÓC7}+ G+›´½:÷ê°ÏAG+ÓU{5 Yól4×R?2Õa‹mï¶7lôÔgÓ tÚ*×Ü6Òo›3ÁN]7Ôw«mvà{ã:öÉÏê½µÝ]Žñ܉þó ªß”=yàT³í²Ôúvyå,·Åˆã-xÁ^Þôã©ÛÜw»§£ûçy³.9î¯NºéÓ’.|ØÀã;üñO.òÌÏ«üßÍGïíó™Ko}³ üõÜ;K=Á þøä—oþù觯þúì·ï~úÃ~O+°Œ`ÿý÷ÇŸýµóZ?þ àôw9ÚmÏWÿ è€ÿPQ4Þ¯ؽ°Ol ÜØ+ Vðh @%ÁåMp¡ø0(,ù……)ŒXG˜ Ì~0Œá¿fØÂýQ¬»ò éÅÃlùÐd@Ô•‡¨®"º­€Ú“ sÈÄt9ñþW.Ä! æ-Ê}늾Êâ ·ˆºÛ-Ë‹Þc¯Ä8E2ÚÎŒÊBc·Ô¸®#â¬zcỄÖ-9b‹ŽÅ²£Ò´¨Ç†ñQp.KYèN@7º1ò+,ä!E¶Q’ñ:d#=DzDM‘œ¬ uÅÆRÑY t$ÞZ'9½%k”¹*¥ÿNÙ¬TÂ,d·üZ.ûµ¶kÁRq‚Ä!åÖÈ]~̘šŒY/­õËzA‘œ¥™•ºÈá²h×ìäÓÀF­fZŽ’Ð”¢)§yF “—ØÔe:ÑiÅHÒPF%„Þ%˶³Óšš—7IL² 3“*»§@× Çgí³týd\i™,4.2rþ]eD]×Mwöð™?ŒæBÉI,‡¾Œ•­œ(ï*êÀ‹‚3£â”&&ãx»Ezr“\§' J¬ƒÊr£+ÝWKiºC‹£HÔ¨ú-Ϧ Mb®–¨.£©@½ã óˆ0§ ª' jJqZÕÕ§“Ô  çGÕ*6¬XLªP—JT³2­aTëV‡ÊQ·Š®k”«%Ç™S»Þµ¤?ͪTÉ:O¿¦¯uŒê ËjXH6¬$¬¤<ùÚØ9"6ŠfßÇÙÎzö³ ÅªXã‰ÇK†ö´¨M­gëJJ½NVšª­lg+ÚȆs¯*e nuûÎäŒõ…» î{ëÍ^R¸ÈþÁcÓšY2¶²em,][ZÊB÷­ËksJ×¾^WYµ­!i§ZØïô²­Ý®RqÅTó.+¼ð”luUêÞóf7¯ê]+{ÛZßð¡wºù+[¥Û_þ˜Æ-WËéJ&Â×·ã%¬u‡…¶Æ>¸¸Î-¯°*lØ i°Àõ®ÙòVYßKÁÝí¨¯¬9´msmsdƒýw`g v±–Y 4'Æ.íO—ZãoŽV¾äp°v¬:ÞT¤Oo‘ù™à×.xÃ+>'‰óIÐe²SËœ2B«<ß+/9Ë21—µùå.#ò•b¾iŠ)Œf6Ë8¦œëš—Í çû&öÆÆUþ²Žëì»]æù˜ons³L¼Aï—ÀêäÙ=m©he&zÈö3faAëq”Ft1+­çKcÒF¶-JQ<`onu£–h©GeŠ ‹Ñ¿ý'…G7i(ï9¤"®#bjÆ4Ö½ÃÝ¡“ Êc×4ÎÔM2}ÝêG)k:½œæn«íZí>£šÊÙ^ï­Ú{½ÖùÚd–¶™+ÈMÇ~{ÌáÖï¸ù½vŸûÚŽ·£çýî³Ýúfõ£]íoãÁ·òœ þìƒÛøÈ·Uø¶ÞðwËyâ¿5À!¾j‰<ãÂÞ¸ªµ*p~ä¶6’%¬RÚºüå«=yªÅ»òÃüæ8OŸþÅ£Íòæüç@wøÌãñ2w7¹Hq?Œc¾&ýéXú‰=nr¨[ÝB7ÇINõ”Óå)9Í‹®î…ƒ½ƒb'zÇŽñ³|çéî¹ÙݮĴC¸æº¦{ݳï­ƒ8ïzÿ7ß/þñÀïî g{á /xÄû½éÓþ´ÇÌ«r²Ë½í+Î3¦+Xùµ—óZÓüw;ÏuÅ›|àÞ|÷Hÿ÷çf~ËÛ¤Ù‹WçcgÏ”Y¬‡üºCûÛOmöw†ð…Œ{»cXÛ‹ÿ•=UéºZ;ØMöïày^ì%Oþõk¶ê²'gmǼõ9½½a¿}ò{¹÷Ÿ~Ü«ÿél ÙÒ±^Yöþ?yý«?ñŸO>ö/MéíËlÖ†jéç}cçy—§¼÷kô'j¸€ó§:ÝÖx2§uß§{s—€¦–´¶g˜höG€jWzùwzÖc²Æ€ÕJ }ôc|Lh‘§|¢×|ð×€«´‚¶&} xw,± ì'ƒõ{Êv~¢³3åW„Þ6c–*ª0+?ÈxµU³"+>p€$…a§~S˜k®…¹ƒ»Çx_Øi1ˆ…cˆ|Wˆ…p†âæuýFql(on¨„‡û6‡j˜…;x|m…_wvvXrx˜‡kè‚Sgzƒ˜‡Øu~¨A÷ˆ/·‡/H†8‰–([’xˆ#è†—ØØ‰©•‰&ˆxu¤hRŠŒ¸†¥¸ŠpŠ\HˆôBx°ˆ-²8‹ÖR‹¶(1Ô—‹ê‚‹¼.»ø‹ßâ‹Âh5ÁXŒ´xŒÈx‹Ê¸Œº¸~Έ=qgÔXÝ€Ö˜Úè ÷&Ûøàx ‡ †â(ƒRŽ1uäˆ(æØ(·À‡¾€ŽíèìX$“¨ „2êX(õ¨q‚÷øŽòöøj‘'¯+ Ùа) ©*9‘Y‘Ï ‘™‘i‘ÊQù‘ ’"9’!ÉŠ&y’(™’*i? ;Tix8.4.3/docs/tix-book/fig/intro/law_comp.gif0000664000122200012240000000441707170674056021271 0ustar jeffhjeffh00000000000000GIF87a›šòÿÿÿqqqºººmmm,›šþºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾0Ìtmßx®ï|ïÿÀ pH,ȤrÉldΨtJ­Z¯Ø¬v Ýz¿à°xL.ëºæ´zÍn»·è·|N¯Û×ñ»~Ïïûy‚ƒ„…j†‰Š‹ŒJˆ‘’’“–—˜{•™œžd›Ÿ¢£¤Q¡¥¨©ª>§«ƒ°±²³´µ¶·¸¹·®x ¼’ºÁÂÃij¿i­Ç|ÅÌÍÎÊeÉÑwÏÖ×»ÔbÓÚtØßàÝaÜâo±èéêëìíîïðñÆå^äõlçòûüýñôðe¹'0>*\Ȱ¡Ã‡#6¤° ‚É”Èþ±£G‰ee¼‚qd˜Sªä2–É*%_zA¹²¦Í„-aÉäâkgš7ƒ~Ì Í§“˜F¯Ð@¨Ó…D“6A*• M ±>µª£ž^óÁJ§PkY[¹Î¨¶Õ¶M®¢]h6mÍ®pÝ‚Í[FnÖ¹vï®É—ÈÛÂHüÒX%^Ä€öB£ølcÁ OþqxóÊ ë^öøØóŽÎ¦€fÊxtÇÒ©q ŽÝcµh× »¤}F2ï*¶[ãŽû÷ŒÙÆqNZ·Îä6C¯±œ9KçE§÷­Iuëıwß®`¼”¥MÁ_ϼ»»ôîKÕ;?þ½öøò‡ÒwÏÝ|þâ±èägSqÆÙ7~®ÇtB‡`‚á±÷åù€A˜¿5˜ÜA{,˜à”h"-¥è³ŒfÔ”‰'Æè")2Ö¨‹83r¶€<:“b@¶×b8‘)ä‘7Òˆd8fWÄ„¬ì¸ä”"rB¥M”=Àx%•?~yb–Eléd—Rйd˜j©Í„´iK:\òàe›AZ(œ±40§™/¦‰'z&Åg´Ðy¦‚Êc¡F A¢€ €£yBºÓ„È¢h rbú¨¦2ñ9̧–ÎÒ¨¨ÖZjvÅ ªc¨°¬Êªap¬ÄÈ%­Øz+3méz ¯§Vþ:륲;,1ÅîJƒ?êÔyZ£Î>+L´ÇÎ@mµ‹^ l¶~ÖÊl°¡–ÛgºwºëZ등õ­¯hŽ ìºçÊÉn¿w¢{é»þ: p¼Í2Ëm½ß€z®¹' °¹üò«ïÀÿBL"Áª*œë® §*±0WL1º&Ì,¶Ù )½¦Á¼ Ëw쥻Fr ±ÆåÚ /ŠÇ,óÌãbðÎ8O¼³ÀGûp•; ]˜ÔDG,¬Î'ÝlŸ#×âìÓ.'E5\cC³-X¼´Å_½oÇÙxUvUöR´×ìv­6ÛzÛœËÛòF ÙÜUû7Æ´ªçÅ+lµ”ú.áóþʰ«­¸á6'þöÏ(/J¹8£›T·—#ª±æs.±ç53]³œ²•íáØ@¶ã/éŽð_ðΣï¿÷6ñÝœ>‡ñ6"?¦1OõÅK_"ô5FYöÇ€oöÚˆ@â¯â¼Ü—Oldõ¤ŸŠüãî>®/–C?)ûÃAþý¹0Lÿ1ÀN¬Oÿ`܆PÀD4HX‹#PœD±Ð> &É‚ÊØ`#.؇zŽ_îá!Šð/4 ÿÐBº"†„À¡g¨ ZÂXºÒa #QCHÇyBÈÁþ OfL´‡£H*’Äþ‰è£A!ø+ZîEÔà•øÃ.†Ð‹Wôa“XF5zMtcü*G*`QuLcAG6RBŽ`ÜãE Ž‘ˆ€Ô  Y½0ޝôd%éÀDò’$Ùÿ99L"Á“vô£rô+PºÊ€¢¥›JyJ™ñ•} ÛdÙK¶2W@¬#‹~`¦pÕÒ”·#'·°KôÒaÁ¤Í0¿ ™ „–9pd21èIÍð XŠòe4—¹ŠzS°¦ì°yLKYä›èlS8Û÷Yd™I§<¯´NSÕêOóÜ ¤IˆyúIõDÖ=kñNsÆóŸUÄ©‹‚.ëœþ (ÐT3ÑÙeåA%š‹{yô£ÙÔ§ ò 5o°3Í0×Àц‚ô¥Ô*é HZÌjœÔ¥$…§@ZÚQ˜úT*JÂJShšô¢·H)£l‰ žb4@º=2ç΢ŠÔí‰éUµÈMU85©Pjx¦:·õ²¦v Ì·ŒºÏ®¦â«øknè9UÐjÕª6kÇT6ÁõAr}ê:€³²U¤T)DMÆS²œ…r¥J­ºWdx‘Ÿ¯èGË”†'?’ué]Q×WS¸µ©š•(g…óYù„¶§£íE0+×u.okÝ¿¥µqºnµž+}ú[i”&§þõë×ÔÕ:Ù-ŽmmË™ãÎv•àFu¸ü(®ÙýÆÔ§Q+L…m4–çKŸÄ¨ sjqר_¯•õ3WTÝDw¯aÅ”¶«¶µY9õ[)®µºy;%´¸Ù^O}1þÖVß+Ã@17kÌŒ³ã³@#{š¼okiÂW5ƒ!`ì\ÊÊVvlÚ­=ûzÌhh|¤/WÖŠú£j`¬]ã¦Ûâ6çÐÙfþ<÷rk¼ù.þ*¸Íჩ½ÌùuåÕ­«§}½ûÙa›cÿDÑvÉû´‚‡ ¨üɧyþôÚr´Áמì‚ØuÌ(Õ €‰Ü7Z~l Æßþ`G¦W zb{‚,˜Þg„=hŸh½y÷ß~oõ‡ „6ùG‹‰Ò±cu:¾Ç u'º'¤3"Cc!,jç"MúáO;bƒ£sçáÆc‚CîH¢nµ Ίý¦Ê’¦‘'Þ;QÊÅ`‡U^Ù–‹!ˆå|)>y¤6IÚG&Œi¦d£,wØ&zAÆ·æˆ$)fVaf¸§…1†"Õ2x¨ˆ'Ê)çœtF•g„^)NÙT ç¥["êc¡?¢èi£ø½¢¤}õ' ˆšji¦—êÊ©¢·""a‹&j­0GÕ²Åþ,ÊW£î„ê²^Ëìµ#9 ´PK­fŠ2)¶äÚ¢moçj7ë±áJªl¹ð¢e-žóºT!»5ÂUo¼üÒûê¿ßâûŸ\ÐÁ'¬p9ÛsP@ë¾±ðÄWlñŇó°8¬dìñÇ ‡,28‡#˜ òÊ,·ìòË0Ç,óÌ4×lóÍ8ç¬óÎ<÷ìóËL”ùÝÏDmôÑH'­ôÑ#¨lÙwà½ôÔTWmõÕX7]ÀÓ/Fý"Ö`ÀØd—möÙh§­öÚl·íöÛp·Ý²81×™„­÷Ïq÷í÷߀xsKPóˆÛ}ï´ÂííøÎ‚G.ù䔳M8ËþžøÖwë÷øç7W.úè¤Ã9憯¬Âˈ×Íùâxƒúì3›mÀí¸ç®ûî¼÷îûïÀ/üðÄãNAá—À‚Ë­+n,ãRÓ.}˶oýõØg¯=ðÇ£žüò-7ÿúó±§<ýù*W¿ýúì·ï¾ݯœ9 ,‹_¾×y£¾úï÷ïÿÿ»‹ŸÊ& ƒ•Ù¯slÑßþÊÀ:ð},c`ÀÍÝO`ù‹Ù h5þ¹à aï"xº™vž“Ù9H5õ`w*¡ CHÂԙЂ¬ÈÌVÈÂ¥¹†/œ¡XÃäÉì„äK¡W×C2ðvAÌ] ‡HE–p€6<"þQ˜@2Qy«kÁËÄè22²lƒ+ßͨº/Æì‡º›b總"¶îŽx¼£ó½¯ym$éFB²ehd¢ yÈ56òO4@q'G:ZÒzvÌ£&·˜Ä..±‘à[$YÈD>r”‡ åyÈÃQÒ ŽRœä%g<nò–®»`33VºÑ— \e)…Ìbò˜:ƒ%%eIËfò.‚=ÓeùvHLG"Ó•*k%6· ÌkjÓfÊ„"3IÎÛA“gÒTb/«éÍBZóÜd'* ÎH2³’åÌç9w–NO®Ó˜í<%<³)ÏnT ³'óÉPs^Q‚"ØciþøÔ¸?^3ž=(" ÊÑŒæ,œ’gCgYDHT8ø“E5ЖÂÓ -Hñ9RZ–Ô¹Ì!e¨ P–S›¦ÜhO™Ê_ºÓe3iMéXDÍ唋:\é6§êJ †q˜C%fQùM¤*4ŽJ]j›J3$òqšRmå7é9Ï2vÔ‘k=*õ"RˆµœE, ÊÌ:Ñ”š¯‰ãß]kÚTúUð©Œ*`'ØÁ6´°/¨'ϪÎņ­±ŽÕçCK(Êð¥T©eõ†ÙÌ’“¬eÝdûÚ¿Žl¥5m3Q FÕ"–²þ|íÕb+[’n6‹1û,ÔZ«ÛË– ÈM®r‘þ‹<§žt¸»mq;xÜåZ÷ºØÅ@s˺ZÐF×µÓmáØ²KÞò^w»7¼-k¿ÞÝ"À¼ð¯ ‡Ë<>·kÄmoÕÆ+ßþú—ô­¯LJ[Åê÷ÀNZl_¯­ ް„×OOøÂ^Z…wšá{¸hžè‡GÜa­…¸¢$Nq„M¬S«ø£¥‹±ŒgŒä}@½Þ…ð‹ëIãû8pF„ha&\ü²wÇ¡û±’—ì¶ ?”ÈÝ…®Ž‘\;&[ùÊüurZd&q˜Ê¯¤koOûÛï}³ËBó#˜«L¶13µE3E£·fH¶ÙÍx-ó<[)g¿Ö™ÍcÃsž;þAÃz6ÊFžòŸçzgA϶Ìz=4Ž¥Ü0^ή«Œ¥ë-DÚw‹ç8YÀ :Lï-©œ–¡§¡üÔQƒeç35i¿ËT‹pÕ¶Uœ«ýL;HÕ¶!®™‡h/»øÒ üäUáêNY§ÖË ¶°ËÌà>çÙªS6)™-PgØÒn`&«}_c£øs0ý©Óímp‡û¶¬¶µ\jyR¦Þ~™»ßÝ¿}êìÄt~»±êR7úžaå·öü3€«Ùqqí©O)˜Lh‹Sáð~2:[|î½Ñà¢1%Ú¾1ξ›z Üi¶´Þ>îÓ‰ËÕà†âBInEBGÔÁ9®ìÊ›mïþóÍâ!¥y͵ ‚I'Zç`3u7ͨJ®¾|e#zö†¾b§\º;÷èÒ×F£zê@§©Ô±GuÉÝܛҽÞr_ 5Ì®ë Æî¾¼R\Ò(ŸóË›ïŠÇîDÔ³¡ñŽsJçV·}‡9ÿ@Ⱥ}¯V×»Ê9HÔ¯÷Œ·Œ_œÏy^[6²SÃ|æ®ç6æºðG?|AïÄ¿¾î¥O-±Ï~uR/ì®}Éc¯EÚKë·Ç}–ÿKüÿ¢·÷y÷|ðYf¶â;ß¿Çÿ´ï•¿üg¿÷ùØoôYükWÿÙÙ¿yLnÔ£}ïÕ¾ø×¯\ò3¸ûôþ¾üö`y©wÞûóÏ? >yýû_zü×1€X€(‰Å¸€ Ø€€8v€Ñ°/ý’®^¡w¦0.‚ÂÀ™á¶ð."˜‚͂ڑfˆ‚*ƒ¤@‚…a‚3ƒ2˜ƒ!‘.è5/È‚:„ƒ%(Si#“„J2%£0³„P…R8…îð„Tx…X˜…Jè@Ð…^ø…`†b8†dX†;Tix8.4.3/docs/tix-book/fig/intro/hierarchy.gif0000664000122200012240000002000007170674031021421 0ustar jeffhjeffh00000000000000GIF87aQ‚ðÿÿÿ,Q‚þ„©Ëí£œ´Ú‹³Þ¼û†âH–扦êʶî ÇòLCÁçúÎ÷þ ‡Ä¢ñˆL*—̦ó J§Ôª5Џj·Ü®÷ ‹Çä²y™=«×ì¶û Ëçº4ýŽÏë÷ü¾?iw€3(Hxh˜P¸HÈøˆØ¨9I)‰iðTÃɈÔYó'::H çyжªÚ”Ú Ëc*{öZ;tK¤‹ ÄÛ ìølE\œsü£ŒŒÙü¬7 í»9½Ìj=›½GË]ÅŒ®ý\~n{€~5Ü^·î?¿å]äýûúN÷noäße_¤sé¼§nà.EÿÞ„w¤Ð­K×äyØOÓþMw%w0$¸J$6Ä1¥ ”)Õ©Tsá“¡–-W®¤$1碇B84””ʤÅL=Já)2i’€4H($“(×´Û—P*"ªQ5jEã¿G^½Îdé²ìÍ­6Ÿ:•©4.“ŽEÍA•-K6WáVÅ›÷dà¿aóȨYÀ€ ¯m<ôžÜÉMßb…(2ѧ‘µèêñ®PÈZ3sõ|X²æÓ£¿fŒ,åƒt}9Íêv/ÙÍœmýDx›°Nµ Ù|KE¬êÒ®açeNzîì鹘ÆN¹GO*×™û¸÷¶/Q?¿ÌºRìS“>;Iø¤>ÿn_2ýøïþÕ'e_ŽvøñG )»U‚ o—,h‰% &ø`dW2Ê@`†µÍ³_†~͆úHb‰×ù'R‡&®Èâ"®£b‹2Î8Ç‹Ùu! 4î(r×Ý Brc〹Œ8d’!¢€ï) ¥8LÒä“Q^‰K‘Aªv#–^¢¥• Áøe™§„Id•³à“Æ^!çchndf.Ni“r•˜BŒù‰ÙhÒÙIh4xÒS]â1´XxÆe2Übà•V¡–Þ1g6z®9•#8‰ÆTÜyúÚ81^Šª+‡r¨&9v%UP½Múj¨|R“j®|­Šä˜•âUXiÀÚEѧÍ©þk²fdjͦK¥•Û¨Y¡õZ³ŽÇ¥¸*ËmÌNãl³ÝŽûÅ·!¶ª)¹êÖÃ+™\¹n¼X´Û¥¯ðÊ‹ï\ôÞk[Ž/ä °ªqþpÁJšûÌ©/Œè¾[2 1‹73¡¿.DŒ±œ‹‰l½¼ÓÀ)¢+.È O,Éàš|òÆi¾û0Ë£\L¸+ËŒ1Íî¨|.Î3»¼Í7™'S"?«0f>/¬30Bæ§ ·Ö:u)KCÜt/‰þJ^µÉ´)s‘B‘ôÕPf%ÏE—mt£>v¬e›$Úµ<-O¬ðÜÖuƒ¦êÝòÚ- Þ²:—ÔoËx5‚Lx,OÏþ²x»MÛVÈßÜï9˜jSü9À¡·‚wÊ¥ã{º*©×¼:ë@§ 3DZ“Ûú™8ZÌÂíñæ^ŸïÂ×<{ÉÃ_xñ7#ϼëÊ÷Ü|ô¢? hЭöÚj×oŸýöRGÄ{ Òó|Âñ óøóMåÙ½ª¿¾ç¨þ£»ðÇ?ü…ôýG•O:÷ÙÏr êìÅýÕˆ€d3 ìj ¬&iùKo¸€¾žÔFdÔ{õžø^¹>XÀ6¬p!Opº‚òä$l Ô€št˜­fl쀡À<rí\iMå:%[9Ž…Ûê˜þ^ž#¸a5F´ YU¥‹AUb377e8ÉVŽŽÃØÅ’8pgp<ãi5Çð¦3XPTu˜˜Å¿¹q‹EŒceX=úyŠ‚7Ü\s­G¹‚„U¬Ž»cH[V3ä'æè´ýñ±•´'-‰Èé%/•£¬šñN¹V C‘t¤bE<K ~ñ}R#/sÙ/Yö¡ÝÃ!öŽÉ=Å™PSZ Ã×;`¢2&¦4µJ­Uóš+ê ‹¶ÉÍys–âÔ%4SÎ`R³œKL_:‘¶Nùr€ï„çl¬)ÊR¾¬žoÚ%==4O\òshñQ@ùÅÏqœúìß@þíI|JΨŒ >%j6…ò£ókgWRWz£KÓèHz& üp‡kNHòPˆN¥Ilh Y¨ÇË5“ 4•™I£ÁÐ[Zq‹oVzʲŸæ©ßô¨mù·Í•§1ýš?ª!ŠšóQ/—UÕE´—ZÝgU•Ц’Ó¦¯Œ)Z1Ô›þs oåG\)‰ÐzÖuì æ9OV‚Þó®•Ë^å Ö…6ÙL[_;ÓÆÞ°M‘dóiPsþÕ…=l7(ëLSÒõ²}¬\±šPҊδxuçh¯š×ó•Õ¡aõ,*@{BѦ¶®-ÐliW[ÕvTž¿Õn$þhÛVr3¹nHìF‹[ÂÐþé¥#í¬p]WM•Þ§QªÜŸÈÛü–¹mpîI¡Ë©Äçzni'ƒ^³’Õ©•ÔgÁêŽ÷ººc- ‡jT6:È[Ö/m3KßgJ‹sÐÒ¤ á_óZ·Ô-"%Œ5þÖÁlõV*1Ì0òò…Âî5ß~ \ µ·zÕp"ýÛÏÍröÄ +Œ+K«òÆ8žaJâ÷èÇTåñ"eL‚y Kþl‚ÛúPOØÈ%`„Ç PôšøÊƒ¥²r­|V7•¸O^^˜Q 嬖zgn2½\±7ilh$u³ìÐlæùvø¿+üTy•Œþe i÷]_mݭ̽·Íöíšm™E=zwVn3 @-;“#gñÛ€¿¢0;NÌkUñiÇdÇ»$‹qK »Læ=#Z›£upl<·6ʤVl¬W¬Ûëz˦޵|y=l0ëØÇ~­¨õûëS³øR†I‘ ØKúØBÎS¯Ÿëån÷'Ù䶸õóíó†ûÜšJ7PáŒí¼:¢×þ¥³1-ÛG+Ùφ)œí½Û~ðßs 8¾ÑsÐi§³Ú)Œ¶±ìVw/µÞ»+s­/<ï™R1¬0?œqÃf7ÛmSWY**Hy—“ü¶À!lné 5§P¥ù£Hþ²…¼~çsiéçpÚÐ’ž"£·½li´½Î°f·Ÿ—‹á6î9¤·:i¦3˜Ó˜Ãä—‡Ê'á5|1—éMð–«ûìO{eúËv‘»]áá¤:áïì|=Afw»Éý@«û=@Okß¿$À×2æVÍ{öN°¹›Ú…‡«ä›mp¤gYß厸âCyyˆ‡]ój–õ¾ïMzG›¾ó£G»àsÁ 4Yêݲ{‘_ïñŽ’©´ç–í™øƒ)ˆYšÆzDØ,@Ø\jsq¥¥„EHƒ‹¦iB$s†…RÈX4TÍWí•XS˜… &†}$„)'`àQc.LøggxCG}Ôl؆F…`]"(ÎU†vØx/H].±r—c|kˆR‚‡«…@“—ˆ«ô‡F‡„÷ˆÄ³ˆÃ¥‡1X‰wãþ†#‡I¸‰(ˆtV‚>ŠîЉSvŠÂ#‚·Š¾ÓŠ0÷Š«‹\4‹±S‹¤TQ¥¸·È‰—ˆ]ŸH‰¾è<Àw™È‚ÄX©hm¸xʸŒÆ¸a“øŒÐ8=ÌØpÈxƒÖ¸QØXuÚØƒÜ8LÞxwÈ)ÃHùõ5(ŽÂ@Ž·Ž}r$&ôp5ØŽw"ÕcÈ‚h—ÔU‹ò„Ñâ(ƒrî˜;fŽéUs87FÔFA7]âUãxc°ÒFƒäPWi’8‘KõŽÏ—¶ts© æ*z3l‘˜ˆ¹hi#iU¤âuZ÷H^ç&ª&7I‘,9IÎz:i(YjÔø“@þ™V!¹}>éFy”BékyzL‰ Hù€šÅ‹>$•˜B•˜•9³•Ø•æ”à–!ö•ì{WÙ‹À¡–XYY. J¹€P ŠG}D¹”t9ŒØ>0ŽÌ¦‰vÙv~9„œ·—Ð7˜zY«w˜ây„Ilx9—‹—ö•Ø"Fgy)S6´vU™TøhwDE ö:ò¸j› šgû¸t“Æ]ÝÈ…?q“ ²Icùuî‡›ïÆ™’U¹ÙŒW~kƒ_iM<™*¡yŠ”‘ž6q>œC„ )9œ¢‰˜r™ÔéœX(œÑ9,EeœÙH™¬éŠÙuºñ…ÏÙDôqþ‹RŽ«¹›ê©˜E ƒÈYž‡ŸYŸyyŸû×z‰)™*¸žŠzwi˜‹)!šyêWm¹52¡kù–ä)‹›W–Ge¡¶ÈxŠAª‹Iç¡¢/Ù¡#Ê%—V7¡n¹‹-J»£1c£( ¹§ JçˆÝ™Œšc£Øy…Û˜ŸB =ªœfÈ¢ ƒ9¤…飩—iEJ¤<Ú£€i¤*j™"Z“™ 9Ú¤‘)XªzAú—:Šyfz¥óÉæÆžt¨hdøj¸œJ©4,jdÖBKxZ§m¢™Y÷§çx§æx¤:c—¨­Dš²¢õ9Uö%¥„TšeW…S#5úÀþ'Ä€¼¥ÖY PCè9`-E›„£$8hWˆNTè—h°ù}l9VôÄŸ}D+ÇDµ)I”S£PšoTzZàù¸Z’©ª˜XágÆŠ=鳚ö¡KP›D•†Þç7Íšr°W¨YzdJIö­{Ói©i¨œIìE®¬f®q¸™H­µ8Ò‰’›z_RÕ7M$]ßš“‡êüzL¹81ršÌ¤L É®‰®³5¯¸rG‡žoS,[!°ì(þÚ“I*£½j|þ86阥]:è™Iॆ_e“é9­_꘴`ù»ÙK>‚1næâyØÃißñŠš®’耩æÄ¢þË‚}ÊHîã÷Û’íÌ´ÝÊZT|¼š°,GÔØkÁºÁ‡¿ýÁ]è§~èÞÙ]rÐÙŒ“»Ë6 õèôm܉#è÷Íæ©Ÿf[ýt´2]ß'EøË壪8Mâ]Ýu®ÞZ~»ÀÐï=íÈÝ8ŽžÒÂÞÞ¢-’„îìSþæÑÉјãÑ»Z|d·™¨àmçg{Ã^¥ÂgŽêßÎÜá¾åÐÙåáËëILãpΈ F°½ïÝîëWë†üäŸ”Øæ€ÍäeNïËð³Fä\nä<þçïïÖüØ™Lá}Éá@®ä#^é6®ðU¹ê#MîéMñ/nñòÍÕæŠÍñ-çMþ®Ó»®ñ¹òõ~„ì>ç–>ó`‰æ˜wðƒ ñó@ŸóI¿×ÍÎô,ÝîQõT.õI>Ó÷^ V~½=ßóýçy§îNÝ-²×‰a¯NZשÚèÞ½ÜêXõÇ^õ£ HæÅöéQôÔÝìç>|³Fµí¦++q*ê¿AêdD³†Îà%çŸÄ(­° ±ÌžôœG©&Q{_ànoïù¡ÝÓ9íT´ü“ùêåAç§âÞ>õÚ±^ßîmÑrß:j½ÏìKú.Úäß7{Ñã^›`áç{åÌúòNéAnÄ?B¿ó ö”ÅõïõëQóe-åNÿï&>ôþÕý’úwõâ*ý5Ëâ1/ó^~ýëÖôÿûßÿÄòà_ÿ‚åOñp¹ýa”“Ö¨ЛwÿÁPÉ2t0Æ\ÙÖ}5KžéÚž¸[ßù9íA¡ä—‘‹âaih&¡¼g”ZEm¬ÙèTÛÝ¢¼a8#6C¸gµ-·vSÒoù¸<7?ñös\ßgbýúøÉ­òêÿbÝ#×)‘,•.¡&7ÃÚý‘þñqÖ¡ŽôKºòÝÜë.ž¹wÂØ›j§‰ž—eòÍc¯]ÐÙǵ]wC5Ï}÷ß ÄÝ=à‰×¯÷á‹O~:áVÞùã˜Ï÷ùé¥=¾yê±×Ñzéw^Ý{Õ·*Vüï­”8Ù×Ñ÷,{R¶¿®sÛ²Þc}DÛ'~´Þÿv~;¢wÿqÑ÷7²ÐÙ*n$ WÕÐ?ûq.qúC «îGˆ.rƒÿ“¿ íÍ`ʰˆŠä¯¥j€ ² Hê—Á†yÏ„ Ô ¾ùx¬…rþ;áRèA’)Ä,/êXÕ&øœè ,i ‹žŽÕ dUî†á(!ü †‘ºHHlK©¡x¶6ke\2¢ˆšˆÃ'Ú§Š«Zñæ%,ÚH@!]ÎÔ„F±„ñ‚9„âϸ„&üÍðkk£M7µU¬{tü„'· ÙmM¤Êëf§¯œ¥M!ûáÕcÈ.`ð† qä&5yÈ1†RƒŸì)7‰HJ‰DeMT‰@O𕘈%ÃÀ¾ñår—½4_>ÒL!ÖÒ·¤£)‰Ù­Q&†Ì\'Q‰Lg͘a”æ4ÝvMâS˜Ý”6QÍ&nÈwà$‡8;yEä™sè<þ!9×ÉÎØ,Sž¿¤e=y¦MàÁózø¼‹;-ÈOîù³"} @ F1ÝÐsˆEˆAe©Î#î„­¬‰C ÊPvŠ`gTì¢ YR‘`´15§@¿84z‘HŒ éCM N”–“‚Œc,õ™ùÂuªq‡îÛÉ0#whÎäͬút<÷¹ÃP½riSÚåüÃøÌ‹^W”_Öæ·Êù’›>«§#9겚z‘«««9ë­Úz»Îª¯9ìÏd9¿“ž®£´ì§{Ûî³×<íPŽ;˜É ;Tix8.4.3/docs/tix-book/fig/intro/lawyer.gif0000664000122200012240000000152007170674106020757 0ustar jeffhjeffh00000000000000GIF87aÐ5òÿÿÿqqqºººmmm,Ð5þºÜþ0ÊI«½8ëÍ»ÿ`(Ž$eª®l›À Ïtmßx®ï|ïÿÀ p¨kÀˆÈ¤rÉl:yFÔsJ­Z¯Áh Ëíz¿C-xL.Åæ´zD³ßpçiN¯×qî¸~´ûíx G|j†‡ˆ‰Š‹ŒŽ‡5“ ƒ„fœž’'4 7‘7yšcŸ¬­¬¡4s¤[5§6©ª_‡¼½¾¿ÀÁÂÃIJ±£2 6¶5¸¹]»ÅÓÔÕÓÇ3²4ͳ˜RЫ†ÖäåÖØ2Ú܆— ™á^Òæôõ¾ès3Ý3¸ ñ¨ÌãåÀžÁaøðáè§L8o§ Pð Å{ɲeÔÁþpÀ¿RÌS ÀÅ“ 7æèø‘VÈ%#Mþ’yò`JX;X:tÙçK$1KÖ´x³‡Îo>ià¤G§nAeÚt‹Ò§Ëœ9tæP›*ç|r^ÏW•¦šâZZÛÞjuÙÕͯô¶"k+Z¶gc½Zկ฀!òGð.A¼öô²âû°°µ‰ýÊ=œ¹êVu{9†|N¥“–;Ö¸Ùð`ª®ç^ɘâèѤ©)l‚z)lÌ1Z¿*Xöç…µIzÍ]n7“Þ¨2í±©âè>eƒN~›yó°”þPNzÜ2õÖž·Î¾þ7{-îB½—Æ™.¼KØßU.>×<þgòmQÇÞ%Û ZwòUs“}b'•{†èÚz2…^O¥ÌFXh%¨x(D°~êà6þçߊé¹Dák²c ] x¨ ˆ0nu”‰%ª6˜Šü‰¡zåÁø Œ3Õhã58¢(ÃŽeígÆ‹â̸dd8¦ø‰ÆõE•U^iPQÖ1ÓN~QBxF‘dL$&9d6dÊ™=z¹&˜`¸ùæôåcÚœ\zÃãOWè¹'“}:·¥ƒ„Zaè¡ÄÄÉ]JÙh‡0¨é¦œŠ‡LŸÈšž—*aH§¨¦Ê (•xÂh©Oœªê¬´Þ4š¤Âª«­ÞZ§¥»ûÆ3›±Æ& ²Ê6‹³ÎF;´ÒV»„ Øf«í¶Üvëí·à‚;Tix8.4.3/docs/tix-book/fig/intro/ctl_noopt.gif0000664000122200012240000000473607170673724021476 0ustar jeffhjeffh00000000000000GIF87aÙ†óÿÿÿÃÃÃqqqëëëÓÓÓóóó}}}’’’,Ù†þ0ÈI«½8ëÍ»ÿ`(Ž$œhª®lë¾p,Ïtmßx®JáÿÀ pH,ȤrÉl:ŸÐ€­Z¯Ø¬vÛœzÜâ L.›ƒã3p0ð‚ ‚¸|N¯Ûïé»~Ïïûÿ€‚syƒ‚lmT>†‡‹Œ‘’ƒ…“zˆn?–{•›žŸ }¡˜Šp¤r£©¬­« ¦_š­°®·¸|¶ž²o®»¹ÁÂÀ–½´„ˆÉÊËÌÊ>ÍÐÑÒÓÔÕÖרÎÙÓuÆŽÈÜÑÏâåæçèÜäéˆÞl™àªjóôõöEñqÄþÂâ÷Šà£UßP T(  @ýDE0¡7ƒŒ&>Ì¥‘FCþߺÈ0RÇ¿>RRÙ¨d)‘û\žÄÃeÀ™vp’ÌOfM@:é 5ôOÑ?ÿtrB'¤>_M“J”:çh«–°îÑJÑåÁxRD• êÂM'±r´ÖNÛKTuõŠg,Ï‘v‹Å½z¦۾ ÷Âe6o¸ž;õÒ½ÓB@Q«+ä X²Šª€S(L“ðbo†U•=&ïsË@Wv|™/˯] m-›õj¦‘zºßèŠs™ôö9så¡”cۆͼ¶í¾´ï"w·ÒáC>+¨¸rèÇÃßü¯rçÒõ€‹{ÎöÒwc&Žó¾ß^ï–—;O^¾­ÚÛ9©þ´^uîå¦ v¿ùdDÃmu›w«©fÜxç¹V!~S}6`{rÔWJE Î'À:Ô4¨ÇçE÷ØUûØ_„.¨á6ípHŸý øiöyv‰Œ=#†±I^bVazwH`‡8–¢#b@®¥Vü )á…àq™dyON²T”ìÁ×TˆUžfÔ/z &-º¹Y”]Èw‡á…gCRa¨ßŸq*Ù&˜€†Éç‚¢L©§™bR§Ÿ™¤1ʈÖ\w2*ÚŽÀÑi¨_6µ'‰Ýìé§ ^ê)¨©ˆª)©Ò(*_šº± ª«=ªŸYššÄ™­¼ü*¢¯d¡:lA«û ®þ&ÛÙ®<6˰NkíµãÐÈNµå€¸#¶à†+î¸ä.Ãí·å¦«îºìf MOC°QÀ¼ôÖkï½øæ«ï¾üöëï¿,ðÀf8'¬ð 7ìð¿#Ìmv?lñÅglqÄL|𦇬1$—lòÉ(§¬òÊ,·\²½" ±·TV,òÍ»¬óÎ<ïÌÔ{¾=s±5ƒŒóÒ ÷ìôÓNÿ\ïB@´ÑÓ¼è©LwMpÉ„-öØd—möÙh§}6ÕS=o ÷-sÖHoýÒ^ç 0Øj÷í÷ß}³M/Õ-Ô+÷ÑÐz«÷âüò øãû-ø¼„³`8Öþ{&ÞŒw~¯ã‘‡.ºØ“0Á ôNwâÅÒ‹‚猃nÀ £×Žvé¥ç«zæIsýöаë-;í¶?6înó»»Ö³Úüzðy;~BÙo=òR+9ó¼ú^ÀóÐw-}õd“o½íØû»|ÝÍ+ý=ðá3=>õçŸ~¿ë³žëð¿®¾ÿ»W«fµçÁÍ^+ üô5¿òÕ}É£œäFÁ Rq›ëÝÝøgµßï€|_C>vð€àKáK˜¯ŽÍ| î,Hà b0Oíóž ?ÈBÿ-P„@$à Ø¿"Ž0ˆûr¡Ø`CÈͰ†P¼á¦4ˆˆz€VDbþ˜Åf1`J ›¸Ü%Œwv«â×ÈFbñZä¢ F’-qŒc$£ä"¸04æpƒm\¡øC/r„.øšňG=FÎŒóc÷Ç#’G¬dÙ´Eή‘Ž|ö@ ÅSQQ^‡„ã%·ˆÈA^²“¸#ýBYF>Ƭ”w;%ç4¹ÉVú® f&ÆÙѲ–Ù“ æ&ÉÌõŽWd%SyÈ!Zò‡ø*fi6ì¡n^ùË`QÉK6r›"Äæ* Â/¶Ð“ŒL7ÿ–¾Â¥n{웤Ë9Í9bRÂ"@‡ù9x~Ržó œ-ƒfOpâS›‹_çþd—ÐG.4{ít(3¹çL‰.Ž¢åE«vµæ³£žAC*Òdš.‚è 'õIΔŠo¥,¥çHñ÷PqþqŸ6•NsªP—BÒ^2â8wÔ¥”¨j»ŸöL Q›5g%+V· 4—ê®§3EéUoF²­š•]…" qI1÷Ude=«\?VµÚpu>¥)SßÊWÏÀ®kÅkX××–­óÞa{Õf–±µ©c[ÙÊö‹cãèc-ËÙ{aV`“Ý_géµÒšve]ýÀÜ2{ÒÍvö´°…­QaJPÕ±¶ªn}mlwû´Ù&3¦X»m^ŪÛXBµ¥]=gÜ‚þ ZÍRv´xêq×6Ò†À¶ÍmísG+Ýé–­ž–»çj³ -i@w^Ýõîñ.úÍë27`?x×)âµW‚¹1v%žz¥º/ìÂW ¨¢oÃîûÑüª@½a㯾ü 0ƒiΪ #°ð<9=îw§S=£sEa:N” ô®‚¿:Þÿj—Ãöõ0~ûÉYŠÃý}oƒ7Q…õO_ÿc§%LZ»xºØì#Icì•Ñá+yŒ^[øÅFò]…;Øí É@à’Ñi/m"ø‰R–ñ¿B[ãÿÒë$h¿¼|a¯vÌFö׎9YÉŒÍPîœsû¯9Ÿ¹—vžÌþG¯íY±‹šéLL'¿ðË%%‘O\æ#tц¥,ŸLhߪVÔŽs¿üŒiw6šÅ~t›SëÏ8Ô|5—5©e"^SÍõôq½™H‚·ˆ–ó¬Khk“ÉÑ50BWݶŸY—Ác.r¬ù%abóðÖ¤nœ²Q€`€7Ðîuu´aì¥![‘,î6u}«\¤ŠÙ_‡¦¤Æv8kM«ûv0®¸á-ír[ŒÞ¸¶÷½»™ïÚ¾»_ñjÈÂ;²¡|Ä%ýõp]ËÙôvâËÝ7Âû-ïâ|ÝÉ婯ù•ðšw®(ß@È3Mz°bÈc}ð‰Jy³Ù’4ëh¾È7“_ÇŸƒ«Ýšõpãu+F^ØusØ|dç¡ µ2ïËhéŒýf]TŠ×Í‘‹~žzyræÂÏ+5ÌÜÖÕpUfO®nÛòÙÜÚéòÞ^é·þzð«…y‚WÚV',÷˜zªáòÞ+ñM7#Ý…ßÍHÓ]_1Öšy H^g¦­‡`‡þá_%qa"JRá]‰E͆¾¡by"²g`ƒ%¸"€ ùÕƒÇÈ—™~£Ø…Ý…ûôv‰‘¦èãˆ@'¤ŽD¸ã0‘Aãl3>™?IÙ_ƒÀµWœsUЍ •Ê©%,a†µdmûQ…Û™i¡¹HN=Ö¹%‰ˆ®ø[ ú· ž‚ê©“1™™W¤’¨I ¡Æyh– ê¸è£«¡Hªƒ˜*9)ŸMú9 _iê‘…ÐÚXevc}×ÝëD²2Ä¥!¶z…«ª±:þé륾E`$Å›g®ÍÞö*³É:Ûå Ãj{¬„©N—•…gvsL†æ¦«îºì¶» ºÚ¸h®²R¸kï½øæ«ï¾÷Â[‘U ðÀlðÁ'¬ð 7ìðÃG,ñÄW̰—<€ÅwìñÇ ‡,òÈ c¼ì(“¬òÊ,·ìòËã…òÉÀlóÍ8笳Ìä^§óÏ@-´Ä<ÓèäÐH'­4ÐE[ŠòÒPG-µÈMÓðÔXg­õÅmÏÖ`‡½uÕú,öÙh'MöµO§íöÛ8¯Ý4Üt×½²Ü]§l÷Þ|[Œ÷Ñ}.¸Ã=øáˆ\¸A‰7Žøâ–9.yàþ›í°˜g®ùæœwîùç ‡.ú褗nú騧®ºWÞöåôÄ.ûì?ÐzÞVëݰ´÷î»<¶?ìzÍóþûñȯ<ḗýúîÉG/ýË7<üÕ°O¯ýöKTÏ5½lŸýðP>ç‘>÷è‹àÃúNx¿ðõº3l<ùø—ÿûì§1ÿZŸÂè±û™Ï}=Øßþ…þ!|„»w;ðÍ­xäËAú&Ørt Ö'AêUÐUßA@`… ‚3Aîà…æa uø>Jo‡ês¡mxC2”`,Yó‡=èõˆ7Œ =8D ̰þ‡5,£èC Ñ‹È#cEê0†ID1˜ÀFQˆE4⫘Ã"Fð‹vÄ#õ˜E-NOŒ ìc a8G2¤ñ`kT¡ ݸH+Ê1AÌc#ë˜Á7NÒŒtŒ )iÉó]±v'´V ¸Ç6^Ò¥L%';ÙÂ3ÆÐ’t¥ö6iIVÂ0‡4X"IiFSB•½Te-mÉI`þ’‘²ü#78ÌOú —Š[â(í'Å#NrŠDf5_ÙBlÖR‹¤åìÄYF"zRƒ¸ ¥}œ'>^Šqeì#$óçKf^²—°æ=“GÂaš’ö„f̤™·ú³ŽLh6c©O8"°‹þ ý¦§¸=l³“…¨:°]RsŸ•äCÏùDGžQøœc1ZÎ0‚ó¢×Ìh!7ªÎ^±³‰mé_ªA*ÎS›}¨OzÌX’q–t´ç{ºÔrT`]˜EHUö=µQUØT«ÊUé]5« ÛjWÇú»¯pŠ$«ZigV ”këìڊ·¦U®xE]EiW^æõ¯æØë:™X?©ö°­éÌnZX­"ö±l¬M kPÈZ¶ ’],eázÙÎf!³={^N=KÚ'€ÖkŒãl ÐB¶V®ïÔBNë´vŽvµú›9ÿÛ,ÌV±¡µ­aØ…£Žðµkþ5.r‡ð[áÕpwªoÑé„ÝâÕˆ­Ôm€‹ÚÈq6»MÅ"9ÙÈ£þÏ¢Þ)·ÈCã’»¾teD*DÚæ®²V¤ázÝ Ð1Vñ¼<'Q•KF*Z÷û p¥Û\æ¹­~j!å8_zS½"䂉zÊ„nX£çÈgL?,âÚ—±øoÙG.õÏ…3ǘ¨o<œŽùÌ£½õà;:ïN,ûñL¥¤ÝyzêbÞþ÷§”nXyËŸ]ö ¬¸f~0¤ÛÞÓÉýî‡IßCÎ+5ñ5{ã¿´ÇôÖ±ßFéo¤;¯;ðA_Ô†föÝw=þZÿq~Ý9×§ªqßbx*õ§ºwä§{Ù‡ð·}óç}Fu÷‡o…7w4¦xî#çwg NQ¶i|²ö~˜çw™×wÜçwÈ'‚6×€ý&~ny–w"Uõy/xx$ƒÂç4‚"¸ƒ®÷zÜׂ§|ÁÅrùçqŽd^BµT§÷BêEh.gw͆wh€ß÷wõg‚%èzá'qã@r[Øq¬5S_(;aX„c¨we<((p W\üµ†çp†G'‡ÛF‡Íg‡׆—ozYxh0bõ‡ˆˆ3ˆ„X†H0ˆ˜ˆyµˆÓˆŽ(W(0’8‰kU‰ЈWxþÇ׉8¸y?ÈOEà…³Ç‡'†@˜…Nð‰¬8 øŠ´óA¦˜|fi¨Š 8Šž8‚ Ø‹¼HUgagBØ]}È…ò÷t£(‹Mð‹Ü³söY¨Èqh¸Š?¨ƒ=Œ<˜€ØX|'G€·Œ°çŒ²_¦4m•I†TDX‡iWy8Ž¢h…ßè‹áè}¨€ÝøCè×ax—wF¦‰œX|ýXŽ%Ž»‚XøÄ'ûXQÿˆj5H_íxŒk†sð(Š>ˆ&¸ŒVX…ñ’õØö8Kß„xy$z“DÇÙ}ŸX’1¹‹ÙŒ"I ùG)™’8Ä’Dä’ñØ‘ )“"þ¹ŠEi“xÛ'{æ;1•?)j-鎙‡5)“Y)ŽÜˆ”^©•ÝX ‘‰’v$jÞ4i(”`“ûH”Eà”š7–YÙ–‘féP\·’DlI‚x Žpy’XH–Ki˜s “OIÿ7b¹FCöf•ø˜e)˜u¹“F‰˜$©• È•˜©Ià%yŠ6li”óxšÐèŠ8™ƒ¬¹š­ –tɓާl>ea4…‘­6p˜XUéSš»ÙUt䛿ɛ`$œÃé@™dœÇ©VʹœcÕœÎÉUÐT5Ôé@ÖyV%™ß¥ÒɺéÛ‰›Â6pµXŒú#²…žm7ƇþFÀžë©z=·t±óžêYе¸@im¾5Wàéoäu\òphÅUŸ÷ ~8 )^˜ä‚nGuÔמù3a#e}–¡‘7 ñ€ŸÑÇiµi`r…2¦žË4j ôb幡WGÂÙxšvHƒ6Ú~*ÖlX›¸b ƒJž —o2ÚdFúvÕ·['Ú@*zz>Ú9ªW ú€ôÔh|I¢,š¡t×gÛäµJ“Ç~0:¥-§~xv¥]:}pW}lÚu]”zc¦É†BÊ|‚˜¦¸G%ªJNøk<Æ¥Ôæ¥=zOr¥sH¦E˜tVª§TšêhücW”cGº~cZ§„7þo„F¨fk;ZkƒŠEŒ&ªÓ¨zCæk:ê~‡Š©ø·‘›ú¤Åb7«Žv~øDªR¨s?u¡n&Ÿ`ˆ¨®Êk`Âdz)juñù_úõiÚN-J¢£—X¬š‹×(ž"”ÖêUÀŠ•ÙZUØÚ­Èó­àZVÛz§ãz­åzˆçŠ®Óš‚ʸ®Ñ#®ðj†éʈó:ž·èmÔº‘÷:=òÚ¯tš¯ñ–©Õº™Ì¨°è‹¹oõ‰/Ù•­H™{‡©‡Ð Ë•»€‰¹±w± K±r‰k‡ ›¨ÉŠæ¨“=¨”ß§°Û¸™›‰ k‰ëÂX“±¸±k|_©±0û‘bþ²ÕY³›x³ ©—Ù#¹•>ø³ú´œ)ûœF[ƒ ›%‹™9Ù±N›˜äHµa ¶—u²_ÛË´:;“mi—^Û¶¦I™ŸYˆW‹´o‰¶;kvM)· ¹”C˶± ˆu{¶më™qÉ‹›”n;¶ØxdçY©´w ·HÛ·Á8¹9k¸«”;¸™ù¹æ/wÊp¥ÊRÅÊ­ì°N¼;™#Ëß³ U¡1)¦¸lɼˢŒÆzüËHTA?‘Å̘stº¬Ìrœ¤ËÏÄÆÔ\ÍUœÌÊìÊÀã=Ü|Š‘<Í=pÌ›xÍ»œÍhðÇçl‹³Œ‹îÚ¼> Êo<ÎË<‡Á3Ï]\ÏúzÏ™ü± Ç= Ϙ½Æé|ÆDðÆ$<Ñ Â.¬ÐÕ+ѽÑ]:ÃþKÃ"=Ò$ÍÂÌÏ(­DFÐ)ÝÒƒ,Í.Ó³Á2]ÓPåÀÌkÓ:ÝQ8]È;µmÓ4ýÓ-ÔBÒD]Ôã|ÔH½ËJ½Ô¡ÜÔN­ÈPÕf<ÕTÍÄV}ÕœÕZ]Áô3¿ÛfÏ–ÖÚ&Ö—BÖ¥eÖÃ,ÚÒÖ1-(á4— n]×+ñ-.AÈsÍÖvÝ׿€×{!×=Á×~]سØi"Ø,BØ†ÝØ¦€ØPa4úBËüRÙ–}Ùù"/÷R“ÙžýÙ .šm/ Ú¦}Ú¨Úú26ÐÚ®ýÚ°Û²=Û´m ;Tix8.4.3/docs/tix-book/fig/tlist/twofont2.gif0000664000122200012240000000343707170675614021260 0ustar jeffhjeffh00000000000000GIF87aËxòÿÿÿÓÓÓ}}}×××UUUššš,ËxþºÜþ0ÊI«½8ëÍ»ÿ`(ޤœhª®lë¾p,Ïtmßø»DïÿÀ pH,ȤrÉl:‡€ÝsJ­Z¯Øl1jÒ Þ°xœ,€µn€G0¸ßð¸\žÛïø¼~Ïïûÿofm€vfjl„…ƒ‰ŒŽŽ‚n†R‹u“š›œ˜™•]—‘£¦§¨p’“¡k=qf±²³´±_µ¸¹º»¼½¾¿ÀÁ²·Âf°i–°dËÌÍÎCLJ¯ª¥|Ÿ©ØÙʉ«€×­ˆÔÜÕÚæ¦ß}ÝßáÓåzéçô›ó{ë~íÈ¢Û„÷õ6˜'ŸºQîÆ+¸°Ó GñDD×ðN·$ð¢%÷þ¯b£‰@)‡¤&‚x.,Q?W É¥29@*”?54F áKq-½y©"¤M)Ü PjÓhS§&µ7”ŽÎ•A)ý|×ó Æ®§}*µéR£Lͪ] •ª sT¦d 6ÐÖ˜n*ÒWX¥N™¦mɧ†Y•ÄóØ¢{÷IÃk@oVNCŽx–³ç9™¿Õ÷êÜË ýU–wYSè©h“zF|–pá“‹I[}Œµ®Öɪ‰éj=éum©€gVû¦¶è9ÂKó>íÜ]ÕìúöùY,ÛÁQ?vûÏtNÔ×9 5žùíðÍɺOìü¹7ó…"û®>{þX¶íÅ' mm xnÜàWzü‡vEh„Z=Ö ƒ9(…v¨áJJ–auyhâz典߈|Étâ‹&¨¢FýPSŒ 7æ¨ãŽ<££pÁ¬ØEDiä‘HòdBA À“PF)å”TViå•Xf©å–\véå—V‘ž]`–iæ™h¦©æš\Y× VO çœtÖiçxæ©çž|öé矀*hO¶™šKqªè¢Œ6ê裊P¨0“蚘fªé¦œ.0)•"*€œœ–jꩨNé©†Ž ç¨¤*무š¹j«oZwi­¼öêk”·R Ô«¤>Ù‚¦'xþ™B”Éþêl–Á‚:¬®°BÙ¬±0›í™×rÙ­ß>+.° |êR®fì î¶U†«,»Þ»î¸ôJí¹,¦[-¶]® - Ú~ù­»*ìn½iÞkºNî».ÀRBŒí¶_[qÁ[vë/¿?Œ1Âk*ü[¾ ;¯•Ëk­Ä÷+o¸'+óà c*²›$«{pË'S¹ìÊ¿¬ò±3³\ó™7J¦Ã;÷ìt»Í6 uÄC«Ü³ÑG—™´«ÔšÜtÊYB,µÏBOI0»XgýåÖ ël5ÐpS½2Åt¿-wÀ4Çœ­Þj£ÉvÎLÛýóÓsœ6Ù†§,1ß}ÛZ.«Â¶ªnã”þ#üwK{}låœËzy¨™Ç:ñÆ—^êçÓêk²é¬ÓŠºä·.;ª¯û4ùì¸oZ»¥±çî{Èã øê¿tð‘ÛÞ»ñÌ{¹»¨ÄÞ«Ô7¯5òÒ¾:¼csÚ½Õv[Oåó¡3Kï÷>‹Ï%ùÄŠn,ÊFKï±ùñ˾µfË?øÅ¿³ßµû£3ܸG1¼Åì} [úÌf0v¯oþSïÆ2p€Ä–À‡¸ep¦‹`É&hÀ½€< xAªìƒT›o—Á¶P…5äÊl(Àˆ9ð~”›aìVHÄ⃠ܠ £Ö@péuBŒ^ý'4iþWª^˜B–.Š$TŸU…=|a®}…Óâ‹Æ4Êoý+ã†F8ޱvÌ£ð¨G8ò±w”ãÈÎø?@úQ8#¤ÿåA  ˆÒ‹aÿȳ¯9Ò…Z2œ!µDI§Yò‘™,Û&±ÔIÅŽ‘¦<¥Ÿè1JŠˆTï–ÀÅ)®cQSeÜZ‰¶^î­‚â{.h¶-“–ºÔ!Ì|9¯_^–’‚\-¤1Ìå“eǼâ÷D©Í_:1™² Ö4-Ñ$b®f»<ÛÜBIK7Úì\°šÔ6kž›çì&;WÉJÆY¯”÷̦:ç6Qb1oÌ f,¹¶Èvúsò'$ü¨ˆÊ¸³u¥ñøè†s¡õÔ0=BÒ‘¤ÿ4©"GˆÒæe´¥³{)L1ªRÐÍr¦¾“)N¿XÓÔ±t§¹Ó)P+'Ô¡6Œ%HªR—ÊÔ ˜kŽ+MTS§JÕª.õ©ƒ´i׬ÊÕ®z5XM¤VõeTæ /ªe5kò󌶺õ­UÈžBàJ׺ÚfÔê@8£¾Ê'êàÚ^ýJX{Ö‚eÄa ËØ¹ðÕ*¹lc'›¢“$ÖE”Í,b+W#-)I  ­hÁp$jŽö´¨M­jwqˆ¸öµ°­lgK[|õ¶¸Í­nwËÛÞÞ6;Tix8.4.3/docs/tix-book/fig/tlist/widgets.gif0000664000122200012240000002112407170675672021141 0ustar jeffhjeffh00000000000000GIF87aÉáóÿÿÿÿÿÃÃÃqqqëëëÓÓÓÿÿó}}}óÿ‚®ÛçYUE,Éáþ0ÈI«½8ëÍ»ÿ`(Ždižhª®lë¾p,ÏtÍx®ï|ïÿÀ pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬vË£là°xL.›Ïè´zÍnþ¸{N¯Ûïø¼~Ïïǽ~‚ƒs†‡ˆ‰Š‹ŒŽ‰„‘’“fr–”™š›"žŸ Žœ6¡¥¦§¨©ª«¬­¡–˜£³´£®·µ2®¸¾¿ÀÁŸ½¬°€ºÉÊ‘Ž: Ë.†ÔÕÖ×ØÔ½ÙÜÝÞßàáâãäåæÙÛçÚÆ—ÈÏïðñòó«É ù ôŠÑ-ÓÔi+ ° Áƒ’K§Ž»X€ëG±¢ÅDo±«ÅŸ¾|þü,þcP C…(Sª\Ùí¤9‡Çþ8¤Ð%Ë›8sÞ´ir#-EEî! Y Ç¡8šÉ9¢ä‡P£JZ`ªÕ«X³jÝʵ«×¯`Ã:¬ ÖÌv2i&䩳­Û·ãØž;Ë1Žxõ:ÔQ¤IÁÂÁ´„ÓŒ+^üÈìCwN Ê…K¹2ÜÉåèþ´ë1ïǽvû :——…A&¸µåװͺ‡ùÚɳgF.X;¶ïßsgKö9 hgÏ …=¸(4 ¨SoXY8ðë8{Ëní8fLµëÄB%+¾¼ùóèÓ«ÏJ^|w]Æ‘Vî—sýO7K¿@;öÿÙYþ÷v½—xO×Þz 6èàƒè-Ö{u ur¥-§!s÷yòAtûE4Â…5'ˆ"; èM:ž”¸Žwh!ˆc8æ¨ã)nf¡|zÑç\hCzˆ©õ—‹7¥˜â5O¥5SBÉ"K$>Å“Oɘ pØÈå€cªhfJc5T&7iV£™$KÅä>÷Ö!RÏ CaJÒ¶¦BUb(9:p3è‡"”%Œ/z‰d#þ‰Ž¤gVÚ¥ÛÍuqƒègœ@fÈ?5'ª?( iO¤Õ锢W: ë°Ö:+•¯R™ ­·®`«pI€£¥Õ'°–&«R›/þaêæ¦p.5qCЪűJMc^®ää·+žø$­±–ëk5W 𮹶bi"“nÛ¨–BšipÊÎZ¨­‰æ»Ž³^~ò순ö!-;2ò¶š(Éä°Ý¦%¸ˆâŠîºæŽ›nÅ»²+îÆ+ÙÄĶm9/´h}w¬ÉJ±¿-eéælc’Ìì—‚xªA‹Ȱç&·43NŸ[ô¹á~»/ІbleN"ko°' ¦ˆÚâ«l¢ýÂ|3ËTÏ› Õ~è<ÏÔÀ° g5t“óë4ÒS òÅHãýë5äM-,±Wë–u³-W™ëĹ^Ü5l_/iMÍ÷¨ÇÁ 6þkó±2™DÇM1âz‡.hÇz¿ì.°Óûlàb𰉆›¾tÒ•6îçãF¾úf‡xBæxlþâëâ”ëñÜíÖúùÆGmúéþ¥Žò} üv¥‰+nôòìªh{°Þ¶ÐÿJ^Gᆱðó·D<ÌÞc £V€§\cõ¹_fáÊ=wögúÞÈØD³üÍ|s \úV<6´€ð‹ ûŽéÙKÓŸŠØ+¥Í®Wd˧&/±ÝìMn@ßcÐ@4<„ŒaÄ8ç¸ÝQopšŠø6»ŒÝt!tQß`˜Áî. \! UèÂH…%‡Š¢£Eö€…l7Ü!þØxx·Ã±ÈeÌûáu¾Ž“ñ„KC•Hƒ†¡ŠSŒ£çHÇ«Hˆu/ö~ؼÿ!ÏLd¤a Égĵ‰lÃṵ́à‘Œ¤$'IÉJZò’˜Ì¤&7ÉÉNzò“ Œd#ñ88 Œ¡ãUÒĈ@ê±gD™™È3¸‡qd(wÉË^úò—À ¦$sIJ-ÖP†È|‘̶ÝRµÌÃ-IB°G"àšØÌ¦6·ÉÍnzó›à §8ÇIÎršóœ‘,§ˆi¿0åq‚ÉŒ':–©º—ȲkŒæ¦‰‚\Zóœ ¨@JЂ4éTz¶N,^p†·“§DþiʸÜS‘ùÔg ùÙ”jàš– )Ï$PD`¡þhh½ŒUÊ-N4™®„§=ɆQN‚£ðçGQ*Òž2†¤ä©!*Ô¡ªÔ†Õ’yàXǦ:õ‰åaªVh†ŒÚtr´ì„GAÊ g€âT>)BƒjÒ±¦”zªZ×ÊÖ¶Že*bÈêUs&×蔫ª8XEVŸÕš&%k`Ñ )Œó°ˆM¬bËXF¤qaV+]ëZ¹­õÉË^‹Ôמþõ£‡ø,$ŽjÈ,>‹±¨M­jW«Z=¶‘•l´b«ÇüÓ.È„ÔÙ~–§c¬Q ËRÛ²ö¸ÈM®r1þéÚ6ÒV¶7¥lmO»SÜzG·sêHoÃú[£N¸¤Å™i×±Üòš÷¼¨mî¡ë;7Þõ²—Øv¤Ýíz6¸ ý¬(‡ëÐâR½°€=©Þ…±W‰À{¯uS6_ùÔ×¾¾ÅïBñ+I”"”¸*óè€7Ìá7”ª |îu±H¯~‘É%q¡¼°Â÷M§~‡Y€ ÷7ÃÆõ°Žw¼Ü«OÄ#Žˆ<”ܲ8»|q„eŒÉ ‡÷Qþ%/§LåÔú8UA†®Q,Ë™™¾IV2Ú~KaJÖøÉÅÂñ«Ìæ6ÿòÊ%n–W˜8‡Ü6»sg;N¯TÍRv³ Mþ`vš@Îs^á4t K»b³zkI=„æb®™Ð˜Îô$á|¤Dgù09pt+ é‘Ù•n'Ör¬éVkšÓ@´§íÑ-߂ԥÎÑo5‰?#5Ê rµ°3 ë ÈzÖ´>ñBm½ \çú§浯K›T;óÚ ØÎ¶¶·Íí‚j²Ø2²ÓGd¿0Ûöê³EíLö:Õã öµ»MïzÛûÞý¶¡;pìq'›º¢6·¨NµY½®›Ýé”6¼«­KwüáÏ(³™÷­~ûûßR¸…Hc*/y>ŸÇ®Ý=mñ2|“E ¹Êë¡oCçâ³.÷#Œ"¤ð‡Z˜}ñlM*þgGzäM.9”-o‡¯üè,Ï$¸ã ó˜s¹:cØÇ=3p éé=kwÐlkë`EË8˜¦#[æŸXÊv_„êÁ¥2UØËšp’sè^oò¨š3w`ì`¤c?bÄmv%¢Ý](;€òvsÖÜš;Ð/ùn ßOÃz/ ^|Þ÷´o>œG…Ä7Mq¦þìOÏ+Û§ÅxùT=òVï|µNy¡§ùò¬¦¼æ5+û[Sý«ò=©jñÓ'òð¨ˆSë1Ôè‡ø—”öIYIK•Q©“A•Ì7sWiŒY¹ƒµwwE©‰Ó–ÑgM9q.g–s%• –¿Ç–±€ÅciwéZ/i—a——dI|iS~ €)&9˜ cB©Ôv‹É˜H÷Pøˆ‘y–6¸ ü¸™\‰‹^X— ¹n+Æ!©øaOYš'og…±ù Z©‡rÙ•ù]½ùlkg‚µY–¸™›Ö¶›vXœøñ›—œ®i”º'€Ð zàh-p†É ™ËYƒ—riÉb"xžçÙ‚èY‚I‘’ïÀšÔ9‘¯þù•Ø™i·Á £õ†{žâ™qäI¢¢Z z š  º êž'¶X}Â9ŸèŸzûÉ\àéŸÌÙhÊ›‹p 9À  &Š¢ ê ÂŸ‰©S—‚.fëF£"Wsòý ¢!zgŠ¡[)*Dª¢,j¤Ф Š Jª{¡×ŸŠ©ú¸õYŸç~Uêx‚XÍÑYZ£)…>"“ykçIJ¤lÚ¤Gš¢8§Mú¤p¹…R*£ȉ!È‚ì Œ5¤¤ø`Îá¥a¦zIÊY¦I‚–h Ñ A° Fê¦ à¦Mú§¿£Zþt©‹Ê¥¤{ÐgœŸj£æ(ŠÉȈüy›ŠÊgúh2ñ¨•º@«µz« @©Iª«–j¢}¥©ú7¡Öù‡zê“Fx¬'Ž‚w"zcÚªµôª£Övkç´ lš­mʤKÊ­+j t*\‚q§?H¬¡ˆ¡úx£škÊ ªö±ˆ ø¬ÐÚ~Œêޱš Z«Øª­ÛÊ ½ú­Iú«ö„1Z®žZ¬ËЬ˜Iªë® 묫z“óê;ÒÚU÷Š š«üš­ºš¤Þš¢¾Ê] ƒë•Yª¢˜®*[ˆ(ë‰Iv…<ʪ« ÛlŽ:ùº¯+ÿê± °®€E²›*þŸÃz°çê“~ê§,Û°Æy^štÚ£3ëªõŠiZº³ãšsá¿àsö]Ù®ã.Îk>„ü´¡Xˆ°å\~kËžˆWÌ|Šä$nÒJÞ5~™|”,^ÞŽÆ×éÆ¹Ñ§]jÐå\þåkͽ)ûë}æÙÍ䎭Òa>¿l˜­Éé’TnÈï÷ãc ~x¾åþaÊÁ§® ýç€^i¾6ÞòýÅ Ø ®ÚoþÒˆ[-u¢€`MˆÝ aw¾yŽÇ@®}lÜžš¾éîÞ$ºæ÷@ڢ®ËæÙÖLÏ@ Ì`ŒOþ—“>ëÌÝÑŽWɸþߺÎH‚Ú„¾êÐLÉQ+Ö"—ã­ùáíŒìw’?ÉÆ°îå9ÐåÅYÛÑðK*¹~í”í·¶í¼–ïºÖp-i¥ÞâÅâ…ÖÀX޵Þì”ùì”NëJ ÏXùÎdîÐTkïMÄëÏ uîpÓTWp§˜ºD c±.ë^Në?äõ'ñõnñiÐéÁîéÉÍ’?þì-}êgÑIë¾m¸ì)¿î è” ñÒîçÖNóo„參â¿ÎñlÍó Óæù=ðå~ÓnYôþ~ðáÈî:ÐðÑþò‘ÞNŸäPæR½7^õ:¿ÍéîÜŠ¡õ¾è†ÛõC?í3òb‚dßî-öu¾½j3ßöe`ó.¯æû.Ë¡µvoÉâŽÃÓ}ì^OÐ`Ÿî¯n_wžô.ï‚÷zG¾øŒ?Žöož@PÔ—¿ãù¨ê´Ù?õô©?«¯î­‡±?åÀ ãc†û¹»é8ß{x/å\OåÂÚÄ_ü/pü|Üûðn®÷šLðØÿüKýÒoßUú¾š¿þßüÁïýo þá¿Ô_ù/~iWþÉ Ë/ò¨þÀêŸõìßþ)ðþP@¡Õ^:1N=é­Cl$¥3U« 0^Y —î Z åÛ .G€/ÙL¹d6OhTJqAœÎ·åv½_pX<&—ÍgtZ½f·¿¶,1–œFM$@^Ÿ<;©ÀÁ:–*¤™š!­€H¬++:ÃLÍMÎNEK£É!7ÒRÓSÔTÕU38J9LO• ȭÀ=]= >`”aߌ ½Í–"Y’ÅÆG\ ×!P£æYímîî ÄkQGVòrósôt±êÊ9ï“Z ÈÛÜ?ûÞ_ã}`þÿ}úZ#Û7ì¢Ý’@œœk‰ÞM¤X±8PÕmäØÑãG0 ‘œ/ØžG»òÜû“«X±;E¼ô§KSA‰*žÅù‰£8 žfщIŠ*‹ÖAÖ£% ¥N¥ZµHwFg®˜‰K.‰ ‹ù’ìV¤OpÆø¤°gχB%úi©$­¶»ÞàÛ÷@^®[—<µÕêaĉ­b¥UpŠ®<¾‚ÅW¬̳c1cæ´–ä…¯Þ6Œ+W]{iwZ½m¯_¾¼ µf!×°bܹu“cüYï †’KP®lë2?™ý’× HœïÚnÂÅ*R•„dÿÚ~Lyþ0îÀùüÛnŒ|÷€Eÿ•ø»§oYãÞÁÓô•̬ÂW¤ïæßßšÞ»솣L¬õÌŒdŽ!J™çÚJ´éH«.¢ëˆ¤ç¦êã»ðú0Då˜#&Ay`ó >yLqÅæf!¿PöûoG{thBk²r °x°+O@瘑šÑ$¹ðš 5\*Æû8kJÄ"T/ÄÇ2£ï8[ÚËãÅ|`šÏKμÌÇ"nóñM8 P@"‘´ó%Wm” ²ëP;Ã.­D‹Å©Ü²ÄBÁ¤±K Ä|-¶2ѼòRãÆÂÏ6ãôôÓæ’ Úîì,B=ús¡i~þ\U®kÊwqTÅmÑÑîlÕlA*[t‘RËÐ:s³*«d7AuöÙrDÕªNS‘ôlIžúü X£$ŽÖ/‹ýrQE4½>‚½rÀ½v!6S3k7SzàtUhóÕWi¢¶ZÇ®MU:†üäÖ4YY÷Qq%7ÑCƒU4]`aØwã[÷D‡éµeÙšÝwd’[yUÈiIåêHŠÓ4TuR•Im]=8P ? ´FCa"‘@eû¹¦ Õõ0&IÇü+]ŽBVS\óYU|K¶úêuNnŒN•U¨ ²x_þ&æöt¤àmƒB8ç…eD¯âñÚ–g¼¹—*Ϧ[þëÖ4RŒw®Õذibpj‘±6Üê~-R­@Ã[b±-Xf‚[--P#íóDîÈVêNÂ;=|t’¯Hµ.rÉ<€Xxò²gÎm›Õ¶ÎNÎ;×ý„Ы&ý÷‘MO ¸Ô'›•õôJívÞe§öË1Ä=¦Ïw·žŠ{i~{h…/I<”°ûù_;gÞçù„þIP ëfJ쮿¾wí¹·ßSïßA‹z$ÿÜב­y•óIí^Ñ-ù%0ôËÖýø¦üý†+ÅkœÂþ¹æ‰rU[ßÉn§@êŽz` wÁ÷Ƴ`±‚¦7ÁÏ-jN÷0 ¯ê•ÄÁ4:ª´á/¡§à2ká¤JøPôEÔw¥é,ª ŒöÁ Ô[]ËÄ9Î(Èp’$M§%qxÊœxƒ¥›tiµª°…æÉ´~5¥ªÉ¶µQéR…Ó‰‰”à!P NA¨¿4hÍnØ>g`¤©bÚ × :#ø`R¥bUíšµ«¾õ¢ÞÔ©.R² ¯ú^a•‚gÌPÖªó¨0;éD–ªI½ZË r5']±yWÌzᦙÈ)! øˆ ¶0 ƒ…[™aÓ¬&=&|€þVǶU‘Ž(‹=ËÚ3³»¥l^‘ÔÙ|¶«FmXyùËç,KªM¬QaûXl0T¶¤mÀ"UŽƒ·ÛÝìløêY n”¸àÞL;(-±«TlûbÀØÂ²ºZik,²ír÷–¿ýn ¸(‚À’¶|>o"p”æ²×¹–(&|ß]LÎ×(õMm=µ›ßÌv—)ýÅÃW{91Á뵡Llbø¾Wzñ}¥„-¢ÜbÒà^'¾0†ïªá)·Ã¦œ!ªC‡—Y1Ì`éÊW‡ƪŒezüÚ³8‡)Æcäj°µ@&qQ‡©P ¨8º,v¥‹+òãþ&ã6"³”òD©l+W ËxŠš“d/'´ÈsR—7]@𙡨Hsmr[ã6×ôÍPÐñ•çLç¤2õ]c{‘|1 ¥JvèH ]ÐCG9ÑT]ô-ç%¤³€"dçJ/¸±)0f’[¼äCtÍõ=K}”8ÿ´‚ ¶˜7sRR˜z^ì 4ÇyJ×J¸o¯íúë&œÚ±]ìÒ‚w…ºúðI¶­7îí"K,t¹— (t·›*ë8M{SpT ²Ùð7BKˆG\â™d3ÂåÈÚ‰g\ã¯T¶Ã‰¼qþ‡\䜩Åk‰ñ‘§\åhìøYWþr˜o²â&¯"Êc~sœ·Üæ8çyÏË8sšÿ°4~¸Ïþr ý .?zÓ®Ÿ’]‘€E´­~u¬gj¤úÒwþt°óèR/!côDƒÝ¢T×gÔ9+Ãþv£ì4{$Õ ÷»ª1e9Qc}n¼>缞»ëîE¶Zð…Ôû ` ê¾Ó¬¹€_|åS.÷Âsïð’‹â-OÝT9þñNŽüìLùϧ>ã˜Ï<ð6öÖ’^õ­l|nkg3¶ÝÒ³ç=Ç ßzºk ÒÑõ|ïÓXû¸þ¤ø”67³ÿ|™ÿøö«;›îý‡þ~²@X¾îe}ð ’õÓ?\o ½å‡Ì|q÷ýÞ|S’ýã¿K‹-ã²4ò>!¨@ ¼À, Ü@ì@ü@ AA,A $ 4ÁËBÀ>>Ë?s@BB¾\«¬Ò{žÓSÁ ÔAìAüA ôABDcAêsÁ P1”A7ª½OýŸ@„âÁ! B+¼B,ÌB¬B!d7#<«¢µÆh@&T¸o¨A„˜@)*LA-|C8ŒÃ äÂ,Â/t=$Ä4Ð:>ìCxÒèp?ÉËÁ6”CþCÿúQâ$° ÁRH¸ƒ¡Â÷JœHÄØÄs8rþÑCÄŽ õé9Ò#=$%-|LÉÒ—[ªD§(‰Ì+oêdÕMTAGu0´ÂH›m~bP:'çΧžz2ŠYƒ£¸¢ °NhÄ”›U•FjM µl§ž«ú¤¦Õb‹mýýºð(]ncãšÝ›Gn9½ôJ& Õ…YïâÊË·±¤ƒ·V$¹'æOËŠ–7rÖf——Låx¸+ÌÌAœ:^m2;«¥IÛÝ4uíÖèì½®\™+×ÞkdKöŒ‘1ëãx\ÛÀì›÷hàωÂ&.8÷ ê§GB­:fÉbÓ"ÏÙ¯Z»ÁÃFgŽuùر·§›vúÞ¦¸Omœ¼þ¼È'zÛÝ·^f›…bÝ7 }UYìÕ…›xÿUy4DfÞ!¸1 ¾¥‘†øq¸!D.–¢…,6ƒ!PžØaŒ&&â>į̀߃2J\Sýµ(d޾†Þ‘’Èá‡êÀ§ÛrG׎Í)†T0+©åu/j£T}³Ñ&›m >cB|FÒw—šTåÇ›üe¹åœ*(ç_gOÎ"`ªÑéç™]‡'—¸twKŸ&‚ä Ê`¡S)¤¢”ŠÀèxŽŠX(“Ÿ Zé§KÊZ¦8þç)¨¨n%êj¤®°'<§¦*+aEšz£«¶SÓ®¼R1k õ*ì°JÜZ'±È&þËØ«ï0Kç¥ÈµZg®ËRû«“µÞi,°Ôrâì:ßn ­ Û–똮Ö^[]¶š ¨­Þ¦«nqìbêîºÚÆkë¼$Œ;ê½ýv»J¸ä<¤¿¬Lo¾ËË/Ÿ«°¥_bðU/ü‹¶Ø>ʰÅgŒÐªw¬éǪ\ e"/JrcÒr oÃ|©ghË#×íÄ.Ï rYe&+ô®j r61óüº»³ÙÍ5½q»&—в4j%s™[Q/¦3¹UãêsÊ éw lÿzmôˆQ1ND¾ëñ\<ŸrtnúþµrÚI½¬ËÔªšäœGvÇïɈ‘e”„`ùUµPŽÙ&sbþH%§&¬6à} Óõ̧Ҡ_ñß‹Ózä‘xw°M£™0Kj]NW9œfè{ï\·©ë~›tØ×˜²îËTþ;„X_ÃúyÛ}wàìΕ¹y×}{®ºqiIeQøp?0iãëòÛr¤ Ž»¡IB}Zún„9)Óg¨{z_îߣfwK\ɺ·¶ÔAˆfãs›1Öº­I}ÀË×`Ѿœp-Ì‹ÛB‡Ái4puÔ_Œ!íIAš# ç>‡ú/q TOKÁ²ýè…ó@žÌ.Ø»æ3¼YBUÏJþ“å@”Bþx/‚Ÿû ÍæŒ vÇþ'ðSœñ*è·¿aЇ$Ûg8F"zÅCbüì†=Ûíeˆe\aùwFß|‰Œ@ ý<Eåv’¹ÐmÐò4LN†~Qrä98VQ‘õÛ#Žˆ •ؾ¯'¥£“{>›y2‘áíì{ð·Ô/:÷ƒRäc!ÚJâuX£Ó˜Z\Íbv™¨Ó¯wyW½MªO† ¥êëàÀV0û\î2¸:ä…„Ñ –üȼ®@oÇhßý®³Å~¬ì„é[ØýŽ•ZŒ/ãÈÂí"’‚¢åÇeg©¶-ö¶ li»Š]€ñr5Ô°XåáùöA|9Æñóò Þ?Ø¿ð ï«üYÊÊ7ºLîl“óœ3˜]¯(EË ¦‡LÖãšvÅ›J`î‰âÐBUuÿÅïËã ‡™¿¬¥¡ùþ,^]kº£T-SAÑì—³Ü.ºµ…yLl+r½TZb3Œí`gº¼A=ðÚ<kr/ÛUrbË^¡E›ÛÝ:®ôðä¬p)GÏÞúþ¶I‘ÍØ} ›Ä†ýÆ «AæFÿõÂv‚»l%NþzÔÛdÀÝf—™­¨¦)¶CÝä>—9”™´þý"Mi$Cœ•+ÿ£Ä%n}êÙ¨ýv4’V.LKÿ¼}”Ùäô%ðåJvkš[~åŠÍ|ÆB?zÖ½õ¡géh–ðűÎupß;¦¸ÁjÚ‰ô˜·•ìœÖjÜEºvÖJϸ}1kÛí®Ö¯“ßnŽ8àOVÃ/þ&*¼Ùó,sÔbôòa8<ÞM‡ùÎ/âž}÷Éo¾èz?{á“^ìDþØÏ·ÄBìzÍö¥§<ÚûžbÛk„âKûwãY÷Ú'ží¾g"ßµiúÛ—ñbþÜ¡ßúßKžú`ß=ó±?ñëô^'þØïr5û«Ÿ>îáêmåWßEÞ'×þå~ÒZÎ#üà‰þö÷˾v´v‡\3±v¼·:Çg~0·w•—v®ÕZh³Z;Æôií÷:ñzÏ÷}Ñ÷/‰fc×pì_»&['Qõ y—|Nˆräawƒ5'tˆXàÒ‚wµ€ª'}ÛàK hHÃ1r:fj˜€îÓ,:Xe±‡„.øl,TmT6E,V…Š·„ë‡4X8€,è„£õ‚RfmêE#XGGx†›†qã ‚“etó·|ŒSg8”k;gsÈg\è~ì·†[Èr]X~Qó¢¦\Â%cƒ`…(k=ØTJè…L˜{ž‡ÉVQoxX|èˆ&ø‡i胳Eþ‰è׉—ˆ÷—zº—~!~¶v(8xlˆzšèv €uø(nt…1˜˜‡heÚÇN{ˆ‹¢¸ƒnø‰…þÈЊýg‹th µ?‡1²(zQ‹¤Ô}Yè>ÍÈq·0Û(pÓØÕ˜‚}ˆ†û·ˆ±hŒÅ—„î ŒWxŒÁTáÈã(îˆ|Mø6)Q°RŽê'ĘŽk5ŒjŒ›¸ŒãÇxÅX¤ˆPÿ˜‹~˜ IË#z©ž¸ ÷XYù‘¾z 9’P@zð¸Z8³’…ŠÍÇŽ9(‘,9“*œM:¡)Ú£1ʤSÊ Oª.IJ],š¥Z£¶¥ü ¦‰"¦©Ò¥lV¦fê'h¤Wú¥mÊ"oÊ¡dªusê¦[ê¡K*§y:Njj–‰é§ZUÚ–qú£…J£U:¦‰*¥‹*¢Ëù¨lúp©˜šþ©šº©œÚ©žú© ª¢:ª¤Zª¦zª¨šªªºª¬Úª¡ Hš¦wzz–ꪶz«¸š«ºº«¼Ú«¾Zª°ê”vJ©x¿Ê©p¬Êº¬ÌÚ¬¾:ÉڬЬ‡J—}ª¨µ*­Îº­ÜÚ­Þê©Ðê¬Óš'ÕŠœˆš£5€©°®ìÚ®îú®ð¯ì­òZ¯öz¯øš¯úº¯üÚ¯þú¯°î®»¯Ð:Ô:©× ©@ ®›¯ôú°;±[±{±K°û®›°š9«Î'»±í±${²(›²*»² ±)۱䪰ƒŠ­n0²(k²,›³:»³<+¯.{³ãjJåþºŸæZ©5{©+‹³=»´LÛ´û³' ³B+³ôI¨;`³Q‹´N»µ\Ûµþ µ$+µ3´Zµ4ÛX»®»¶lÛ¶nû¶—ú¶r;·t[·v{·x›·z»·|Û·~ë·ð·s ¯b{2d+ 3˰?¶-+¸r·Ž¹’;¹”[¹–{¹¸—K¸A;¶T+¨V«Œ­ßZº¦{º¨{ºœ‹°1kHúºì™Œà £«µ«´^›»º+°áJ ¶¼›¬«›°‡ ~ÞÙ{Fڵ뻿k»»û¼Ðk°¸°ÀK½Â˱k¸ÂJЏ¡›Ë[±Ó½ä[¾ó:¾ÿZ½ ¼þ…k5>™Ÿ¿X¶gáÛ¼Ìk¾ø‹¿½û»×{»ý[²Ùë¾Û+ŽÝ[šÉËõ{»Î›¿ ü¼ûë¿÷+±ìÀ!õ¾ ”ò«¸>À¼À+Ë)K ,¾èûµÿ+¨:°'¬¶L[ü”ÇÛ çÙœ±¬² Œ²"<ÂÁ µ) À>̬;µÅÛÇI´´z´Cܲ7L½O¬ÃCг;ÌÃ[Âý ÄMì³*ÜÄí[ÁLÌšèJ5üÃQ|²U̲E`Å=Ì¿>œÆÛÅóG\‰ñë½óÛ°7ŒÅY,Ç»Æ,Èn¼¾~,½q¼Åñ:tŒ½Eì¹w<™¸F‹þ¶} ÈüzÈKÈîºÃž,ÈŸ¼ÆmÌ®H@ÊSÜ®U|ðªÊïÊÊa«É{˜<¯¬Â¬½‘¬ó º{¼¸—œÈ¦:°³\±œŒÊmlëšÊ£,Ê|ÊÌìÌ¡ÜɧÜ̦ ÆlÍÉ ÍÅ,ÁX¼©öªÅ[Ë|ËœË ˜Ç\Æ3PÃA<¯ÃL±ÛœÍ"ŒÌÏŒÍõ¬Íö¼ÌÔ\ÏÒŒÍûÌÏÕÐòlÏûÀòêÍõ ÎúÊÈB\ÇF¼}“l¶Lÿ쮊̹Â|Ѽ}ÏMÏýÏò<Ò$ ÊÓìÌ$ ÐIÛÍ%ûͲ¬Ñ+ÎçKÎ`lÎèѼ<Ñ<ÀÎÒ›Ñ9þÏÒÍLÐ%Ïý,Ô']ÊÕìÊ×LÔkÐñÁ í³/Î íÈÄ[6'Øw±{6³û<½ÐS­¶ïü°@­ÏF=ЭœÔ]ÔùœÔL­« Ôo\¯RíÒ‰lÕçëÅ-¼C/,ıq_­‹\Éô[Ñíª¹yëÓlŒÒsÖ*½ÌA Т¼Ïó¼Ít½ÖNm±P ¯Š ­xmÑ0ÝÒWmËYÝ4{jQ\=Ƴ©Î2ÀÎ{ËØƒ¼ÙMÝÑC]ÛnÛ”=Å’}ÔüšÙÁ+ÇŸ=Öœ›× -ÓD|Úz#b«dI\ØÅ gÌ»e]°gýÏ·½Ô!ÒhíϼَíÛmý´°Œ¯ ±þÈݸ4íÂa 1´Dj³q=ÙáÜth¬Ç:}µˆ­À£=±×ýÖ=ÔlÒ‘Þ ÝݶÝáMÞÕÐU}Ü¥=ÎÊFÂ<ÈFFOƒÎdŒ¥úíÅ žÐ!þ¯ÿÝÖîÝ~Íã}ÏžâH ÙÀýÃå}¯çmÞéýÅì.b=°†áòÖd»ŸV†ÍÇ Þß =âþšÃàiÝÛ&ÝÛÚÝÏœÌÔã2®äØkÜèá3=á"tD6“DÒF>ƒ÷­Ë t0ÝPŒäЋåû*çæÛÙÁ-Úz{ã}½ Ý/þÓ#=nKǤ‚çL[.ºûÝÁpþ¼tž¯Nþ¾vn½‰œç^žÜvÜ b.kJI¼ˆ ’ÌáìSn¾¾ZÞ´‘~¯©.é3ÚpìЬéiTjk$è…^äÎù6ØÊ»è6Üè¹»êõ*ìÐ;é† ì®nÚ™n$†æHµL½öéi~è¬]vPêé{êLKì]ÈxìT îá븜&42KµdbÎSŠÓ~Ó¢ní¤þË– ¹˜[ïö~ïøÞ·ô>¹Ã-¹|½Þ~ÝÞVYí‘ÈS¸¾Áò^¹ûžï ßðoï ¹ý.ñä^Îm‹‘°ë¼ÿðÿñ ò"¹ãoÓì¾Ë ñ®  ­ó2?ó4_ó6ó8Ÿó:þ¿ó<ßó>ÿó@ôB?ôD_ôFŸó/ð|.ð]IðÒÃïþá óG_õVõXŸõZ¿õ\ßõIæÙî)¿æ×(Ý}Lõ]Ÿöj¿ölßönÏõ£»çÓç õlnðÑ­«ûö|ß÷~ÿ÷€¿õq¯ôsïºB^¡NÏd?êm~öøù’?ù?ø`ÿ ,Ÿèàëø”ÿù ú¢Oô–¿ìöÜ¡êw/²ž?ú®ÿú°/ú¥ÿо¨úÔn÷bÿá{û¼ßû¾ïö³뵟ûO¿øðÞøÿþûÊ¿üÌôÁ_îïòÝhürí­ßüØŸýÚ_óÏoñÑújޡևüþ»¿ýæþÊßý5}ñ0¹òkš÷L\þè?ÿô/ûŽù¯Ø†î?nðoÉÉ_ÿPºÜþ0ÊI«½8ë‰`( d`žhª®l œïÛÎtmßx®ï¼*÷´pH q£ҵlÖ<Qˆ4àX¯Ø¬vËíz¿¨DuÖ~1³zÍn’M¸{£›ävd¾)SÁ€‚ƒ„…†}Re{ho{vxG“‘qy•–>šC‰"‡¡¢£¤¥„žS%Œu™œ®¯-­@²°;´”µ3·¹¨d$¦ÁÂÃÄž#ª˜¬¼ÍÎwl»Ï±ËÓuÖ-È ÆÜÝÞßÚÊ’ÌØæ‘Ò9éçÐäæë¯âUàôþõößòðìý¶Ñþtðû÷.à y (\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱcÆpüŒ£³Ï I3œSjƒ)@“13(„BµªÕ«X³jÝʵ«×¯`ÊK¶,X=Ç$º ­uÒÀ‘«„. ».Ÿ®ÔÕÒšÓ6¶½ zmøžˆÃ¬øÄ=.Aä‰N´èš»môèÄWùwð#ƒn:é9ï=nåϳ oà ®_á³Óþõ’·#Eq·)^5ðÍ MþÚL#_~ò¥>åË3êè9ëÁF9¬dÙ'¾ý~ÝóSî^'¾óOnE«Ÿú†§³³5ðn<“ÑÄ?Í/z¤ÛôZðÕkÃq“GHšð„(L¡ WÈÂÌZZSœ gHÃÚð†þ8¼!ûÔ½ñ„Åk^ßܧÀõyŽylŸSw?ê9Àz0ä_ÿ÷¿è4N€þÐ]tÂ^.ƒð2a¨:J°P?D¢Ùœ·D 6‘ƒãye7ŕԎŠuLÓ“jF¶›ÐŒ` ¤ùôFÆÑÑjïž·ÆC2ƒNlQ²¦ArS[9D]½0§¥k@¶;"¦zË“áÍ/r;Z¦³öé²Òy“†‚{‹vkð…«o¨]û†Ï©úð‹Æ›¢ò²ç¹:ZÖ\Ô[*|! ÁŸš¯|ã«XúÚ »ø®„WÜ p¹M1Vƒ Üá»È˜M4foˆIŒ]<¢ÖÁõÂ/‹‡üÿÆÅrn„ÓY·(™³8²ñârHe㘘­?.è}!Lä.oÇÈ*#ªþLAcI¥H7† Öòƒyª¼nç~cs—1çL±È äE2–ûÄM3“ö´F½2 PÌE1r,1r&2Ssg×ù5Ì–%0_Tàþù9Á¿-1-Æåc®Fm„I4‹A]NÄ4ºƒ”µðšAcuÕÎt–¿GY!·²V¥Žsó›PŠ*æÔq|ôl$fUàòrÏ ¾¤¦ÕäN7T5½.Œ¨Wm`.سveÿ+ic§ªª;4N]ú1˜Ž’gÑUN§a´Q“››ôàgʹµ¹KÕ^ŸXÆvyØW«¤··…ìn‹xÙ´ö%›ÓÆÕiÔáž–&Ä«‰:eò[nÇ'¿þ O`&ó”öGµ­ê3±f0¨m[o|šð{¹úâM¹´eÜæ×wÍsu¼|Odéþ½mb§ÕäK-8¹g‘æ„7uáõ´¶Gqf®“ê¯dø­HÈý¼¦D£œEÞ_’ëéIG9¦U>k–×ÚÙŸ”º0©NJ‰ÒãmÌûæ¶È$èë½ëºÓ¾Dô’£=—·¬½i›k]Ÿº›ÑÍÀ°KŸûŽ{E(MËn½R¨º—GvIù×è•><:ÀíU¶3žÙœ†z¿}=w;—Pî¯|ÉÆNLPF<†{ÓÐUø³«‰o½²Û.ΖwÚncŒ¦ó€þØî ö¾î ·{çÿàçž{+þʪLþò›ÿü'd}²EÊ|:_öcwå®A{ëKŸóz÷½ß»ÏN‡Š}÷â'fLJxêgp<özN·e 'jAÇsЧ}bGH XFÉô@ç€Üg(é“J;gw!€‘¶tÆ–|ëPíÇ„. xw#sñww@Ç‚w7q–“o¶{1ØVW% Èm"ØtDpf‰u‚ç‚¢—ymæ7¤†™ãy÷FsCôCx³nÕçu:xwJMWòƒ¨g€8b|R‚½e„_en'5“·„ÑÓ„ô„‚oçoTXo …À—…sÈ‚9çoüezfþRaˆ|„×…€n§pçæeŒ¸^pÅ6ˆ«§t]cˆh•ˆO·ˆ¸‰cò‡óˆ(‰œ@‚`È–ÈgÍ÷v²Ç‰¬/žˆ2 ‚¢X_”ˆf+—ŠŠ˜†­¸‹®ˆgf|³¸?C˜rˇˆ¸˜‰ºÈ‹ÊHH8¥ŒÇ8ÄÈ~Æè~ª¨‰Ë˜^ÑŒ×óŒÐ8ŒµX„Õˆ‚h £è¨ÜE©÷=ÆtkWŒãÖx}”ŒéxW±ŽWutîx‰°Ô8°çx戙¯X5§‰üØFŽŠçz™€k†‰úˆXíècŽÙu‹Ö˜‹y‘$™‘ý´‘þG&8ŽGXŽrŽ$™Ž&Ù‘ ™’ï(,Y†.y†ïg‘3©5 n(‰“ÿ¨v)4uŠ&€„AiC‰eEi”:‰”ÊKIß2’l¸k¦Æhk¨yudÙdyQ‰”SI•‡x”WÙ’‰‰ ¸ˆLè•fa—·¢u8–e¹g‰– )8 éŒL™•éc=‰ NIƒˆxÉnz9mOu–¬ñ—i ‘kÉ–êPˆ•(„Ç8—ÉHggŒÆN£ÉJ”é—ey™G™™šYX‡©Kž’ÈÈ•{)™‡qšŠ”Æ•šªA™¬ 7ùšVé–dÈU IŽ?š!GA5øPÔzIØþ†/È›J¨†g4Lºy¾ yXñ๖˜Õ3˜Ýè·U˜i‘oÉ“qù™Éœ»9ƒÚ‡N8v2¨JgmûÉ7WqÒšê›jgœUéšüq[ÐHŠìya‰ÉX0 +*Øœ9Wöcq;( þƒZȃÚs Z Ú—):žÚ—Y± æùDèÉŽÞHœGQœ5ºIf¨˜ 9ZŸXKK´7§ƒ.×ÙwW'…›¨ .êÝé¤,Š 1*I3ºj£7êžÇ)W³©œ×HŸè–u:¤Ó9‡é³¤Ò™¤:Óƒ{ÙRZQ*žOªŽUŠMWª‘9ª¥;þI¡]zp;j¡Ëi›pMׇ>ŽäœR˜…jZŽêQ÷qJsJ§Ûx§û”§'¹§|úž~Ê©¨Ó°˜oZ{º5‰zqB£¡ù…žç¦LZ+êuZ©Ìˆ©0¥©6™¥Ú§çá©^šœ/9¨1é„SÇ›ˆŠuùYj)¢·¦Äóªü)–MZ«.:«´:¥g«B‹@Ø«X•À ¨:ª=º;?ºudª9©z…ýI{Ïú¨" r‘šØÚ¢Új«_œÜJUR©/è°;°5Ä™1D°›° »°)$.Ë:r jƒðÚn½7& ©Æz߉¯Ö:ž+ ²u*§0ê‹þ/v/àÚžš²6)—óI¨Ôù°ÿ9où)±ÓT±óz±|±ÓZªŒÑ±K©*ú±"«­$K– º’ Ê²±É´¨H›  ³V˜nÐ74ô¶}¢gƒÍ AwȤv°ºaa©W´ j¶ZQ²Ž–j³å´„è«n‹£`*’Åêsbû”-Ö¯ºJ”që2ÓØ·á:¬aj›Ÿw·xëˆzë­_¸ß·Œ«´.Ûl«Èöy¸ê’´×5¡I„»`‚:¸uë•k¹¸‚¹jµ²Û´©¸> ºÊqòDº‹bº›‰º«kœK{»ãZ ¤*»¼H»z`»º ¹Â;¼cµ/º¾û»‰Ë¶(kþ¼Y¼Ð븰лËËŠÀ ›¹;½&¥¹aX˜Ö{½›˜½Yå½îȹÜ+œ‘{@)¾^F¾f¾ßˆ¾éK¼È+¹íë¾D¿–R¿2#¿ª¾çºE2©¿]Æ¿<ÀÁH¿þ[»‰¿öhÀïÛ¼²õ¼ ܲÒ[¿L¬¯+ÁãKÁÊeÁ¬º#ü«ò Á„ëÁû Ây&Â%Œ» Œvìº>Jž#û³tš ÕzÃPÊÃj4m†k|£1,Š üÂát¿ìÁG[™OжöªÃ=l´¬´µ[[Cü HLÂ[ü·Î¾BKÅ‹Q©>¬ù¢e,?¼ÄU‘Åϲ»]œSElr3L·ŒÆbþlÆ#+ÅcÌÇOeűn,$s<ˆGÇÔœRœ­g+ÅâÉ ²;ÅÙzÆ—ìÈ–ÜRé„6{8Q± 5ƒ "…ü½^ÜÅu\›Ê[¶{ŒÉìÇ›ÆG‹­RêÊ«ÉøÚSlNŠÊ®nh%£L$¥<€‡ŒÈp¬È\Ãi[ɶìÊ~LÆaÌ¢µŒÉ“zË÷ºR»J©Ì¢b̧›”ÆœÊQ»ÊÜÄÍ\ͬ<¥é|­îɹËg|Í•Íp¸Í£+Ê,ü‹. ÎYuÌLÎÉ{ÇáùÎM<ÅÒ\Æ9œÇ²ËËœÐPÏ,:ú¤ u(ÞŒþìÀÝÀ ûÑ-ôÐþ¸,Ï -Ò™<ËÎÌÃ9|É“œÆ¤CÑ\w¦‚Ä>]c­½}ÓÍÆ¸|¯ ÍÐÐŒÒêÍ)ѰüÒЊµØy¨‹?k[Á±£Ó8ÁR]½‹VTâÓ•ŒÐ`ÑÒ Ñ#ÝÓï žôФçi.ãçŒ@†Ž˜Ñ!âzUsŽÝu.án¾ã.^è{^Ý3¾¸Jn¿ó…å1Æ”wŽÂæü†dȆrÅæâénÃÆ¿é}ÞžèrÅj˜Å꡺<-ê|‡onøi²>ß]r迭꟡ÝHÐä‡â[ÎZ\ë¶§(\xh¡~¹|^t èt ¹–Ž‚åêƒé‹^äNµ¦FêÒFs9è˜ÞŽºÞÛbŽã´‘#&°¡uåþ‚œ>ìÄUì¹vì!ƒëËžï¥Ûìs”ê ûò#E’/ð5íÞëòî]ô>¯÷QÇ£ï6z€œ—7L änÊt‡ZkÏþ^Rî®%D)¡0še¡uðÖNWÙåy~Ïÿ7ñ»¼PØIµ2¿{óÓñÚLφ1¯†>{ òD ì!2ZHŸ0/B±°ò¸'Ö x3»ÍOõ=[¯z©µEduྡ/sÆïmKôáÜ0˜`òÊÁ0ßîï¬ñþæX­Nnz¬§uÕ9{ø¾‚ñB—Ù3=»bÝdŸÄÔÿ’öûRíØõ ŸbçxýPÏv÷ ôõþ|Ïó¥4ùã~C?ø‰Ü‘søbø—ï ÷î„0mHAjóJ–›q»©¨ßw}s/|vßù½øÔ!ì࠯ߌð Ó×>þð*¿øoÏèp®ÖIM÷’oûßµ™°/9¢”ù~ϘÌnêÎîçÁÿÏ…øãY8B¦`˯íÍß•ùÙõ}z!—óY¯ûñÚ÷ÑÊùÝïû- üºÜþ0ÊI«½8ë}ÿ`xai‚ä©nD+¼°0ÌEmßømm;ö@ÂÏ$úÅ¡TÍg)…6©T`vª52Ná3»]&ËÕ´z½VäÞ¹^ 6¬*©Ô}Ïïûÿz€# ‚ƒˆ‰ƒrs24p‘;ZhfV\GgSeaIci–]cX Ÿ™_šœQ§˜—•l±²³-n’psu‹† ‡¼ÀÁ‰¿Ã……ÆþÊ ÅË,.Žu·p”®§hX#ÙÙgÛÛœd¬¡aÚ™Wß°«WçࣕJå´òóA¶Ó8¹1»¼yÎþÿ)4¨m`@@JÈGÒ=<¬±Âv*©Zq´Èí#È“#;ÎÚ˜òÝ`:i¥zÔ*O-ÃVy S(Mb¾€ª]«â'Û·Üö4ë°h5±xóêÝË·¯ß–dÒµÃ/-ÜÈ'd\̸±ãÇ#KžL¹²åËÉ3\ÔÆÝ¿ C‹M:tà{ƒÙÔÌZ³ÜÖ°{þÅæÜyRÄÒ¸sëÞ½ûô´Ô…eÇ®ö5q×ÃiwþÌ»¹óçÐeù¾¼¦áãØoÏwûMåvoGO¾<ïé’ª£ν½3ïîÂ?&sóøóëÇ‹>’zD«Å'`0ó ¨]rÐèR—}âíçàƒ¦Ñ. ê3ƒjרá nH‚82Tm¶Ehâ‰&NøÆfèá‹wtã22úSßC÷¡¨ãŽÏ©G… f{3BF¢ˆÒÔ–#PF9šø9Ó…Á‰ä–„pÙÝ’Ñ,ˆcƒR–i&_TÞÀ"B.zé¦H¾ÉælVŽè$™gæ©çQð^íüny؆¦ëqk/—n‘ðÚ¾`c¿A’hîÁè‚,p¯|%,òÂä5̤¶k<1O#{àa.ÿAn$“<²ÂêºkðÉi¤ûó¹ÐÝ3µ ´Î=ðŒ²þ*?Œ!‘/Ï33ùz ![Ã)BÖYV2ù~­GÍ' ÝÇÍÔÜôɼJ¡tNË÷Ð -4®Õ*ísÝO?omóîQoÕþTp“m±@Ž3ε֓s-ùå_Òé°²»}ôÎKï¬3à€ƒÞ3ÓÎlòèFMëß@>Öà¾1Õˆ'Þ‹–ÇbRÎ Õ«_)Ì_ùoxÍ&-òêo3]„ëw#=ëÒ›|}ôÓçí<ö²Óµ²SKœ;ŒW›ÏíÙ¸;À¾ ½yåí÷¤6l¿‘3÷¦‡þ¹Ý¨óÛ÷À×?èýÿÓ^ø¤C»¢ØNSÇ;_|Ò?öÄÏkcþkÀ1÷»ù±å~{È_öw@ënnÝ“õö½ (Ð& ¸@6ŒÏ_å¡•AA ZqÀûaÕ'1ãyp-:\qpÕµ°€¥saì^84)Ò°op‹ÀÞVCÊ+[£Tývèžô1x½0ûÎH¼ëØD,Nòì0&ðyœ…Ó¨˜B+®1¤»hÖŒ9$ã‹×5³ùÂqt$éçÈGj ™Ád%ß’D,Ñ(%ä£eÁ3@öïŽØ£¡EBà†AJ¤"7ÔɉÕÒŸôÌmâV½£­ën¥ÛùF½P汄K#™ÂZéÊWR0ˆÌþÒ-g)FjÎ 6¹¬AuÕKëýrZÁæ0_WÌ@Æp˜),Ø2µØL ÀRy²´¦€¦Ù-z‚ ›%ºžÏNÈJv¦“˜VÜ#ìR¹J}ª™í,Â;‡Oy–Ñ¡€ÒÜÊ–Ç  ô¢Ì@·¼M®„^›žØ^Ӹ…n‘¤»0vN¸–ºéD‹]$b lòŒ#.ê.Ÿ$J¯z×ËÞöº÷½ð¯|ýä܈þµ»È³@$s^ þ¢¿p*¯jçKàøÀN°‚X_SE¿ 1ãÅ[[E\³5è]°†7Ìá{˜½l˃!l¨Ýaí}¿;Û%Ó˜âGºXK[B.¹FJnÆfÕ€?ÌãûøÇ@VSƒþ…5bÿƒ‘dóÙØ¸ÊÅ/@4¶Üúf|A#ZÙÁPå\·Ìå.{Ù½!N[‘ü«¯Êëqe³Æ÷É1hä ùúa,óź_γž÷Ìç0›àpd>Hß|â­©Y~¾#t|èÿ5Çbβ¿øLéJ[úÃ~ÖñRíA':PhæÝçLjÅ ºƒ0ï}ÿ¼cíàհ޵¬gMëZÛúָε®wÍë^ûú×À6¯µ+µàr'žf3¢½ì!¶9Íob©Ù˜ê ¯š³’jL[ ÀBè¼|b®†Ì¯M›‡f¦ö«í>rpÉʾqmC=e±É¹ÜØÄó¶ùþÔí¸~ûÎò¸lJÏÍ_ý6òàeCx×b,oCWráÂS Ø:8I'CºKÙVžg]€ˆŒêÒ[Æ+tàZb“ÏØ/ñ¶ÌªVO–´ó¸¸A¾g‘÷È ˆ…Àášòg‰åÍ8™sÏt›æH׿aGŽóê¶aæ+"·KÞó•sШ²s»ÜÀÈ<éH·¹sž™óåš<§¯ºÊkÂppië³óúÑÁr±7‡ìNÜÙc‰rµÓÈïTç Ü랯ÓýÒv?$òîN¨ÿè· í;àu2ù·ë›è‡ºá_éÄ÷æeŸ{í¤ÎR­Öô²<äaŠù,@Q¢ç<Ÿ=¯þ¨‡¾­£_=Ve;ùNWÞågu}š6/ûš/ýæ0ÉùÎKÛû¿^õíÜ«=ûâç™ö¹q<w°|Þ7ÝϾ§`M}Ü[ÿúÇ»ô»ÿÜïƒßï–¯ƒüå¿ñéÛ§úçï2öq£}Û¼Úü‡Dó7Üå~V×sñ7€ô·Zö‡#ø—!—~wÿ×0 ˜Tíg€Â€z¢zR`VãW X.@¶¥¡y°Öx7õ}•¨c5ƒ4Xƒ6øUâ+n3‚#T‚&èc(H̵‚OÀ~öÅN…„ó”ƒå²ƒ;@‚øƒ'(Ї3ÿW„ýG_º÷‚GƒJ~BÇz¥þäÇD>(…„S2BD8;{\iç…˜rÐU«Å H|høcj(1׆P“…‘²…(‡XLh…³‡g¸‡Ö‡¦¡KWøtoyqhˆ~¥vu¨eû& DøqŽ8_ˆ…T‰Ø…˜XMš˜ˆm3Ÿ(ˆ¡H`£ø¥8‰:'‹™†m×¶Š‘†ˆa‚:Ø2'lÆxŒÈ˜Œ»ömØg„‡¨„;Œ’uV¾¨¸{0xD†ù¶…×Åš‘\øŒâxˆ­H³¸Žì_»ˆcvŽáò{êØŽöx¾µ]’'šŒß}ø9n„¸üÞˆa—7 )þïˆq½x󘬑a y‘²÷2‘™nU·‰“†‘"ÙŽ¹Xבé Ž#Ù’¡X’Æ‘(Ia*Y‘ é’8™0™’Ò¸R=É ©m99”Ö·“ß3y ôøvH”NÉyFif?éPS‰A©qO™•`•ú…”Iim5©©•déa\‰^ù•î–‰1–eù– v–4Y•ÖD—Äq•C—zÙerij§–k™ŽLɉ{Y˜AÖ—$“€Ùn)–7i˜i–¤÷Tй˜Ë†oFäv®™œi`ˆ©”i™•“™YO›Ù™¨éŽ“)b¡i™v9x)†©9›ö™ªþÖš‹ùš±›3 \¾iúx‰¢Ù•Ù–’ò›ÈIÁÉsÃ鑸RÉϱœÌלÄÉ–ˆ!"²Ü¹P'Ýžâ9žäYžæyžè™žê¹žì¹2×žÜ™Šæh×)˜+ ŸåùüÙŸþùŸ èÙ›JÞGŸsƒ º  zƒs$ úY :¡Z¡Ÿßy¡òÙ£‰ j3à z¡$Z¢&z¢æI º¡˜ù¡.ê Ú)¢!Š¢4Z£6*¢º¢Ú¨Š/Ú£®2£ÿ9¢7:¤DZ¤ì©¢Ê¢Sס>ڤХR:¥½)€Tz¥Xš¥Zº¥\Ú¥^ú¥u`¦Wj¥bª¥…è¤hªD-P¦Yº¦lú¦p§r:§tê¥dZ§x¦iº§!à¦xú§€¨‚:¨„Z¨¨§|š¨Šêº¹¨Žú¨š59 :©”Z©–z©˜š©šº©œÚ©žú© ª¢:ª•©¦zª¨šªªºª’;Tix8.4.3/docs/tix-book/fig/tlist/tlist.gif0000664000122200012240000000642207170675521020627 0ustar jeffhjeffh00000000000000GIF87añÐóÿÿÿÃÃÃqqqëëëÓÓÓÿÿó}}}óÿ‚,ñÐþ0ÈI«½8ëÍ»ÿ`(Žd¹hª®lë¾p,Ïtmßx®ïíÀ pH,ȤrÉl:ŸÐ¨t:ø¨ÅvËíz¿Síw0°J~zÍn»Ýâ·|N¯Ûïø¼~Ïﯵ~odeWimq‡Š‹ŒŽ‹€ƒfhމ™š›œ~‘Œ“…—@¥¦§¥Ÿd”–lƒ°±²±@³¶·¸¹º»¼½¾¿ÀÁ°ƒ¯¬¢ÇŵÅÍÎÏÐÑÒÃÎÊ­¤¯`ÚÛÜÝÞÜÖɆ|˜¨çèœdä{ªíì¡gØãžóé÷øŠëõªñ•ö¸Ëc.ŸÁƒwöõH2yìFl8¡R¨AaQÄþì–d QE';²Ñ؆%G•ú>ÚQ•RÍ€‘Œ(³NA˜-_^4fM:4}â´©Ó½…‹nºÆ%Ñ©,±R•ª°\H¥O™*¹”ɸ£³V}ɶ-Ö©Rsž"')Ò¥›üdÖfT©jßf¼jUðV ]ÛÐôõnؼcwš\ó÷ÕÙ¸AW¼u»V0f¹r ÝdÌæèh¿$%—5}ùóà7BÛj^{¸hâÒ6ë6žsZbj§¨Õ0ÃÕúsíØDk»Q®ò6ec¤)ƒ .öO´º±<~õ5÷•Ýã:Çc—7ÞÀ}CÕžï;Ü×ï‘»ÎË~²tÇÔ![·ïµþ=÷ð þ¦Öl®nø©W8ùéñÓ|zäßcÄärž^×Õ3a„"ÕRæ‡Þ^!>Øá‰í|È[ˆ êÇ`‹V†âŒ3©¨[?E–žËT8Í@¤ÀYäoF ©ä’L6éd/IêhÄTiå•Xf©å–\véå—`†)æ˜d–iæ™[f!%OT¢éæ›pÆ)çœt¢iψlÖ©çž|öégwbˆH›j衈î蚃&êè£FšfŽû#饘fÊ碕æ¤é§ †:&§/’!ꩨ¦J*Yž¦êê«—®ªZ«°Öjk¡²îHè­¼ö*g®{íêë°ÄŽJi©Â«ì²Yþ›'˜D+í´ÔVkíµØf«í¶Üvëí·à†+n˜Î6 ­¸è¦«îºì¶ë.¶äË*Saðͽøæ«oÄ‹ä³_Ú»ïÀ;ŸèÒW·Ä™Œn tŸô—=¿)°qSùªd>‹µ­kÄÞ°A$Œ°%ìÒŤ½¦°…Gxa ¹4Ã(ÔІü¡t88]±Œ Bâêp8DâÉiS¢1FĦå.ŠSÌ¢þÁªx»N‹Z ãÆœ(¨+ÊPŒhÄóG¸ý,pTqW±3ÆñŽ_XãÛA0^*ôÚÈôøD3òk!¤7þ˜1B–±Ž‡üZÐ’¸Jx–Tã½èÆ(n0“4Œã'¹Idn½{Ùþf²DNq…—K^7çGÒñ‹2Üà$ý'@Í©R• Œœ.mÆÀœí}Ll`Š,ÐõÏmÇÞïà8L×¥òt! &¿J Aµi‰mÏD¡ü¤©>jÂ/}²ëlÉÉ>æ2œ±Ë™Æj óæ:¹ÉGof œ¼¦ýæÉ>sŸ´ßØiJþšãTÞ4þëyN&4Ÿ å§Š>óŽÓ¦ÖìÙ=ÿ| ­¥F›ÉÑ zt•Ëä/µHÒ NM€(=ØJfBT*ò °,C»yÄŸ5£Ë´"$×vÔ¦šm§P´£S§šC¨’©TÍjĬºÔojõ«ÛLjúF°~u¨ý,ªY©ŠÖ–u­lå*.# ש¶•¥oedÉÄÙT½Bì®<µ#&‘ÈW£–”be£[=9½)ˆ4Œ£Ô`£ÊÃvm–zƒ›+_iYÈ¥³oÇTib÷¸Øw>´°[H;³š’Îx{ ßfï7ÚBvõŸ5µ(-=¸¹djϵ—EÝâ|‰Ô‰13°•…gÛþ§ºœ¦TŠÀ…(F±§ÍÉ^õ›¹å¥s±ù=ŠôšÆÔ[uåÚIÓviånðX+³èò•qÊom9×µei¥_D³è^ö™R°îm±Ðó¢v·ª]¯wÑ×Aút¦¢5®Rë‹]å.¥™U0û[XÍùM¾+Q£çÓº¢·Ä[$¯;éj⣠˜Âÿl±S_\^ËX‘4^1VoüÓû“À<6ªÕä;dEÆã‘ßšä8.ŒM†ã“¥ê×­I7½b|vé‚x"¶SŽäaCùÞç¾ÒhN³ðÙÛG3laÆê˜}xe3CWÍif³>%[Åñ-Î^,;<þ]þâÍ®|­Õ+O©·(Îfg)M™Þyy&´D%—OE[AÅ?¾R]*Ýø†À´¼ó¡Mèí–Y|Ø|4ï+iæËìÅÖœ5¿–~fäv=-kQÓºÖ®¾u~ ½ê5·ÖžÕïå>=ß[ÖØ¾n§¸mC³€Õ^.¨ÛZm°ÛJ£.Þð–Sæq×ÍVt,©·¾ß9ÔÎ<­—qÍmÐÒ”×*w4Åî±…÷ÞÕng¨Ñ}ìqò[Úþö6¦]ðMWüqÙ¹«”îÆjWžý†)d›MñSدûp67^¶E:Ê1h$¾‘å4²¼‡5ãÍs.åþ™3™çZÜ9ÐÅ(ô¡ÝçP6º‹®ô¥#]ªMWbÑ«L´\µË@…6mC¬X¼bqÎ4Ó5Éàg«Ë ;tØ!fö.Ý׾ůNNÖžÊ`Ü ]Þ/չʻÝôË|»ë7? ™6¹j#q‘ôæ ÿÞèË·ï{¦îjeÛÝ*ü¢¦ûß<jÅA>Ûnón—íчgs¢Ü.|Þïë;˜à®¯Âéõýf?§“à‹®žðûLÏØsöO|ïoON‹7_ãOO.ïlæ;¿Ð ï¶ãa¶¦žjŸ·ý-ž{ÓGÛÓï|<ùîî?Ü÷…>~ì1ºëoþ—Üá¿o~ù©¶{ïûÊífrîÇzÅ·|Ò¦PoWvÐÄw{rø5ýGj¨Ey«‡y–÷`—''Ì?õ7q)×€€ê#@¨n¼„A D‚³l Æ}.è‚Ã&y/~ñÖz˜ã€²tS÷r`Ðvº2Gw#ös„5Çt ókäuB „NX@P…Ú3…T¸:Vx…vss&Ð…^ø…`†bèçÇ,fX,;t†jè+i¸†nX+mø†rˆ*qH`ïr‡x˜‡z¸‡ÛR†ÿć€ˆ‚8ˆÝâ‡@Æ900c@$OE„iEs9Ñ¢ˆ‚sÂS"dˆ¢6>S‰þûòBu‚‰XX%àBœˆn“(j¤(GÒŠ[ˆ%ÐDXZ6Fð‡–øŠ¨%³8L'<‹Û ŠtBŒD8§B'Œ2„Œ``Œs3ã<§xsÑr.»è(Ô(3/-ØxÚŠ—Ø‹çrW¶pDÙøŒÛ˜(Ýx2#-¸/³`D°p'ëøMïÈÒ('ý(YÊó¸LC@_׿UC -ºH޼hCK#À˜ŠùhûØr‰ÿ'IEvHŠYëHù²‘pÒ‘ÅqI‹\GZ^uG0-íˆ((ù0”¸’UU‹/y‹1Y“Qp“„(“Ù\¸ˆFy”H™Ó”bH‘-§”Nù”P•À”sX•’R‡V™•Wy\”¥•^¹•–_9–ˆ‚•dy–›Â•×…–l©(j9`m—qb–rY—fB—v™—T©—|É4"‰}˜d‚—‚Y˜0ô–0f˜ŠIBˆIZWa)¹Vay&B#˜¹ 6Bi™2’™ ) ,‰#£š¨¹"—Pš’š®9 «imžyš¯Y››™2 Ãñ$¼Ù›¾© Qâ ×ð›ÄYœÆyœ½Ð <°œÌÙœÎùœÐÒ™;Tix8.4.3/docs/tix-book/fig/tlist/twofont.gif0000664000122200012240000000352507170675563021177 0ustar jeffhjeffh00000000000000GIF87aÌ{òÿÿÿÓÓÓ}}}×××UUUššš,Ì{þºÜþ0ÊI«½8ëÍ»ÿ`(Ž$œhª®lë¾p,Ïtmßøk|ïÿÀ pH,ȤrÉl ;§° ­Z¯Xišå  Ï@.›Ïh45Ín»ßð¸|N¯—·{{ Vˆózik„…†‡‡xˆd|Q‹ƒ’“”zŠ‹ac˜€•žŸ w‘‰_Žœ¡¨©—ˆ™~›¢[²³´µT¶¸¹º»¼½¾¿ÀÁ´³g®Ç]ÌÍÎÏÐ@Ç¥šŒÖt£ªÛžÚs¬uÚÈÊfÞræÜé­ØßèpâÔ¯Øîoôê÷vö{úlð}ɰ®â÷è„!ƒnV"¨&’;óâœÇî\ÅO eL³þQÃi ,'‘ÄeìX‡¥—ë:¬Wà$É&GæK‰¦'Ÿ‰xºa%t‹MQ8Bº‡©F ®DA†jTUBÍzèN™!ieTR©Ã#c'M½ZF*Ö®\ᲕK5…Ç‹?ÍZS'Ù¤Ë0í»ãÛ¸X­"Tü–1ÇÃsO¥d´aX¾iÇ™½<4mAÈZ­²µ»x*èâ%£¡L˜$ç~„ý™:JŒ—g•§ÛŠ–Zunê¬Q{ ‡×˜eÁbýB*Ø’S;KG¦:±ðàº!Ç´´w_fæËPVŠŽÝ4ð쑟¿ 9fåš›¥TqhÝøíç—Ëžûþk½ßžs?gzq¥wÚZëõ—Ow°8›rß<‡Ï…CY’`½HXÍ€óa(bˆá|TNDž(Þˆ,VØ7M¸T1xÐhã8æ8Km4ò( Š;è(äDidŽ>Êàä“PF)å”TViå•Xf©å–\vée•S,ùC“_–iæ™h¦©¦šaʸŚpÆ)çœt‚ ä‡$99Àž|öé矀*è „j衈&ªè¢~:ixy À褔Vj饘R€£wÊ3žÔ)ꨤ–*ÀœN“¢( šêê«°v‰ª®JV«±æªë®³Öê&™{î*ì°¥öÚéDŸJþê“,«±Ðfi¬ª¿âêd³Ã>í¶TN#ž¬* %V’›¦¹\¢;.·Üz‹Tµâ2[ªºZÒ{-»Ûºû¼ÁÊKå R’‹B”)Œ[p½ÌìÀ× 0¾p껜­ËY+€Âë¼ð½sœî”ö^l°È$? 1šÇ—l¿ƒì2È!‡|eÌ0?kîÍ2ŸÌeʆË2Éÿ¾ü/½9WI³ÆHã¬3Ê ¤ú­§‘þ\ôÑì±Éå ý°ºsŒõÒ^òLñ›ñ¶l0Ãþ&üõÅk×¼6Ú ›LtÑ`_)6¿Ëš½0Ü@Ì7ÛtÇýö× Ï]w™wƒ{kÙ‡7NlâPûœ· ŽþW>*äÈF=y –w>'æ9U̸ç¤_Þ4­Ç†NöÏ¥·þùé¾*.:ë®×®&èZlûîgâ‘ÅÚæú·Ú\Îû”¾¯œ7àm›:¼ßX7¼•ÉkÞ1àÂKoõõÓkY½ä×??ªøÛ7Üýΰ§ž{ÙÍÏ|ñh¯p6ÆFN|ñlÛþýâRŽîÀ àÿ¶5 .KÑ žÜ(¿ÖíovË;[þâ6A¿í­‚¼ –g¯ L`Øs`ú¨%»ÕEð‚œk›1h@ nÐ~ó+X×Èw¸š0|-´`ÂP8Àjpf0ä·4ks<ä!Î|HÁP{B|" ™ÂÒÑþZNìa3ØD->Ñxìb]hÅ>-sàÛ[áæ>jñ}Pdôà·À’;Ÿ«„G–Qnçëãæ°Èé ²ˆ”Ò!ÉÈS™ñ]%õPƒºÍ˜®’¨®*RmjTPæq©çl*OoÕ;J,­ªP¯ªº’jµ¨:UßïžúU°)µ¬d ÖÊÖ¶ºuNƒäTøÖºÚõ®më'çª'¼úõ¯€Í€^UéT´ºn§Xa[‡Ø®F㱬dƒ ÒÄra²˜Í¬f­PÙÐÂD- m‰4DŠ}–´¢MmÀa[nGµ°%j÷aZB€6¶¸uÍ*€ÙÚÙæ6·¬ý,sˆ”¤#÷¸È)­‘šÜæ:÷¹ÐÝNr@ÝêZ÷ºØÍ®vaØîz÷»à ¯xÇ Þ;Tix8.4.3/docs/tix-book/fig/tlist/horizontal.gif0000664000122200012240000000531007170675342021655 0ustar jeffhjeffh00000000000000GIF87aOðÿÿÿ,OþŒ©Ëí£œ´Ú‹³Þ¼û†âH–æ‰.Àʶî ÇòL×öçúÎ÷þ a@êˆL*—̦Ã8ŒJ§ÔªõŠÍP§÷ ‹FRÙЫ×ìöç,‚§Ýôºý€‡äy¼ÿȤÂ7xˆ˜˜aØÀHÆÕ§(9Iù41QX¹É9騀ù ÙIZŠ÷ ‰&1jÚê:†ªš* ûz‹k– ÁÚ1õ$%*ÜH\Œ|kÈ\Køféj»*ýK;}ÍQ½@ý­Ý8^Nþˆžî½Îô Ÿ­ÚÝk®b¯Î«¿Ïžï"Þ7pâø-x!û¹;×°„#gûÐÛe°>þ‡>¬ØQá…‹U›X0âB‘Âe”¥RãËH1ã´“GP#I–<†äIÁgIœ?o]ö¯^ÒPE?&múô¨Ñ„ ¥F¥ŠbÉf)BÍY“¦W°cÉ~UVÚ ™Z=+3ìΩqÓÖ… Ӯ͵—ÚŠÕÛh_ÁÖªb½ºÒpâr€u{ø­YÉ“#óµ|y1â‘ï$vÅÛ’°RÅœI‡‘niÆžuB›9ws^б9ÚÆ<›²Ú¾³55ÑÊšeW}šõn‹¯kÖ&~WwnÜÓ‹COžµõ¼æzŸgŽNÝ;øïØo[×¾wûÆðëÉ7þx|øƒ•óþ,½üõ÷ôþ #çoÞjý–Ýr‡`u˜ƒÃí7_€ú¡·~Ôè^„b8Þ‚j˜a}ÞçZ{†èß v8!Š~(b@\8†Ö'&øW~9²7ÓŽ8Ч`z>¦(–-Þ$‡,*9ä‘I®ødŒ&ðqXo 1 d“ZB¹¥”z¹$—†ù•:rÙÌ LæÈ‚“i^äÒŒ[!Ô¦˜ÜÕ¦‡™¢©Â /ÞFDƒ€ú)è -YY ø–ž8s8XÈi…¤•RZ…¥™nƒçc]‚‰äŽŠò¤Õ¨¦½yh¡“™zjŸ.üy!•Å9*–®®Yêœ†Õ jn¼öúæšbʺ ­NÚÚþc–BÅjâ§°>JlyÆ l³ÎªJ&¢_j›í³µFËß´vV›l³Ê.ê¹åvû”¸½"+—¹Öª«â»ÃºØ®…ò¹®sóÊÛã½ìrä.·éþ Âþü.¸ì­› w71mÖ %Hc{p¿{l1ÃçÕi×r,1ÈùÑ[ïÈ,_épŒ£›r¼ «ÌcXŸlÖ̱ô2Œ.W¼òÅ ãK°¾µòkóÂM¬óÑ÷¬ô±L4Ò¤õÈE6Z5µCãü#Ñ9û&uÆ7ù,¹O‡üvÑ"Güu•a;vÜgÃÌ5Ú^ÇL$Û-GœµÖ­’Ýq×tþ¢àmvÙˆ×þì÷â†ßå¸Ð„Gž8Ö}_¹sÉu)öæ“ÃëùÍŠ£\÷¬wÛëvêNËuå¬3.hæÛš®·ä½wzÚ<¯¥ûå²>õá¿Sü߯ÿU|òÈ!¯6ÊÔ?½ÑÎK?[ôÕÓ|=õá~¦ð¢“Œ=Ƹ:¤íó>üB$?íçe.úßgúп¾¿ pI¸#Š÷ˆÀJôï~L ±@°•è`í6Á j0t]7ÂVt°X ¡ 1Bi•ð„,¼C õÂʰ /|X gˆC1ÔPf7Ì¡°ÃÀõð‡DLB7Ä"*QFœ’ z–Eâ„IŒ¢þ=FÅ‚B \좿F/NщÌùÙϨŽ,>qphl£?ÔXƶ¹qŽM£‘òGÇ<š ƒk|œÿØD>Æ‘€,d;ì¨%<Ò,SÕ¹H46RcŒ¤%çƒÈþ]r“‡$ヲ¾-*C~[ %LùƒRLrm•„]Þh7X–…ÏËS+½v5¾©N–{:Ä*ó¥ÅÝùï:ãÛ¥.Wç‡_&-˜ø瘧£ë!B™Tc&»œyº\FS{€ &ñnI7m2˘ۜÛ¼‰9p²NœÐ"ß8‘yŠZzJ“4CÝ1kwÏæuSž&£§³—ÍØås–ûäÞÿ¬Y=l.Ïžå„§ þù9ºDâw¼ô]E—æKˆ¢ÏŸr¤è@÷ÖPÛ%S£ø«§0Á÷L†¾S¤ñ4¨-z-…^š+Õç9Ij,zÈô£å)FiéÒyšôyÄL);¿ÅÍ›µŸC5hQúJŸZ-£K(G 9¨z4¤6iU7ÚÔïeu¡G=–4©*ÖoÂT§îl'9kJP¥¦5k¨õŒ*P®ÆÕ«síž:ÃzW­–¬®,h_ÚGÍ “<ÅœTK'Wÿ½4±ÂÜ©^A ×^õ°“$ƒ,›Ùž^v_h•¬PQ“+šþÊr–R­šv††×Ú•¯¦e*jÙ·Z€j*·ÆAo%ä[ÙnM”¿U,m3þé¾MÅ6R˜¢BsñÜQbõ¡_-ézb0ØèÞ·ÅeQp…ûŸï†³´ÈÝÈ«òš‡T±Sâ<ïz‹ Þñn¶¶VåNlw_\m¿é5ë~§:ßòš¥‚%0aqI^O.–¨ŒÅkTGûSÃÒ¬I5ðLUêV‡Ú~…)d-üزêwÀ-åìiI¬¼ ‹¶{-ñ„­‹bݪ½f)uMlÛÏÁ[ m„#+` ï¸Àc1‚¬àü¶Æ± qaœdûÊíÀ=fr‹oüâ.©oµ²f%dËØÉö1€Áå ™ÌUæ²éÀaÄz¶«k†0M½LZ$ ’t³­³™1ìþf1×!Îåó“Alg@ûWÇpÆiOêg<óWÒg†òžìÔ9Ål^g‚/­ä¶ºÉ‰î3–ÃLgN—汧ò†íaSyÕe¦ô‡]ŒjW™ÊÙí4`›fF?•׈þ³¬ kÊ~¹×´nó¢ßìBŸø¡Üm)QéúÍOÛ׿„´sÌÉp¿'×â.wEÈmîtïуÊV·»¿]_wËÛS ž·½ÑWï{ÏÞÖ÷»“=g‹›ß0¸¹ Þ@ƒ+áV¸k‡ÿâí–¸!)p‹/ã†Öø9Žiÿäy InòK¢<å‘\9Ë/ðŽ¿<Š.ŸùÄ£›ƒþiÛ<%/øÎéØó„ÿ\ƒAoøÐMXôˆˆI¯øÒ—ØôŒ?ŠQ—ùÔgXõ_ýYïùÖ÷×õ¯Ÿ1ìb8z¬^ö’=íP?»ÖÙv·{î"”;Ýn÷»3=ïz÷áÚûŽÃ¿^†‚< ox¤ó=ñ‡_<ãϨ¹?^ˆŸ|+oy®;>ó—ß<ç5ùσó¢ éK÷Уž‚§_=.ZïúWÀ>öuW=í-èùÛ¿>÷º—=ï{_{9ø¤˜=ñøûãwÂøÊ—ó›ÁäCŸÏŸþ|Ç4|ëS^úÚ¾í»¿|îƒÿúwzûøÁPýó#ûûê÷„øÛêS±öþ·´¯ŒN/tVCBÏ¿+*øç‚ðY$yH!Ýbˆ€ÿ×(¡t ¨Xdh'è7\xä§içf~8%èA‚ÃcD‚%èZA ¨‚K` û§/øj£q HƒBB ÝÐ987׃>h;lBè€Â'uF¨ï§„Á~MˆO…KÈ(éFWˆ…Y¨…[È…3`S¨@](†cH†eh†?P;Tix8.4.3/docs/tix-book/fig/tlist/vertical.gif0000664000122200012240000000532707170675641021307 0ustar jeffhjeffh00000000000000GIF87aMðÿÿÿ,MþŒ©Ëí£œ´Ú‹³~ û†âH–扦êʶî ÇálöçúÎ÷Rm¨É†Ä¢ñˆL*O`óé‹J§Ôªu!¤A¯Ü®÷ n³á²ùŒ®ŸÎ´û ¯×ñÜrTÏ[æ[½­-è7ˆ5ÖGˆ!裈ˆÈÇØøc©÷X™8‰Yy¹©¦ééhHª@jWJØ™ qŠãʶÛûG›7‹k ºû¦ë«Ue<¾Íâ›bª7Ü¥V>zº›:»ÍµÆû´·×™ûлCF{í¸rMNñŒß'à{ÿîwìËO¾iâé¸wÙªÛ*wëÈnü×xƒ¾¼|Û…8îÙh^ºúC~x8GB÷‚ðÏŸýóퟱáøÃ«'良 ݺ›þ§ ì°|t¤@µ¥o‚Ñ£ öÆö½ü¥n€Ü ù(; 6ŽƒÖ á÷WÁþ t%4àñ–5`-†&ØšÓÇ:òIms›I‘üжÃÒõ°B?´_…¿ 1jGäaH4#q&P»ÂþüxÂ!r¨>l"ñ‡ÅñEÑ‹N#—ØD*¶Pƒ[$c«FÃÌ0Žx`ŸŸ@6pOôÞùºç¾=æ0Ì`§gº²‘twì#!U(H@>Òõ›$õ¶§DEbð8|$óÉBr2“¤^A)8CžÎsˆ´$ðEJFðRÊ[$ ƒ‚:Tú„.\e-9ªÐý˜¶CჳO¾®w4¦ /¥»KvŽ™úk$¨¨iJI²˜ÖÔf4 ÍA"£’¦Ø&&¿ÂÇX3…ð;'ñÒÉ–YJO‡Áäc-!Ï"ÎÓ‘?kf7Ñç?ÌØ‘T÷l' g.^âñŒ—KV5þ ŠÐRö’¡Œ„¨8yPIò/‹Õ(FÿfO*”Ÿì”&H/úѵ©R“,d'])u¦T¢õDé3E9RsŠP™¶ìé&sJGÌ1¨°ô'I‰ÉÄ.¦±QUâÊȨF›ÒsŒPe*<÷ÙÔ)ZUª>åª~¢êQ=¾D`k,ÅÚ²²’’ªI=¢ZÏêU“êì­hÍêS½¢ jŸz­cB9Q¬îT®4ê sºÆ.´¥‚å¨l¸ªØ£Þ´°‡ìb‹Y1êT„²\ifCé¨Í2Ö2¬AOVÓ¦r”põ$aA ÛÕ"—Ã-O§YÛÏv–µÉc¥a3Ê»ÜRö§–•ì‹|þÛU—¹ÉÅiq¯ùM˜–S¸ÃuìiÙÌׄ¹H%î?qÝb׬×ól+¨ ÚÛvÉglÁ©Y;ˆÖ¹ß%o`ãëÕ‚ºÆ¼ïu-|û+Ýqº×БЍQëÐlø¡–V@œ/þx…úÕ®lŸ›Ø”Á×­îgÕKQnvÔ¾—Åï†#Ì[]ú7Àm…Ó€-ü_¿ųMm‰C+пZ³¯E½{LãâÚuin4ÒÖ:ä"èÈ­%±’gÅ亲÷ÉG»!’§LåÁŒ4ÉJÍò’­Üä+{™c`–r\Ç|™(«ØÉh®ò–± ã6C†?F¯qåìf C–³xžsþÙ>KGÂqïÝBÿ·ÃwFô é×Vx‡¥½oz} ?‹yŘQŠ)—9Ývzjz^]vGíiM7ÏÎ1FuªK­ªS»zП~Txg-²Z#s­“–Z¥{k\»LÕfæ´°‡ ëMºÑˆþu£}ì<×7[‹>¶³¹¬Za_›VÑÎ5±Ïín£¬ÁÔfñ¨=_f ÝÜ·Ÿ“晪»Ïì¶»I=íxO¶×LËkù¬í­Ú¸¹Ý¦ëš•íjƒÿ÷–ö¼«}f<+œàØv÷Ä»Ëð†kYÈp†8®/ð7[àlù¬A>ÚŠ‹墎¸œYîá»j<Íe>¸¾; sþ#Õ9´ËÛÜóBïüÜ$ºÍ‰®æ…·qæø~¸¹Žó¢ß\é+—z±KNo«Cê×:×UÞõ¤S¼ãYºÇ±.q¯ýçh6ûÓ¿nmµc|éL§ù›µ™µº7ßzÿ¡Øû ·Ÿ<&oø‘>ñ@<ã;³øÇÂñ’·Ü+?ùËcžð5ß|#ïy–€>ôï<é1s‘:«~õ¬_‚æO_ú»Ã^£Ÿ=_oûâ>÷ß0ý6·°úZ’qUg µ¾ÊùxÍ±Ë ê/ÕÀ¶ˆjñ´ïÖ¿ãÝů%øµ:üÚfçü”?Ã6¤~¡À ù²3¿}\Á~_»¿:À nþû½‘}Yô·6Çý ÿ7øJvçLø'@c€‹¥îp Hh.*q|8Wø" q1 !ˆ€²12Ês‚3S4‘[`%-˜Vû·€$W94x2/ØèõVøpvˆPÏ@W@ ƒ!Çöh½‚.˜ Ë·„è|S8˜h¦Ç{5Q{YèwXÈ…··…_¨ ©G…eh†fhbHåq†m膭§†¾P;Tix8.4.3/docs/tix-book/fig/cover.gif0000664000122200012240000002544207170672122017444 0ustar jeffhjeffh00000000000000GIF87aüÕãÿÿÿÿ‚ÿ‚‚‚ÿÿ‚Âÿ‚‚,üÕ@ÿÈI«½8ëÍ»ÿ`(ŽdihŠé  ÂÏq»ôlϸÐÓƒ pHt }ÁÛ͘<‘L\qš\R¯Á€ÓÇ5v¹¹I†òμg,S¹ß*‰›íIïÊrµÛÄFûRh|fN€…cG@h?Kƒ_v‹g^”TuW—Skampor*,”|iVˆjŽiQu—¦™¤yl~®¨O~^±–D¼ºÀL±¤†O)/(¡ÈZ6¾Æ¯€‡À`Ò›ŠœUÖ•[²z³JÛ_œ«ÅwÐ[l³MσŠUÍÉËZ§‰…djce3Hà‹L`ᆀ!¨¬h¦" +8¤àpㄎÿ@ ¸H„¢–ˆAÌÈQ£Ê8 8Ô•+cñÆY*œ­Ö 10ràÈpBh ©SB¢ÀRÜd PpàT¨`™‚µÕéÓ²fH›µiÕ¦\:–`Y¨k¡¦Ë–¬Ód^-÷3˜$6ƒâ©eT0¡¼ºÄ=P´kÁªzûžÕ6¤W®é®][µtÛmû¾uëtuÚ†@‡ÖL»væfW x¿ÇAßr³ìFãn½„c¡<@®e˵£ï}m· jéØÝb-ÝPìÝìàQœÞÝôá_²Šœ×©Œñ à“Ð;¡ õ€ý¸Ük=jf¶Pa¦ÿXV÷ÜàÑfZk)äÇ_Wà(Þv¨U5J4ê¥^aNàÓL Åeò›0þðÃIrÉ”@G+ªäW²yu`W1.#cAkÐØ AŸ|òà~3²äbA*%é‘T£<·Opª¬R-Þ¢{Ü$ +D\dß—`†)æ˜b*`€™ ¤‰f€úYÇ‚¹–`t^ ¦Sú±•§{òÙTš¨‰¦ ‚îfh:­LIb9›(ve ɇÉ¥x!™—Úç瞦y¦§f¦E¨ iŸL_†„Vvp†÷V ˜ê÷妚²…槣暦ŒpX £¾ÕðèD¾ÂçË”™ÆzW¬ö)P&ÿ r‘ª@Ur5w_\«Î™ÝjÜ5“êdùaÚªšŸ:5¨³²6Ë«#†eF£Ä1† &¦hª“Ý—,™z]Ê'nf…«©sBFem˜¬ÂõT€lM¸U…Þ2{gSœòùeš +±pÜ›MæŒcï4lìD,p“æRe©ê‹_Ë#¬°wY™¯¦DúG[foMÕã[ÅvÀRö5wsÌÌ‚•g¾|šp¥T#ˆ »ÛÞ¨ˆˆ—â@qQ} iØcj¬)µGv5d‘l·mWT0ºÈ,µúAËl¨‚@î`DEBȈìšX5VpY¶{là†™ïdQÝÙ²Y}þiî™\]Jäÿچװãþú+*®äžkú ¦YKÊvX);,ö†c4%¾!$³¸2[lqº`:+üib‚Ëyçš™†š[C?þ²ï²šY·f¹^~®6¾r=Ï!ðû! (?–ƒæš7îòÑ×jn @šÀü$òÉ¿¡Ÿ©úN>p åúîÿž£:Q>5@ 9Ó8Vë0䘫1ƒvác°¤ }ûcÊ·Â n0gß‚KgV%ž­¨¦„‘ó Ä ¼1ÁcƒŠO*º†œ'Uc"8lFqŠÁÈCækáîv‡¾¸4‡<“–œ7¤òufFk[ÛT2À¦àÆh‘ÛµÂÄ"ÿowN‰xø ª1F€Ãá$e¬)D%šx£$ ”¼q!H@D|x8Ò" ±áà8@ä…tc½ÔašÀ U›Á#ó²EÚ.9»ˆDb’á½ãD0Ÿ ¥(s%tèBk˜l(µU’h“<~õ«O,#'?¥ø¾AF]öc _dX'²UÚÄ@@ 5 ÁÆ,˜¬ìå<92_ÎË•¾¥ mÁÊõ˜±™Ù4f• çpRøHccÐÈgRsßCã9FÏͳž:¹g=͹ƒà@íL†qöIPöô ­ç=šÐ{rò¡uŒ VG‡M:jÿvíL`ëÞYˆ‹®@=hfQOa=Ôoðg|b,1 ‡¡j,'d©ùfˆƒ%ɶ׈ôhˆGMLùfˆ–‡9£0FDZÀb”jiºÐœªç7¦ÌêÈž´5ø­v¥¬f/žZÆŸ^²¬¹ '(§Õvð@¡2EÜ)ƘJ±ž•m=Ì9ÈZS¤FâiÝȪ¢d2¥jÉ]°L+.Õ‡U8ð=V¢×a¡Ôª)'©ÆRcÚ½sšEèl„ð¡DÀÀ©]«a½‘ËwÁƒ®E½ 6ÿê¡«Uq” ¤5˜óy&," Í@–r©À}\AŠc ³*¦èlfoÿ"®û¦KË,Å“ÌÍŒs»´P÷»Õ…ŠLŽ:ËÙ øð§EÈÍW"6­>ØÜÊR•¼(…=[\ºÎì;ô«_ƒÖ–­ºd+À¨qš;²F1¢1¦çh³$ÛÂ@!E3òíµÅÝؾ òï¶N£•ÖlEFþáK€ãÄ-òðfÁ'1„ÃŒÇúD|N-f\–âœqwà Sh‚{ൠØ5õô1ÍŽ¬ UÑ}Sc]9Ì/Ôø–šÔŒ¯ð5\ë[[|ÐŒzܶ¯°-FÀ·|D•·-Åd>†}æŸm2±µXÏ».Ù˜g~t—¿P,FP$6LýN È#ÿn\ã™´‰Y*MZÈò>Ö¦&úíÕŽœ)­DP-¬eÒbÑeÉò¢ãº}Ÿ€Ù4×23ä8í¦"Áè쨡ʰ…6#Ž„_ ã]¿–§#İ™$ܯօïgêdq=ê°‹;ºýðe ÕèF§¦ÌedHœ!þš¨¨Ä9e‘Õ¸tÅùÎOYm¥å­<Ϫ¾º«óª°!”UŸt±pS¿+®¸D¬òrê9ólnsØã‰èŠ_ê†7R´¬¸m)„ÍMµ2Áܱ‚¾Á%÷q²Ô¾eÝaÔäÊOëãSéjÕ§PPQýjlu* )•^¦‰q>÷8ÝÄ¡í¯X¯Ø€v-­ÿ3õ+\C>s·4û·d Ó3$–r? {G*ìÓz6oG.Ö6zÂ.Ö€CXp×Vð3DI3&7Ã4bb*.ÇEÏÁ)ȶ‘øG‚Êbq±'tç¶+B±8TrOãQVŸ”hD¨hS@é"‰6Ñ7úDa’G @zu€t#‘‰FˆDºõF•õH(Ñ7€GŸY YpÔx¶T[ÅZï°^ÿM$kògMí5“N VF Ä(=µ:1¦‡ï0U: ;‘"Myˆ Ádˆú&%éñ Tc5CÞ°VÛIÙP/­•~QÓJ‚ÃuØ×Ôÿˆ¨¨Vª§Š 8ÉzK§~¨ˆŠ}Jï‘MlmÅ)¹˜Š¤Ä%Y;Ø!.à Ê2òtÎPÊÐI‹aÒ8ÔXÖxؘ"SÜÈ×pÀîdP84aÃAŽ%R5ŽÞø ☋VÂŽ~ÆP#…S§eQt UìZ]UxPŒYsŠì@ER^æ°jþÆ ¾xZ~Cú¨öÈŽ uRE[ÁòWT"u`…JÏöS’¢(£ÄV ùLx-…z’‘êEPùwkÐOQÕoŒˆ‰©~€õ‡%‡Vx’×0K 2”e3ÄwÅ4%,©Z.WÈxUì×+}HÿFH“Ã$p5™ þhIv‰ý(hy¨M¥O´x2&ÙJzXÄHYYeˆ"#78TבwµøIÛd"+IеUŠ'CI‚WDILðATøæ†çU;…wnù–¬³eò—Uwzà( %r„‰[‚ù¿äaùx¶ZÀ¢‘M'X¡G•t%Kt9“5É‹zWQPMjÈ=öR—"’ &aV‡›ÚV†Áj©Åw{U^­hY Ä%Iÿäš••rmè±g:dx†“T*1™;ðØ|\D@Ä#ôTEáLY0Ç1 Ó9‡$†~tH¡2‹`F©VW´ägÅx;™HHœØ-pÿZÜ5Ãu\ q\•;ÓõH±wÄ%]š —Ñ E^Ê `!#wG;µI}öoª•Ÿ‡µ‘Åšfg0â \j÷sô´ Ÿ1hi† y!yK1i2ú\)„£Ï¥£Eúò£‘v/ ^$Q^«™Wõ0¥ô¹ˆ©i• Xô mV_&!Ý4&æa¡1éÖ£ã'„-ÓU`HJ?SâASˆcƒ…ŽìÅM¹‹o÷5i¿– vq\ÚE†r¢¦ô£il !†{r¢`ë’rY¦i„ŽtÄQöɧTà æÞ¥02ƒ¿õÿõõ p‰ª{¯Á-¬¡<ÜÁ¢ŽJy<£†Âtw(N4F‹—j‹wå•FóAǨi*rÈÓ-¯š_?W©¹áb6¥)ã‰EZœtÀJ”^‰mÒ‚ýl…*p¨F– Ó#A£ahJyc!åQT¢·©l©—Šq8»i^>@ûê©ø!BÁõc;ªBFfD†{Ëó '&«å*°žƒ_ÊódWŒÛÊ!‚xŒ¯yzËd^íé<žfOÄ9ÒÕñ¢n Éš¨="_ò £3Rg¦ê2>Aµ§@A­ðô=Mœ8 ʇÄ{ô­-;f'Û[Žö[7ò#mÿ'Ý·²]êxgFPW›]<2üe,œ> £q¨“:¸|Ü­¦4ª(0‚1ÃÁSÅ…Ü¿9iÂÓê¹î鯝 A´©o.‚œ?bã¬g¡*äE›ƒ¤<ê µ®~Za Êuü¯×4wÍ•ô› š‘W‹™–;‰qw¼…ö[aC6¾ÜÉ?| 6j]¡ada»øã8-×z°Fì)a‚‚3-臹¯“!®•è`Í¡OXI æ”…'0ÌÜÌÛ˜¾žR mǦ›1«Òº¶»û•i³*å§k!(A]| L.,·%²ù&}uÿ8)<¼§t ØFvlklº¹vNô¢ÚÇ)›}™Ï¢2ÄÖ»lä4‹•ˆ%s¶M)„™) §ì;7³À”c¿¤ƒ9Dzo­®û„ÜrœL1ç·¿C\|ƒQ±éZ' M¬™#Ü©8üÏ{ 9‡ÊT<<¤r}Ì;²j̻ǂóøD|ÔS=éK@”\ŸþȽþ6d釆À"HvƒœÈüó>kADå<Ê’W0¨_]”Ãæ;o•ƒØúKÔ„tÉ$&”ÈôÚÐhœ¬è­. Æ!D††&g}8ƒ6Ó¼ÅjibªB3wh B~T.¹‹&tÖTÉL8z:Y¢ÿ5H CK>ùÞöÌ×óÖ/¼#_ç†nœQg]Œ­Þ7·&µVÕó–פ:4D­:¹‰@Áå¤^ùj ôgsL³u.$£ü'ªíŒ}Jã<k€ NÞ KÈ­Ýšb:º{á#Çš\¥™¹ÉX–ß¶w»ìÍ”ÍD™3&3ø¯Þ¼]òs×À†d¦!4{,4}]÷)•Û•ù‡5¶„%W©M´ ДÝÕfc=Õ'‹ÝÖñ 9§¼Baâz¡ƒä5˜¬ _. Ù|D(Ee“}td þ%v÷%Që>`¡ÖU]Q˜•»…!qG¹0`’þƒÌ‚ÿfÈ~T¦¯œNË÷‹YP—ÞœMÐ…C€GpDë°ÞväwdGa(†€„d0Ip†Gõ…ȤçI0Iå ÒÆ$c ;ÞûX}×)¡[`(Jª^ÖŽM fìÊx¥À [Е [ßN2ýÖÔ(Œìþuu™Ì­É“‚åÜ€ã“*w±Ogc¹ÚîÈ é¤•‚´«˜ŸØ®cÝTÀ|x› ™|ù—çæôªØÖ´’”P‰X ñq´¿‹C©¯¨©YÁ!¶Y¼Oñþ¾òGɱPÍSŽù—Ý~eËœN|¹N*¼òûJÓ¾¶Øð–JÂ,ß`ôòoµì£äÿI¯öóD/Ÿ›Š@´ˆ¹ZUÀvyî'ýÅq9„X~íæ¨çòMá„á)íÔœt!½êOÇOÝ@kŸ ˆs2:è´ö=~ ßH³Ë¹O/uPAŽxZöŠ/b¹øsàøW‘?ù”_ùeßø–Ÿù‚”OSµXè´NÎàùˆhÿõñdz%a&QRÆá &…ùš¯ú|Žˆã¨øƒŸŽý;4ÛOR…S€yŒ€5úŽ’QiÔ²¼R%#üùˆSˆ(,êÄû&Ucìc}—’:ð÷›ß#ÅY é~^õÖ4Áåb+–h .ÅüÙo÷iÔW É™ÜàüÖ?ÿ=@ûõ’uÿky‘¾iñ0¤ƒÚzñ¬}[Mó:¡,GÔ A£^–5Åñšï³ fNÆï]@8$…€10Xî~OŸÀ)Í@W—kUËô>4Ž­ žÀ¼ä:ƃµªXðË+×ÅѧiÈTI#&¦¼¼¹.•³/¹›Å:E¯ «»3ž/»œË¶¬ÆHÐ2º8‘*ß>¥¿")BԵ̮Ы9OÓ,¬ËÏZŸÉÜÌÍbϵ]µÓ`+YÔTU"V"WIN›áaßßÊgäÄ­^Ú” â­F37»°Ýu³òxy’ÓÆÂéiÀ!kÓìžIÿàÌ£ÑéÛºpˆÆ©©Á,¡3trÿÒ(Ú4Ïb<\ö‘’¿%´ {4IáE.°N¶ƒÎ")g1LÔJ”a»åªãª}B¬™“È+`K]‘Ä%­ùÙ¡˜Ý`Æ‘I㘕8«jÂöîNG ~öñY²Â˜²¬cÚ §ÅœÂ–ŽÚk»0íÄ‹fïj­¹ì`²·Aôízô‘Uz-Ë1,èp.¡R¢X.XwäTyù’[ pq1Àuœ ®&ë­âÍÊ6†f¨ä¿w]Ÿ…›M2xsbÅÄK&h€ÙHƒ$%ŒÒÍÔ¶–µN‘ÒCÙPéD.el›QÄ¿ÎÒm =¢ÁG‚ /È‘o¸8™.æÛð„hä$ÿɶ:-qßÜÚ«—¹Í”²³"¼>"¯¼øB)­½<'¡É†2O,ªÐƒ '¬0Ã䩦0m”°q¿WŠbJµ&~*p¼A(àÐ8µfÉë˜Y”Qh$àG zì±¼†4Ñ ¶4hbFÑzb ,Áè”ÛC9KÊK¹†äN(ɨ ¿Ó°da‡xäq€ øãM({$l#ð°ƒ;1dÓÎ 6$k #Û,²  ÍM”È „¤óÇ!M´ íâM?ƒ[¬;¿”ÊbIñŠàm+¨Œ§Çò`Èá\ÕU‚J"V ¤õÊFƒÒÑ% ýÑ`kÿ­µ€ QB‰m3Y%èaQG{ô•` €Çˆ-ôPB‰ ¶ˆ43K£V0‚CW*u“à9…˜tØ_­¥öÞD“eVHé=UI%µ7XE -ôàdøGƒ‰ðÑ…­WÒ†NØàDÕL³NPr÷ WÂû ]NHu!Ïn •wh™Úƒ¸Öcó)bÒbžyâB žÙZ ­%´Ú€fø`cuU”`{afØg‰vh`‹¾—Šp±K Z bä}ȼ Àx¬^š‹-¢e¬vZê´¿%"m#ÆXh¦m»Þjáºj¢û<Øî.4ï_}ü^©ÿ¼Z ˆ|ò’“Ñësƒªh"ÿ°Ò àH[¾¹í¿”eÑUI=`Ñ%ŽšZ«gÜô¾]œvÓ‹-_ׇ½t™af»Ú·}r‘Ë) ]¼t¬ÉFí|s  ó´!}™Z—…¿½ZÔû¨=Ò¨…¸ñØ¿ÿÞöõW? ià¥N_ýÁ‹7^rüUR¾*“ÒŠÉÄ4¥3\ ö F0íy~Ã#Bßð57ï™Ov@›ßÁ§>–É+{2[ã·@û Îe”kŽÇ²š>ýéy´ÅÇ®BhEÌw´`µxG¾b‘®[~ûû0X;‚onÙÓIWCÁ…ð~ȃB]Ò€Bÿ&T4á†Rª¤ìqa T ᇳœ%Q.##Ûh;4}>Ä5˜Ã"z±}Tõã®uÙå!)‹vL¤® P†j›[ãäh4îÉKbm(ºáY°Œ\c Á¥Íîç‹äíì8›}lÿÃ@áÂŽeÇZT”Úø¶I rñWÝ3cîÚ(Ç4–s £!; Ë5.r˜ØˆVÆôS®p4¥´Š|Tù® mP†¯„¥Á×»·q“æ ŸI¾àѰš@Ä’òC“›ˆ4É Õ2«èÌݠͬtÝ8;h:l~°hö"7wI¾v‘Ÿµ¤][rñÌ¥²,ÿà Už8*e`Ïw‚Œ#5å(<á…±wêc$.Ýh³œÁ~Uc- ¹¬ÄfS/d¦‹¨ÑhY,E³÷>:P œä Û–S’RR îˤE=úO]ZX2ÅÍØ6ƒ²€<”:a7ÒB,Úmò¬¨Q'˜MŸn´izÛ). :¾q¬›¼WëF-û‘>Tdé$Hó°‚Jurå-V¸ uÅ#x­êG ¨nt5±UYw^ÂÚíé6[ò“?Â/EÃÈ£D!›ð„c•BEÊë˜Ùßz Ò'©ò£K;ÁKL8"`Kfqe¶®iÖÊÿò²º1Vd¿Àˆ`id¯ÀîyËŠOµ­ª•A¢,m¨:‰\1[2IQYÌâ<‹FåøÕet² 0ÒJeÛ'±ª–-F.ËŒ0£ì͸K·UÁ‹ÊY̲_¸Ïž.ŽwêäLÿ¦'dˆ…3!W3«¨«³ÍYÑï[t£`Ï~ ¨˜_'´2 ÏEÃ3sù½ÛŠ´T®V•q*8œ@”®¥W½j£Á´ª H|·“â2™/ôEæÙh`{ È"«]]iµæw6¤$?C­ßEßίvFµ±a}lÁ­š„PVÍa6ì‰=öö™¨ü£h-ltÏ™ØÃ~µ\Í=F“õg Ž$Ùú²0Îyž <õ¾…ÓW¼Ý€TŠ˜þ]Ã:] w(ñÒ—v)ݦF÷±þjxKWœö^ìËgRû[}ý>5ÀÝ}ñ‹<¸rå¶7pðµá¸®ax L ÿìs—šÑ¿v5¬Ý}ò‹g\Î?­!Ç·‰ï›“ºß¥þ7ÉemŸ÷<å'2Ë7<€8ITÌ{ŒÐù‚‰Š6ÅwÞïGè‡w_å,O$N²ãRÀùÙ÷Íh¿bûçkOûÔzè«/`øàº2û¸ÙR$á|EwÎwÞjb}pAoöðûvè"ñÇ Ü¥ä„ÐèsO[ä}³8ßQNpî§Sܼ6B¤Ìc®t\&{Ò-H9û^ë6½ÀŸ®€¶Ÿ÷F_àæµÉÀ‰ÛY“{·øéQŽ—Ô5?³ÑìɃø— e´Á6ZîÕ-zU³åÁO+îÅ©¾åsÞ–•w»°} ùvÿ“^àÓ68“ý…ç!×TÝÌejdQ»½ ÀE[7ñSµ€#H±ÐK¶{£Ÿ`B&h?÷»­æcµ§ã»i;€˜P(»#|Ø?¼r*T Üùy";`3Àb{Aà[Àúµ›ó*’Š@–™@*#-Û«2f£–kó9ùûðãÀOB-é…—#® ¡+^£‰kéAE£Aj½"Tºa+-K𧳩Á Ê® Š4Kµò½Ä)˜I»yŠ?„ wI§îД34»hˆi5IÁ\´*Ü@;ã½k@èJ±å¼óã'ž:뫹ǛA”+Àð38ªÃ o“©Õsƒ»·ÿ0Á#ƈÂ=ôCÜ9˜©#5aiº¤³'ZÒ.!Ò®$ÄäcºÌ£²U“BE£ÄðÀJ¨Œ{¸6¸+]3A^®ÛC\Ì*ï›AZÅÜ«šÂ<‰B?zË¡ö ÃXL>½S\µäS9@«ßRí{Md¡â’)Ü3-ó[ĺ=¬²TLÁ›Ó<`Ò-ÑQDmL5,»t³¿*!´ûðDl´LA®‡.ÀÌ+C=œÅ´Dñ’Æ=´ Œ¢£4¢¡ú<‹TÆt;ż{AS;7å;‘¦²‰êS¦Ü5´0†ˆ\A³È$»_Ë›“œ,¾¨i#^ª,#¸$>üHÿ3D[¼—³³<¿:Ï©¨TQpž—BÇìãpGE»Ç~”·óÙI|ÄØJ¬Y‚E#J†ºyìGeTÊ»{Ÿ“¤=Î8(¯@²9tI&ƒCËÁ { ËÜÊ­üÉÒÆ9sÇ™„,§Yš)º¹$Bɪµ¶d|;·|.¸l†½¢Ës²Ë–\²ë£µÁXaKaƒ–ü¸K­„L"bÄè²—3ØYÓAK*ƒ¶Ó,-¿‚™P¤Lg!B¹Ž¹ô¶–»×óÌÃKÉ&ƒ2 MtûƒD=Ýi×lÄòcÁ§ +|z1š šúª#;Aj~œÂt[µ¸õd°¿Xÿ_œépžá­¯“=É 9`ψi± «1îb5l:EÃ0ЕٮKРdдQ™ã[O“P#xµ!PO!XÀ⡺=À‡é;àŠª)èLÃ[’#ù„N)ŽvDJ[¤Ì‰?ùÃÀø£­æ ¨{R6D´–猣Ǔ¿ß Bç;½ж>ûÐØ@ë úœ“«D‰@¿äÊ‘ÌÅb»c“<¬BòD¤˜iã3+BŒš¡C»+Ò õ½âyŠÏ° nû3õ¬äÌ#‹0,ŠÒ’ܽI,Ii›¼ŸËRìÙQVúª/"Û›Á1U Óë=©»¶¥ªDN41Ïá s|Ó ˆ‘ä ÇlÿÌÝųS Ìƒ?wË!F Ô.úRõ;ŸÂŒ·xCµeÔEÒ““àÌH(q=ªq³*þÑ àÔ¿ªEð»=Fc»1,UÁºQD” Ú„L-=Ö¾6É‹Qßc>W;)…l23¹‡Â+Ñû4“м¬6ÜAZ|KI´8h|.Ã$:kÊQÔéNݼ»im:J{ „¿›Ucs‹±Y‘õx%U0þSGNDiA·¿ÄÂbU:vK”¡/ü§z£Ìiô·|Å×ÑËÀ‹c¾>Õ6¹€(<ÂÌ©Œ†}ÉKU%£”B=ìC"„Áðë4VmËeõɸÃ. ˡ³×ÈöS‹U¾ Ùÿsj¹àˆ<Ù%W«„I– Ït‹Ha#6ªU5ð—|×C¤7ú(Ôùž ½»“º¦›<”Û»“KS‡pß*ÙZ£T“•Mƒk‰¦¾t»,ƒÚƳڪÅÀdmKz,ú1>guűÂ;u5«íÉÅí½]5@Kí í†j‘¹]S]QËöË2ƒ ÉVs·Il$ˤÀÓZjä<¡ Ÿ¼õ¾˜Í;ôƲíÉW 8¥‚\¤å³¾YÚð%[Ò@ÈÜp˜‡S~Ä}óCÒݼڤƒG›B]®…À\úÚkÝšÜ@Œ›]TTëÒZ].bPBˆ" ­I¡?1X¹ÝËH=Iÿ2¼©ÂdA}³Ò>UÀ`¡¥ökGŠšÁÄD Â(e¬û_O%Bb+CÍ;,µ¸w‰=r-R§ì>*Q®›[\U®y<×¾²ÌQ£Â¥‰AûuW—å\óKLŲ¨ÂÍ0Ü›4»nøÌRƒYÀtWeDœô[?Gê'42J÷‹Ùœ¤R¬í»®:nÓ;˜* ãaÞºÔ™ÛÜ¢4µÕ”̱bM|2Ý›’_áë_fŸ_RáÃ2Ö|F†¾å@"cê­Q0Æᵈ†Zsu؉ ½EÌÛ„ÙÙÍ&jËŒŠbÚâÿìLèzÝ´!"V¢ŽÍñŸe(‡Ë\cX)NäîU,;OáÛ*¸køåMî‚EU]åÉ,ãÞìÃØEã]wR6¼^ù8cNÕdcÝTÈ«3¬³:kGïZ˜iÜßZ$Ñ ¡1Ì[xìMžEäöû99<åN쌅BÈÞcœH€5¡*I:˜5Ö\ÕU=:a$:18Y•.äáÑüÚŠi"º]1›]!-ýªââIeÎ_è:˜4½¿þ% Ù¿_ã'uç'yzRÑB4#1’ïMþ2 iDpçG¡!Qi@˜F /f'%ÓDå:|˜ž¾ÿþƒ¢$Ôb˜S!Ï ¢ö€€'ÍxRñÍ€8•6 ”ù¸<±êK€;Qi¯Ž’;ñg—–®š6kšk´Þ†g(‰4()V•µNëÀkIuŽ’0™í‹oMêt4¦•Šºîg³æµNé ˜i¢i³ˆ±F™ h;¡½»>kQB¯~x…è;´8\ b€9SfçÄ“B6é³^mÔîgÍ^ǵFÀÏyxí½¦=ͰÂ6ÆS mÃmLírHk˜vÚ öí 2ÀmLü»á<ßåÏ߆[B¶`â&îL¤Žqý#åa*rLG•Œ`ê¨hÅ;“ü‚ÌnÿöFfæd[í^o? m8<¹L8ó–¯/Ø¿¦moÿ†Ið†„…m“q¤p¦©e;<¸oKoõ6í84çÿŽðZ¸ŒøÚ…¬ãV©Ðp/1Ò2Q [ ¨¼CÑÇ#HêcpdþзœZKn4¼Á^6uBärŒù Pç6mñüvJÍœðNð?QæÍ¢ —Ó¢+ÿ:ìcï Ç:Iòþ-‘È\P6‹þpv¶‘…TG(ÿ’8p4goðã¿K/$¼¿Œles 1s,OsäÆóìþ°§µ*YÛÎs·ëžq§ZóøÖs.ß;ÅsEO îa”à×äÈDc9ô­à†7ÚßJñüÞ’^íàý«èïA·t"$N'„2_Yu17ïJ_p5ðL ]ƒò¹­Gêàñ‹Xÿº© &½„øÀô]˜bïbf2]#äAk¯I'%Å1à- f¿¾Ï”©LIJŒ–òö|àƒÎ¤O)wÏ `¸\ç‡mGßRjP™-ððb² u÷öAF°‹þ‰~W…‡9÷wøÙ liøw†gö­sp~x‹¿x‹xŒßxŽïxÿxùŽ€;Tix8.4.3/docs/tix-book/fig/container/0000775000122200012240000000000010767576212017623 5ustar jeffhjeffh00000000000000Tix8.4.3/docs/tix-book/fig/container/sl-nobar.gif0000664000122200012240000000370107170673062022023 0ustar jeffhjeffh00000000000000GIF87aä•òÿÿÿÃÃÃqqqëë뎎ŽÓÓÓ,ä•þHºÜþ0ÊI«½8ëÍ»'Ã'Ždirᘠlë¾pÆtmßx®ï|ïÿ2Ð5X Y³£rÉl:—ÉcQ>¯Ø¬vå¥Ö­xLÖvÓ° Èn»ß!¸|N¯Ûïø¼~Ïï·A}D_k'…†‡ˆ‰$‚TA>ge‘’[8•7]iDj:—“Ÿ \œ9ž5™ƒ¥4©¡¬­¦£–°˜jšŽ=«®-@»6¾¹1¸/Q¶H¨²6àÀÎ=Ð0ÒÁHʯ-×ÇkÉ×®ÔXâÕÌÇÚܵÖßÕ/»ïϼÎï¼ñ,Àóð÷ò䬿ë,ÐDÖh ±íöéâ§_=‡ íÅãW¯,ÂÂ$Äþˆ–ÆeÜæ»'bɇªlWÉÊ6Å@"TÇ1 Ìš %êÔgžÉ}G&l‰$c¶›§ â4'd5¡UÊ;9 åJ–Ùµi*·[àš¥„8ÖO³A­FÄÊŽ«*¯Jÿál'ô§]µwsÎíô±ë̯<ä’!›v%TzWûù ³ïÛ¿q“¬·r¹ÅêÀõØÖ²gI˜)oÞÔù³i1¡KӌÇ©Ÿ×°cËžÇuí>´XÓÞÍ»·ïßÀo»y0À€ñãÈ“+_μ¹óçУKŸN½ºõëØ[<»÷ïàËO~:wîÆ ¨_Ͼ½û÷ðãËŸO¿¾ýûøóë߯_{þnô È€h`ø×‘ éèàƒ˜ çå–=ÀVÐ!F(âˆLX!ƒ2¢†Z°b¾Ø=$Öh‚‰ÿY˜â+ʈˆ„¤DZ€ã‚2t' lø“ ÐèÀ‡R6©á“WW¶e‘`fpd’.e“1Æxæ—P 9åš]ÆÉåœo²æŒIŽf²¨âŸ~èjÂ9(œ/º‰ç¢èÙM™€²Yh–2R‰¥•~RJ'¢uÊè§ 8ºš’‘:)‰N™j¦•~¹ª§ ~***¤Ú©h«˜æÚ¦œÂªh¬±Î ©­€žºê¯»Fþ™f¯™J ,°ÂòYj³“V©µ®¦É%«¼Rú,´ ’)í·ä–[A´(öiîºì€n’ ¶+¯¹ï"ï¼ø‚KaŽéæë/¨õvsᅢpbø$® ºXðà \«§ êp³# q"Üã_péÆv¼#ÅYf»íµ#o‰e•N. #ÉšÜg2['²kZªìÏrÎLsÉáîÙ/±É zª—TëªÐChó´·¢º²Ê¸Z*eÓ°v5"S#ݳª¢ºs·\c<í×ýè¸('«k×Ç¢ý4!³=BØqMíÙ¼V›óÝ^ê­ßW­ìÕˆ¶Üøâi§]¶á‡þ NùåXŽùæhÎùççº=êÀ —ž§è´’núêxÎúë6+¼pá{ø:£ˆ<9Ôµçí¡ã·cûÜŠø^{×Á‡¾/’öžœxÊ3Î*ð1ÏyiÌ@ëj|ò¡¢>,Ńÿ)χʙóÒÄs¯ü‰ð:¯»ßJ#/·âÜâ­~‰ÞÃýüüÔ[µÿ›ªßîî·>~µïfÚóÕ«Ì6>»1km, óæ¾ªMmóÛ#7ÀR`x¥*ùtÖ@ Pròó`@è¬éIOk ³Þ¶8ˆ&l©ð®»¡Þr¨Ã¯ñ°‡Cû!I&Ä!B¬ˆF,Xìdç$ÚI oÛKbæòw´¾AÐþ‰B‹"Œ€gD¦°Z¤]ƒçE]Ï…³¡_vFë‰QŠ (£ˇASÎ|&D_ú†(G§]ÐYl! U5F2Rñ€T¤aÈ4VËkìaåÆÀµ1î‘Ba8I Z‹˜Ì•&É×ÅC6!ôdÝ÷¸ =ÐŽpŒ˜))ˆJA¢1“ýËã §".òq–s^,i†ÄaΫ˜Æl2“¹®e2³\Î|æ·–(» ^¬aÒ,D'¯¸Éš@z¿\ž¸ª¸¿²Eçd]Ϲ4öokm”Y#‡)Çð–Š<Ÿ í÷GNsbå›RôÛ-›Ïèô‘¼ [Çoµ|N¯Ã©îœtÏïûW‚ƒ„…†‡ˆ‰Š‹ŒŽ„zS=2–—˜™š›"“b7lD¡v¤¥¦mqF£Bdy•I«§²³´ ©E±@­”¶°·µÀÁv¹?Ä<»ŸU¾ÂeKÎAÑÌx¿C_¯=¼ÊHÆÔDÓâHä;æàËÞqÖ=Ú Üß:òé@è\÷õªíNìNïQâñÓ5PŸ=gÑ>»pá´‡ Ç!Ä¡0¢AQùÓÐU¯þÙ>^<"N!ÃgOª”¸râđ׬QЈcà€Žkþ 3\ć,ƒ¦jqeОy¼¹¹ÛÎnð’9åÈéAŠ?K¢4yTbV¬Vû)EäSd©°–‡V¬_Q=çðkÛ²:"IÁk§ÔŒM÷$—Ң˷oækKï]_ž¡î»û#ñй-ë]ÌX°žÅü¦õÌ–2X–‰1+~¹Út`uKŽÜ¸ªëÛµjCÕ+HôgظƒÏÒM+ž‰»¡•Œˆ;$^QŒob°8F5͌竗çHÇ:ÚñŽxÌ£븽=úñ€ ¤Ç @ˆL$"Õ¥ÈF:Tœ’ù¬EI E¯’˜<`!3ÉÉ2:ñi å?):QšÒs›<¥)/©Êf±²•Éz%,‰%ËY«–¶ä.s‰«]ò’V¾ü%¬‚)LV³˜¨:&2I¥Ìe‚ª™ÎÜ4£i©iRRÖ¼&§R©Íae³›‡ú&8KÅÍqîJœæ U9Ó Ìu²ÓRóÑ$)ÑøÎDàøÌç Oº°ž§º§>ñÉÏ4…î‘M¨BÊІ:ô¡sè@þ 0ǃ²ë¢ͨF7ÊQö ” îq'@%Q}´è©À>ºÏ~vÑf©LgJÓ˜²Ô.2UMwÊÓžú4?ªPƒê.ÒS¥ˆ ˜Q‘º*¥þLMjQŸzԨʩó4T­Zª©fµ[åêž°êÏ'†U¬y"ëK]xV´ÎI­U„iUÝ*'¸J²_m¥ëQJU½VÓ«ee^ýŠ1À®Õ¬s%la úÕÁ*6V†+[ûXÈ26°\rleyxÙà –²›å,_ ÚÐfq´˜u‘fM›ÆÎJ±¬íªkï*ר^5²´¬mÇŠÛ-©¶´»RoÇôÛà¦u¸TZ­qþdWßj¸Ëír™¤Üèþ¨¹Ä}®ue¸Ôín±»Þ],j=›Yè†wGØM®yÏ[£ôRw½ìåÓtñ ßøfi¾µµï—ÜK_ýõ¯hÁ+à6ÎÖ¹`­o¯`Ø.ØÀã}íge@ UøA0seƒ'|¨ ó,{a+Zç¾ÇÌ —·Ã⃉†·wpTüÍo H¨7±õMi|\ìrÜâûå8Ã'DZßãê{›[àúhÂ$Ë oìS“,ÛçÖÁG®ßÕ';ÚOj"Œ2’½N7Ëá‹2——gÁ±UNÌZî2‘ͬÝ#YÎpNˆ HfåÅ™y¼=pv<þã«™z~q¿ŒhYÄr>µ¢ƒ¬c•e°ÉCt¨D=é3XÐêµuk#=èZëzDEÆò¯‘l›Ø´Vð±Í–ìe#×ïuö‘Š}biKÚýµvš­íër»Û=¢ö™Á¬o“[Gâ®ó¹ÑmîuËÛ2v÷»yky+«Ýö~QºGïûÂÛÈýÖ7¾~kzG›àÿ·°^p3ÜY¸Æ".q’Q¼â–¼8Æ¡‡Ü?Œ{ãg¬Ôóq[œ±èµ²¾o_W¼å+g8ÌMn0Óúé”®úꬷîúë°Ç.ûì´×nûç^5±97¦£î;¥ÿ.¼·oüñÈ'¯¼ç}é.rç ,/ýô«/à¹õÔgO;öÚwïý÷Æ?Þ37уo~휯þõ ¬ïþûÚ+Ý)–ÜÃo¿çÐþýßçÏÿÿŒø^†úP}ùÛß§ç¿:0€ò{ ¸:”΂ÈÃàOPA¼Nƒ®K`èÁ Ú„­kàWxÂy]mmTQx;j…44!ìDHB–Ðu9ÌàChñ}dýغ±†OdÞƒÈ:*–Žþ‡°+E!ÊN…G ã÷ˆ#ò1±ƒ[,€ pçA jQQÄáoøF8J‘ˆgì ÙèÆÜÑŽR¬£YB*‚QŒˆ¤^Mš²q‹} $!%‰FHò’w´"¹ÈH²“˜å#á¨ÅI1‘¨T¤ ûTÀŸR…iOG Ô¡zõ‚(mhùR˜Št¦Æ”¤³¹U >3­t¤(W=ºÕ¬4¨_j;çõNªæuªÝf`õZT¥õu°;¼é_IŠØTî2‡mì>ý:TÆJ‘Ì4¬#%«Ñ¯Zö²a|, ù‰ØÎzõ³ 5bf“ÙÔönx°­lgKÛˆÖŒ”½lmwËÛÞúÖXmSZëÚâ‘ùþ»­JËÜæ®0¹…eífKÝꂺ|J)¦kÝîzWyÐÕ–XÏÀÝïš÷¼³Ã®Ëʸ\ôº÷½´ ¯–”8VÒÂ÷¾îU¯¸]ûâ÷¿Þ•/ÁÆK\½úÝ |àwWÀ!£/yýëà ƒ6Áôâky-ÌáÆBømF­on;Lb7¬ìíïˆKÌâ¼~ø…¸m±ŒM,\g®xÆ8^'†aÜÞûؤ/–à†Ld#*.²’•d 3xÉP†¨wdí>9Ê÷ËŸ–·Ìå.{ùË`³˜ÇLæ V¯à=±xC<ácy}e޳œçLç0?TQDmíª¼à!¿ùº8þ€ MèBúЈN´¢ÍèD+piÕs|Õ<_ûùÏÞË_£7ÍéN{šÑ¡4ËÀg·ÏÆt¦ýéV»úÕˆµI-½&[:Õ%=çúV`P*³šÐ(´ `Mìb :Ô6õµr“ Z]#1§ýûõJìjûÚŸFö)K]ã£^öªtv­¥-è`ÚÜ寶º9­íc*Åî¼tB ©GšÓ£öÎ%SùQ\&uušv¢Ñ½î‚ÇúÎó»×¬Y\«ókM…ÙÖ\ÊQžãôi]uih‚[Ûà 7ô£ÉüîS§øÊ^…xÅ-JÓ´b©Áä ŽìQ£ÓïÈ|¼7¯ê4¯þö"Gx=?'éôR:í³wsíWûâ[÷/=Ú#|ká_{7þäÛgØOöTwþó}-}Ü·û®Ëqõ¿ýqwÿö߸õ‡}È ¾ü×ßåoþkÛ»dKáÒ¥=üm'ÿùÓ¶w 'u&|û÷f €ãÖm"V€ ˜=í7Zä×€HD Øfxñ·l>‡xW¸‚Û¤ï'‚˜yãg‚36e¸^¨‚iVg28ƒ4èe¯%ëW<(˜ƒwUƒ@„r†|¥:½÷E¦æ‚ÙçƒwwçWvõ—|G;;8\%È„¯÷„Ó§{®7…‰E‚úçƒÑ§…{‡p³¦|÷Çs)¸k¦Dâæo?oh~6—z$lÃF†‹–~F˜ƒ·ó€1ƆÿÖuŒg;¦Ç†Ó£kc8mæFpˆzzxpQèni|<è>m'wq7;‡¨þ>sØMTxwÁöˆ‘çq7‰ƒÆ‡ºTrJh…aÈNmv„ØCs‡ˆÒ£ˆ¢ˆwº˜n»È‹¨˜{“~-¸_÷еsMH—qÒn,åOI%qsGQü¶Ge…Œp·M¨GмhŠ¿xh¡†€˜÷{̧y=¸LôV„Ö¨xÀ¤uØ„U˨xñäM‡§rðLñ؇§ºÈÝXh#Ži†åèEèhW·tÑXWÕR²tÉr³¨~’·ÖÆý˜ŠŽx…ÅcJ m¥ÇŽ–”…(UÙ(Y‹4ç‹YŠx‘`Œ:˜„Äø‚H$JWSBwö¸Ðô‰‘=)‹ØXn(þЋúØ‹Éw~ó³€r(Wû‘Y4ˆöøv?™’A‰•\¹“øX‡HÉ’JÙL~È4©`Ř‘™•1×o"IOWyVMÕS*UqNuY–Ž(–§ø‹•7j^hS)“Ç8ˆSiQVä“„W!õ‘x g•ç„»˜‡FIm0‰‘õ×…giwùfçô‰¾×™ê¦m‘š“v˜lù_ˆW•ćš×F}êÇŠ5¹„JæzF}˜I›ÙF„˜€Ñ劯)†¿ œ¦Š¼Çš¾7šXÈ~ý籌·Y‰ã¸†Ñù‡ÔIìMÛYa(fN)dˆ9žEˆ=¦žX…þ6æž!ÈžÌ&ŸŸÞfŸHŸ ¨ŸÃ·ƒî—žþ)cø •z_,Hœ¨›zLBø úe7h–çéd‰œš¡J„Õ‡›ji“ *‘ÊIlª‰B…IÅŸ!v# k­wU'zLâ¹¢§×¢®6˜O£˜¢ù‰‰–§<ÅA¦iŽö³ˆ™É™›y‡´Éœ—S Ç Ež×–¦· ¸ÿå·{K¸ &¸ÐЏf¸ƒË¸‰” V» q›¶z¹J®д_È£j¹˜º3´f{ªû |ë³[ë6k¢œk˜žÛ«r«º«ë*kL«K.»¢´[»žÉ>ûº(J¦*j`¼9F1ë­âª™'«¤y§…]kº_û·ÖµFG›=9ixØ¥Û‰(K†Ñ;¦jx·ø…C¾*bÇ’qj¯þÐKµ¥û¶ ‡+Yi°”iV!+¨É°éˬý;–íÛ¶u›†Ø@tó¹ð—ôÈ•çv'tcȽ|sr*}ÿè¶“«9Ø‘9`›ÀVz—y¬ë•ÍÙ¿,–(Àü^N°;ü^õË©í*Q1‡¬ÊËt'˜l|Û²‡À.,»÷à ’*9ÂJ—‹·Ê¾ü„=ì´?,Ó;¿¥À@i­YåFóŠÃùø¥;\|eY®Žú”B<ÄÖTw ¯YÌŒ,ÊÅ.©h_ì}øJ¡Ò‹dÔ[]Ö‹©›J©~:Og:²J¬¾)ü¼Nl†?š»Íù´Æ{Uw©Oz ]Ùu€ü¿š™þL|~/Š»Â+£OŠºDƦ°xš¾ ´Qx³cŒž‹‹^ LB1Û»£l›ï;¹DëÉ?¶Ê½$n®ì»ákµÄÛ£Y›Ëµ»ËNJ¹´l¹k[ìcâk‰X;»ÇŒÌ C·ZÇVFÅ›JÒ<ÍËœä{Íë™–§ˆÞ¬dŽ›Êãœ_à<ÅO|ÎÖUÎìüÍ»ûÎ,æÎò¸élÇÖ\Ï&ŽÚÌúL ÷\Í º]Ð}ÐÐ f«¥ ýÐÑ=ѽ‘}ÑѽÑb¦—óÑ Ò"=ÒHÑ˶‚(Ò*½Ò,ÝÒ.½ļ ‡@{ñw‘—@;q7]ÓmtÑÓr¡Ó4ÔdÁÍOÓ1G5J½ÔSá, A³ÔR 5½ÔÓ)Qh cc6iC6 !9b]6`-àÀ9ù`=‘8{“9n×r=×t]×v}×x8pM×AÒ~ý׀ؕ£‚]؆}؈;Tix8.4.3/docs/tix-book/fig/container/pane_horz.gif0000664000122200012240000000514007170672571022276 0ustar jeffhjeffh00000000000000GIF87aóóÿÿÿÃÃÃqqqëëëÓÓÓ‚‚‚ÛÛÛ}}},óþ0ÈI«½8ëÍ»ÿ`(Ždižhª®lëš@,Ïtmßx®ï|ïÿÀ pHÔ„¤rÉl:ŸÐ¨tJ­Z¯Ø¬vË…Ž]ç L.›Ïhó8ýEð¸|N§ëø¼~Ïïûÿ€‚ƒyw„vmI‡voŒ‘’“”p†‘‰`Ž˜œ•Ÿ ¡¢„—™Šž¥£¬­®¡«Œ§›s™¶·¸¹¶º½¾¿ÀÁÂÃÄÅÆÇÈ¿¼É™r³nµiÒÓÔÕÖ׋qÏÙÚØÞßàáØÎšÐΩ±¯ëì¢ê}ïðžÛ©ñ{öíùú¤è~øz¥èEã·¯ ÁCÿð$T8¯7Kýäí“!'† Ší0²ZØH•sþäP ı’F„”RÏJXù”Ši ¤6‡õhÔ)êdKƒ?ëUÒ&Œ ¨PQIAΈCÑbÊT5V½JNW¯Ö=…èñžR¦ÝâTI›/jX”\ÁNu+¬Ü·-ó¾…k÷Õ»% Ë<‹s¤€µdÛîí‹‘ëÜÅ|áâ·oäÈCÝE\g¦Y¶– å™4qÆ’³ÖUÍZ+eÖ—çX…¼qsÍΞ9Z&èutSÛõ¹XïÞÙÇ_g»ÕßÛÕ~6½T4èeÀ~¿¢+U¹e½½;†]Ùïf[¥þ–ºSžŸ¸÷ΗxøÕõÁ·¦M>nÁ…ìþFKSéø7IpúÉY‚óá7^sÎhØaÓ-ÕoÚxšlɹơdÌ}›qË Ç_© {Ö¹§áA0Æx„Jaç‹€ædè2öh^Š$]8 Žùh¤ŒcYˆ9º¸ã‘P”d’JÞ„!DÌØÈÌ–\véå—ÁhYŒ˜c†˜h¦©æšl¶¹¥˜¨41À tÖ‰u‚p'žyö9ÁWV@„j衈&ªè¢Œ6ê裆â 餔F*A¥˜fŠ)µ'¨¦ †*ꢒŽ:*Ÿ¦¦ *§L>ô©ª°ÆÊh©²VŠj­¸*ʪ™M¾šë¯©Ò l£·ûë®VÚ Æþ6›©°Î"Zl´±"Z ™0Kí¶³jËm¡Ó~{j§-ú*î¹@ûm¸èjjmuØÎÙ.ºêrËî¼¶’¯·øR[ï¶÷ö 點f+p³l›ðÁ“\®Á ÀWL± [l1Æ?êð¾ÿ:±ÆgLò‡<«¾Êš«2¬#“œ²³1k<óËÒ²Ü+Ä8Ã|2Ê&Ëܳ®:»ÊóЦּqÐ6#s«õÈëtÒ?ßl¬Ò[ôÇ-=5¨X—LmØ@M(×;Km6ØU3½ôÚh­öÚ™`ÀÝxã­pÞ|ÓwÔüÒ½jàö^*xºE~ø©„l¸à×2÷âÏ6îïãþ~'.¹å”{̹³;99ŸwÞí¼¡o­9馻[º±©=úM¯·.míÀÆÞóìËÚ¾)îÇb÷ê´ûn+ð¹êŽ3ï.O,ò¸*ÿ2ó^;z»Ò«LýäÖ“ }­Ù‡¼ý÷­ÿ{9ùß½ç¨ o¶úë?ß>úý¿÷ó/nÿý‰šmøÛÿå?йïk ¸è§*F, LƒuÀ©APl–vÁfvñzANÐT”ö¦´é)ZF34¥×êÚC5)Sòt:Ý¢F‡Ô¢Þp©9lêOozTq:õU½cRÑÕ.Zuª;íª¿Q–n §ܪ=³ÚGµ¾”­‰tëLáúȲ^B5ëÿäjT±†S«W­#]!z.†­¢ãëSUºÑž^”R†µ(b·¦X¬úužD«RËT²ö£lfíJÕËt´ŸÕ+d'+»Ê Ö´Ce`÷(ZÙj–«œªg- ZjÖÖ”³=äoY\IW–®¥-lUþ«Áä w¹Žu®q¡+UÒ†5·^ìm×JÝÝv”¹cíî¤ëÉãâ’¼¤4¯/ÑkKõ“½Ât¯2áëLùB“¾ßì®v­»Ù ®4ºÅ-¯~Ûàô8®nïëšÚ»,¶ÀÝî[LXÞ‚×câ]~'JaÔZØÁƒ0q%<×Û–¿¸õoc«ÛàÒbw¬ûmñuUÜÙØÅ4Ö­¿ b±øÆ3ÆëÌc yÅÞ-Ü…%Hä&8¾&Ž0йû⿘Ä}­2fO,ãþ¹ÆWžò„µ|Z.ÙË^rðž\ß(XÌ%&³ˆŒåÅæ8»aîrŠ¿¬ã<ŸyÏip-+þg5·‘Íù-´ áœå;ÃØÏEr ‰¬äçuÑz¦²£­ŒàA¿VÑ”vœ¡I•áém¤öµæ©Cëf:3ÚÎ|Æs§_MèMoYÊ™³­ËŒë?k:Öžu®ã¼ë9ŸÑu’Emé!/û|ÍFòŽ+mäI?{¯£&Zª·‰lT·úØžV®²§Íìj‡8Û\µo¿½Þn³zܦ¶¤Ïi_ëØœf°½‰ï[¿yØî7¯ÿ½ï€[›ÜÐ6·¯m@t?Ýïu÷ºá-ì‚Ãúàñ.÷¼ŽplGÌ4šéê„oüÒ%÷¸ÂQÎðæ:œ€¥Öžº ñùJœæŒíÅËiyóþÃÂéLºØ9{.ÙŸ»ANB&Ñ×(–w¼áïsÈå=rŽgÜäUwúÕU~rg?ÝåQ—µ¾Eh’·„IGܶÑ9sŸ×ü¾K·âÚÝÙö¢¿]ÕqXÌÅWw¦ÏŸ}—ûݹîçR|ìT/»Õ§®ñ¬{}ëP_ùãuÅkò\wüF÷ÄùÎ{þó ½èGOúÒƒ>¦O½ê;/Õ»þõ¯_¢8fOûÚÛ> ¦½½îwÏûqhY<Š’ð¥|…” øÃO¾ò«„‰ã/iùЇ•(äGÿúH*~gœ$ì{Ó—*ÐD&7™ÿüèWSù™¡ˆô»ÿýð¿ûÛP„úÛÿþøÏ¿þ÷Ïøéÿ€8€X€x€Ø';Tix8.4.3/docs/tix-book/fig/container/pane_vert.gif0000664000122200012240000000375307170672623022302 0ustar jeffhjeffh00000000000000GIF87aø óÿÿÿÃÃÃqqqëëëÓÓÓ‚‚‚ÛÛÛ}}},ø þ0ÈI«½8ëÍ»ÿ`(Ždižhª®lë¾ Ïtmßx®ï|ïÿÀ pH,ú&‚rÉl:ŸÐ¨tJ­Z¯Ø¬vËíRHïs .›Ïè´šœ€cJ|N¯Ûíì»~Ïïûÿ€‚ƒ„…}d†wna‰xq’“”•–—tˆ•‹oIŽ›‘˜£¤¥¦’š”œ–y§¯°±±©“«p s‹º»¼½ºJ¾ÁÂÃÄÅÆÇÈÉÊËÌÅÍ‹u¶ž¢rljØÙÚÛÜÝÕÓŸÒÞäåæçåÒŒ·ã†®²ðñ²´ƒôôáßö€ïòþÿ—öñÃU ¸uÔ ôӠÇ„24xO!Bq™(ÔèpFþd$éPâ!\VrYì„Q¥»oAΑˆ¤›„pú3É'ÇL.3]Ô÷ódQ4uÖ@I©<ž{|2 šk¨Â£Qa>LÊt&×›7ÀÒ¡ññëC¨z¤¢jÍj;9)­iíh'ɺde╳W,ß®%96I‹rª\u,‰Î‰ n.@½€ýâõÙë_Ë~38XQᵇ…&¾ºøè•XãU¾ÌZsåÕeÁFÞ,8áņ#f•±4èÆ©á´[ó_ÀwÊN>ûgÛžqÿÆç¶7ÜgÄPC,Û•¹âÈ™ÒôÚ½|ó‚w݆››úè·wÌ<Þ¸N‘¯ûÖGŸHmO¶½þg]|Á©kf!˜Üq žÇßKÒýZUXQÂGƒc-xxâ…èàS‡Õi¶UaŠ‚4´Ý‹0ÂßbƘi…¸ãŽÛ¡]Ž+ñfáF< £@(š,^hä“g•8`A»±“4À@£å–\vée2Ø5æ2AÂñå™h¦©æšlr9¦.£91 tÖiçxŠEuUPÀŸ€*è „j衈&ªè¢Œ6êè£Fª(úðÙ–Ÿ’fªé¦œvêé§RZfBê` ꩨ¦ªêª©ŠZ%©B™ÊꬴÖj+«®.ieŸ·öêë¯ÀNZéŠÉì±È&«j®þ2Y¬²ÐF+­¤Ìªèì"ÆN«í¶ÜVàµsr+î¸Òz{c©ä¦«î¯æZúìºðÆ»ì°àf+ï½øBÚ.±Øæëï¿î[/ÀL¨À»^jðÂ# +¯ Gì¯Ã-),ñÅòR\©½w¼­ÆqìñÈЂŒ.É(Okr¬)·\2½ ¿ëòÌÀ® 1Í8ßj³Å9÷<ëÎ2û,4ª@÷;ôÑ .ÒLsª´ÈMG-ì¨-õÕ‹>õÖYÃü0Ï\‡}°×U-öÙjöÚ¨ÍöÙn¿vÜroMwÝWßwÔzïÍtß~ xàBNxφŽsâŠÏÌxã-?9Ê’O>råþ–wŒyæoÎyÄž¾pè¢Lz韎úÄdo¼:ͪ¿~oì²ÇK{íëÞŽ{ººï>nï¾wÛzÈÁ_>üÉÅc |òåÏ2ó;3ô /O}²Ö_löÚ×,=ØÝ‹» Ü‡ï©¤¯þ@þ÷V›¯-úë§ßþûTWŠÀþü÷ïÿÿ  HÀð€L ÈÀÒ¯~íëü€¨Íé%sS×,¦µŽ‰ÃsªP˜df#ݹ¨töòŽ_¤ç;ÅÙC–|ú„”ˆHPu~‹0 h¨æ©P22´¡gügþ!ê)]*Ñ¢@Äh5CŽ¦Ð£"©üDj>’†Ï¤ÝC©öTz=–RϥЃ)ódš<šϦÁéïtº;žâΧµªì„ú:¢®Î¨¨Cjé”*:¦~Ωœƒjæ¤j9ªNΪÃjã´ª8®Ϋ„kàÄê7²îͬxCkÝÔ*7¶¾Í­lƒëÚäŠ6ºÂí¡m#^ó G‰"“¯Ý+`íxÄ&t°Ž²«Ø;7Á"öPŒåZdíæØÇ²²–5$f3›H¿¶“³úÚ,hýyÇ`v´†•/cZÔFtµÓi]«Ù1ðë³´%¬1‘ø×Üêv¼Å­o!+ZÐNkÇÍ[q9§›\©5—oËÍìs›6Ý¿EײÕEZvwÝÇnwhß-\wû´jš÷¼èM¯z× @¢ã½ð¯|©€ÏqÌ÷¾øÍ/9ê )Aé¿AÒ!ÜõøÀEpOÜù øÁöoZü CøÂ¦PpT( $ cøÃñ0>Ï”¥6™øÄ(Fñ›¸ÄÚ»øÅ0Ž1ŒYb„ÛøÆ8αŽwÌc€óÇ@²);Tix8.4.3/docs/tix-book/fig/container/sl-bar.gif0000664000122200012240000000417007170672703021470 0ustar jeffhjeffh00000000000000GIF87aä‚òÿÿÿÃÃÃqqqëëë}}}ŽŽŽÓÓÓ,ä‚þHºÜþ0ÊI«½8ëÍ»'Ã'Ždirᘠlë¾pÆtmßx®ï|ïÿ2Ð5X Y³£rÉl:—ÉcQ>¯Ø¬vå¥Ö­xLÖvÓ° Èn»ß!¸|N¯Ûïø¼~Ïï·A}D_k'…†‡ˆ‰$‚TA>ge‘’[8•7]iDj:—“Ÿ \œ9ž5™ƒ¥4©¡¬­¦£–°˜jšŽ=«®-@»6¾¹1¸/Q¶H¨²6àÀÎ=Ð0ÒÁHʯ-×ÇkÉ×®ÔXâÕÌÇÚܵÖßÕ/»ïϼÎï¼ñ,Àóð÷ò䬿ë,ÐDÖh ±íöéâ§_=‡ íÅãW¯,ÂÂ$Äþˆ–ÆeÜæ»'bɇªlWÉÊ6Å@"TÇ1 Ìš %êÔgžÉ}G&l‰$c¶›§ â4'd5¡UÊ;9 åJ–Ùµi*·[àš¥„8ÖO³A­FÄÊŽ«*¯Jÿál'ô§]µwsÎíô±ë̯<ä’!›v%TzWûù ³ïÛ¿q“¬·r¹ÅêÀõØÖ²gI˜)oÞÔù³i1¡KӌÇ©Ÿ×°cËžÇuí>´XÓÞÍ»·ïßÀo»y0à€ñãÈ“+_μ¹óçУKŸN½ºõëØ[<»÷ïàËO~:wîÆ ¨_Ͼ½û÷ðãËŸO¿¾ýûøóëǼ€þÿÿèŸv¹¡w€Š$¨à‚ Ðß<ààçå–ƒf¨áa|" ’=(À+VÐ"/n(ãŒtx€ˆ 8ˆ£Vhâ Ĩ"‹A‹Fv@LF`ãŽô8"…ZäB&‰ˆ–ÄÈe“2>9åSú(CwbÙÀŠï¨©À’¼çš*¶Yç.jâY'‘n‚駘9ÚXf•?¦ùæšH"yhŸnzç¢{Fªç¤2ê'“€ò˜ŽR–xæ…–::ä¨GB ¢¦¢Jª‘¢^Úd¦Q*Ç@§gh(©©B:gXÚIçª)®j)®_ºÚàƒš*þ'"­Yyk–¼âú&«qR+l¥×Fkª±a"ër9’X«³Úæ*í¶çž«j’rÛ*·Ý÷¡›&k&2 n+ªªêš­œ‰êên¹ðj(æ·ÌÙKè§Wêûo¯zþz'»½Nq»èN\0?!³ÝغñÈ$Oð$ÂÍÕ(n³…–ìòËÉz¢€4ƒ¼š0ç‹,ôÒ`ž]I“ËôÔ3: Ô+‡ì,ŠKRìb‘TëlµÇQ·*Ÿ0‚®ņÍÁØÎaM¥§ø6,mÛ&à]dÄn—wsrßÛM¾wßÙ箇ûÊ+œs²p©}›ð7sþ/\÷³ˆN»è»›<*ÀšKʯđ0ùr•Ó=¸ÝÐ6šñì {¶Ø–.ÂéÊ–Í0æå®«xâ|»n±¯m¼íྩî—¼oµµ‡>»×´“Ž|Ê÷Çüê¼3::ºÔ Ÿnñ\ê}½ÙË»}„·Þ9±•rþyÅ’ùùØkÿôú@;,>âºú]‡g¿×=ÓßÕøG8:é“YÖnÖÀZÐd $ÛVÁ zмíöÁÎ*ƒqá­LȦn\fc¡ ]¨B®µ)|±S› †BÀ©Ðyh›€Þ¾§$î0\êÛߕ濙Oˆž;¢Ê’¸À%JÍþa¾Xð¸Å!1.‹¢ â-HC+Æðnã—µäç»ÐMŠˆÃ’â%XŹÁpw@^±àø¿éÅÑ€G,£Y†Ç³ýψZôZ")%° Êñ„TÔà µvF÷Í/sÖ‹”±U¼(>rŽ"Tâ$)È:ÒÑZ™”'öI õr?4äûØè¯Cº±€žü¤ ǾRöŽ‹Ô °ØHu«•»´÷ZyÁdª®—+dæùœyÇæIÓÔ$¤5¯‰¿lR²Üœæ+QËp^Ï›¤4€ ñ„ÃûAÑœ…@'}Ç!ªmŒ±3¢åÉÄÂ1Ÿ§Êå Ç™;3‚³p`$¦Ä„é¸7^,Œþµ(ùyE4Þ~¿¢å0!ÊHw>’¢•4åû ·Çb^²z»&HjIßu1‘|Z¤*(Ñntyݦ?GJ?Ïmq¦Úê¤#å¸R¶4c¨ô©Iq™ÔšŠ3’)Ìé2eyIZ•~*F‘©=šÕLªÐÌãH ±`&ê¡KU(Wåur³t<Ãà(çÍ·†-®èkÿìÚ7¼:I¯ä+Óü · –j„uå\ûyØ©%„€=Ð:Ù4Ô€~­±BVÜjÉ?F¤…èb 5›ÀÅ¡}™L„S‰´Zä=vPo j‡Vq‘¶mDc*Í×Br;ÍRkÉÓ5b5pþäã@Õ‡´æ~‹—{=êI-[RÚÍ4˜½}ÐÕ^¨Í©6ñ¤dUë!‡Kïe—­ôRÖ¡;[óó³?Mk¶XÅ5f*n‹l÷ÌÕÎþÊ—|ï\«‡b¦Þõ*3¬TEÕUY ºúÉW -Ô,忥_±‚·â mç`]j6½dRØ3÷ŠÙ¥ñLY˪p‰KZzqJÅ+61i П/¶¢1ÛŒ;%çXÇlm€‡z|ã3þfxÕd‹¼»ÉŽO‡>òfg¬ÿ,™½ôD*”sxÀ Ô×¾T&ÀŽD\Mî9÷ÌhN³š×Ìæ6»ùÍp޳œ¦½6G¶ž=X‹:rC œ¨©Q§I¥B¢•¬8²ªµ¶?´ŒF°g¤»®·@HÃ>ÆÁ¡À˜r¾L½O˸ÓÉ4ÈØEÚ8ÜÖÏDPÕ–à–±ã<¹ªÞ_ìß–è­5ãå£Ò¿ï7ÃüÙÄØüˆù»&`?‚þêS‡={çæm(§o BdÆ0܈Ðb¿ƒþï.QçðÄhðæ™lX±£Gaº¬a°¢È'$ã=ªM#WšFµýºÔóf¥ê*r· V·ÿÆÄjSퟡNN5¼·¥[€çBV¸1¸¼S#òµ,´³—»Tû(nlгçÓhòm¦”V5ê×LƒÎœÖÐØC¸sëÞÍûÐíA¿ÑîM¼¸ñãÈ“ã…çУKŸN½ºõëØ³kßν»÷ïàÃO¿‹€øóèÓ«_Ͼ}xŸåŸ˜O¿¾ýûøóëßÏ¿¿ÿÿþ(à€€ÏÁŸ|’4èàƒRÀpÁ„(˜ƒvèá‡&`È¡„Z€¡†”ŒxB@ â‹0^Ha–(a‚´mh€&À ¸è1ù¢ˆ;Òx"8²¦#$e>ù#‘`iä–" ¥ˆ_6 Í“h%R¦9 •\¶Ù匀$“æ˜b’©'šVöy%›n*‰—7ÂYÀ’NÞ e{žyA•AªÉ"f ji „Ɖ$ŽqЉ™y2Êb¥Œ^égŸZ’zéª%dz(u6":¦¢eNÐh™¦žúg¨¬öªB¦rV7¬ŸÒÊ+£¶ò ©®©þúêlˆ3n­§=Jé£Êê d³Ïv¡ÁZ×i‰2¡b”’¢¹¬Ÿkëí»€‹…ÄVkl ’N ï¾ßîu¯’;«¹x¾ *¿gàeÿÕ{9ç²pp±ÂÔ>¬ÅÅ*L\qÅ Ë)òÈ$;_Á.xüq kw€É ¢Ü‚Ê¢¶ËÍ+ê¯Ë0[›r˪ŒsδœÝËŸ¼(¾é>ÊîÍDÇhô¼=ßÛ1¶eæËš5Sºõ™íÚ\óÐDO}ÒKðÒ$ÜZéºO?*dØs×®£tGíÙÖ¡âÚ3'ëhžÛjÍ-Þ×";øÜ‰ëïÎGW ¸Äc»˜o®þÚ®8–Œ/Žî¤ŽkÀwu~Û9ù n;¤¶AÖ*8çž#ú£Ã*ù:®p£êºìÀ7J¶ãµOWz¹¸ËÜ#Ö„÷n¥™°‹z·âÔÛ-ýìC‡6ÕIÇ̶îMçéü•o7úîcc/:äܧmïé.¶úG²öí+ÿâðôGR¼tÇXò¾ç!þõïÿƒÜßÈ%° Ôþ6¦?9ð.ˆ |&hž ~ˆf ÛÀÁ.È2ûõƒ¹+ О´,aÐb;’–íºç³†p¾{! 4CZíƒÌóšá¸ö¹[½‡TaT>\±ŽTÖ ›ǵAžù~@üþ¥X×:¬E„C" =ø ËJR\„âà67Å€U1rW\âþ‚h«4ñ‹mcóG@5‡™»câÀÈ/=ºOcìcƒþ¸Å'Þ1Šy4!鯍HIäKudÞù")A+RiÏ’!hÈò1a£Ôa)M'Ç}¥òˆ’œá'½‡JuM/o×Ã¥.£IA­y§D@Ìbó˜ÈL¦2—‰ÌWf0–Æ£d-uÌ€03™Ö¼æ2/õK“_ª2&@N@›Ä†8ωÎcr𔿻.Ib޳œädç5õiÏvVÓRÝTâ7»ÅHvŠR™ül&øÑφ. ðT +þJÁQQéT€4ÊÑn4¡ŦA *Îb¾³“pœe …> ¤Ó£ò«æ:չВÖÔ¡'}cûLIÁJÊŒ[Ë—Fï‰Ï¢&¤7å'IêLLE¥q°‡=Ô»:ÈÍ~öZKí¬f;ÍÅžò;£½Êé¶m‘Ýžv»óïõŽôp—ޝ [M|²÷Þ/kx_ݺˆô”›Ø6Ù_ºM^Ý"¼Œ„~÷J݉¹V0m¥XaX+šêt·ºß™½%»ÚèE¶ì%Ý!Í›ˆìÕ4aDóø|úzS꙾ú•×o5¯gE{Èöt‚ûª\OìÐ3Øoný†_xܳtÔ°§/l—_úë í‡3âAŸü¬]þýõUðûÅ CÆþ{ë{Ž<,¹¿yé;^îmgœ÷wÍ€]WuÄwiCçtØ}üw{ÈznBeƒ€è54˜G]9}…‚)¶BÛBoQãÃrê—&‰oW}ÅÇ€V9Ãö9Õsl…6n臂!xt¯g}µ5z²Æ^Ø1fÇ÷ƒíWj×—ƒDø‚x„™vFj‚s-FyH\E (j>X}Khz3¾b‚o'…q—„`x*jôr6k[ƒ Øy­~@8~—‡jPx‚XXëHa(78?z÷„;؇—5H?fØwsH€^Ø€Awˆ]ˆY’˜=”ˆ†2x‰|˜‰(þm’…ñ‡Qø‰û6d…¨|ø‚a|—~q—p‚(SÇo¬(€•Š57óGC#Šc·‡ghŠ2ø]CôZ–§i]#ˆ¾Øqž¨j ø_i]”5»vƒ£·Œ“ØŠ<8}ŸˆlÈ\ñgD¾W‹aw‹ž§{UÈ{n(޳ç&èŠÜV˜}QG†Øˆ‰ÚˆˆHè„kØ]uxÄEòŽÛh‰CØŠ'†n#~÷è€ÍlϘ‚ÁghH~ATB4†RCŠ|hŽ‘¨.Ÿ<ðBúXvôiŒÎH‡X$ I$é‘-ɉ™2Š4Y“¶¨‰øç~ Dg%ŒŽ¸’8“^²¸þu©m™b¹è‹WŽÃq,é’¦u惃A™‰x`Mõˆ|ßèE½´•6é•Úµk$–Pé†dXHþR2r.7#@µc»w‡Mh–r4¿e\Ei•ò¨ŽÉ—nD:C ‘Ui—ÝH‘cù†n —3w6ôR€ç.l™xS–J‰'ªå™–ikÃ&m˜>k‰’\G:%ЈŠ|mp"C±š`™“õGÆ3›%ùu¶y˜<²)¿I›Ù›¾Yœ»¹‰4‰r`"‡D Šž§©h]§ÙfU'a’œ=I‘Hé|Ö™z5Â…<)‘!ä˜Ó˜”)™3â)ŒXGŒ¯ ™€ 2¸4”4—ø™Ÿú¹ŸüÙŸþùŸ : s—ý9cî‘  º  Ú ê!W¡:¡êQEœ xiš¡Þ„} ª Lj!z¢`0¢ &Š¢.J**P%ú¢4Š 1Z-¼Áʱ£<ڣʡ£¶á£B:¤DZ¤=;Tix8.4.3/docs/tix-book/fig/filesel/dirlist.gif0000664000122200012240000000734407170673422021430 0ustar jeffhjeffh00000000000000GIF87aßòóÿÿÿÿÿÃÃÃqqqëëëÓÓÓ}}}®Ûçóÿ‚YUE,ßòþ°ÈI«½8ëÍ»ÿ`(Žd)fª®l[¢+<Ìtmß4Šï|ïÿÀ pH,uÆA–̚ШtJ¥"¡K‰ôZíz¿`#7™}FÇá´zÝEËÊ¥|N¯êø¼~Ïïûÿ€‚ƒ}w„qZN.‹ŒŽ,ˆf3n>•l˜™m“B—<\pNoœš¥¦g¤@ž; L”©?«§³´8²7·6­‰¯£µ73Á;ÄÆ_Èš¹J“¢9®Ìп4ÆÊ5ØÂ<ÙÃÜÝà˰–Î=ÕÓÒÔ½Öß?Þá8ñ×âã¾3ä”é¡íCì^‚ ÛöŽÁoÛjÈa½Y¯è›Æo³ éL%|wÌáÁþö8väHo ¶Ì}ªÈkšJV5)ùdÈxG–4 Ë :\/m±ä$ñ\ÌLÈhÖœ™4äH‘5OÜ”ÆÄŸ.%5³Êç(¦6B ¬¡ÓjNÊIiÕ¨?u-#NLöi]ƒàðÎËËwì½#Aq Ý xÖF»â”æ\lÖïßu özn.]½ˆÅ>íx·/BÏ-WÍç6k´¸¢u¥vÇš\®{&¿ °µíMø k¥üiõíßU^>MÔ ã„’+_μy 䀠ÿ!ŠÂ¹õëØ³kßNHú‹O¾¼ùóèÓ«_Ͼ½û÷ðãˇÿ=.øùøóëßÏ¿¿ÿøöÙþ÷߀hàûH‚ 6èàƒþ)„Vhá…áI †vè!Rr߇$–h¢y!ªsâŠ,~˜â-Æ(#„/Ž8ã8FH€9öèã|5þ(äë©ÞH&©ä’L6éä“PF)å”TViå•OŽwe‘;.x$$`†)¦hyÁ”©ž‘é¡9æ›pÆY€šá¹IAvÞÉån"®—g €œ„Zü9g¢ z›èå @”&0¨—ªiœˆþ€šîIÜ„_J0i¥”fªª›¶f§‡Šç©¨"òئ© å*P¬ºêk#°Nðéx±®Ù%©·Šê²©þòú볎+£y:Šâ±–zª¥ºæZA¯Ð†›‚´Ã’§§±|ª¨mªÌ.Ë*¸âÆK¦™Óšg§µåAzž›§nÛn¯ðÊ+pÁ–›o½èŽšm²“úûï·G<¯¬Û[1zúZ¬¬Ã̾+ñÇÀjðµøš‹mŸÚrŒj0 òË‹R\²Ì´Âå%ÃÝz óÎk9ò£3‹—qyŠòlôâ9eО¬n²GG4½='\ëÍ‘J­uIêõ×`3mÀÐä½õÙ¡Ê*v¢b“M5¯»và2Ú…&ÍÞm; c©¼®,7ÝÐÚígÞéî õÏ (àÏ ~$á £|ø·9Š8 þ,O`ùâ™gŽ«çŒsíóÝ_lÖ¨ì7â—vÞú븚;æ¡O\çÚx×ÜÏÓ¨#^iåqkNAëÃËnüâÈ_{È£®û:6îÛ·¥í®.üõªüë›/_õí¤?okï-³[½¥-Ÿ<ò™¶¯¼÷ 8Þfé6Ÿ.}êÔŸ>ÄØ«ï¾ñŠƒ_šš÷8ñaí~¾SÝïÒ‡=Ø%ï®à÷Ø>«Õoa䣜þ@w½íï ž5 ¿HÑow†Ëàð€ÇÁnª„û:!ôüä­ÁÐ^2kx´-‡Ô{HÀùÐ~B"Ï|X6 "‘h#èÞª¦¨Ä©©­‚éqþÅB௺,€ULøœgAF/‰rëXåÄÄ">Jog„âXØBzŒk–cxD î lÖåhGH<æ1fc,`gÈ·4¦Š…üËÞûIÂ=â°’SáªÌw>­O{”ä@¯¸H¢qýÚ %¹¾Pf`”‰Äi8Çüur•þs¥(-ùCLòeõ6»Îér°¤`)ƒ(GL²Žíûà1+IJEfq–$§¹ˆdæn™O,7ååM'úñ”ãôU9}™B`ÎÑ,$<çYÌAmëç9›9øóŸ ¨@JЂ"àžgËç5 Gq–  1hAþ Ñ"Ô†¼l";ú6.þ©(ZÑ€’´¤ÿ¬¢BeÉPZFÑŸ iHOŠRš¢T¥ÍiÓZšÍ”Ž ÆA?*B¦J\éy:9Ÿ@€ªT£U›¦$êOazÔƒ&U§±\jä~‰NL”ª@í*W‡jT¶®§Õ4¢>3éN³>u¤2ÍëLMÚU]µõ¤p +çJV~Šà¬ ˆ©^÷Ê׿4«ýj\M¸Q—öó©Š]ìHJSÈZt­^¢R¯ÅTMÚ¯še,D³ÊZ¬® U¦5Y:Öv–Un?MíH­ŠUŠž4¢¯M©d{IÂÚÖ°NM+J—þZŽö`¥­«˜KÝ’^TkÏ5Yto«ÍzzWžß'Ë®+µì ›MM§«Ì+4ôšV½šbïNkËÑ-6BŠðE&XeK[ÓíÓ¡Œè"Éë=ùŽÍ½Ò5AâæØÊPX‹u ð6Õ`J&Jæ¤+wIÈý¥n’î(5J_˲ Ã¡.¥µKãÖ7‹@ñ‡;¸b¿²²=UŒY§³Û·Å$ö¯†‘«cýy˜ŠÇd±~]lâì•ÜTòˆû{Á!¸OF²añ„ó;À/9ÈU³É\·5—Ífl2›Ûlæ){9ÍÇ óœéÌe S9Î9Þ3§Ü,þÆ?32½b®ã G)ߘÉ.òIáC:Vs¬FT‚KÑ¢%t±à|è÷–€Žð²'Ä¢ ºîá—ˆ›Æ4Ž­`#§º•ªï'¿‹]QŸ‹Ô¦$r ²œK*”•.¯¯õiZŸÚÖ3†àç>(Â+;Öo6t°õ,é[.:×ìóôì*¼Äe_ì΀v6‡¡ýí‚8’êë5¶ îR'xݪd4+Åë?Ê»ÏgÖ63¹=lv3ðØš«¶ÂíIà_]:ÛõÞ¶¹5fA#’QÌk¶©-þª‰g:Ïç8#NoÒ–8Ò"ÉG-ðp†<å-Xù¯[þß—SÔÃ9Ÿ1Þeþ“äó®õ¤± &Ž:á.9³=p›;ÒzN.:”i\¼†³Ül÷9ž_Ìs,Wœrw¬zÜ\½p÷笄wÌ=>ëGÑà”+f±u-^z’Áƒ´ú̱^rèž\ÝoÏ÷Ô÷Mcdáä>8ÿoE€ÛYëév»ˆ½Â±ÏðŠG¶öºïÅ3Þv]xÄ›ôÀ{»eÒîâ?=÷pOÇGo|èï÷Ÿsïø>½ç5¿½Öó~ןǣޗ>ûG3Ý奟<ÜW^PÖ½ù«}ç©>.¶küÞ¦&Üþ¹N»òÙ“¦ê·oyÅ«@é熼½7ůïý=òóŽþ'?ýµßºœë øüöü'þ×vØ€kwñ§~‡€“'BZF}k4€×Ç~¹wdÉ6~”{°F²6ÂVpî’jçi¬#ÇWs èLt9Ò{Ó‡x;ƒ‚4geNL‚ww÷y1|3h})hƒ+øtÚ§oƆ)FXnøû'tº×y›—pÖFnS24(*ÈNX„™w„#}/s… HzZøl9…^(‚h¨„eÈrX(„m˜}Ã:rǃ‡çƒ0#†ùyÈEË'<âGHÒÇjÃG(z¨]'yÖ‚wˆçµ]h€Ý„5¨iq(‰+àˆí‰‡‰IG‰þoh‰Å牟¸„Hæ€0§‰óe{M‚‚Eæ7m:·£˜u{¸~‘h†P'(•ÇhËÊƉ7¸*î'…Ü“v=È8Âa·È‹\¨ƒÆäy&8͈`¨((}ÔH‹ÁŠc8ÏXsˆz–CL`ˆOà˜‹ x‰~x†ˆŽ¨Ž¦èåØ V‚ïöoã8s¡tî¨ð^]ˆ‡tsÄ8„€´ß‡twˆ9µh‹¸ᘅÿØ€Œhq ™ˆ}HŠ$Б®ˆr Y}õ„¢X‘%’눈# x+){*‰.©$©`ª˜r"i“0™}…u$˜“¸&”™Ø’è‘ÙHþ½¨)FG‚k8rF¹‰H¹‹í·‘`çoã%‘à·•ùE_(ƒ“x’•(ùŽO‘ÓÈ>v÷|<èEO–É„7©|éƒà†yiXȘbWù;ɇI‰)©+o™Œioœ7‹`ù“{÷rÙ“Jˈ‡†b÷tk —e™€ìH†›YKuyk*V™À×”&¨ŒŒI|3É™5 ˜TI—gi´–k©††‡šÑ•­È“Š™ùØ—‚˜•eÇ•ã–:ø>0h’qyН¹ˆÀ3laô—ºxñ’šV¨›Ã8•Ô).Öù1ÒÙŽŸ“·œöXŒâÙ䉒d¹šI`ÑÔhØéŒìþ™äEš¡&– €Öi§bøy‘pžrsŒÝG6ú3š’ûšÅÖyh&~òM꩟.@yܨ¡ah&Lƒ&Ù› ›¥Ù5,m‚¢Ì¹°)™whŸÎE/3ã&)ú‘+j£²I¢×i_û£3jžøS—Zù ði_ør/GÊAY9_¹e]G4PZJxðŠqOIö6Ôb‘c¢®’œÑÙQZR-\RÓ‰¤çyu£6+å)¥qšmŠR'tú¡\Š“`ÀøƒuV&ŠÒ£ù£B¨v(0ކ$}ךoj§›‚p’¨†hcEc¨?4¡§œÚ©žú© ª¢:ª¤Zª¤¡¡¥D²ª=⌬úª1⪰:«&"«´z«b«¸º«¢«¼ú« â«À:¬"¬Äz¬ýa¬Èº¬ø¡¬Ìú¬ïá¬Ð:­uJ­Ö pt§hS8Úº­cE¾â*áj Ү㚮ÀQºp®bP®ê¯aÀ®é‚®òz¯µ@¯ÄáÒÁþú¯‹ýÚ[°{°Ë;Tix8.4.3/docs/tix-book/fig/filesel/fb_comp.gif0000664000122200012240000014641407170673334021367 0ustar jeffhjeffh00000000000000GIF87aó.òÿÿÿªIUª¶ªUmUª’ªUIUÿÛÿ,ó.þºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ïtmßx®ï|ï pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.#æ´zÍn»ßð¸|N¯ÛïE4~Ïïûÿ€‚ƒ„…Vz†‰Š‹ŒŽ‘`ˆ’•–—˜™š›œQ” ¡¢£¤¥¦]Ÿ§ª«¬­®¯…©°³´µ¶·¸O²¹¼½¾¿À—»ÁÄÅÆÇÈlÃÉÌÍÎÏÐy ÑÔÕÖ×½ËØÛÜÝÞÚßâãäåráæéêëì‡Óíðñòógïô÷øùãèúýþÿ¾øH°à)*\( !Ç#þq(±¢Å‹ÊìaÜÈþ±£ŠCÚùA²¤É“0Dª4d`å7.c®i`€Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´(L™PÉмy€ªU›U±^•ëÖ®`¿ŠÕJÖkÙ°gÇš]‹–­Ú¶pßÊMK×mݸwçÚÝ‹—¯Þ¾UŸFüe*NÀç]ì—1bÇŠK~<92åË–3C.+˜°g-S»6Mº´éÓ¨S«^íTãç×j ›ÍJ›,ÚÚ³¯âÆ»÷mÛtwnWxqâ¿}ëF¾\9óÞÎy—þ<¹ñèÃûî »{ÙEEÿï“|Oó<ÑïT¯“}N÷‡‡Âß t~Ùúòó µ¿ÿþNîÞÈ„aÓŸvÍñ–à}Õµ÷Ü×-Ø_ƒï=(!yVˆ …x¡ƒb§a„À(à‰G€g,êT‹û¹èß‹2ŽWcy7ž—cz7šˆâBH¡‚"v݇#zÈ!’FY$“P.)å“SfØ$ƒTf™•@þ¨âŠ4N¸– Âçd™þ™If’6Љf›jºÉ&ŽrIgœxâÄe—' )"‘V^Éã‘lªG¢ cŠè›†*¹h¡:**a¢gZé •zµ'Ÿ~ÞŽ“2i¦‡†z)¥k†h꣬®êª¥­Â:馜vçg†€(Z©oÞ™æ¯pëk°Äkì¨Â"þ[¬²>ÑZëkž‚z_£ªVk-¯×:új¶’Êê-·¤jû-¶Ó9û¬g·¹ê®©Î‰iªäŠ .¼òÆÛí¼uÚî½ú¶;€¹ç-S™NùmsǾ»¬Â £º°Ã ÷ÊìÄ +»¥kg\DºÇ¶+ìd UÂJ²–&§âÉ,«|hËÖþ‹±Æ40pNܤ€M ì-Ȇ)ôŒD·9´ÑEÓy´ÒIGfm×¼Ç¸í¬¡Õ ð¼sUñÒVµåê× †M¨Ùb“öØekEö„h·ÍöÚo‹7ÜnŸ7ÝzÏíoÔR‹t3UV“·uÖdýp‡öÁ¸´ÓMú¸ä‘þ':¹å•ƒø´m€îÕdYýœâŠ«jïlØmÛ×x£.·×¯cźꮷ»í²ÇÎÕì…òÞ¤ï œð¾¿ñsºÔ½GocæVVÖk#cÍoŸ›\èú·¿ÞîqìÔ—E5¾ê¤r|&Ђ¸;…)G™ˆ2½QQu®P†ã³a«t8‰†ä0ˆ5#úÒ³Žu­µ|kO;úÔ;t Ù¡Î¬\Y(²—­ìe3ÛÙÏN6´§íìfK›Úж6²mlS[Ûàö6¶­­íl›{Üçþvº§]îrW{Ýðvw·‘-ozÃûÝøV÷¹ëla[š%!Ž¡Ýhk7ºàÏF¸³Îpe3üÚÒ~¸²É å„o»â2ƸƹÍí‹/áß8Ä;~pÛ›äWxÄ?žrˆ‡üâ%§8Êcnq˜›|å6WùþË[®óŠçÜå>ç9ÐQ~ñOÜßÿ6G±m¢ãd«¼ã×.9ËŸÎr‚/<èAç8ÖwNñ«{¼æ;×z³g^õ‘ûêö¶9ÖÓÞòµ›]ëé–:ÚßþõnËÝS¯;Ûï÷³ï½ìÜFzÒÉ1h›ðØêE×ûŒ­ÞqƒCÙñÙn¼â³žxŽwÝéu—¼ÛÙžö—Ï=âžW÷âánîÑëýä¡Ç»é7ïðÔ—Þõï^ýç[ïwÕ‹<íüàÅñb%§\Àʹq–ø7'þãsÏŸ+[øÂw¼Á…ñè—œøÔ/õqr9åÏ>Ô£ù°gŸÞÿz³3n~{[ëšg?åþ;Ÿþ ¯¿þñÇ´åOôk³ê—q§{»ç …74ÆlÀç}éft±×yÆçv prÁ§}Ê÷qÍ&~Ò¶}{§Þ{Ú—nÀW~XwX{öGówm%È€þ§|¤((ƒ1¸3hƒ5¤‡j'y@€È K7¾—Ї~Uu;ˆxíxgW‚Á…-§m?uX|Nø|^w|Wø„G¸mÛ×xRÚ·}Åw|ù÷~PF†ÁW…#ˆvx†ýwH¨~uˆ†ûG|sx‡{ˆyý7mHWAØ…wß—{`ˆ‡˜·ˆt(€QWtG~ɶ} pH¨yˆqÏV‚RGþnˆÈuÙ…g¸uâ|Ççu‹è„Ç °u ·s+ˆ…Ô&†§gK¨~·h‹vÈl׋›(ˆƒ¸óå{ý¶Á׊Å×|}#ØŠô6µ÷‰?}W82ÆŠeèk¸llØ#ØoçkhŠQø†ÇhŒÊxŒÎ˜qΨŽètG¨°HzÇG‡U÷uèqø¸ˆúè‹üè|þxŠz˜x㎚Œ.1hUñ}׸ŒÔ7ýÖŒ¦ø¦X…ÓH}#Øu.،܈‘͈p©€ é‘7’ïXŒNX…'xpéÔ¸‘`H†,iŒ È}šÇޏ…¨È“e瓵h‰›'”8ç‹hþ„Y óÕtÅ‘9Ž èŒÀÇ|YØŠÓ(‹ËØ‘¹·xS¹™¸•S7‘Ç|¥H‰“(m ÙÏØ”™XŒeøŒ•xŽýÆŽ(¹ŒŽè‚l‡•§'!€ÙvH8ŠR˜0芌èwhWoáwI)8 †+DÈ~â÷| ÷’— ¨…ܨ’›é~È…'ŽÎ†‘'ør!˜•nY‚!¸•!…Yø‰çȆ É|¨ †ÈmÙ†‰‚8ÇJhn§Ø›Wsf÷€gœœÇwþˆ” ófM¹7ù–y–‰h—ÉwG™ºy–™ÈŽÜ)…îçqÖWŠiG~æÝÙˆ8€FØ‘þhë÷~ÙWvWy¥ˆ™·vp§—7üÙ“·|y©rP™GÍù9Ù =¶ørQ™™r9™Ýyšf¸nU(…°I“›™¡ˆy]Øu)n¸rl8c!y~§ÉŽ3I’£¸ˆVقʼn´h{0Xù—gp˜“‹go8ºm—Ÿð7šÀ˜ ñœOæšÑ©–戙£9ž,)vJ,¨Škɤ(žµi¥Õǧ™¥n9—%‡—"*“ˆ—#ùŒƒœù8v¦Ù“\ws‡q×·ŸEš§¿©§xˆ‹‰ H*Œ ŠuÊZ•f(–—ù{œÉvªy„Š-•Z(™‡y¢æ9þŸ'¹†›Ú‹ÕX1É‚”h” ¥j™<ÈxúY~? ‡9êvÒ—‚@j yùEùŸCJ–€¨ñœ:Æ¡°)š^©ŽÒ©ž1ù’mÉšçy›“8‘ÛH›´ˆ¦ ˆ¥”ø…Xêš) ‘Oy¹.‰‘¯yuŠø£QgˆŸçöyj§|—„°W§Ê·~Ä©Ž»Ê«a]Ævcâ©…žj¤OŠ~²i‘ôŠ—ÙÈ‘eêsИ¡ÕªR‚az–iŽ#'n(‰Ú‰„9¬ðù‹S9o¶ ¯=é|)Hr®÷£ß§‚@) ìúªZsJX°Re¯½ª`Bqx+Xmþ¨s{južXyá6viŠ®_þ –˜ºØŸ†©“ÖŒ(”]@óуL2·<>¼|@Ô 0ÌETÍgµÌçÜ1¸ŒÓM΋RY%ÖÍÎÊÐÎŒ;jÕZÍ D<ÝY”CÐX„Ôy•ÖÍÌ]8S TO.\%•Ô #r=ך 1}&”VÂÕLv$^ÈìS’mÖ‡]ÔJÅRÔÌÌò‚ÙéÜ7”­ÖÆØ(]æ|<¥­Wa Î74°íÙœ½ÙKeÕwEƒ}ÓÕdÌÓ”Ø ²Ø¨} *2ÒÐÐsTÙ}#E&eÜ:¡lPÅSš½Öô5Ñ{%Øu„×Ô=Wb;Ü‚F³HÕ]îeO$&t¤TþyÍ;æZ†Üâ­Ëe=,ê•SÌ­Ý´,ÜÞ- _òÖ m0²²aͬMËÝ?@±UáÍÏÁuÎ>=E ÍTØ­(› ÉÈÔÝù½UõÏ¥Ö±²ÒÂÚè 1Ú!5ÑÙ·ÍU´­QmÝe…áÎuྂßþCÝJ‹EÐ ´Y–¼án]/ÞDxÑÑ£òWŽ%Ö3ÚþÅܸ½Ógã1Þ1S@áDËäMå E>Nå=ä»}Ù¨3WNÑÍõ&LÞä‹°ßÄñW?N·sGVR=þ̵#` Ú’3$H;ÍÛÌ„àö„еóÒœÜ(q舞芞èðä4Fþþ+ì=ÄuQ‘å~"îA¤)`WíBÛÍUþᦠµà¸QcÔ¬ê­þêDë®ë´>ë¶.ë¸^ë¹¾ê`»ÎÚ×è4‹ ¤”?ªÄ+ÆQìÉmÚÐŒ_CY¾!¡T)|Þ× "Ê´ÅÖÉRи× •Q_#c†ˆ€änˆãî>žî½^Âä.îéNîíÞîï_sîònïõþîènîóÎ:á.ïôÎý~ïŸïöð2ðøŽ€ú^î ïîÿïè®ðÏð Ïïñô^ñù¾ñÿðé®ñÏñïññûÞðônàëUñï(oñ*/ñ €,/ì#N-”þN:Ñ£?QeMüUõcéz"Fƒ”Q…?;EÕ:í”ÓéÔóIXÑ4Dé(®-.'~ 9¶S Ðg4öBVbßg¾.ðe?ca?öcŸön¯öl¿öe/÷qïöv÷pOöx¯÷s¿÷wß÷|_÷~?ø€/øöoøŠøy¿ømOøŽ/÷e¿î _øŒømc!ÜÅ%JŸIeÔNeú üãPÉÔ3ò#úøƒô%L€]†—óv]QµA>G…”E ­Ò × cÌȾú^ùöÆ?ö.¿÷Êü—¿üÎÏüÏýÐ?ýÒ_ýÔýÖŸýØ¿ýÚßý“ïëÜün¶ùþ|àè¥û<_LYÃóEïóŸ/=¾þ=ŸûÕâµO(wÎ4%Jf4FDoõ0ºÜ} ë,2GŸÍÎtYK‚! ª…Anܳ ¿5m¿1îÖµ¡ð*o»ÜQ¨óñœ?aïØì)[Bâkœ]‘¹oÖèÛF»`«y¼FWËÐ÷ªE›å\êyÊT>õx 3…†‡ˆ‰Š‹ŒŠ…!+" •”*— ˜šš¡˜™œ Ÿ¡ž¦™¤(''µ…··$%¥+¬+§ Ÿ™›Ã–(É“¼Ì³–ËÎ ÓÍÍ ÕǾjJ}m€-àd{FT4Zåãâdbæ:íäþiE~7o3èqñîæ\èØ pù…!áASž äWp¡ˆx7c@"-9I²¤#Hv‰ñªT1Qœ,uK•ªB¥S1]£psfÎÝœÅ"‘-š (ÄRqTç0Ÿ |I›ºmh´«²d)aí™4jºÉ0—ÇI$]ÈÚ£a6E=wÎî` hm‡|ܸD Æ†zëÆ•Ò—ßß?f†¢gßa´éÏ%<¹âÈ휆ŒCntEšMz$Êm“n C5*'Ì §–Òœ3ÎbR]I= µJIÖjÛfëÕ°qó6ʼ)ÖßË«j£jB©Öèþ×qûÜν»÷ïàËO¾¼ùóèÓ«_Ͼ½{©Ú•žOÑih[I½tÊj?´šÈ‰ ZO®ñ'ÍnÏX—ÝV–°OÔ/Z€`oTUÅLuÐu oV)ˆá$Vñ’܃Í1‡âŠ[µ¨"2/¦ÈbŒ θ0Ú˜£‹.Ö¨ã=bƒ#C9ä1}¤ƒhõ59Ú}SMØß€¬ubÌjšBÊ–ÇA¨e J¹"‰ÐEÒ$:cL«`¢KÞ(§RÓ¥sØu•áˆÀiàœUAy$ˆ A¨ ‡Þ™è …‚¶è6J¤‡BJi¡Ie*襄jÚ¨¥‘:*é¡bÊéþ¤ž2Ú)¨›– Ú©ªbºè¢¨r +ª‡Òêj|‰fj뮩ò*é®±¾šê­Ákè°Â[i°¾P”G.0éäµ'Eb£N½HŒL•„Ì·ábI¥‰­iò”º.Xç‡/&Å\»û­[Û—ì8-uðzÅ †Wõ¨âWe²é ¤J‚ÄV 7¬… +,±Ä S ’Å4`ÌðÆ;œqÇk,²Ç!ƒñÄ$—¬ñǧl2Ê0“ÌòÌ1sÜrÍ._<h7Óü2FŠ…ˆÊ4#ýe8¿ë_ýì7]D'Mk[­ãD'Âí‰#V²ø¯P;î“åÒ8zÐroœáwHBômrl!ø¸»ÕÐo/LØöü¨G rŽËCää2˜HŒÁ€‹#ÆJˆ…$iFìÜüèWÀqŠZ,£FÅÞ(…"û˜Á(ï·Ä(2ŠŠH°ZÆŽ|&Â×ÃÁµìz+¡øôÈ– ò„+¤a “9Ìfîñ{¾ôÞÎdÈ7D.c뻡:ÒÇi “™T—¡Ä2ÒRŒý‚Ås™¿~ÕïOþ@æùr2qÑ1,ŸxË3ÊèxaL›?ËDn8œ0•Ìë­ óEDŠÌ†s›Û\ô§2e:“£0ôè i˜Ãì}¬—ü°ã ))DDÉ'œâÔ¿jÐ/âÒæ<çoâ@@â“K\%Àð‰SSF`:¬ü¤Û>ð®YÂSw»¤#àPÈ…]Ôp´ÞµªQ®ª´b -fú êUÅ4qU•œH Ù8m î­.D¨A«YÒH2b#|¤ .i-˜6iœcJgÃX¼¥úާ ãÚ|#/#íod¤éÜd©ØÅ²HmÃCàPg÷®‚fU¾•8+ïÍàNTµÜ„<Î;ˆ×°î<Ýüet[çíK?÷±ÏI‡fÑ9Á sû†0]2qÃ<ë$¹ðU2¶÷eEŠXƒ{¤–µ¬Y‹üö‚Ú=ÂKÅûPíø¼O8ò}ïq&66F’?¡G¶þÃöêùÞP3A»|ë‰üíS_TÈ7òÇ|ðSœüJ2ñ[ÿ{Q­_ò£]Üçx/'}è( À+Ih(˜~ƒâRi7v.è„P(…{µWžhs´3ltzço g3…ôy(z HzhŠ'URwM`¸‹a “9özزwE|çR¶w‚Œþƒ~(~1(v{·|w}秈邹‚vµÇ4¤7AR= §s–ˆqn¶,Û‡xñÅ~â·KBhxéGˆí÷‡½§|WˆŠ,¨~‰øuêÇ~»wm\¨2ógHmÔPq¸2í¦tjx`cHh¶†Ø=Œw†X‡–hCxöo{åzyHi2õ×D‚‰È,÷ˆÙØ,g~SŠ»Šh…‰‚ŠV‚5/·'™xv>(„å—Š%vòu}:§sª’ WÜG+ÝX‚‚g~½8*²²~áÈwDˆ}¹Ñ1ŒƒAñ—G$³P%³y¶Eo ȆÄèyý¶‘•C©1vT>wöBADi‡uþÑX{ 4PŽæX*S8“ÏŽ%¨„„(,C(ƒ#è„§}‚Ò|´$D© ‰„h„ò•‚¢2;¹}"7Öã(P‰f9وחŠè·=©xaÉ~Kˆˆ¨8}éÕ† &W¹‹¡W[ÙH…‘i€ÈCu9LÁˆA‚9ʘmc uˆ‡+™øC0r)…G–ŒyŽYhŽ`÷ ™‘–9éˆ)é¨ 7( hv(>¸£¹Ó·£éƒáh}uó8kV×(‹ù‚Œ9+g©øA½·ˆÿ¨“¨i7à³3¨‘–Vé‘&€æ‹m)— ÄKðþ…tÉP½tÞA4œ`;8@˜…y-I7‚9žŒ(xèY“¯ÈŠ/v"¸Ç7™>Ù(O(Ÿw”̰ŽÛ’‰³˜põ8…ØW(:‡•¢"„­YŠP9Š;yx9©žá÷›)™ì¡­8ƒæç ´h€uÈ–yéVhønƉ†¹Èt½¸nmùy†Ã¡Ð‰zÊx€9XZàßY‡É £‚‘YЇ¨ˆ=–ºž=Ù›õ„…ñx„Ÿæ˜ŽW$T¯õs ɃÊõÔ”*x•ïxÁ)QZÉ(c)xfÉ›´)ŽB ”º×)aJŸðÇ>…as  š!t@ö°a1rjޱ¦Iþ§@@§W¨n€lÐw°Qjð`eñe”1džÚ”Ó§ŒÖ·¢’3Êá /éžî„·)+Y¦¿ù£8¹™¯ª[‰¦u÷‚"‰;•]4ršô˜,0•–ó› Ê”ò¥š¿ºŠH›Ëתׇ~ºÙ•剓Ò*yÉhMØjMÞ ­<€­ì“­à ®v®äúHÝZ®æŠ®êª®Ûº®Üº®ãê®é:¯è¯òZ®öj¯Es®÷Ú¯Ùª¯äJ_üÊ®èð®ôZ¯ÖW¯÷ sõ £3Z£H¡|—©›¶zžÚ¬@ ‹u¦ð¹„;)|Öø•¡¤wþTQ4 Ç”}˜vÜAšÙX„X‰¡ :Šð¸“5)Ÿ::¤©+LÈ{MH…XH¦gºƒñê ÛJ_âÚ­HíZ4Úº¯K+DÜz´®ízµV[µØº´Tû´P›µNûµa+µæº´[ûCF[=e«´üz´j °k¶û µh˶øú¶jK·nÛ´{«µã °^»­J[¶~›·Öd·ôʵk{¸„¶[«µak´û£š‰  -xª\Š“–饮Xˆ=ê`]Jx¸ ƒ¶‡ŸUñSFb‰ÏZ³TJÔšøš§Ù‰Þ÷˜Ä·~6yÕ¤ê÷» «gùÆ{¼È›¼Ê»¼ÌÛ¼Îûþ¼LѶ¡jÓš¼i…h¡e§³ë‡Aë½hê½½¤4y–ÚЙ!ð™Î@ ¾º¼9‹Éz¬¦ˆ¥ªšðØ©Ž¹Šˆfy¦ß+´czöÙ,²Ò Ó{ÀœÀ ¼ÀÖÂÀÀöQpcL&¤‚A˜¿™ùªéˆ2éŠä;­Oø¾QºD€«£Ÿ£”#XF˜vJIr¯) XJqüH Û§¹›_y(£ËŠÈÁÁ;¼Â[„¾@²ÑuÄHœÄJ¼ÄLÜÄNüÄPÅRì ø )Q¹… ±"@Á7¬žeZާØí ‰ܹI¼¦–7ùvxb”ü⺒ҔÛA ½KQZ¥Qþ‰ Y*Qº)±é³@»žäHÀ#,ÀÜK hÀ4TftN­ÔIDÑÈ‘@Óõȼ@ã5ÉŽ|ÉïÄÉLÄ@ ,"•âAé{=-J-7ílSÕEÊï Ù˜Î?ÝÝŸì?Þñþ2î|ÎØôŒ?=ßö}F……ÒrÚ—þÊF1ž×€,ƒxýïˆÌîªéÇwäÇà4§í”XFM:fнû›~-KËŽÉ(5œÒm> »þ~iª£;Ä×{ÝZÄè=Þ†ÅñU„N!ïÔÚ^Sdÿõä èëíTߥÔ6YîÞìPÁGÞòFüÛÞËŠ£´9Ÿz/­6ݽŠÓy{¼Mp÷0w´Kx"lªÝ> #·ˆ­ØŸ¶7D¹n_£)ƒc,Ý'Þæ•I«¯Æ‘¢È-îÙ9¾Ù6>о]c¿ú~®ñ›•ñw®õŸX‰ÝâÏìïIi¿ ª,//…Ú^ ‰‰þÆà»£´‡å-ê:ݱln™a¦Pî~ô‰Ý¸¿êB/xRÙób>(Þ·ùQ^xhˆB¥fº íˆ8Êä¢[ô¾®Ö})~òqOYñÝÔÆîû­¿ûètÔ0zÛú0>6ètGk«ë—yäšI‰›¶¢ï˜Ê^TDAüÀ pH,DÃÉ O´ ž×,ö1½n½Ð¯X{­>Ãèmu]nŸÝ`iyhÍž ;#G½ qVRgk„6T6fh]o\ˆgZ‡RX‰SˆqŒk‹›ƒšr ™gQT¢P««u%*'zv±y11·°µL2¶-º4 y(¾0Åw²þ¯*aÄÏ»Ñ#ÔwÏÖÆÒÇ%=QO6HãäåãJ®º9d[£ß§}îñ•…¥S ¦l†s÷¤øñÒÈ‹¦€«Wy¤CVOŠ"G¬VÉ‹¨ƒâ‰ü.´%âÃ?¦(VŒød•£Jsú-b”rÞ)Gûb–Ñ7ÇãÁY <²R`’'\´RdÛÆÛ±`³†¾X†¡Pœ½’!Ö ЧËv9k0•ÛV§Á†A=1´$Ê=Ì©][]U3ÿ¥jiÆ_>q;ÍA4pÓÝzndªÙ f¦£›Õ*()ú ÜEf$&º¡Ñ *ŠHi Æ‹ŠXU4tè”dL Ó„ x^ÁÁóLþÁ“½O”ͤtš<Г7å§_©jÍÅÙÕ¨šÑꊜ(ñ¥Ü’ gŠ•Ø¯M‰7gœu»SîÇMàÒÌ@‡Ž´lÓ«âvx¾§ò®,u gÚu_þkÊp¦EïèC›våµsˆEÔÿ” d˜a†Q< ¦“eQh! e…‡ò5a&þõç!„ð'W`, JI!Ö]O)иÛNàa÷VsÖyU\Ùá¦M Ìý¨ wË„¤t± ÔqaIÝtâEÇ 3Ö„GGh Ùz`¦×ÞŽ B"<b |ö˜÷°”L-îgbmlÈÈK‚CÖS…$f‚TFh§þ j™n€@öY`¥Uø'ÍT(<-ÞS§j‚¹¸"lƸའ׎"d£d1SQ‡ä•YÝ¢ÜXh‰S]••*ª‰õãvÑÈÊ«Ž;jec”õÁƒa&ÛÖî5À‡#ª©˜Q!þi1_*ªù&=Ü’‚¦™ÞB2ÅAZÄÏ–Ðd"±Ëá¡lNq™za\ 䇃bÜ“¢‹²ùCß—Ά柞 —Óo*ØxƒN>íÄÀ*ß`ªv¹^© .¾ªŠ±,,‰“ ë¯V¹ëÆÒ± Ý°ÌMy±ÇÆ×å—Êæ|Ęó`·fº*Ûþ“}ú•Ÿ ëµZšþt¬Ü˜ž)ã¥.$n¸Fš ²™}ô:¯eªüGɽœabí´ÕÆÙ´Ð´Qêv%·Ënà=ªÃ Rqu%kÕTYɽ ,à¬R²®NÆú꯰À̸ÂÐÌà'Cžc¬ÂDÇÑ%; «óèB´W«fwîÀ¯ LÚkúŠW¥Œ¸nikøt`|Jù^@‚~ˆ|– £gþ‘ïƒÅ?F!@Êó ß'*ÅÐ þ†²O^?–°Ê}{äÃ[ 7þ&«ËÝI%N•gIeûIÛ+â!ûºª{Á5Ûçu2óÊ«X ¿ïd€<|B ÎHÇÀðLa>ƒ›¶‚¦íqêLÚþêìPb´I¨D0Yר¦su.yÙVȸÐQ{A ¤RX¼¡-l§ñLç&˜n pPCHf E 7{ûn|¢”]ÃJ<š—9ðµï+„k¢ìF¸þ)(^Üß ¿ˆ9Ãíâsæ9Vhºs•InPÝô*AÇÛýìhùÉñaÇ•‘‚O W®ã?ÑMûRFŠE‰®IH[ƒRÞD.#šÒ82D© &î“&5¬K`ß„ÈG î‹2bh¤Á7 aè3ýޤ ˆLcVÜŸþ q.÷5iê˜by1%-Šq‹Q–åþWE+ü$^þÝuöÀ „b{|´7ù ïDÓ”~Ø€¼×L"`ˆ@ÌU@H_pÂP£°×¡Ns<ݘDD©¤D*ôBBéS…ÙÂÔÛx(4¹ô0žžÊ’ 7‹áh• X¨à†¹KðIn–R¬eŸœ'®ê¢Yü¢û”ÒcÎ/~‘óÆØiNSYmôÝ¡)m /ò£µúr'‚ö+ ±QSFÜp  ôŽ9ÏÂiø.¬-u#NÕÞS£j6»¢©9ˆõè´qŽòŽ_e—pÉD\´’TFŒ%G¥X$üMŽ¢ð3&ÉÖ™K@™p ý ¸#þ!ó®&[+i@Сç¥9«¦þ º -MSNµS*(üÒTÊ^«?ßTS¥ü¡ÎŒšPjVc¡ ‚´85ÕL'é¦5Ö&Ciã©çæA¡éµ·«[†Fì"®ô ͹]£Œ,kë/«¤+aeL°ÁªR6DÖÖdòÕ¤½.ÿ0“¶h"–šÌR&ꊓ ~°ö™“lsçS ºä¦ $Ƀ׆°{:­ ~ ³ž(²¶^>rZ Êr+{ètQÁlšZ¶íŽl» þJA¦Î‘mš“ËíI<Æ‘Ü@½žÉ,èÁ{HÐ4µÈbèFeâ`læÃ7zÒmt‘ÃfTRIOøñµN¼:aèÁJËchn¯'ÑÅð™Ë+Ùÿ¬nœb›kÚË` ¦7ßòEŽ OÙ,ÿ‹{é=útUÓEv;*5MõÇÆw¶žèÈ÷.:¿ÆÕ€‘³«1‹æ×·;'÷5±‰ùåF÷SBÙó1ƒéqXÑ=í½ÆøárÑ5Ð-ÐåbªqQÊD0®òtZc^ÛáCIk 8?ÆÓ¸°»b€ˆ ~†¦éuã)È¢Õv;5®^¸ikšãÚ•¢n´×ç+þñ¾ÒµárÅpv;L{òäfREîv¶sÜ=dùß¿˜Kƒ›¤gúÂw*1‹áhM¡è³—ïMèiK•w’†Â9;žDH6ÕÓ¹éãJ/ªti¸>"Õî·½Ù¿ïEZlâVüîköV`Çu”“QÓf7ÌàV¿T|W?z‡€Ã¦vØq{D+E·W]“m;pXÌ×|‚W3gÂ}­Az~‚M¦es–n˜ÆzCÖc¤Eá§*ò–1–4eíReAò§U×tLÖý€tÀdŠ_m“j>dÝsJ­mØk…×b7R&…yoá ·”al–v×qÈ…þ¹ wyÖu#Ç10Æøæà|ãÑn«Ãok¢eOcGA^¦}.r¨ß—Cçãwo3§ƒ°%&ÒeB$z«EŒµÆ:Â8 «DÓÐé½LòP) ](™+…ý8ÍêÛ—*`¶•kuCÁVþÙoq$ ŽP8uAÇ$!óib‰ÏïŒ6\ÏrMÀWÓ(õ‚0< š‘§—4=‡¸„À“PÔ›ž š)mË]³‹]Ñ®lË7ÝÑŸû³ Ù¡¢6«¤´kÒ? ѫӎ]³›Ç{Ð0Ù&­ŠC¼Ð§mÑ#þ=³»Z²ÐŠÃ¤Å8\× ÂÎ+¦Ìé­A-«´M½YkµY ¾º/¨¶Tý®Õ|@¦†’PsÁ”ÈÕr¤nžúe{û¬16ZXœ9OÑÓΘ¹"RIíÜÇ ùOú4f ÊIr”_µ’á‚Ù\'] CÄ¿{Ú}Ú?ÜÁŸ|ؘ®«ÍÚ’ Ñ£ º¦-¥¬ÊÝÚ »´màÿ]¼¤í£íÁ£š¼ÙÍ)®>lÛ¼ºÛO Ô+‘M£]kÛM+´È[ÔÅšÔÊÜ[KtÎÌ\r¾ÍݶV½2Çdס!ÙušÕÈ( ÇüQi ™ÀtÌAxó/þÄãoÝÄT UlÒtafZü&f‹Œ·€ÝÈþB’L «êѿ˥5LË"Žá¬ÞzÐ=¼Ÿ-ÚMÙÑI´*¼Ø²;Pêѵìç}îÉ(ª³ºq¤ þà ý«*nµA:«$Œ´í¹*¤ÃY´¬ Ì+¸ê›åšö c¸ *÷2öãUÝú<`Ißr0ð]‡õ‚`íÕ§cî©®„xCÈ^x{o(Ø4` _‘æoáüj$J®3 CÐêà%|þÁ1šÒXÓ¾è®ÝÄ$íÊ´pþ¹.àÔÉÙ »ÝÉþáÎéÉçþ¹ªÛ³É Ó’ðæ6Lºœ¤1[þÂ++ܪ¨Ë¬Lé\û«BÝ;MÌ>}¬Dº§ðö[Y‘s‹e¾ìоTMÆWÝ×=Nô:ôje×/yùºGe€d- Ö‡ÕuD}ZJ~T`£×?—ýð^?…Z™FJHØ‘˜û‚ûºæÙàˆ~Â-Ù®Âô®Ð‹^Éo¾à~îðÄߞخèÞŽî^¼¡}Ùݼ'«Ñ¡MöÃíŒG{­®j[³´º¼;:ïÕ ðÇœâÑúËL+›¥¾ ¼Å¨>‚—i$ÍÍ ¯M`G>L¯è$d;GÖ¥4ßô¡„ÐiËàfójks‹iæÔoí×±D^xøš:AµƒR…`ìþöcÍn抔k!7S®èB¬Ø³;ç”-öæþÑÿÝѲíÚ«mîÎØCºà·ÿçµ?ÚûŽç¯]õ!ÍïæÎàŒžõP[ÓAºðÜ›éÕ+¥š^¦hð+ûµà©ð'ëïnœàšÌÀòÇañ#`+—ñ®þê~eHÜ2óÑm¹–ú)¸ÿ*ÏÕ@SºÊkÄB! RÇæqcwU!=•ò4j<©p4ÀÔ+QK»÷¹íFd-=é(uè#Ù„L& €V‹ù|:`† Æå³¹llÙë±»=/¸ßm2žL¯¯·bndgzolleztvˆ…ˆZ‚–r[““–vxþjwlv¡r‘„ ›”›Ž©›(j„f¬“¨«}“b£µ©ºª‘¾¾gjb± £”v"††%*Ñ$¯×ÊÝÞßàáâãäâ!Ë`é7N3,FASñU=B61>JV—ÊTªãŒYCz¢Ýòz ÚïþÈ7šh²JGäã¶€–®¸Ž-l-iÑ `U/0¯ 1u!ZŠ–NA¥;¸ZÒŽ0=Åv“±(™Edh»èkX(?š+âáÓ«Hò Š´Ê$U´µ,jO ÌÑžöµ–Y­laëÚØÒVŸ‚­Wo«[̶֚³U­ow \“âò ±K-r¥Ëð’¬UãVbåxR­À â;õÏ[©Æˆ  ÖÿˆP?®oŠMšd#‰Sq†s‘@Pé{ÛMpJÍ8 ÊBÙº.`í9Kà ’Z”=ÛýN}P5¨RmI\Ò†V¹¢²jVa)a­NøÂNîG*Üjž*]+t'þcÖRj@VÁ*µHµA‰V {áÍDŠJ`gŠšê°æ5™g˜Þ¾<Õ¯8ezÓõö½AŽäØ{_dsÉÂYñözŠ]…ôŽRø,‡cU ƒP€\ÕêTMlR¨JõËcˆéŒ!]“ö·L|ð[\_C¸Ø¼†³±—{[/ÃŒ·K­0œ]©f1»y´f– þè@+Û§,aµ=óФ߼ v¦\ãHCÇŠ³ìRè-#ƒÚœßŒ ì½B}w/Ô9À³fµ­uox7+Ùö¨YΊ&]WÂç²™1038ÂiÆxi§Ý`§’ÌÕ^³œ¿}l‹|ÎѾ³µ›à“{œØ–«¾(ân‡ã¡NE±÷"x½èãiÔµ‡ Ü:œ:f©ÅÁ;:ñ–qÜ’.¥&§Ô4M릦ùf§"ÌÓê]ò’þ˜VFÒJ¥±9º˜N [a•Ør/tHÃç=îÅÃlÑÝZÚµ}»'w¸s®sË¥/wÊW?ã­4ÓuP&FžÄ‚’ŽÌFe‡Kd³×J¸õÄžÅz|yG‚“:"Vï€á2€R2eAÕ(Q™±Ge$>>t5c5ö¶fÝ·UhxˆWZ!g}Ë•}Û7mØÖeÎv‚àWröh¦J`¶ag¶3Ñx¯bçG „K„GÍ$kÚ"nÝb3ÀG¥1„¦þvbd=¥W@§WFõdyÚ•VCÀVVfL2¢;…À3v¬3w5…±¦{4&c7‚(×|&§w¿µr½}ækÊÇrMØ} ;·öf„Çlx,§Þ§fÉgK~gb‹±Üvƒ’—~Õ”æz)–j]he£Q„:R>9SL¡ôb ´Bio&LŸgÇÑ…]§GË!4D烌Ø{K¢4Àn<ƒn¥(MÍqTÜ7rë#w,hrÇw]eÀˆ|•¦qh‚ †gØ‚‚§‚7ˆ¾xŠÍEsˆ˜ˆÔ÷ù A¸3.Ò#9‚5ž÷Á'WÖ5z°„£o—Ñ_¤bàþXQ™8LFÔò„€¹Ñ¥èíVQ¿ƒQ#±n-òY†ç‹føm/XfÕ‡^Ƈ¦ujw¹È.u'+Øqo˜9‘ÙŒ&Sq4øx5w/cU$>õ;æ=´ãd]‹AtYÌ4û—Ož¨f™µ3YÓjÁ3TÓsŸÄ4C¥nÿe…\S5§¨{k5cŸ'¸¨rµÕŒ Õ‹/§qÇWŒÃF‘`bÄ‹&x×x¸Œ"¸eXÉ|Î肵‹£B~Îõg×è*ˆ¢…bÕõNeS.ªöCD÷ˆFW™nwÄ’z…\:¶a ¨pHÔ€|Yt«Ø"J÷~­–]¢8þ/òhC9—z ÆvÇ8–V9wkw*G}ÈÅ‚¾6%h‚Óxm è}"§‡ª•li‰š˜šº)lì’PŽ—EW—ðKC’’I©—AÔª(6Q6†Ú¢A`R.L§aÈ#gØan»“3@øCTXc©våXW§±s²„³hhµâ,Ëù+ZWu¨³)}d9š¶iŸ$haîÃfhy‚Œ»©‘mé†.çlÑ~öYJoG:Õø\ÄÙ 'ùY-„žçsγQ2°64âu;ö·¥× P¢¬Ç;Øòz´Æ^åæA☞îFFÊ1t¨£Åd„y¥:¢T6kÙþvyh›±©}µÉ} Uµgˆp)›Ç¶–HÚ•Y9}€Ç›¹Ÿ©SPÀYƒÃY—Æ9BD'|µ¸QšU6 ·™ßqëÆ;#j„ª‘“k³“P…R<Êù†XY#Ž­¨€Ä6VRÑ94«(WEÔ$³–„]Ÿ‘%šwK!2ˆ”ŒÊqéP©úYšæ• p¡†…‘!§¢[‰Œ¯Irà7¤¸I›Èe‰Œß—‚Ú³Kt¡Å©FØ&~ `¡:ºs~j„Û.0Â{.Do´d˜è,ìÈ ‹imÚ³—%{VqºRŽ×Šœ7¿5¶yŽX;€Ëœ‘–‰6Û£Ÿ¡Ž¤Ó¬ƒ+{¥^ÐÃþR?ÜN“CÓªX`7d4¹Šùç,’Oit8Â1Œ£–T*X¯ÎP´ˆ4Àˆ$©Z|À{´^Œ´ì ﺮ Yœ´¸DŒ9¬ˆ±ÀѰÅ»¿iü¿ªIµ¼kmQ ±}üÁ¼‹¤fyšÕg¶Z’ˆhµpË¡hU¦,ö4ñèÄaó]4D¶¢sJ\رŒxšNîåÃíEB4rjìåÉ;B­š­O¬j¦”T“ÊÏÔŠŽ:AÁ-CK¼c gÆl\©t,Á‰«À¨KºbìËZ{Ì ƒvª ê?¸¾L‹Æ_¼ÆkÌ©Àk&ª›Á²ÊºMû–°:‚Ù¼°Æg,Ú¦:©RÂMþz§¾z9s‰+vâÒ¦oz˜¶h‹ãU4‰™fEd¿ÑNBfiáDo RC¦Ñ=(…y‹¥nÙ‚AUæ™võ]+²·Cù“ñ©*h»¿^`ÌüK‘ÅÉr´ŒÇeÀ ÍxÎhJ  kB«©Ý¿ükÁÐüµÉÌ©#ã½yöºÌ«ãL¼öŸ„|ѦrÒ ¼jœù]A˜#ùhyŒ–]¶ò{õ™3LK–²_ÀWþ—^žæBüÉŽ¾B‹C‘kĸ’4Z(%JWŠÝ8.EÄ’?÷pÖÛSZ6¼û›µÀ µ£;Á™ºË%@ÇI«Ñ¢Û®Yúµq’´{»º Ówm=ÞBÝ¥J«Ç{›L°é8=‘Ùè½®;~Jè\b7±·!ÅŠŠ§(™Ñ…½ÓÞU²ç‹z¥TNWi uiä„ÛfN¦ÆM‹$¨^-Yň@u;Ý:™à´îäN;«]ø+BzmÝ¿ü´u ãŒÇÍ×ÑüÅ¢"ǘêþ†kc°Î­¿þ{×@þÒ[‹‘6}XÉÀ©‰r…«„'—ÖØ¶é¼ˆÉÆäø‡¡ðäÔÀÓ¡3¦yÀý«÷\Z„;RÞR©‡æÜ¤=DLIÚ¤_ñÕ^-›oܪ¬ªXv"KGÞóÃ"z¢w¡«6]Ìyã„n̵ÌjlÇ_㻜è‹nÀ•z¤º[饓ZrÌÑŒ-¯i éñM¤Î Û‡NÔ vš>ž»ß§ÆEÈ“—<ÿ'˲V¬Þ3ø÷ÛFW¨à”é+ƒ¡!´ÕÔŸ>Ö£–C1TÊúçDL¼v}yë¹ÉBó¢Ýé_)Ž>N©Í8©qÌËRÒÿþ›Ý<èÅØ \îÃ’¤3ÑÁýÜ„ÍîKÓÚ¼ºŸNê÷y‡̵'(sE}«GýÙ‹†è±è†×uàK|·µž£_^O|¤Ã$ª•P·uûöæ.Jáü¥M\íu=ÆB•Ôá.1ž‰"úŽ¿ºhòØYH8Jl·\* 0—¤6r”N›e{2fëÁnÂêþ9߲ɪ9ý‚Égߔǫ28_Êç,å“ǰ²²¬*¯éÔ@×H²I½²”˜|ÜÄ”²ìm§µ4;³r€Õ’=y-<¸rÚ ½µˆ­š5“ïH*¾þÂu½|mÙÀ#Dów¯Ù.Çk–*¢ÌÚôþmV}¬zßñômÌÞæ›ô OœS®Ûên™qtA(1LÑš”Ÿ„vä©àùÌUen<;ˆyà*ÅØpgª…¶Žj<“‰}ªò]O+LÙȼk?8•z|• Ùgxê—†ÿÝ`ÚE]Ä–6 ÈBÏÇ\æ¤ù$BA­ä>-ÈGoß*ðô^Pˆæ¼ùbÊßÑà½:—œ½úþø«N¹žðÒ.^×+®A`öëèÿ@LP5:4Œ-ö¨‹J½ZÞêø…Ü…‰¸…z}«—b²•¹x @ßÈ!H$‹ÅcðÈD:Ê'TèlJ‘Ñé’šN¤„pËíV¹Q«ÚHm&Ö+þy­Í²ç_¹]6ËýZO …‹ŒŽ‘’“‹}U,›#65‡;"¡£! ¬¯ž0«8!cWG–·Tš›5+-1¬Ÿ.'¡ /Ȩ7%¥Ã;Л°4-¢Ÿ&ƥĬ>?˜tu˜ƒgã}tvJveâdäåwëA—ñífì‚ûCâoüø$ÉsΠuyÒ¡8G`: ¥*`¥‹3^´d‹aM-¨©™‚Ù1VÀ:AHy¡D*­r¼tæÉ [î„qˆä™…mÄðЊ[ÌS+NÙ@ù³“°bx‰¼QÌW˲FÊtñÍ"–€ Þ ˜Æþ<@ùš… ÀÞØpOž$w¾w=¦Å{Ћ\(_î®ý*¸ À'u†HdQ£ãÇ9Â󷲪§¤MÕz-3RXB­r‰íó0:°u4»S*EȾq’ª¨’OIÀ V:)7—Ý>ªÀÛTHN°˜+vu'ë!½Z±”ûÞ›BÀÞÃÁÛ«&ð¾ìã«[Ná÷:ÿÊ«SˆÁŠŠ ëßßH2Z!RE¥L)D-u‚U–ÁÔL4¡eÊV ŽÖ› c¤“|C€´T2#ùæTS—Yã Q)„Ø q19¨*«üv’ ÷áV}ÓQD š$‚_þüHQ@ú˜HH⧤‘šìX€A–$’:ò¸d’Râ·c“\>Ù¤4j­$Æ[ZxÉ£“I¢%‘CÂvä_Âæäœ]©¥•oV $OF©ç’^ %“wºù§œ{vÉç–=:Ih";ÒYÄ– z¨£àèD!÷áÙ >æß{Jð²[7Ȥ””f/Y£Ùf½<茫)AøJw®‰©G,ræ‰!ÔRÌÆÃÅ*ešV¦$ËRQ "/§,‹¤Í”,ÎI7Uà†+î¸ä–k®mçÒ–n…qÕÂ.9°¥+ï¼ó†ô ½öÒ‹™ºúÞëï¸!½‹®üÖcõ- þc¡6¬‘gAa@iG9HÓ+¨nm%þ$ S/)gÔÇžäö.ŽÊWYf4É–ìLUlÈÉFôŒoØ\ÓÂÌž©R`,0ƒÄ²€Ó^ÅAªD§¦@·òo¹*öKoÔá(õ¾­ÜHN«5„Y¾ú‚=mØWKMµghƒ‹UÙâ®&Õ ¼ 7CY@†Q~êðÞ‘ŒªÖRyh\I3.#`R†—ÕHÃŒ†Ú,صKÑÄÛ„£¸4i1éV3 ÀÚ\m'Å’x•Í÷-â€5y¶[rÏRœÍr¡0­)¶˜;â³°. )!?«ïÄG«û»ó0攳¯u³Jð€½´F,Ðb‘ff¯Ž!K4ÛÃØ)xÖ: 8KA ŒVÄ;Rå§£…˜öŽyÀ†¯ƒrjB-h‚SÜ+lŽ †_kÁjô±²pz7ð±ªo‰K–ólX£ ÔŒ6²q+èbób㨨26¥EØ_wì1»Îe~w£@*r¿:2Âoã¸ч³šdA¹Óq`Æ!& rÖ8Áä¾Ò×h¢+!èÊþAÉ Â6ûÆæ P½BŒ“”¥èbÖ@Î@$ÒR )‘#@’-£[ïIcÈÈ”²8QûÙgJx’ÒÈ—@Þ\ê±È"T13H|Y‚,Y¬"уV”"ö2¸Lሗ¥Ä 'DH^”PiOY†lÞõ6Ú"p (æ¢%?DäÇŽ÷ËŸüµªjÐx!{P …BKYxs–÷ª†²J)‚“1Dyk —d1ÁÐí«–+ˆF¶KbÒd'ùx63ÿBõXÀ¯p7ZMhz€ÅÇ0ćËWÈNÅt¡Ðê‰`úU³ô,èÔ'JG¤J!+xVuM0lÿ¸e•>G/öQçB«IÌH/ÎÑ‹¦1º¹;—z£N´åQ#mVìt6‘„8Ô;0“yeæ|G3©†þÄÈ‘Gl2¨Â+…x‘ך«à%ˆ -m ƒ´°„ 邳öÚÚÍSf”‰:Ôñl‰º%ÝšQçIe^…ƒÜ¾èµfš ÁÕj4ùð={EÕ°p/:éó Oû¯¨ŽøÏ{ĦHigZ¾~ ˜M˜òzTlà†‡K£›ƒ¬~…˳‡FRmµâDäÀœU¢i—0mÕì„7!Ù< RéÞ"À.Á$l~° ¶°÷£p4 äŠS ÆDn Þ¹›%q-Ï'“Ñ6G…AØkÜ 6Ÿz“p†æ$)¨Xåø¤& -~Ö™˜æ²q8ï²QÇi¯h*ÏeåÐ]åmEUØE`85Fh¤þ‘9;Ís‹9 «ÔM’oâÏcªË¼4©‹NÇk/ ³œ+hØñõ-îPå…ÿתnª3• ÿùEŠþšrˆšÀ„NŠáN X‡‘á´÷Ri·c ø}‰sl/2:A1vɆz@f5G÷Iç|s…EùDY&6ÍàÂuXM⢇&2æåG7É£T¢…€¯QÔ‚"„FkØW©E¡Ñ Ä^릈W0z\ |6v6ÖB>GA.Øô3ÎÅ9«×ùX8¬µ‰Z'HÕ¥wwqq0š@?ߎ”’=‘ '7¶x`½@S­_þs\I˜ ÄjÙ•ô!'¶¢K³³dB‡}5åYÃ^bYd5èz((a ™SHÀ“/ÇêîbuWFö×þ3¢r|°F µ2(y}ýÈ–l§‘ü“>è3 ,) ´¤;Ì%•8eBh‹OùS€£?i%xÒ?©eVÝõNB)*âh•PYÏ"t$3@¶È|ã:µ!{$m§t€‚`fUo=äzòŠÒ7PG!P÷7rçuCæXZ¡9…Yz ‚ å< yvkHåh"°‡UbFwNy†\„j‡yÛè„·`lý¨@cA˜MÜ Dî•W†³s:ø±˜^¹áU{ÅœgLqƒ'ôó#TbDìðr §©D¹ÿT‹éÉ}±CFUDÈyY›:e:Øv9*“oʸY!6h7—ƒ B•3þ‚zëÖqÿ”.âxµbSpçu­H}ø 1V“W~6>ê„Ó‰¢ò¶-ãJ¬˜ð!˜r¡d0±\ÏÖKáÙ}i)N8j”ìeZ˜EhE•w–ÑfÖxà¢CGDB‡ ꀩ WÓEŠÖ·,½ÓMîIHA¸hØ•·e9×ÉUNz><†œ¯ÇŽvM©%HÆy”:o ¥i(h¡ô–ê€vÞgUz¸->´~5ŸÙ{™Sk¥!šH7rƒ—Å,º£,ú'S”Ú×Tkœ±—?}Q ýù©Žñ¢€PV¦á8óëÀ ´GƒÉb¬Èš¬‘`Šm¨F–UKþcH•HC©eYDÇŒ^õjo¨‚i•xƒ’ØWh®ZýWˆCƒ¢¥"ã36Ε3DH2µo–:–j¸i¾êçÇdi5dª¬}s¦ Á5þ:° NfbéD° ¬<¸y6Ê*rÉ—¬¨xÀ m¯¹wµ!gI›×øÊ3øZb5ŸÈ¢«tzA–JAUeD¥Y®'Ê81µ–ع¹€YÐH·ówûº°° ÉD[´F[´òá‘Öy´LÛ´Nû´PKÔwv7§j¼>§AÓ%­‡D«Y|"D|à°ã€[ÜÃms—qÂ8=Ó¶eõiÇæP«I¨ØòЉþtƒ8¯Â}±"0Èó²KPoð“ý ´Ak¶x7´Qû¸‹´‘[¹–{¹N K®uÉZ<¤a¢¥jw±&ŸÝ©¾Ú­óDî§!–=îGºTRÈAÊ=\&va6;BÇŸ‰©ï9{H‡§9’¯†±= s¦©¸BÛŽ«]˜&{|Q£t1¬ƒð@cËdÔ{ã°˜kK¹kph×èy®h¨§Kɉ¶ ¦JªËx¡î˜ë­„ nÚm³¡_;Ó»˜*ƒógjíËT#©xÿ£x.ÖŠîèZ¿4P˜2ª©:{i•o=”Êú€FÄ”œþ7” ‚"\'LÂoѸ̃´¼Ù)œÂÇ»1¬ÂxWÃ8lÃ:,ÂxšÃ>¼ÃW@£ ak›*w‡­óŠW•©"vŸ4Rbd2ÍÛ øxt›j˜?œ“ŠÀRI¨I¸KQ¸‹»¾ “~¥À±Žª•¤ ¬˜¨p“¹¢››§=Yšœ¬Íë¼M+½Ò‹«àw¡ÔA7˜¦~¾{\È•Kšë½¾y@øt¢`k\»¾±‰Ä""“:¿ÉݪJ&:È I`ì‹ÆXKšø~™H:nËiºen"›|¡(‹ùD3i+9·dZp³K{¼,œ² ¨¸ýÁ¸ÕÛ†ç‹Ì[þzÁ<rÏÇÓÇÎÜB~ðÿð7ƒ)ÈÔlÍÞœÌáÁIF¸•qŸÃÙWÒé k }{±–ܦHF&Lм ¢¶¦ÜmÞ–…¦åf™4Yêæ9ǨXŸ}Ås›æ•µÑw·¶¾7âóA¬â›€ó“7Ä|GwÍ€ÐR+ M¹üð¨Q¬¿yQÍ€\¬ßËц<ÍdA´9±ýjаâA"W„5„–^xºïv™>Ö£u ÎôˆmR¼/õ7|U‡LÏx(XŒX³_£ÌL÷Å[Iˆ ívô Fˆc''XÑ‹Fã{bºº¼@û€Þ ‚*«ÌÜÂØûÐ8Íä‘Ò„\Òí- ]þøV¬ð#ÍÞâ̯̚Çxš%GeÈWʨÀæúx³º±¶Ìk!yÑ›‚=|%=QÆÓººGgéG‰žñ[(ÙÊÍÙµyUŽ&†(³µì‘/¼5u’† Á@YÑ‹ ´­Ç«­Ç„ ÒÇLÎ!}׌Í<K» ÜgÎ'=ÅÍÖšBÒßœÜe Ó8û4Ì”Óp„0c-SºxV#“}*žw\#Òþ’=ó—‰nR׿‡G‚Øm¦¶~JAÆtØ5ÉG,#NÌ`Ñ- 7p‚%mÒÉ`г÷ñ³ KÖaòÁÞû¼Ö‰àýÕÌ~pÍ´zÖ¶íà Ž×¤×0½á»}Cþ@£ï‘Óëö¬ª±5‰`ßÇG•)#²™· æyèT»X“/m¦Ï*Yݶ…KÄã…'xáE~´Ú”C\·ðÜŽ["nC/Û˜rˆ¸wŒ¬Dyv.ÜNa®Ìs1fmmÈÍW>Ü®Ö <È Ó‹2^½Ù ܃ÆâÛz%ûqZЫ¸:ÚÔ^3rV=aÌÜÁ!ü<= UÙ§U)\ëGgT5ÆUÈ»ø^®ú¹Lzù™|Óº>æ"¶‚ÀÂLà kànÞÍhÎÖ„Aæ}ÜÛŠL¼G ܮ괎ÑÚÖeþÇ;©Û&vB|/ä—ëÙµ"–5½Sþަä ù”ÓHåWô,n"I…m{u± DŽUX uXK‹\³{öÙTf'i³¥ç=BMÇ­ý“kÛ‹XLpÁæ\~ê¹~ï¼~È"áýn½zýå Ôy­ïaÑüîå5Ê2ýKÙ¹4yl“Ù‡§®6q6¸!F±AžlðÝú+VªÈ/kSg^º•(jV5úˆsWÖì%j}²7p4;¤ š±Ztóxa=åÁjêzÜ´~ÒfŽÜïïÇ}Ü;ÂrMÒܽ·në+}æo„«.Îo‰Òu pÇ y‘¹84˜‘ëÈìØÖ*ÇzÁ†xØ9‰4’¨`ñ…¹³ÛþlŸî\ËŠ^ù^hòÿ¶’XKb–WR%‡ˆxg ô#ÖîØÚ<õÍ FðgöÒÞáØ;áÿù _ô‰ÎdŽ~/MõIëÒáÜÎ W˜?úYO˸Äú˜dçJ¢IÇ— åjÕ]û i†›ÁvbÈ:ì¸U§]é.ÿ¦ä §æjp³Å#:® ìî‰;Ö‚á׌õšÿøØÌ-mù /á‹ßïñùv€”OÜ´ÝÕœ¯ê >‰fŠ–ã¯Ò}]%dù´Yö×úä ã`06(k0EªUc°ߪ¾y›b#J_iqØ•9Ž:•á·yÚÄÙ°¦QO¬³þØ…78DŒÅÒ8€  @­Z¯Ø¬vËͨ½pI>šÇg¤­—“ð³[¾žÇëH=Í¿¿ÿ}ox{„mq€w…v†jjŠ}kyŠ‚‘••˜˜<ކG 485¥%¦B¦Oz@#&B* -Dœw¸¹$3*,µ¡O81#©±ÀƤÁ¡¶§Â$¬=˲·1Ò&/OÂÀ½NÖ-OD{ŽE L]óôõó_½pºûŒt‡èPòg¦Ÿ¾#z|\ÈRÁ‡û´SƈÅE“ ÒE¦€#DƒQ”I›}?f#Ñ ‚+nÂPèhñrÔ1–ÓfÀ¡• þuÌà h¡Â-Ÿ XäÄ6Ì%´aF‹> ‡,Õ‰sEc2•æÓYQf:‚Q#…¨„™4YP70  F H±G·n½¡…6þ;øn!½l,I (¡¥¿ /òüÇp"†m/ä¹áÄIi_®SrÊÞ4jñÔ ¶¥žĺ€ù Ú­`®EE»€-Fò m­5Õa«Z}=¢¸,e¤Nv¡ªªç¢WºZ\ާB€àýë›·f *hòá‡<»èÓ[Á 2`GÄ"3c¦r°{‡íê‡ß‰±c¾yAô‘Šdàb ¤_EÔGgfµÕ[jÑhœuÎ$ÕÜl\™þJ89lµ!p „ç‡`<"¤ádƒ;°(#îä›k×-#ˆ`â64Òh -9¬"d†˜OJà˜ƒ‹CbHÑ€QL¡Þ•váßa"љƠb\b¢Ïm-eF‚ÈEi eÿigš„…„G“Ý'ç~x@øYŸDcÍà`Øa Ou¥SuÏ¥ÅÌ6§lòYªæx,ª†c§*µ4 §c8SuªƒiWµtÕ,7TÃè5†^x•3¢öž­Â0Ê“ƒ”!E\?p–ÈÒÃÞš]Â`a¾·i!a Æ eø}–ŸDÍצ¶Ïò'-€È—Xa|þày® ”z’c)Uժϵ„CjJÕt¢#MHÞ꓉ºhYÈŠ¯ y¨Içc£Ð†µ!¾à¡(ô6ÓL±…H11åØkØÆ¤h)ÝkÛc¸Ã•í$+s VRÕ–sPôE£™áÊQî¦êÚ9-A”!„´‚,ÓÇòF¢)f€€6-ž}îi ‘Qèl5Z<¯§¯@e\Wwƒ/†k7ÎÊ'£íT<šW s8rÇ—j¿ȈӬ3Öòˆ³ECTc"S¢Ë˜/ªÿšذ¯T9óæ^¤˜ÐÐ’GîÏî ”æÎƒ*m5d‰që´žl®#uDþÜŽ{í³ûHvîŸE–ÔI÷µuI+”òÈA²&Óˆ±>0¬¶X¨¡¡ßÜËM„ÿàf¹L°˜É %©Àðá{Pþxuïø÷œ~ßNr˱*[ÙÞáúÂJ$ÊzSÂÊ'¿¤SŠ£°Úõ™ÇJœK`jf‰›í£3¡sÅP#t©LÎÂè†GºÒ èhüðÅ—âóÝÍZ%\ÐêNx;?åi/›—‰wŸ$o'¦é˜ow1L ^‹½p´¯|X‚çZ¨Üá>3=@FPÄÄ+&ź] Šî#_(°(E}+Ì¡QoÒBÆÕ*-ÉñÐ Ù¦íØ°pÚÞ˜þà„ hN \V¸042€ÎLÔ Œ©A’.‚`2!ÉHluMa % .ž9²2bšîF¢:ÓAÄijàš '§ÀÍ)h{ÕÆêgF©VÉ’)ÂC ÖÁŠP•TÅ0\>1p»f.÷Ë+~¨˜*áX‘~±”#¥ÀÁéü(MçÕæ ÇkŠLÆ!¥µãÅ:gfËÀL0 }ZµÖ™A@º“9 èIÏ¥­Ðh¶ƒ’º6YI~Nkh- ($«É{vÐ3óùÊ9FV¶^é„ËKœ“@0æÉ‚VjÜ€+¡½GJ@Š$Ug\âŽ÷Y1¤¹, /"þESF÷+©wPð/© CmË™¨¿\ƒ*ÄцQD’Ü)T ËéBJ™›Ë87§Gu9Ð?Þ ß™ÈÐI‘„êçBÆðL±¡@ÓUª‘0xùQSœNô'Â0€qWZ㵿hV²,ÜüžÉÆkð9¥…v !7~t/Þ«¢IcTÌ*¢v)b½XLŠ •±¨ÑUØ|Å”4¦âHÍðÉEée½GMÀd£ÚææaÉÀX\j²ÊéPþ±K‚äÍ8ȉxªž¢›çEèºú|" ÒHíTxÏ´Šõ…µ$A!ÙˆâFÂ]vŠàzú0²•Mo"ºP¢š$°þœ€1?égS逰”*Ö¤&âÙ² Èôg &øÞ§°!=¨Ø²ñßS¬m4Ö‹Y²ÂÙqv-£Áe;[Ï­ÉÀM;3ˆ„ v¸S• ˆá°ÈÍ0F?#4nt‡æÜOâóu'®­=ÝÄÜ?K®kÊŠxW#¿ÁuÅQ£ù1L~tLç¬âš¯ƒ‹‘>%V¾}ì÷VÔ2!lk»Õc9Ù.ŽÍ8ÉphÍ«J!ç>²ãv‡ãADÅ Ì[B…ØRøJ´ Z™¬Šáߨ}T‚oKW­=’Ï Dñœ4)¦‰¸µ«¹»pX ëNzÆŽÄîµ²²oþ€6:7t›7ÞËj›‹ÃÕgáÆ$ aafb!‹Ìô•TÖ0e,@ÊK.6±¼ÛhuXéÌ ¨†Ÿ+°àßlrlC;ꨀ ßÏ——ÐùçE&2Äœñ!gn­þ9ªÍÝÝ_,ÍP7Æí^™ýÈqaÒ­kä)#Ê=ž;¤ÅJÌlfÆM¬š×PÆ^Á\2¢#7˜±¢ûڇ˼Q,‹í •I/þËú‹rpTR³LhŠ*Ig›sÆK`¹…9d‰Š¦X¬¤ÁXJ½6¶£ýaE.’WåãÏl;ë2ñ¶G'q;9Œ êÂð¸Wƒt%½…B¬Mþ­jñþ*X©Öâ9ôÜ$-LmþNn“ß”šRÁÎ?K›Œ‚væƒ(l~x3“|}qyÊT^£/§èÇ!ò rÖ,ÚµÛí~Ÿ™%çÌ¡®åêè OÊr®óô¬W$¸¥àSÍÕžÁÏq@ݶ ©oµrê6îÚîØ%i¤ýn]‰·Š+¢µ¦{ O8ŽO˜d¡¦œ9H2ä\™rÖà0Dr…Qyñ1ÙPï÷Ë(ñWqSRù²±Hµ¿4ÆJ‡a‡Á?ó,bÄÅ} ¯ÚKX‘·$ÕΕ¯Kž úôùh NôŠ="èÛÞþÓ€+¤u*ÆBf€óVJ— Sþœæ!Ý@*w“+Ç6vÉÄSFaÛµPª1þ‡"¬%e4XõóâiÕ×S+HS%vSxÈSD`!#~.‡ß+ЀkàZPgñ§——uAQ éB (]§]DÃ'nbiU—:¦çU¸&þA€mUü§ZÈ3Ž{,¦ƒ5peÔùCr´±]Ö#dg†mI Íç4:)<’ß×ÉÔw(¨LXñ<Ãq(h§¦õ†Ÿ&Md·ƒ¨5j€7@LSHeG”7„[  ë‘"ˆñ…W8u‘æQ³×z®ç'1&€ŠMÈ:þÑ'é¶ut 4äÜTÖ{žõþ°àc7¨l‚H`¢ˆÄÀZœàji’M¾—1’’p£¥~"ç*U‘W´^J1Dò2Ñ¡pæZ@†d>x!×pz‚@Hd‰\€‰WP„F3:y’b$ä„¢ˆŠ[¨zVŠò8…E#u}ñ‰ûèhÉ5ýÖ·ò1¶Ø1Ä$Ñ#xš+Å|ÅL%bVe\ÏW#8F’SÐáÖ3f½¨Ch+ÖYǃkæ)5Õ è·ƒ¥ÅxòM@%•hŽT€ŽXg]a„GØŽêö-¼ccüXŠùxŠ£,S·'Vzöxož¨i Êô]³¢Jcs#o&/b^2ƒ+þ¡úbDISX ò} Õxede…³Éf8¥$}T¶/hÁ7Å÷/=-"~éÇc~³²dB±#á–ˆ“#ŒXcÁÓhèB¤è‰5¦h¸z«…æb-ñ˜N׉ŽF™|!†{*`ƒ™Õ†´¢ZµÒ<7’ô£‡³Ô;Ì7XÐ^.˜~)j¤ð7%5dåå*¿9#UÔ‚bt^µlòB/¹vjq~Ø4 §©Œ%M€ÕV“ñ§˜Z0xb±“^†‹&”ù$”E”G‰”Ý´ž–Iò”ý7”è¹RI…â–Èø¬0n¹l9Rø_×çCâ@˜ Gþ•pRa–ªRxȤk5`cLªÆe©8Ñ——_9TÙ—SBf†lvÚ…$øÂsž0œP3æÈ[ Žéož©{žZ¸Vóx™“ š°7oiÒuýñ“õ¢¹OLH4¤ù6´•¨ÄWÏ@!Èà%1i¨‹ˆòY‰£3>9‡åwÒÉ[—ÀÀ–ïÃPׇ¥gz+Wd¦ Tvé{'+"¦m—vð? ¥cIQ€Ið[‰‰˜\àf€sr‘¨Q¨æAŽ Z, ©ä(丨ª¨–º¢¡Ñ©•º¨¨+j–Ú¨  ¡‘© ªª¨Úª¤Jª©ª¨¬úþª²Z«à©QÆ"« «²š©ÀÊ©ªªŸZ¬Šª?©¥ª¬«*ª±Ú¬º*¬–*ñÀªºJ©›Ú= h³HˆÐT=KaMjã¤Á‡$©F¦aä"‡Ð|k¼–X÷Ká#Áp3åck‚³Dwq‘k Å‘{z$nxx{Š—è7 T(Ç((ZîG‰„:N.zÙ–&“ꨑº¬ŸºÆŠ­Áê©Ìª±ŽZª$k²$K©ä¨²ÂZ,Ū«» ³‘ŠsÃz©¦Ê«ë©%Û«½j©= ³­ª³Õ:³‹«¥:­%«±Ø­L‹³0ª$ë¨*³5³Æ¬;k¬J¬JþdÎu‘ž¦M§¦x öo¹‘àב ‡ºÙFå¹{š¨VJ4EMæKK4L˜å^óE·]6Ew"ÅE¾ÄWª‰1fgÕ‡°?¢–A`2‚©(yZc@˜³›@«,q‹BÊ «›ª3«©E© «±®Ê¬¢Z³®:ª¯ú¹ˆê©®Z©+© ¬°»«;‹²È»ÙZ»T »ÏÚ±Pë²ÀK»«»»Dë±²{©Aë±Ë;»Åj¼?k¬:k»]‹P*ö u5®TŠf¶p2Xé(¼H9—E$@>˜Ù¶íE¯+•RðE¯ù¥q’µ·ºÄ_-ÐkRÆa®<؇jp¿¢‡åe¸]©)þ4‘L@„ $aÚi¹•‹¹~ú}Q \Á|Á\¬Á|¬ÌÁŒÁ,Âü¨$|ÂÔŠÂ' Â),Â&<ÂŒÂ,œÁ+LÂ|Ã*¬Â3Â5ÌÃ>lÃ9ļÃ4ŒÂ/ÌÂIê€}h®Ú[ZG çU‚ck?ý³‚ryì§5ÓWƾÀ„RykY^„>‘e_ÊÔK`,>$¥*!¥qbDM‰hhþ;Z}I «vôgu0g[ûÀÈr¹ta¨Ið©J­<¬Ô0|È-|ÈlÂÉj‘|ÈÉjÉŽ¬Á•œÈÊ ÉÉŒÉëÈ%\Ê¢LÃ/œÂœÉŠ ÂŠ\þÊœ,ɪüÈ|¬­ ɶŒÈÜʲ¼É‹lÊ¥ÌÁ·Ìɢˡ<̳Ê•|Ì)ŒÃÁ,÷©&Ï‘}¨/ª8ØÜPƤ9 YwÏ™I¦d+„KbÌ–òûKOà=ez¦èƒe.UL*ó¼k¹ÆeÇ„1+‡v=â$(h6Æ·Œ‘{¨lj#̆OÂrÈê!Èòw±Ÿ!ÉLÊ,LÉ lÊË<éÌÂMÊ«œÊEܽÑìË |Ò¤¬Ë(=Ò!|ĺÜÒ>œÊ¼Ò¨\Ë%íÒlÑ0¼Ì Ì:­ÑEœÑ>Ó]Ô²ìÑЋêBJ$×½{óÔ|ÕÕ0MüÍgVÐüþ;Ъg–Iy/Å º”7z‹ì¬E– PÔ΂¿À¤¿y¡6ðSÚ8Õi§°Þœ®CÒl ™­'%åPŽÌ9„¼{“¼ËEüÊ)ýÊÂlØ:}ÉŽüÑ|Ó°œÒ)=©¬<ēؿœÙ/ìÒ8MÒžÑ Ã¯ÌÒ™}Ø–ìÊÀ¼Ø|Ô<ÝÙ=MÙ íÊ<Ú‘ýÌÍéB•9dˆ ɿ̠ |Ù•a+ƒ«+®éAú}îêuÛE+…Ræ Ýmº¦kZœ GÖ]öÎs+qnü(ƒhWF›9Mh“¥Ê-Ža1 ±áƒe “Ë9myÍ2]Â+-ÙLÚ Ô†Ò$]ÓþŽ=Ú›;°MÑGÍß NÔ¦,Ë Ø ÎÓ“jÙÝÈÞߘlÛ-lÙ¡íß­Ù Ù£LÒ#¾Á°}á¸<Ÿá½Â s Q:DNZdFÞ%9M—ƒBÓ¹ÕåÕwëXéŒ_ÃÖìì¾'…_ökYgÏAn7¥½›1ý¼š7.–ãͰ–l¦.t„8ÇÐõ0ßD˜¹Ö"µ´à±íÁBÌœ,̾¬ËÃÚæ}á½ÊÎüÒCŒçÔ¹ìÌß«üáz®çuþØš Ì<<ÛjŽØ7 á(>ÊŽÙ¡ Ê8Íá4MáD Òº-4ùÉJãÚ$ éxÈ(QëmWAäâi6þ—H¶ÕÍÍ3ðú·R¢Eï>~{äûqÑ-LŠÕëMDL€³}ÌùˆÖHMþL2ݨ%ÇÞ ãHãד'æ]@æ;W™Å¢è‘ÍÚÿ=ËÞà%MéÛžàœÍà”ÜÙš,Ó"ŒéäîæømÓ’¼ÃŽméßÞÓ¹¼ÑNàênâ6Íà‚>Ô…^Û£|Ë/¤CÃ{"'=Ì4ìÃ-ÅäWZ2¾cÓƒ1ãe›‰P‘ä™ÏëM^ùÌw~FOÊwáìñÚ]ËÓ•5eQ17`Ç!@5xÍsÔä¶’6‰Ù)íU[ÔŽ%:y=é,-á_Ùì>é<ðì~ô¨=Ã@à|à/]ÛJoÙþnÄ<|Òƒ®ØH]õýÁþï…~ij]îJ¯ÒߎÒÞ^örnàA}ÛN¶­ ‘MÄ`½¢YbŠ?M¢—<8=¢‚/f´Ä){t¾NL}Uir$×Û®tÊøvU¶ˆBd§ÎÏÂÇ(¸È×mFãeË(ôM-„t1¤ó<_ß(‘ïj¯é£õ¸}Ú\Oôj?Ô£¼æQÓ5­è~ிû·Ô°Íè8mØT?õÁ?ûµ¯ç¬ÛÌßË]ÿõË¯ï¨ØkŸÔpÏz‡ê§D$35×=V|v­œÇ)lc³QX‡–DWÖ/ãÔÀˆ×K+ÙϨžøeKD®rÕ¬â6Œ þ5ÀxPZ34 BÆi×¶Ý8ÄU^`žh&Àªp,φÉÝXNB!¼ïçûý†À/ˆ4&›D#Ó(LZ‰C_ÑÙ‹BÉjöZ¬rÁXômîR›UR®ôR×Îm_OK¹tsKyjA`fHpŠg~g.8 B • –—•ž›££™œ¢¤•˜š¥°²–‘9”5‘“¹" ±— ³—¢žÄÈÆ¦¬ªÊÐÅÂÆ¡²ÈÕ§µÄž±˜² Ãå™–Ôľ¶ÚÓ¸8ºœî/3-,.+ü LÑ X®Bè¸ù3Ä#.îúDA„GáFOþÂL2eáAd6Úôæ!EŒ,6$Ô$Ë -VèìáèF K@ƒÒé'DòLòè_=zlYSwV³pÇ@UKæ´ê2pK±ºâÆŠÙvH;ØØð‹ƒ»T£Ü-Ë„U]¶hÑ©:eêU¨osÏÅ6ËÔSqæ”n:‡¶ëߥsç9XÐÁ•߯dÞТ‰}3üiÆ<°sŒ‚aëíø†$w ÉÓ§•–Ѳf×lΈÜÄæE'Ö̹óKNÞjÚùÒeÑjäm;!¾££¢Š#ë2À8¼YâðjËöÌÕÖ­ÖÂ+mEÎ*Ób¦²ïÊQàØ£‹­)þKKk-ãªÚè7zŒÉEà6R¥gK*ÎØÞzYIcU€­è ,ŠÙÕTÙÔÎ=$D€>õg(Ò0Ö|” ÄÝmW¬$[17†CAco>Ù‡}øvZlÆý(›ŽÂåÈLù‡EqH'…´‘æMSâÑrmHi¤–}a"Xe™Å@] Þõ 5Ê„çØ„U‰âÕ^㜢ŠU àR& …u÷\EË9.(Ph¨ —šÕ˜óQs9ÊÊ`v]¡håT[ ᆷär–† AfXTwœ©IаªØ!ó`k°ÉÔ[GݵÅ6ät…üþ$ti¨4Ût0 ;EP2²ÒPéFlÉher¤‰clÈV E Í=yÈrŒI‹*%h€¯œc¡W^æfxm&XyëuŠ¡$`»j§U‡&,¨[rZŠ ‚$º`§»ž ^¥‘öGoƒwâ»1óð’)U#Ó!Á„wY¬0à Á8Œ`Q²ÁêVCÝ&Âäl¶É¨1â E¦I»œ¹] M¬®¯™Û쌨ma›ÕÍÁTF“4.áôG¤);¥!/½cÒMF鄺øÕ,¥R¥‰Ì£Ô¥ž¤ú·ÔÇ.L'5÷!U߬-ê“h_ˆÛb°Ä 0Ž ã|‘þ—裱HLç2o!†9Ý]1ª`SzÛ¹§x*(°¨sbש‚ƒX5‰1ÇîYŸëæ2ÚDÌѸ‡BÒéalîÝ6ÍG®|¬QƲ[úŠsNØJ»ã·¿n©špå½-˜0&I¶7cO=j`ÜX¼˜Ø!Åb~lN*!æpÕeW›æm'§òž<Õ‚ò>P²‡¬(™ˆ’˜¾¬q¨ˆiÌr²à‚c®,ãpvŠP›ö–¾ïHec LÇ&(žUh.ŠUÝ6Æ–Y2!€ÀËdÇ€̌°™¶ 4µ­&|ÅYÀW¥^1«\#qCDŽ7CêeFÎbØV²4’̤iDóÞsJ2þ‘jEílÔ!îj´œ¥É¡YDLbsÔu¾´«a POߢ² ·y_û‰‹„š˜¼QÎcw!\d`ŸÚñ©P0”M@&ê dËŠ‚¹B.€d£¢Þu§OèEN‡Ñ˜çær0zÝ­N{ÓS~£> À02ˆÂÇZÕÂVž€v~¼Àhš=$bI‡]Ó™ó¤¤-ØXoiÔ “®º„¼þ*7\ "ÖÆ¥Äb~i8–“”ˆ„xajÆyf¶xg-ž €m´ú_-îx9Må„{Û”€4Á ¶³éÉ“‡.0‰°N€’ xHÆ1.€Óg1‡@CE =aäÂ0þxš“}›UÜÂ7nN~#̃4¥b>HáJàÊ’¢à…mY-¢#ð•†iXj •vub^kÍjÞѤÈD"a¦¹)šÎ’)#à) \=ٙزÌ#rÄH½ôÝõ€‡K$Ò(-2ãÔB…žç‚—ŒUèT¡øyƒoñˆG½¼¢G²Ø34[5¢Z‰~z‚Ÿ–¨A󺹥s½T¯…®5^ó‚ È0V'ÃÔI`á*è sÏš¹.!°3©Ia 0 ÜN"Jô7»(ß-›;%WOwøÓŸX7£%ØÀÕLs%o$CdæQo¬³I“6Ý{^¶t‰ÅÓþï"Ò›­²À™Ò3ÊO­—ºc_)Å(õPÐ(Ã^¼ú0½‰²m»Ï|þT¨Yصç5`]3(jPèáæ(n06*åT46Q6Nð)‘ÛÆxº —FT XYÀU‰j¶¤(-ãVm¸CbE“¥» êø˜Šáã¾öi<#—p‘ká K³·`,Vš5ãÕ¸I|*i¬Y‡™)šG$Ò…‡å me* CE‰ùÀy«'3w1û¥i¢E[30¸pÒ w¥«AËØfy®€`ã¸á^öýÓÉ$lŸûƒ•ñX¬Qèd,L'·€°™$™vPõ9þˆ•Žgµª[ý¬›&n¦UŸS© [3äåÎ|ÛR¨qw8}&ón¸ÛkQÏŠ3êaަÖÛoMHÕ9Ö ÅåÃiY¸ Ì•L=Ûˆ ÎIpPðtl:« ù…n@lçéŽR”$D€â«\íjÐ LÎË`|/TæKRcÍßy*ÚØtH²öý”võ?)ß@²é¸Ë°µÃ.}¸Œ¤ne„ÿ×`â`Z':„nWLÌ^òÖÑZdj|f°EÍÑJÞ׸àTápÄóÚ}˜$×B Iˆ^ÖÖ`ŠÃœê.K\ £¬‹Ñ.IV°¬öÝ~Çà"‹{É»½¦\‰±¬ þ¤ó5`y§]ÀÖׯÕn +ž Á*”ˆ='­{=àznN† ŒÔA)ʳԺ Î*ŸA Ç›…ƒfw¸Ó }åëhO{¼Ïζ—Ôíj»«Ê×Y„äÚíÙOƒ{)½çsEvºÝìJyˆ=«ó6c>êÈDb¹eÖ>\yç{§èÓÙuMص?øïÀ)ïK³†ÜÔwrë =ú³»7(•·ïÒ,•°È å>Ä™´Ï½îwÏûÞ«ȱwÜ(Itª{cvd'ß„—s<¥[}[ ÝÇÎf ÙäµË«^£/ûEºâôÉH07ò1î›ä~ÙXVR$Íþ(‡zEÙ~MPÓ+×Uoß»ÐææW8€X€x€˜€ ¸€ Ø€ø€Ì%aIÜ/wa_òÒ_rFQ l|ÑHÚ ¬#dþ£u ó *× žR ×X¾ƒû’/#Èkà f‡åA‚‚'©`XåÆ V*é´ó î˜5{þG'XF4P…R8…TX…Vx…|u‡„xq!h‚tm’|‡qQ]ømQv?^èXf¥GõT}Ö7J £IØå.Øå>p„Až‚Ÿ‚!kµmPöwUgÒ•1wÆdm ùWW濾KøJxs~BoX¸'Xx‰˜x…–þ˜‰œH±¦u×g! µ–F¶”Ôt ÓƒPWd¤X*©Gl‘^)5aGûÒ¨¨è´Šr ÄX6ˆkçç1¯g«§Fìó0ù¥gfu*EH ”ág™õˆ2`{„FôT„Ý(‹ÐßXâŽæH3è8阎õPŽà8Žç˜å8AîÈŽbGïû¸öhŽñÈŽÝ(r-R&g9mÁ‡œ$]ËW ¥DˆÜ•#´X†7€U¶n_ˆ_ÐWz‚wH–|œrV{WV¤xNDF]Éxd3óÓ(U1f ‹ ÆŽˆa·g؉(è“@”¸‰þBÙ‰Ÿhe%×èaHvŠìsIŸbŠä&så.|ãzÀ`*ƒV7“¤÷dÇh)krzÛõ ´‘M6`ßq]z€8’SéIE/ %ã%pîwØÚˆ”<9 ø(o¸gDI˜ýˆ˜Š ˜‰É˜V¦ŽÉ˜Ox>ä™’i™|—‰Zø“ ²–h°¨>%y ¤y1¥˜aøFE€ouxTVzKFJP†Ga ƒµ(^ù9ŸÐ R©ƒU™n¡YNÄÈ 0k“~—°ˆöP8Ù—²W{b‰DI‰“X¿ E9€ÕÓ)kÜNÝ)‘)€ßø€ÿdxxþxè#'åf|*Ø7#Ù‘Éxƒrä–'ó…6X‚¹p [9~Ø–Ÿ£)~7Vˆ3uíñ%Q£mžÂ‹Q9ÊHŸ²“{“w5g˜’yâuÐÉ„þ阧ô„˜¹…Ö©™‹Ù˜,ê„'Š‘æyJ=9™2 ›2º¢™9‰›)aY;óBN/ˆf]( EdòPÚ¦¸‹øš6:*7ø)Ϧ7o£—QÑ^d¹~uÁ`'³ Õ…Ê_pæ‹ÄÉ–Š ’"„&žÕÈUý¢'‰kêGCY§äÙ“Û9…9J™ÞÉ?݉)Ú§ ø§åy§ð‰6|Í7@ý|ö¢z­ÈrH§‹ðþ2 #JOQ¼ù¤ðs…Ø G·Wg†dϦ’~EQZ)¢¨d 3“dø&:ˆï”`uh+[i79R9ùˆ Ž6*¬ÃÊ00Š£/ª¬,Z˜å™£:*a|ª¢ÇV˜ˆi™3Z£K"D¤r躚ñà¥?8–òPe¸FMjsO8* ZêÕUáVPcfp“e‹‚^áæ>ÙˆdõA¸¨ƒjEd|CŒ–î ÙéV ""| §&°“wª€ã9§tz±y…{ZwÅÊ“xê±Ð ²ƒJ€!˘íù“à&šf®#³(ÊtîA z˜œæaXYN€jQ~ñHÎvPþ<ÛOÛ§Hí¥8µ}tª…÷•ŸÙ•&÷Xkô‡™ã7¢ôa! û?‚9v!eˆ±*ð—w¹£Óh¶ X£ÆÚ¢ËÚ¶lkÒʱ::¬…J%j­ØÚÉ ·=ê!"¡( ` *j‡ˆ¨šÀ¦ksxQu³ˆU†Žw¥y‰Ô^eFP ð}ÚI–_^6¹‚d~ŸD¥éJ¤ÙµXÇ8Q¢ç’â„ÇÉj!šJH({b+¢v:²x˜”X²[€•é™ ‹·+·ôV²Á[‰ C±F¯kzt†ŒCØ›¦¡…U]ÕKzOÇ™:vrJɆ9Ëv&EËW~e^J±y’‡þ½›;/ÿÄ@É×–p™/Øæw㊸ýbdΊye$Кé·½ ¢bK¶\‹—‰Íz¶î¹·o[¶ÌJ˜¿«™Õê™Çêžq›­ië¶ë¨¶5J =Z¶j‘8Hæ/z× @ X‚uP):€;]Øë¿ÒI‹ûø½ÊP@pPͦ¯©êeúJ~3t¥I9\1ƒk]·6 bùA.ç¥.™%óºß• Àœ²û:¿º„K¼ X±É»‰¼Û»$û˜v­pë±K¬Ã›‰Ð*­Ë›µr`ßZŠxw?@œ¨9Â’¥¤7û 9›µ\&¾ƒôe $~Æ fs%y¤ eÄ‘Z¤¨¹ÂÀþ`örøkXË)*S¬U\hJz[{ÅþGÀ@rYI0|­íÈÀkº˜\üÀ žLÁJ­ÿ£Y%Ë,‹™¹±°­î ng5¤dXÌõû•³Šº³É‡òøKsë°½ß ‡2mÓ–ªÙ\ÈÒ¦s¤Úk©úÃ^µ¿¼Ö"“rqAƒfI »Rü¿Ð¿ÿ£©T  ±½`+ù`hýûÏþÌÏ#5"ý #2RýÏ ÝÏ ÝÍZ=R# Ñ]Ð-ѽРíÐMíÐ^#ÒÍhdÇÐJ0qàƒÑZÒ-Ò*+­K1ÝÑíÒþ2ÍÑ%í5$}Ò4}Ò¶NÆú·úNš„~•Ôο¨V'‡’ÜÄÓ0¢[冡Q͉¬Pæ'y§àÕt¾âg(«€Íê•e9·Ÿöƒ¸*—w<ºòÊšò“³ °Ík«hÜ2{)ÊØh&ØØ‚MØ@ØØ‡}ˆ=Ø(`‹ÙØŽÝØŠÙŠ]ÙÝØ˜ÙŽÍØ— ÚŸÍØ“-Ùƒ-ØýÙ“¨-Ú¨]ڠذ­Ú©]Ù«mÙ…½ÙšMÚ¶}Ú¾mÚ»ýÚÛÃíÛ10ÙG)NéDÇ Ú´‡+VDL—Õ9<øÌºƒlˆ›:Ž„}…ò½@Gte ßþHe¾]yäW¾búÂòjÉ uŒÔ5³.š@¨záPhî ÏÜúµÏY»à>àž"©žc7ˆaš¤b(µðÛA’‹ô ‘gÕb‘`ÙwUuS_„DÖ  ´çÍÍ©Še.Î O,زÄ'¦‡UµÃˆ†5k'õG2¸ÀPîµ¥Œ[à>þã@佇¨ÕÚ¼ï ƒ“F¬(ºw¤RÌ×’À¹Œƒ+ Ò|‘é˜×JÎtXÂo,ƒãDX.³p¶>_¥1':£¹IÑ‘– 0|¤ÝÀo*äv~çxžç1Ó·Þ Ou”–wØÂÙ¦¥I–ÄåªM9÷äÇÝë6_þ®rJ¶šˆ%ÄÐØmú¥ ä¨céUç\®qyˆöS_®×9Ú2³»JzÞê®þê°Þ`¶NÍ´ð‘]Yú†;dðù®#3.š¢ `³X}¨œàžÊÖ…±¤ü2Ê ˆ‚µŒPÍmµêÂF<›-9u÷ýŒü*Yé¬÷\o~ëæ~îè¾{|ŽÜÁ¨¤¢åët,‹¿¾ÞŒ‚n›åÅWÖèv·>h¨ì ÃÄ4í’œÌSmëjž¡×5–ž×‡êô¨YG ·8gÓUYd)«Þãé¾ñßñiGäyæ–"S?Àˆrìd†É¾ƒFÆwD(ÆE‹4šáÑGGÞìþUiVõ#½a%©f%‚¼>¦Og’ÎÜAøm¢×$š*ÖXîõR?õüpàXvT´lX½¦á•õw.*jZ‹TFçPöhŸöè~”‚¹¿`üör» ‰—Æp_÷vÏźüG"Àãg¯ö~ÿ÷xÎçÇk÷½‹à[Õ½_LøŠï“xËõ0îÿ ø’?ùæ~²cžœÁfì¬]l±TfìelË‹¯ÆP8ž]KË_Œ÷|- ¬Nù®ÿúOwcܵÇ~ú éòøqž‰‚¼¯µ¬Å¿Üû¹_üÄò¶üÆÊËßûÎý¹œ¢¹¶¼àß¾ ûÚ¿ýò„š÷¢þþZŒ±äOýž¿»\ø›?ú˜¿€¿‹÷«ê¡Ìýô_ÿpjõ(šÁ&¼ÃŸ·4Z·0zºíp°7¬2Úˆ«oH‰™fMߥjiZ–nõƒ× åxæé…^:¡d^q{½È™wî½)Ì=À¹Nv8²f–]çHƒ‚¦ƒªéȘgâˆÉ™DŒ¨ç¨þ¤–šS|%ÚÀ8d¨•XŠd«DnY)Yª˜«›0©(3°\j©e–g¨˜i2gù1iê³Ð:)e°*Pí+×îXǵ´$K§ rôW°ºÉ,yn^ l˜j úöa* ¼kn¥á¹€(¢³Ñöë¯t|Š;@·Öµ ¬0åqí?šÞ¨Ø®ºò8XßÚ¦™çèh¥õÊJÛÆ4̉ä5úýkòÉÿ¡*àÂŒ³*­¯ò‚Ì1¯rÁ5ÃÐ*ÍÞê0¥ÛK1¼g|`º¸žµ®­F î±=(—X¨ü¢|«UÖHd …__ÁªÕb¤¸Ø8³•Á@«7ÓÊvþÌ/á6Ì0Ã]7¬4—ñÑ|Wõtª"©ú®Ÿ½Š©½ØN¨º/!½gB-I6]^oÝõ×YW®uåNhýØ`OÞÅ´¾¸,AµsEw5o“±öê¬ÎºÁ1÷¬‡ôÇh¡VýX´ß——™y|Ë&ìÅ}†÷ÖÔ͉ŽçS„ÆdÕ¡oNQÒ;?ºÊåƒ:«ÏîrÛ4 wÁ±»~þéÕüŠxU K VÐÖ5î’îg…üÄŽ[ütʳ8Q2í]m ™Ûö’°@Ëu t¡c`õˆ=r.‚Õ;B (Á24%\9«™ÌÚ&>š½­Ü2˜ìÐ7ºA£XDkZáæ!„þ„ň;éŸÿÔ‚ö¬L‚ò ²`´¬Èƒ™øÀË91¬ /g†*j°‰Môà'è9ç,hHݾ7†/}/Kß쀳ÛÍËX¬â*&Äù-ïùH ¸Üýp^;üc²/$>D¤˜9-R‚ S §×À)2QІD Ê,¡¾4’Ð;¡'áöIô±/n§la5 »@ Ì>¾Òá Ô%|å04¼£ ³ãž«Hèohªc€bÄ.fòJLä™ 9EZÒYWƒ&—™EjZò˜’d…Ãð–‰;£å&@ôÝm•¤ìáIÞ—4þ¾PoîëXo%–=Nb`œ%|4Œå›I¦$¥ÉÌ'z “‘´\$ZÉ-^pƒ†$-ÀWÓ…P„«|Ý C‰ÎœU´}ëSSÃúR¥L1ŠŸ¿#S‡ì·Cv „’êK¦tèË @Ždƨ6ÉH b’ l$'8ÐG‚L$D9h6¶ìŸè€Lñ¹ˆBcÚ •¼Þ¬Ep>$Åîy/¥xZÒܘ'*ºõ­bÛ¤ôaWúÀWîy˜ÓžôpyÚß÷ÙÜê‡ç½ÜÉNqÏw]ä„¿»ç_n|¸ÛýõþïºÎ·Ã²ô¼%^Hó.Ï}=Ý®¿ýáé¾ò™ëÝïv/?˯pñ;=ãî¿ëÇ~õÀ ÞêÏ_ýÄ ®~ºßÿó§~¦v¾‡u'€sGxËçt%Gzª‡vŸ—{ 7} Ð…Nyï""CyÝ÷y’y°y×åÇ|[w€*Ø€ç}¬gxy—€(|·· KÇz]'|Z—ƒ˜x x‚äÇ€¨·÷W„èWW{~|G(ƒ6¨rhxÂ×zE„7}ðAjôÀŸb]G‚bH"¦†. ¡x1(qQXvnXvO(qJèq7¸qX‡Çǃ —zÈ7pþ(·²çƒ§öW{%—|§7zú÷†œW‚;hw)G„×P€l¨{mh€øtX\U'¦V@P[q…LÄLcÓP¦6£ÈS¥èLcˆMVàö{+ȃÀdžkX‹Æ÷†6ˆ‚wȃµHw{¸ƒ…èj8„q—„Œè€»Ø€Àø‹ã„kØtY×ì'‰×xˆO'Ó¸qg—e‡…“Q-uÐ…•¡d'ÓñD‹t*ÕÔŽŠd=X€TÖ䊯˜IE‡P–Œ«×æç†\„º§~®G€¸È€O‰Ýø2× wvy‡yq·è‹¾È‹¹8„@|Ë(vŧŒ5G… …"Éþo›xÕG ø?G5bQ=•Š2y“cMKUP÷‹Cf³è‘"‰‚qX…ÐÇ‹¦—‹Eù„!iƒq(…57„÷ŒüW’ I|(w µ€'™”nXqɈ!™’i”N¹‘n(Ž$„55p}Qñ#ZLVDM”TEå——”A•äH?õ—xRy ˜k°–JI–ÞØpI¹” Ø~”({v™f‰Œ׌Áè€S z2—–Çב'ɈGˆœ¹–Dˆ1‡½øv˜šìÇšK—’€55À°V“5MXÔ—IY¤9>µEXÔŠ TEK´—Åþ csH=9“?Yû˜vÌȈᧂE zßé‘E¹ˆN{aY–ޏƒƒwè§š°¹‹Î‡ž9‘–ãÉ™Ïh™þgLi’Ê(Ÿ\Y…±iŒn —ác>>aŽ@)@Å”—δA͹L¤øH¤(T¹œ%= ÔœÐÓ$ÓY§âA7ö!†–þùš8—šÛ8Ÿw·{o÷™Nøwe ™š·h–©Þ‰{J逯‡žÚø˜šišP‰U)„’9h¸Y>ft†½Š¿¹Ž5yM­xI„©T<)Pú Ïù¥‹ÄŠD¢˜#¢8A]AêIg‘+¸¦uWƒt؄ǔ…7¤‰™ ‘þT¹¿8zô™ƒIzŒ1š‡ð‡‰ËÇ8rÆø|÷™¦±Çqn –‹g oÉÃtI _Ø ªð Ä“=EEJÕLÏTªDÕ¥ŒôœÄY6Š"dú9 – àöžG¹ŸB˜q› z-8Œµù*wb)ƒjúÄX£mÊy¦‡«Äh’{˜~„Љ´w¸J€® h0H„…Gx­MZ>ÍPCÊòXœ Ž£Tɹœaê—j˜€©Eîš@Ê=T;y"ŠùRr´ê£ ‰{KÈžý©£+˜r“¸¦üyƒ²—¬!ÇtÊÚv°I¬´wr·€¿~…šŒJšŸq7‡Äw’ü'ˆ'Z>ªþžÖú€TW Te º ÂØ jøØ¡¯j*fSà––”Y‡؃EÚw6š«³G›@úyIiÀ(ب‹¥ ëY‚ y¬8¸Î(”h÷”Œ °»£?x±©ûÖ­eQ,¹EÄ_3 -øvÙÉ1ˆ™H„ÒH‹ñ×™RÛu(·ù§z:¤Ø¢˜‰Ñ˜Ÿn*¬YÛ·†›¬–(µù‡k´} Ž¢¹°?8”ŠºiF×W ŸÖ0³÷š¶dˆ*l1«pš¢•ùu Y¬†h›„û«éYw|[¸FKu7Ci›4xtJsÂ(»;[‡F«ŽÉžy»±ˆ»ˆª‡ƒˆþv›·´·‰–ö]5r<“÷c¢›½”s"Ѷ깕rsi‡Ûj›«+¼+:¹Ö½së™/ „ˆ—“i¸fW§¶*£zú±Z‹¶;ƒâ ˆ”ˆs²›s”z¹nÒn’ñ’Û§½ \Œù8%:h¨{¸Œš£ ž÷{¢*W•…K²#;‰Èë£xÚš*|Ï÷¦ü†»Â¹¼8·)è°ì»Nø¸ 9{`ë?='"YäÚÀBLU ›`iWð–£ Ä[ ÄL¼ÄZðÄN ÅAÅMBgà>—’þtCüÅñÀÐn`ìa/[nx&g]aÃ4Œºe<Ç_‹þ÷4©tœ]¬¥ËÇœÈÑüS$–ºÖ> ®‘EÈzy®¬8Iì:œtmE-˜‡™AVŠDb¬ÖcñÕ#¦KæË3¡U÷_ Ôt1G³Ì[²¼c&›Š½tœ¡¥¨Ð{é×ïjPÇùLçêPP´¡g{6’ØÊ%]NE_K XÞ…Ë vÎ3²Ø-5D<¶ÛO¡Õùt,*`ɼٞ¢ïˆ¥xþ-Úʩ܅¹ªõª=b|U\½c ¦!‹Ý.ðÕ~e`ˆ|ZK=Û;7Ù‹Ö±Ñ ¨¼ÎsÌ¥§ŠTR=ªÌ-œðÚPÎÙŽÏ-:YíÖÊUØóô]Í%v¤ ¸Ô†1ã¥ØñÜÖ£…a­åƱ֣ÕÔÃÞžÚÜ£}ªÅIÐß:I×€ º¬Ñ¡ÕY†óÛ –c?4< nÛ¯mÝgÝR¶\SfÍØó|\Þq½q½ÙŸ몛ÉMz=P†YÚ/äÍTL!lÏiÚhkŒd©¶±¶«h€ÆgSn±ª;húf±ŠÆdYnfÖJu³ªoI†å\Îd%»lÞ¶åM&­¶yV~³ý~þ·V>Áeæƒç‡n}ÖäZ¾çcþæƒH‘¸ÖçP~åp~åvháÆçc¶m^&Ü ÜΔ~= š†H\iR€Äš~iŸ¾éŸꞎé™6ê¥>ꦮê™ê®îê™®i±¾i«¾±ë¤^ê­.ê·^묮·.ê žêªþê²~êÃ^ì­êÉnì¸þ»쿎êÈ.츎iÍîéÚ~êÛžíÇÎ@!È]é¬,‚ù|îèžîê¾î¢ á“Nîð¢Úd†ôˆØƒ½8û@Ûš¥b¾¡ÔìÎÖÖÑ8ÄïýÎà†€Žœï /ïä`ï?à|K"$CMï%1ñ?þ ԼÌ6=.ä¬ñOñGá,ñŽÇÍÙLO¯Íú†ãÞðylîÌlðúGúðöÌâñCð=ËæÔ4ôâ-ÿ>Ñ3öïÎ]ò.‘ï^-Ë] O=Ñ"MõÀõÐïØw0?²7…—Gö_tà¯A>ýÝ6}`¯1Ø=¢ÊàG¢Ý mGF ÑÄÖ Þß–¿O(¾øûíøÄåJóU!»qÞfüñ>-å¢Ï’&ïE‘¯ÖXÓOÝwÎ=ýùƒýƲû¹-Võ@[Sêý”núŒÅ\C?Þ0s«ÎMAŸtÑâÍgç[åEލ©•Z»ªæ˜¥ð{ÝìGÆø½‡›@Q( @`Él:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xLnÎç@æ—Ûµm¿™O·Æ¼kí’¾·ÏÙ.<€ w:2†@64t04o…Œ‚…5u FFIežŸ ¡¢£¤¥¦§\hi•Šˆu¯”‡k"‹|,‡{¬|Ž»º¾®“¿þ¸=”Âlů¶Ð³@BÍÕ˜¨ÚÛÜÝÞßàܪJµÒ}½~ürƉ•·ÉÂèÁÁçõω9²ƒýî*èíËwç_;Z’ÙÔ)œÃ‡#Jœjœ~,Ѩ1£GŽ9‚ù±ä“'=ªiråG”Ñ<ŒD²æÌŽ,G†¤I’åËœ<[ꢀ²hЛFS"Õi¨M‘33¦›`MÂÑ:‹–ÜÈ5©R¨^Ãò9ÓD°)¡È¶­Û·pÅ©RÓ¢c\)hÙ½ …@Þ©³øâ}'Aðà˜l"ÐаãÇ#C´èƒÁ’v˜3ÿ:óÍ CoðÛìË¢Sk&-þ]Õ°ù-› íYµ’sëÞÍ› e¨².¼`Ýãsfÿú\¹UæâÎ÷@2ÐêØ‘}àW@¾ןkÇ„sÄg®í;½û÷¿i…‡Þ¼¾4ÓÄÇk2 PÄeúÇ" =j·Ç=ø à×_'¸öH 9÷IøŠ¶¹QÕtE!…¹Èd!‚­Q—5Ö ‘Í{,¶è¢`¿UÖ!yÎ)#ˆ‚ öÒa46È#¥áÁ=¦ããv aÀwá”]‘øuHš¨÷â•Xfée94™Ÿ}‰€i‰( ̱ @ F‡Ž9®P•F€ýaö± 6sÊcÕŒ„þ©ß.Äâ‰~ w„_iéè£z#ù™‡˜‚úiäØð¸‘šNh'@—.3Â&r~ॠðXr£«Ö!,sÌ·©š·>¹L%ÓýbZ+F*ì°Ä^Ÿ«>SêýèNFàêÇŽèÙê¦2,Ëdè x•¾©?£æ:\Jš¨b¾ÚïÞf$•Õ,l±øæ[ì¤ëú%qh˜6ÄC$H æÑŠæu´ä0<ð®O"t¨rÓéˆ*¹à9nsš°ÇŸNk_&>LüFȃÈf -¿^s¯¾4×Œå± ›»,Ä œÊ °\gvêÉa¸Ù tÏLþ3°´@²QÚ†ÍW™ÏA³|gÇ5¼‹ŠBzæovKmƒ×ßÑØ ‰Uc¥ÍpÇ ß\1Œ­0 XC€öÄ>[¬H ãGšq”àõ!|‹[=`]Áªzs€v9ÏÆ´t”Ñ®S˜2 MÊ'€®x F¤`V^*®'÷ê¬CÆe€^úýÙ?K¼€ÖíÒñ/»öÚ:—£,1ÖsÜs&Äÿ§¦Æ1p˜JóÌ4ÏzK_|òÏ'ƒ ² `µ>”]û <„*å0R4Ô°X£­Ç/¿[ür~uóõùòd;O½ñO¸º×3‹™/|àYߨ/`UîÉÊ«´ýþñÍ|>³àa.u) Y4Zù²v<F/|—ƒWàp`„!¤7ó‹¡ #‚³تe’ ÝCfw­ï„³Vð˜FÄë•Ј™Y”ÿæ@§ÐîLàðHhÄ’/bŒ8Àö–hš&2/@¸àí¼†A)ú㻋RmÀ!ÌðpìÆ¤g7fpVœÜâ´Îêh„’Ü8"§´ E.e<㙀%±Â2¿#XÆ$HIJfŒ(,b":H˜ØùâasÚϘ¿cæ9ÕÀŠ $ÕÅñ•°üD 7W§l½ wÅ#¢èl$nyL€˜Â$ÞŠxÁqŒ4¨Rä5fþMz{ Z:@IDY¨¨?ÖøÞ“Äw<ôÝì~¨Æ³Ë•±L§:»P?H~ÑG—Ìd)s©ª£^î‚$3a€Ká ³ŸžkÍ%/ žå#GyGI†ñH :åï$ñM=ï’‡¼¤3«Sº ‡•H@ç:GJÒ)¼.M2Ó?’WHi>  Hr@§ˆ¬HšLš·Ø %ÿ©)ºtžX¬f.Q&0©Úl7+ÉP”¢ §b–º’zõ«P¨ßæxÙœPÒ³i ­eL¹[«E4\CÉhÁ#B}RÓ‹M = –Q”˜¤'Ä4¨Éóhþž4‡è’Z<§-ô„Ž=å:ºƒ¶q‚1"«fÕYCwÚ¢4})ñi=$«½s+¸öº~‚ó˜×ëÛYÓvYEi€e`7‹È xÓ±£5-*) 5/* Œ´P™7uÛôÉã° Ê @]ømöº±ëPõ’;ÙqŽb`Œ nñ=3 -V±'[GöÖ¶æ\6úc+¹ÈiŽMλï$RyjH»N'Î&€[ô6˧d]baõ)÷zpM¬’l¶çÜÇ#¦°2ïÿlL•6\î_ƒ`¯ A—JAý\€WG±R+˜ß¥\-M¸%ÙÓUÌë?ì ¬j‚½þ5ˆ zÝEäw*ˆ 7Jiµº›²Ô@€¸“u!YLež”Ž棶¾õH¶Q î+Œƒwü±KX¦kS¯Æ2Å#s-l‹Üb}ÂLˆ±QT…!4œU‚é|yôZÌ̪Lè¸i× ¹º—÷X¸­ ‡øŒŽ™èAe]¸Ué‰b':cqñø‹”àä•\ä²Y3lô*¥,³ÌúÕøð2iæ<‘ ™üisIðåBAÏÈ~Zž¡(Åà6ëŠÒç Á5‘í¨&û½¼2#ìE½ ÖØÖסŒ_ ¤–y|¶­L7„ç[ޱàžüè¡D2D“lt·Ý'ý"ÚÒÜþ=n—9˜Ú'Kù6ƒÎ¶À!%ë¡Yq²#k/”£è;cè¶>”ô!ïÕÑØHÂ4£µåê°Ë/s ÜÜ_Gr Ћ²îÀWž¥mŸ²×W«2¯¿…í|Ÿž÷]µLa½þÍ`B%²€š;ZêCáëÎøŸ“¤ê𲺫&M˧¾›+‹¹Ä©ê´³@ã>þc×÷¶­ï7•//ÊÌŽùè:­ÚAt˜Ù³>o5—Eu_ƒÎ€[åµ¥ð0ªûÝ1Ú]‚T¤¤Â^E„_âùÄøuKI@šŽä#φ,(Íbä!/yÃOÇó¤ÙPßùÉ›žòÛ#=ÚXéO ^ñŸ§þü‚>?yØW¾ñªO}çA¿øîY#œ÷|äCz rþð…ß}ï¡â¯Ï§;§”4üýúo)8ðIOüÁëž4ܺüåUß}ñ›ŸQÆG=™&þÏ{ßüàDâÓ{ðŸÿü*r¿è ?gJ@IÛóxû×F´—xá‡~»Wx h/î—x X{pIûGxØH¸yHxñ7~ßgyÉG~¯ ¥ ÓájNP}&ˆ}*÷~Ý7| ˆx¡ƒ ˜{«G±·€…?C2ƒ´÷‚µ÷~‰÷xŇz²7|Íw{¬¡ãg/·×|1Ø€9hÄ·zîW…W¸z—·h  xxƒº·þx4{Ê'zH8€?…óGlÄJ*ÇwK u+8‡[B7}@gFvèLJ5f¼3oïsvjE÷H#xlÑ^ §‡gò@ ÒEÆAOCX°rH‡š¸ .†-ñZâ¦fw3·hyXˆåòfÕ"m DrÒr-êÖo2&-¥¶v‹øí{)Vf°‹›ø‹c`uâSK¦vˆ^wt\ÖCÅØcƈ8Œ¶Xiª¨Šob¼Fo"Ø…–ø™ PŽâ8ŽäXŽæxŽØÑ‰žø%ugjr¤WîHwΈC°t¨¸Hsg)ûjA‡gm÷‰÷Ô ð¹¸w`ðeþ&Ò ùÿ éI‘ ‘Y‘i‘¹‘©‘ ™\vЇˆŽe†9·Ž®è$ûÆŒäQ(Éhª!_øÆKç&(¶羸F’‘@Ù‘!)”Aù‘E9”FI”J™”L‰”N)Ú…vZ7wïøˆ“r¿„l÷U•A÷s´r¾¶g‚8•¥x‡5×•Ž˜þ…!!U=‰Ïh’r9—tY—vY$5–ŽXް˜o§(0I#òˆø(tÏx“.™oí’nG‹&“­& éߊÊd™Å%T˜)PšÙ™—é™™ù™¢š¤É™£išsÔv3rÃV âökGcÏVlþ©eT nby7ÐÆc¬)v{Y•4%8p°s?ùsÛ™£0™>™’ͨˆÍY‹úzÙzÔIoÕs ¦˜ž²Ä¸'5‰%iŽx‡‡q K–tE’˜1¶oáÙ„8˜,‰a,ycÓ]?ÖJ¦ œpÉd£Hœþ meùŸý  êcz š ª ²¹ >Æ/zÐ'®’Eke1²XŠæŠnà›wVt~œõhOa9›\ôYr]éaRY–< ¿poúYc—òùœíy{¹£6ʞ܉£Ò©£=ú£Î¹M#Y¤ñµtØŸ&Ê—ËÈ¡°¡ž'ˆÊE  ¨vf\‡Œ5€þrœ£b0£RF–fZ¦hŠ–Ú lmÊ›o*b ê¦t §çÐNwóm©ob¹un¢ ÇB‚Ÿ½é§dé’"R zk‡º›ú(o‹Š¢€@ ¶ÑF`Œ`Z.¶˜˜œjdª‡ŸZ¥ž:ª Jª¢Zª¨zªªšŒº2K$cˆyÊ¥ë9ŠL*)j«Vú/9êd²º¹ê‡;ú˜(ó>—êo)ƒ™¬Œ¸¬a׬=¤¬ÎŠ›ÑŠsÌú¬Õ*­Ö:­ð`¯×{6€>è>…³w|Á‡z@X~dXyH†èg„µÇ®ZÈ{Xzòº®î*†íj„EØHÇ×xû°`(¯°‡…þ»®æª…È|§wz{¯(†ø:°Ç÷o@U¬e ¦ÇvCŠÛ± +“!˱"[²${²³ˆ²Xº²´Ê²xJ0³2;³4[³6{³8›³:»³<Û³>û³@´B;´Ô”imY‡Tp¢\¸´g9«ù´NµL«´M;µŒJµX{µZ+«ëfL$òµñ@á–¨¡¶f{›²¨… j{›š¶Z¶­è¶â·r+·m»/´“räjr:iÚZ1Ø:¸Ô¸õø±&›²Šë²×Z¸Ùú¸ÒŠBf%o¦)¶qÛ¶þS¢w›·k;œ;·öh››››Ÿû¨£;º¥{:‰±’)RõÙ¸þ[C¸±ë¸²+¸´{»³›»¶«»‡;²‹Û²¡V:hÑ SS ÈK¼aVÜS¼ä¼Aå¼ÆÛ¼ª[©Éû¼×{½Åk¼Ù˽Ó[½æ¾Íë½È[½È{½ÆK¾Ae¼æD¼×k¾ßK½ë‹¾ò¾Í‹¼œA¾âû¼à‹¾ü{¿í›¼Ò{¾ä«¼Ôë¿\ š@¿ðKôë¿â› À\¿• ¿¡ÇºÉéJpG«¡ÊªPkµ\kª ,µU{ÂY;©ZÂ",Hh@Rã…0,hœ@1L›Ã2,Ã9<Ã7¼Ã¬Ä><ÃC ÄŠ§ÃE<Ä8,ÄFœÄ<|Ä?LÄM<ÅR\N RTœþÅX|ÅHüÄNL]õRWÅ7 uqñº8§vºÆ§ºY§m ÇoÌÆsÇtìŠwì•$0ZÌÄÓÕUÜÇ0,È„<Ɔ\Ȉ¬Ä‰¼È‡ÜÈŒüÈŽÉ)Æa ÉNø† N¡-ÁÉYÁŸÌÜ]!ö桬£,Ê©L«¼£Œ¤\QÊ©LË£lËŸŒË¤lÊŠØ üÊ81ËãþÚyùGÌØnÇL]@å¯ËÌ ;zÑL]ù×FÉ,yöÚx¥—ÍØHÓ,xÍÓÕÌËG€Å¼|ÄüÌÏLÍÑ\ÍÞ¬ÎÓÌÍë,Ïñ Ï×LÏ÷ìÎàlÎâ,ÎÌl¯þlcÉþ<Ïö¼Íf 6ÀyQ¢ÖM÷Š }¹+°aª ÕuÑÑ ÕÕ ÍÒ"ÑÒ#ÍÑ#ýÑ)½Ò+]Ò,Ò)íÒÔ%Ó-mÒ'mÓ"MÓ1ÓÕ¥Ó,=Ó<­Ñ>-ÔAMÒE}Ñ.U/}ÔHY|¡ ­pí¡i›æÐí KD›ÕZ½Õ\ÝÕ^ýÕ`Öb³O Üv—¬€1 7‚A„Ö˜áuýqÖnÍAp `׌zÝ:: MGù×KÙìE æÖ”€mØ8"QþrØO©”¢öH‹­”y½×” 7ýÃiˆÙ I+yuÍØŒ½B3wC­Ù¹„êEÚG9Ùþ•ÝÚùÎ6×iý¦OqéÖ 6 'ÛÑs>¬*ÀÚ®=ÜÂ"‰¨”»™-#”¥9m½D¯øÙŽ€œkúØ%6å]ôÑŽEIQUÙ=œÐ ÜÄ]ÞZb&¤¶ê£ð|Zyủª¿G¤¹=Æõ—¤ª3¦Eõé£ämÞî"}BzܨîÑ’½cÛüi²ëဠ÷ÈŽoŽ_!§D¶)^*#à>âíáß5ªÄ8¤IRW[ØÇ«rª«î’W»Ùã/ž¥Óekv’!â$äºQ¤mǾ%[8uä+ŠiEóG®©Ýô0ŒõD}™þŠåb"ò(dãs‹$ySzÝ€ÆÙ³Xä­S $ähÎØb7ÞåÂ’KJpNm0ØZI-×ÒLBX-59ßR‚`%s§²0c©q?®'ÂV¸N“T5F@žæþÔÒX»kV–¾Çð˜éOfr[öÜÁMb‰Óè×Èv‡Âé»b_ŽþæV~.³jZPÃgéYŽã[?pæ‘~ëaâ#º2‚ç)Äfsþž@ iÎÐSÓTQ¡òÞ•d‹óßheFÖˆ¸Eõ1‰¾eÆ¥ eÓw¸¾íe½7tªÔ9ÈŽQ€>3•ìžM1HÞL´\^;=OM~n¨ÎC¹Å@È3¹ÆôLyƒK—þ0!òmß>Þr`ëÜ~ðnÕu”™OäR„ÇÅÈìçàâ‹`ìÕ¤S'[g…ã+þÛ•-®^=ò$X„Eò©ŽTëEn:²ÛÕð0/„òn˜±XÌUIJSXŽ›A”gä¾S…$òv…ä󈋎„vo5At%ôdT%¿K7~±w…˜íóZ¿ UïèïÓ7*ÛKA%“vÞi0;Wš49¡¾«o ~mB÷uQPX~Àö¯¨í›ªò¼t³[øá° ¤f ®.AtŸqý‡(6Òóañ-µç¢5HÏœŽvô£Ú”$ R®I’ß9U5FÕ²ðqaæþÚ.øªÏõuSÇù¥?ÄDºÆÐ+‡º±}°îpn> µï¢ÞzÍ] ¶ßP#öîxßûÔÔû°÷N.×K?ùs±úÐ €À0ØÉX!`;¤…q¦³Ðº&£0e^(` jL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~ÏÏã:)6],.‡7‰*&޼uÆ\BØË»þV‹É9³[Í¥Îaà°f¿´a~Ä…'TÑárDqÛîeÔr•†¡L¼¸ñãÈýè ìu³ªãnx×-ólÁŸûÅ«óù”Ù9® v>¸î‘äZÞ~´öY“ËŸO¿¾dæî•Û{`ó== WTbÖ~úõæ—*ë ¥p+äwÎZ“”Ø„#8•Ý•‰tÊDÃÙ'âˆ$–ÍhŠõòÇzöˆ“–‡ý9 —PæÀµØ„ÐåxštC´¥£âé^J4z¨.,^bYŠÁEט‰PF)å”m€ô[yDæ–%‚ѩКþ`A†E’?‚Yž‹¨-0E‚õä§%go9$ŽhHž›Öß1TöéçŸ$†Ô#!æ\mØàSÝ_1¥¹¡–¢%çzж#Jƒ!Qh¤{½YØ’d~È€x6ò$ ¨¦ª*d¹] ¡#žÍ•çj´òS €—Fàêyïêk6®1à㣦BgZ6hæ)R¬™ Uxnºe1ñ­jíµØfDÉ fþj)„*…ºB¥¾Ðh¹+‰Zª¬àbAEjd¢¢i‹z6I¯­UÑ-L2ÛOˆÙ,ðÀÈà'ÈNÁ²û潈&øn²“¸£§Þb9ím¡ÉO‡Ï>Zd½¯MáRtKŠêÞUÕ¬þòÊ,³¢‚ójºR’jà#‚è,&²/Øæ¯²‰s;AòZ/®¯²wÏÍÒº91¥ÚòÔT³l%“ “ü¨™d]ðî›ÁŠIè W\«Î„Vf´/ siƒÌJ@K‹ÚÐW¡éîYõÞ| ,h$†µæTK€S‚ȇ'nøâ 1nØÜ !Þ¸àWxäân@$— á„[ÞÒãŠ#Ù¸é‡[Nºã‚#™/uJ€ç©'^¹â·³žû箣Î8ä¸ûþøÈû2Eà½S¼‹ ußÐGOe«›§ÞyáØïn¹êNm¯ ö¡sž½ë" ½.:•‡zçN}o½ï‹ü9âíwþ|ýâC>¿væT?÷óÛõ²W¸áɯ%¿û^þÒw¼öñ€g2™ÝÅç¹ímïyÒË íC Ú½®{¸Ó^íôg½Ú)Ïpü`öPø mn}§³Ÿ÷H9¯w÷3` _WÀÊiT âänxB]Îu2DÞøšÃËQÐp™kû’÷ă̢‰²5B\/"ÅÆ#¤vU£6Q4ÛÑðÖE£ýªa^DÛ{Ì‚£Yí¬!k⬉¯¤Hy#î+ysæJŒ-pHjtfÑP%F:ÕçϨ&­JÝJµiG¤ê„pDÂÔ+K9¹º«Ã‰Z%Þ< ÷ªÙŠ`½¦ì]<{V«5hÛ¬ëÊÕù×_^:³:ùml‘®M¶‰/'îY¸3T•”Í=æ;thm -gÚÖðÛ̈¥‚>=nô:Úý@*îÊ{·ç×À÷ÆíÎö™Ä ~›v§nݱíJ·›svrgÆ™¾Î½»÷˜_n7‚ü»ùó§³G)¾½û™£MEŽE¿¾ýûøóëßÏ¿¿NáÍþ÷߀hà&¨àRD(á„Vhá…f¨á†vèᇠ†(âˆ$–hâ‰(¦¨âŠ,’xÁK ãŒ4Öhã8æ¨ãŽ<öèã@)äDiä‘H&©ä’L69äéxcNViå•Xf©å–\véå—LB`xT‚iæ™h¦©æšl¶Ù¥˜ÂéæœtÖiçxæ)$œ.EIF™z æ j衈¾é甉6jå€:*餔òÈgŒVªé“‘nê駇^*墂jjžªêªsŠ ¦¥² jª²Öj«¢cÖë­•ÒÊ+«œ+ì°Äkì±È&;¬®þfú«§¾>{ª²ÔVkíµØÆÃ좤J í®ÞV O‹ä– "<Ûæê¸6+#ºÀ®—ѶÛSò~™ï¼4Žkî¿W¸À¾4Û­Ç À» ó›%†7Ê«-ÃH&¼£Åóúë°¥7L£Ár"ì1Žoœd ¤¬rDЦ-wDJzúóŸ ¨@ë™Í é³››ì8[5ÇbBR›èç@þ'JÑŠŸøìÑAYÈOsZô£ é91 Ñ‚q3HÞœ—8 Q‰Šô¥0ý'Iíµ¼¢jš1Í©Nß9SåÝì¤@Ji¸VúP ¹t§HÝiO±öSiv4P@TwÕ©¶ÓªIçRe×TMfTpD ›‘éÑsb5«h¥èV¥v#›~ §è¬*Råê㦕k•[WúUµ…utæë‘D{r×Â4¯M„"PßúT³:V§v5¬L êÓ¶.Vd}íÚ_1u0²BU² ¥'b-æÖÁÁUªŽTU›Ú©Âcµ¯ëc¥ÊZÔ†V£­éeK!Bùö·À ®p‡KÜâ÷¸ÈMîoþ)V; ¶¬t½­t×¹Ôe}l·;­k·kVîÒ¶»mlmë]ñNÕÍâuƒ¹Aåº÷½ð¯|— Ê¢–ó¼ømçVϸM§êh°² 0V]`ò~Ö¶p~÷ëÂõj2[ް„«%:ÎGGͯ†×š8·®VðlŒàíâc¶V0~9œ;£tÂ0ޱŒ›8NQzVÃ8V@n÷ÊÑÿz4Äq‰U¬N #˜ÄÓݱe/i¤ó¹9Æq^Aˆ*ìZrFýrxƒ\àxËDN2eýÈc&”¥F-k”Ï;e•Š8Õ2yËÛeð~WÈâõ²˜giPìšyGNn©š×,þÝôòפþÍQ–¿\âÚ¹Ñæí²£ýlë ê¢vayíµDã(ÃÊF+³«\ì:Í˶¶ù MXwTÛàþ·­Mì…ûÜ,º®1Œîv«h–ñuöàîz›Þð5’½÷ý¡Ý^»Ú6 €|åjÇ»H™µÙ›ÿ p,]¹áXJøÌ¾nˆ7éᯒÄMFqûfÜIÿ8“6¾±Ž7—œ"OcÊ·Dòaú»â+orIc.¤–³×‡»’É;Vþš)ä>GøÌÏ—¼&áœH;·p`ƒŽô¡3G6G)™ûø¨—{üéœÂz“¢Î3åŽj7´! Anõ“ÛXëu:ÚoÄu„åètÓƒûÙt^vž;wíùT;Þǽ¤£/ xTŽãß«®î«ïÝRz?¼ÚN3¯Ïîeqœ Ïè^x³?yGȼæ7ÏùÎ{þó ½èGOúÒþºÊu3»æËúÖ»þõ}ï‘o¼·ó„ƒŸ:à­Xw¥÷óÀ¾"%¦ Ÿ«_½ð—oâ_àøH<íkxÈã^ð‘Ïþ’’~ì¥ëÌ¿œ__ ù©?óÉ|èö‰'™íbg}¹þ+Žòm…9Ž ô¿ÿW¨~4À~ÑçPȧzé7øH€)`€ïç~Ò¶·?}s}Av·Ç{•gw(Ç#üçð€%¨&" ÏÔ| XI 0ƒ ‚`ƒ*8,X&.¨oÈ*Ü÷*!ˆy&ø8˜G˜ƒÀ‚ct€DHƒ4˜„'¨„…ïGG èƒFgiˆ„Î"‚EX…È€ñP‚gÈ€V˜ˆOå÷‚…w,H؆(ð†‘‡\øM^*½×}¿÷}c€`„1H†fˆ†v؃Z˜…MXèƒQ(…”Xƒu¸ˆ%ð†#äˆD2}¼†þ%†Á‚ˆjHˆ$X†¥ˆ‰œX|_µ…¾6‡SX,¨¨Š:…­è„B·B ˆl92‚¨˜‚Ø€¤hŠÃh‡ì+¬(‡ù7‰2X‰Rø€TH‹pŒË‰ð§‹(„gG„§Œþgˆ³HŒªH~™…‹¡&‰ÍØŒÎh‰á(@Ž»bŽC≷²‹Þ׋ƒèÝxŠÅ؆ä(‰‘‹ê¸ŽÐ莵8Fà"&ˆè{w'ˆû‘UŒˆè|lj=&ë8…íh€‘좑5gp°w’(ùz ˆ‰ÝØd(ŒŠŽýh… hÖø„cYƒƒ’ïH>D%Ò—’Fy”gþlÚxyß”9@|$—“¯¸Œtè”&•G$•>Çp"h•7•ÉÕè•3–Èõƒ…Ä•ÀG–ˆ… –é–0 Ã÷tjÙ”r9—oå!Ê—yÙXÙ!v©7~éP©Qp¹‰‡¹‰‰xƒixxÙ˜ŽÉX©“ˆ„iÈ9Ž– hh©Gwé’Šxˆk¸™h“âX“6ù™}yS xƒÏ؉‰ š‘iyÚä‹kø‹1H‘…È´x›¯éš~é•H…µ¹ˆÄ‰™7šûG‘H“1y‰¬Ùš¦¥˜Åùˆh,7xš¿É†'(žâ™šËiÍ9•4… œî)‘Á¹šÃþiœê ›’Xˆ=ÉŽßXšäi„þ9‘ÿù éyŽAÇž6›4I¹åiº‘:–‹ÄŽÔ™ ¥8Àð öY „y ÀiŠ *¢ªù›NÉ¡ô™¢Üƒ38ÎXjš!êŸ2Ù (šLg 5‚ 1*Ÿ#*£@y£p¶™9¡5Ø“?)¢@Zò) *Ú¡[ù¡;¢„8¢?Z‘ )¤ÙE¤ˆœ.šœÂy¡Lª¤ë÷¤fšq:J#<ª† J¥š¥g:¤Îé~ x¤H¦ü‰¡Zš¾ ¥@×pi:#kšˆâXž6˜¤ž‰£¸9§š‰¤ú“›9£fØ 6§[º&2dtžxþœztù$¥jê¦ý‰š§)Œˆj›–úpªª™²H™z(§‹Š&šã©nGf<¤{H¨2b˜®z…ŠÊ¥«Ú«¾ «\ê=¶ª©¸š¬œZ$ºj¼*¬W™ª‹é–ÐzÄêœÆ1z5A`Ôc÷A(>híá“XJ†kY­™(­Àêý™§ðÚ›òú®*è§¡É^wMHӯયcé§›?ò¬êº‚ìʨÀ Û°û°±«„öºGÖ®ÀÓýJE¹÷;õW}»'‰ë#{° P± Û‹ ±Ð² ð² @± k±Ø§ƒw«Ô±<»“÷­Ë8²=R²&ëþ([ŸÔzƒ д ³0³0+³ç™ G»G7û±«­Çг »©Ú7BBÛ•ñY´ÓX³zœHȰLë´M µQ·U‹ Wëƒòv]‹±;ÛCº©=ëµ`»¬A4¶éú‘fkŽ@§ªÊ·°Ç"±P˲l˰4û«Øú#‚]³Z}Ó#®$ã· °÷´çŠ…kš‡Ëˆ—«i˘³ ¯»° »p»²lKµT+¹9X·¹Øk²(t±Ëã¯âª7\¼cçCÍ ~2Ùih¨J¯^É»fJ§…³³k,›»K¹1»»h»‡Í: *¨ôz¾©¯s{‘á ¥jþ«´ðºmë¶ô[»Üë½T ¾”‹´ó¸+oÖ‡@X¾»ê›©è¼üè¦pº¿«[½€½0¿ôû¶.ë½ø«»õھ迻À«²¼¥*¦é[À!œÀ×Ê¿%œ´àºÁO;ÁRÛ½/<¹' ¡âKmä+™øøžéû¨ì ¬À+ ¿OËÂn[»/ ·‹¿ú;ÃîÛ»ã Vì¬Z¨lzÀ#ìÃ@ÜÄ L›1»ÂõkÄ/ÜÅH¬ÄœÅ–Ú#™uj¶›²¼ç :,©ÓûÃLÜ¥­Û¸qÛ²2œºÅj¹Œ·\K«‰âÁgȆÎ+½†<¦ë«~ÔkÆÖ{yÉz¼Ä|\¹>Ò[þÄÈš|*|ºAiÆŽ¼¸œ Ǥ¬¾¥\Æu Ê–k\›üµºC®_ÅDëÉg«Ê•¬ÅALËçGÇmÔ¹w!+(¬ËoÉËÁJÌui˺D‰“³®ì(Ì̵œÊu|Ì'P£´IªŒÌËÙê¹yó3CN²,ÍÉLÍ·¼Å×<›Ùl¢ØÈ åË{?†ÍäüªçLø\¤#ð¥ÑxªeªÌ÷ÚMðÌÆ¢›'nŒ‹|î|ÏúU)œ$©¦Û ÝÍ]{:Á(I˜ÐjÌ¢L_J‰‡Š‚p<Ñ qn|Êä‰ÒÁxÒFMÓ¡œÔ"0Òê ÑNÖM Õ› ¸Ù£bmÅ`ªe²"ÓÖ©Ödz5 ÒR-ËSÌ:Íֆ˜ ÍÕ-×7xÕ; =ýÖŠÃÑÙÔ…=‹* mÍJÝ‘]ÕTœšcx ¨zíØßiº{=Ó‰;­¹ü¤QíٌݞT½ÓÊŸ¤ÝEH}ŸõlÏ¥mÖ9„Ô¾m¨„Ú¼³­p}ÛˆKÛFôlÜZ )aÙ®ÌíŠZmάM¸“ÝÍýÉ&lÇÌÝÙ·ÜÆM—nÝ1­Í¡ÍÔð™Ò«þýÝãŒÝ«¨Ý |ÚøÕ(8×é½Þ]mà}Ûâ=ÍñÝЃMÒ£\ˆý¬ ù]lû]Ïý½ËÅÝÕÞœiØ:œØGÜZÓ5àÑN*ßöŒÏ(ŒÚ„ÑeHÕvÝ–Š¥­ ¢* ÓYýȨëáΙ!NÀu½¤¾®'¾žŸÍÑ JÚð ãâK-‘ jª%^–ë­ßŸýÛÓIªD Ü-þãùÌÝnÙçmÀ{êÔ7NnkSmÊX*ÚXíŽ þâSîâ´9ã¢MŒ°½Ù_™ä¾ãb}¥c*æG®Ðnæè×Cþ¦ŠÕ[n­Ó=èÕ}ÖLIšÚ¼ÚÜÆ˜Èþ˜ç~æéÜçþÍÓ…Œåް9sNç|Zç=J©”ŒæÒ äTî€~¢pîår^ãç]瞎A®çŽìÞ«ˆÜºÍ’¼Ã`žÙE.ÛQn´äÝ]Žj@Ý B]Ôóªì’ é¥.é¶^옖àä\摾çÑ-íFíÒlíÏŽí%€Íö}ç» ífÆíÈìíòí“Þ¢´‰ÞágîL†îĬî$ î] ¦=îÖžëK¹›¶žÝÂÞàê#凜é* ï—DïºlïZiê¤Î jÜà(½Þï9ÚÞ÷ý ×ξîø>ß”¾Ãs.| /IûëðÎâ£.å#/äVÎÔÒ•ºé+·òáÞÖ6¿þÍ1.òµn^í‘4òxŽó)GÈE-ál:ªL_ªOï!ïAîæ üÑH/r_>¯YþÆÃxÕÀþò¿Ý‚W¿ìF¯õ¿ØÖè6îØVzÅoâ³~íUÏç3Ñßóå¾êÆÞê¡®š£ Ùðîówÿíy¿Ï?Ü—éö†¾›úø£…¿æÇ[ÿœÉŸíSÏü‹¯÷úÉ–Ç/šÓßÝÕú§Nòô ýmâoþ¿œÿýÃÎø­JàÈÎûãI£MþüÑýhÚýá­þ/þùØjûP €V‰çµÙ0Ì£4ÒTWtu_8–gº¶oü^¤¡ÏLÕ"dR¹d6ÏPñ䔺Z±ôht½ßÆ$ö9eM!kARÔB>§Ó«9|^¿çç³¾Ÿ @¢›£37¨6ÅF78*™+˜¬F.00F5¶5³M‹Ž ÐPGȦ»>ÕUÖVI¡ ØÀT˜Ã±M&F͵Rß§S¦Ú’É—JÅKL/^MωN‘PÞßà¥aWìlm›¿!AB‚ë•Û-Kܤé_õj¥ëb«Òdå°hhÎgüéÄuþS•cwÛ$hl–¬AÞÄ©82JPœ"n 墘týÖµKòs)Âã+¥£ä:][7  €¹îåKÃ+Bp0K h¶SnÊ\Ç>ë`Õ®^¼G)%}\Ù2;¬Âúnæ9¡M°‚ ^,ŸÙ^…¥:¾ü&³5I”[Ï®Û6JgÜ|ÿÞ´)šôC©‹QŸVIÛ—m×HágÞ9æÜÑgî“g"iƒ£Îκyþrb’Éþ^^ÑsÒÕ¤þ™–¡‹Àã#6‰‘dEóZÐUŽEÕ'¼Ë¯€ý$m=sh/0øtP¼¼^Šm9¥¾P»! /«;leAœl 'CÁ›‚ÃÉ(D/4¯@=”Q{k°DÓÛP³þ(‘g®¹ˆÈ>üN+ÆgT+pª1G( |í®ý«0¤z¹îº^ŽœRÃ%ì¡Æ÷žŒ2G$'´Ò,³j»á\*M1ëœÌBÌ<³D:«ôñʘéä°á¼ôŒG;Ç=ÀB4bOûOE-–bÑùÎ’sÎ/%TôSÏšd4,=!}PR+È«´MA3þ-ëÅNÝuVØ[7V²c~ãW;ÅvùcOàUåÊrvy=˜g ¬Ü „åV¨Mùd9`”õ@túIú‘¥uüYa|GE@ªœÝ¶¸ˆq®ºd‚ÝeS¤%öõnjýÆ–òê—³f°Ô´…äBñþʾøl ëjmÚ|†;· eQ f؆6gxXøÞg—½ï0¯Íh,p·c\ÆÂc8<ê1_<ó·Ì^ËÄ%Žèm{&}sÎåv4æ»1?ôd½S^uL¹3iÛ)–ö;·¥öÙßÙ K3éýáßékMpâû2þ…Ï‘_Kù‚ôõc~Bžyú׫Gðz²×žÓÛëݵ{æ¿3üèiÞd÷ÍÇ ýqÖ·Œ{ÓõŠwàëDÐÅ­ËPO[áCüçºö ì}ôÞçg@”T® —K^ùš !téZTD††È‰-‚ËÓÞ¹ÖUJi+Þ ';1Œu储þyÀ½åHtÎñ  ;ÂÁ4 xié!Mc* êNˆ3Þ·ŒxD–Éc´Ï¦+Š.| QxEöd1O[üâÖEžÈkŒŽ+cmŠˆFݨÑV1Ûø²ÕÆÚÍ1sˆKáÇÞ©;â‘+HMwv¸ÁL 1?‚¤¡»`•tHÒŒ‰T¤V9B¨”ðY}Ä «Ø² Ñ –Ò$ñ'ÁNNGÈbžÝêÈ´Õ°it´ cèÄ"AéŒ±ÄÆ'ô«[Z-—VÜå !?Mq)JÃ$æ‡fy#]h)™¸Ì[*¥xº@aŠ”ˆ¬$*«YcnS#”<¥. ùª'’ˆšç¤Ñ5éþ¦Îãp/ËkBóúVšW‘³V£':íy+|²EŸÄà§;-¨©€ºr™æ,è6Ò¶E|1 ÕüúùN}HS˜­¨+.Š–cÞ,5£+'ÓZÈËÝ…S8%œ&IKÊŠ“–2£*%KJ6o’±R¾le·ZJЛjØCÒ–åBÆ~M^ÊÂÀ/ï7Q—¦ -Å<“ª ƒòñ‘E#kHUUN’£s&W+†U¤~Õ¤a)U3²™‰oœ°:*PÿÑP·¢è•,”ë\G•/>ªkÁëj»ºÇžj­€ ìÉàê×®â“{=šô U@´µìì* yŽxŽ´¯oËl1éjþ8ÎÚ¢èhÏ3YÆmˆûlMW«¹ÖVTsÓ×XyVÖ­î¬"íew)ÞòM6 .X«5ø0•ªO ÊÃGÂ-Ó¨?em3;_гªV•ìo“TÝ;½Ös•íê_p_üæW¿jR¥%¯¥Þ²NwŸú%p~ákÍë—vô­QüÂÖ}æ6m 5Kc%Z€¿÷Àîì„ÆàGF;(]+(SÔzV S1p7̇œ‚oƉùûMÿ2À–'V$aã÷!Æ2fW†aä 5ÇÐMqU»¡#—7È~ïñˆ|•CQÉÔRò‰ÿ Я¸Z–ò”­Ûáþ"¥•±í&•ŠJ”Ç^Ö1˜5x¦`À³fS•±§Ñud¤Íì“–âœä­5½ë«†¡÷Ìçø&ØÃ†ô¢ Å×Tárîò•ßJÐMCšÊ’N3í´›¬dyÍhó¡)¦Û÷Ps9Ñž@`WQGÍZëKÖvǧø+@8=kZëÒØíÓ0¤7 ÏÐöt¥‡Ä󗈱lY·•ȹvVs­ko ¶®Š•êL#&>éŠÙ5y9¶¶µÄÞˆBŠ#$`÷·qðlWE´Ò®ô“+Š2T½d6uº'—ÜÛöæp¸±Ë°x÷Ý^Ì·o)¡vŸ7L¶¥ÁÎL†þÃe×kŒYM~r”§\å+gyË]—#Ú¾/§yÍm~óšÏ|å!ï3©yÍól@èC×#‰~ïf]éù—N£¤?èF—ºÌ«~u:6=êXï(×½žu‡+øëH{Ù©^ö®£ëgW{Û×îg·Çíl—{ݧw»ç]êt×{ßEÍw¿>È€|á«KxÃ'^®ˆW|ã+ÊxÇGž˜—|åшD ¸ óxR 6¿ùl€Âð²|éÁ š‡Óô£€ VÏú|¾õ¡Ÿ½ækozÜWKë6x} zo€ß« ø}þðsozÌßÞóµÅòE/|å/_úο}óað|àcþú°‡}æ_oýéßìxçþö³ßzÙÇ>úÙŸ~úÏÏ~ÛÃ_þ+ýê½î×ýâ¿zòã?ÿðƒ>ðs?Ü¿ðs¿ÿk¿ÙÓ?俸ó?úc>ìû= \@ @í+?Œ@óC@Ù?œ;ò @|¾ T¿¼¾Þc@,?Ï{Á´À¬;4¿\¿„?ã[A $A<¿LÁt»Ì?üc?åËÁÔÁ#ä@L@=ýC¿ ÂþA ”B ´¿èSÂ-¬¾ @ä@2¤¾$Ô>ã³B £<¸áB5ô;6TÒÀ4|Ãñó9’»"ÒËÀ:´Ã¯‹C? D ÁBA,Äþ:DCL˜›»BDÇm\Goì p”Æà#FalDÑÇLÂt=úkÇÍxGÛÛ?{\:sDG|dGç[Ç/@äÇ=ðÇHr<:êŠÌÃSGƒìÆ}DȬ>†t‡ÌB<ˆ¼»¨H„øGÄF}ÌGTþGôHƒüHŒF… À,ÇàŸ»È|dÇ—lɘ” ÖëCš´4Ãq¬FÔ;ŸIæûIŽœÊ0Ê£œ¤<È¥ÄÅa Æ‚¤J¡„Á…”ʫă¬$KjäJzF²ŒImÊöÃȲԃ³¼“’ºÄA±|ËtÁ‘œK³´I3Éœ”È®ÌD IÈa»\ÃÃDÌ:©Ë§dÆÇ„Ì0‘L–œGTTFËÌÔ2¦üŠÔË0œ+MÓ

2 Container Widgets

In addition to providing some nice-looking interface elements, Tix offers some useful ways to organize the elements that you create. It does this by providing container widgets, which are widgets designed to contain whatever you want to put into them.

Different container widgets have different policies as to how they arrange the widgets inside them. In this chapter, we'll talk about TixNoteBook, which arranges its subwidgets using a notebook metaphor, TixPanedWindow, which arranges its subwidgets in non-overlapping horizontal or vertical panes, and a family of ``Scrolled Widgets'', which attach scrollbars to their subwidgets.

2.1 TixNoteBook

When your need to put a lot of information into your interface, you may find out that your window has to grow intolerably big in order to hold all the information. Having a window that's 10000 pixels wide and 5000 pixels high doesn't seem to be the perfect solution. Of course, you can ``chop up'' your big window into a set of smaller dialog boxes, but the user will most likely find it impossible to manage 20 different dialog boxes on their desktop.

The TixNoteBook (fig 2-1 ) widget comes into rescue. It allows you to pack a large interface into manageable ``pages'' using a notebook metaphor: it contains multiple pages with anything you want on them, displays one at a time, and attaches a tab to each page so the user can bring it forward with a single click on the tab.


(Figure 2-1) The TixNoteBook Widget

2.1.1 Adding Pages to a TixNoteBook

The example program in figure 2-2 creates the TixNoteBook widget shown in figure 2-1 . In the first three lines, we create the notebook widget and two pages inside it. While we create the pages, we also set the labels on the tabs associated with each page and use the -underline option to indicate the keyboard accelerator for each page.

Each time we create a page in the notebook using the add method, a frame subwidget is created for us automatically. This frame subwidget has the same name as the page (the first parameter passed to the add method). We can use the subwidget method to find out the pathname of this frame subwidget and pack everything we want to display on the page into this frame widget. Lines 4-10 of program 2-2 shows how to create the widgets inside the ``Hard Disk'' page. Creating the widgets inside the ``Network'' page will be similar.

tixNoteBook .n
.n add hd  -label "Hard Disk" -underline 0
.n add net -label "Network"   -underline 0

set frame [.n subwidget hd] tixControl $frame.access -label "Access Time:" tixControl $frame.write -label "Write Throughput:" tixControl $frame.read -label "Read Througput:" tixControl $frame.capacity -label "Capacity:" pack $frame.access $frame.write $frame.read $frame.capacity
-side top -fill x


(Figure 2-2) Using The TixNoteBook Widget

2.1.2 Keyboard Accelerators

Note that in line 2-3 of program 2-2 , we have indicated the keyboard accelerators for the two pages using the -underline option. The value of this option is the position of the character to be underlined in the string, where zero represents the first character. When the user presses <Alt-N> or <Meta-N> the ``Network'' page will be activated; on the other hand, if he presses <Alt-H> or <Meta-H> the ``Hard Disk'' page will be activated. The TixNoteBook widget will automatically create the keyboard bindings for these accelerators for us, in a way similar to what the menu widget does, so there is no need to set the keyboard bindings ourself.

2.1.3 Delaying the Creation of New Pages

If your notebook contains many complicated pages, it may take quite a while to create all widgets inside these pages and your program will probably freezes for a few seconds when it pops up the notebook for the first time. To avoid embarrassing moments like this, we can use the ``delayed page creation'' feature of the TixNoteBook widget.

When we create a page using the add method, we can specify the optional parameter -createcmd so that we only need to create the page when the user wants to see it. This is illustrated in program 2-3 :

tixNoteBook .n
.n add hd  -label "Hard Disk" -underline 0 -createcmd CreateHd
.n add net -label "Network"   -underline 0 -createCmd CreateNet

proc CreateHd {frame} { tixControl $frame.access -label "Access Time:" tixControl $frame.write -label "Write Throughput:" tixControl $frame.read -label "Read Througput:" tixControl $frame.capacity -label "Capacity:" pack $frame.access $frame.write $frame.read $frame.capacity
-side top -fill x }

proc CreateNet {frame} { ... }


(Figure 2-3) Delayed Page Creation

In line 2 of program 2-3 , we use the -createcmd option to specify that the procedure CreateHd should be called when the ``Hard Disk'' page needs to be created. CreateHd takes one argument, the frame subwidget of the page. As we can see, program program 2-3 is not very different than program 2-2 , except now we can issue less commands during the set-up of the NoteBook widget and the interface can be started up more quickly.

2.1.4 Changing Page Tabs and Deleting Pages

To change the information in the tabs of the pages, we can use the pageconfigure method. For example, the following command:

.nb pageconfigure hd -label "Fixed Disk"
changes the label from ``Hard Disk'' to ``Fixed Disk''. To delete a page, we can use the delete method.

You should avoid using the pageconfigure and delete. Your users will just feel annoyed if the interface changes all the time and notebook pages appear and disappear every now and then.

2.2 PanedWindow

The TixPanedWindow widget arranges arranges its subwidgets in non-overlapping panes. As we can see in figure 2-4 , the PanedWindow widget puts a resize handle between the panes for the user to manipulate the sizes of the panes interactively. The panes can be arranged either vertically (figure 2-4 ) or horizontally (2-4 ).

Each individual pane may have upper and lower limits of its size. The user changes the sizes of the panes by dragging the resize handle between two panes.

Vertical Panes

Horizontal Panes


(Figure 2-4) The TixPane Widget

2.2.1 Adding Panes Inside a TixPanedWindow Widget

You can create a TixPanedWindow widget using the tixPanedWindow command. After that, you can add panes into this widget using the add method (see program 2-5 ).

When you use the add method, there are several optional parameters which you can use to control the size of each of the pane. The -min parameter controls the minimum size of the pane and the -max parameter controls its maximum size. These two parameters controls how much the user can expand or shrink a pane. If neither is specified, then the pane can be expanded or shrunk without restrictions.

In addition, the -size parameter specifies the initial size of the pane. If it is not specified, then the initial size of the pane will be its natural size.

In program 2-5 , we set the initial size of pane1 to 100 pixels using the -size parameter. We don't set the -size parameter for pane2 so it will appear in its natural size. However, we use the -max option for pane2 so that the user can never expand the size of pane2 to more than 300 pixels.

tixPanedWindow .p
.p add pane1 -size 100
.p add pane2 -max 300

set p1 [.p subwidget pane1] button $p1.b1 -text Button1 button $p1.b2 -text Button2 pack $p1.b1 $p1.b2 -side left -expand yes

set p2 [.p subwidget pane2] button $p2.b -text "Another Button" pack $p2.b -side left -expand yes -fill both

pack .p -expand yes -fill both


(Figure 2-5) Adding Panes into a TixPanedWindow Widget

2.2.2 Putting Widgets Inside the Panes

Each pane we have created using the add method is essentially a frame widget. After we have created the panes, we can put widgets inside them. As shown inside program 2-5 , we can use the subwidget method to find out the name of the pane subwidgets. Then we can just create new widgets as their children and pack these new widgets inside the panes. The output of program 2-5 is shown in figure 2-6


(Figure 2-6) Output of Program 2-5

2.2.3 Setting the Order of the Panes

Usually, when you create a new pane, it is always added to the bottom or right of the list of panes. If you want to control the order in which the panes appear inside the TixPanedWindow widget, you can use the two optional parameters, -before and -after, for the add method. For example, the call:

.p add pane2 -after pane1
will place the new pane immediately after pane1. The call:
.p add pane2 -before pane1
will place the new pane immediately in front of pane1.

2.2.4 Changing the Sizes of the Panes

If you want to change the sizes of the existing panes or change their maximum/minimum size constraints, you can use the paneconfigure method. For example, the following code changes the size of pane2 to 100 pixels and adjusts its minimum size constraint to no less than 10 pixels:

.p paneconfigure pane2 -size 100 -min 10
Notice that after you call the paneconfigure method, the PanedWindow may jitter and that may annoy the user. Therefore, use this method only when it is necessary.

2.3 The Family of Scrolled Widgets

With plain Tcl/Tk, the widgets do not automatically come with scrollbars. If you want to use scrollbars with the text, canvas or listbox widgets, you will need to create scrollbars separately and attach them to the widgets. This can be a lot of hassle because you would almost always need scrollbars for these widgets. Sometimes you will wonder why you need to write the same boring code again and again just to get the scrollbars to working.

The Tix scrolled widgets are here to make your life easier. With a single command such as tixScrolledListBox or tixScrolledText, you can create a listbox or text widget that comes automatically with scrollbars attached.

Another advantage of the Tix scrolled widgets is that you can specify their scrolling policy so that the scrollbars appear only when they are needed. This feature is especially useful if you are displaying a lot of widgets and running out of screen real estate.

2.3.1 The Scrolled Listbox Widget

You can create a scrolled listbox widget using the tixScrolledListBox command. Notice that the widget created by the tixScrolledListBox command is not itself a listbox widget. Rather, it is a frame widget which contains two scrollbar subwidgets: one is called hsb (the horizontal scrollbar) and the other is called vsb (the vertical scrollbar). Similarly, the listbox being scrolled is also a subwidget which is appropriately called listbox. Therefore, if we need to put things into the listbox (as we always do!), we can use the subwidget method. As shown in program 2-7 , we first find the pathname of the listbox subwidget by calling `` .sl subwidget listbox''. Then, we insert some items into the listbox subwidget.

tixScrolledListBox .sl -scrollbar auto
set listbox [.sl subwidget listbox]

for {set x 0} {$x < 6} {incr x} { $listbox insert end "This is item $x" }

pack .sl -side left -expand yes -fill both


(Figure 2-7) Scrolled Listbox Widget

Scrollbars not displayed

Scrollbars displayed only when needed


(Figure 2-8) Scrolled ListBox with Automatic Scrollbars

Also, as seen in the first line of program 2-7 , we use the -scrollbar option to control the scrolling policy of the TixScrolledListBox widget. Usually, we'll set it to `` auto'': the scrollbars are displayed only if they are needed. Other possible values are `` both'': the two scrollbars are always displayed; `` x'': the horizontal scrollbar is always displayed, while the vertical scrollbar is always hidden; `` y'': the opposite of `` x''; `` none'': the two scrollbars are always hidden. The result of program 2-7 is shown in figure 2-8 .

2.3.2 Other Scrolled Widgets

The TixScrolledText widget is very similar to the TixScrolledListBox widget, except it scrolls a text subwidget, which is called text. One problem with the TixScrolledText widget, though, is its -scrollbar option doesn't work in the auto mode. This is due to a bug in Tk which doesn't report the width of the text subwidget correctly. Until this bug is fixed in TK, the auto mode will behave the same way as the both mode for the TixScrolledText widget.

Another scrolled-widget is TixScrolledWindow. Sometimes you have a large number of widgets that can't possibly be shown in the screen all at once and your application doesn't allow you to divide the widgets into several pages of a TixNoteBook. In this case you can use TixScrolledWindow. It contains a frame subwidget called window. You can just create as many widgets as you need as children of the window subwidget. An example is shown in program 2-9 , which uses the TixScrolledWindow widget to implement a ``cheap'' spreadsheet application. The boxes of the spreadsheet are just entry widgets and they are packed inside the window subwidget. The user will be able to scroll to different parts of the spreadsheet if it is too large to fit in one screen.

tixScrolledWindow .sw -scrollbar auto
set f [.sw subwidget window]

for {set x 0} {$x < 10} {incr x} { frame $f.f$x pack $f.f$x -side top -expand yes -fill both for {set y 0} {$y < 10} {incr y} { entry $f.f$x.e$y -width 10 pack $f.f$x.e$y -side left -fill x } }

pack .sw -side left -expand yes -fill both


(Figure 2-9) Cheap Spreadsheet Application with TixScrolledWindow

There are two more scrolled-widgets in the Tix library: TixScrolledTList scrolls a TixTList widget and TixScrolledHList scrolls a TixHList widget. The subwidgets that they scroll are called tlist and hlist, respectively. The use of the TList and HList widgets will be described in the next chapters.

Tix8.4.3/docs/tix-book/preface.tex.html0000644000122200012240000000452207170671616020165 0ustar jeffhjeffh00000000000000

0.1 About This Manual

This manual is the programmer's guide to the Tix library. It takes you though a step-by-step tutorial about the different widgets and functions available in the Tix library. It also covers how to write new widgets using the Tix Intrinsics objecr-oriented programming interface. The accompanying Tix Reference Manual is a collection of the Tix manual pages. It describes all the options and other details of the Tix widgets and functions.

0.2 About This HTML Document

This HTML document is converted from LaTeX source files to HTML by a home grown TeX to HTML converter. This converted is written solely in TCL and it can convert any LaTeX commands used in this document (and probably nothing else).

0.3 Other Formats Of This Document

This document is also available both postscript and HTML format. The postscript format is available at ftp://ftp.xpi.com/pub/tix-4.0.ps.gz. The HTML format is available from http://www.xpi.com/tix/doc/tix-4.0/tix.book.html

0.4 Organization of This Manual

Chapter 1 , Introduction gets you started with the Tix widgets by describing their basic options and operations. Chapter 2 , Container Widgets, describes the Tix widgets that can be used to contain other widgets and maintain their geometry. Chapter 3 , TList Widget and Display Items, describes the tabular listbox widget and the Tix display items, which are used by many Tix widgets. Chapter 4 , Hierarchical Listbox, describes how to create a hierarchical list structure using the TixHList widget. Chapter 5 , Selection Files and Directories, describes how to use the file and directory selection widgets in the Tix library. Finally, Chapter 6 , Tix Object Oriented Programming, describes how to use the Tix object oriented programming library to create new classes of Tix widgets.

Tix8.4.3/docs/tix-book/oop.tex.html0000644000122200012240000007700607203353627017360 0ustar jeffhjeffh00000000000000

6 Tix Object Oriented Programming

This chapter is intended for experienced programmers who want to create new Tix widgets. If you just want use the Tix widgets in your applications, you can skip this chapter.

6.1 Introduction to Tix Object Oriented Programming

Tix comes with a simple object oriented programming (OOP) framework, the Tix Intrinsics, for writing mega-widgets. The Tix Intrinsics is not a general purpose OOP system and it does not support some features found in general purpose OOP systems such as [incr Tcl]. However, the Tix Intrinsics is specially designed for writing mega-widgets. It provides a simple and efficient interface for creating mega-widgets so that you can avoid the complexity and overheads of the general purpose OOP extensions to Tcl.

The hard thing about programming with mega-widgets is to make sure that each instance you create can handle its own activities. Events must be directed to the right widget, procedures must act on data that is internal to that widget, and users should be able to change the options associated with the widget. For instance, we'll show an arrow widget that needs to know what direction it's pointing; this requires each instance of the widget to have its own variable.

Furthermore, each widget should respond properly to changes requested by the application programmer during the program's run. The whole reason people use Tcl/Tk is because they can alter things on the fly.

The advantage of an object-oriented programming system is that you can easily associate a widget with its own data and procedures (methods). This chapter shows how to do that, and how to configure data both at the time the widget is initialized and later during the program.

6.1.1 Widget Classes and Widget Instances

All the mega-widget classes in Tix, such as TixComboBox and TixControl, are implemented in the Tix Intrinsics framework. Also, you can write new widget classes with the Tix Intrinsics. In the next section, I'll go through all the steps of creating a new widget class in Tix. I'll illustrate the idea using a new class ``TixArrowButton'' as an example. TixArrowButton is essentially a button that can display an arrow in one of the for directions (see figure 6-1 ).


(Figure 6-1) Arrow Buttons

Once you have defined your classes, you can create widget instances of these classes. For example, the following code will create four instances of your new TixArrowButton class:

tixArrowButton .up    -direction n
tixArrowButton .left  -direction e
tixArrowButton .right -direction w
tixArrowButton .down  -direction s

6.1.2 What is in a Widget Instance

Each widget instance is composed of three integral parts: variables, methods and component widgets

Variables

Each widget instance is associated with a set of variables. In the example of an instance of the TixArrowButton class, we may use a variable to store the direction to which the arrow is pointing to. We may also use a variable to count how many times the user has pressed the button.

Each variable can be public or private. Public variables may be accessed by the application programmer (usually via configure or cget methods) and their names usually start with a dash ( -). They usually are used to represent some user-configurable options of the widget instance. Private variables, on the other hand, cannot be accessed by the application programmer. They are usually used to store information about the widget instance that are of interests only to the widget writer.

All the variables of an instance are stored in a global array that has the same name as the instance. For example, the variables of the instance .up are stored in the global array .up:. The public variable -direction, which records the direction to which the arrow is pointing to, is stored in .up(-direction). The private variable count, which counts how many times the user has pressed the button, is stored in .up(count). In comparison, the same variables of the .down instance are stored in .down(-direction) and .down(count).

Methods

To carry out operations on the widget, you define a set of procedures called methods (to use common object-oriented terminology). Each method can be declared as public or private. Public methods can be called by the application programmer. For example, if the TixArrowButton class supports the public methods invoke and invert, the application programmer can issue the commands to call these method for the widget instance .up.

.up invert
.up invoke
In contrast, Private methods are of interests only to widget writers and cannot be called by application programmers.

Component Widgets

A Tix mega-widget is composed of one or more component widgets. The main part of a mega-widget is called the root widget, which is usually a frame widget that encompasses all other component widgets. The other component widgets are called subwidgets.

The root widget has the same name as the the mega-widget itself. In the above example, we have a mega-widget called .up. It has a root widget which is a frame widget and is also called .up. Inside .up we have a button subwidget called .up.button.

Similar to variables and methods, component widgets are also classified into public and private component widgets. Only public widgets may be accessed by the application programmer, via the subwidget method (see section 1.3.1 ) of each widget instance.

6.2 Widget Class Declaration

The first step of writing a new widget class is to decide the base class from which the new class. Usually, if the new class does not share any common features with other classes, it should be derived from the TixPrimitive class. If it does share common features with other classes, then it should be derived from the appropriate base class. For example, if the new class support scrollbars, it should be derived from TixScrolledWidget; if it displays a label next to its ``main area'', then it should be derived from TixLabelWidget.

In the case of our new TixArrowButton class, it doesn't really share any common features with other classes, so we decide to use the base class TixPrimitive as its superclass.

6.2.1 Using the tixWidgetClass Command

We can use the tixWidgetClass command to declare a new class. The syntax is:

tixWidgetClass classCommandName {
    -switch value
    -switch value
    ....
}
For example, the following is the declaration section of TixArrowButton:

tixWidgetClass tixArrowButton {
    -classname  TixArrowButton
    -superclass tixPrimitive
    -method {
        flash invoke invert
    }
    -flag {
        -direction -state
    }
    -configspec {
        {-direction direction Direction e}
        {-state state State normal}
    }
    -alias {
        {-dir -direction}
    }
    -default {
        {*Button.anchor         c}
        {*Button.padX           5}
    }
}

(Figure 6-2) declaration of the TixArrowButton Class

We'll look at what each option means as I describe the command in the following sections.

The first argument for tixWidgetClass is the command name for the widget class ( tixArrowButton). Command names are used to create widgets of this class. For example, the code

tixArrowButton .arrow
creates a widget instance .arrow of the class TixArrowButton. Also, the command name is used as a prefix of all the methods of this class. For example, the Foo and Bar methods of the class TixArrowButton will be written as tixArrowButton:Foo and tixArrowButton:Bar.

The class name of the class ( TixArrowButton)is specified by the -classname switch inside the main body of the declaration. The class name is used only to specify options in the TK option database. For example, the following commands specifies the TixArrowButton widget instances should have the default value up for their -direction option and the default value normal for their -state option.

option add *TixArrowButton.direction up
option add *TixArrowButton.state     normal

Notice the difference in the capitalization of the class name and the command name of the TixArrowButton class: both of them has the individual words capitalized, but the command name ( tixArrowButton)starts with a lower case letter while the class name ( TixArrowButton) starts with an upper case letter. When you create your own classes, you should follow this naming convention.

The -superclass switch specifies the superclass of the new widget. In our example, we have set it to tixPrimitive. Again, pay attention to the capitalization: we should use the command name of the superclass, not its class name.

6.3 Writing Methods

After we have declared the new widget class, we can write methods for this class to define its behavior. Methods are just a special type of TCL procedures and they are created by the proc command. There are, however, three requirements for methods. First, their names must be prefixed by the command name of their class. Second, they must accept at least one argument and the first argument that they accept must be called w. Third, the first command executed inside each method must be

upvar #0 $w data

For example, the following is an implementation of the invert method for the class TixArrowButton:

proc tixArrowButton:invert {w} {
    upvar #0 $w data

set curDirection $data(-direction) case $curDirection { n { set newDirection s } s { set newDirection n } # .... } }

Notice that the name of the method is prefixed by the command name of the class ( tixArrowButton). Also, the first and only argument that it accepts is w and the first line it executes is `` upvar #0 $w data''.

The argument w specifies which widget instance this method should act upon. For example, if the user has issued the command

.up invert
on an instance .up of the class tixArrowButton, the method tixArrowButton:invert will be called and the argument w will have the value .up.

The invert method is used to invert the direction of the arrow. Therefore, it should examine the variable .up(-direction), which stores the current direction of the instance .up, and modify it appropriately. It turns out that in TCL, the only clean way to access an array whose name is stored in a variable is the `` upvar #0 $w data'' technique: essentially it tells the intepreter that the array data should be an alias for the global array whose name is stored in $w. We will soon see how the widget's methods use the data array.

Once the mysterious `` upvar #0 $w data'' line is explained, it becomes clear what the rest of the tixArrowButton:invert method does: it examines the current direction of the arrow, which is stored in $data(-direction) and inverts it.

6.3.1 Declaring Public Methods

All the methods of a class are by default private methods and cannot be accessed by the application programmer. If you want to make a method public, you can include its name in the -method section of the class declaration. In our TixArrowButton example, we have declared that the methods flash, invert and invoke are public methods and they can be accessed by the application programmer. All other methods of the TixArrowButton class will be private.

Usually, the names of private methods start with a capital letter with individual words capitalized. The names of public methods start with a lowercase letter.

6.4 Standard Initialization Methods

Each new mega-widget class must supply three standard initialization methods. When an instance of a Tix widget is created, three three methods will be called to initialize this instance. The methods are InitWidgetRec, ConstructWidget and SetBindings and they will be called in that order. The following sections show how these methods can be implemented.

6.4.1 The InitWidgetRec Method

The purpose of the InitWidgetRec method is to initialize the variables of the widget instance. For example, the following implementation of tixArrowButton:InitWidgetRec sets the count variable of each newly created instance to zero.

proc tixArrowButton:InitWidgetRec {w} {
    upvar #0 $w data

set data(count) 0 }

Earlier, we showed how each widget you create is associated with an array of the same name. Within the methods, you always refer to this array through the name data --the method then works properly in each instance of the widget.

Chaining Methods

The above implementation is not sufficient because our TixArrowButton class is derived from TixPrimitive. The class derivation in Tix is basically an is-a relationship: TixArrowButton is a TixPrimitive. TixPrimitive defines the method tixPrimitive:InitWidgetRec which sets up the instance variables of every instance of TixPrimitive. Since an instance of TixArrowButton is also an instance of TixPrimitive, we need to make sure that the instance variables defined by TixPrimitive are also properly initialized. The technique of calling a method defined in a superclass is called the chaining of a method. The following implementation does this correctly:

proc tixArrowButton:InitWidgetRec {w} {
    upvar #0 $w data

tixPrimitive:InitWidgetRec $w set data(count) 0 }

Notice that tixPrimitive:InitWidgetRec is called before anything else is done. This way, we can define new classes by means of successive refinement: we can first ask the superclass to set up the instance variables, then we can modify some of those variables when necessary and also define new variables.

The tixChainMethod call

The above implementation of tixArrowButton:InitWidgetRec is correct but it may be cumbersome if we want to switch superclasses. For example, suppose we want to create a new base class TixArrowWidget, which presumably defines common attributes of any class that have arrows in them. Then, instead of deriving TixArrowButton directly from TixPrimitive, we decide to derive TixArrowButton from TixArrowWidget, which is in turn derived from TixPrimitive:

tixWidgetClass tixArrowWidget {
    -superclass tixPrimitive
    ...
}
tixWidgetClass tixArrowButton {
    -superclass tixArrowWidget
    ...
}
Now we would need to change all the method chaining calls in TixArrowButton from:

tixPrimitive:SomeMethod
to:

tixArrowWidget:SomeMethod
This may be a lot of work because you may have chained methods in many places in the original implementation of TixArrowButton.

The tixChainMethod command solves this problem. It will automatically find a superclass that defines the method we want to chain and calls this method for us. For example, the following is a better implementation of tixArrowButton:InitWidgetRec that uses tixChainMethod to avoid calling tixPrimitive:InitWidgetRec directly:

proc tixArrowButton:InitWidgetRec {w} {
    upvar #0 $w data

tixChainMethod $w InitWidgetRec set data(count) 0 }

Notice the order of the arguments for tixChainMethod: the name of the instance, $w, is passed before the method we want to chain, InitWidgetRec. In general, if the method we want to chain has $1+n$ arguments:

proc tixPrimitive:MethodToChain {w arg1 arg2 ... argn} {
    ...
}
We call it with the arguments in the following order

tixChainMethod $w MethodToChain $arg1 $arg2 ... $argn
We'll come back to more detailed discussion of tixChainMethod shortly. For the time being, let's take it for granted that tixChainMethod must be used in the three standard initialization methods: InitWidgetRec, ConstructWidget and SetBindings

6.4.2 The ConstructWidget Method

The ConstructWidget method is used to creates the components of a widget instance. In the case of TixArrowButton, we want to create a new button subwidget, whose name is button, and use a bitmap to display an arrow on this button. Assuming the bitmap files are stored in the files up.xbm, down.xbm, left.xbm and right.xbm, the string substitution @$data(-direction).xbm will give us the appropriate bitmap depending on the current direction option of the widget instance.

proc tixArrowButton:ConstructWidget {w} {
    upvar #0 $w data

tixChainMethod $w ConstructWidget

set data(w:button) [button $w.button -bitmap @$data(-direction).xbm] pack $data(w:button) -expand yes -fill both }

The tixArrowButton:ConstructWidget method shown above sets the variable data(w:button) to be the pathname of the button subwidget. As a convention of the Tix Intrinsics, we must declare a public subwidget swid by storing its pathname in the variable data(w: swid ).

6.4.3 The SetBindings Method

In your interface, you want to handle a lot of events in the subwidgets that make up your mega-widget. For instance, when somebody presses the button in a TixArrowButton widget, you want the button to handle the event. The SetBindings method is used to creates event bindings for the components inside the mega-widget. In our TixArrowButton example, we use the bind command to specify that the method tixArrowButton:IncrCount should be called each time when the user presses the first mouse button. As a result, we can count the number of times the user has pressed on the button (obviously for no better reasons than using it as a dumb example).

proc tixArrowButton:SetBindings {w} {
    upvar #0 $w data

tixChainMethod $w SetBindings

bind $data(w:button) <1> "tixArrowButton:IncrCount $w" }

proc tixArrowButton:IncrCount {w} { upvar #0 $w data

incr data(count) }

6.5 Declaring and Using Variables

The private variables of a widget class do not need to be declared. In fact they can be initialized and used anywhere by any method. Usually, however, general purpose private variables are initialized by the InitWidgetRec method and subwidget variables are initialized in the ConstructWidget method.

We have seen in the tixArrowButton:InitWidgetRec example that the private variable data(count) was initialized there. Also, the private variable data(w:button) was initialized in tixArrowButton:ConstructWidget and subsequently used in tixArrowButton:SetBindings.

In contrast, public variables must be declared inside the class declaration. The following arguments are used to declare the public variables and specify various options for them:

  • -flag: As shown in the class declaration in figure 6-2 , the -flag argument declares all the public variables of the TixArrowButton class, -direction and -state

  • -configspec: We can use the -configspec argument to specify the details of each public variable. For example, the following declaration

    -configspec {
        {-direction direction Direction e}
        {-state state State normal}
    }
    

    specifies that the -direction variable has the resource name direction and resource class Direction; its default value is e. The application programmer can assign value to this variable by using the -direction option in the command line or by specifying resources in the Tk option database with its resource name or class. The declaration of -state installs similar definitions for that variable.

  • -alias: The -alias argument is used to specify alternative names for public variables. In our example, the setting

    -alias {
        {-dir -direction}
    }
    
    specifies that -dir is the same variable as -direction. Therefore, when the application issue the command

    .up config -dir w
    
    it is the same as issuing

    .up config -direction w
    
    The -alias option provides only an alternative name for the application programmer. Inside the widget's implementation code, the variable is still accessed as data(-direction), not data(-dir).

6.5.1 Initialization of Public Variables

When a widget instance is created, all of its public variables are initialized by the Tix Intrinsics before the InitWidgetRec method is called. Therefore, InitWidgetRec and any other method of this widgte instance are free to assume that all the public variables have been properly initialized and use them as such.

The public variables are initialized by the following criteria.

  • Step 1: If the value of the variable is specified by the creation command, this value is used. For example, if the application programmer has created an instance in the following way:

    tixArrowButton .arr -direction n
    
    The value n will be used for the -direction variable.

  • Step 2: if step 1 fails but the value of the variable is specified in the options database, that value is used. For example, if the user has created an instance in the following way:

    option add *TixArrowButton.direction w
    tixArrowButton .arr
    
    The value w will be used for the -direction variable.

  • Step3: if step 2 also fails, the default value specified in the -configspec secton of the class declaration will be used.

Type Checker

You can use a type ckecker procedure to check whether the user has supplied a value of the correct type for a public variable. The type checker is specified in the -configspec section of the class declaration after the default value. The following code specifies the type checker procedure CheckDirection for the -direction variable:

    -configspec {
        {-direction direction Direction e CheckDirection}
        {-state state State normal}
    }
    ...
}

proc CheckDirection {dir} { if {[lsearch {n s w e} $dir] != -1} { return $dir } else { error "wrong direction value \"$dir\"" }

Notice that no type checker has been specified for the -state variable and thus its value will not be checked.

If a type checker procedure is specified for a public variable, this procedure will be called once the value of a public variable is determined by the three steps mentioned above.

6.5.2 Public Variable Configuration Methods

After a widget instance is created, the user can assign new values to the public variables using the configure method. For example, the following code changes the -direction variable of the .arr instance to n.

.arr configure -direction n

In order for configuration to work, you have to define a configuration method that does what the programmer expects. The configuration method of a public variable is invoked whenever the user calls the configure method to change the value of this variable. The name of a configuration method must be the name of the public variable prefixed by the creation command of the class and :config. For example, the name configuration method for the -direction variable of the TixArrowButton class is tixArrowButton:config-direction. The following code implements this method:

proc tixArrowButton:config-direction {w value} {
    upvar #0 $w data

$data(w:button) config -bitmap @$value.xbm }

Notice that when tixArrowButton:config-direction is called, the value parameter contains the new value of the -direction variable but data(-direction) contains the old value. This is useful when the configuration method needs to check the previous value of the variable before taking in the new value.

If a type checker is defined for a variable, it will be called before the configuration method is called. Therefore, the configuration method can assume that the type of the value parameter is got is always correct.

Sometimes it is necessary to override the value supplied by the user. The following code illustrates this idea:

proc tixArrowButton:config-direction {w value} {
    upvar #0 $w data

if {$value == "n"} { set value s set data(-direction) $value }

$data(w:button) config -bitmap @$value.xbm return $data(-direction) }

Notice the above code always overrides values of n to s. If you need to override the value, you must do the following two things:

  • Explicitly set the instance variable inside the configuration method (the set data(-direction) $value line).

  • Return the modified value from the configuration method.
If you do not need to override the value, you don't need to return anything from the configuration method. In this case, the Tix Intrinsics will assign the new value to the instance variable for you.

Configuration Methods and Public Variable Initialization

For efficiency reasons, the configuration methods are not called during the intialization of the public variables. If you want to force the configuration method to be called for a particular public variable, you can specify it in the -forcecall section of the class declaration. In the following example, we force the configuration method of the -direction variable to be called during intialization:

-forcecall {
    -direction
}

6.6 Summary of Widget Instance Initialization

The creation of a widget instance is a complex process. You must understand how it works in order to write your widget classes. The following is the steps taken by the Tix Intrinsics when a widget instance is created:

  • When the user creates an instance, the public variables are intilized as discussed in section 6.5.1 . Type checkers are always called if they are specified. Configuration methods are called only if they are specified in the -forcecall section.

  • The InitWidgetRec method is called. It should initialize private variable, possibly according to the values the public variables.

  • The ConstructWidget method is called. It should create the component widgets. It should also store the names of public subwidgets into the subwidget variables.

  • The SetBinding method is called. It should create bindings for the component widgets.

After the above steps, the creation of the instance is complete and the user can iterate with it using its widget command.

6.7 Loading the New Classes

Usually, you can use a separate script file to store the implementaion of each new widget class. If you have several of those files, it will be a good idea to group the files into a single directory and create a tclIndex file for them so that the new classes can be auto-loaded.

Suppose you have put the class files into the directory /usr/my/tix/classes. You can create the tclIndex file using the tools/tixindex program that comes with Tix:

cd /usr/my/tix/classes
/usr/my/Tix4.0/tools/tixindex *.tcl

The tclIndex file must be created by the tixindex program. You cannot use the standard auto_mkindex command that comes with Tcl.

Once you have created the tclIndex file, you can use your new widget classes by auto-loading. Here is a small demo program that uses the new TixArrowButton class:

#!/usr/local/bin/tixwish
lappend auto_path /usr/my/tix/classes

# Now I can use my TixArrowButton class! # tixArrowButton .arr -direction n pack .arr

Tix8.4.3/docs/tix-book/tlist.tex.html0000644000122200012240000004230307203353662017711 0ustar jeffhjeffh00000000000000

3 Tabular Listbox and Display Items

3.1 tixTList -- The Tix Tabular Listbox Widget

TixTList is the Tabular Listbox Widget. It displays a list of items in a tabular format. For example the TixTList widget in figure 3-1 displays files in a directory in rows and columns.


(Figure 3-1) Files Displayed in a TixTList Widget in a Tabular Format


(Figure 3-2) Employee Names Displayed in a TixTList Widget

TixTList does all what the standard Tk listbox widget can do, i.e, it displays a list of items. However, TixTList is superior to the listbox widget is many respects. First, TixTList allows you to display the items in a two dimensional format. This way, you can display more items at a time. Usually, the user can locate the desired items much faster in a two dimensional list than the one dimensional list displayed by the Tk listbox widget.

In addition, while the Tk listbox widget can only display text items, the TixTList widget can display a multitude of types of items: text, images and widgets. Also, while you can use only one font and one color in a listbox widget, you can use many different fonts and colors in a TixTList widget. In figure 3-1 , we use graphical images inside a tixTList widget to represent file objects. In figure 3-2 , we display the names of all employees of a hypothetical company. Notice the use of a bold font to highlight all employees whose first name is Joe.

3.2 Display Items

Before we rush to discuss how to create the items inside a TixTList widget, let's first spend some time on a very important topic about the Tix library: the repationship between the display items and their host widgets.

We can better define the terms by taking a quick preview of the TixHList widget, which will be covered in details in the next chapter. Let's compare the items displayed on the two widgets in figure 3-3 . If we take a close look at the item that shows the usr directory in the TixTList widget on the left versus the TixHList widget on the right, we can see that this item appears exactly the same on both widgets.

If fact, all the items in these two widgets are of the same type: they all display an image next to a textual name. The only difference between these two widgets is how these items are arranged. The TixTList widget arranges the items in rows and columns, while the TixHList widget arranges the items in a hierachical format.

With this observation in mind, we can see a separation of tasks berween the widgets and the items they display. We call the TixHList and TixTList widgets in figure 3-3 host widgets: their task is to arrange the items according to their particular rules. However, they don't really care what these items display; they just treat the items as rectangle boxes. In contrast, these items, which are called display items in Tix terminology, controls the visual information they display, such as the images, text strings, colors, fonts, etc. However, they don't really care where on the host widget they will appear.


(Figure 3-3) The Same Type of Items Displayed in a TixTList (left) and a TixHList(right)

3.2.1 Advantages of Display Items

It is easy to see the advantages of seperating the display items from their host widgets. First, the display items are easy to learn. Since they are the same across different types of widgets. Once you learn about a type of display items, you will know how to use them in all Tix widgets that support display items (currently these include TixHList, TixTList and the spreadsheet widget TixGrid, but the number is growing). In contrast, if you want to create a text item for the Tk widgets, you will find out that the listbox, text, canvas and entry widget each have a different method of creating and manipulating text items, and it is quite annoying to learn each of them individually.

Second, the hosts widgets that use display items are extensible. Because of the separation of task, the host widgets are not involved in the implementation details of the display items. Therefore, if you add a new type of display items, such as a animation type that displays live video, the host widgets will gladly take them in and display them. You don't need to modify the existing host widgets at all. In contrast, if you want to display graphical images in the existing Tk listbox widgets, you'd better set aside 100 hours to rewrite it completely!

Third, display items are good for writers of host widgets. Because now they just need to implement the arrangement policy of the host widgets. They don't need to worry about drawing at all because it is all handled by the display items. This is a significant saving in code because a widget that does not use display items has to spend 30% of its C code to do the drawing.

3.2.2 Display Items and Display Styles

The appearance of a display item is controlled by a set of attributes. For example, the text attribute controls the text string displayed on the item and the font attribute specifies what font should be used.

Usually, each of the attributes falls into one of two categroies: `` individual'' or `` collective''. For example, each of the items inside a TixTList widget may display a different text string; therefore we call the text string an individual attribute. However, in most cases, the items share the same color, font and spacing and we call these collective attributes.

One question concerns where we keep the collective attribute for the display items. Certainly, we can keep a font attribute for each item, but this is not really an efficient solution. In fact, if all the items have the same font, we would be keeping a duplicated copy of the same font for each of the items we create. Since a host widget may have many thousands of items, keeping thousands of dupilcated copys of the same font, or any other collective attributes, would be very wasteful.


(Figure 3-4) Relationship Between Display Items and Display Styles

To advoid the unnecessary duplication of resources, Tix stores the collective attributes in special objects called display styles. The relationship between display items and their styles is depicted in figure 3-4 . Each item holds its own copy of the individual attributes, such as text. However, the collective attributes are stored in the style objects. Each item has a special style attribute that tells it which style it should use. In figure 3-4 , since items a and b are assigned the same style, therefore, they share the same font and color. Item c is assigned a different style, thus, it uses a different font than a and b.

3.3 Creating Display Items in the TixTList Widget

3.3.1 Creating Display Items

Now it's time to put our knowledge about host widgets, display items and display styles into practice. The following example code creates two items in a TixTList widget using the insert method:

{0.0cm}

tixTList .t
pack .t

.t insert end -itemtype text -text "First Item" -underline 0 .t insert end -itemtype text -text "Second Item" -underline 0

set picture [image create bitmap -file picture.xbm] .t insert end -itemtype image -image $picture

{0.2cm}

As we can see, the insert method of TixTList is very similar to the insert method of the standard Tk listbox widget: it inserts a new item into the TixTList widget. The first argument it takes is the location of the new item. For example 0 indicates the first location in the list, 1 indicates the second location, and so on. Also the special keyword end indicates the end of the list.

Then, we can use the -itemtype switch to specify the type of display item we want to create. There are currently four types of items to choose from: text, image, imagetext and window. In the above example, we create two items of the type text and one item of the type image. The subsequent arguments to the insert method set the configuration options of the individual attributes of the new item. The available options for these items are listed in figures ??? through ???.

3.3.2 Setting the Styles of the Display Items

Note that in the above example, if we want to control the foreground color of the text items, we cannot issue commands such as:

.t insert end -itemtype text -text "First Item" -foreground black
because -foreground is not an individual attribute of the text item. Instead, it is a collective attribute and must be accessed using a display style object. To do that we can use the command tixItemStyle to create display styles, as shown in the following example:

set style1 [tixDisplayStyle text -font 8x13]
set style2 [tixDisplayStyle text -font 8x13bold]

tixTList .t; pack .t

.t insert end -itemtype text -text "First Item" -underline 0
-style $style1 .t insert end -itemtype text -text "Second Item" -underline 0
-style $style2 .t insert end -itemtype text -text "Third Item" -underline 0
-style $style1

The first argument of tixDisplayStyle specify the type of style we want to create. Each type of display item needs its own type of display styles. Therefore, for example, we cannot create a style of type text and assign it to an item of type image. The subsequent arguments to tixDisplayStyle set the configuration options of the collective attributes defined by this style. A complete list of the configuration options of each type of the display style is in figures ??? through ???.

The tixDisplayStyle command returns the names of the newly created styles to us and we use the variables style1 and style2 to store these names. We can then assign the styles to the display items by using the names of the styles. As shown in figure 3-5 , by assing these two styles to the -style option of the display items, we assigned a medium-weight font to the first and third item and a bold font to the second item.

Three text items in a TixTList

The text items with fonts switched


(Figure 3-5) Two Display Styles With Different Fonts

The name of the style returned by tixDisplayStyle is also the name of a command which we can use to control the style. For example, we can use the following commands to switch the fonts in the two styles we created in the above example:

$style1 configure -font 8x13bold
$style2 configure -font 8x13
After the execution of the above command, the font in the second item in the TixTList widget becomes medium-weight and the font in the first and third items becomes bold, as shown in figure
3-5 .

3.3.3 Configuring and Deleting the Items

You can configure the individual attributes of the items using the entryconfigure method. There is also the entrycget method for querying the attributes of the items. To delete the items, you can use the delete method. In the following example, we use these two methods to change the first and third items to display the text strings One and Two and change the third item to use the style $style2. Then we delete the second item using the delete command.

.t entryconfigure 0 -text One
.t entryconfigure 2 -text Two
.t delete 1

3.3.4 Choosing the Orientation and Number of Rows or Columns

There are three options that controls the layout of the items in the TixTList widget. The -orientation option can be set to either vertical or horizontal. When -orientation is set to vertical, the items are laid out vertically from top down and wrapped to the next column when the bottom is reached (see figure 3-6 ). The opposite layout policy is chosen if -orientation is set to horizontal (see figure 3-6 ).

When the -orientation option is set to vertical, normally the number of columns displayed depends on the number of items in the TixTList widget: the more items there are, the more columns will there be. However, we can use the -columns option to control the number of columns: the items will be wrapped in a way so that the number of columns produced will be exactly as dicated by the -columns option.

One use of the -columns option is to specify the same layout policy as that of the standard Tk listbox widget. We can do this by setting -orientation to vertical and -columns to 1. This way we can get a replacement listbox widget that can display multiple fonts and colors and graphics!

The counterpart of the -columns option is the -rows option, which is used for the same purpose when the -orientation option is set to horizontal.

Vertical Orientation

Horizontal Orientation


(Figure 3-6) The -orientation option of the TixSelect Widget

3.3.5 Event Handling

You can handle the events in a TList widget using the -browsecmd and -command options. The meanings of these two options are silimar to their meanings in other Tix widgets such as the ComboBox. Usually, the command specified by -browsecmd is called when the user clicks or drags the mouse over the items or presses the arrow keys. The command specified by -command is called when the user double-clicks or presses the Return key. These commands are called with one extra argument --- the index of the currently ``active'' item, which is usually the item under the mouse cursor.

3.3.6 Selection

The -selectmode option controls how many items the user can select at one time. In the single and browse mode, the user can select only one item at a time. In the multiple and extended mode, the user can select multiple items; the extended mode allows disjoint selections while the multiple mode does not.

Normally, the user selects the items using the mouse or the keyboard. You can find out which items the user has selected with the info selection method, which returns a list of the currently selected items. You can also set the selection using the selection set method. For example, the command .tlist selection set 3 selects the item whose index is 3. The command .tlist selection set 2 10 selects all the items at index 2 through 10. The method selection clear empties the selection.

Tix8.4.3/docs/tix-book/intro.tex.html0000644000122200012240000011251707203353614017707 0ustar jeffhjeffh00000000000000

1 Introduction

1.1 What is Tix

1.1.1 Tix for Application Programmers

The acronym Tix stands for Tk Interface Extension. Tix is different things for different people.

If you are a GUI application programmer, that is, if you earn a living by building graphical applications, you will appreciate Tix as a library of mega-widgets: widgets made out of other widgets. To use a crude analogy, if the widgets in the standard TK library are bricks and mortars for a builder, the mega-widgets in the Tix library are walls, windows or even pre-build kitchens. Of course, these ``bigger components'' are themselves made of bricks and mortars, but it will take much less effort to put them together than planting bricks on top of each other.

The Tix widgets not only help you speed up the development of your applications, they also help you in the design process. Since the standard Tk widgets are too primitive, they force you to think of your house as, by using the same analogy, millions of bricks. With the help of the Tix mega-widgets, you can design your application is a more structural and coherent manner.

Moreover, the Tix library provides a rich set of widgets. Figure 1-1 shows all Tix widgets -- there are more than 40 of them! Although the standard Tk library has many useful widgets, they are far from complete. The Tix library provides most of the commonly needed widgets that are missing from standard Tk: FileSelectBox, ComboBox, Control (a.k.a. SpinBox) and an assortment of scroll-able widgets. Tix also includes many more widgets that are generally useful in a wide range of applications: NoteBook, FileEntry, PanedWindow, MDIWindow, etc.

With all these new widgets, you can introduce new interaction techniques into applications, creating more useful and more intuitive user interfaces. You can design your application by choosing the most appropriate widgets to match the special needs of your application and users.


(Figure 1-1) The Class Hierarchy of Tix Widgets

1.1.2 Tix for Widget Developers

On the other hand, if you are a widget developer, Tix provides an object oriented programming environment, the Tix Intrinsics, that is carefully designed for the development of mega-widgets. If you have developed widgets in C, you will know how slow and painful such a process would be. In recognition of the difficulties in widget development, the Tix Intrinsics includes many tools that dramatically cuts down the efforts required to develop new widgets. With the Tix Intrinsics, the rapid prototyping/development of widgets is finally feasible: you can write a new widgets in the matter of hours or even minutes.

With the Tix Intrinsics, you widget code can readily become reusable. Tix also provides a set of rules and mechanisms that allow you to develop widgets that are inter-operable with other widgets.

In Part I of this manual, we will talk about using the Tix widgets. The discussion of writing new Tix widgets will be carried out in Part II.

1.2 Getting Started: the TixControl Widget

Pre-requisites: you should be familiar with Tk widgets and programming, or read the Tk book along with this book

Before delving into the deep philosophy of the Tix widgets, let us first have a quick example to demonstrate the usefulness and convenience of an Tix widget: the TixControl is basically an entry widget that displays a value. Next to the entry, there are two up and down arrow buttons for you to adjust the value inside the entry widget.

1.2.1 Creating a TixControl Widget

The following code demonstrates how to create a TixControl widget and specify its options:

    tixControl .lawyers -label Lawyers: -max 10 -min 0
    .lawyers config -integer true -step 2
This example creates a TixControl widget that let us to select the numbers of lawyers we wish to be allowed in this country. (Figure
1-2 )

Let us examine the options: the -label option specifies a caption for this widget. The -max option specifies the maximum number of lawyers we can choose. The -min option specifies the minimum number of lawyers we can choose: although we would love to enter a negative number, reality dictate that the lower limit must be zero. The -integer option indicates that the number of lawyers must be an integer; that is, we respect the lawyers' rights not to be chopped up into decimal points. Finally, since lawyers seem to go in pairs, we set the -step option to 2, which indicates that when we press the up/down arrow buttons, we want the number of lawyers to go up and down by two each time.


(Figure 1-2) The TixControl Widget

As shown in the example, you can create and manipulate a Tix widget in the same manner as the standard Tk widgets. The options of the widget can be specified during the creation of the widget. Alternatively, they can be changed by the configure widget command. In addition, options can also be specified in the option database or as X resources. Here is an example that produces the same result as the previous code fragment:

    option add *lawyers.max 10
    option add *lawyers.min 0
    tixControl .lawyers -label Lawyers: -integer true
    .lawyers config -step 2

In figure 1-3 , you can see the composition of TixControl: it is made out of a label widget, an entry widget and two button widgets. Widgets that are composed of other widgets, like TixControl, are called mega-widgets. Most widgets in the Tix library are mega-widgets (xx: and as you know this book is about them!).


(Figure 1-3) The Composition of TixControl

1.2.2 Accessing The Value of a TixControl Widget

The TixControl widget allows the user to input a value. There are several ways to read this value in your program. First of all, TixControl stores the current value in the -value option. You can use query the -value option by calling the command

    .c cget -value

this command will return the current value of the tixContro widget .c. The following command sets the value of the widget to a new number (100):

    .c config -value 100
The second way to access the value of TixControl is to use the -variable option. This options instructs the TixControl widget to store the its value into a global variable so that you can read it at any time. Also, by assigning a new value to this global variable, you can change the value of the TixControl widget. Here is an example:

    .c config -variable myvar
    set myvar 100
In some situations, you may want to be informed immediately when the value of the TixControl widget changes. To accomplish this, you can use the -command option. The following line causes the TCL procedure valueChanged to be called whenever the value of .c changes:

    tixControl .c -command valueChanged

Disabling Callbacks Temporarily

Now, if you want to change a value from within the program, you have to disable the callback. The reason is that the callback runs whenever you (as well as the user) makes a change. In particular, if you make a change within the callback procedure and forget to disable the callback, it will recursively call itself and enter an infinite loop. To avoid this problem, you should use the -disablecallback option. Here is an example:

    tixControl .c -command addOne

proc addOne {value} { .c config -disablecallback true .c config -value [incr value] .c config -disablecallback false }

The procedure addOne adjusts the value of .c by one whenever the user enters a new value into .c. Notice that it is necessary to set -disablecallback here or otherwise addOne will be infinitely recursed! That is because addOne is called every time the value changes, either by the user or by the program.

1.2.3 Validating User Inputs

Sometimes it may be necessary to check the user input against certain criteria. For example, you may want to allow only even numbers in a TixControl widget. To do this, you can use the -validatecmd option, which specifies a Tcl command to call whenever the user enters a new value. Here is an example:

    tixControl .c -value 0 -step 2 -validatecmd evenOnly

proc evenOnly {value} { return [expr $value - ($value %2)] }

The value parameter to evenOnly is the new value entered by the user. The evenOnly procedure makes sure that the new value is even by returning a modified, even number. The Tcl command specified by the -validatecmd must return a value which it deems valid and this value will be stored in the -value option of the TixControl widget.

1.3 Accessing The Components Inside Mega Widgets

1.3.1 Subwidgets

As we have seen in section 1.2.1 , the TixControl widget is composed of several widgets: one label widget, one entry widget and two button widgets. These ``widgets inside mega-widgets'' are called subwidgets in the Tix terminology. We will often have the need to access these subwidgets. For example, sometimes we need to change the configuration options of the subwidgets. In other cases, we may need to interact with the subwidgets directly.

1.3.2 Subwidget Names

Each subwidget inside a mega is identified by a subwidget name. Naturally, the label and entry subwidgets inside a TixSelect widget are called label and entry, respectively. The two button widgets are called incr and decr because they are used to increment and decrement the value inside the TixControl widget (see figure 1-4 ).


(Figure 1-4) Subwidgets inside TixControl Widget

1.3.3 The subwidget Method

All Tix mega-widgets support the subwidget method. This method takes at least one argument, the name of a subwidget. When you pass only one argument to this method, it returns the pathname of the subwidget which is identified by that name. For example, if .c is the pathname of a TixControl widget, the command:

  .c subwidget entry
returns the pathname of the entry subwidget, which is .c.frame.entry in this case.

If you call the subwidget method with additional arguments, the widget command of the specified subwidget will be called with these arguments. For example, if .c is, again, the pathname of a TixControl widget, the command:

  .c subwidget entry configure -bg gray
will cause the widget command of the entry subwidget of .c to be called with the arguments configure -bg gray. So actually this command will be translated into the following call:

  .c.frame.entry configure -bg gray
which calls the configure method of the entry subwidget with the arguments -bg gray and changes its background color to gray.

We can call the subwidget method with other types of arguments to access different methods of the specified subwidget. For example, the following call:

  .c subwidget entry icursor end
calls the icursor method of the entry subwidget with the argument end and sets the insert cursor of the entry subwidget to the end of its input string.

1.3.4 Chaining the subwidget Method

Some Tix mega-widgets may have subwidgets that in turn contain subwidgets. For example, the TixExFileSelectDialog (section 5.1.3 ) widget contains a TixExFileSelectBox subwidget called fsbox, which in turn contains a TixComboBox (section 1.4 ) subwidget called dir. If we want to access the dir subwidget, we can just ``chain'' the subwidget method. For example, if we have a TixExFileSelectDialog called .file, the following command will return the pathname of the dir subwidget of the fsbox subwidget of .file:

  .file subwidget fsbox subwidget dir
Moreover, the following command configures the dir subwidget to have a border of the groove type with a border width of 2 pixels:

  .file subwidget fsbox subwidget dir configure -bd 2 -relief groove

The chaining of the subwidget command can be applied for arbitrarily many levels, depending whether your widget has a subwidget that has a subwidget that has a subwidget that has a subwidget ... and so on.

1.3.5 Configuring Subwidget Options Using the -options Switch

As we have seen above, we can use commands like `` subwidget name configure ...'' to set the configuration options of subwidgets. However, this can get quite tedious if we want to configure many options of many subwidgets.

There is a more convenient and terse way to configure the subwidget options without using the subwidget method: the -options switch. All Tix mega-widgets support the -option switch, which can be used during the creation of the mega-widget.

tixControl .income -label "Income: " -variable income -options {
    label.width       8
    label.anchor      e
    entry.width       10
    entry.borderWidth 3
}
tixControl .age    -label "Age: "    -variable age    -options {
    label.width       8
    label.anchor      e
    entry.width       10
    entry.borderWidth 3
}
pack .income .age -side top

(Figure 1-5) Using the -options switch

Unaligned Labels

Aligned Labels


(Figure 1-6) Using the -options Switch to Align the Labels

The use of the -options switch is illustrated in program 1-5 , which creates two TixControl widgets for the user to enter his income and age. Because of the different sizes of the labels of these two widgets, if we create them haphazardly, the output may look like fig 1-6 .

To avoid this problem, we set the width of the label subwidgets of the .income and .age widgets to be the same (8 characters wide) and set their -anchor option to e (flushed to right), so that the labels appear to be well-aligned. Program 1-5 also does other things such as setting the entry subwidgets to have a width of 10 characters and a border-width of 3 pixels so that they appear wider and ``deeper''. A better result is shown in figure 1-6 . As we can see from program 1-5 , the value for the -options switch is a list of one or more pairs of

subwidget-option-spec value ..

subwidget-option-spec is in the form subwidget-name . option-name. For example, label.anchor identifies the anchor option of the label subwidget, entry.width identifies the width option of the entry subwidget, and so on.

Notice we must use the name of the option, not the command-line switch of the option. For example, the option that specifies the border-width of the entry subwidget has the command-line switch -borderwidth but its name is borderWidth (notice the capitalization on the name but not on the command-line switch). Therefore, we have used the capitalized version of `` entry.borderWidth 3'' in program 1-5 and not `` entry.borderwidth 3''. To find out the names of the options of the respective subwidgets, please refer to their manual pages.

1.3.6 Configuring Subwidget Options Using the Tk Option Database

The -options switch is good if you want to specify subwidget options for one or a few mega-widgets. If you want to specify the subwidget for many mega-widgets, it is easier to use the Tk Option Database.

Options in the Tk Option Database can be specified using the option command and the pathname of the widget. For all the Tix mega-widgets, it is guaranteed that the pathname of their subwidgets ends with the name of the subwidgets. For example, if we have a mega widget called .a.b.megaw and it has a subwidget whose name is subw, then we can be sure that the pathname of the subwidget will be something like

  .a.b.megaw.foo.bar.subw
Therefore, if we want to specify options for it in the Option Database, we can issue commands like:

  option add *a.b.megaw*subw.option1 value1
  option add *a.b.megaw*subw.option2 value2
Notice that it will be wrong to issue the commands as:

  option add *a.b.megaw.subw.option1 value1
  option add *a.b.megaw.subw.option2 value2
because in general we will not know whether the subwidget is an immediate child window of .a.b.megaw (such a decision is left to the mega-widget implementor and may vary in different versions of the same mega-widget).

Program 1-7 demonstrates how the Tk Option Database can be used to achieve the same effect as program 1-5 .

option add *TixControl*label.width       8
option add *TixControl*label.anchor      e
option add *TixControl*entry.width       10
option add *TixControl*entry.borderWidth 3

tixControl .income -label "Income: " -variable income tixControl .age -label "Age: " -variable age

pack .income .age -side top


(Figure 1-7) Using the Tk Option Database in Place of the -options switch

1.3.7 Caution: Restricted Access

In the current implementation of Tix, there is no limits on how you can access the options of the subwidgets. However, many options of the subwidgets may be already used by the mega-widget in special ways. For example, the -textvariable option of the entry subwidget of TixControl may be used to store some private information for the mega widget. Therefore, you should access the options of the subwidgets with great care. In general you should only access those options that affect the appearance of the subwidgets (such as -font or -foreground) and leave everything else intact. () { In future versions of Tix, there will be explicit restrictions on which subwidget options you can access. Errors will be generated if you try to access restricted subwidget options}

1.4 Another Tix Widget: TixComboBox

The TixComboBox widget is very similar to the ComboBox widgets available in MS Windows and Motif 2.0. A TixComboBox consists of an entry widget and a listbox widget. Usually, the ComboBox contains a list of possible values for the user to select. The user may also choose an alternative value by typing it in the entry widget. Figure 1-8 shows two ComboBoxes for the user to choose fonts and character sizes. You can see fro the figure that a listbox is popped down from the ComboBox for fonts for the user to choose among a list of possible fonts.


(Figure 1-8) The TixComboBox Widget

1.4.1 Creating a TixComboBox Widget

tixComboBox .c -label "Animal:" -editable true
.c insert end cat
.c insert end dog
.c insert end pig

(Figure 1-9) Creating a ComboBox

In program 1-9 , we set up a ComboBox .c for the user to select an animal to play with. If the user is just a dull person like you and me, he would just press the arrow button and select a pre-designated animal such as ``dog''. However, if he wants to try something new, he could type ``micky'' or ``sloth'' into the entry widget and he will get to play with his favorite animal.

Of course, sometimes we don't want too many sloths around us and we want to limit the range of the user's selections. In this case we can do one of two things. First, we can set the -editable option to false so that the user cannot type in the entry widget at all. Alternatively, we can use the -validatecmd option (see section 1.4.3 ) to check input the input.

1.4.2 Controlling the Style of the TixComboBox

The TixComboBox widget can appear in many different styles. If we set the -dropdown option to true (which is the default), the listbox will only appear when the user presses the arrow button. When -dropdown is set to false, the listbox is always shown and the arrow button will disappear because it is not needed anymore.

There is also an option called -fancy. It is set to false by default. When set to true, a tick button and a cross button will appear next to the entry widget. The tick button allows you to select again the value that's already in the ComboBox. If you press the cross button, the entry widget will be cleared.

1.4.3 Static Options

The -dropdown and -fancy options are so-called ``static options''. They can only be set during the creation of the ComboBox. Hence this code is valid:

    tixComboBox .c -dropdown true

But the following code will generate an error because it attempts to set the -dropdown option after the ComboBox has already been created.

    TixComboBox .c
    .c config -dropdown true

The restrictions of the static options, although annoying, nevertheless make sense because we don't want our interface to suddenly change its style. If sometimes a button is there and sometimes it disappear all by itself, that will certainly create a lot of confusion and makes the user wonder why he should buy our software. Also, as you will see in chapter 6 , having some static options will make the life of widget writers a lot easier.

Accessing the value of the ComboBox is very similar to accessing the value of the TixControl widget. The ComboBox has these four options, which we discussed in section 1.2.2 : -value, -variable, -command and -validatecmd. You can use these four options to access the user input and respond to user actions in exactly the same way as discussed in section 1.2.2 .

1.4.4 Monitoring the User's Browsing Actions

When the user drags the mouse pointer over the listbox, the listbox item under the pointer will be highlighted and a ``browse event'' will be generated. If you want to keep track of what items the user has browses through, you can use the -browsecmd option. Here is an example:

    tixComboBox .c -browsecmd mybrowse
    ....

proc mybrowse {item} { puts "user has browsed $item" }

When the Tcl command specified by the -browsecmd option is called, it will be called with one parameter: the current item that the user has highlighted.

The -browsecmd is useful because it gives the user the possibility of temporarily seeing the results of several choices before committing to a final choice.

For example, we can list a set of image files in a ComboBox. When the user single-clicks on an item on the ComboBox, we want to show a simplified view of that image. After the user has browsed through several images, he can finally decide on which image he wants by double-clicking on that item in the listbox.

The following is some pseudo Tcl code that does this. Please notice that the -browsecmd procedure is called every time the user single-clicks on an item or drags the mouse pointer in the listbox. The -command procedure is only called when the user double-clicks on an item.

tixComboBox .c -dropdown false -browsecmd show_simple -command load_fullsize 
.c insert end "/pkg/images/flowers.gif"
.c insert end "/pkg/images/jimmy.gif"
.c insert end "/pkg/images/ncsa.gif"

proc show_simple {filename} { # Load in a simplified version of $filename }

proc load_fullsize {filename} { # Load in the full size image in $filename }

As we shall see, all Tix widgets that let us do some sort of selections have the -browsecmd option. The -browsecmd option allows us to respond to user events in a simple, straight-forward manner. Of course, you can do the same thing with the Tk bind command, but you don't want to do that unless you are very fond of things like <Control-Shift-ButtonRelease-1> and "%x %X $w %W %w".

1.5 The TixSelect Widget

The TixSelect widget figure 1-10 provides you the same kind of facility that is available with the Tk radiobutton and checkbutton widgets. That is, TixSelect allows the user to select one or a few values out of many choices. However, TixSelect is superior because it allows you to layout the choices in much less space than what is required by the Tk radiobutton widgets. Also, TixSelect supports complicated selection rules. Because of these reasons, TixSelect is a primary choice for implementing toolbar buttons, which often have strict space requirements and complicated selection rules.


(Figure 1-10) The TixSelect Widget

1.5.1 Creating A TixSelect Widget

Program 1-11 shows how to create a TixSelect widget. At line 1 of program 1-11 , we create a TixSelect using the the tixSelect command.

  tixSelect .fruits -label "Fruits: " -orientation horizontal
  .fruits add apple  -text Apple  -width 6
  .fruits add orange -text Orange -width 6
  .fruits add banana -text Banana -width 6
  pack .fruits

(Figure 1-11) Creating a TixSelect Widget

Label and Orientation

As shown in program 1-11 , with the -label option, we can put a label next to the button subwidgets as the caption of the TixSelect widget. We can also control the layout of the button subwidgets using the -orientation option. The -orientation option can have two values: horizontal (the default value) or vertical, and the buttons are lied up accordingly. Figure 1-12 shows the output of a TixSelect widget whose -orientation is set to vertical.

Creating the Button Subwidgets and Configuring Their Appearance

After we have created the TixSelect widget, we can create the button subwidgets inside the TixSelect widget by the add widget command (lines 2-4 of program 1-11 ).

The first argument to the add command is the name of the button subwidget. Additional arguments can be given in option-value pairs to configure the appearance of the button subwidget. These option-value pairs can be any of those accepted by a normal TK button widget. As shown in program 1-11 , we use the -text option to put appropriate text strings over the three button subwidgets.

Notice that we also set the -width option of all the button subwidgets to 6 characters. This way, the three buttons will have the same width. If we didn't set the -width option for the button widgets, they will have different widths, depending on their text string, and the result would look less esthetically pleasing than buttons with same widths.

The output of program 1-11 is shown in figure 1-12

Horizontal Orientation

Vertical Orientation


(Figure 1-12) The TixSelect Widget

Accessing the Button Subwidgets

We have already seen the concept of subwidgets and how they can be accessed in section 1.3.1 --- when we create a Tix mega-widget, some subwidgets are created for us automatically. For example, the label and entry subwidgets inside a TixControl widget. We can access these subwidgets in a multitude of ways, including using the subwidget method.

One thing about the subwidgets we saw in section 1.3.1 is that they are ``static'', meaning they are created when the mega-widget is created and they remain there for the whole lifetime of the mega-widget.

The TixSelect widget takes us to a new concept: dynamic subwidgets are subwidgets that can be created on-the-fly. After we add a new button into the TixSelect widget, we get a new subwidget. The name of this new subwidget is given by the first parameter passed to the add method. As the following code demonstrates, we can access this new subwidget using the subwidget method:

tixSelect .s
.s add apple  -text Apple
.s add orange -text Orange
#   Mmmm..., let's make the widget look more educated
#   by using French words
.s subwidget apple  config -text Pomme
.s subwidget orange config -text Orange

1.5.2 Specifying Selection Rules

For simple selection rules, you can use the -allowzero and -radio options. The -allowzero option specifies whether the user can select none of the choices inside the TixSelect widget. The -radio option controls how many buttons can be selected at once: when set to true, the user can select only one button at a time; when set to false, the user can select as many buttons as he desires.

With these two options, we can write a program using two TixSelect widgets for little Jimmy to fill up his lunch box. On the Sandwich side, we set -radio to true and -allowzero false. That means Jimmy can select one and only one sandwich among beef, cheese or ham sandwiches. On the Veggie side, we want to encourage Jimmy to consume as much veggie as possible, so we set the -allowzero option to false. We also set the -allowzero option to false so that Jimmy cannot get away with eating none of the vegetables (see program 1-13 ).

tixSelect .sandwich -allowzero false -radio true -label "Sandwich :"
.sandwich add beef   -text Beef
.sandwich add cheese -text Cheese
.sandwich add ham    -text Ham

tixSelect .vege -allowzero false -radio false -label "Vegetable :" .vege add bean -text Bean .vege add carrot -text Carrot .vege add lettuce -text Lettuce


(Figure 1-13) Specifying Simple Selection Rules

1.5.3 Accessing the Value of a TixSelect Widget

The value of a TixSelect widget is a list of the names of the button subwidgets that are currently selected. For example, in program 1-11 , if the user has selected the apple button, then the value of the TixSelect widget will be apple. If the user has selected both the apple and the orange buttons, then the value will be the list "apple orange".

The TixSelect widget supports same set of options as the TixControl widget for you to access its value: the -value option stores the current value, which can be queried and modified using the cget and configure methods. You can also use the -variable option to specify a global variable to store the value of the TixSelect widget. The -command option specifies a TCL command to be called whenever the user changes the selection inside a TixSelect widget. This command is called with one argument: the new value of the TixSelect widget. There is also the -disablecallback option which you can use to control whether the command specified by the -command option should be called when the value of the TixSelect changes.

1.5.4 Specifying Complex Selection Rules

If you want to have more complex selection rules for the TixSelect widget, you can use the -validatecmd option. This option works the same as the -validatecmd option of the TixControl widget which we discusses in section 1.2 : it specifies a command to be called every time the user attempts to change the selection inside a TixSelect widget.

In the example program 1-14 , the procedure TwoMax will be called every time the user tries to change the selection of the .fruits widget. TwoMax limits the maximum number of fruits that the user to choose to be 2 by always truncating the value of the TixSelect widget to have no more than two items. If you run this program, you will find out that you can never select a third fruit after you have select two fruits.

  tixSelect .fruits -label "Fruits: " -radio false -validatecmd TwoMax
  .fruits add apple  -text Apple  -width 6
  .fruits add orange -text Orange -width 6
  .fruits add banana -text Banana -width 6
  pack .fruits

proc TwoMax {value} { if {[llength $value] > 2} { return [lrange $value 0 1] } else { return $value } }


(Figure 1-14) Specifying More Complex Selection Rules

Tix8.4.3/docs/tix-book/tix.book.html0000644000122200012240000001765207170671641017524 0ustar jeffhjeffh00000000000000

Tix Programming Guide

  • 1 Introduction
  • 2 Container Widgets
  • 3 Tabular Listbox and Display Items
  • 4 Hierarchical Listbox
  • 5 Selecting Files and Directories
  • 6 Tix Object Oriented Programming
  • Tix8.4.3/docs/tix-book/hlist.tex.html0000644000122200012240000002673707203353601017703 0ustar jeffhjeffh00000000000000

    4 Hierarchical Listbox

    4.1 TixHList -- The Tix Hierarchical Listbox Widget

    TixHList is the Tix Hierarchical Listbox Widget. You can use it to display any data that have a hierarchical structure. For example, the HList widget in figure 4-1 displays a Unix file system directory tree; the HList widget in figure 4-1 displays the corporate hierarchy of a hypothetical company. As shown in these two figures, the entries inside the TixHList widget are indented can be optionally connected by branch lines according to their positions in the hierarchy.

    Directory Tree Display

    A Corporate Hierarchy


    (Figure 4-1) Examples of the TixHList Widget

    4.1.1 Creating a Hierarchical List

    A TixHList widget can be created by the command tixHList. However, most likely, you would want to create a TixHList with scrollbars attached. Therefore, usually you will use the tixScrolledHList command to create a scrolled hierarchical listbox (line 1 in program 4-2 ). The tixScrolledHList command is very similar to the TixScrolledListBox command we saw in section 2.3.1 . It creates a TixHList subwidget of the name hlist and attaches two scrollbars to it.

    As shown in the first five lines in program 4-2 , we create a scrolled TixHList widget, using the -options switch (see section 1.3.5 ) to set several options for the hlist subwidget (we'll talk about these options shortly). Then, we can access the HList subwidget widget using the subwidget hlist method (line 7 in program 4-2 ).

    tixScrolledHList .sh -options {
        hlist.itemType text
        hlist.drawBranch false
        hlist.indent     8
    }
    pack .sh -expand yes -fill both
    set hlist [.sh subwidget hlist]
    
    

    $hlist add foo -text "foo" $hlist add foo.bar -text "foo's 1st son" $hlist add foo.bor -text "foo's 2nd son" $hlist add foo.bar.bao -text "foo's 1st son's 1st son" $hlist add foo.bar.kao -text "foo's 1st son's 2nd son" $hlist add dor -text "dor, who has no son"


    (Figure 4-2) Creating Entries in a HList Widget


    (Figure 4-3) Output of Program 4-2

    4.1.2 Creating Entries in a HList Widget

    Each entry in an HList widget has a unique name, called its entry-path, which determines each entry's position in the HList widget. The entry-paths of the HList entries are very similar to the pathnames of Unix files. Each entry-path is a list of string names separated by a separator character. By default, the separator character is the period character ( .), but it can be configured using the -separator option of the HList widget.

    In program 4-3 , we add several new entries foo, foo.bar, foo.bor, foo.bar.bao, .. etc, into the HList widget using the add method. The relationship between the entries is signified by their names, in a way similar to how Unix denotes directories and subdirectories. For example, foo is the parent of foo.bar and foo.bor; foo.bar is the parent of foo.bar.bao, and so on. As far as the terminology goes, we also say that foo.bar a child of foo; foo is an ancestor of foo.bar.bao and foo.bar.bao is a descendant of foo.

    The output of program 4-2 is shown in figure 4-3 . As we can see, the entries are displayed under their parents with the amount of indentation control by the -indent option of the HList widget: foo.bar.bao and foo.bar.kao are display under foo.bar, which is in turn displayed under foo.

    Entries with no parents, for example, foo and dor in program 4-2 , are called top-level entries. Top-level entries are usually entries with no immediate superiors in a hierarchical. For example, the owner of a company, the principle of a school or the root directory of a Unix file system. Toplevel entries are displayed with no indentation.

    As evident from program 4-2 , all entries who entry-path does not contain a separator character are top-level entries. The only exception is the separator character itself is also a toplevel entry. This makes it easy to display Unix file and directory names inside the HList widget, as shown in program 4-4 .

    set folder [tix getimage folder]
    tixScrolledHList .sh -options {
        hlist.separator     /
        hlist.itemType      imagetext
        hlist.drawBranch    true
        hlist.indent        14
        hlist.wideSelection false
    }
    pack .sh -expand yes -fill both
    set hlist [.sh subwidget hlist]
    
    

    foreach directory {/ /usr /usr/bin /usr/local /etc /etc/rc.d} { $hlist add $directory -image $folder -text $directory }


    (Figure 4-4) Displaying Directories in a HList Widget


    (Figure 4-5) Output of Program 4-4

    Each entry is associated with a display item (see section 3.2 about display items). We can use the -itemtype option of the HList widget to specify the default type of display item to be created by the the add method, as shown in program 4-2 and 4-4 . Alternatively, we can also specify the type of display item using the -itemtype option for the add method.

    4.1.3 Controlling the Layout of the Entries

    There are two options to control the layout of the entries: the -showbranch option specifies whether branch lines should be drawn between parent entries and their children. The -indent option controls the amount of relative indentation between parent and child entries. Notice the -drawbranch option is turned on in figure 4-5 but turned off in figure 4-3 . Usually, you need to set a bigger indentation when the branches are shown --- we used an indentation of 14 pixels in 4-5 compared to 8 pixels in 4-3 .

    4.1.4 Handling the Selection and User Event

    The handling of the selection and user events for the HList widget is very similar to the TList widget (see section 3.3.5 ), except that for the HList widget all the operations are based on entry-paths, not list indices. The methods info selection, selection set and selection clear can be used to query, set or clear the selection; the option -selectmode controls how many entries can be selected at a time; the options -browsecmd and -command can be used to specify a command to be called to handle user events.

    There is one more option worth mentioning: the -wideselection option. When set to true, the selection highlight will be drawn across the whole HList widget (see figure 4-3 ). When set to false, selection highlight will be drawn as wide as the selected entry (see figure 4-5 ). Normally, you would set -wideselection to false when you use imagetext items inside (as we did in program 4-4 ).

    4.2 Creating Collapsible Tree Structures with TixTree

    The TixTree widget is based on the TixScrolledHList widget; you can use it to create a collapsible hierarchical structure so that the user can conveniently navigate through a large number of list entries. As shown in figure 4-7 , the TixTree puts the little `` +'' and `` -'' icons next to the branches of an HList entry that has descendants. These two icons are knows as the open and close icons, respectively. When the user presses the open icon next to an entry, its immediate children of an entry will be displayed. Conversely, when the user presses the close icon, the entry's children will become hidden.

    Program 4-6 shows how to create a collapsible tree. We first create a TixTree widget. Then we add the entries in your hierarchical structure into its hlist subwidget using the add method of this subwidget. When we are finished with adding the entries, we just call the autosetmode method of the TixTree widget, which will automatically adds the open and close icons next to the entries who have children.

    set folder [tix getimage folder]
    tixTree .tree -command Command -options {
        hlist.separator  /
        hlist.itemType   imagetext
        hlist.drawBranch true
        hlist.indent     18
    }
    pack .tree -expand yes -fill both
    set hlist [.tree subwidget hlist]
    
    

    foreach directory {/ /usr /usr/bin /usr/local /etc /etc/rc.d} { $hlist add $directory -image $folder -text $directory } .tree autosetmode

    proc Command {entry} { puts "you have selected $entry" }


    (Figure 4-6) Creating a Collapsible Hierarchy


    (Figure 4-7) Output of Program 4-6

    Note that in program 4-6 we use the -command option of the TixTree widget, not the -command option of its hlist subwidget. This is because the TixTree actually used the -command option of its hlist subwidget to process some low-level events. In general, if both a mega-widget and its subwidget have the options of the same name, you would always use the option that belongs to the mega-widget.

    Tix8.4.3/docs/tix-book/filesel.tex.html0000644000122200012240000002652107170671317020204 0ustar jeffhjeffh00000000000000

    5 Selecting Files and Directories

    One task that an application has to perform frequently is to ask the user to select files or directories. To select files, you can use the Tix File Selection Widgets: TixFileSelectDialog and TixExFileSelectDialog. To select directories, you can use the Tix Directory Selection Widgets: TixDirList and TixDirTree.

    5.1 File Selection Dialog Widgets

    There are two file dialog widgets inside Tix: the TixFileSelectDialog (figure 5-2 ) is similar to the FileSelectionDialog widget in Motif; TixExFileSelectDialog (figure 5-3 ) looks like its conunterpart in MS Windows. Both widgets let the user navigate through the file system directories and select a file.

    One advanced feature of both types of file selection boxes is they use ComboBoxes to store the files, directories and patterns the user has selected in the past. If the user wants to select the same files again, he can simply open the ComboBoxes and click on his past inputs. This saves a lot of keystrokes and is especially useful when the user needs to switch among several files or directories.

    5.1.1 Using the TixFileSelectDialog Widget

    An example of using the TixFileSelectDialog widget is in figure 5-1 . At line 1, we create a TixFileSelectDialog widget and set the title of the dialog to ``Select A File'' using the -title option. We also use the -command option to specify that the procedure selectCmd should be called when the user has selected a file. selectCmd will be called with one parameter, the filename selected by the user. When the TixFileSelectDialog widget is created, it is initially not shown on the screen. Therefore, at line 3, we call its popup widget command to place the widget on the screen.

    tixFileSelectDialog .file -title "Select A File" -command selectCmd
    .file subwidget fsbox config -pattern "*.txt" -directory /usr/info
    .file popup
    
    

    proc selectCmd {filename} { puts "You have selected $filename" }


    (Figure 5-1) Using the TixFileSelectDialog


    (Figure 5-2) The Composition of a TixFileSelectDialog Widget

    5.1.2 The Subwidget in the TixFileSelectDialog

    We may also want to set other options for the file dialog such as its file filter and working directory. To do this, we must know the composition of the TixFileSelectDialog widget. As shown in figure 5-2 , the TixFileSelectDialog contains a subwidget fsbox of the type TixFileSelectBox and a subwidget bbox of the type TixStdButtonBox.

    The fsbox subwidget supports the -pattern and -directory options. At line 2 of figure 5-1 , we use the -directory option to tell the fsbox subwidget to display files in the directory /usr/info; we also use the -pattern option to specify we only want the filenames that has the txt extension.

    The fsbox subwidget also supports the -selection option, which stores the filename currently selected by the user. We can query this value by the cget widget command of the fsbox subwidget.

    Remember that the -pattern, -directory and -selection options do not belong to the TixFileSelectDialog widget. A common mistake that people make is to try to configure the non-existent -pattern option of the TixFileSelectDialog, which causes much despair, long error messages and great loss of self-confidence. Always remember:, when you want to configure an option, find out whether it belongs to the widget or its subwidgets.

    5.1.3 The TixExFileSelectDialog Widget


    (Figure 5-3) The ExFileSelectDialog Widget

    The TixExFileSelectDialog widget is very similar to the TixFileSelectDialog widget. It supports all the options and widget commands of the latter, so essentially we can just take the program 5-1 and replace the command tixFileSelectDialog in the first line to tixExFileSelectDialog.

    The composition of the TixExFileSelectDialog widget is a bit different: it contains one contains one subwidget, which is also called fsbox, of the type TixExFileSelectBox widget (figure 5-3 ). Again this fsbox widgets supports all widget options and commands of the fsbox subwidget in TixFileSelectDialog, so the line 2 of program 5-1 can work for TixExFileSelectDialog widgets without any change.

    5.1.4 Specifying File Types for TixExFileSelectDialog

    The TixExFileSelectBox widget has a ComboBox subwidget marked as ``Select Files of Type:'' (see figure 5-3 ). This widget contains some pre-set types of files for the user to choose from. For example, a word processor program can include choices such as ``Microsoft Word Documents'' and ``WordPerfect Documents''.

    The TixExFileSelectBox widget has a -filetypes option for this purpose. As shown in line 3 through 7 in program 5-4 , the value for the -filetypes option is a list. Each item in the list should contain two parts. The first part is a list of file patterns and the second part is the textual name for this type of files.

    5.1.5 The tix filedialog Command

    TixExFileSelectDialog and TixFileSelectDialog are very similar to each other. So which one should we use? That is just a matter of taste. However, since we know that programmers usually have bad taste, clever programmers would rather step aside and let the users exercise their own taste. To do this, we can use the tix filedialog command.

    For any programs based on Tix, the user can choose his preferred type of file dialog by setting the X resource FileDialog to either tixFileSelectDialog or tixExFileSelectDialog. This can usually be done by inserting a line similar to the following into the user's .Xdefaults file:

    *myapp*FileDialog: tixExFileSelectDialog
    
    When we call the command tix filedialog, it will return a file dialog widget of the user's preferred type.

    The advantage of using tix filedialog is it makes coding flexible. If the management suddenly mandates that we dump the Motif look-and-feel in favor of the MS Windows look-and-feel, we don't need to dig up every line of tixFileSelectDialog calls and replace it with tixExFileSelectDialog. Also, tix filedialog creates only one copy of the file dialog, which can be shared by different parts of the program. Therefore, we can avoid creating a separate file dialog widget for each of the ``Open'', ``Save'' and ``Save As'' commands in our application. This way, we can save resource since a file dialog is a large widget and it takes up quite a bit of space.

    set dialog [tix filedialog]
    $dialog -title "Select A File" -command selectCmd
    $dialog subwidget fsbox config -pattern "*.txt" -directory /usr/info
    if {[winfo class $dialog] == "TixExFileSelectDialog"} {
        $dialog subwidget fsbox config -filetypes {
            {{*}            {*     -- All files}}
            {{*.txt}        {*.txt -- Text files}}
            {{*.c}          {*.c   -- C source files}}
        }
    }
    $dialog popup
    
    

    proc selectCmd {filename} { puts "You have selected $filename" }


    (Figure 5-4) Using the tix dialog command

    The use of the tix filedialog command is shown in program 5-4 . This program is very similar to what we saw in program 5-1 , except now we aren't really sure which type of file dialog the user have chosen. Therefore, if we want to do something allowed for only one type of file dialogs, we have to be careful. At line 4 of program 5-4 , we use the winfo command to see whether the type of the file dialog is TixExFileSelectDialog. If so, we set the value for the -filetypes option of its fsbox subwidget.

    5.2 Selecting Directories with the TixDirTree and TixDirList Widgets

    There are two Tix widgets for selecting a directory: TixDirList (figure 5-6 ) and TixDirTree (figure 5-6 ). Both of them display the directories in a hierarchical format. The display in the TixDirList widget is more compact: it shows only the parent- and child-directories of a particular directory. The TixDirTree widget, on the other hand, can display the whole tree structure of the file system.

    The programming interface of these two widgets are the same and you can choose the which one to use depending on your application. As shown in the following example, you can use the -directory option of the TixDirList widget to specify a directory to display. In the example, we set -directory to be /home/ioi/dev. As a result, the TixDirList widget displays all the subdirectories and all the ancestor directories of /home/ioi/dev. You can use the -command and -browsecmd options to handle the user events: a double click or Return key-stroke will trigger the -command option and a single click or space bar key stroke will trigger the -browsecmd option. Normally, you would handle both type of events in the same manner, as we have done in program 5-5

    tixDirList .d -value /home/ioi/dev 
    -command "selectDir" -browsecmd "selectDir" pack .d

    proc selectDir {dir} { puts "now you select $dir" }


    (Figure 5-5) Using the TixDirList widget

    DirTree

    DirList


    (Figure 5-6) The DirTree and DirList Widgets

    Tix8.4.3/unix/0000775000122200012240000000000010767576212013373 5ustar jeffhjeffh00000000000000Tix8.4.3/unix/tixUnixDefault.h0000664000122200012240000002045307221315373016513 0ustar jeffhjeffh00000000000000/* * tixUnixDefault.h -- * * This file defines the defaults for all options for all of * the Tix widgets. * * Copyright (c) 2000 Tix Project Group. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * $Id: tixUnixDefault.h,v 1.3 2000/12/24 06:43:07 ioilam Exp $ */ #ifndef TIX_WIN_DEFAULT #define TIX_WIN_DEFAULT /* * The following were defined in Windows versions of Tk 8.0+ but * not in the Unix versions. */ #ifndef CTL_FONT #define CTL_FONT "Helvetica -12 bold" #endif #ifndef NORMAL_FG #define NORMAL_FG BLACK #endif #ifndef TEXT_FG #define TEXT_FG NORMAL_FG #endif #ifndef SELECT_FG #define SELECT_FG NORMAL_FG #endif #ifndef MENU_BG #define MENU_BG NORMAL_BG #endif #ifndef MENU_FG #define MENU_FG NORMAL_FG #endif #ifndef HIGHLIGHT #define HIGHLIGHT NORMAL_FG #endif #define CTL_BOLD_FONT "Helvetica -12 bold" #define TIX_EDITOR_BG NORMAL_BG #define TIX_BORDER_WIDTH "2" #define TIX_HIGHLIGHT_THICKNESS "1" /* * Compound image */ #define DEF_CMPIMAGE_BG_COLOR NORMAL_BG #define DEF_CMPIMAGE_BG_MONO WHITE #define DEF_CMPIMAGE_FG_COLOR BLACK #define DEF_CMPIMAGE_FG_MONO BLACK #define DEF_CMPIMAGE_FONT CTL_FONT /* * tixHList widget */ #define DEF_HLIST_BG_COLOR TIX_EDITOR_BG #define DEF_HLIST_BG_MONO WHITE #define DEF_HLIST_BORDER_WIDTH TIX_BORDER_WIDTH #define DEF_HLIST_BROWSE_COMMAND "" #define DEF_HLIST_COMMAND "" #define DEF_HLIST_COLUMNS "1" #define DEF_HLIST_CURSOR "" #define DEF_HLIST_DISPLAY_MODE "tree" #define DEF_HLIST_DRAG_COMMAND "" #define DEF_HLIST_DRAW_BRANCH "true" #define DEF_HLIST_DROP_COMMAND "" #define DEF_HLIST_FONT CTL_FONT #define DEF_HLIST_FG_COLOR BLACK #define DEF_HLIST_FG_MONO BLACK #define DEF_HLIST_HEADER "0" #define DEF_HLIST_HEIGHT "10" #define DEF_HLIST_HIGHLIGHT_COLOR BLACK #define DEF_HLIST_HIGHLIGHT_MONO BLACK #define DEF_HLIST_HIGHLIGHT_WIDTH TIX_HIGHLIGHT_THICKNESS #define DEF_HLIST_RELIEF "sunken" #define DEF_HLIST_ORIENT "vertical" #define DEF_HLIST_PADX "2" #define DEF_HLIST_PADY "2" #define DEF_HLIST_GAP "5" #define DEF_HLIST_INDENT "10" #define DEF_HLIST_INDICATOR "0" #define DEF_HLIST_INDICATOR_CMD "" #define DEF_HLIST_ITEM_TYPE "text" #define DEF_HLIST_SELECT_BG_COLOR SELECT_BG #define DEF_HLIST_SELECT_FG_COLOR SELECT_FG #define DEF_HLIST_SELECT_BG_MONO BLACK #define DEF_HLIST_SELECT_FG_MONO WHITE #define DEF_HLIST_SELECT_MODE "browse" #define DEF_HLIST_SELECT_BORDERWIDTH "0" #define DEF_HLIST_SEPARATOR "." #define DEF_HLIST_SIZE_COMMAND "" #define DEF_HLIST_TAKE_FOCUS "1" #define DEF_HLIST_WIDTH "20" #define DEF_HLIST_WIDE_SELECT "true" #define DEF_HLIST_Y_SCROLL_COMMAND "" #define DEF_HLIST_X_SCROLL_COMMAND "" /* * HList Entry */ #define DEF_HLISTENTRY_BITMAP "" #define DEF_HLISTENTRY_DATA "" #define DEF_HLISTENTRY_GAP "4" #define DEF_HLISTENTRY_IMAGE "" #define DEF_HLISTENTRY_JUSTIFY "left" #define DEF_HLISTENTRY_NAME "" #define DEF_HLISTENTRY_PADX "2" #define DEF_HLISTENTRY_PADY "2" #define DEF_HLISTENTRY_STATE "normal" #define DEF_HLISTENTRY_TEXT "" #define DEF_HLISTENTRY_UNDERLINE "-1" #define DEF_HLISTENTRY_WIDGET "" #define DEF_HLISTENTRY_WLENGTH "0" /* * HList Entry */ #define DEF_HLISTHEADER_BG_COLOR NORMAL_BG #define DEF_HLISTHEADER_BG_MONO WHITE #define DEF_HLISTHEADER_BORDER_WIDTH TIX_BORDER_WIDTH #define DEF_HLISTHEADER_RELIEF "raised" /* * tixNBFrame widget */ #define DEF_NOTEBOOKFRAME_INACTIVE_BG_COLOR NORMAL_BG #define DEF_NOTEBOOKFRAME_INACTIVE_BG_MONO WHITE #define DEF_NOTEBOOKFRAME_BACKPAGE_COLOR NORMAL_BG #define DEF_NOTEBOOKFRAME_BACKPAGE_MONO WHITE #define DEF_NOTEBOOKFRAME_BG_COLOR NORMAL_BG #define DEF_NOTEBOOKFRAME_BG_MONO WHITE #define DEF_NOTEBOOKFRAME_DISABLED_FG_COLOR DISABLED #define DEF_NOTEBOOKFRAME_DISABLED_FG_MONO "" #define DEF_NOTEBOOKFRAME_FOCUS_COLOR BLACK #define DEF_NOTEBOOKFRAME_FOCUS_MONO BLACK #define DEF_NOTEBOOKFRAME_BORDER_WIDTH TIX_BORDER_WIDTH #define DEF_NOTEBOOKFRAME_CURSOR "" #define DEF_NOTEBOOKFRAME_FONT CTL_FONT #define DEF_NOTEBOOKFRAME_FG_COLOR BLACK #define DEF_NOTEBOOKFRAME_FG_MONO BLACK #define DEF_NOTEBOOKFRAME_RELIEF "raised" #define DEF_NOTEBOOKFRAME_SLAVE "1" #define DEF_NOTEBOOKFRAME_TAKE_FOCUS "1" #define DEF_NOTEBOOKFRAME_WIDTH "10" #define DEF_NOTEBOOKFRAME_TABPADX "6" #define DEF_NOTEBOOKFRAME_TABPADY "3" /* * TList widget */ #define DEF_TLIST_BG_COLOR TIX_EDITOR_BG #define DEF_TLIST_BG_MONO WHITE #define DEF_TLIST_BORDER_WIDTH TIX_BORDER_WIDTH #define DEF_TLIST_BROWSE_COMMAND "" #define DEF_TLIST_COMMAND "" #define DEF_TLIST_CURSOR "" #define DEF_TLIST_FONT CTL_FONT #define DEF_TLIST_FG_COLOR BLACK #define DEF_TLIST_FG_MONO BLACK #define DEF_TLIST_HEIGHT "10" #define DEF_TLIST_HIGHLIGHT_COLOR BLACK #define DEF_TLIST_HIGHLIGHT_MONO BLACK #define DEF_TLIST_HIGHLIGHT_WIDTH TIX_HIGHLIGHT_THICKNESS #define DEF_TLIST_ITEM_TYPE "text" #define DEF_TLIST_RELIEF "sunken" #define DEF_TLIST_ORIENT "vertical" #define DEF_TLIST_PADX "2" #define DEF_TLIST_PADY "2" #define DEF_TLIST_SELECT_BG_COLOR SELECT_BG #define DEF_TLIST_SELECT_FG_COLOR SELECT_FG #define DEF_TLIST_SELECT_BG_MONO BLACK #define DEF_TLIST_SELECT_FG_MONO WHITE #define DEF_TLIST_SELECT_MODE "browse" #define DEF_TLIST_SELECT_BORDERWIDTH "0" #define DEF_TLIST_STATE "normal" #define DEF_TLIST_SIZE_COMMAND "" #define DEF_TLIST_TAKE_FOCUS "1" #define DEF_TLIST_WIDTH "20" #define DEF_TLIST_Y_SCROLL_COMMAND "" #define DEF_TLIST_X_SCROLL_COMMAND "" /* * Grid widget */ #define DEF_GRID_BG_COLOR NORMAL_BG #define DEF_GRID_BG_MONO WHITE #define DEF_GRID_BORDER_WIDTH TIX_BORDER_WIDTH #define DEF_GRID_BROWSE_COMMAND "" #define DEF_GRID_COMMAND "" #define DEF_GRID_CURSOR "" #define DEF_GRID_DEFAULT_WIDTH "40" #define DEF_GRID_DEFAULT_HEIGHT "20" #define DEF_GRID_EDITDONE_COMMAND "" #define DEF_GRID_EDITNOTIFY_COMMAND "" #define DEF_GRID_FLOATING_ROWS "0" #define DEF_GRID_FLOATING_COLS "0" #define DEF_GRID_FONT CTL_FONT #define DEF_GRID_FG_COLOR BLACK #define DEF_GRID_FG_MONO BLACK #define DEF_GRID_FORMAT_COMMAND "" #define DEF_GRID_HEIGHT "10" #define DEF_GRID_HIGHLIGHT_COLOR BLACK #define DEF_GRID_HIGHLIGHT_MONO BLACK #define DEF_GRID_HIGHLIGHT_WIDTH TIX_HIGHLIGHT_THICKNESS #define DEF_GRID_LEFT_MARGIN "1" #define DEF_GRID_ITEM_TYPE "text" #define DEF_GRID_RELIEF "sunken" #define DEF_GRID_PADX "2" #define DEF_GRID_PADY "2" #define DEF_GRID_SELECT_BG_COLOR ACTIVE_BG #define DEF_GRID_SELECT_FG_COLOR BLACK #define DEF_GRID_SELECT_BG_MONO BLACK #define DEF_GRID_SELECT_FG_MONO WHITE #define DEF_GRID_SELECT_MODE "single" #define DEF_GRID_SELECT_UNIT "row" #define DEF_GRID_SELECT_BORDERWIDTH "0" #define DEF_GRID_STATE "normal" #define DEF_GRID_SIZE_COMMAND "" #define DEF_GRID_TAKE_FOCUS "1" #define DEF_GRID_TOP_MARGIN "1" #define DEF_GRID_WIDTH "4" #define DEF_GRID_Y_SCROLL_COMMAND "" #define DEF_GRID_X_SCROLL_COMMAND "" /*---------------------------------------------------------------------- * * default options for Text Display Items/Styles * *---------------------------------------------------------------------- */ #define DEF_TEXTITEM_STYLE "" #define DEF_TEXTITEM_TEXT "" #define DEF_TEXTITEM_UNDERLINE "-1" #define DEF_TEXTITEM_TYPE "text" #define DEF_TEXTSTYLE_NORMAL_FG_COLOR NORMAL_FG #define DEF_TEXTSTYLE_NORMAL_FG_MONO BLACK #define DEF_TEXTSTYLE_NORMAL_BG_COLOR TIX_EDITOR_BG #define DEF_TEXTSTYLE_NORMAL_BG_MONO WHITE #define DEF_TEXTSTYLE_ACTIVE_FG_COLOR NORMAL_FG #define DEF_TEXTSTYLE_ACTIVE_FG_MONO WHITE #define DEF_TEXTSTYLE_ACTIVE_BG_COLOR ACTIVE_BG #define DEF_TEXTSTYLE_ACTIVE_BG_MONO BLACK #define DEF_TEXTSTYLE_SELECTED_FG_COLOR SELECT_FG #define DEF_TEXTSTYLE_SELECTED_FG_MONO WHITE #define DEF_TEXTSTYLE_SELECTED_BG_COLOR SELECT_BG #define DEF_TEXTSTYLE_SELECTED_BG_MONO BLACK #define DEF_TEXTSTYLE_DISABLED_FG_COLOR BLACK #define DEF_TEXTSTYLE_DISABLED_FG_MONO BLACK #define DEF_TEXTSTYLE_DISABLED_BG_COLOR TIX_EDITOR_BG #define DEF_TEXTSTYLE_DISABLED_BG_MONO WHITE #define DEF_TEXTSTYLE_PADX "2" #define DEF_TEXTSTYLE_PADY "2" #define DEF_TEXTSTYLE_FONT CTL_FONT #define DEF_TEXTSTYLE_JUSTIFY "left" #define DEF_TEXTSTYLE_WLENGTH "0" #define DEF_TEXTSTYLE_ANCHOR "w" #endif /* TIX_WIN_DEFAULT */ Tix8.4.3/unix/tixUnixInt.h0000664000122200012240000000073607110476706015670 0ustar jeffhjeffh00000000000000 /* $Id: tixUnixInt.h,v 1.1.1.1 2000/05/17 11:08:54 idiscovery Exp $ */ /* * tixUnixInt.h * * Internal header file for Tix on the Unix platform. * * Copyright (c) 1996, Expert Interface Technologies * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ #ifndef _TIX_UNIX_INT_H_ #define _TIX_UNIX_INT_H_ #ifndef _TIX_INT_H_ #include "tixInt.h" #endif #endif /* _TIX_UNIX_INT_H_ */ Tix8.4.3/unix/tixUnixMwm.c0000644000122200012240000005601110221070571015647 0ustar jeffhjeffh00000000000000 /* $Id: tixUnixMwm.c,v 1.2 2005/03/25 20:15:53 hobbs Exp $ */ /* * tixUnixMwm.c -- * * Communicating with the Motif window manager. * * * Copyright (c) 1996, Expert Interface Technologies * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ #include #include #include #ifndef MAC_OSX_TK #include #include #include #include #ifdef HAS_MOTIF_INC #include #else /* * This section is provided for the machines that don't have the Motif * header files installed. */ #define MWM_DECOR_ALL (1L << 0) #define MWM_DECOR_BORDER (1L << 1) #define MWM_DECOR_RESIZEH (1L << 2) #define MWM_DECOR_TITLE (1L << 3) #define MWM_DECOR_MENU (1L << 4) #define MWM_DECOR_MINIMIZE (1L << 5) #define MWM_DECOR_MAXIMIZE (1L << 6) #define MWM_HINTS_DECORATIONS (1L << 1) #define PROP_MOTIF_WM_HINTS_ELEMENTS 5 #define PROP_MWM_HINTS_ELEMENTS PROP_MOTIF_WM_HINTS_ELEMENTS /* atom name for _MWM_HINTS property */ #define _XA_MOTIF_WM_HINTS "_MOTIF_WM_HINTS" #define _XA_MWM_HINTS _XA_MOTIF_WM_HINTS #define _XA_MOTIF_WM_MENU "_MOTIF_WM_MENU" #define _XA_MWM_MENU _XA_MOTIF_WM_MENU #define _XA_MOTIF_WM_INFO "_MOTIF_WM_INFO" #define _XA_MWM_INFO _XA_MOTIF_WM_INFO #define PROP_MOTIF_WM_INFO_ELEMENTS 2 #define PROP_MWM_INFO_ELEMENTS PROP_MOTIF_WM_INFO_ELEMENTS typedef struct { CARD32 flags; CARD32 functions; CARD32 decorations; INT32 inputMode; CARD32 status; } PropMotifWmHints; typedef PropMotifWmHints PropMwmHints; typedef struct { CARD32 flags; CARD32 wmWindow; } PropMotifWmInfo; typedef PropMotifWmInfo PropMwmInfo; #endif /* HAS_MOTIF_INC */ #define MWM_DECOR_UNKNOWN (-1) #define MWM_DECOR_EVERYTHING (MWM_DECOR_BORDER |\ MWM_DECOR_RESIZEH |\ MWM_DECOR_TITLE |\ MWM_DECOR_MENU |\ MWM_DECOR_MINIMIZE |\ MWM_DECOR_MAXIMIZE) typedef struct _Tix_MwmInfo { Tcl_Interp * interp; Tk_Window tkwin; PropMwmHints prop; /* not used */ Atom mwm_hints_atom; Tcl_HashTable protocols; unsigned int isremapping : 1; unsigned int resetProtocol : 1; unsigned int addedMwmMsg : 1; } Tix_MwmInfo; typedef struct Tix_MwmProtocol { Atom protocol; char * name; char * menuMessage; size_t messageLen; unsigned int active : 1; } Tix_MwmProtocol; /* Function declaration */ static void AddMwmProtocol _ANSI_ARGS_((Tcl_Interp *interp, Tix_MwmInfo *wmPtr, CONST84 char * name, CONST84 char * message)); static void ActivateMwmProtocol _ANSI_ARGS_((Tcl_Interp *interp, Tix_MwmInfo *wmPtr, CONST84 char * name)); static void DeactivateMwmProtocol _ANSI_ARGS_((Tcl_Interp *interp, Tix_MwmInfo *wmPtr, CONST84 char * name)); static void DeleteMwmProtocol _ANSI_ARGS_((Tcl_Interp *interp, Tix_MwmInfo *wmPtr, CONST84 char * name)); static Tix_MwmInfo * GetMwmInfo _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin)); static Tix_MwmProtocol* GetMwmProtocol _ANSI_ARGS_((Tcl_Interp * interp, Tix_MwmInfo * wmPtr, Atom protocol)); static int IsMwmRunning _ANSI_ARGS_((Tcl_Interp * interp, Tix_MwmInfo*wmPtr)); static int MwmDecor _ANSI_ARGS_((Tcl_Interp * interp, CONST84 char * string)); static int MwmProtocol _ANSI_ARGS_((Tcl_Interp * interp, Tix_MwmInfo * wmPtr, int argc, CONST84 char ** argv)); static void QueryMwmHints _ANSI_ARGS_((Tix_MwmInfo * wmPtr)); static void RemapWindow _ANSI_ARGS_((ClientData clientData)); static void RemapWindowWhenIdle _ANSI_ARGS_(( Tix_MwmInfo * wmPtr)); static void ResetProtocols _ANSI_ARGS_((ClientData clientData)); static void ResetProtocolsWhenIdle _ANSI_ARGS_(( Tix_MwmInfo * wmPtr)); static int SetMwmDecorations _ANSI_ARGS_((Tcl_Interp *interp, Tix_MwmInfo*wmPtr, int argc, CONST84 char ** argv)); static int SetMwmTransientFor _ANSI_ARGS_((Tcl_Interp *interp, Tix_MwmInfo*wmPtr, TkWindow *mainWindow, int argc, CONST84 char ** argv)); static void StructureProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); /* Local variables */ static Tcl_HashTable mwmTable; /* *---------------------------------------------------------------------- * * Tix_MwmCmd -- * * This procedure is invoked to process the "mwm" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tix_MwmCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ CONST84 char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; TkWindow *winPtr; char c; size_t length; Tix_MwmInfo * wmPtr; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option pathname ?arg ...?\"", (char *) NULL); return TCL_ERROR; } c = argv[1][0]; length = strlen(argv[1]); if (!(winPtr = (TkWindow *) Tk_NameToWindow(interp, argv[2], tkwin))) { return TCL_ERROR; } if (!Tk_IsTopLevel(winPtr)) { Tcl_AppendResult(interp, argv[2], " is not a toplevel window.", NULL); return TCL_ERROR; } if (!(wmPtr=GetMwmInfo(interp, (Tk_Window) winPtr))) { return TCL_ERROR; } if ((c == 'd') && (strncmp(argv[1], "decorations", length) == 0)) { return SetMwmDecorations(interp, wmPtr, argc-3, argv+3); } else if ((c == 'i') && (strncmp(argv[1], "ismwmrunning", length) == 0)) { if (IsMwmRunning(interp, wmPtr)) { Tcl_AppendResult(interp, "1", NULL); } else { Tcl_AppendResult(interp, "0", NULL); } return TCL_OK; } else if ((c == 'p') && (strncmp(argv[1], "protocol", length) == 0)) { return MwmProtocol(interp, wmPtr, argc-3, argv+3); } else if ((c == 't') && (strncmp(argv[1], "transientfor", length) == 0)) { return SetMwmTransientFor(interp, wmPtr, winPtr, argc-3, argv+3); } else { Tcl_AppendResult(interp, "unknown or ambiguous option \"", argv[1], "\": must be decorations, ismwmrunning, protocol ", "or transientfor", NULL); return TCL_ERROR; } } /* *---------------------------------------------------------------------- * TixMwmProtocolHandler -- * * A generic X event handler that handles the events from the Mwm * Window manager. * * Results: * True iff the event has been handled. * * Side effects: * None. *---------------------------------------------------------------------- */ int TixMwmProtocolHandler(clientData, eventPtr) ClientData clientData; XEvent *eventPtr; { TkWindow *winPtr; Window handlerWindow; if (eventPtr->type != ClientMessage) { return 0; } handlerWindow = eventPtr->xany.window; winPtr = (TkWindow *) Tk_IdToWindow(eventPtr->xany.display, handlerWindow); if (winPtr != NULL) { if (eventPtr->xclient.message_type == Tk_InternAtom((Tk_Window) winPtr,"_MOTIF_WM_MESSAGES")) { TkWmProtocolEventProc(winPtr, eventPtr); return 1; } } return 0; } static int MwmDecor(interp, string) Tcl_Interp * interp; CONST84 char * string; { size_t len = strlen(string); if (strncmp(string, "-all", len) == 0) { return MWM_DECOR_ALL; } else if (strncmp(string, "-border", len) == 0) { return MWM_DECOR_BORDER; } else if (strncmp(string, "-resizeh", len) == 0) { return MWM_DECOR_RESIZEH; } else if (strncmp(string, "-title", len) == 0) { return MWM_DECOR_TITLE; } else if (strncmp(string, "-menu", len) == 0) { return MWM_DECOR_MENU; } else if (strncmp(string, "-minimize", len) == 0) { return MWM_DECOR_MINIMIZE; } else if (strncmp(string, "-maximize", len) == 0) { return MWM_DECOR_MAXIMIZE; } else { Tcl_AppendResult(interp, "unknown decoration \"", string, "\"", NULL); return -1; } } static void QueryMwmHints(wmPtr) Tix_MwmInfo * wmPtr; { Atom actualType; int actualFormat; unsigned long numItems, bytesAfter; wmPtr->prop.flags = MWM_HINTS_DECORATIONS; if (XGetWindowProperty(Tk_Display(wmPtr->tkwin),Tk_WindowId(wmPtr->tkwin), wmPtr->mwm_hints_atom, 0, PROP_MWM_HINTS_ELEMENTS, False, wmPtr->mwm_hints_atom, &actualType, &actualFormat, &numItems, &bytesAfter, (unsigned char **) & wmPtr->prop) == Success) { if ((actualType != wmPtr->mwm_hints_atom) || (actualFormat != 32) || (numItems <= 0)) { /* It looks like this window doesn't have a _XA_MWM_HINTS * property. Let's give the default value */ wmPtr->prop.decorations = MWM_DECOR_EVERYTHING; } } else { /* We get an error somehow. Pretend that the decorations are all */ wmPtr->prop.decorations = MWM_DECOR_EVERYTHING; } } static void RemapWindow(clientData) ClientData clientData; { Tix_MwmInfo * wmPtr = (Tix_MwmInfo *)clientData; Tk_UnmapWindow(wmPtr->tkwin); Tk_MapWindow(wmPtr->tkwin); wmPtr->isremapping = 0; } static void RemapWindowWhenIdle(wmPtr) Tix_MwmInfo * wmPtr; { if (!wmPtr->isremapping) { wmPtr->isremapping = 1; Tk_DoWhenIdle(RemapWindow, (ClientData)wmPtr); } } /* * SetMwmDecorations -- * * */ static int SetMwmDecorations(interp, wmPtr, argc, argv) Tcl_Interp *interp; Tix_MwmInfo*wmPtr; int argc; CONST84 char ** argv; { int i; int decor; char buff[40]; if (argc == 0 || argc == 1) { /* * Query the existing settings */ QueryMwmHints(wmPtr); if (argc == 0) { /* * Query all hints */ sprintf(buff, "-border %d", ((wmPtr->prop.decorations & MWM_DECOR_BORDER)!=0)); Tcl_AppendElement(interp, buff); sprintf(buff, "-resizeh %d", ((wmPtr->prop.decorations &MWM_DECOR_RESIZEH)!=0)); Tcl_AppendElement(interp, buff); sprintf(buff, "-title %d", ((wmPtr->prop.decorations & MWM_DECOR_TITLE)!=0)); Tcl_AppendElement(interp, buff); sprintf(buff, "-menu %d", ((wmPtr->prop.decorations & MWM_DECOR_MENU)!=0)); Tcl_AppendElement(interp, buff); sprintf(buff, "-minimize %d", ((wmPtr->prop.decorations&MWM_DECOR_MINIMIZE)!=0)); Tcl_AppendElement(interp, buff); sprintf(buff, "-maximize %d", ((wmPtr->prop.decorations&MWM_DECOR_MAXIMIZE)!=0)); Tcl_AppendElement(interp, buff); return TCL_OK; } else { /* * Query only one hint */ if ((decor = MwmDecor(interp, argv[0])) == MWM_DECOR_UNKNOWN) { return TCL_ERROR; } if (wmPtr->prop.decorations & decor) { Tcl_AppendResult(interp, "1", NULL); } else { Tcl_AppendResult(interp, "0", NULL); } return TCL_OK; } } else { if (argc %2) { Tcl_AppendResult(interp, "value missing for option \"", argv[argc-1], "\"", NULL); return TCL_ERROR; } for (i=0; iprop.decorations |= decor; } else { wmPtr->prop.decorations &= ~decor; } if (decor == MWM_DECOR_ALL) { if (value) { wmPtr->prop.decorations |= MWM_DECOR_EVERYTHING; } else { wmPtr->prop.decorations &= ~MWM_DECOR_EVERYTHING; } } } wmPtr->prop.flags = MWM_HINTS_DECORATIONS; XChangeProperty(Tk_Display(wmPtr->tkwin), Tk_WindowId(wmPtr->tkwin), wmPtr->mwm_hints_atom, wmPtr->mwm_hints_atom, 32, PropModeReplace, (unsigned char *) &wmPtr->prop, PROP_MWM_HINTS_ELEMENTS); if (Tk_IsMapped(wmPtr->tkwin)) { /* Needs unmap/map to refresh */ RemapWindowWhenIdle(wmPtr); } return TCL_OK; } } static int MwmProtocol(interp, wmPtr, argc, argv) Tcl_Interp * interp; Tix_MwmInfo * wmPtr; int argc; CONST84 char ** argv; { size_t len; if (argc == 0) { Tcl_HashSearch hSearch; Tcl_HashEntry * hashPtr; Tix_MwmProtocol * ptPtr; /* Iterate over all the entries in the hash table */ for (hashPtr = Tcl_FirstHashEntry(&wmPtr->protocols, &hSearch); hashPtr; hashPtr = Tcl_NextHashEntry(&hSearch)) { ptPtr = (Tix_MwmProtocol *)Tcl_GetHashValue(hashPtr); Tcl_AppendElement(interp, ptPtr->name); } return TCL_OK; } len = strlen(argv[0]); if (strncmp(argv[0], "add", len) == 0 && argc == 3) { AddMwmProtocol(interp, wmPtr, argv[1], argv[2]); } else if (strncmp(argv[0], "activate", len) == 0 && argc == 2) { ActivateMwmProtocol(interp, wmPtr, argv[1]); } else if (strncmp(argv[0], "deactivate", len) == 0 && argc == 2) { DeactivateMwmProtocol(interp, wmPtr, argv[1]); } else if (strncmp(argv[0], "delete", len) == 0 && argc == 2) { DeleteMwmProtocol(interp, wmPtr, argv[1]); } else { Tcl_AppendResult(interp, "unknown option \"", argv[0], "\" should be add, activate, deactivate or delete", NULL); return TCL_ERROR; } return TCL_OK; } static void AddMwmProtocol(interp, wmPtr, name, message) Tcl_Interp *interp; Tix_MwmInfo *wmPtr; CONST84 char * name; CONST84 char * message; { Atom protocol; Tix_MwmProtocol *ptPtr; protocol = Tk_InternAtom(wmPtr->tkwin, name); ptPtr = GetMwmProtocol(interp, wmPtr, protocol); if (ptPtr->menuMessage != NULL) { /* This may happen if "protocol add" called twice for the same name */ ckfree(ptPtr->menuMessage); } if (ptPtr->name == NULL) { ptPtr->name = tixStrDup(name); } ptPtr->menuMessage = tixStrDup(message); ptPtr->messageLen = strlen(message); ptPtr->active = 1; ResetProtocolsWhenIdle(wmPtr); } static void ActivateMwmProtocol(interp, wmPtr, name) Tcl_Interp *interp; Tix_MwmInfo *wmPtr; CONST84 char * name; { Atom protocol; Tix_MwmProtocol *ptPtr; protocol = Tk_InternAtom(wmPtr->tkwin, name); ptPtr = GetMwmProtocol(interp, wmPtr, protocol); ptPtr->active = 1; ResetProtocolsWhenIdle(wmPtr); } static void DeactivateMwmProtocol(interp, wmPtr, name) Tcl_Interp *interp; Tix_MwmInfo *wmPtr; CONST84 char * name; { Atom protocol; Tix_MwmProtocol *ptPtr; protocol = Tk_InternAtom(wmPtr->tkwin, name); ptPtr = GetMwmProtocol(interp, wmPtr, protocol); ptPtr->active = 0; ResetProtocolsWhenIdle(wmPtr); } /* * Any "wm protocol" event handlers for the deleted protocol are * *not* automatically deleted. It is the application programmer's * responsibility to delete them using * * wm protocol SOME_JUNK_PROTOCOL {} */ static void DeleteMwmProtocol(interp, wmPtr, name) Tcl_Interp *interp; Tix_MwmInfo *wmPtr; CONST84 char * name; { Atom protocol; Tix_MwmProtocol *ptPtr; Tcl_HashEntry * hashPtr; protocol = Tk_InternAtom(wmPtr->tkwin, name); hashPtr = Tcl_FindHashEntry(&wmPtr->protocols, (char*)protocol); if (hashPtr) { ptPtr = (Tix_MwmProtocol *)Tcl_GetHashValue(hashPtr); ckfree(ptPtr->name); ckfree(ptPtr->menuMessage); ckfree((char*)ptPtr); Tcl_DeleteHashEntry(hashPtr); } ResetProtocolsWhenIdle(wmPtr); } static void ResetProtocolsWhenIdle(wmPtr) Tix_MwmInfo * wmPtr; { if (!wmPtr->resetProtocol) { wmPtr->resetProtocol = 1; Tk_DoWhenIdle(ResetProtocols, (ClientData)wmPtr); } } static void ResetProtocols(clientData) ClientData clientData; { Tix_MwmInfo * wmPtr = (Tix_MwmInfo *) clientData; int numProtocols = wmPtr->protocols.numEntries; Atom * atoms, mwm_menu_atom, motif_msgs; Tcl_HashSearch hSearch; Tcl_HashEntry * hashPtr; Tix_MwmProtocol * ptPtr; int n; Tcl_DString dString; atoms = (Atom*)ckalloc(numProtocols * sizeof(Atom)); Tcl_DStringInit(&dString); /* Iterate over all the entries in the hash table */ for (hashPtr = Tcl_FirstHashEntry(&wmPtr->protocols, &hSearch), n=0; hashPtr; hashPtr = Tcl_NextHashEntry(&hSearch)) { char tmp[100]; ptPtr = (Tix_MwmProtocol *)Tcl_GetHashValue(hashPtr); if (ptPtr->active) { atoms[n++] = ptPtr->protocol; } Tcl_DStringAppend(&dString, ptPtr->menuMessage, (int)ptPtr->messageLen); sprintf(tmp, " f.send_msg %d\n", (int)(ptPtr->protocol)); Tcl_DStringAppend(&dString, tmp, (int)strlen(tmp)); } /* Atoms for managing the MWM messages */ mwm_menu_atom = Tk_InternAtom(wmPtr->tkwin, _XA_MWM_MENU); motif_msgs = Tk_InternAtom(wmPtr->tkwin, "_MOTIF_WM_MESSAGES"); /* The _MOTIF_WM_MESSAGES atom must be in the wm_protocols. Otherwise * Mwm refuese to enable our menu items */ if (!wmPtr->addedMwmMsg) { Tix_GlobalVarEval(wmPtr->interp, "wm protocol ", Tk_PathName(wmPtr->tkwin), " _MOTIF_WM_MESSAGES {;}", NULL); wmPtr->addedMwmMsg = 1; } /* * These are the extra MWM protocols defined by this application. */ XChangeProperty(Tk_Display(wmPtr->tkwin), Tk_WindowId(wmPtr->tkwin), motif_msgs, XA_ATOM, 32, PropModeReplace, (unsigned char *)atoms, n); /* * Update the MWM menu items */ XChangeProperty(Tk_Display(wmPtr->tkwin), Tk_WindowId(wmPtr->tkwin), mwm_menu_atom, mwm_menu_atom, 8, PropModeReplace, (unsigned char *)dString.string, dString.length+1); Tcl_DStringFree(&dString); ckfree((char*)atoms); /* Done ! */ wmPtr->resetProtocol = 0; if (Tk_IsMapped(wmPtr->tkwin)) { /* Needs unmap/map to refresh */ RemapWindowWhenIdle(wmPtr); } } static int SetMwmTransientFor(interp, wmPtr, mainWindow, argc, argv) Tcl_Interp *interp; Tix_MwmInfo*wmPtr; TkWindow *mainWindow; int argc; CONST84 char ** argv; { Atom transfor_atom; TkWindow * master; transfor_atom = Tk_InternAtom(wmPtr->tkwin, "WM_TRANSIENT_FOR"); if (argc == 0) { return TCL_OK; } else if (argc == 1) { master = (TkWindow *) Tk_NameToWindow(interp, argv[0], (Tk_Window)mainWindow); if (master == NULL) { return TCL_ERROR; } XChangeProperty(Tk_Display(wmPtr->tkwin), Tk_WindowId(wmPtr->tkwin), transfor_atom, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&master->window, 1); return TCL_OK; } else { return TCL_ERROR; } } /* *---------------------------------------------------------------------- * * StructureProc -- * * Gets called in response to StructureNotify events in toplevels * operated by the tixMwm command. * * Results: * none * * Side effects: * The Tix_MwmInfo for the toplevel is deleted when the toplevel * is destroyed. * *---------------------------------------------------------------------- */ static void StructureProc(clientData, eventPtr) ClientData clientData; /* Our information about window * referred to by eventPtr. */ XEvent *eventPtr; /* Describes what just happened. */ { register Tix_MwmInfo * wmPtr = (Tix_MwmInfo *) clientData; Tcl_HashEntry *hashPtr; if (eventPtr->type == DestroyNotify) { Tcl_HashSearch hSearch; Tix_MwmProtocol * ptPtr; /* Delete all protocols in the hash table associated with * this toplevel */ for (hashPtr = Tcl_FirstHashEntry(&wmPtr->protocols, &hSearch); hashPtr; hashPtr = Tcl_NextHashEntry(&hSearch)) { ptPtr = (Tix_MwmProtocol *)Tcl_GetHashValue(hashPtr); ckfree(ptPtr->name); ckfree(ptPtr->menuMessage); ckfree((char*)ptPtr); Tcl_DeleteHashEntry(hashPtr); } Tcl_DeleteHashTable(&wmPtr->protocols); /* * Delete info about this toplevel in the table of all toplevels * controlled by tixMwm */ hashPtr = Tcl_FindHashEntry(&mwmTable, (char*)wmPtr->tkwin); if (hashPtr != NULL) { Tcl_DeleteHashEntry(hashPtr); } if (wmPtr->resetProtocol) { Tk_CancelIdleCall(ResetProtocols, (ClientData)wmPtr); wmPtr->resetProtocol = 0; } ckfree((char*)wmPtr); } } static Tix_MwmInfo * GetMwmInfo(interp, tkwin) Tcl_Interp * interp; Tk_Window tkwin; { static inited = 0; Tcl_HashEntry *hashPtr; int isNew; if (!inited) { Tcl_InitHashTable(&mwmTable, TCL_ONE_WORD_KEYS); inited = 1; } hashPtr = Tcl_CreateHashEntry(&mwmTable, (char*)tkwin, &isNew); if (!isNew) { return (Tix_MwmInfo *)Tcl_GetHashValue(hashPtr); } else { Tix_MwmInfo * wmPtr; wmPtr = (Tix_MwmInfo*) ckalloc(sizeof(Tix_MwmInfo)); wmPtr->interp = interp; wmPtr->tkwin = tkwin; wmPtr->isremapping = 0; wmPtr->resetProtocol = 0; wmPtr->addedMwmMsg = 0; if (Tk_WindowId(wmPtr->tkwin) == 0) { Tk_MakeWindowExist(wmPtr->tkwin); } wmPtr->mwm_hints_atom = Tk_InternAtom(wmPtr->tkwin, _XA_MWM_HINTS); Tcl_InitHashTable(&wmPtr->protocols, TCL_ONE_WORD_KEYS); QueryMwmHints(wmPtr); Tcl_SetHashValue(hashPtr, (char*)wmPtr); Tk_CreateEventHandler(tkwin, StructureNotifyMask, StructureProc, (ClientData)wmPtr); return wmPtr; } } static Tix_MwmProtocol * GetMwmProtocol(interp, wmPtr, protocol) Tcl_Interp * interp; Tix_MwmInfo * wmPtr; Atom protocol; { Tcl_HashEntry * hashPtr; int isNew; Tix_MwmProtocol * ptPtr; hashPtr = Tcl_CreateHashEntry(&wmPtr->protocols, (char*)protocol, &isNew); if (!isNew) { ptPtr = (Tix_MwmProtocol *)Tcl_GetHashValue(hashPtr); } else { ptPtr = (Tix_MwmProtocol *)ckalloc(sizeof(Tix_MwmProtocol)); ptPtr->protocol = protocol; ptPtr->name = NULL; ptPtr->menuMessage = NULL; Tcl_SetHashValue(hashPtr, (char*)ptPtr); } return ptPtr; } static int IsMwmRunning(interp, wmPtr) Tcl_Interp *interp; Tix_MwmInfo*wmPtr; { Atom motif_wm_info_atom; Atom actual_type; int actual_format; unsigned long num_items, bytes_after; PropMotifWmInfo *prop = 0; Window root; root = XRootWindow(Tk_Display(wmPtr->tkwin),Tk_ScreenNumber(wmPtr->tkwin)); motif_wm_info_atom = Tk_InternAtom(wmPtr->tkwin, _XA_MOTIF_WM_INFO); /* * If mwm is running, it will store info in the _XA_MOTIF_WM_INFO * atom in the root window */ XGetWindowProperty (Tk_Display(wmPtr->tkwin), root, motif_wm_info_atom, 0, (long)PROP_MOTIF_WM_INFO_ELEMENTS, 0, motif_wm_info_atom, &actual_type, &actual_format, &num_items, &bytes_after, (unsigned char **) &prop); if ((actual_type != motif_wm_info_atom) || (actual_format != 32) || (num_items < PROP_MOTIF_WM_INFO_ELEMENTS)) { /* * The _XA_MOTIF_WM_INFO doesn't exist for the root window. * Persumably Mwm is not running. */ if (prop) { XFree((char *)prop); } return(0); } else { /* * We still need to verify that the wm_window is indeed a child of * the root window. */ Window wm_window = (Window) prop->wmWindow; Window top, parent, *children; unsigned int num_children, i; int returnVal = 0; if (XQueryTree(Tk_Display(wmPtr->tkwin), root, &top, &parent, &children, &num_children)) { for (returnVal = 0, i = 0; i < num_children; i++) { if (children[i] == wm_window) { /* * is indeed a window of this root: mwm is rinning */ returnVal = 1; break; } } } if (prop) { XFree((char *)prop); } if (children) { XFree((char *)children); } return (returnVal); } } #endif Tix8.4.3/unix/tixUnixXpm.c0000644000122200012240000002071310526711074015663 0ustar jeffhjeffh00000000000000 /* $Id: tixUnixXpm.c,v 1.4 2006/11/15 22:18:36 hobbs Exp $ */ /* * tixUnixImgXpm.c -- * * Implement the Windows specific function calls for the pixmap * image type. * * Copyright (c) 1996, Expert Interface Technologies * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ #include #include #include #include #if !defined(WIN32) && !defined(MAC_OSX_TK) #define TkPutImage(colors, ncolors, display, pixels, gc, image, destx, desty, srcx, srcy, width, height) \ XPutImage(display, pixels, gc, image, destx, desty, srcx, \ srcy, width, height); #endif typedef struct PixmapData { Pixmap mask; /* Mask: only display pixmap pixels where * there are 1's here. */ GC gc; /* Graphics context for displaying pixmap. * None means there was an error while * setting up the instance, so it cannot * be displayed. */ } PixmapData; /*---------------------------------------------------------------------- * TixpInitPixmapInstance -- * * Initializes the platform-specific data of a pixmap instance * *---------------------------------------------------------------------- */ void TixpInitPixmapInstance(masterPtr, instancePtr) PixmapMaster *masterPtr; /* Pointer to master for image. */ PixmapInstance *instancePtr;/* The pixmap instance. */ { PixmapData * dataPtr; dataPtr = (PixmapData *)ckalloc(sizeof(PixmapData)); dataPtr->mask = None; dataPtr->gc = None; instancePtr->clientData = (ClientData)dataPtr; } #ifdef MAC_OSX_TK static int MacPutPixel(image, x, y, pixel) XImage *image; int x, y; unsigned long pixel; { unsigned char *destPtr = &(image->data[(y * image->bytes_per_line) + ((x * image->bits_per_pixel) / NBBY)]); int i=0; switch (image->bits_per_pixel) { case 32: destPtr[i++] = 0; case 24: destPtr[i++] = (unsigned char) ((pixel >> 16) & 0xff); destPtr[i++] = (unsigned char) ((pixel >> 8) & 0xff); destPtr[i++] = (unsigned char) (pixel & 0xff); break; } return 0; } #endif /*---------------------------------------------------------------------- * TixpXpmAllocTmpBuffer -- * * Allocate a temporary space to draw the image. * *---------------------------------------------------------------------- */ void TixpXpmAllocTmpBuffer(masterPtr, instancePtr, imagePtr, maskPtr) PixmapMaster * masterPtr; PixmapInstance * instancePtr; XImage ** imagePtr; XImage ** maskPtr; { int pad; XImage * image = NULL, * mask = NULL; Display *display = Tk_Display(instancePtr->tkwin); int depth; depth = Tk_Depth(instancePtr->tkwin); if (depth > 16) { pad = 32; } else if (depth > 8) { pad = 16; } else { pad = 8; } /* * Create the XImage structures to store the temporary image */ image = XCreateImage(display, Tk_Visual(instancePtr->tkwin), (unsigned) depth, ZPixmap, 0, 0, (unsigned) masterPtr->size[0], (unsigned) masterPtr->size[1], pad, 0); image->data = (char *)ckalloc((unsigned) image->bytes_per_line * masterPtr->size[1]); #ifdef MAC_OSX_TK image->f.put_pixel = MacPutPixel; #endif mask = XCreateImage(display, Tk_Visual(instancePtr->tkwin), 1, XYPixmap, 0, 0, (unsigned) masterPtr->size[0], (unsigned) masterPtr->size[1], pad, 0); mask->data = (char *)ckalloc((unsigned) mask->bytes_per_line * masterPtr->size[1]); #ifdef MAC_OSX_TK mask->f.put_pixel = MacPutPixel; #endif *imagePtr = image; *maskPtr = mask; } void TixpXpmFreeTmpBuffer(masterPtr, instancePtr, image, mask) PixmapMaster * masterPtr; PixmapInstance * instancePtr; XImage * image; XImage * mask; { if (image) { ckfree((char*)image->data); image->data = NULL; XDestroyImage(image); } if (mask) { ckfree((char*)mask->data); mask->data = NULL; XDestroyImage(mask); } } /*---------------------------------------------------------------------- * TixpXpmSetPixel -- * * Sets the pixel at the given (x,y) coordinate to be the given * color. *---------------------------------------------------------------------- */ void TixpXpmSetPixel(instancePtr, image, mask, x, y, colorPtr, isTranspPtr) PixmapInstance * instancePtr; XImage * image; XImage * mask; int x; int y; XColor * colorPtr; int * isTranspPtr; { if (colorPtr != NULL) { XPutPixel(image, x, y, colorPtr->pixel); XPutPixel(mask, x, y, 1); } else { XPutPixel(mask, x, y, 0); *isTranspPtr = 1; } } /*---------------------------------------------------------------------- * TixpXpmRealizePixmap -- * * On Unix: Create the pixmap from the buffer. * On Windows: Free the mask if there are no transparent pixels. *---------------------------------------------------------------------- */ void TixpXpmRealizePixmap(masterPtr, instancePtr, image, mask, isTransp) PixmapMaster * masterPtr; PixmapInstance * instancePtr; XImage * image; XImage * mask; int isTransp; { Display *display = Tk_Display(instancePtr->tkwin); int depth = Tk_Depth(instancePtr->tkwin); PixmapData *dataPtr = (PixmapData*)instancePtr->clientData; unsigned int gcMask; XGCValues gcValues; GC gc; instancePtr->pixmap = Tk_GetPixmap(display, Tk_WindowId(instancePtr->tkwin), masterPtr->size[0], masterPtr->size[1], depth); gc = Tk_GetGC(instancePtr->tkwin, 0, NULL); TkPutImage(0, 0, display, instancePtr->pixmap, gc, image, 0, 0, 0, 0, (unsigned) masterPtr->size[0], (unsigned) masterPtr->size[1]); Tk_FreeGC(display, gc); if (isTransp) { /* * There are transparent pixels. We need a mask. */ dataPtr->mask = Tk_GetPixmap(display, Tk_WindowId(instancePtr->tkwin), masterPtr->size[0], masterPtr->size[1], 1); gc = XCreateGC(display, dataPtr->mask, 0, NULL); TkPutImage(0, 0, display, dataPtr->mask, gc, mask, 0, 0, 0, 0, (unsigned) masterPtr->size[0], (unsigned) masterPtr->size[1]); XFreeGC(display, gc); } else { dataPtr->mask = None; } /* * Allocate a GC for drawing this instance (mask is not used if there * is no transparent pixels inside the image). */ if (dataPtr->mask != None) { gcMask = GCGraphicsExposures|GCClipMask; } else { gcMask = GCGraphicsExposures; } gcValues.graphics_exposures = False; gcValues.clip_mask = dataPtr->mask; gc = Tk_GetGC(instancePtr->tkwin, gcMask, &gcValues); dataPtr->gc = gc; } void TixpXpmFreeInstanceData(instancePtr, delete, display) PixmapInstance *instancePtr;/* Pixmap instance. */ int delete; /* Should the instance data structure * be deleted as well? */ Display *display; /* Display containing window that used image.*/ { PixmapData *dataPtr = (PixmapData*)instancePtr->clientData; if (dataPtr->mask != None) { Tk_FreePixmap(display, dataPtr->mask); dataPtr->mask = None; } if (dataPtr->gc != None) { Tk_FreeGC(display, dataPtr->gc); dataPtr->gc = None; } if (delete) { ckfree((char*)dataPtr); instancePtr->clientData = NULL; } } void TixpXpmDisplay(clientData, display, drawable, imageX, imageY, width, height, drawableX, drawableY) ClientData clientData; /* Pointer to PixmapInstance structure for * for instance to be displayed. */ Display *display; /* Display on which to draw image. */ Drawable drawable; /* Pixmap or window in which to draw image. */ int imageX, imageY; /* Upper-left corner of region within image * to draw. */ int width, height; /* Dimensions of region within image to draw.*/ int drawableX, drawableY; /* Coordinates within drawable that * correspond to imageX and imageY. */ { PixmapInstance *instancePtr = (PixmapInstance *) clientData; PixmapData *dataPtr = (PixmapData*)instancePtr->clientData; /* * If there's no graphics context, it means that an error occurred * while creating the image instance so it can't be displayed. */ if (dataPtr->gc == None) { return; } /* * We always use clipping: modify the clip origin within * the graphics context to line up with the image's origin. * Then draw the image and reset the clip origin. */ XSetClipOrigin(display, dataPtr->gc, drawableX - imageX, drawableY - imageY); XCopyArea(display, instancePtr->pixmap, drawable, dataPtr->gc, imageX, imageY, (unsigned) width, (unsigned) height, drawableX, drawableY); XSetClipOrigin(display, dataPtr->gc, 0, 0); } Tix8.4.3/unix/README.txt0000644000122200012240000000501210127401640015043 0ustar jeffhjeffh00000000000000$Id: README.txt,v 1.4 2004/10/02 01:25:52 hobbs Exp $ --- Build Tix binaries for the Unix platforms --- Before you start ================ The Tix home page is at http://tix.sourceforge.net/ This site also has more information in case you get stuck, such as who to contact for questions. Required Tcl/Tk versions ======================== You need Tcl/Tk 8.2 or later. Prior versions are no longer supported. Tcl 8.4 is the recommended version. Install the Tcl/Tk/Tix sources ============================== Tix is a standard Tcl Extension Architecture (TEA) based extension. You must have Tcl and Tk on your system prior to building Tix. Run the Tix configure script ============================ To see the options for the Tix configure script: cd /src/tix/ ./configure --help Tix builds as a stubs-enabled shared extension to Tcl/Tk by default. You may want to set the --prefix and --exec-prefix options if you want to install Tix in a directory other than /usr/local. If you have several versions of Tcl/Tk sources installed in your source directory, you can use the --with-tcl and --with-tk options to choose which version to build Tix with. Build Tix ========= After you run the configure script, you'd get a Makefile for building Tix. Then, just invoke the "make" command to build the Tix binaries. cd /src/tix/ make Test Tix ======== You may want to run the Tix regression test suite to see if things work as expected: cd /src/tix/ make tests You can also run the Tix widget demos: cd /src/tix/ make rundemos Install Tix =========== When you're satisfied with the Tix build, you can install it by invoking: cd /src/tix/ make install This by default will install the Tix files into the following places: /usr/local/lib/tix8.4/libtix8.4.so shared library /usr/local/lib/tix8.4/*.tcl script library /usr/local/man/mann/*.n man pages The installation directory may be set using the --prefix and --exec-prefix options to the configure script. You may also need to install Tcl and Tk if you haven't already done so. Test the installation ===================== To make sure everything works after "make install", do this: env TIX_LIBRARY=/set/correct/path wish /src/tix/tests/all.tcl This will ensure Tcl/Tk and Tix can work without any environment settings. Tix8.4.3/unix/tixUnixDraw.c0000644000122200012240000003126410221070571016007 0ustar jeffhjeffh00000000000000/* * tixUnixDraw.c -- * * Implement the Unix specific function calls for drawing. * * Copyright (c) 1993-1999 Ioi Kim Lam. * Copyright (c) 2000 Tix Project Group. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * $Id: tixUnixDraw.c,v 1.6 2005/03/25 20:15:53 hobbs Exp $ */ #include #include /* *---------------------------------------------------------------------- * * TixpDrawTmpLine -- * * Draws a "temporary" line between the two points. The line can be * removed by calling the function again with the same parameters. * * Results: * None. * * Side effects: * None. * *---------------------------------------------------------------------- */ void TixpDrawTmpLine(x1, y1, x2, y2, tkwin) int x1; int y1; int x2; int y2; Tk_Window tkwin; { GC gc; XGCValues values; unsigned long valuemask = GCForeground | GCSubwindowMode | GCFunction; Window winId; /* The Window to draw into. */ Tk_Window toplevel; /* Toplevel containing the tkwin. */ int rootx1, rooty1; /* Root x and y of the toplevel window. */ int rootx2, rooty2; for (toplevel=tkwin; !Tk_IsTopLevel(toplevel); toplevel=Tk_Parent(toplevel)) { ; } Tk_GetRootCoords(toplevel, &rootx1, &rooty1); rootx2 = rootx1 + Tk_Width(toplevel) - 1; rooty2 = rooty1 + Tk_Height(toplevel) - 1; if (x1 >= rootx1 && x2 <= rootx2 && y1 >= rooty1 && y2 <= rooty2) { /* * The line is completely inside the toplevel containing * tkwin. It's better to draw into this window because on some * X servers, especially PC X Servers running on Windows, * drawing into the root window shows no effect. */ winId = Tk_WindowId(toplevel); x1 -= rootx1; y1 -= rooty1; x2 -= rootx1; y2 -= rooty1; } else { winId = XRootWindow(Tk_Display(tkwin), Tk_ScreenNumber(tkwin)); } values.foreground = 0xff; values.subwindow_mode = IncludeInferiors; values.function = GXxor; gc = XCreateGC(Tk_Display(tkwin), winId, valuemask, &values); XDrawLine(Tk_Display(tkwin), winId, gc, x1, y1, x2, y2); XFreeGC(Tk_Display(tkwin), gc); } /* *---------------------------------------------------------------------- * * TixpDrawAnchorLines -- * * See comments near Tix_DrawAnchorLines. * * Results: * None. * * Side effects: * None * *---------------------------------------------------------------------- */ void TixpDrawAnchorLines(display, drawable, gc, x, y, w, h) Display *display; Drawable drawable; GC gc; int x; int y; int w; int h; { int n; int draw = 1; /* * TODO: (perf) use XDrawPoints to reduce the number of X calls. */ if (w < 2 || h < 2) { /* * Area too small to show effect. Don't bother */ return; } for (n=0; nrectUsed = 1; subRegPtr->origX = origX; subRegPtr->origY = origY; subRegPtr->rect.x = (short)x; subRegPtr->rect.y = (short)y; subRegPtr->rect.width = (short)width; subRegPtr->rect.height = (short)height; #ifndef MAC_OSX_TK XSetClipRectangles(display, gc, origX, origY, &subRegPtr->rect, 1, Unsorted); #else subRegPtr->pixmap = Tk_GetPixmap(display, drawable, width, height, 32); if (subRegPtr->pixmap != None) { XCopyArea(display, drawable, subRegPtr->pixmap, gc, x, y, width, height, 0, 0); } #endif } else { subRegPtr->rectUsed = 0; #ifdef MAC_OSX_TK subRegPtr->pixmap = None; #endif } } void TixpSubRegSetClip(display, subRegPtr, gc) Display *display; TixpSubRegion * subRegPtr; GC gc; { #ifndef MAC_OSX_TK if (subRegPtr->rectUsed) { XSetClipRectangles(display, gc, subRegPtr->origX, subRegPtr->origY, &subRegPtr->rect, 1, Unsorted); } #endif } void TixpSubRegUnsetClip(display, subRegPtr, gc) Display *display; TixpSubRegion * subRegPtr; GC gc; { #ifndef MAC_OSX_TK XRectangle rect; if (subRegPtr->rectUsed) { rect.x = 0; rect.y = 0; rect.width = 20000; rect.height = 20000; XSetClipRectangles(display, gc, 0, 0, &rect, 1, Unsorted); } #endif } /* *---------------------------------------------------------------------- * TixpEndSubRegionDraw -- * * *---------------------------------------------------------------------- */ void TixpEndSubRegionDraw(display, drawable, gc, subRegPtr) Display *display; Drawable drawable; GC gc; TixpSubRegion * subRegPtr; { #ifndef MAC_OSX_TK TixpSubRegUnsetClip(display, subRegPtr, gc); #else if (subRegPtr->pixmap != None) { XCopyArea(display, subRegPtr->pixmap, drawable, gc, 0, 0, subRegPtr->rect.width, subRegPtr->rect.height, subRegPtr->rect.x, subRegPtr->rect.y); Tk_FreePixmap(display, subRegPtr->pixmap); subRegPtr->pixmap = None; } #endif } /* *---------------------------------------------------------------------- * * TixpSubRegDisplayText -- * * Display a text string on one or more lines in a sub region. * * Results: * See TkDisplayText * * Side effects: * See TkDisplayText * *---------------------------------------------------------------------- */ void TixpSubRegDisplayText(display, drawable, gc, subRegPtr, font, string, numChars, x, y, length, justify, underline) Display *display; /* X display to use for drawing text. */ Drawable drawable; /* Window or pixmap in which to draw the * text. */ GC gc; /* Graphics context to use for drawing text. */ TixpSubRegion * subRegPtr; /* Information about the subregion */ TixFont font; /* Font that determines geometry of text * (should be same as font in gc). */ CONST84 char *string; /* String to display; may contain embedded * newlines. */ int numChars; /* Number of characters to use from string. */ int x, y; /* Pixel coordinates within drawable of * upper left corner of display area. */ int length; /* Line length in pixels; used to compute * word wrap points and also for * justification. Must be > 0. */ Tk_Justify justify; /* How to justify lines. */ int underline; /* Index of character to underline, or < 0 * for no underlining. */ { #ifdef MAC_OSX_TK if (subRegPtr->pixmap != None) { TixDisplayText(display, subRegPtr->pixmap, font, string, numChars, x - subRegPtr->x, y - subRegPtr->y, length, justify, underline, gc); } else #endif { TixDisplayText(display, drawable, font, string, numChars, x, y, length, justify, underline, gc); } } /*---------------------------------------------------------------------- * TixpSubRegFillRectangle -- * * *---------------------------------------------------------------------- */ void TixpSubRegFillRectangle(display, drawable, gc, subRegPtr, x, y, width, height) Display *display; /* X display to use for drawing rectangle. */ Drawable drawable; /* Window or pixmap in which to draw the * rectangle. */ GC gc; /* Graphics context to use for drawing. */ TixpSubRegion * subRegPtr; /* Information about the subregion */ int x, y; /* Pixel coordinates within drawable of * upper left corner of display area. */ int width, height; /* Size of the rectangle. */ { #ifdef MAC_OSX_TK if (subRegPtr->pixmap != None) { XFillRectangle(display, subRegPtr->pixmap, gc, x - subRegPtr->x, y - subRegPtr->y, width, height); } else #endif { XFillRectangle(display, drawable, gc, x, y, (unsigned) width, (unsigned) height); } } /*---------------------------------------------------------------------- * TixpSubRegDrawImage -- * * Draws a Tk image in a subregion. *---------------------------------------------------------------------- */ void TixpSubRegDrawImage(subRegPtr, image, imageX, imageY, width, height, drawable, drawableX, drawableY) TixpSubRegion * subRegPtr; Tk_Image image; int imageX; int imageY; int width; int height; Drawable drawable; int drawableX; int drawableY; { #ifdef MAC_OSX_TK if (subRegPtr->pixmap != None) { drawableX -= subRegPtr->x; drawableY -= subRegPtr->y; Tk_RedrawImage(image, imageX, imageY, width, height, subRegPtr->pixmap, drawableX, drawableY); } else #endif { if (subRegPtr->rectUsed) { /* * We need to do the clipping by hand because Tk_RedrawImage() * Does not take in a GC so we can't set its clip region. */ if (drawableX < subRegPtr->rect.x) { width -= subRegPtr->rect.x - drawableX; imageX += subRegPtr->rect.x - drawableX; drawableX = subRegPtr->rect.x; } if (drawableX + width > subRegPtr->rect.x + subRegPtr->rect.width) { width = subRegPtr->rect.x - drawableX + subRegPtr->rect.width; } if (drawableY < subRegPtr->rect.y) { height -= subRegPtr->rect.y - drawableY; imageY += subRegPtr->rect.y - drawableY; drawableY = subRegPtr->rect.y; } if (drawableY + height > subRegPtr->rect.y + subRegPtr->rect.height) { height = subRegPtr->rect.y - drawableY + subRegPtr->rect.height; } } Tk_RedrawImage(image, imageX, imageY, width, height, drawable, drawableX, drawableY); } } void TixpSubRegDrawBitmap(display, drawable, gc, subRegPtr, bitmap, src_x, src_y, width, height, dest_x, dest_y, plane) Display *display; Drawable drawable; GC gc; TixpSubRegion * subRegPtr; Pixmap bitmap; int src_x, src_y; int width, height; int dest_x, dest_y; unsigned long plane; { #ifdef MAC_OSX_TK XSetClipOrigin(display, gc, dest_x, dest_y); if (subRegPtr->pixmap != None) { XCopyPlane(display, bitmap, subRegPtr->pixmap, gc, src_x, src_y, width, height, dest_x - subRegPtr->x, dest_y - subRegPtr->y, plane); } else { #endif XCopyPlane(display, bitmap, drawable, gc, src_x, src_y, (unsigned) width, (unsigned) height, dest_x, dest_y, plane); #ifdef MAC_OSX_TK } XSetClipOrigin(display, gc, 0, 0); #endif } /* *---------------------------------------------------------------------- * * TixpSubRegDrawAnchorLines -- * * Draw anchor lines inside the given sub region. * * Results: * None. * * Side effects: * None * *---------------------------------------------------------------------- */ void TixpSubRegDrawAnchorLines(display, drawable, gc, subRegPtr, x, y, w, h) Display *display; /* Display to draw on. */ Drawable drawable; /* Drawable to draw on. */ GC gc; /* Use the foreground color of this GC. */ TixpSubRegion * subRegPtr; /* Describes the subregion. */ int x; /* x pos of top-left corner of anchor rect */ int y; /* y pos of top-left corner of anchor rect */ int w; /* width of anchor rect */ int h; /* height of anchor rect */ { #ifdef MAC_OSX_TK if (subRegPtr->pixmap != None) { x -= subRegPtr->x; y -= subRegPtr->y; TixpDrawAnchorLines(display, subRegPtr->pixmap, gc, x, y, w, h); } else #endif { TixpDrawAnchorLines(display, drawable, gc, x, y, w, h); } } Tix8.4.3/unix/tixUnixWm.c0000644000122200012240000000237410221070571015475 0ustar jeffhjeffh00000000000000 /* $Id: tixUnixWm.c,v 1.2 2005/03/25 20:15:53 hobbs Exp $ */ /* * tixUnixWm.c -- * * Implement the Windows specific function calls for window management. * * Copyright (c) 1996, Expert Interface Technologies * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ #include "tixUnixInt.h" int TixpSetWindowParent(interp, tkwin, newParent, parentId) Tcl_Interp * interp; Tk_Window tkwin; Tk_Window newParent; int parentId; { return TCL_OK; } #ifdef MAC_OSX_TK #include "tkInt.h" /* *---------------------------------------------------------------------- * * XLowerWindow -- * * Change the stacking order of a window. * * Results: * None. * * Side effects: * Changes the stacking order of the specified window. * *---------------------------------------------------------------------- */ int XLowerWindow( Display* display, /* Display. */ Window window) /* Window. */ { TkWindow *winPtr = *((TkWindow **) window); display->request++; if (Tk_IsTopLevel(winPtr) && !Tk_IsEmbedded(winPtr)) { TkWmRestackToplevel(winPtr, Below, NULL); } else { /* TODO: this should generate damage */ } return 0; } #endif Tix8.4.3/unix/tixUnixPort.h0000644000122200012240000000141310221070571016034 0ustar jeffhjeffh00000000000000 /* $Id: tixUnixPort.h,v 1.3 2005/03/25 20:15:53 hobbs Exp $ */ /* * tixUnixPort.h -- * * This header file handles porting issues that occur because of * differences between systems. It reads in platform specific * portability files. * * Copyright (c) 1996, Expert Interface Technologies * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ #ifndef _TIX_UNIXPORT_H_ #define _TIX_UNIXPORT_H_ struct _TixpSubRegion { #ifdef MAC_OSX_TK Pixmap pixmap; int x, y; #endif XRectangle rect; int rectUsed; int origX; int origY; }; #ifdef UCHAR_SUPPORTED typedef unsigned char UNSIGNED_CHAR; #else typedef char UNSIGNED_CHAR; #endif #endif /* _TIX_UNIXPORT_H_ */ Tix8.4.3/unix/.cvsignore0000664000122200012240000000023407226255370015365 0ustar jeffhjeffh00000000000000config.log config.cache config.status Makefile tixwish8.1 tixwish8.1g tixwish8.2 tixwish8.2g pkgIndex.tcl tixConfig.sh mkIndex.tcl tixBitmaps.h tixSamLib.h Tix8.4.3/demos/0000775000122200012240000000000010767576212013517 5ustar jeffhjeffh00000000000000Tix8.4.3/demos/tixwidgets.tcl0000644000122200012240000002146410162667535016421 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # tixDemo -- # # This is a demo program of all the available Tix widgets. If # have installed Tix properly, you can execute this program # by changing to this directory and executing # the following in csh # # % env TIX_LIBRARY=../library tixwish tixwidgets.tcl # # Or this in sh # # $ TIX_LIBRARY=../library tixwish tixwidgets.tcl # #---------------------------------------------------------------------- # # This file has not been properly documented. It is NOT intended # to be used as an introductory demo program about Tix # programming. For such demos, please see the files in the # demos/samples directory or go to the "Samples" page in the # "widget demo" # # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # package require Tix tix initstyle tk appname "TixDemo#[pid]" proc tixDemo:MkMainWindow {w} { global demo auto_path demo_dir # add this directory to the auto_path lappend auto_path $demo_dir tix addbitmapdir [file join $demo_dir bitmaps] toplevel $w wm title $w "Tix Widget Demonstration" wm geometry $w 830x566+100+100 set demo(balloon) [tixBalloon .demos_balloon] set menu [tixDemo:MkMainMenu $w] set frame2 [tixDemo:MkMainNoteBook $w] set frame3 [tixDemo:MkMainStatus $w] $w configure -menu $menu pack $frame3 -side bottom -fill x pack $frame2 -side top -expand yes -fill both -padx 4 -pady 4 $demo(balloon) config -statusbar $demo(statusbar) set demo(notebook) $frame2 } proc tixDemo:MkMainMenu {top} { global useBallons set m [menu $top.menu -tearoff 0] $m add cascade -label "File" -menu $m.file -underline 0 $m add cascade -label "Help" -menu $m.help -underline 0 menu $m.file -tearoff 0 $m.file add command -label "Open ... " -command tixDemo:FileOpen \ -underline 1 -accelerator "Ctrl+O" $m.file add sep $m.file add command -label "Exit " -command tixDemo:Exit \ -underline 1 -accelerator "Ctrl+X" menu $m.help -tearoff 0 $m.help add checkbutton -under 0 -label "Balloon Help " \ -variable useBallons -onvalue 1 -offvalue 0 trace variable useBallons w tixDemo:BalloonHelp set useBallons 1 return $m } # Create the main display area of the widget programm. This area should # utilize the "tixNoteBook" widget once it is available. But now # we use the cheap substitute "tixStackWindow" # proc tixDemo:MkMainNoteBook {top} { global demo set hasGL 0 option add *TixNoteBook.tagPadX 6 option add *TixNoteBook.tagPadY 4 option add *TixNoteBook.borderWidth 2 set w [tixNoteBook $top.f2 -ipadx 5 -ipady 5] $w add wel -createcmd [list tixDemo:CreatePage tixDemo:MkWelcome $w wel] \ -label "Welcome" -under 0 $w add cho -createcmd [list tixDemo:CreatePage MkChoosers $w cho] \ -label "Choosers" -under 0 $w add scr -createcmd [list tixDemo:CreatePage MkScroll $w scr] \ -label "Scrolled Widgets" -under 0 # There currently is no MkManag.tcl that this expects ?!? - JH # $w add mgr -createcmd [list tixDemo:CreatePage MkManager $w mgr] \ # -label "Manager Widgets" -under 0 $w add dir -createcmd [list tixDemo:CreatePage MkDirList $w dir] \ -label "Directory List" -under 0 $w add exp -createcmd [list tixDemo:CreatePage MkSample $w exp] \ -label "Run Sample Programs" -under 0 if {$hasGL} { $w add glw -createcmd [list MkGL $w glw] -tag "GL Widgets" } return $w } proc tixDemo:CreatePage {command w name} { tixBusy $w on set code [catch {$command $w $name} err] tixBusy $w off return -code $code $err } proc tixDemo:MkMainStatus {top} { global demo demo_dir set w [frame $top.f3 -relief raised -bd 1] set demo(statusbar) \ [label $w.status -relief sunken -bd 1] tixForm $demo(statusbar) -padx 3 -pady 3 -left 0 -right %70 $w.status configure -text [file native $demo_dir] return $w } proc tixDemo:Status {msg} { global demo $demo(statusbar) configure -text $msg } proc tixDemo:MkWelcome {nb page} { set w [$nb subwidget $page] set bar [tixDemo:MkWelcomeBar $w] set text [tixDemo:MkWelcomeText $w] pack $bar -side top -fill x -padx 2 -pady 2 pack $text -side top -fill both -expand yes } proc tixDemo:MkWelcomeBar {top} { global demo set w [frame $top.bar -bd 2 -relief groove] # Create and configure comboBox 1 # tixComboBox $w.cbx1 -command [list tixDemo:MainTextFont $top] \ -options { entry.width 15 listbox.height 3 } tixComboBox $w.cbx2 -command [list tixDemo:MainTextFont $top] \ -options { entry.width 4 listbox.height 3 } set demo(welfont) $w.cbx1 set demo(welsize) $w.cbx2 $w.cbx1 insert end "Courier" $w.cbx1 insert end "Helvetica" $w.cbx1 insert end "Lucida" $w.cbx1 insert end "Times Roman" $w.cbx2 insert end 8 $w.cbx2 insert end 10 $w.cbx2 insert end 12 $w.cbx2 insert end 14 $w.cbx2 insert end 18 $w.cbx1 pick 1 $w.cbx2 pick 3 # Pack the comboboxes together # pack $w.cbx1 $w.cbx2 -side left -padx 4 -pady 4 $demo(balloon) bind $w.cbx1\ -msg "Choose\na font" -statusmsg "Choose a font for this page" $demo(balloon) bind $w.cbx2\ -msg "Point size" -statusmsg "Choose the font size for this page" tixDoWhenIdle tixDemo:MainTextFont $top return $w } proc tixDemo:MkWelcomeText {top} { global demo tix_version set w [tixScrolledWindow $top.f3 -scrollbar auto] set win [$w subwidget window] label $win.title -font [list times -18 bold] \ -bd 0 -width 30 -anchor n\ -text "Welcome to TIX version $tix_version" message $win.msg -font [list helvetica -14 bold] \ -bd 0 -width 400 -anchor n\ -text "\ Tix $tix_version is a library of mega-widgets based on TK. This program \ demonstrates the widgets in the Tix widget. You can choose the pages \ in this window to look at the corresponding widgets. \ To quit this program, choose the \"File | Exit\" command." pack $win.title -expand yes -fill both -padx 10 -pady 10 pack $win.msg -expand yes -fill both -padx 10 -pady 10 set demo(welmsg) $win.msg return $w } proc tixDemo:MainTextFont {w args} { global demo if {![info exists demo(welmsg)]} { return } set font [$demo(welfont) cget -value] set point [$demo(welsize) cget -value] case $font { "Courier" { set f courier } "Helvetica" { set f helvetica } "Lucida" { set f lucida } default { set f times } } set xfont [list $f -$point] if [catch {$demo(welmsg) config -font $xfont} err] { puts \a$err } } proc tixDemo:FileOpen {} { global demo demo_dir set filedlg [tix filedialog tixExFileSelectDialog] if {![info exists demo(filedialog)]} { $filedlg subwidget fsbox config -pattern *.tcl $filedlg subwidget fsbox config -directory [file join $demo_dir samples] $filedlg config -command tixDemo:FileOpen:Doit set demo(filedialog) $filedlg } $filedlg config -title "Open Tix Sample Programs" wm transient $filedlg "" wm deiconify $filedlg after idle raise $filedlg $filedlg popup tixPushGrab $filedlg } proc tixDemo:FileOpen:Doit {filename} { global demo tixPopGrab LoadFile $filename $demo(filedialog) popdown } #---------------------------------------------------------------------- # Balloon Help #---------------------------------------------------------------------- proc tixDemo:BalloonHelp {args} { global demo useBallons if {$useBallons} { $demo(balloon) config -state "both" } else { $demo(balloon) config -state "none" } } #---------------------------------------------------------------------- # Self-testing # # The following code are called by the Tix test suite. It opens # every page in the demo program. #---------------------------------------------------------------------- proc tixDemo:SelfTest {} { global demo testConfig if ![info exists testConfig] { return } tixDemo:MkMainWindow .widget update foreach p [$demo(notebook) pages] { $demo(notebook) raise $p update } destroy .widget } proc tixDemo:Exit {} { destroy .widget } #---------------------------------------------------------------------- # Start! #---------------------------------------------------------------------- if {![info exists testConfig]} { # # If the testConfig variable exists, we are driven by the regression # test. In that case, don't open the main window. The test program will # call Widget:SelfTest # set kids [winfo children .] wm withdraw . set ::demo_dir [file normalize [file dirname [info script]]] tixDemo:MkMainWindow .widget wm transient .widget "" if {[llength $kids] < 1} {bind .widget "exit"} } Tix8.4.3/demos/samples/0000775000122200012240000000000010767576212015163 5ustar jeffhjeffh00000000000000Tix8.4.3/demos/samples/STList1.tcl0000644000122200012240000000302307404573433017122 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: STList1.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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. # Demonstrates the scrolled tlist widget # proc RunSample {w} { set top [frame $w.f -bd 1 -relief raised] set box [tixButtonBox $w.b -bd 1 -relief raised] pack $box -side bottom -fill both pack $top -side top -fill both -expand yes # Create the scrolled tlist # tixScrolledTList $top.st -options { tlist.orient vertical tlist.selectMode single } pack $top.st -expand yes -fill both -padx 10 -pady 10 # Insert a list of numbers into the tlist subwidget # set tlist [$top.st subwidget tlist] set numbers { one two three fours five six seven eight nine ten eleven twelve thirdteen fourteen } foreach num $numbers { $tlist insert end -itemtype imagetext -text $num \ -image [tix getimage openfold] } # Create the buttons # $box add ok -text Ok -command "destroy $w" -width 6 $box add cancel -text Cancel -command "destroy $w" -width 6 } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/STList2.tcl0000644000122200012240000000452407404573433017132 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: STList2.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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. # Demonstrates the scrolled tlist widget # proc RunSample {w} { set top [frame $w.f -bd 1 -relief raised] set box [tixButtonBox $w.b -bd 1 -relief raised] pack $box -side bottom -fill both pack $top -side top -fill both -expand yes # Create the Paned Window to contain two scrolled tlist's # set p [tixPanedWindow $top.p -orient horizontal] pack $p -expand yes -fill both -padx 4 -pady 4 set p1 [$p add pane1 -expand 1] set p2 [$p add pane2 -expand 1] $p1 config -relief flat $p2 config -relief flat # Create a TList with vertical orientation # tixScrolledTList $p1.st -options { tlist.orient vertical tlist.selectMode single } label $p1.lab -text "Vertical Orientation" pack $p1.lab -anchor c -side top -pady 2 pack $p1.st -expand yes -fill both -padx 10 -pady 10 # Create a TList with horizontal orientation # tixScrolledTList $p2.st -options { tlist.orient horizontal tlist.selectMode single } label $p2.lab -text "Horizontal Orientation" pack $p2.lab -anchor c -side top -pady 2 pack $p2.st -expand yes -fill both -padx 10 -pady 10 # Insert a list of numbers into the two tlist subwidget's # set vt [$p1.st subwidget tlist] set ht [$p2.st subwidget tlist] set numbers { one two three fours five six seven eight nine ten eleven twelve thirdteen fourteen } foreach num $numbers { $vt insert end -itemtype imagetext -text $num \ -image [tix getimage openfold] $ht insert end -itemtype imagetext -text $num \ -image [tix getimage openfold] } # Create the buttons # $box add ok -text Ok -command "destroy $w" -width 6 $box add cancel -text Cancel -command "destroy $w" -width 6 } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/STList3.tcl0000644000122200012240000000564210031436050017114 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: STList3.tcl,v 1.4 2004/03/28 02:44:56 hobbs Exp $ # # 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. # Demonstrates the use of DirTree with the TList # proc RunSample {w} { set top [frame $w.f -bd 1 -relief raised] set box [tixButtonBox $w.b -bd 1 -relief raised] pack $box -side bottom -fill both pack $top -side top -fill both -expand yes # Create the Paned Window to contain the dirtree and scrolled tlist # set p [tixPanedWindow $top.p -orient horizontal] pack $p -expand yes -fill both -padx 4 -pady 4 set p1 [$p add pane1 -expand 1] set p2 [$p add pane2 -expand 4] $p1 config -relief flat $p2 config -relief flat # Create a DirTree # tixDirTree $p1.dirtree -options { hlist.width 28 } pack $p1.dirtree -expand yes -fill both -padx 4 -pady 4 # Create a TList # NOTE: we set the width of the tlist to 60 characters, since we'll have # quite a few files to display # tixScrolledTList $p2.st -options { tlist.orient vertical tlist.selectMode single tlist.width 60 tlist.height 25 } pack $p2.st -expand yes -fill both -padx 4 -pady 4 set tlist [$p2.st subwidget tlist] # setup the callbacks: when the user selects a directory, we'll display # its content in the tlist widget $p1.dirtree config \ -browsecmd [list TList:listdir $tlist] \ -command [list TList:listdir $tlist] # List the directory now # TList:listdir $tlist [pwd] # Create the buttons # $box add ok -text Ok -command [list destroy $w] -width 6 $box add cancel -text Cancel -command [list destroy $w] -width 6 } proc TList:listdir {w dir} { $w delete 0 end if {[catch {glob -nocomplain -directory $dir *} entries]} { # The user has entered an invalid directory # %% todo: prompt error, go back to last succeed directory return } set files "" foreach fname [lsort -dictionary $entries] { if {[file isdirectory $fname]} { set image [tix getimage folder] } else { lappend files [file tail $fname] continue } $w insert end -itemtype imagetext \ -text [file tail $fname] -image $image } foreach fname $files { switch -glob -- $fname { {*.[ch]} { set image [tix getimage srcfile] } *.tcl - *.o { set image [tix getimage file] } default { set image [tix getimage textfile] } } $w insert end -itemtype imagetext -text $fname -image $image } } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/CmpImg1.tcl0000644000122200012240000001353507404573433017125 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: CmpImg1.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixNoteBook widget, which allows # you to lay out your interface using a "notebook" metaphore # proc RunSample {w} { # We use these options to set the sizes of the subwidgets inside the # notebook, so that they are well-aligned on the screen. # set name [tixOptionName $w] option add *$name*TixControl*entry.width 10 option add *$name*TixControl*label.width 18 option add *$name*TixControl*label.anchor e option add *$name*TixNoteBook*tabPadX 8 # Create the notebook widget and set its backpagecolor to gray. # Note that the -backpagecolor option belongs to the "nbframe" # subwidget. tixNoteBook $w.nb -ipadx 6 -ipady 6 $w config -bg gray $w.nb subwidget nbframe config -backpagecolor gray -tabpady 0 # Create the two tabs on the notebook. The -underline option # puts a underline on the first character of the labels of the tabs. # Keyboard accelerators will be defined automatically according # to the underlined character. # global network_pixmap hard_disk_pixmap set img0 [image create pixmap -data $network_pixmap] set img1 [image create pixmap -data $hard_disk_pixmap] set hd_img [image create compound -window [$w.nb subwidget nbframe]] $hd_img add line $hd_img add text -text "Hard Disk" -underline 0 $hd_img add space -width 7 $hd_img add image -image $img1 $w.nb add hard_disk -image $hd_img set net_img [image create compound -window [$w.nb subwidget nbframe]] $net_img add line $net_img add text -text "Network" -underline 0 $net_img add space -width 7 $net_img add image -image $img0 $w.nb add network -image $net_img # Create the first page # set f [$w.nb subwidget hard_disk] tixControl $f.a -value 12 -label "Access Time: " tixControl $f.w -value 400 -label "Write Throughput: " tixControl $f.r -value 400 -label "Read Throughput: " tixControl $f.c -value 1021 -label "Capacity: " pack $f.a $f.w $f.r $f.c -side top -padx 20 -pady 2 # Create the second page # set f [$w.nb subwidget network] tixControl $f.a -value 12 -label "Access Time: " tixControl $f.w -value 400 -label "Write Throughput: " tixControl $f.r -value 400 -label "Read Throughput: " tixControl $f.c -value 1021 -label "Capacity: " tixControl $f.u -value 10 -label "Users: " pack $f.a $f.w $f.r $f.c $f.u -side top -padx 20 -pady 2 pack $w.nb -expand yes -fill both -padx 5 -pady 5 } set network_pixmap {/* XPM */ static char * netw_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 7 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #404040", "+ c blue", "@ c red", /* pixels */ " ", " .............. ", " .XXXXXXXXXXXX. ", " .XooooooooooO. ", " .Xo.......XoO. ", " .Xo.++++o+XoO. ", " .Xo.++++o+XoO. ", " .Xo.++oo++XoO. ", " .Xo.++++++XoO. ", " .Xo.+o++++XoO. ", " .Xo.++++++XoO. ", " .Xo.XXXXXXXoO. ", " .XooooooooooO. ", " .Xo@ooo....oO. ", " .............. .XooooooooooO. ", " .XXXXXXXXXXXX. .XooooooooooO. ", " .XooooooooooO. .OOOOOOOOOOOO. ", " .Xo.......XoO. .............. ", " .Xo.++++o+XoO. @ ", " .Xo.++++o+XoO. @ ", " .Xo.++oo++XoO. @ ", " .Xo.++++++XoO. @ ", " .Xo.+o++++XoO. @ ", " .Xo.++++++XoO. ..... ", " .Xo.XXXXXXXoO. .XXX. ", " .XooooooooooO.@@@@@@.X O. ", " .Xo@ooo....oO. .OOO. ", " .XooooooooooO. ..... ", " .XooooooooooO. ", " .OOOOOOOOOOOO. ", " .............. ", " "};} set hard_disk_pixmap {/* XPM */ static char * drivea_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 5 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #800080008000", /* pixels */ " ", " ", " ", " ", " ", " ", " ", " ", " ", " .......................... ", " .XXXXXXXXXXXXXXXXXXXXXXXo. ", " .XooooooooooooooooooooooO. ", " .Xooooooooooooooooo..oooO. ", " .Xooooooooooooooooo..oooO. ", " .XooooooooooooooooooooooO. ", " .Xoooooooo.......oooooooO. ", " .Xoo...................oO. ", " .Xoooooooo.......oooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .oOOOOOOOOOOOOOOOOOOOOOOO. ", " .......................... ", " ", " ", " ", " ", " ", " ", " ", " "};} if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/CmpImg2.tcl0000644000122200012240000001064107404573433017121 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: CmpImg2.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 how to use the compound image inside NoteBook # widgets. This file is basically a cross-over of NoteBook.tcl and CmpImg.tcl # proc RunSample {w} { # Create the notebook widget and set its backpagecolor to gray. # Note that the -backpagecolor option belongs to the "nbframe" # subwidget. tixNoteBook $w.nb -ipadx 6 -ipady 6 $w config -bg gray $w.nb subwidget nbframe config -backpagecolor gray -tabpady 0 # Create the two compound images # # # these are two Tix built-in images # set img0 [tix getimage network] set img1 [tix getimage harddisk] # Create the first image: # # Notice that the -window option must be set to the nbframe # subwidget of the notebook because the image will be displayed # in that widget. # set hdd_img [image create compound -window [$w.nb subwidget nbframe] \ -pady 0] $hdd_img add line $hdd_img add image -image $img1 $hdd_img add space -width 7 $hdd_img add text -text "Hard Disk" -underline 0 # Create the second compound image. Very similar to what we did above # set net_img [image create compound -window [$w.nb subwidget nbframe] \ -pady 0] $net_img add line $net_img add image -image $img0 $net_img add space -width 7 $net_img add text -text "Network" -underline 0 # # Now create the pages # # We use these options to set the sizes of the subwidgets inside the # notebook, so that they are well-aligned on the screen. # set name [tixOptionName $w] option add *$name*TixControl*entry.width 10 option add *$name*TixControl*label.width 18 option add *$name*TixControl*label.anchor e # Create the two tabs on the notebook. The -underline option # puts a underline on the first character of the labels of the tabs. # Keyboard accelerators will be defined automatically according # to the underlined character. # $w.nb add hard_disk -image $hdd_img $w.nb add network -image $net_img pack $w.nb -expand yes -fill both -padx 5 -pady 5 -side top #---------------------------------------- # Create the first page #---------------------------------------- set f [$w.nb subwidget hard_disk] # Create two frames: one for the common buttons, one for the # other widgets # frame $f.f frame $f.common pack $f.f -side left -padx 2 -pady 2 -fill both -expand yes pack $f.common -side right -padx 2 -pady 2 -fill y # Create the controls that only belong to this page # tixControl $f.f.a -value 12 -label "Access Time: " tixControl $f.f.w -value 400 -label "Write Throughput: " tixControl $f.f.r -value 400 -label "Read Throughput: " tixControl $f.f.c -value 1021 -label "Capacity: " pack $f.f.a $f.f.w $f.f.r $f.f.c -side top -padx 20 -pady 2 # Create the common buttons # CreateCommonButtons $w $f.common #---------------------------------------- # Create the second page #---------------------------------------- set f [$w.nb subwidget network] frame $f.f frame $f.common pack $f.f -side left -padx 2 -pady 2 -fill both -expand yes pack $f.common -side right -padx 2 -pady 2 -fill y tixControl $f.f.a -value 12 -label "Access Time: " tixControl $f.f.w -value 400 -label "Write Throughput: " tixControl $f.f.r -value 400 -label "Read Throughput: " tixControl $f.f.c -value 1021 -label "Capacity: " tixControl $f.f.u -value 10 -label "Users: " pack $f.f.a $f.f.w $f.f.r $f.f.c $f.f.u -side top -padx 20 -pady 2 CreateCommonButtons $w $f.common } proc CreateCommonButtons {w f} { button $f.ok -text OK -width 6 -command "destroy $w" button $f.cancel -text Cancel -width 6 -command "destroy $w" pack $f.ok $f.cancel -side top -padx 2 -pady 2 } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/CmpImg3.tcl0000644000122200012240000000474307404573433017130 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: CmpImg3.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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. # Demonstrates how to use compound images to display icons in a canvas widget. # proc RunSample {w} { set top [frame $w.f -bd 1 -relief raised] set box [tixButtonBox $w.b -bd 1 -relief raised] pack $box -side bottom -fill both pack $top -side top -fill both -expand yes label $top.lab -text "Drag the icons" pack $top.lab -anchor c -side top -pady 4 # Create the canvas to display the icons # set c [canvas $top.c -relief sunken -bd 1] pack $c -side top -expand yes -fill both -padx 4 -pady 4 # create several compound images in the canvas # set network [tix getimage network] set harddisk [tix getimage harddisk] set cmp_1 [image create compound -window $c -bd 1] $cmp_1 add image -image $network $cmp_1 add line $cmp_1 add text -text " Network " set cmp_2 [image create compound -window $c -bd 1] $cmp_2 add image -image $harddisk $cmp_2 add line $cmp_2 add text -text " Hard disk " set cmp_3 [image create compound -window $c -bd 1 \ -background #c0c0ff -relief raised \ -showbackground 1] $cmp_3 add image -image $network $cmp_3 add line $cmp_3 add text -text " Network 2 " $c create image 50 50 -image $cmp_1 $c create image 150 50 -image $cmp_2 $c create image 250 50 -image $cmp_3 bind $c <1> "itemStartDrag $c %x %y" bind $c "itemDrag $c %x %y" # Create the buttons # $box add ok -text Ok -command "destroy $w" -width 6 $box add cancel -text Cancel -command "destroy $w" -width 6 } proc itemStartDrag {c x y} { global lastX lastY $c raise current set lastX [$c canvasx $x] set lastY [$c canvasy $y] } proc itemDrag {c x y} { global lastX lastY set x [$c canvasx $x] set y [$c canvasy $y] $c move current [expr $x-$lastX] [expr $y-$lastY] set lastX $x set lastY $y } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/CmpImg4.tcl0000644000122200012240000001032107404573433017116 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: CmpImg4.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 how to use the compound image to add # colors in Notebook tabs. # proc RunSample {w} { # Create the notebook widget and set its backpagecolor to gray. # Note that the -backpagecolor option belongs to the "nbframe" # subwidget. tixNoteBook $w.nb -ipadx 6 -ipady 6 # $w config -bg gray # $w.nb subwidget nbframe config -backpagecolor gray -tabpady 0 # Create the two compound images -- # # Create the first image: # # Notice that the -window option must be set to the nbframe # subwidget of the notebook because the image will be displayed # in that widget. # set hdd_img [image create compound -window [$w.nb subwidget nbframe] \ -pady 4 -padx 4 -bg #f09090 -showbackground 1] $hdd_img add line $hdd_img add text -text "Hard Disk" -underline 0 -padx 6 -pady 4 # Create the second compound image. Very similar to what we did above # set net_img [image create compound -window [$w.nb subwidget nbframe] \ -pady 4 -pady 4 -bg #9090f0 -showbackground 1] $net_img add line $net_img add text -text "Network" -underline 0 -padx 6 -pady 4 # # Now create the pages # # We use these options to set the sizes of the subwidgets inside the # notebook, so that they are well-aligned on the screen. # set name [tixOptionName $w] option add *$name*TixControl*entry.width 10 option add *$name*TixControl*label.width 18 option add *$name*TixControl*label.anchor e # Create the two tabs on the notebook. The -underline option # puts a underline on the first character of the labels of the tabs. # Keyboard accelerators will be defined automatically according # to the underlined character. # $w.nb add hard_disk -image $hdd_img $w.nb add network -image $net_img pack $w.nb -expand yes -fill both -padx 5 -pady 5 -side top #---------------------------------------- # Create the first page #---------------------------------------- set f [$w.nb subwidget hard_disk] # Create two frames: one for the common buttons, one for the # other widgets # frame $f.f frame $f.common pack $f.f -side left -padx 2 -pady 2 -fill both -expand yes pack $f.common -side right -padx 2 -pady 2 -fill y # Create the controls that only belong to this page # tixControl $f.f.a -value 12 -label "Access Time: " tixControl $f.f.w -value 400 -label "Write Throughput: " tixControl $f.f.r -value 400 -label "Read Throughput: " tixControl $f.f.c -value 1021 -label "Capacity: " pack $f.f.a $f.f.w $f.f.r $f.f.c -side top -padx 20 -pady 2 # Create the common buttons # CreateCommonButtons $w $f.common #---------------------------------------- # Create the second page #---------------------------------------- set f [$w.nb subwidget network] frame $f.f frame $f.common pack $f.f -side left -padx 2 -pady 2 -fill both -expand yes pack $f.common -side right -padx 2 -pady 2 -fill y tixControl $f.f.a -value 12 -label "Access Time: " tixControl $f.f.w -value 400 -label "Write Throughput: " tixControl $f.f.r -value 400 -label "Read Throughput: " tixControl $f.f.c -value 1021 -label "Capacity: " tixControl $f.f.u -value 10 -label "Users: " pack $f.f.a $f.f.w $f.f.r $f.f.c $f.f.u -side top -padx 20 -pady 2 CreateCommonButtons $w $f.common } proc CreateCommonButtons {w f} { button $f.ok -text OK -width 6 -command "destroy $w" button $f.cancel -text Cancel -width 6 -command "destroy $w" pack $f.ok $f.cancel -side top -padx 2 -pady 2 } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/DynTree.tcl0000644000122200012240000000726707404573433017247 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: DynTree.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 how to use the TixTree widget to display # dynamic hierachical data (the files in the Unix file system) # proc RunSample {w} { # We create the frame and the ScrolledHList widget # at the top of the dialog box # frame $w.top -relief raised -bd 1 # Create a TixTree widget to display the hypothetical DOS disk drive # # tixTree $w.top.a -options { hlist.separator "/" hlist.width 35 hlist.height 25 } pack $w.top.a -expand yes -fill both -padx 10 -pady 10 -side left set tree $w.top.a set hlist [$tree subwidget hlist] $tree config -opencmd "DynTree:OpenDir $tree" # Add the root directory the TixTree widget DynTree:AddDir $tree / # The / directory is added in the "open" mode. The user can open it # and then browse its subdirectories ... # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } proc DynTree:AddDir {tree dir} { set hlist [$tree subwidget hlist] if {$dir == "/"} { set text / } else { set text [file tail $dir] } $hlist add $dir -itemtype imagetext \ -text $text -image [tix getimage folder] catch { # We need a catch here because the directory may not be readable by us # $tree setmode $dir none if {[glob -nocomplain $dir/*] != {}} { $tree setmode $dir open } } } # This command is called whenever the user presses the (+) indicator or # double clicks on a directory whose mode is "open". It loads the files # inside that directory into the Tree widget. # # Note we didn't specify the -closecmd option for the Tree widget, so it # performs the default action when the user presses the (-) indicator or # double clicks on a directory whose mode is "close": hide all of its child # entries # proc DynTree:OpenDir {tree dir} { set PWD [pwd] set hlist [$tree subwidget hlist] if {[$hlist info children $dir] != {}} { # We have already loaded this directory. Let's just # show all the child entries # # Note: since we load the directory only once, it will not be # refreshed if the you add or remove files from this # directory. # foreach kid [$hlist info children $dir] { $hlist show entry $kid } return } if [catch {cd $dir}] { # We can't read that directory, better not do anything cd $PWD return } set files [lsort [glob -nocomplain *]] foreach f $files { if [file isdirectory $f] { if {$dir == "/"} { set subdir /$f } else { set subdir $dir/$f } DynTree:AddDir $tree $subdir } else { if {$dir == "/"} { set file /$f } else { set file $dir/$f } $hlist add $file -itemtype imagetext \ -text $f -image [tix getimage file] } } cd $PWD } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/SHList.tcl0000644000122200012240000000603107404573433017027 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SHList.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixScrolledHList widget. # proc RunSample {w} { # We create the frame and the ScrolledHList widget # at the top of the dialog box # frame $w.top -relief raised -bd 1 # Put a simple hierachy into the HList (two levels). Use colors and # separator widgets (frames) to make the list look fancy # tixScrolledHList $w.top.a pack $w.top.a -expand yes -fill both -padx 10 -pady 10 -side left # This is our little relational database # set bosses { {jeff "Jeff Waxman"} {john "John Lee"} {peter "Peter Kenson"} } set 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"} } set hlist [$w.top.a subwidget hlist] # Let configure the appearance of the HList subwidget # $hlist config -separator "." -width 25 -drawbranch 0 -indent 10 set index 0 foreach line $bosses { if {$index != 0} { frame $hlist.sep$index -bd 2 -height 2 -width 150 -relief sunken \ -bg [$hlist cget -bg] $hlist addchild {} -itemtype window \ -window $hlist.sep$index -state disabled } $hlist add [lindex $line 0] -itemtype text \ -text [lindex $line 1] incr index } foreach line $employees { # "." is the separator character we chose above # set entrypath [lindex $line 1].[lindex $line 0] # ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ # parent entryPath / child's name $hlist add $entrypath -text [lindex $line 2] # [Hint] Make sure the [lindex $line 1].[lindex $line 0] 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 # "addchild" widget command instead: # # $hlist addchild [lindex $line 1] -text [lindex $line 2] # ^^^^^^^^^^^^^^^^ # parent entryPath } # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind .demo exit } Tix8.4.3/demos/samples/FileEnt.tcl0000644000122200012240000000424607404573433017215 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: FileEnt.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixFileEntry widget -- an # easy of letting the user select a filename # proc RunSample {w} { # Create the tixFileEntry's on the top of the dialog box # frame $w.top -border 1 -relief raised global demo_fent_from demo_fent_to tixFileEntry $w.top.a -label "Move File From: " \ -variable demo_fent_from \ -options { entry.width 25 label.width 16 label.underline 10 label.anchor e } tixFileEntry $w.top.b -label "To: " \ -variable demo_fent_to \ -options { entry.width 25 label.underline 0 label.width 16 label.anchor e } pack $w.top.a $w.top.b -side top -anchor w -pady 3 # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "fent:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes # Let's set some nice bindings for keyboard accelerators # bind $w "focus $w.top.a" bind $w "focus $w.top.b" bind $w "[$w.box subwidget ok] invoke; break" bind $w "[$w.box subwidget cancel] invoke; break" } proc fent:okcmd {w} { global demo_fent_from demo_fent_to # tixDemo:Status "You wanted to move file from $demo_fent_from to $demo_fent_to" destroy $w } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/Control.tcl0000644000122200012240000000700407404573433017302 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Control.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixControl widget -- it is an # entry widget with up/down arrow buttons. You can use the arrow buttons # to adjust the value inside the entry widget. # # 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. # proc RunSample {w} { # Create the tixControls on the top of the dialog box # frame $w.top -border 1 -relief 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. # global demo_maker demo_thrust demo_num_engins set demo_maker P&W set demo_thrust 20000.0 set demo_num_engins 2 tixControl $w.top.a -label "Number of Engines: " -integer true \ -variable demo_num_engins -min 1 -max 4\ -options { entry.width 10 label.width 20 label.anchor e } tixControl $w.top.b -label "Thrust: " -integer false \ -min 10000.0 -max 60000.0 -step 500\ -variable demo_thrust \ -options { entry.width 10 label.width 20 label.anchor e } tixControl $w.top.c -label "Engin Maker: " \ -incrcmd "ctl:adjust_maker $w.top.c +1" \ -decrcmd "ctl:adjust_maker $w.top.c -1" \ -validatecmd "ctl:validate_maker $w.top.c" \ -value "P&W" \ -options { entry.width 10 label.width 20 label.anchor e } pack $w.top.a $w.top.b $w.top.c -side top -anchor w # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "ctl:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } set ctl_makers {GE P&W "Rolls Royce"} # This procedure gets called when the user presses the up/down arrow buttons. # We return the "previous" or "next" engin maker according to the "$by" # argument # proc ctl:adjust_maker {w by value} { global ctl_makers set index [lsearch $ctl_makers $value] set len [llength $ctl_makers] set index [expr $index $by] if {$index < 0} { set index [expr $len -1] } if {$index >= $len} { set index 0 } return [lindex $ctl_makers $index] } proc ctl:validate_maker {w value} { global ctl_makers if {[lsearch $ctl_makers $value] == -1} { return [lindex $ctl_makers 0] } else { return $value } } proc ctl:okcmd {w} { global demo_maker demo_thrust demo_num_engins tixDemo:Status "You selected $demo_num_engins engin(s) of thrust $demo_thrust made \ by $demo_maker" destroy $w } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/SGrid0.tcl0000644000122200012240000000655607404573433016765 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SGrid0.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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. # A very simple demonstration of the tixGrid widget # proc RunSample {w} { wm title $w "The First Grid Example" wm geometry $w 480x300 set top [frame $w.f -bd 1 -relief raised] set box [tixButtonBox $w.b -bd 1 -relief raised] pack $box -side bottom -fill both pack $top -side top -fill both -expand yes label $top.lab -text "This widget is still under alpha Please ignore the debug messages Not all features have been implemented" -justify left pack $top.lab -side top -anchor c -padx 3 -pady 3 MakeGrid $top # Create the buttons # $box add ok -text Ok -command "destroy $w" -width 6 $box add cancel -text Cancel -command "destroy $w" -width 6 } # This command is called whenever the background of the grid needs to # be reformatted. The x1, y1, x2, y2 specifies the four corners of the area # that needs to be reformatted. # # area: # x-margin: the horizontal margin # y-margin: the vertical margin # s-margin: the overlap area of the x- and y-margins # main: The rest # proc SimpleFormat {w area x1 y1 x2 y2} { global margin set bg(s-margin) gray65 set bg(x-margin) gray65 set bg(y-margin) gray65 set bg(main) gray20 case $area { main { # The "grid" format is consecutive boxes without 3d borders # $w format grid $x1 $y1 $x2 $y2 \ -relief raised -bd 1 -bordercolor $bg($area) -filled 0 -bg red\ -xon 1 -yon 1 -xoff 0 -yoff 0 -anchor se } {x-margin y-margin s-margin} { # border specifies consecutive 3d borders # $w format border $x1 $y1 $x2 $y2 \ -fill 1 -relief raised -bd 1 -bg $bg($area) \ -selectbackground gray80 } } } # Print a number in $ format # # proc Dollar {s} { set n [string len $s] set start [expr $n % 3] if {$start == 0} { set start 3 } set str "" for {set i 0} {$i < $n} {incr i} { if {$start == 0} { append str "," set start 3 } incr start -1 append str [string index $s $i] } return $str } proc MakeGrid {w} { # Create the grid # tixScrolledGrid $w.g -bd 0 pack $w.g -expand yes -fill both -padx 3 -pady 3 set grid [$w.g subwidget grid] $grid config -formatcmd "SimpleFormat $grid" # Set the size of the columns # $grid size col 0 -size 10char $grid size col 1 -size auto $grid size col 2 -size auto $grid size col 3 -size auto $grid size col 4 -size auto # set the default size of the column and rows. these sizes will be used # if the size of a row or column has not be set via the "size col ?" # command $grid size col default -size 5char $grid size row default -size 1.1char -pad0 3 for {set x 0} {$x < 10} {incr x} { for {set y 0} {$y < 10} {incr y} { $grid set $x $y -itemtype text -text ($x,$y) } } } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/SGrid1.tcl0000644000122200012240000001245207404573433016756 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SGrid1.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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. # Demonstrates the tixGrid widget # proc RunSample {w} { wm title $w "Doe Inc. Performance" wm geometry $w 640x300 set top [frame $w.f -bd 1 -relief raised] set box [tixButtonBox $w.b -bd 1 -relief raised] pack $box -side bottom -fill both pack $top -side top -fill both -expand yes label $top.lab -text "This widget is still under alpha Please ignore the debug messages Not all features have been implemented" -justify left pack $top.lab -side top -anchor c -padx 3 -pady 3 MakeGrid $top # Create the buttons # $box add ok -text Ok -command "destroy $w" -width 6 $box add cancel -text Cancel -command "destroy $w" -width 6 } # This command is called whenever the background of the grid needs to # be reformatted. The x1, y1, x2, y2 sprcifies the four corners of the area # that needs to be reformatted. # proc gformat {w area x1 y1 x2 y2} { set bg(s-margin) gray65 set bg(x-margin) gray65 set bg(y-margin) gray65 set bg(main) gray20 case $area { main { for {set y [expr ($y1/2) * 2]} {$y <= $y2} {incr y 2} { $w format border $x1 $y $x2 $y \ -relief flat -filled 1\ -bd 0 -bg #80b080 -selectbackground #80b0ff } $w format grid $x1 $y1 $x2 $y2 \ -relief raised -bd 1 -bordercolor $bg($area) -filled 0 -bg red\ -xon 1 -yon 1 -xoff 0 -yoff 0 -anchor se } y-margin { $w format border $x1 $y1 $x2 $y2 \ -fill 1 -relief raised -bd 1 -bg $bg($area) \ -selectbackground gray80 } default { $w format border $x1 $y1 $x2 $y2 \ -filled 1 \ -relief raised -bd 1 -bg $bg($area) \ -selectbackground gray80 } } } # Print a number in $ format # # proc Dollar {s} { set n [string len $s] set start [expr $n % 3] if {$start == 0} { set start 3 } set str "" for {set i 0} {$i < $n} {incr i} { if {$start == 0} { append str "," set start 3 } incr start -1 append str [string index $s $i] } return $str } proc MakeGrid {w} { # data format {year revenue profit} # set data { {1970 1000000000 1000000} {1971 1100000000 2000000} {1972 1200000000 3000000} {1973 1300000000 4000000} {1974 1400000000 5000000} {1975 1500000000 6000000} {1976 1600000000 7000000} {1977 1700000000 8000000} {1978 1800000000 9000000} {1979 1900000000 10000000} {1980 2000000000 11000000} {1981 2100000000 22000000} {1982 2200000000 33000000} {1983 2300000000 44000000} {1984 2400000000 55000000} {1985 3500000000 36000000} {1986 4600000000 57000000} {1987 5700000000 68000000} {1988 6800000000 79000000} {1989 7900000000 90000000} {1990 13000000000 111000000} {1991 14100000000 122000000} {1992 16200000000 233000000} {1993 28300000000 344000000} {1994 29400000000 455000000} {1995 38500000000 536000000} } set headers { "Revenue ($)" "Rev. Growth (%)" "Profit ($)" "Profit Growth (%)" } # Create the grid # tixScrolledGrid $w.g -bd 0 pack $w.g -expand yes -fill both -padx 3 -pady 3 set grid [$w.g subwidget grid] $grid config -formatcmd "gformat $grid" # Set the size of the columns # $grid size col 0 -size 10char $grid size col 1 -size auto $grid size col 2 -size auto $grid size col 3 -size auto $grid size col 4 -size auto # set the default size of the column and rows. these sizes will be used # if the size of a row or column has not be set via the "size col ?" # command $grid size col default -size 5char $grid size row default -size 1.1char -pad0 3 set margin [tixDisplayStyle text -refwindow $grid \ -anchor c -padx 3 -font [tix option get bold_font]] set dollar [tixDisplayStyle text -refwindow $grid \ -anchor e] # Create the headers # set x 1 foreach h $headers { $grid set $x 0 -itemtype text -text $h -style $margin incr x } # Insert the data, year by year # set lastRevn {} set lastProf {} set i 1 foreach line $data { set year [lindex $line 0] set revn [lindex $line 1] set prof [lindex $line 2] if {$lastRevn != {}} { set rgrowth \ [format %4.2f [expr ($revn.0-$lastRevn)/$lastRevn*100.0]] } else { set rgrowth "-" } if {$lastProf != {}} { set pgrowth \ [format %4.2f [expr ($prof.0-$lastProf)/$lastProf*100.0]] } else { set pgrowth "-" } $grid set 0 $i -itemtype text -style $margin -text $year $grid set 1 $i -itemtype text -style $dollar -text [Dollar $revn] $grid set 2 $i -itemtype text -style $dollar -text $rgrowth $grid set 3 $i -itemtype text -style $dollar -text [Dollar $prof] $grid set 4 $i -itemtype text -style $dollar -text $pgrowth set lastRevn $revn.0 set lastProf $prof.0 incr i } } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/SWindow.tcl0000644000122200012240000000523607404573433017261 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SWindow.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixScrolledWindow widget. # proc RunSample {w} { # We create the frame and the ScrolledWindow widget # at the top of the dialog box # frame $w.top -relief raised -bd 1 # Create a complex window inside the ScrolledWindow widget. # ScrolledWindow are very convenient: unlink the canvas widget, # you don't need to specify the scroll-redions for the # ScrolledWindow. It will automatically adjust itself to fit # size of the "window" subwidget # # [Hint] Be sure you create and pack new widgets inside the # "window" subwidget and NOT inside $w.top.a itself! # tixScrolledWindow $w.top.a pack $w.top.a -expand yes -fill both -padx 10 -pady 10 -side left set f [$w.top.a subwidget window] tixNoteBook $f.nb pack $f.nb -expand yes -fill both -padx 20 -pady 20 $f.nb add image -label "Image" -underline 0 $f.nb add buttons -label "Buttons" -underline 0 # The first page: an image # global demo_dir set p [$f.nb subwidget image] set im [image create photo -file $demo_dir/bitmaps/tix.gif] label $p.lab -image $im pack $p.lab -padx 20 -pady 20 # The second page: buttons # set p [$f.nb subwidget buttons] button $p.b1 -text "Welcome" -width 8 button $p.b2 -text "to" -width 8 button $p.b3 -text "the" -width 8 button $p.b4 -text "World" -width 8 button $p.b5 -text "of" -width 8 button $p.b6 -text "Tix" -width 8 pack $p.b1 $p.b2 $p.b3 $p.b4 $p.b5 $p.b6 -anchor c -side top # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes wm geometry $w 240x220 } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/Select.tcl0000644000122200012240000000636707404573433017114 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Select.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixSelect widget. # proc RunSample {w} { global demo_dir # Create the frame on the top of the dialog box with two tixSelect # widgets inside. # frame $w.top # There can be one and only type of justification for any piece of text. # So we set -radio to be true. Also, -allowzero is set to false: the user # cannot select a "none" justification # tixSelect $w.top.just -allowzero false -radio true \ -label "Justification: "\ -options { label.width 15 label.padx 4 label.anchor e } # The user can select one or many or none of the font attributes in # the font Select widget, so we set -radio to false (can select one or # many) and -allowzero to true (can select none) # tixSelect $w.top.font -allowzero true -radio false \ -label "Font: " \ -options { label.width 15 label.padx 4 label.anchor e } pack $w.top.just $w.top.font -side top -expand yes -anchor c \ -padx 4 -pady 4 # Add the choices of available font attributes # # $w.top.font add bold -bitmap @$demo_dir/bitmaps/bold.xbm $w.top.font add italic -bitmap @$demo_dir/bitmaps/italic.xbm $w.top.font add underline -bitmap @$demo_dir/bitmaps/underlin.xbm $w.top.font add capital -bitmap @$demo_dir/bitmaps/capital.xbm # Add the choices of available justification types # # $w.top.just add left -bitmap @$demo_dir/bitmaps/leftj.xbm $w.top.just add right -bitmap @$demo_dir/bitmaps/rightj.xbm $w.top.just add center -bitmap @$demo_dir/bitmaps/centerj.xbm $w.top.just add justified -bitmap @$demo_dir/bitmaps/justify.xbm $w.top.font config -variable sel_font $w.top.just config -variable sel_just # Set the default value of the two Select widgets # # global sel_just sel_font set sel_just justified set sel_font {bold underline} # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -width 6\ -command "sel:cmd $w; destroy $w" $w.box add apply -text Apply -underline 0 -width 6\ -command "sel:cmd $w" $w.box add cancel -text Cancel -underline 0 -width 6\ -command "destroy $w" pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # This procedure is called whenever the user pressed the OK or the Apply button # # proc sel:cmd {w} { global sel_font sel_just tixDemo:Status "The justification is $sel_just" if {$sel_font == {}} { tixDemo:Status "The font is normal" } else { tixDemo:Status "The font is $sel_font" } } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind .demo exit } Tix8.4.3/demos/samples/CmpImg.tcl0000644000122200012240000000364707404573433017047 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: CmpImg.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 compound images: it uses compound # images to display a text string together with a pixmap inside # buttons # proc RunSample {w} { set img0 [tix getimage network] set img1 [tix getimage harddisk] button $w.hdd -padx 4 -pady 1 -width 120 button $w.net -padx 4 -pady 1 -width 120 # Create the first image: we create a line, then put a string, # a space and a image into this line, from left to right. # The result: we have a one-line image that consists of three # individual items # set hdd_img [image create compound -window $w.hdd] $hdd_img add line $hdd_img add text -text "Hard Disk" -underline 0 $hdd_img add space -width 7 $hdd_img add image -image $img1 # Put this image into the first button # $w.hdd config -image $hdd_img # Create the second compound image. Very similar to what we did above # set net_img [image create compound -window $w.net] $net_img add line $net_img add text -text "Network" -underline 0 $net_img add space -width 7 $net_img add image -image $img0 $w.net config -image $net_img # The button to close the window # button $w.clo -pady 1 -text Close -command "destroy $w" pack $w.hdd $w.net $w.clo -side left -padx 10 -pady 10 -fill y -expand yes } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/Sample.tcl0000644000122200012240000000200507404573433017077 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Sample.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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. # REPLACE WITH DESCRIPTION OF THIS DEMO. # proc RunSample {w} { set top [frame $w.f -bd 1 -relief raised] set box [tixButtonBox $w.b -bd 1 -relief raised] pack $box -side bottom -fill both pack $top -side top -fill both -expand yes # Create the buttons # $box add ok -text Ok -command "destroy $w" -width 6 $box add cancel -text Cancel -command "destroy $w" -width 6 } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/ChkList.tcl0000644000122200012240000001227407404573433017230 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: ChkList.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 program demonstrates the use of the tixCheckList widget. # proc RunSample {w} { set top [frame $w.f -bd 1 -relief raised] set box [tixButtonBox $w.b -bd 1 -relief raised] pack $box -side bottom -fill both pack $top -side top -fill both -expand yes #------------------------------------------------------------ # Create the 1st CheckList (Multiple Selection) # set f [frame $top.f1] pack $f -side left -expand yes -fill both -padx 4 set l [label $f.l -text "Choose languages: "] pack $l -side top -fill x -padx 4 -pady 4 set c1 [tixCheckList $f.c -scrollbar auto] pack $c1 -expand yes -fill both -padx 4 -pady 4 set b1 [button $f.btn -text "Results >>" -command "ChkList_Result $c1"] pack $b1 -anchor c #------------------------------------------------------------ # Create the 2nd CheckList (Single Selection, using the -radio option) # set f [frame $top.f2] pack $f -side left -expand yes -fill both -padx 4 set l [label $f.l -text "Choose one language: "] pack $l -side top -fill x -padx 4 -pady 4 set c2 [tixCheckList $f.c -scrollbar auto -radio true] pack $c2 -expand yes -fill both -padx 4 -pady 4 # Fill up the two checklists with languages # set names(1) "Ada" set names(2) "BCPL" set names(3) "C" set names(4) "Dylan" set names(5) "Eiffel" set names(6) "Fortran" set names(7) "Incr Tcl" set names(8) "Python" set names(9) "Scheme" set names(0) "TCL" set h1 [$c1 subwidget hlist] set h2 [$c2 subwidget hlist] foreach ent {1 2 3 4 5 6 7 8 9 0} { $h1 add $ent -itemtype imagetext -text $names($ent) } foreach ent {1 2 3 4 5 6 7 8 9 0} { $h2 add $ent -itemtype imagetext -text $names($ent) $c2 setstatus $ent off } $c1 setstatus 1 on $c1 setstatus 2 on $c1 setstatus 3 default $c1 setstatus 4 off $c1 setstatus 5 off $c1 setstatus 6 on $c1 setstatus 7 off $c1 setstatus 8 on $c1 setstatus 9 on $c1 setstatus 0 default #------------------------------------------------------------ # Create the 3nd CheckList (a tree). Also, we disable some # sub-selections if the top-level selections are not selected. # i.e., if the user doesn't like any functional languages, # make sure he doesn't select Lisp. # set f [frame $top.f3] pack $f -side left -expand yes -fill both -padx 4 set l [label $f.l -text "Choose languages: "] pack $l -side top -fill x -padx 4 -pady 4 set c3 [tixCheckList $f.c -scrollbar auto -options { hlist.indicator 1 hlist.indent 20 }] pack $c3 -expand yes -fill both -padx 4 -pady 4 set h3 [$c3 subwidget hlist] $h3 add 0 -itemtype imagetext -text "Functional Languages" $h3 add 1 -itemtype imagetext -text "Imperative Languages" $h3 add 0.0 -itemtype imagetext -text Lisp $h3 add 0.1 -itemtype imagetext -text Scheme $h3 add 1.0 -itemtype imagetext -text C $h3 add 1.1 -itemtype imagetext -text Python $c3 setstatus 0 on $c3 setstatus 1 on $c3 setstatus 0.0 off $c3 setstatus 0.1 off $c3 setstatus 1.0 on $c3 setstatus 1.1 off $c3 config -browsecmd "ChkList:Monitor $c3" $c3 config -command "ChkList:Monitor $c3" $c3 autosetmode global chklist tixOption set chklist(disabled) [tixDisplayStyle imagetext -fg $tixOption(disabled_fg) \ -refwindow [$c3 subwidget hlist]] set chklist(normal) [tixDisplayStyle imagetext -fg black \ -refwindow [$c3 subwidget hlist]] # Create the buttons # $box add ok -text Ok -command "destroy $w" -width 6 $box add cancel -text Cancel -command "destroy $w" -width 6 } proc ChkList_Result {clist} { tixDemo:Status "Selected items: [$clist getselection on]" tixDemo:Status "Unselected items: [$clist getselection off]" tixDemo:Status "Default items: [$clist getselection default]" } # This function monitors if any of the two "general groups" # (functional and imperative languages) are de-selected. If so, it # sets all the sub-selections to non-selectable by setting their -state # to disabled. # proc ChkList:Monitor {c3 ent} { global chklist set h [$c3 subwidget hlist] if {[$c3 getstatus 0] == "on"} { set state normal } else { set state disabled } $h entryconfig 0.0 -state $state -style $chklist($state) $h entryconfig 0.1 -state $state -style $chklist($state) if {[$c3 getstatus 1] == "on"} { set state normal } else { set state disabled } $h entryconfig 1.0 -state $state -style $chklist($state) $h entryconfig 1.1 -state $state -style $chklist($state) } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/PanedWin.tcl0000644000122200012240000001017707404573433017374 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: PanedWin.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixPanedWindow widget. This program # is a dummy news reader: the user can adjust the sizes of the list # of artical names and the size of the text widget that shows the body # of the article # proc RunSample {w} { # We create the frame at the top of the dialog box # frame $w.top -relief raised -bd 1 # Use a LabelEntry widget to show the name of the newsgroup # [Hint] We disable the entry widget so that the user can't # mess up with the name of the newsgroup # tixLabelEntry $w.top.name -label "Newsgroup: " -options { entry.width 25 } $w.top.name subwidget entry insert 0 "comp.lang.tcl" $w.top.name subwidget entry config -state disabled pack $w.top.name -side top -anchor c -fill x -padx 14 -pady 6 # Now use a PanedWindow to contain the list and text widgets # tixPanedWindow $w.top.pane -paneborderwidth 0 pack $w.top.pane -side top -expand yes -fill both -padx 10 -pady 10 set p1 [$w.top.pane add list -min 70 -size 100] set p2 [$w.top.pane add text -min 70] tixScrolledListBox $p1.list $p1.list subwidget listbox config -font [tix option get fixed_font] tixScrolledText $p2.text $p2.text subwidget text config -font [tix option get fixed_font] pack $p1.list -expand yes -fill both -padx 4 -pady 6 pack $p2.text -expand yes -fill both -padx 4 -pady 6 # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 8 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 8 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes # Put the junk inside the listbox and the tetx widget # $p1.list subwidget listbox insert end \ " 12324 Re: TK is good for your health" \ "+ 12325 Re: TK is good for your health" \ "+ 12326 Re: Tix is even better for your health (Was: TK is good...)" \ " 12327 Re: Tix is even better for your health (Was: TK is good...)" \ "+ 12328 Re: Tix is even better for your health (Was: TK is good...)" \ " 12329 Re: Tix is even better for your health (Was: TK is good...)" \ "+ 12330 Re: Tix is even better for your health (Was: TK is good...)" $p2.text subwidget text config -wrap none -bg \ [$p1.list subwidget listbox cget -bg] $p2.text subwidget text insert end { Mon, 19 Jun 1995 11:39:52 comp.lang.tcl Thread 34 of 220 Lines 353 A new way to put text and bitmaps together iNo responses ioi@blue.seas.upenn.edu Ioi K. Lam at University of Pennsylvania Hi, I have implemented a new image type called "compound". It allows you to glue together a bunch of bitmaps, images and text strings together to form a bigger image. Then you can use this image with widgets that support the -image option. This way you can display very fancy stuffs in your GUI. For example, you can display a text string string together with a bitmap, at the same time, inside a TK button widget. A screenshot of compound images can be found at the bottom of this page: http://www.cis.upenn.edu/~ioi/tix/screenshot.html You can also you is in other places such as putting fancy bitmap+text in menus, tabs of tixNoteBook widgets, etc. This feature will be included in the next release of Tix (4.0b1). Count on it to make jazzy interfaces!} } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w {if {"%W" == ".demo"} exit} } Tix8.4.3/demos/samples/StdBBox.tcl0000644000122200012240000000435607404573433017176 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: StdBBox.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixStdButtonBox widget, which is a # group of "Standard" buttons for Motif-like dialog boxes. # proc RunSample {w} { # Create the label on the top of the dialog box # label $w.top -padx 20 -pady 10 -border 1 -relief raised -text \ "This dialog box is\n a demostration of the\n tixStdButtonBox widget" \ -justify center -anchor c # Create the button box. We also do some manipulation of the # button widgets inside: we disable the help button and change # the label string of the "apply" button to "Filter" # # Note that the -text, -underline, -command and -width options are all # standard options of the button widgets. # tixStdButtonBox $w.box $w.box subwidget ok config \ -command "tixDemo:Status {OK pressed}; destroy $w" $w.box subwidget apply config -text "Filter" -underline 0 \ -command "tixDemo:Status {Filter pressed}" $w.box subwidget cancel config \ -command "tixDemo:Status {Cancel pressed}; destroy $w" $w.box subwidget help config -state disabled pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes -anchor c # "after 0" is used so that the key bindings won't interfere with # tkTraverseMenu # bind [winfo toplevel $w] \ "after 0 tkButtonInvoke [$w.box subwidget ok]" bind [winfo toplevel $w] \ "after 0 tkButtonInvoke [$w.box subwidget apply]" bind [winfo toplevel $w] \ "after 0 tkButtonInvoke [$w.box subwidget cancel]" bind [winfo toplevel $w] \ "after 0 tkButtonInvoke [$w.box subwidget cancel]" focus [$w.box subwidget apply] } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/DirTree.tcl0000644000122200012240000000525507404573433017226 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: DirTree.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixDirList widget to ask the user to select the # installation directory for an application. # proc RunSample {w} { # Create the tixDirTree and the tixLabelEntry widgets on the on the top # of the dialog box # frame $w.top -border 1 -relief raised # Create the DirTree widget. By default it will show the current # directory (returned by [pwd]) # # tixDirTree $w.top.dir -browsecmd "dtree:browse $w.top.ent" # When the user presses the ".." button, the selected directory # is "transferred" into the entry widget # # 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 # tixLabelEntry $w.top.ent -label "Installation Directory:" -labelside top \ -options { entry.width 25 entry.textVariable demo_dtree_dir label.anchor w } bind [$w.top.ent subwidget entry] "dtree:okcmd $w" uplevel #0 set demo_dtree_dir [list [pwd]] pack $w.top.dir -side left -expand yes -fill both -padx 4 -pady 4 pack $w.top.ent -side left -fill x -anchor c -padx 4 -pady 4 # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "dtree:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } proc dtree:browse {ent filename} { uplevel #0 set demo_dtree_dir $filename } proc dtree:copy_name {w} { global demo_dtree_dir set demo_dtree_dir [$w cget -value] } proc dtree:okcmd {w} { global demo_dtree_dir tixDemo:Status "You have selected the directory $demo_dtree_dir" destroy $w } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w "exit" } Tix8.4.3/demos/samples/ComboBox.tcl0000644000122200012240000000673207404573433017401 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: ComboBox.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixComboBox widget, which is close # to the MS Window Combo Box control. # proc RunSample {w} { # Create the comboboxes on the top of the dialog box # frame $w.top -border 1 -relief raised # $w.top.a is a drop-down combo box. It is not editable -- who wants # to invent new months? # # [Hint] The -options switch sets the options of the subwidgets. # [Hint] We set the label.width subwidget option of both comboboxes to # be 10 so that their labels appear to be aligned. # tixComboBox $w.top.a -label "Month: " -dropdown true \ -command cbx:select_month -editable false -variable demo_month \ -options { listbox.height 6 label.width 10 label.anchor e } # $w.top.b is a non-drop-down combo box. It is not editable: we provide # four choices for the user, but he can enter an alternative year if he # wants to. # # [Hint] Use the padY and anchor options of the label subwidget to # aligh the label with the entry subwidget. # [Hint] Notice that you should use padY (the NAME of the option) and not # pady (the SWITCH of the option). # tixComboBox $w.top.b -label "Year: " -dropdown false \ -command cbx:select_year -editable true -variable demo_year \ -options { listbox.height 4 label.padY 5 label.width 10 label.anchor ne } pack $w.top.a -side top -anchor w pack $w.top.b -side top -anchor w # Insert the choices into the combo boxes # $w.top.a insert end January $w.top.a insert end February $w.top.a insert end March $w.top.a insert end April $w.top.a insert end May $w.top.a insert end June $w.top.a insert end July $w.top.a insert end August $w.top.a insert end September $w.top.a insert end October $w.top.a insert end November $w.top.a insert end December $w.top.b insert end 1992 $w.top.b insert end 1993 $w.top.b insert end 1994 $w.top.b insert end 1995 # Use "tixSetSilent" to set the values of the combo box if you # don't want your -command procedures (cbx:select_month and # cbx:select_year) to be called. # tixSetSilent $w.top.a January tixSetSilent $w.top.b 1995 # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "cbx:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } proc cbx:select_year {args} { tixDemo:Status "you have selected \"$args\"" } proc cbx:select_month {s} { tixDemo:Status "you have selected \"$s\"" } proc cbx:okcmd {w} { global demo_month demo_year tixDemo:Status "The month selected is $demo_month of $demo_year" destroy $w } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/DirList.tcl0000644000122200012240000000530507404573433017236 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: DirList.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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. # proc RunSample {w} { # Create the tixDirList and the tixLabelEntry widgets on the on the top # of the dialog box # frame $w.top -border 1 -relief raised # Create the DirList widget. By default it will show the current # directory (returned by [pwd]) # # tixDirList $w.top.dir # When the user presses the ".." button, the selected directory # is "transferred" into the entry widget # button $w.top.btn -text " >> " -pady 0 \ -command "dlist:copy_name $w.top.dir" # 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 # tixLabelEntry $w.top.ent -label "Installation Directory:" -labelside top \ -options { entry.width 25 entry.textVariable demo_dlist_dir label.anchor w } bind [$w.top.ent subwidget entry] "dlist:okcmd $w" uplevel #0 set demo_dlist_dir [list [pwd]] pack $w.top.dir -side left -expand yes -fill both -padx 4 -pady 4 pack $w.top.btn -side left -anchor s -padx 4 -pady 4 pack $w.top.ent -side left -fill x -anchor s -padx 4 -pady 4 # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "dlist:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } proc dlist:copy_name {w} { global demo_dlist_dir set demo_dlist_dir [$w cget -value] } proc dlist:okcmd {w} { global demo_dlist_dir tixDemo:Status "You have selected the directory $demo_dlist_dir" destroy $w } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w "exit" } Tix8.4.3/demos/samples/CObjView.tcl0000644000122200012240000000501607404573433017333 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: CObjView.tcl,v 1.4 2001/12/09 05:31:07 idiscovery Exp $ # # 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 program demonstrates the use of the CObjView (Canvas Object # View) class. # # $Id: CObjView.tcl,v 1.4 2001/12/09 05:31:07 idiscovery Exp $ proc RunSample {w} { label $w.lab -justify left -text \ "Click on the buttons to add or delete canvas objects randomally. Notice the scrollbars automatically adjust to include all objects in the scroll-region." pack $w.lab -anchor c -padx 10 -pady 6 -side top frame $w.f pack $w.f -side bottom -fill y tixCObjView $w.c pack $w.c -expand yes -fill both -padx 4 -pady 2 -side top button $w.add -command "CVDemo_Add $w.c" -text Add -width 6 button $w.del -command "CVDemo_Delete $w.c" -text Delete -width 6 button $w.exit -command "destroy $w" -text Exit -width 6 pack $w.add $w.del $w.exit -side left -padx 20 -pady 10 \ -anchor c -expand yes -in $w.f } proc CVDemo_Add {cov} { # Generate four pseudo random numbers (x,y,w,h) to define the coordinates # of a rectangle object in the canvas. # set colors {red green blue white black gray yellow} set x [expr int(rand() * 400) - 120] set y [expr int(rand() * 400) - 120] set w [expr int(rand() * 120)] set h [expr int(rand() * 120)] # Create the canvas object # $cov subwidget canvas create rectangle $x $y [expr $x+$w] [expr $y+$h] \ -fill [lindex $colors [expr int(rand() * [llength $colors])]] # Call the adjustscrollregion command to set the scroll bars so that all # objects are included in the scroll-region # $cov adjustscrollregion } proc CVDemo_Delete {cov} { set px [lindex [time update] 0] set w [$cov subwidget canvas] set items [$w find withtag all] if [string compare $items ""] { # There are items in the canvas, randomally delete one of them # and re-adjust the scroll-region # set toDelete [expr $px % [llength $items]] $w delete [lindex $items $toDelete] $cov adjustscrollregion } } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w {after 10 exit} } Tix8.4.3/demos/samples/ListNBK.tcl0000644000122200012240000000557407404573433017142 0ustar jeffhjeffh00000000000000# # $Id: ListNBK.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 program demonstrates the ListBoteBook widget, which is very similar # to a NoteBook widget but uses an HList instead of page tabs to list the # pages. proc RunSample {w} { set top [frame $w.f -bd 1 -relief raised] set box [tixButtonBox $w.b -bd 1 -relief raised] pack $box -side bottom -fill both pack $top -side top -fill both -expand yes #---------------------------------------------------------------------- # Create the ListNoteBook with nice icons #---------------------------------------------------------------------- tixListNoteBook $top.n -ipadx 6 -ipady 6 set img0 [tix getimage harddisk] set img1 [tix getimage network] $top.n subwidget hlist add hard_disk -itemtype imagetext \ -image $img0 -text "Hard Disk" -under 0 $top.n subwidget hlist add network -itemtype imagetext \ -image $img1 -text "Network" -under 0 $top.n add hard_disk $top.n add network # # Create the widgets inside the two pages # We use these options to set the sizes of the subwidgets inside the # notebook, so that they are well-aligned on the screen. # set name [tixOptionName $w] option add *$name*TixControl*entry.width 10 option add *$name*TixControl*label.width 18 option add *$name*TixControl*label.anchor e set f [$top.n subwidget hard_disk] tixControl $f.a -value 12 -label "Access Time: " tixControl $f.w -value 400 -label "Write Throughput: " tixControl $f.r -value 400 -label "Read Throughput: " tixControl $f.c -value 1021 -label "Capacity: " pack $f.a $f.w $f.r $f.c -side top -padx 20 -pady 2 set f [$top.n subwidget network] tixControl $f.a -value 12 -label "Access Time: " tixControl $f.w -value 400 -label "Write Throughput: " tixControl $f.r -value 400 -label "Read Throughput: " tixControl $f.c -value 1021 -label "Capacity: " tixControl $f.u -value 10 -label "Users: " pack $f.a $f.w $f.r $f.c $f.u -side top -padx 20 -pady 2 pack $top.n -expand yes -fill both -padx 5 -pady 5 # Create the buttons # $box add ok -text Ok -command "destroy $w" -width 6 $box add cancel -text Cancel -command "destroy $w" -width 6 } #---------------------------------------------------------------------- # Start-up code #---------------------------------------------------------------------- if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/LabEntry.tcl0000644000122200012240000000532507404573433017406 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: LabEntry.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixLabelEntry widget -- an entry that # come with a label at its side, so you don't need to create # extra frames on your own and do the messy hierarchical packing. This # example is adapted from the tixControl example, except now you don't # have arrow buttons to adjust the values for you ... # proc RunSample {w} { # Create the tixLabelEntrys on the top of the dialog box # frame $w.top -border 1 -relief 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. # global lent_demo_maker lent_demo_thrust lent_demo_num_engins set lent_demo_maker P&W set lent_demo_thrust 20000.0 set lent_demo_num_engins 2 tixLabelEntry $w.top.a -label "Number of Engines: " \ -options { entry.width 10 label.width 20 label.anchor e entry.textVariable lent_demo_num_engins } tixLabelEntry $w.top.b -label "Thrust: "\ -options { entry.width 10 label.width 20 label.anchor e entry.textVariable lent_demo_thrust } tixLabelEntry $w.top.c -label "Engin Maker: " \ -options { entry.width 10 label.width 20 label.anchor e entry.textVariable lent_demo_maker } pack $w.top.a $w.top.b $w.top.c -side top -anchor w # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "labe:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } proc labe:okcmd {w} { global lent_demo_maker lent_demo_thrust lent_demo_num_engins tixDemo:Status "You selected $lent_demo_num_engins engin(s) of thrust $lent_demo_thrust made \ by $lent_demo_maker" destroy $w } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/PopMenu.tcl0000644000122200012240000000447307404573433017254 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: PopMenu.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixPopupMenu widget. # proc RunSample {w} { # We create the frame and the button, then we'll bind the PopupMenu # to both widgets. The result is, when you press the right mouse # button over $w.top or $w.top.but, the PopupMenu will come up. # frame $w.top -relief raised -bd 1 button $w.top.but -text {Press the right mouse button over this button or its surrounding area} pack $w.top.but -expand yes -fill both -padx 50 -pady 50 tixPopupMenu $w.top.p -title "Popup Test" $w.top.p bind $w.top $w.top.p bind $w.top.but # Set the entries inside the PopupMenu widget. # [Hint] You have to manipulate the "menu" subwidget. # $w.top.p itself is NOT a menu widget. # [Hint] Watch carefully how the sub-menu is created # set menu [$w.top.p subwidget menu] $menu add command -label Desktop -under 0 $menu add command -label Select -under 0 $menu add command -label Find -under 0 $menu add command -label System -under 1 $menu add command -label Help -under 0 $menu add cascade -label More -menu $menu.m1 menu $menu.m1 $menu.m1 add command -label Hello pack $w.top.but -side top -padx 40 -pady 50 # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w {if {"%W" == ".demo"} exit} } Tix8.4.3/demos/samples/OptMenu.tcl0000644000122200012240000000611307404573433017251 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: OptMenu.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixOptionMenu widget -- you can # use it for the user to choose from a fixed set of options # set opt_options {text formatted post html tex rtf} set opt_labels(text) "Plain Text" set opt_labels(formatted) "Formatted Text" set opt_labels(post) "PostScript" set opt_labels(html) "HTML" set opt_labels(tex) "LaTeX" set opt_labels(rtf) "Rich Text Format" proc RunSample {w} { catch {uplevel #0 unset demo_opt_from} catch {uplevel #0 unset demo_opt_to } # Create the tixOptionMenu's on the top of the dialog box # frame $w.top -border 1 -relief raised tixOptionMenu $w.top.from -label "From File Format : " \ -variable demo_opt_from \ -options { label.width 19 label.anchor e menubutton.width 15 } tixOptionMenu $w.top.to -label "To File Format : " \ -variable demo_opt_to \ -options { label.width 19 label.anchor e menubutton.width 15 } # Add the available options to the two OptionMenu widgets # # [Hint] You have to add the options first before you set the # global variables "demo_opt_from" and "demo_opt_to". Otherwise # the OptionMenu widget will complain about "unknown options"! # global opt_options opt_labels foreach opt $opt_options { $w.top.from add command $opt -label $opt_labels($opt) $w.top.to add command $opt -label $opt_labels($opt) } uplevel #0 set demo_opt_from html uplevel #0 set demo_opt_to post pack $w.top.from $w.top.to -side top -anchor w -pady 3 -padx 6 # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "opt:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes # Let's set some nice bindings for keyboard accelerators # bind $w "focus $w.top.from" bind $w "focus $w.top.to" bind $w "[$w.box subwidget ok] invoke; break" bind $w "[$w.box subwidget cancel] invoke; break" } proc opt:okcmd {w} { global demo_opt_from demo_opt_to opt_labels tixDemo:Status "You wanted to convert file from $opt_labels($demo_opt_from) to $opt_labels($demo_opt_to)" destroy $w } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w {if {"%W" == ".demo"} exit} } Tix8.4.3/demos/samples/Meter.tcl0000644000122200012240000000416507404573433016743 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Meter.tcl,v 1.4 2001/12/09 05:31:07 idiscovery Exp $ # # 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 program demonstrates the use of the tixMeter widget -- it is # used to display the progress of a background job # proc RunSample {w} { set top [frame $w.f -bd 1 -relief raised] set box [tixButtonBox $w.b -bd 1 -relief raised] pack $box -side bottom -fill both pack $top -side top -fill both -expand yes # Create the Meter and the Label # label $top.lab -text "Work in progress ...." tixMeter $top.met -value 0 -text 0% pack $top.lab -side top -padx 50 -pady 10 -anchor c pack $top.met -side top -padx 50 -pady 10 -anchor c # Create the buttons # $box add cancel -text Cancel -command "destroy $w" \ -width 6 -under 0 $box add restart -text Restart -width 6 -under 0 $box subwidget restart config -command \ "Meter:Start $top.met [$box subwidget cancel] [$box subwidget restart]" $box subwidget restart invoke } proc Meter:Start {meter cancel restart} { $restart config -state disabled $cancel config -text Cancel after 40 Meter:BackgroundJob $meter 0 $cancel $restart } proc Meter:BackgroundJob {meter progress cancel restart} { if ![winfo exists $meter] { # the window has already been destroyed # return } set progress [expr $progress + 0.02] set text [expr int($progress*100.0)]% $meter config -value $progress -text $text if {$progress < 1.0} { after 40 Meter:BackgroundJob $meter $progress $cancel $restart } else { $cancel config -text OK -under 0 $restart config -state normal } } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w {if {"%W" == ".demo"} exit} } Tix8.4.3/demos/samples/Xpm.tcl0000644000122200012240000000555007404573433016432 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Xpm.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 XPM images. # proc RunSample {w} { set hard_disk_pixmap {/* XPM */ static char * drivea_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 5 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #800080008000", /* pixels */ " ", " ", " ", " ", " ", " ", " ", " ", " ", " .......................... ", " .XXXXXXXXXXXXXXXXXXXXXXXo. ", " .XooooooooooooooooooooooO. ", " .Xooooooooooooooooo..oooO. ", " .Xooooooooooooooooo..oooO. ", " .XooooooooooooooooooooooO. ", " .Xoooooooo.......oooooooO. ", " .Xoo...................oO. ", " .Xoooooooo.......oooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .oOOOOOOOOOOOOOOOOOOOOOOO. ", " .......................... ", " ", " ", " ", " ", " ", " ", " ", " "}; } frame $w.top -relief raised -bd 1 button $w.top.b -image [image create pixmap -data $hard_disk_pixmap] pack $w.top -expand yes -fill both pack $w.top.b -expand yes -padx 20 -pady 20 tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/HList1.tcl0000644000122200012240000001103307404573433016763 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: HList1.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixHList widget -- you can # use to display data in a tree structure. For example, your family tree # # proc RunSample {w} { # Create the tixHList and the tixLabelEntry widgets on the on the top # of the dialog box # # [Hint] We create the tixHList and and the scrollbar by ourself, # but it is more convenient to use the tixScrolledHlist widget # which does all the chores for us. # # [Hint] Use of the -browsecmd and -command options: # We want to set the tixLabelEntry accordingly whenever the user # single-clicks on an entry in the HList box. Also, when the user # double-clicks, we want to print out the selection and close # the dialog box # frame $w.top -border 1 -relief raised tixHList $w.top.h -yscrollcommand "$w.top.s set" -separator / \ -browsecmd "hlist1:browse $w.top.h" \ -command "hlist1:activate $w.top.h"\ -wideselection false \ -indent 15 scrollbar $w.top.s -command "$w.top.h yview" -takefocus 0 # Some icons for our list entries # global folder1 folder2 set img1 [image create bitmap -data $folder1] set img2 [image create bitmap -data $folder2] # Put our directories into the HList entry # set h $w.top.h set dirs { / /lib /pkg /usr /usr/lib /usr/local /usr/local/lib /pkg/lib } foreach d $dirs { $h add $d -itemtype imagetext -text $d -image $img2 -data $d # We only want the user to select the directories that # ends by "lib" if {![string match "*lib" $d]} { $h entryconfig $d -state disabled -image $img1 } } # 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 # tixLabelEntry $w.top.e -label "Installation Directory:" -labelside top \ -options { entry.width 25 entry.textVariable demo_hlist_dir label.anchor w } bind [$w.top.e subwidget entry] "hlist:okcmd $w" # Set the default value # uplevel #0 set demo_hlist_dir /usr/local/lib $h anchor set /usr/local/lib $h select set /usr/local/lib pack $w.top.h -side left -expand yes -fill both -padx 2 -pady 2 pack $w.top.s -side left -fill y -pady 2 pack $w.top.e -side left -expand yes -fill x -anchor s -padx 4 -pady 2 # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "hlist:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # In an actual program, you may want to tell the user how much space he has # left in this directory # # proc hlist1:browse {w dir} { global demo_hlist_dir set demo_hlist_dir [$w entrycget $dir -data] } # In an actual program, you will install your favorit application # in the selected directory # proc hlist1:activate {w dir} { global demo_hlist_dir set demo_hlist_dir [$w entrycget $dir -data] tixDemo:Status "You have selected the directory $demo_hlist_dir" destroy [winfo toplevel $w] } proc hlist:okcmd {w} { global demo_hlist_dir tixDemo:Status "You have selected the directory $demo_hlist_dir" destroy $w } set folder1 { #define foo_width 16 #define foo_height 12 static unsigned char foo_bits[] = { 0x00, 0x00, 0x00, 0x3e, 0xfe, 0x41, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0xfe, 0x7f, 0x00, 0x00};} set folder2 { #define foo_width 16 #define foo_height 12 static unsigned char foo_bits[] = { 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x02, 0x40, 0x02, 0x44, 0xf2, 0x4f, 0xf2, 0x5f, 0xf2, 0x4f, 0x02, 0x44, 0x02, 0x40, 0xfe, 0x7f, 0x00, 0x00}; } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/Balloon.tcl0000644000122200012240000000327107404573433017252 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Balloon.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixBalloon widget, which provides # a interesting way to give help tips about elements in your user interface. # Your can display the help message in a "balloon" and a status bar widget. # proc RunSample {w} { # Create the status bar widget # label $w.status -width 40 -relief sunken -bd 1 pack $w.status -side bottom -fill y -padx 2 -pady 1 # These are two a mysterious widgets that need some explanation # button $w.button1 -text " Something Unexpected " \ -command "destroy $w" button $w.button2 -text " Something Else Unexpected " \ -command "destroy $w.button2" pack $w.button1 $w.button2 -side top -expand yes # Create the balloon widget and associate it with the widgets that we want # to provide tips for: tixBalloon $w.b -statusbar $w.status $w.b bind $w.button1 -balloonmsg "Close window" \ -statusmsg "Press this button to close this window" $w.b bind $w.button2 -balloonmsg "Self-destruct\nButton" \ -statusmsg "Press this button and it will get rid of itself" } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w {if {"%W" == ".demo"} exit} } Tix8.4.3/demos/samples/DragDrop.tcl0000644000122200012240000000311407404573433017362 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: DragDrop.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 Drag+Drop features in Tix. Drag+Drop is still # experimental in Tix. Please don't use. For your eyes only. # # proc RunSample {w} { text $w.d -height 5 $w.d insert end {Quick and dirty example: click on any node on on the directory lists and drag. You can see the cursor change its shape. The "dropsite" of the directory lists will be highlighted when you drag the cursor accorss the directory nodes. Nothing will happen when you drop. } pack $w.d -padx 10 -pady 5 tixDirList $w.d1; pack $w.d1 -fill both -padx 10 -pady 5 \ -side left tixDirList $w.d2; pack $w.d2 -fill both -padx 10 -pady 5 \ -side left button $w.b -text "Close" -command "destroy $w" pack $w.b -side left -anchor c -expand yes $w.d1 subwidget hlist config -selectmode dragdrop $w.d2 subwidget hlist config -selectmode dragdrop } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w "exit" } Tix8.4.3/demos/samples/EFileDlg.tcl0000644000122200012240000000606207404573433017300 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: EFileDlg.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixExFileSelectDialog widget -- # This is a neat file selection dialog that will make your apps look # real good! # proc RunSample {w} { # Create an entry for the user to input a filename. If he can't # bother to type in the name, he can press the "Browse ..." button # and call up the file dialog # frame $w.top -border 1 -relief raised tixLabelEntry $w.top.ent -label "Select A File:" -labelside top \ -options { entry.width 25 entry.textVariable demo_efdlg_filename label.anchor w } bind [$w.top.ent subwidget entry] "efdlg:okcmd $w" uplevel #0 set demo_efdlg_filename {} button $w.top.btn -text "Browse ..." -command "efdlg:browse" pack $w.top.ent -side left -expand yes -fill x -anchor s -padx 4 -pady 4 pack $w.top.btn -side left -anchor s -padx 4 -pady 4 # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "efdlg:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # Pop up a file selection dialog # proc efdlg:browse {} { # [Hint] # The best way to use an ExFileSelectDialog is not to create one yourself # but to call the command "tix filedialog". This command creates one file # dialog box that is shared by different parts of the application. # This way, your application can save resources because it doesn't # need to create a lot of file dialog boxes even if it needs to input # file names at a lot of different occasions. # set dialog [tix filedialog tixExFileSelectDialog] $dialog config -command efdlg:select_file $dialog subwidget fsbox config -filetypes { {{*} {* -- All files}} {{*.txt} {*.txt -- Text files}} {{*.c} {*.c -- C source files}} } wm transient $dialog "" $dialog popup } proc efdlg:select_file {file} { global demo_efdlg_filename set demo_efdlg_filename $file } proc efdlg:okcmd {w} { global demo_efdlg_filename if {$demo_efdlg_filename != {}} { tixDemo:Status "You have selected the file $demo_efdlg_filename" } else { tixDemo:Status "You haven't selected any file" } destroy $w } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/LabFrame.tcl0000644000122200012240000000534307404573433017337 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: LabFrame.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixLabelFrame widget -- a frame that # come with a label at its side. It looks nifty when you use the set the # -labelside option to "acrosstop". Note that a lot of Tix widgets, such # as tixComboBox or tixControl, have the -labelside and -label options. So # you can use these options to achieve the same effect as in this file # proc RunSample {w} { # Create the radiobuttons at the top of the dialog box, put them # inside two tixLabelFrames: # frame $w.top -border 1 -relief raised tixLabelFrame $w.top.a -label Font: -labelside acrosstop -options { label.padX 5 } tixLabelFrame $w.top.b -label Size: -labelside acrosstop -options { label.padX 5 } pack $w.top.a $w.top.b -side left -expand yes -fill both # Create the radiobuttons inside the left frame. # # [Hint] You *must* create the new widgets inside the "frame" # subwidget, *not* as immediate children of $w.top.a! # set f [$w.top.a subwidget frame] foreach color {Red Green Blue Yellow Orange Purple} { set lower [string tolower $color] radiobutton $f.$lower -text $color -variable demo_color \ -relief flat -value $lower -bd 2 -pady 0 -width 7 -anchor w pack $f.$lower -side top -pady 0 -anchor w -padx 6 } # Create the radiobuttons inside the right frame. # set f [$w.top.b subwidget frame] foreach point {8 10 12 14 18 24} { set lower [string tolower $point] radiobutton $f.$lower -text $point -variable demo_point \ -relief flat -value $lower -bd 2 -pady 0 -width 4 -anchor w pack $f.$lower -side top -pady 0 -anchor w -padx 8 } # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "labf:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } proc labf:okcmd {w} { destroy $w } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/NoteBook.tcl0000644000122200012240000000703107404573433017402 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: NoteBook.tcl,v 1.4 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixNoteBook widget, which allows # you to lay out your interface using a "notebook" metaphore # proc RunSample {w} { # We use these options to set the sizes of the subwidgets inside the # notebook, so that they are well-aligned on the screen. # set name [tixOptionName $w] option add *$name*TixControl*entry.width 10 option add *$name*TixControl*label.width 18 option add *$name*TixControl*label.anchor e # Create the notebook widget and set its backpagecolor to gray. # Note that the -backpagecolor option belongs to the "nbframe" # subwidget. tixNoteBook $w.nb -ipadx 6 -ipady 6 # $w config -bg gray # $w.nb subwidget nbframe config -backpagecolor gray # Create the two tabs on the notebook. The -underline option # puts a underline on the first character of the labels of the tabs. # Keyboard accelerators will be defined automatically according # to the underlined character. # $w.nb add hard_disk -label "Hard Disk" -underline 0 $w.nb add network -label "Network" -underline 0 pack $w.nb -expand yes -fill both -padx 5 -pady 5 -side top #---------------------------------------- # Create the first page #---------------------------------------- set f [$w.nb subwidget hard_disk] # Create two frames: one for the common buttons, one for the # other widgets # frame $f.f frame $f.common pack $f.f -side left -padx 2 -pady 2 -fill both -expand yes pack $f.common -side right -padx 2 -pady 2 -fill y # Create the controls that only belong to this page # tixControl $f.f.a -value 12 -label "Access Time: " tixControl $f.f.w -value 400 -label "Write Throughput: " tixControl $f.f.r -value 400 -label "Read Throughput: " tixControl $f.f.c -value 1021 -label "Capacity: " pack $f.f.a $f.f.w $f.f.r $f.f.c -side top -padx 20 -pady 2 # Create the common buttons # CreateCommonButtons $w $f.common #---------------------------------------- # Create the second page #---------------------------------------- set f [$w.nb subwidget network] frame $f.f frame $f.common pack $f.f -side left -padx 2 -pady 2 -fill both -expand yes pack $f.common -side right -padx 2 -pady 2 -fill y tixControl $f.f.a -value 12 -label "Access Time: " tixControl $f.f.w -value 400 -label "Write Throughput: " tixControl $f.f.r -value 400 -label "Read Throughput: " tixControl $f.f.c -value 1021 -label "Capacity: " tixControl $f.f.u -value 10 -label "Users: " pack $f.f.a $f.f.w $f.f.r $f.f.c $f.f.u -side top -padx 20 -pady 2 CreateCommonButtons $w $f.common } proc CreateCommonButtons {w f} { button $f.ok -text OK -width 6 -command "destroy $w" button $f.cancel -text Cancel -width 6 -command "destroy $w" pack $f.ok $f.cancel -side top -padx 2 -pady 2 } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w {if {"%W" == ".demo"} exit} } Tix8.4.3/demos/samples/EditGrid.tcl0000644000122200012240000001512207404573433017355 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: EditGrid.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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. # Demonstrates the use of editable entries in a Grid widget. # proc RunSample {w} { global editgrid wm title $w "Doe Inc. Performance" wm geometry $w 640x300 label $w.lab -justify left -text \ "The left column is calculated automatically. To calculate the right column, press the \"Calculate\" button" pack $w.lab -side top -anchor c -padx 3 -pady 3 # Create the buttons # set f [frame $w.f -relief flat] pack $f -side right -fill y set add [button $f.add -text "Add Row" -width 9 \ -command "EditGrid_addRow"] set edit [button $f.edit -text "Edit" -width 9 \ -command "EditGrid_edit"] set cal [button $f.cal -text "Calculate" -width 9 \ -command "EditGrid_calculate"] set close [button $f.close -text "Close" -width 9 \ -command "destroy $w"] pack $add -side top -padx 10 pack $edit -side top -padx 10 pack $cal -side top -padx 10 -pady 2 pack $close -side bottom -padx 10 # Create the grid and set options to make it editable. # tixScrolledGrid $w.g -bd 0 pack $w.g -expand yes -fill both -padx 3 -pady 3 set grid [$w.g subwidget grid] $grid config \ -formatcmd "EditGrid_format $grid" \ -editnotifycmd "EditGrid_editNotify" \ -editdonecmd "EditGrid_editDone" \ -selectunit cell \ -selectmode single # Insert some initial data # $grid set 0 1 -text "City #1" $grid set 0 2 -text "City #2" $grid set 0 3 -text "City #3" $grid set 0 5 -text "Combined" $grid set 2 0 -text "Population" $grid set 4 0 -text "Avg. Income" $grid set 2 1 -text 125 $grid set 2 2 -text 81 $grid set 2 3 -text 724 $grid set 4 1 -text 24432.12 $grid set 4 2 -text 18290.24 $grid set 4 3 -text 18906.34 # Global data used by other EditGrid_ procedures. # set editgrid(g) $grid set editgrid(top) 1 set editgrid(bot) 3 set editgrid(result) 5 EditGrid_calPop EditGrid_calIncome } # EditGrid_edit -- # # Prompts the user to edit a cell. # proc EditGrid_edit {} { global editgrid set grid $editgrid(g) set ent [$grid anchor get] if [string comp $ent ""] { $grid edit set [lindex $ent 0] [lindex $ent 1] } } # EditGrid_addRow -- # # Adds a new row to the table. # proc EditGrid_addRow {} { global editgrid set grid $editgrid(g) $grid edit apply $grid move row $editgrid(result) $editgrid(result) 1 incr editgrid(bot) set editgrid(result) [expr $editgrid(bot) + 2] $grid set 0 $editgrid(bot) -text "City #$editgrid(bot)" $grid set 2 $editgrid(bot) -text 0 $grid set 4 $editgrid(bot) -text 0.0 EditGrid_calPop EditGrid_calIncome } # EditGrid_calPop -- # # Calculates the total population # proc EditGrid_calPop {} { global editgrid set grid $editgrid(g) set pop 0 for {set i $editgrid(top)} {$i <= $editgrid(bot)} {incr i} { incr pop [$grid entrycget 2 $i -text] } $grid set 2 $editgrid(result) -text $pop } # EditGrid_calIncome -- # # Calculates the average income. # proc EditGrid_calIncome {} { global editgrid set grid $editgrid(g) set income 0 set total_pop 0 for {set i $editgrid(top)} {$i <= $editgrid(bot)} {incr i} { set pop [$grid entrycget 2 $i -text] set inc [$grid entrycget 4 $i -text] set income [expr $income + $pop.0 * $inc] incr total_pop $pop } $grid set 4 $editgrid(result) -text [expr $income/$total_pop] } # EditGrid_calculate -- # # Recalculates both columns. # proc EditGrid_calculate {} { global editgrid set grid $editgrid(g) $grid edit apply EditGrid_calIncome } # EditGrid_editNotify -- # # Returns true if an entry can be edited. # proc EditGrid_editNotify {x y} { global editgrid set grid $editgrid(g) if {$x == 2 || $x == 4} { if {$y >= $editgrid(top) && $y <= $editgrid(bot)} { set editgrid(oldValue) [$grid entrycget $x $y -text] return 1 } } return 0 } # EditGrid_editDone -- # # Gets called when the user is done editing an entry. # proc EditGrid_editDone {x y} { global editgrid set grid $editgrid(g) if {$x == 2} { set pop [$grid entrycget $x $y -text] if [catch { format %d $pop }] { $grid entryconfig $x $y -text $editgrid(oldValue) tk_dialog .editGridWarn "" \ "$pop is not an valid integer. Try again" \ warning 0 Ok } else { $grid entryconfig 4 $editgrid(result) -text "-" EditGrid_calPop } } else { set income [$grid entrycget $x $y -text] if [catch { format %f $income }] { $grid entryconfig $x $y -text $editgrid(oldValue) tk_dialog .editGridWarn "" \ "$income is not an valid floating number. Try again" \ warning 0 Ok } else { $grid entryconfig 4 $editgrid(result) -text "-" } } } # EditGrid_format -- # # This command is called whenever the background of the grid # needs to be reformatted. The x1, y1, x2, y2 sprcifies the four # corners of the area that needs to be reformatted. # proc EditGrid_format {w area x1 y1 x2 y2} { global editgrid set bg(s-margin) gray65 set bg(x-margin) gray65 set bg(y-margin) gray65 set bg(main) gray20 case $area { main { foreach col {2 4} { $w format border $col 1 $col $editgrid(bot) \ -relief flat -filled 1 -yon 1 -yoff 1\ -bd 0 -bg #b0b0f0 -selectbackground #a0b0ff $w format border $col 2 $col $editgrid(bot) \ -relief flat -filled 1 -yon 1 -yoff 1\ -bd 0 -bg #80b080 -selectbackground #80b0ff } $w format grid $x1 $y1 $x2 $y2 \ -relief raised -bd 1 -bordercolor $bg($area) -filled 0 -bg red\ -xon 1 -yon 1 -xoff 0 -yoff 0 -anchor se } y-margin { $w format border $x1 $y1 $x2 $y2 \ -fill 1 -relief raised -bd 1 -bg $bg($area) \ -selectbackground gray80 } default { $w format border $x1 $y1 $x2 $y2 \ -filled 1 \ -relief raised -bd 1 -bg $bg($area) \ -selectbackground gray80 } } # case $area { # {main y-margin} { # set y [expr $editgrid(bot) + 1] # $w format border 0 $y 100 $y -bg black -filled 1 -bd 0 # } # } } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/DirDlg.tcl0000644000122200012240000000470107404573433017030 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: DirDlg.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixDirSelectDialog widget: # it allows the user to select a directory. # proc RunSample {w} { # Create an entry for the user to input a directory. If he can't # bother to type in the name, he can press the "Browse ..." button # and call up the diretcory dialog # frame $w.top -border 1 -relief raised tixLabelEntry $w.top.ent -label "Select A Directory:" -labelside top \ -options { entry.width 25 entry.textVariable demo_ddlg_dirname label.anchor w } bind [$w.top.ent subwidget entry] "ddlg:okcmd $w" uplevel #0 set demo_ddlg_dirname {} button $w.top.btn -text "Browse ..." -command "ddlg:browse" pack $w.top.ent -side left -expand yes -fill x -anchor s -padx 4 -pady 4 pack $w.top.btn -side left -anchor s -padx 4 -pady 4 # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "ddlg:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # Pop up a directory selection dialog # proc ddlg:browse {} { set dialog .dirdlg_popup if ![winfo exists $dialog] { tixDirSelectDialog $dialog } $dialog config -command ddlg:select_dir $dialog popup } proc ddlg:select_dir {dir} { global demo_ddlg_dirname set demo_ddlg_dirname $dir } proc ddlg:okcmd {w} { global demo_ddlg_dirname if {$demo_ddlg_dirname != {}} { tixDemo:Status "You have selected the directory $demo_ddlg_dirname" } else { tixDemo:Status "You haven't selected any directory" } destroy $w } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/Tree.tcl0000644000122200012240000000513507404573433016564 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Tree.tcl,v 1.4 2001/12/09 05:31:07 idiscovery Exp $ # # 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 how to use the TixTree widget to display # hierachical data (A hypothetical DOS disk drive). # proc RunSample {w} { # We create the frame and the ScrolledHList widget # at the top of the dialog box # frame $w.top -relief raised -bd 1 # Create a TixTree widget to display the hypothetical DOS disk drive # # tixTree $w.top.a -options { separator "\\" } pack $w.top.a -expand yes -fill both -padx 10 -pady 10 -side left set tree $w.top.a set hlist [$w.top.a subwidget hlist] # STEP (1) Add the directories into the TixTree widget (using the # hlist subwidget) set directories { C: C:\\Dos C:\\Windows C:\\Windows\\System } foreach d $directories { set text [lindex [split $d \\] end] $hlist add $d -itemtype imagetext \ -text $text -image [tix getimage folder] } # STEP (2) Use the "autosetmode" method of TixTree to indicate # which entries can be opened or closed. The # "autosetmode" command will call the "setmode" method # to set the mode of each entry to the following: # # "open" : the entry has some children and the children are # currently visible # "close": the entry has some children and the children are # currently INvisible # "none": the entry does not have children. # # If you don't like the "autosetmode" method, you can always call # "setmode" yourself, but that takes more work. $tree autosetmode # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w {if {"%W" == ".demo"} exit} } Tix8.4.3/demos/samples/SText.tcl0000644000122200012240000000475607404573433016744 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SText.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixScrolledText widget. # proc RunSample {w} { # We create the frame and the ScrolledText widget # at the top of the dialog box # frame $w.top -relief raised -bd 1 # Create a Scrolled Text widget. # tixScrolledText $w.top.a pack $w.top.a -expand yes -fill both -padx 10 -pady 10 -side left # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes # Put the junk inside the text subwidget of the ScrolledText widget # $w.top.a subwidget text insert end { Mon, 19 Jun 1995 11:39:52 comp.lang.tcl Thread 34 of 220 Lines 353 A new way to put text and bitmaps together ioi@xpi.com Ioi K. Lam at Expert Interface Technologies Hi, I have implemented a new image type called "compound". It allows you to glue together a bunch of bitmaps, images and text strings together to form a bigger image. Then you can use this image with widgets that support the -image option. This way you can display very fancy stuffs in your GUI. For example, you can display a text string string together with a bitmap, at the same time, inside a TK button widget. A screenshot of compound images can be found at the bottom of this page: http://www.xpi.com/tix/screenshot.html You can also you is in other places such as putting fancy bitmap+text in menus, tabs of tixNoteBook widgets, etc. This feature will be included in the next release of Tix (4.0b1). Count on it to make jazzy interfaces!} } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/BtnBox.tcl0000644000122200012240000000371207404573433017060 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: BtnBox.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixButtonBox widget, which is a # group of TK buttons. You can use it to manage the buttons in a dialog box, # for example. # proc RunSample {w} { # Create the label on the top of the dialog box # label $w.top -padx 20 -pady 10 -border 1 -relief raised -anchor c -text \ "This dialog box is\n a demostration of the\n tixButtonBox widget" # Create the button box and add a few buttons in it. Set the # -width of all the buttons to the same value so that they # appear in the same size. # # Note that the -text, -underline, -command and -width options are all # standard options of the button widgets. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text OK -underline 0 -command "destroy $w" -width 5 $w.box add close -text Close -underline 0 -command "destroy $w" -width 5 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes # "after 0" is used so that the key bindings won't interfere with # tkTraverseMenu # bind [winfo toplevel $w] \ "after 0 tkButtonInvoke [$w.box subwidget ok]" bind [winfo toplevel $w] \ "after 0 tkButtonInvoke [$w.box subwidget close]" bind [winfo toplevel $w] \ "after 0 tkButtonInvoke [$w.box subwidget close]" focus [$w.box subwidget ok] } if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/ArrowBtn.tcl0000644000122200012240000001123507404573433017421 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: ArrowBtn.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 how to write a new Tix widget class. # # ArrowBtn.tcl -- # # Arrow Button: a sample Tix widget. # set arrow(n) [image create bitmap -data { #define up_width 15 #define up_height 15 static unsigned char up_bits[] = { 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x0f, 0xfc, 0x1f, 0xfe, 0x3f, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00}; }] set arrow(w) [image create bitmap -data { #define left_width 15 #define left_height 15 static unsigned char left_bits[] = { 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x70, 0x00, 0x78, 0x00, 0x7c, 0x00, 0xfe, 0x3f, 0xff, 0x3f, 0xfe, 0x3f, 0x7c, 0x00, 0x78, 0x00, 0x70, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00}; }] set arrow(s) [image create bitmap -data { #define down_width 15 #define down_height 15 static unsigned char down_bits[] = { 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xfe, 0x3f, 0xfc, 0x1f, 0xf8, 0x0f, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00}; }] set arrow(e) [image create bitmap -data { #define right_width 15 #define right_height 15 static unsigned char right_bits[] = { 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x1f, 0xfe, 0x3f, 0xfe, 0x7f, 0xfe, 0x3f, 0x00, 0x1f, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00}; }] tixWidgetClass tixArrowButton { -classname TixArrowButton -superclass tixPrimitive -method { flash invoke invert } -flag { -direction -state } -configspec { {-direction direction Direction e tixArrowButton:CheckDirection} {-state state State normal} } -alias { {-dir -direction} } } proc tixArrowButton:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec set data(count) 0 } proc tixArrowButton:ConstructWidget {w} { upvar #0 $w data global arrow tixChainMethod $w ConstructWidget set data(w:button) [button $w.button -image $arrow($data(-direction))] pack $data(w:button) -expand yes -fill both } proc tixArrowButton:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings bind $data(w:button) <1> "tixArrowButton:IncrCount $w" } proc tixArrowButton:IncrCount {w} { upvar #0 $w data incr data(count) } proc tixArrowButton:CheckDirection {dir} { if {[lsearch {n w s e} $dir] != -1} { return $dir } else { error "wrong direction value \"$dir\"" } } proc tixArrowButton:flash {w} { upvar #0 $w data $data(w:button) flash } proc tixArrowButton:invoke {w} { upvar #0 $w data $data(w:button) invoke } proc tixArrowButton:invert {w} { upvar #0 $w data set curDirection $data(-direction) case $curDirection { n { set newDirection s } s { set newDirection n } e { set newDirection w } w { set newDirection e } } $w config -direction $newDirection } proc tixArrowButton:config-direction {w value} { upvar #0 $w data global arrow $data(w:button) configure -image $arrow($value) } proc tixArrowButton:config-state {w value} { upvar #0 $w data global arrow $data(w:button) configure -state $value } #---------------------------------------------------------------------- # # Instantiate several widgets of the tixArrowButton class # #---------------------------------------------------------------------- proc RunSample {w} { set top [frame $w.top -border 1 -relief raised] tixArrowButton $top.a -dir w tixArrowButton $top.b -dir e pack $top.a $top.b -side left -expand yes -fill both -padx 50 -pady 10 tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w "exit" } Tix8.4.3/demos/samples/Xpm1.tcl0000644000122200012240000000657107404573433016517 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Xpm1.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 XPM images in the menu. # proc RunSample {w} { set hard_disk_pixmap {/* XPM */ static char * drivea_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 5 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #800080008000", /* pixels */ " ", " ", " ", " ", " ", " ", " ", " ", " ", " .......................... ", " .XXXXXXXXXXXXXXXXXXXXXXXo. ", " .XooooooooooooooooooooooO. ", " .Xooooooooooooooooo..oooO. ", " .Xooooooooooooooooo..oooO. ", " .XooooooooooooooooooooooO. ", " .Xoooooooo.......oooooooO. ", " .Xoo...................oO. ", " .Xoooooooo.......oooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .oOOOOOOOOOOOOOOOOOOOOOOO. ", " .......................... ", " ", " ", " ", " ", " ", " ", " ", " "}; } # We create the frame and the ScrolledText widget # at the top of the dialog box # frame $w.top -relief raised -bd 1 set m [frame $w.top.menu -relief raised -bd 2] set mb [menubutton $m.mb -text Options -menu $m.mb.m] set menu [menu $mb.m] pack $m -side top -fill x pack $mb -side left -fill y # Put the label there # set lab [label $w.top.label -text "Go to the \"Options\" menu" -anchor c] pack $lab -padx 40 -pady 40 -fill both -expand yes set image [image create pixmap -data $hard_disk_pixmap] $menu add command -image $image \ -command "$lab config -image $image" # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes wm geometry $w 300x300 } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind .demo exit } Tix8.4.3/demos/samples/SListBox.tcl0000644000122200012240000000546110761360567017400 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SListBox.tcl,v 1.4 2008/02/27 22:17:27 hobbs Exp $ # # 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 tixScrolledListBox widget. # proc RunSample {w} { # We create the frame and the two ScrolledListBox widgets # at the top of the dialog box # frame $w.top -relief raised -bd 1 # The first ScrolledListBox widget always shows both scrollbars # tixScrolledListBox $w.top.a -scrollbar both pack $w.top.a -expand yes -fill both -padx 10 -pady 10 -side left # The second ScrolledListBox widget shows the scrollbars only when # needed. # # [Hint] See how you can use the -options switch to set the options # for the subwidgets # tixScrolledListBox $w.top.b -scrollbar auto -options { listbox.font 8x13 } pack $w.top.b -expand yes -fill both -padx 10 -pady 10 -side left # Put the elements inside the two listboxes: notice that you need # to insert inside the "listbox" subwidget of the ScrolledListBox. # $w.top.a itself does NOT have an "insert" command. # $w.top.a subwidget listbox insert 0 \ Alabama Alaska Arizona Arkansas California \ Colorado Connecticut Delaware Florida Georgia Hawaii Idaho Illinois \ Indiana Iowa Kansas Kentucky Louisiana Maine Maryland \ Massachusetts Michigan Minnesota Mississippi Missouri \ Montana Nebraska Nevada "New Hampshire" "New Jersey" "New Mexico" \ "New York" "North Carolina" "North Dakota" \ Ohio Oklahoma Oregon Pennsylvania "Rhode Island" \ "South Carolina" "South Dakota" \ Tennessee Texas Utah Vermont Virginia Washington \ "West Virginia" Wisconsin Wyoming raise [$w.top.a subwidget listbox ] $w.top.b subwidget listbox insert 0 \ Alabama Alaska Arizona Arkansas California \ Colorado Connecticut Delaware Florida Georgia Hawaii Idaho Illinois \ Indiana Iowa Kansas Kentucky # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/samples/SHList2.tcl0000644000122200012240000001150507404573433017113 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SHList2.tcl,v 1.4 2001/12/09 05:31:07 idiscovery Exp $ # # 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 how to use multiple columns and multiple styles # in the tixHList widget # # In a tixHList widget, you can have one ore more columns. # proc RunSample {w} { # We create the frame and the ScrolledHList widget # at the top of the dialog box # frame $w.top -relief raised -bd 1 # Put a simple hierachy into the HList (two levels). Use colors and # separator widgets (frames) to make the list look fancy # tixScrolledHList $w.top.a -options { hlist.columns 3 hlist.header true } pack $w.top.a -expand yes -fill both -padx 10 -pady 10 -side left set hlist [$w.top.a subwidget 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 # # First some styles for the headers set style(header) [tixDisplayStyle text -refwindow $hlist \ -fg black -anchor c \ -padx 8 -pady 2\ -font [tix option get bold_font ]] $hlist header create 0 -itemtype text -text Name \ -style $style(header) $hlist header create 1 -itemtype text -text Position \ -style $style(header) # 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 # This is our little relational database # set boss {doe "John Doe" Director} set managers { {jeff "Jeff Waxman" Manager} {john "John Lee" Manager} {peter "Peter Kenson" Manager} } set 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} } set style(mgr_name) [tixDisplayStyle text -refwindow $hlist \ -font [tix option get bold_font ]] set style(mgr_posn) [tixDisplayStyle text -refwindow $hlist \ -padx 8] set style(empl_name) [tixDisplayStyle text -refwindow $hlist \ -font [tix option get bold_font ]] set style(empl_posn) [tixDisplayStyle text -refwindow $hlist \ -padx 8 ] # Let configure the appearance of the HList subwidget # $hlist config -separator "." -width 25 -drawbranch 0 -indent 10 $hlist column width 0 -char 20 # Create the boss # $hlist add . -itemtype text -text [lindex $boss 1] \ -style $style(mgr_name) $hlist item create . 1 -itemtype text -text [lindex $boss 2] \ -style $style(mgr_posn) # Create the managers # set index 0 foreach line $managers { set row [$hlist add .[lindex $line 0] -itemtype text \ -text [lindex $line 1] -style $style(mgr_name)] $hlist item create $row 1 -itemtype text -text [lindex $line 2] \ -style $style(mgr_posn) incr index } foreach line $employees { # "." is the separator character we chose above # set entrypath .[lindex $line 1].[lindex $line 0] # ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ # parent entryPath / child's name set row [$hlist add $entrypath -text [lindex $line 2] \ -style $style(empl_name)] $hlist item create $row 1 -itemtype text -text [lindex $line 3] \ -style $style(empl_posn) # [Hint] Make sure the .[lindex $line 1].[lindex $line 0] 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 # "addchild" widget command instead: # # $hlist addchild [lindex $line 1] -text [lindex $line 2] # ^^^^^^^^^^^^^^^^ # parent entryPath } # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "destroy $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind .demo exit } Tix8.4.3/demos/samples/AllSampl.tcl0000644000122200012240000001130007404573433017361 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: AllSampl.tcl,v 1.4 2001/12/09 05:31:07 idiscovery Exp $ # # AllSampl.tcl -- # # This file is a directory of all the sample programs in the # demos/samples subdirectory. # # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # # The following data structures contains information about the requirements # of the sample programs, as well as the relationship/grouping of the sample # programs. # # Each element in an info list has four parts: type, name, group/filename, and # condition. A group or a file is loaded only if the conditions are met. # # types: "d" directory "f" file # conditions: # "i": an image type must exist # "c": a command must exist # "v": a variable must exist set root { {d "File Selectors" file } {d "Hierachical ListBox" hlist } {d "Tabular ListBox" tlist {c tixTList}} {d "Grid Widget" grid {c tixGrid}} {d "Manager Widgets" manager } {d "Scrolled Widgets" scroll } {d "Miscellaneous Widgets" misc } {d "Image Types" image } } set image { {d "Compound Image" cmpimg } {d "XPM Image" xpm {i pixmap}} } set cmpimg { {f "In Buttons" CmpImg.tcl } {f "In NoteBook" CmpImg2.tcl } {f "Notebook Color Tabs" CmpImg4.tcl } {f "Icons" CmpImg3.tcl } } set xpm { {f "In Button" Xpm.tcl {i pixmap}} {f "In Menu" Xpm1.tcl {i pixmap}} } set file { {f DirList DirList.tcl } {f DirTree DirTree.tcl } {f DirSelectDialog DirDlg.tcl } {f ExFileSelectDialog EFileDlg.tcl } {f FileSelectDialog FileDlg.tcl } {f FileEntry FileEnt.tcl } } set hlist { {f HList HList1.tcl } {f CheckList ChkList.tcl {c tixCheckList}} {f "ScrolledHList (1)" SHList.tcl } {f "ScrolledHList (2)" SHList2.tcl } {f Tree Tree.tcl } {f "Tree (Dynamic)" DynTree.tcl {v win}} } set tlist { {f "ScrolledTList (1)" STList1.tcl {c tixTList}} {f "ScrolledTList (2)" STList2.tcl {c tixTList}} } global tcl_platform # This demo hangs windows if {$tcl_platform(platform) != "windows"} { lappend tlist {f "TList File Viewer" STList3.tcl {c tixTList}} } set grid { {f "Simple Grid" SGrid0.tcl {c tixGrid}} {f "ScrolledGrid" SGrid1.tcl {c tixGrid}} {f "Editable Grid" EditGrid.tcl {c tixGrid}} } set scroll { {f ScrolledListBox SListBox.tcl } {f ScrolledText SText.tcl } {f ScrolledWindow SWindow.tcl } {f "Canvas Object View" CObjView.tcl {c tixCObjView}} } set manager { {f ListNoteBook ListNBK.tcl } {f NoteBook NoteBook.tcl } {f PanedWindow PanedWin.tcl } } set misc { {f Balloon Balloon.tcl } {f ButtonBox BtnBox.tcl } {f ComboBox ComboBox.tcl } {f Control Control.tcl } {f LabelEntry LabEntry.tcl } {f LabelFrame LabFrame.tcl } {f Meter Meter.tcl {c tixMeter}} {f OptionMenu OptMenu.tcl } {f PopupMenu PopMenu.tcl } {f Select Select.tcl } {f StdButtonBox StdBBox.tcl } } # ForAllSamples -- # # Iterates over all the samples that can be run on this platform. # # Arguments: # name: For outside callers, it must be "root" # token: An arbtrary string passed in by the caller. # command: Command prefix to be executed for each node # in the samples hierarchy. It should return the # token of the node that it has just created, if any. # proc ForAllSamples {name token command} { global $name win if {[tix platform] == "windows"} { set win 1 } foreach line [set $name] { set type [lindex $line 0] set text [lindex $line 1] set dest [lindex $line 2] set cond [lindex $line 3] case [lindex $cond 0] { c { set cmd [lindex $cond 1] if {[info command $cmd] != $cmd} { if ![auto_load $cmd] { continue } } } i { if {[lsearch [image types] [lindex $cond 1]] == -1} { continue } } v { set doit 1 foreach var [lrange $cond 1 end] { if [uplevel #0 info exists [list $var]] { set doit 0 break } } if !$doit { continue } } } if {$type == "d"} { set tok [eval $command [list $token] $type [list $text] \ [list $dest]] ForAllSamples $dest $tok $command eval $command [list $tok] done xx xx } else { set tok [eval $command [list $token] $type [list $text] \ [list $dest]] } } } proc DoAll {hlist {path ""}} { catch { set theSample [$hlist info data $path] if {$theSample != {}} { set title [lindex $theSample 0] set prog [lindex $theSample 1] RunProg $title $prog update } } foreach p [$hlist info children $path] { DoAll $hlist $p } } Tix8.4.3/demos/samples/FileDlg.tcl0000644000122200012240000000570507404573433017176 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: FileDlg.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $ # # 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 tixFileSelectDialog widget -- # This is a neat file selection dialog that looks like the Motif # file-selection dialog widget. I know that Motif sucks, but # tixFileSelectDialog looks neat nevertheless. # proc RunSample {w} { # Create an entry for the user to input a filename. If he can't # bother to type in the name, he can press the "Browse ..." button # and call up the file dialog # frame $w.top -border 1 -relief raised tixLabelEntry $w.top.ent -label "Select A File:" -labelside top \ -options { entry.width 25 entry.textVariable demo_fdlg_filename label.anchor w } bind [$w.top.ent subwidget entry] "fdlg:okcmd $w" uplevel #0 set demo_fdlg_filename {} button $w.top.btn -text "Browse ..." -command "fdlg:browse" pack $w.top.ent -side left -expand yes -fill x -anchor s -padx 4 -pady 4 pack $w.top.btn -side left -anchor s -padx 4 -pady 4 # Use a ButtonBox to hold the buttons. # tixButtonBox $w.box -orientation horizontal $w.box add ok -text Ok -underline 0 -command "fdlg:okcmd $w" \ -width 6 $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \ -width 6 pack $w.box -side bottom -fill x pack $w.top -side top -fill both -expand yes } # Pop up a file selection dialog # proc fdlg:browse {} { # [Hint] # The best way to use an FileSelectDialog is not to create one yourself # but to call the command "tix filedialog". This command creates one file # dialog box that is shared by different parts of the application. # This way, your application can save resources because it doesn't # need to create a lot of file dialog boxes even if it needs to input # file names at a lot of different occasions. # set dialog [tix filedialog tixFileSelectDialog] $dialog config -command fdlg:select_file $dialog popup } proc fdlg:select_file {file} { global demo_fdlg_filename set demo_fdlg_filename $file } proc fdlg:okcmd {w} { global demo_fdlg_filename if {$demo_fdlg_filename != {}} { tixDemo:Status "You have selected the file $demo_fdlg_filename" } else { tixDemo:Status "You haven't selected any file" } destroy $w } # This "if" statement makes it possible to run this script file inside or # outside of the main demo program "widget". # if {![info exists tix_demo_running]} { wm withdraw . set w .demo toplevel $w; wm transient $w "" RunSample $w bind $w exit } Tix8.4.3/demos/MkDirLis.tcl0000644000122200012240000000374210031436050015660 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: MkDirLis.tcl,v 1.4 2004/03/28 02:44:56 hobbs Exp $ # # MkDirLis.tcl -- # # This file implements the "Directory List" page in the widget demo # # This file has not been properly documented. It is NOT intended # to be used as an introductory demo program about Tix # programming. For such demos, please see the files in the # demos/samples directory or go to the "Samples" page in the # "widget demo" # # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc MkDirList {nb page} { set w [$nb subwidget $page] set name [tixOptionName $w] option add *$name*TixLabelFrame*label.padX 4 tixLabelFrame $w.dir -label "tixDirList" tixLabelFrame $w.fsbox -label "tixExFileSelectBox" MkDirListWidget [$w.dir subwidget frame] MkExFileWidget [$w.fsbox subwidget frame] tixForm $w.dir -top 0 -left 0 -right %40 -bottom -1 tixForm $w.fsbox -top 0 -left %40 -right -1 -bottom -1 } proc MkDirListWidget {w} { set name [tixOptionName $w] message $w.msg \ -relief flat -width 240 -anchor n\ -text "The TixDirList widget gives a graphical representation of\ the file system directory and makes it easy for the user\ to choose and access directories." tixDirList $w.dirlist -options { hlist.padY 1 hlist.width 25 hlist.height 16 } pack $w.msg -side top -expand yes -fill both -padx 3 -pady 3 pack $w.dirlist -side top -padx 3 -pady 3 } proc MkExFileWidget {w} { set name [tixOptionName $w] message $w.msg \ -relief flat -width 240 -anchor n\ -text {The TixExFileSelectBox widget is more user friendly \ than the Motif style FileSelectBox.} tixExFileSelectBox $w.exfsbox -bd 2 -relief raised pack $w.msg -side top -expand yes -fill both -padx 3 -pady 3 pack $w.exfsbox -side top -padx 3 -pady 3 } Tix8.4.3/demos/widget0000644000122200012240000003177710767573653014750 0ustar jeffhjeffh00000000000000#!/bin/sh # the next line restarts using wish \ exec wish "$0" "$@" # widget -- # # This script demonstrates the various widgets provided by Tix, # along with many of the features of the Tix library. This file # only contains code to generate the main window for the # application, which invokes individual demonstrations. The # code for the actual demonstrations is contained in separate # ".tcl" files in the samples/ subdirectory, which are sourced # by this script as needed. # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. # Copyright (c) 1998-2000 Scriptics Corporation. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # $Id: widget,v 1.7 2008/03/17 22:58:51 hobbs Exp $ package require Tix tix initstyle eval destroy [winfo child .] wm title . "Tix Widget Tour" set tix_demo_running 1 set demo_dir [file dirname [info script]] tix addbitmapdir [file join $demo_dir bitmaps] # createMainWindow -- # # Creates the main window, consisting of a menu bar and a text # widget that explains how to use the program, plus lists all of # the demos as hypertext items. proc createMainWindow {} { global tcl_platform old_cursor switch $tcl_platform(platform) { "windows" { set font {Arial 12} } "unix" { set font {Helvetica 12} } default { set font {Helvetica 12} } } menu .menuBar -tearoff 0 .menuBar add cascade -menu .menuBar.file -label "File" -underline 0 menu .menuBar.file -tearoff 0 # On the Mac use the specia .apple menu for the about item if {$tcl_platform(platform) eq "macintosh"} { .menuBar add cascade -menu .menuBar.apple menu .menuBar.apple -tearoff 0 .menuBar.apple add command -label "About ..." -command "aboutBox" } else { .menuBar.file add command -label "About ..." -command "aboutBox" .menuBar.file add sep } .menuBar.file add command -label "Exit" -command "exit" . configure -menu .menuBar frame .statusBar label .statusBar.lab -text " " -relief sunken -bd 1 \ -font -*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -anchor w label .statusBar.foo -width 8 -relief sunken -bd 1 \ -font -*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -anchor w pack .statusBar.lab -side left -padx 2 -expand yes -fill both pack .statusBar.foo -side left -padx 2 pack .statusBar -side bottom -fill x -pady 2 frame .textFrame scrollbar .s -orient vertical -command {.t yview} -highlightthickness 0 \ -takefocus 1 pack .s -in .textFrame -side right -fill y text .t -yscrollcommand {.s set} -wrap word -width 55 -height 30 \ -font $font \ -setgrid 1 -highlightthickness 0 -padx 4 -pady 2 -takefocus 0 pack .t -in .textFrame -expand y -fill both -padx 1 pack .textFrame -expand yes -fill both if {$tcl_platform(platform) eq "windows"} { # # Make the scrollbar look win32 # .textFrame config -bd 2 -relief sunken .t config -bd 0 pack .t -padx 0 } set old_cursor [.t cget -cursor] # Create a bunch of tags to use in the text widget, such as those for # section titles and demo descriptions. Also define the bindings for # tags. .t tag configure title -font {Helvetica 18 bold} -justify center .t tag configure header -font {Helvetica 14 bold} # We put some "space" characters to the left and right of each # demo description so that the descriptions are highlighted only # when the mouse cursor is right over them (but not when the # cursor is to their left or right) # .t tag configure demospace -lmargin1 1c -lmargin2 1c -spacing1 1 .t tag configure codeicon -lmargin1 1c -lmargin2 1c if {[winfo depth .] == 1} { .t tag configure demo -lmargin1 1c -lmargin2 1c \ -underline 1 .t tag configure visited -lmargin1 1c -lmargin2 1c \ -underline 1 .t tag configure hot -background black -foreground white } else { .t tag configure demo -lmargin1 1c -lmargin2 1c \ -foreground blue -underline 1 .t tag configure visited -lmargin1 1c -lmargin2 1c \ -foreground #303080 -underline 1 .t tag configure hot -foreground red -underline 1 } .t tag bind demo { invoke [.t index {@%x,%y}] } .t tag bind codeicon { showCode [.t index [list {@%x,%y} +2 chars]] } global lastLine set lastLine "" .t tag bind demo { set lastLine [.t index {@%x,%y linestart}] .t tag add hot [list $lastLine +3 chars] \ [list $lastLine lineend -1 chars] .t config -cursor hand2 showStatus run [.t index {@%x,%y}] } .t tag bind demo { .t tag remove hot 1.0 end .t config -cursor $old_cursor .statusBar.lab config -text "" } .t tag bind demo { set newLine [.t index {@%x,%y linestart}] if {[string compare $newLine $lastLine] != 0} { .t tag remove hot 1.0 end set lastLine $newLine set tags [.t tag names {@%x,%y}] set i [lsearch -glob $tags demo-*] if {$i >= 0} { .t tag add hot [list $lastLine +3 chars] \ [list $lastLine lineend -1 chars] } } showStatus run [.t index {@%x,%y}] } .t tag bind codeicon { .t config -cursor hand2 } .t tag bind codeicon { .t config -cursor $old_cursor } .t tag bind codeicon { set tags [.t tag names [list {@%x,%y} +2 chars]] set i [lsearch -glob $tags demo-*] if {$i >= 0} { showStatus code [.t index [list {@%x,%y} +2 chars]] } else { showStatus code "" } } # Create the text for the text widget. .t insert end "Tix Widget Tour\n" title addNewLine .t addText .t { This program demonstrates the features of the Tix library. Click on one of the highlighted lines below to run the sample program and click on the } addSpace .t .t image create end -image [tix getimage code] addSpace .t addText .t { icon to view its source code. } addNewLine .t addNewLine .t addHeader .t "Hierachical ListBox" addDemo .t HList1.tcl "Simple HList" addDemo .t ChkList.tcl "CheckList" addDemo .t SHList.tcl "ScrolledHList (1)" addDemo .t SHList2.tcl "ScrolledHList (2)" addDemo .t Tree.tcl "Simple Tree" # TODO # addDemo .t "Dynamic Tree" DynTree.tcl addHeader .t "Tabular ListBox" addDemo .t STList1.tcl "ScrolledTList (1)" addDemo .t STList2.tcl "ScrolledTList (2)" addDemo .t STList3.tcl "TList File Viewer" addHeader .t "Grid Widget" addDemo .t SGrid0.tcl "Simple Grid" addDemo .t SGrid1.tcl "ScrolledGrid" addDemo .t EditGrid.tcl "Editable Grid" addHeader .t "Manager Widgets" addDemo .t ListNBK.tcl ListNoteBook addDemo .t NoteBook.tcl NoteBook addDemo .t PanedWin.tcl PanedWindow addHeader .t "Scrolled Widgets" addDemo .t SListBox.tcl ScrolledListBox addDemo .t SText.tcl ScrolledText addDemo .t SWindow.tcl ScrolledWindow addDemo .t CObjView.tcl "Canvas Object View" addHeader .t "Miscellaneous Widgets" addDemo .t Balloon.tcl Balloon addDemo .t BtnBox.tcl ButtonBox addDemo .t ComboBox.tcl ComboBox addDemo .t Control.tcl Control addDemo .t LabEntry.tcl LabelEntry addDemo .t LabFrame.tcl LabelFrame addDemo .t Meter.tcl Meter addDemo .t OptMenu.tcl OptionMenu addDemo .t PopMenu.tcl PopupMenu addDemo .t Select.tcl Select addDemo .t StdBBox.tcl StdButtonBox addHeader .t "Image Types" addDemo .t CmpImg.tcl "Compound image in buttons" addDemo .t CmpImg3.tcl "Compound image in icons" #addDemo .t CmpImg2.tcl "Compound image in notebook" #addDemo .t CmpImg4.tcl \ # "Create color tabs in notebook using compound image" addDemo .t Xpm.tcl "XPM pixmap image in buttons" addDemo .t Xpm1.tcl "XPM pixmap image in menu" .t configure -state disabled focus .s # # Because .t is disabled and not focused, we have to do the # following hacks to make the scrolling work well # bind .s { .t yview scroll [expr {- (%D / 120) * 2}] units } bind .s { .t yview scroll -1 units } bind .s { .t yview scroll 1 units } bind .s { .t yview scroll -1 page } bind .s { .t yview scroll 1 page } bind .s { .t yview 1.0 } bind .s { .t yview end } } # invoke -- # This procedure is called when the user clicks on a demo description. # It is responsible for invoking the demonstration. # # Arguments: # index - The index of the character that the user clicked on. proc invoke {index} { global demo_dir # Find out which sample to run set tags [.t tag names $index] set i [lsearch -glob $tags demo-*] if {$i < 0} { return } set demo [string range [lindex $tags $i] 5 end] set title [string trim [.t get [list $index linestart +3 chars] \ [list $index lineend]]] # Get the name of this sample set w .[lindex [split $demo .] 0] set w [string tolower $w] if [winfo exists $w] { wm deiconify $w raise $w return } # Load the sample if it's not running set cursor [.t cget -cursor] .t configure -cursor watch update uplevel #0 [list source [file join $demo_dir samples $demo]] toplevel $w wm title $w $title RunSample $w update .t configure -cursor $cursor .t tag add visited "$index linestart +1 chars" "$index lineend -1 chars" } # showStatus -- # # Show the name of the demo program in the status bar. This procedure # is called when the user moves the cursor over a demo description. # proc showStatus {which index} { set tags [.t tag names $index] set i [lsearch -glob $tags demo-*] set cursor [.t cget -cursor] if {$i < 0} { .statusBar.lab config -text " " set newcursor xterm } else { set demo [string range [lindex $tags $i] 5 end] if {"$which" == "run"} { set text "Run the \"$demo\" sample program" } else { set text "Show code of the \"$demo\" sample program" } .statusBar.lab config -text $text set newcursor hand2 } if [string compare $cursor $newcursor] { .t config -cursor $newcursor } } # showCode -- # This procedure is called when the user clicks on the "code" icon. # It is responsible for displaying the code of the selected sample program. # # Arguments: # index - The index of the character that the user clicked on. proc showCode {index} { global demo_dir set tags [.t tag names $index] set i [lsearch -glob $tags demo-*] if {$i < 0} { return } set cursor [.t cget -cursor] .t configure -cursor watch update set demo [string range [lindex $tags $i] 5 end] # Create the .code window if {![winfo exists .code]} { toplevel .code frame .code.f tixScrolledText .code.st button .code.close -text Close -width 6 -command "wm withdraw .code" pack .code.f -side bottom -fill x pack .code.st -side top -fill both -expand yes pack .code.close -in .code.f -side right -padx 10 -pady 10 } set text [.code.st subwidget text] $text delete 1.0 end set fd [open [file join $demo_dir samples $demo]] set data [read $fd] close $fd $text insert end $data wm deiconify .code wm title .code [file nativename [file join $demo_dir samples $demo]] update .t configure -cursor $cursor } proc addText {t text} { regsub -all \n+ $text " " text regsub -all {[ ]+} $text " " text $t insert end [string trim $text] } proc addHeader {t text} { addNewLine $t $t insert end [string trim $text] header addNewLine $t } proc addNewLine {t} { $t insert end "\n" {demospace} } proc addSpace {t} { $t insert end " " {demospace} } proc addDemo {t name text} { $t insert end " " demospace $t image create end -image [tix getimage code] $t tag add codeicon [list end -2 chars] [list end -1 chars] $t insert end " " demospace $t insert end $text [list demo demo-$name] $t insert end " " demospace addNewLine $t } # aboutBox -- # # Pops up a message box with an "about" message # proc aboutBox {} { tk_messageBox -icon info -type ok -title "About Widget Tour" -message \ "Tix widget tour\n\nCopyright (c) 2000-2001 Tix Project Group." } # # Start the program # createMainWindow Tix8.4.3/demos/bitmaps/0000775000122200012240000000000010767576212015156 5ustar jeffhjeffh00000000000000Tix8.4.3/demos/bitmaps/optmenu.xpm0000664000122200012240000000436107110476661017372 0ustar jeffhjeffh00000000000000/* XPM */ static char * optmenu_xpm[] = { "50 40 5 1", " s None c None", ". c white", "X c gray80", "o c gray50", "O c black", " ", " ", " .............................. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXOXOXXOXXOXXXXOOXXXXXXXXXXo ", " .XXXOXOXXOXOXXXOXXOXXXXXXXXXXo ", " .XXXXOXXOXXOXXXOXXXOXXXXXXXXXo ", " .XXXXOXXXOXXOOXXOXOXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo.............o ", " .............................o o ", " ..XXXOXXXXXOXXXXXXXXOXXXXXXXOo o ", " ..XXOXOXOXXOXOXXXOXXOXXXXXXXOo ...... o ", " ..XXXOXXXOXXOXXXOXXXOXXXXXXXOo . o o ", " ..XXOXXXOXXXOXOXXOXXOXXXXXXXOo . o o ", " ..XXXXXXXXXXXXXXXXXXXXXXXXXXOo .ooooo o ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOo o ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo o ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXooooooooooooooo ", " .XXXXOXXXXXOXXXXXXXXXXXXXXXXXo ", " .XXXOXXXXXXXXXOXXXXXXXXXXXXXXo ", " .XXXXOXXOXXOXOXOXXXXXXXXXXXXXo ", " .XXXXXOXXOXOXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXOXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXOXOXXXXXXXOXOXXXXXOXXXXXXo ", " .XXXXXOXOXOXXOXXXXXOXXOXXXXXXo ", " .XXXXOXXOXOXOXXXOXOXOXXOXXXXXo ", " .XXXOXXXXOXXOXXXOXXOXXXXOXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " oooooooooooooooooooooooooooooo ", " ", " ", " ", " "}; Tix8.4.3/demos/bitmaps/underlin.xbm0000664000122200012240000000045307110476661017503 0ustar jeffhjeffh00000000000000#define underline_width 16 #define underline_height 16 static unsigned char underline_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x38, 0x1c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x70, 0x0e, 0xf0, 0x0f, 0xe0, 0x07, 0x00, 0x00, 0xf8, 0x1f}; Tix8.4.3/demos/bitmaps/network.xbm0000664000122200012240000000156407110476661017360 0ustar jeffhjeffh00000000000000#define netw_width 32 #define netw_height 32 static unsigned char netw_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x8a, 0x51, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x4a, 0x50, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x02, 0x40, 0xfe, 0x7f, 0x52, 0x55, 0x02, 0x40, 0xaa, 0x6a, 0xfa, 0x5f, 0xfe, 0x7f, 0x0a, 0x50, 0xfe, 0x7f, 0x0a, 0x52, 0x80, 0x00, 0x0a, 0x52, 0x80, 0x00, 0x8a, 0x51, 0x80, 0x00, 0x0a, 0x50, 0x80, 0x00, 0x4a, 0x50, 0x80, 0x00, 0x0a, 0x50, 0xe0, 0x03, 0x0a, 0x50, 0x20, 0x02, 0xfa, 0xdf, 0x3f, 0x03, 0x02, 0x40, 0xa0, 0x02, 0x52, 0x55, 0xe0, 0x03, 0xaa, 0x6a, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Tix8.4.3/demos/bitmaps/network.xpm0000664000122200012240000000255207110476661017374 0ustar jeffhjeffh00000000000000/* XPM */ static char * netw_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 7 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #404040", "+ c blue", "@ c red", /* pixels */ " ", " .............. ", " .XXXXXXXXXXXX. ", " .XooooooooooO. ", " .Xo.......XoO. ", " .Xo.++++o+XoO. ", " .Xo.++++o+XoO. ", " .Xo.++oo++XoO. ", " .Xo.++++++XoO. ", " .Xo.+o++++XoO. ", " .Xo.++++++XoO. ", " .Xo.XXXXXXXoO. ", " .XooooooooooO. ", " .Xo@ooo....oO. ", " .............. .XooooooooooO. ", " .XXXXXXXXXXXX. .XooooooooooO. ", " .XooooooooooO. .OOOOOOOOOOOO. ", " .Xo.......XoO. .............. ", " .Xo.++++o+XoO. @ ", " .Xo.++++o+XoO. @ ", " .Xo.++oo++XoO. @ ", " .Xo.++++++XoO. @ ", " .Xo.+o++++XoO. @ ", " .Xo.++++++XoO. ..... ", " .Xo.XXXXXXXoO. .XXX. ", " .XooooooooooO.@@@@@@.X O. ", " .Xo@ooo....oO. .OOO. ", " .XooooooooooO. ..... ", " .XooooooooooO. ", " .OOOOOOOOOOOO. ", " .............. ", " "}; Tix8.4.3/demos/bitmaps/rightj.xbm0000664000122200012240000000044207110476661017150 0ustar jeffhjeffh00000000000000#define rightj_width 16 #define rightj_height 16 static unsigned char rightj_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xdb, 0x00, 0x00, 0x70, 0xdb, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0xd8, 0xde, 0x00, 0x00, 0xc0, 0xdd, 0x00, 0x00, 0xa0, 0xef, 0x00, 0x00, 0xd8, 0xde}; Tix8.4.3/demos/bitmaps/centerj.xbm0000664000122200012240000000044507110476660017315 0ustar jeffhjeffh00000000000000#define centerj_width 16 #define centerj_height 16 static unsigned char centerj_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3e, 0x00, 0x00, 0xc0, 0x0d, 0x00, 0x00, 0x58, 0x77, 0x00, 0x00, 0xb0, 0x3b, 0x00, 0x00, 0xdc, 0xf7, 0x00, 0x00, 0xf0, 0x3e, 0x00, 0x00, 0xd8, 0x7e}; Tix8.4.3/demos/bitmaps/code.xpm0000664000122200012240000000115407223175643016613 0ustar jeffhjeffh00000000000000/* XPM */ static char * code_xpm[] = { "30 15 4 1", " c gray94", ". c #c0c0ff", "X c #606060", "o c black", " ", " ............................X", " ............................X", " ...ooo............o.........X", " ..o...o...........o.........X", " ..o...............o.........X", " ..o......ooo...oooo..ooo....X", " ..o.....o...o.o...o.o...o...X", " ..o.....o...o.o...o.ooooo...X", " ..o.....o...o.o...o.o.......X", " ..o...o.o...o.o...o.o...o...X", " ...ooo...ooo...oooo..ooo....X", " ............................X", " ............................X", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}; Tix8.4.3/demos/bitmaps/leftj.xbm0000664000122200012240000000043707110476661016771 0ustar jeffhjeffh00000000000000#define leftj_width 16 #define leftj_height 16 static unsigned char leftj_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x6d, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0xec, 0x0e, 0x00, 0x00, 0xfc, 0x7e, 0x00, 0x00, 0xdc, 0x03, 0x00, 0x00, 0x6c, 0x3b, 0x00, 0x00, 0x6c, 0x1f}; Tix8.4.3/demos/bitmaps/select.xpm0000664000122200012240000000446407110476661017166 0ustar jeffhjeffh00000000000000/* XPM */ static char * select_xpm[] = { "50 40 9 1", " s None c None", ". c black", "X c gray95", "o c gray50", "O c gray70", "+ c navy", "@ c #000080800000", "# c #808000000000", "$ c white", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .............................................. ", " .XXXXXXXXXXooooooooooooXXXXXXXXXXXoXXXXXXXXXX. ", " .X ooOOOOOOOOOOXX oX o. ", " .X ooOOOOOOOOOOXX oX o. ", " .X ++++ ooOOOOOOOOOOXX ... oX @ o. ", " .X +++++ ooOOOOOOOOOOXX . . oX @@@ o. ", " .X +++ + ooOOOOOOOOOOXX . . oX @ @ o. ", " .X + + ooOO#####OOOXX . . oX @ @ o. ", " .X + + ooOO#OOO##OOXX . oX @ @ o. ", " .X + + ooO##OOOO##OXX . oX @ @ o. ", " .X ++ ++ ooO###OOO#OOXX . oX @ @ o. ", " .X +++++++ ooO#######OOXX . oX @ @ o. ", " .X + + ooO##O#OO#OOXX . oX @ @ o. ", " .X + ++ ooO##OOOOO#OXX . . oX @ @ o. ", " .X + + ooOO#OOOOO#OXX . . oX @ @@ o. ", " .X + ++ ooOO#OOOOO#OXX .... oX @@@@@ o. ", " .X ooOO######OOXX oX o. ", " .X ooOOOOOOOOOOXX $oX o. ", " .XoooooooooooXXXXXXXXXXXoooooooooooXooooooooo. ", " .............................................. ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; Tix8.4.3/demos/bitmaps/tix.gif0000664000122200012240000002544207110476660016452 0ustar jeffhjeffh00000000000000GIF87aüÕãÿÿÿÿ‚ÿ‚‚‚ÿÿ‚Âÿ‚‚,üÕ@ÿÈI«½8ëÍ»ÿ`(ŽdihŠé  ÂÏq»ôlϸÐÓƒ pHt }ÁÛ͘<‘L\qš\R¯Á€ÓÇ5v¹¹I†òμg,S¹ß*‰›íIïÊrµÛÄFûRh|fN€…cG@h?Kƒ_v‹g^”TuW—Skampor*,”|iVˆjŽiQu—¦™¤yl~®¨O~^±–D¼ºÀL±¤†O)/(¡ÈZ6¾Æ¯€‡À`Ò›ŠœUÖ•[²z³JÛ_œ«ÅwÐ[l³MσŠUÍÉËZ§‰…djce3Hà‹L`ᆀ!¨¬h¦" +8¤àpㄎÿ@ ¸H„¢–ˆAÌÈQ£Ê8 8Ô•+cñÆY*œ­Ö 10ràÈpBh ©SB¢ÀRÜd PpàT¨`™‚µÕéÓ²fH›µiÕ¦\:–`Y¨k¡¦Ë–¬Ód^-÷3˜$6ƒâ©eT0¡¼ºÄ=P´kÁªzûžÕ6¤W®é®][µtÛmû¾uëtuÚ†@‡ÖL»væfW x¿ÇAßr³ìFãn½„c¡<@®e˵£ï}m· jéØÝb-ÝPìÝìàQœÞÝôá_²Šœ×©Œñ à“Ð;¡ õ€ý¸Ük=jf¶Pa¦ÿXV÷ÜàÑfZk)äÇ_Wà(Þv¨U5J4ê¥^aNàÓL Åeò›0þðÃIrÉ”@G+ªäW²yu`W1.#cAkÐØ AŸ|òà~3²äbA*%é‘T£<·Opª¬R-Þ¢{Ü$ +D\dß—`†)æ˜b*`€™ ¤‰f€úYÇ‚¹–`t^ ¦Sú±•§{òÙTš¨‰¦ ‚îfh:­LIb9›(ve ɇÉ¥x!™—Úç瞦y¦§f¦E¨ iŸL_†„Vvp†÷V ˜ê÷妚²…槣暦ŒpX £¾ÕðèD¾ÂçË”™ÆzW¬ö)P&ÿ r‘ª@Ur5w_\«Î™ÝjÜ5“êdùaÚªšŸ:5¨³²6Ë«#†eF£Ä1† &¦hª“Ý—,™z]Ê'nf…«©sBFem˜¬ÂõT€lM¸U…Þ2{gSœòùeš +±pÜ›MæŒcï4lìD,p“æRe©ê‹_Ë#¬°wY™¯¦DúG[foMÕã[ÅvÀRö5wsÌÌ‚•g¾|šp¥T#ˆ »ÛÞ¨ˆˆ—â@qQ} iØcj¬)µGv5d‘l·mWT0ºÈ,µúAËl¨‚@î`DEBȈìšX5VpY¶{là†™ïdQÝÙ²Y}þiî™\]Jäÿچװãþú+*®äžkú ¦YKÊvX);,ö†c4%¾!$³¸2[lqº`:+üib‚Ëyçš™†š[C?þ²ï²šY·f¹^~®6¾r=Ï!ðû! (?–ƒæš7îòÑ×jn @šÀü$òÉ¿¡Ÿ©úN>p åúîÿž£:Q>5@ 9Ó8Vë0䘫1ƒvác°¤ }ûcÊ·Â n0gß‚KgV%ž­¨¦„‘ó Ä ¼1ÁcƒŠO*º†œ'Uc"8lFqŠÁÈCækáîv‡¾¸4‡<“–œ7¤òufFk[ÛT2À¦àÆh‘ÛµÂÄ"ÿowN‰xø ª1F€Ãá$e¬)D%šx£$ ”¼q!H@D|x8Ò" ±áà8@ä…tc½ÔašÀ U›Á#ó²EÚ.9»ˆDb’á½ãD0Ÿ ¥(s%tèBk˜l(µU’h“<~õ«O,#'?¥ø¾AF]öc _dX'²UÚÄ@@ 5 ÁÆ,˜¬ìå<92_ÎË•¾¥ mÁÊõ˜±™Ù4f• çpRøHccÐÈgRsßCã9FÏͳž:¹g=͹ƒà@íL†qöIPöô ­ç=šÐ{rò¡uŒ VG‡M:jÿvíL`ëÞYˆ‹®@=hfQOa=Ôoðg|b,1 ‡¡j,'d©ùfˆƒ%ɶ׈ôhˆGMLùfˆ–‡9£0FDZÀb”jiºÐœªç7¦ÌêÈž´5ø­v¥¬f/žZÆŸ^²¬¹ '(§Õvð@¡2EÜ)ƘJ±ž•m=Ì9ÈZS¤FâiÝȪ¢d2¥jÉ]°L+.Õ‡U8ð=V¢×a¡Ôª)'©ÆRcÚ½sšEèl„ð¡DÀÀ©]«a½‘ËwÁƒ®E½ 6ÿê¡«Uq” ¤5˜óy&," Í@–r©À}\AŠc ³*¦èlfoÿ"®û¦KË,Å“ÌÍŒs»´P÷»Õ…ŠLŽ:ËÙ øð§EÈÍW"6­>ØÜÊR•¼(…=[\ºÎì;ô«_ƒÖ–­ºd+À¨qš;²F1¢1¦çh³$ÛÂ@!E3òíµÅÝؾ òï¶N£•ÖlEFþáK€ãÄ-òðfÁ'1„ÃŒÇúD|N-f\–âœqwà Sh‚{ൠØ5õô1ÍŽ¬ UÑ}Sc]9Ì/Ôø–šÔŒ¯ð5\ë[[|ÐŒzܶ¯°-FÀ·|D•·-Åd>†}æŸm2±µXÏ».Ù˜g~t—¿P,FP$6LýN È#ÿn\ã™´‰Y*MZÈò>Ö¦&úíÕŽœ)­DP-¬eÒbÑeÉò¢ãº}Ÿ€Ù4×23ä8í¦"Áè쨡ʰ…6#Ž„_ ã]¿–§#İ™$ܯօïgêdq=ê°‹;ºýðe ÕèF§¦ÌedHœ!þš¨¨Ä9e‘Õ¸tÅùÎOYm¥å­<Ϫ¾º«óª°!”UŸt±pS¿+®¸D¬òrê9ólnsØã‰èŠ_ê†7R´¬¸m)„ÍMµ2Áܱ‚¾Á%÷q²Ô¾eÝaÔäÊOëãSéjÕ§PPQýjlu* )•^¦‰q>÷8ÝÄ¡í¯X¯Ø€v-­ÿ3õ+\C>s·4û·d Ó3$–r? {G*ìÓz6oG.Ö6zÂ.Ö€CXp×Vð3DI3&7Ã4bb*.ÇEÏÁ)ȶ‘øG‚Êbq±'tç¶+B±8TrOãQVŸ”hD¨hS@é"‰6Ñ7úDa’G @zu€t#‘‰FˆDºõF•õH(Ñ7€GŸY YpÔx¶T[ÅZï°^ÿM$kògMí5“N VF Ä(=µ:1¦‡ï0U: ;‘"Myˆ Ádˆú&%éñ Tc5CÞ°VÛIÙP/­•~QÓJ‚ÃuØ×Ôÿˆ¨¨Vª§Š 8ÉzK§~¨ˆŠ}Jï‘MlmÅ)¹˜Š¤Ä%Y;Ø!.à Ê2òtÎPÊÐI‹aÒ8ÔXÖxؘ"SÜÈ×pÀîdP84aÃAŽ%R5ŽÞø ☋VÂŽ~ÆP#…S§eQt UìZ]UxPŒYsŠì@ER^æ°jþÆ ¾xZ~Cú¨öÈŽ uRE[ÁòWT"u`…JÏöS’¢(£ÄV ùLx-…z’‘êEPùwkÐOQÕoŒˆ‰©~€õ‡%‡Vx’×0K 2”e3ÄwÅ4%,©Z.WÈxUì×+}HÿFH“Ã$p5™ þhIv‰ý(hy¨M¥O´x2&ÙJzXÄHYYeˆ"#78TבwµøIÛd"+IеUŠ'CI‚WDILðATøæ†çU;…wnù–¬³eò—Uwzà( %r„‰[‚ù¿äaùx¶ZÀ¢‘M'X¡G•t%Kt9“5É‹zWQPMjÈ=öR—"’ &aV‡›ÚV†Áj©Åw{U^­hY Ä%Iÿäš••rmè±g:dx†“T*1™;ðØ|\D@Ä#ôTEáLY0Ç1 Ó9‡$†~tH¡2‹`F©VW´ägÅx;™HHœØ-pÿZÜ5Ãu\ q\•;ÓõH±wÄ%]š —Ñ E^Ê `!#wG;µI}öoª•Ÿ‡µ‘Åšfg0â \j÷sô´ Ÿ1hi† y!yK1i2ú\)„£Ï¥£Eúò£‘v/ ^$Q^«™Wõ0¥ô¹ˆ©i• Xô mV_&!Ý4&æa¡1éÖ£ã'„-ÓU`HJ?SâASˆcƒ…ŽìÅM¹‹o÷5i¿– vq\ÚE†r¢¦ô£il !†{r¢`ë’rY¦i„ŽtÄQöɧTà æÞ¥02ƒ¿õÿõõ p‰ª{¯Á-¬¡<ÜÁ¢ŽJy<£†Âtw(N4F‹—j‹wå•FóAǨi*rÈÓ-¯š_?W©¹áb6¥)ã‰EZœtÀJ”^‰mÒ‚ýl…*p¨F– Ó#A£ahJyc!åQT¢·©l©—Šq8»i^>@ûê©ø!BÁõc;ªBFfD†{Ëó '&«å*°žƒ_ÊódWŒÛÊ!‚xŒ¯yzËd^íé<žfOÄ9ÒÕñ¢n Éš¨="_ò £3Rg¦ê2>Aµ§@A­ðô=Mœ8 ʇÄ{ô­-;f'Û[Žö[7ò#mÿ'Ý·²]êxgFPW›]<2üe,œ> £q¨“:¸|Ü­¦4ª(0‚1ÃÁSÅ…Ü¿9iÂÓê¹î鯝 A´©o.‚œ?bã¬g¡*äE›ƒ¤<ê µ®~Za Êuü¯×4wÍ•ô› š‘W‹™–;‰qw¼…ö[aC6¾ÜÉ?| 6j]¡ada»øã8-×z°Fì)a‚‚3-臹¯“!®•è`Í¡OXI æ”…'0ÌÜÌÛ˜¾žR mǦ›1«Òº¶»û•i³*å§k!(A]| L.,·%²ù&}uÿ8)<¼§t ØFvlklº¹vNô¢ÚÇ)›}™Ï¢2ÄÖ»lä4‹•ˆ%s¶M)„™) §ì;7³À”c¿¤ƒ9Dzo­®û„ÜrœL1ç·¿C\|ƒQ±éZ' M¬™#Ü©8üÏ{ 9‡ÊT<<¤r}Ì;²j̻ǂóøD|ÔS=éK@”\ŸþȽþ6d釆À"HvƒœÈüó>kADå<Ê’W0¨_]”Ãæ;o•ƒØúKÔ„tÉ$&”ÈôÚÐhœ¬è­. Æ!D††&g}8ƒ6Ó¼ÅjibªB3wh B~T.¹‹&tÖTÉL8z:Y¢ÿ5H CK>ùÞöÌ×óÖ/¼#_ç†nœQg]Œ­Þ7·&µVÕó–פ:4D­:¹‰@Áå¤^ùj ôgsL³u.$£ü'ªíŒ}Jã<k€ NÞ KÈ­Ýšb:º{á#Çš\¥™¹ÉX–ß¶w»ìÍ”ÍD™3&3ø¯Þ¼]òs×À†d¦!4{,4}]÷)•Û•ù‡5¶„%W©M´ ДÝÕfc=Õ'‹ÝÖñ 9§¼Baâz¡ƒä5˜¬ _. Ù|D(Ee“}td þ%v÷%Që>`¡ÖU]Q˜•»…!qG¹0`’þƒÌ‚ÿfÈ~T¦¯œNË÷‹YP—ÞœMÐ…C€GpDë°ÞväwdGa(†€„d0Ip†Gõ…ȤçI0Iå ÒÆ$c ;ÞûX}×)¡[`(Jª^ÖŽM fìÊx¥À [Е [ßN2ýÖÔ(Œìþuu™Ì­É“‚åÜ€ã“*w±Ogc¹ÚîÈ é¤•‚´«˜ŸØ®cÝTÀ|x› ™|ù—çæôªØÖ´’”P‰X ñq´¿‹C©¯¨©YÁ!¶Y¼Oñþ¾òGɱPÍSŽù—Ý~eËœN|¹N*¼òûJÓ¾¶Øð–JÂ,ß`ôòoµì£äÿI¯öóD/Ÿ›Š@´ˆ¹ZUÀvyî'ýÅq9„X~íæ¨çòMá„á)íÔœt!½êOÇOÝ@kŸ ˆs2:è´ö=~ ßH³Ë¹O/uPAŽxZöŠ/b¹øsàøW‘?ù”_ùeßø–Ÿù‚”OSµXè´NÎàùˆhÿõñdz%a&QRÆá &…ùš¯ú|Žˆã¨øƒŸŽý;4ÛOR…S€yŒ€5úŽ’QiÔ²¼R%#üùˆSˆ(,êÄû&Ucìc}—’:ð÷›ß#ÅY é~^õÖ4Áåb+–h .ÅüÙo÷iÔW É™ÜàüÖ?ÿ=@ûõ’uÿky‘¾iñ0¤ƒÚzñ¬}[Mó:¡,GÔ A£^–5Åñšï³ fNÆï]@8$…€10Xî~OŸÀ)Í@W—kUËô>4Ž­ žÀ¼ä:ƃµªXðË+×ÅѧiÈTI#&¦¼¼¹.•³/¹›Å:E¯ «»3ž/»œË¶¬ÆHÐ2º8‘*ß>¥¿")BԵ̮Ы9OÓ,¬ËÏZŸÉÜÌÍbϵ]µÓ`+YÔTU"V"WIN›áaßßÊgäÄ­^Ú” â­F37»°Ýu³òxy’ÓÆÂéiÀ!kÓìžIÿàÌ£ÑéÛºpˆÆ©©Á,¡3trÿÒ(Ú4Ïb<\ö‘’¿%´ {4IáE.°N¶ƒÎ")g1LÔJ”a»åªãª}B¬™“È+`K]‘Ä%­ùÙ¡˜Ý`Æ‘I㘕8«jÂöîNG ~öñY²Â˜²¬cÚ §ÅœÂ–ŽÚk»0íÄ‹fïj­¹ì`²·Aôízô‘Uz-Ë1,èp.¡R¢X.XwäTyù’[ pq1Àuœ ®&ë­âÍÊ6†f¨ä¿w]Ÿ…›M2xsbÅÄK&h€ÙHƒ$%ŒÒÍÔ¶–µN‘ÒCÙPéD.el›QÄ¿ÎÒm =¢ÁG‚ /È‘o¸8™.æÛð„hä$ÿɶ:-qßÜÚ«—¹Í”²³"¼>"¯¼øB)­½<'¡É†2O,ªÐƒ '¬0Ã䩦0m”°q¿WŠbJµ&~*p¼A(àÐ8µfÉë˜Y”Qh$àG zì±¼†4Ñ ¶4hbFÑzb ,Áè”ÛC9KÊK¹†äN(ɨ ¿Ó°da‡xäq€ øãM({$l#ð°ƒ;1dÓÎ 6$k #Û,²  ÍM”È „¤óÇ!M´ íâM?ƒ[¬;¿”ÊbIñŠàm+¨Œ§Çò`Èá\ÕU‚J"V ¤õÊFƒÒÑ% ýÑ`kÿ­µ€ QB‰m3Y%èaQG{ô•` €Çˆ-ôPB‰ ¶ˆ43K£V0‚CW*u“à9…˜tØ_­¥öÞD“eVHé=UI%µ7XE -ôàdøGƒ‰ðÑ…­WÒ†NØàDÕL³NPr÷ WÂû ]NHu!Ïn •wh™Úƒ¸Öcó)bÒbžyâB žÙZ ­%´Ú€fø`cuU”`{afØg‰vh`‹¾—Šp±K Z bä}ȼ Àx¬^š‹-¢e¬vZê´¿%"m#ÆXh¦m»Þjáºj¢û<Øî.4ï_}ü^©ÿ¼Z ˆ|ò’“Ñësƒªh"ÿ°Ò àH[¾¹í¿”eÑUI=`Ñ%ŽšZ«gÜô¾]œvÓ‹-_ׇ½t™af»Ú·}r‘Ë) ]¼t¬ÉFí|s  ó´!}™Z—…¿½ZÔû¨=Ò¨…¸ñØ¿ÿÞöõW? ià¥N_ýÁ‹7^rüUR¾*“ÒŠÉÄ4¥3\ ö F0íy~Ã#Bßð57ï™Ov@›ßÁ§>–É+{2[ã·@û Îe”kŽÇ²š>ýéy´ÅÇ®BhEÌw´`µxG¾b‘®[~ûû0X;‚onÙÓIWCÁ…ð~ȃB]Ò€Bÿ&T4á†Rª¤ìqa T ᇳœ%Q.##Ûh;4}>Ä5˜Ã"z±}Tõã®uÙå!)‹vL¤® P†j›[ãäh4îÉKbm(ºáY°Œ\c Á¥Íîç‹äíì8›}lÿÃ@áÂŽeÇZT”Úø¶I rñWÝ3cîÚ(Ç4–s £!; Ë5.r˜ØˆVÆôS®p4¥´Š|Tù® mP†¯„¥Á×»·q“æ ŸI¾àѰš@Ä’òC“›ˆ4É Õ2«èÌݠͬtÝ8;h:l~°hö"7wI¾v‘Ÿµ¤][rñÌ¥²,ÿà Už8*e`Ïw‚Œ#5å(<á…±wêc$.Ýh³œÁ~Uc- ¹¬ÄfS/d¦‹¨ÑhY,E³÷>:P œä Û–S’RR îˤE=úO]ZX2ÅÍØ6ƒ²€<”:a7ÒB,Úmò¬¨Q'˜MŸn´izÛ). :¾q¬›¼WëF-û‘>Tdé$Hó°‚Jurå-V¸ uÅ#x­êG ¨nt5±UYw^ÂÚíé6[ò“?Â/EÃÈ£D!›ð„c•BEÊë˜Ùßz Ò'©ò£K;ÁKL8"`Kfqe¶®iÖÊÿò²º1Vd¿Àˆ`id¯ÀîyËŠOµ­ª•A¢,m¨:‰\1[2IQYÌâ<‹FåøÕet² 0ÒJeÛ'±ª–-F.ËŒ0£ì͸K·UÁ‹ÊY̲_¸Ïž.ŽwêäLÿ¦'dˆ…3!W3«¨«³ÍYÑï[t£`Ï~ ¨˜_'´2 ÏEÃ3sù½ÛŠ´T®V•q*8œ@”®¥W½j£Á´ª H|·“â2™/ôEæÙh`{ È"«]]iµæw6¤$?C­ßEßίvFµ±a}lÁ­š„PVÍa6ì‰=öö™¨ü£h-ltÏ™ØÃ~µ\Í=F“õg Ž$Ùú²0Îyž <õ¾…ÓW¼Ý€TŠ˜þ]Ã:] w(ñÒ—v)ݦF÷±þjxKWœö^ìËgRû[}ý>5ÀÝ}ñ‹<¸rå¶7pðµá¸®ax L ÿìs—šÑ¿v5¬Ý}ò‹g\Î?­!Ç·‰ï›“ºß¥þ7ÉemŸ÷<å'2Ë7<€8ITÌ{ŒÐù‚‰Š6ÅwÞïGè‡w_å,O$N²ãRÀùÙ÷Íh¿bûçkOûÔzè«/`øàº2û¸ÙR$á|EwÎwÞjb}pAoöðûvè"ñÇ Ü¥ä„ÐèsO[ä}³8ßQNpî§Sܼ6B¤Ìc®t\&{Ò-H9û^ë6½ÀŸ®€¶Ÿ÷F_àæµÉÀ‰ÛY“{·øéQŽ—Ô5?³ÑìɃø— e´Á6ZîÕ-zU³åÁO+îÅ©¾åsÞ–•w»°} ùvÿ“^àÓ68“ý…ç!×TÝÌejdQ»½ ÀE[7ñSµ€#H±ÐK¶{£Ÿ`B&h?÷»­æcµ§ã»i;€˜P(»#|Ø?¼r*T Üùy";`3Àb{Aà[Àúµ›ó*’Š@–™@*#-Û«2f£–kó9ùûðãÀOB-é…—#® ¡+^£‰kéAE£Aj½"Tºa+-K𧳩Á Ê® Š4Kµò½Ä)˜I»yŠ?„ wI§îД34»hˆi5IÁ\´*Ü@;ã½k@èJ±å¼óã'ž:뫹ǛA”+Àð38ªÃ o“©Õsƒ»·ÿ0Á#ƈÂ=ôCÜ9˜©#5aiº¤³'ZÒ.!Ò®$ÄäcºÌ£²U“BE£ÄðÀJ¨Œ{¸6¸+]3A^®ÛC\Ì*ï›AZÅÜ«šÂ<‰B?zË¡ö ÃXL>½S\µäS9@«ßRí{Md¡â’)Ü3-ó[ĺ=¬²TLÁ›Ó<`Ò-ÑQDmL5,»t³¿*!´ûðDl´LA®‡.ÀÌ+C=œÅ´Dñ’Æ=´ Œ¢£4¢¡ú<‹TÆt;ż{AS;7å;‘¦²‰êS¦Ü5´0†ˆ\A³È$»_Ë›“œ,¾¨i#^ª,#¸$>üHÿ3D[¼—³³<¿:Ï©¨TQpž—BÇìãpGE»Ç~”·óÙI|ÄØJ¬Y‚E#J†ºyìGeTÊ»{Ÿ“¤=Î8(¯@²9tI&ƒCËÁ { ËÜÊ­üÉÒÆ9sÇ™„,§Yš)º¹$Bɪµ¶d|;·|.¸l†½¢Ës²Ë–\²ë£µÁXaKaƒ–ü¸K­„L"bÄè²—3ØYÓAK*ƒ¶Ó,-¿‚™P¤Lg!B¹Ž¹ô¶–»×óÌÃKÉ&ƒ2 MtûƒD=Ýi×lÄòcÁ§ +|z1š šúª#;Aj~œÂt[µ¸õd°¿Xÿ_œépžá­¯“=É 9`ψi± «1îb5l:EÃ0ЕٮKРdдQ™ã[O“P#xµ!PO!XÀ⡺=À‡é;àŠª)èLÃ[’#ù„N)ŽvDJ[¤Ì‰?ùÃÀø£­æ ¨{R6D´–猣Ǔ¿ß Bç;½ж>ûÐØ@ë úœ“«D‰@¿äÊ‘ÌÅb»c“<¬BòD¤˜iã3+BŒš¡C»+Ò õ½âyŠÏ° nû3õ¬äÌ#‹0,ŠÒ’ܽI,Ii›¼ŸËRìÙQVúª/"Û›Á1U Óë=©»¶¥ªDN41Ïá s|Ó ˆ‘ä ÇlÿÌÝųS Ìƒ?wË!F Ô.úRõ;ŸÂŒ·xCµeÔEÒ““àÌH(q=ªq³*þÑ àÔ¿ªEð»=Fc»1,UÁºQD” Ú„L-=Ö¾6É‹Qßc>W;)…l23¹‡Â+Ñû4“м¬6ÜAZ|KI´8h|.Ã$:kÊQÔéNݼ»im:J{ „¿›Ucs‹±Y‘õx%U0þSGNDiA·¿ÄÂbU:vK”¡/ü§z£Ìiô·|Å×ÑËÀ‹c¾>Õ6¹€(<ÂÌ©Œ†}ÉKU%£”B=ìC"„Áðë4VmËeõɸÃ. ˡ³×ÈöS‹U¾ Ùÿsj¹àˆ<Ù%W«„I– Ït‹Ha#6ªU5ð—|×C¤7ú(Ôùž ½»“º¦›<”Û»“KS‡pß*ÙZ£T“•Mƒk‰¦¾t»,ƒÚƳڪÅÀdmKz,ú1>guűÂ;u5«íÉÅí½]5@Kí í†j‘¹]S]QËöË2ƒ ÉVs·Il$ˤÀÓZjä<¡ Ÿ¼õ¾˜Í;ôƲíÉW 8¥‚\¤å³¾YÚð%[Ò@ÈÜp˜‡S~Ä}óCÒݼڤƒG›B]®…À\úÚkÝšÜ@Œ›]TTëÒZ].bPBˆ" ­I¡?1X¹ÝËH=Iÿ2¼©ÂdA}³Ò>UÀ`¡¥ökGŠšÁÄD Â(e¬û_O%Bb+CÍ;,µ¸w‰=r-R§ì>*Q®›[\U®y<×¾²ÌQ£Â¥‰AûuW—å\óKLŲ¨ÂÍ0Ü›4»nøÌRƒYÀtWeDœô[?Gê'42J÷‹Ùœ¤R¬í»®:nÓ;˜* ãaÞºÔ™ÛÜ¢4µÕ”̱bM|2Ý›’_áë_fŸ_RáÃ2Ö|F†¾å@"cê­Q0Æᵈ†Zsu؉ ½EÌÛ„ÙÙÍ&jËŒŠbÚâÿìLèzÝ´!"V¢ŽÍñŸe(‡Ë\cX)NäîU,;OáÛ*¸køåMî‚EU]åÉ,ãÞìÃØEã]wR6¼^ù8cNÕdcÝTÈ«3¬³:kGïZ˜iÜßZ$Ñ ¡1Ì[xìMžEäöû99<åN쌅BÈÞcœH€5¡*I:˜5Ö\ÕU=:a$:18Y•.äáÑüÚŠi"º]1›]!-ýªââIeÎ_è:˜4½¿þ% Ù¿_ã'uç'yzRÑB4#1’ïMþ2 iDpçG¡!Qi@˜F /f'%ÓDå:|˜ž¾ÿþƒ¢$Ôb˜S!Ï ¢ö€€'ÍxRñÍ€8•6 ”ù¸<±êK€;Qi¯Ž’;ñg—–®š6kšk´Þ†g(‰4()V•µNëÀkIuŽ’0™í‹oMêt4¦•Šºîg³æµNé ˜i¢i³ˆ±F™ h;¡½»>kQB¯~x…è;´8\ b€9SfçÄ“B6é³^mÔîgÍ^ǵFÀÏyxí½¦=ͰÂ6ÆS mÃmLírHk˜vÚ öí 2ÀmLü»á<ßåÏ߆[B¶`â&îL¤Žqý#åa*rLG•Œ`ê¨hÅ;“ü‚ÌnÿöFfæd[í^o? m8<¹L8ó–¯/Ø¿¦moÿ†Ið†„…m“q¤p¦©e;<¸oKoõ6í84çÿŽðZ¸ŒøÚ…¬ãV©Ðp/1Ò2Q [ ¨¼CÑÇ#HêcpdþзœZKn4¼Á^6uBärŒù Pç6mñüvJÍœðNð?QæÍ¢ —Ó¢+ÿ:ìcï Ç:Iòþ-‘È\P6‹þpv¶‘…TG(ÿ’8p4goðã¿K/$¼¿Œles 1s,OsäÆóìþ°§µ*YÛÎs·ëžq§ZóøÖs.ß;ÅsEO îa”à×äÈDc9ô­à†7ÚßJñüÞ’^íàý«èïA·t"$N'„2_Yu17ïJ_p5ðL ]ƒò¹­Gêàñ‹Xÿº© &½„øÀô]˜bïbf2]#äAk¯I'%Å1à- f¿¾Ï”©LIJŒ–òö|àƒÎ¤O)wÏ `¸\ç‡mGßRjP™-ððb² u÷öAF°‹þ‰~W…‡9÷wøÙ liøw†gö­sp~x‹¿x‹xŒßxŽïxÿxùŽ€;Tix8.4.3/demos/bitmaps/combobox.xbm0000664000122200012240000000160007110476660017465 0ustar jeffhjeffh00000000000000#define combobox_width 32 #define combobox_height 32 static unsigned char combobox_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3e, 0x04, 0x00, 0x80, 0x2a, 0x04, 0x00, 0x80, 0x2a, 0x04, 0x00, 0x80, 0x2a, 0x04, 0x00, 0x80, 0x2b, 0xfc, 0xff, 0xff, 0x3e, 0x08, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x3e, 0x08, 0x00, 0x00, 0x2a, 0x28, 0x49, 0x00, 0x2a, 0x08, 0x00, 0x00, 0x3e, 0x08, 0x00, 0x00, 0x22, 0x08, 0x00, 0x00, 0x22, 0x28, 0x49, 0x12, 0x22, 0x08, 0x00, 0x00, 0x22, 0x08, 0x00, 0x00, 0x22, 0x08, 0x00, 0x00, 0x22, 0x28, 0x49, 0x02, 0x22, 0x08, 0x00, 0x00, 0x3e, 0x08, 0x00, 0x00, 0x2a, 0x08, 0x00, 0x00, 0x2a, 0xf8, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Tix8.4.3/demos/bitmaps/combobox.xpm0000664000122200012240000000441607110476661017514 0ustar jeffhjeffh00000000000000/* XPM */ static char * combobox_xpm[] = { "50 40 6 1", " s None c None", ". c black", "X c white", "o c #FFFF80808080", "O c gray70", "+ c #808000008080", " ", " ", " ", " .................................... XXXXXXX ", " .ooooooooooooooooooooooooooooooooooX X . . ", " .ooooooooooooooooooooooooooooooooooX X . . ", " .oooo.oooooooooooooooooooooooooooooX X . . ", " .oo.o..oo.o.oo.o.ooooooooooooooooooX X . . ", " .o..o.o.o.oo.oo.oo.ooooooooooooooooX X ... . ", " .oo.oo.oo.o.oo.ooo.ooooooooooooooooX X . . ", " .ooooooooooooooooooooooooooooooooooX X . ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X...... ", " ", " ", " ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " X............................................ ", " X.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.OOOOX. ", " X.O+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.OX OX. ", " X.O++OOO+OO+++OOOOOOOOOOOOOOOOOOOOOOOX.X ..X. ", " X.O+O+O+OOO+O+OOOOOOOOOOOOOOOOOOOOOOOX.OOOOX. ", " X.O++OOO+OO+++OOOOOOOOOOOOOOOOOOOOOOOX.OOOOX. ", " X.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.XXXXX. ", " X.O.....X..........................OOX.X .X. ", " X.OX...XXX.X.XX.XX.................OOX.X .X. ", " X.OX.X..X..X.XX..XX.X..............OOX.X .X. ", " X.O.X...X..X.X...X..X..............OOX.X .X. ", " X.OOOOOOOOOOOOOOOOOOOOOOOO+OOOOOOOOOOX.X .X. ", " X.OOOOOOOOO+OOO+OOOOO+OOOO+OOOOOOOOOOX.X .X. ", " X.O+++OO+OO+O+OO++O++OO+OO+OOOOOOOOOOX.X...X. ", " X.OO+OO++OO+O+OO+OOO+OO+O++OOOOOOOOOOX.OOOOX. ", " X.OOOOOOOO+OOOOO++OO+OOOOOOOOOOOOOOOOX.OOOOX. ", " X.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.X .X. ", " X.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.O .OX. ", " X.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.OOOOX. ", " X.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXX. ", " X............................................ ", " ", " ", " "}; Tix8.4.3/demos/bitmaps/about.xpm0000664000122200012240000000440607110476661017015 0ustar jeffhjeffh00000000000000/* XPM */ static char * about_xpm[] = { "50 40 7 1", " s None c None", ". c black", "X c white", "o c gray70", "O c navy", "+ c red", "@ c yellow", " ", " ", " ", " ................................. ", " ..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo. ", " .XooooooooooooooooooooooooooooooXo. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooXo. ", " ..oooooooooooooooooooooooooooooooXo. ", " ...............................XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo.++++ ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo+++ ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo+++++ ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo++++++ ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo+++ + ", " .OOOOO@@@@@OOOOOOOOOOOOOOOOOOO.Xo++. ", " .OOOOOOO@OOOOO@OOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOO@OOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOO@OOOO@@OOO@OOO@OOOOOOO.XoXo. ", " .OOOOOOO@OOOOO@OOOO@O@OOOOOOOO.XoXo. ", " .OOOOOOO@OOOOO@OOOOO@OOOOOOOOO.XoXo. ", " .OOOOOOO@OOOOO@OOOOO@OOOOOOOOO.XoXo. ", " .OOOOOOO@OOOOO@OOOO@O@OOOOOOOO.XoXo. ", " .OOOOOOO@OOOO@@@OO@OOO@OOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo.. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.X. ", " ............................. ", " ", " ", " "}; Tix8.4.3/demos/bitmaps/netw.xbm0000664000122200012240000000156407110476661016644 0ustar jeffhjeffh00000000000000#define netw_width 32 #define netw_height 32 static unsigned char netw_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x8a, 0x51, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x4a, 0x50, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x02, 0x40, 0xfe, 0x7f, 0x52, 0x55, 0x02, 0x40, 0xaa, 0x6a, 0xfa, 0x5f, 0xfe, 0x7f, 0x0a, 0x50, 0xfe, 0x7f, 0x0a, 0x52, 0x80, 0x00, 0x0a, 0x52, 0x80, 0x00, 0x8a, 0x51, 0x80, 0x00, 0x0a, 0x50, 0x80, 0x00, 0x4a, 0x50, 0x80, 0x00, 0x0a, 0x50, 0xe0, 0x03, 0x0a, 0x50, 0x20, 0x02, 0xfa, 0xdf, 0x3f, 0x03, 0x02, 0x40, 0xa0, 0x02, 0x52, 0x55, 0xe0, 0x03, 0xaa, 0x6a, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Tix8.4.3/demos/bitmaps/netw.xpm0000664000122200012240000000255207110476661016660 0ustar jeffhjeffh00000000000000/* XPM */ static char * netw_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 7 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #404040", "+ c blue", "@ c red", /* pixels */ " ", " .............. ", " .XXXXXXXXXXXX. ", " .XooooooooooO. ", " .Xo.......XoO. ", " .Xo.++++o+XoO. ", " .Xo.++++o+XoO. ", " .Xo.++oo++XoO. ", " .Xo.++++++XoO. ", " .Xo.+o++++XoO. ", " .Xo.++++++XoO. ", " .Xo.XXXXXXXoO. ", " .XooooooooooO. ", " .Xo@ooo....oO. ", " .............. .XooooooooooO. ", " .XXXXXXXXXXXX. .XooooooooooO. ", " .XooooooooooO. .OOOOOOOOOOOO. ", " .Xo.......XoO. .............. ", " .Xo.++++o+XoO. @ ", " .Xo.++++o+XoO. @ ", " .Xo.++oo++XoO. @ ", " .Xo.++++++XoO. @ ", " .Xo.+o++++XoO. @ ", " .Xo.++++++XoO. ..... ", " .Xo.XXXXXXXoO. .XXX. ", " .XooooooooooO.@@@@@@.X O. ", " .Xo@ooo....oO. .OOO. ", " .XooooooooooO. ..... ", " .XooooooooooO. ", " .OOOOOOOOOOOO. ", " .............. ", " "}; Tix8.4.3/demos/bitmaps/capital.xbm0000664000122200012240000000044507110476660017300 0ustar jeffhjeffh00000000000000#define capital_width 16 #define capital_height 16 static unsigned char capital_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x08, 0x30, 0x0c, 0x30, 0x06, 0x30, 0x03, 0xb0, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xb0, 0x03, 0x30, 0x07, 0x30, 0x0e, 0x30, 0x1c, 0x00, 0x00}; Tix8.4.3/demos/bitmaps/filebox.xbm0000664000122200012240000000157507110476660017320 0ustar jeffhjeffh00000000000000#define filebox_width 32 #define filebox_height 32 static unsigned char filebox_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x04, 0x00, 0x00, 0x20, 0xe4, 0xff, 0xff, 0x27, 0x24, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, 0x24, 0xe4, 0xff, 0xff, 0x27, 0x04, 0x00, 0x00, 0x20, 0xe4, 0x7f, 0xfe, 0x27, 0x24, 0x50, 0x02, 0x25, 0x24, 0x40, 0x02, 0x24, 0x24, 0x50, 0x02, 0x25, 0x24, 0x40, 0x02, 0x24, 0x24, 0x50, 0x02, 0x25, 0x24, 0x40, 0x02, 0x24, 0x24, 0x50, 0x02, 0x25, 0xe4, 0x7f, 0xfe, 0x27, 0x04, 0x00, 0x00, 0x20, 0xe4, 0xff, 0xff, 0x27, 0x24, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, 0x24, 0xe4, 0xff, 0xff, 0x27, 0x04, 0x00, 0x00, 0x20, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Tix8.4.3/demos/bitmaps/filebox.xpm0000664000122200012240000000440607110476661017333 0ustar jeffhjeffh00000000000000/* XPM */ static char * filebox_xpm[] = { "50 40 6 1", " s None c None", ". c white", "X c gray80", "o c black", "O c #FFFF80808080", "+ c gray70", " ", " ", " ", " ............................................ ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXooXooXoXooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXooXooXoXooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXooooooooooooooooooooooooooooooooooooo.XXo ", " .XXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XXo ", " .XXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XXo ", " .XX......................................XXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXoooooooooooooooo.XXXXoooooooooooooooo.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XX.................XXXX.................XXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXooXooXoXooXoXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXooXooXoXooXoXooXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXoooooooooooooooooooooooooooooooooooooo.Xo ", " .XXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo ", " .XXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo ", " .XX.......................................Xo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .ooooooooooooooooooooooooooooooooooooooooooo ", " ", " ", " "}; Tix8.4.3/demos/bitmaps/drivea.xbm0000664000122200012240000000157207110476660017137 0ustar jeffhjeffh00000000000000#define drivea_width 32 #define drivea_height 32 static unsigned char drivea_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x08, 0x00, 0x00, 0x18, 0xa8, 0xaa, 0xaa, 0x1a, 0x48, 0x55, 0xd5, 0x1d, 0xa8, 0xaa, 0xaa, 0x1b, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xfa, 0xaf, 0x1a, 0xc8, 0xff, 0xff, 0x1d, 0xa8, 0xfa, 0xaf, 0x1a, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xaa, 0xaa, 0x1a, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xaa, 0xaa, 0x1a, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Tix8.4.3/demos/bitmaps/drivea.xpm0000664000122200012240000000253307110476661017154 0ustar jeffhjeffh00000000000000/* XPM */ static char * drivea_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 5 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #800080008000", /* pixels */ " ", " ", " ", " ", " ", " ", " ", " ", " ", " .......................... ", " .XXXXXXXXXXXXXXXXXXXXXXXo. ", " .XooooooooooooooooooooooO. ", " .Xooooooooooooooooo..oooO. ", " .Xooooooooooooooooo..oooO. ", " .XooooooooooooooooooooooO. ", " .Xoooooooo.......oooooooO. ", " .Xoo...................oO. ", " .Xoooooooo.......oooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .oOOOOOOOOOOOOOOOOOOOOOOO. ", " .......................... ", " ", " ", " ", " ", " ", " ", " ", " "}; Tix8.4.3/demos/bitmaps/harddisk.xbm0000664000122200012240000000157207110476660017456 0ustar jeffhjeffh00000000000000#define drivea_width 32 #define drivea_height 32 static unsigned char drivea_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x08, 0x00, 0x00, 0x18, 0xa8, 0xaa, 0xaa, 0x1a, 0x48, 0x55, 0xd5, 0x1d, 0xa8, 0xaa, 0xaa, 0x1b, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xfa, 0xaf, 0x1a, 0xc8, 0xff, 0xff, 0x1d, 0xa8, 0xfa, 0xaf, 0x1a, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xaa, 0xaa, 0x1a, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xaa, 0xaa, 0x1a, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Tix8.4.3/demos/bitmaps/harddisk.xpm0000664000122200012240000000253307110476661017473 0ustar jeffhjeffh00000000000000/* XPM */ static char * drivea_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 5 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #800080008000", /* pixels */ " ", " ", " ", " ", " ", " ", " ", " ", " ", " .......................... ", " .XXXXXXXXXXXXXXXXXXXXXXXo. ", " .XooooooooooooooooooooooO. ", " .Xooooooooooooooooo..oooO. ", " .Xooooooooooooooooo..oooO. ", " .XooooooooooooooooooooooO. ", " .Xoooooooo.......oooooooO. ", " .Xoo...................oO. ", " .Xoooooooo.......oooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .oOOOOOOOOOOOOOOOOOOOOOOO. ", " .......................... ", " ", " ", " ", " ", " ", " ", " ", " "}; Tix8.4.3/demos/bitmaps/justify.xbm0000664000122200012240000000044507110476660017360 0ustar jeffhjeffh00000000000000#define justify_width 16 #define justify_height 16 static unsigned char justify_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xdb, 0x00, 0x00, 0x7c, 0xdb, 0x00, 0x00, 0xbc, 0xf7, 0x00, 0x00, 0xdc, 0xde, 0x00, 0x00, 0x6c, 0xdf, 0x00, 0x00, 0x6c, 0xef, 0x00, 0x00, 0xdc, 0xdf}; Tix8.4.3/demos/bitmaps/bold.xbm0000664000122200012240000000043407110476660016601 0ustar jeffhjeffh00000000000000#define bold_width 16 #define bold_height 16 static unsigned char bold_bits[] = { 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0xfc, 0x0f, 0x18, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1c, 0xf8, 0x0f, 0xf8, 0x0f, 0x18, 0x18, 0x18, 0x30, 0x18, 0x30, 0x18, 0x38, 0xfc, 0x3f, 0xfc, 0x1f}; Tix8.4.3/demos/bitmaps/exit.xpm0000664000122200012240000000436507110476661016660 0ustar jeffhjeffh00000000000000/* XPM */ static char * exit_xpm[] = { "50 40 5 1", " s None c None", ". c black", "X c white", "o c #000080800000", "O c yellow", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ....................................... ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XoooooooooooooooooooooooooooooooooooX. ", " .XoooooooooooooooooooooooooooooooooooX. ", " .XoooooooooooooooooooooooOoooooooooooX. ", " .XoooooooooooooooooooooooOOooooooooooX. ", " .XoooooooooooooooooooooooOOOoooooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOooooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOOoooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOOOooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOOOOoooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOOOooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOOoooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOooooooooX. ", " .XoooooooooooooooooooooooOOOoooooooooX. ", " .XoooooooooooooooooooooooOOooooooooooX. ", " .XoooooooooooooooooooooooOoooooooooooX. ", " .XoooooooooooooooooooooooooooooooooooX. ", " .XoooooooooooooooooooooooooooooooooooX. ", " .XoooooooooooooooooooooooooooooooooooX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " ....................................... ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; Tix8.4.3/demos/bitmaps/italic.xbm0000664000122200012240000000044207110476660017125 0ustar jeffhjeffh00000000000000#define italic_width 16 #define italic_height 16 static unsigned char italic_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x80, 0x3f, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x80, 0x01, 0x80, 0x01, 0xc0, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x60, 0x00, 0xfc, 0x01, 0xfc, 0x01}; Tix8.4.3/demos/MkSample.tcl0000644000122200012240000001512207404574003015721 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: MkSample.tcl,v 1.3 2001/12/09 05:34:59 idiscovery Exp $ # # MkSample.tcl -- # # This file implements the "Sample" page in the widget demo # # This file has not been properly documented. It is NOT intended # to be used as an introductory demo program about Tix # programming. For such demos, please see the files in the # demos/samples directory or go to the "Samples" page in the # "widget demo" # # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # # set tix_demo_running 1 set samples_dir [file join $demo_dir samples] set sample_filename {} uplevel #0 source [list [file join $samples_dir AllSampl.tcl]] proc MkSample {nb page} { global tixOption #---------------------------------------------------------------------- set w [$nb subwidget $page] set pane [tixPanedWindow $w.pane -orient horizontal] pack $pane -expand yes -fill both set f1 [$pane add 1 -expand 1] set f2 [$pane add 2 -expand 3] $f1 config -relief flat $f2 config -relief flat # Left pane: the Tree: # set lab [label $f1.lab -text "Select a sample program:" -anchor w] set tree [tixTree $f1.slb \ -options { hlist.selectMode single hlist.width 40 }] $tree config \ -command "Sample:Action $w $tree run" \ -browsecmd "Sample:Action $w $tree browse" pack $lab -side top -fill x -padx 5 -pady 5 pack $tree -side top -fill both -expand yes -padx 5 # Right pane: the Text # set labe [tixLabelEntry $f2.lab -label "Source:" -options { label.anchor w }] $labe subwidget entry config -state disabled set stext [tixScrolledText $f2.stext] set f3 [frame $f2.f3] set run [button $f3.run -text "Run ..." \ -command "Sample:Action $w $tree run"] set view [button $f3.view -text "View Source in Browser ..." \ -command "Sample:Action $w $tree view"] pack $run $view -side left -fill y -pady 2 pack $labe -side top -fill x -padx 7 -pady 2 pack $f3 -side bottom -fill x -padx 7 pack $stext -side top -fill both -expand yes -padx 7 # # Set up the text subwidget set text [$stext subwidget text] bind $text "%W yview scroll -1 unit" bind $text "%W yview scroll 1 unit" bind $text "%W xview scroll -1 unit" bind $text "%W xview scroll 1 unit" bind $text {focus [tk_focusNext %W]; break} bindtags $text "$text Text [winfo toplevel $text] all" $text config -bg [$tree subwidget hlist cget -bg] \ -state disabled -font $tixOption(fixed_font) -wrap none $run config -state disabled $view config -state disabled global demo set demo(w:run) $run set demo(w:view) $view set demo(w:tree) $tree set demo(w:lab1) $labe set demo(w:stext) $stext set hlist [$tree subwidget hlist] $hlist config -separator "." -width 30 -drawbranch 0 \ -wideselect false set style [tixDisplayStyle imagetext -refwindow $hlist \ -fg $tixOption(fg) -padx 4] set file [tix getimage textfile] set folder [tix getimage openfold] ForAllSamples root "" \ [list AddSampleToHList $tree $hlist $style $file $folder] } # AddSampleToHList -- # # A callback from ForAllSamples. Add all the possible sample files # into the Tree widget. # proc AddSampleToHList {tree hlist style file folder token type text dest} { case $type { d { return [$hlist addchild $token -itemtype imagetext -style $style \ -image $folder -text $text] } done { if {![tixStrEq $token ""]} { $tree setmode $token close $tree close $token } } f { return [$hlist addchild $token -itemtype imagetext \ -image $file -text $text -data [list $text $dest]] } } } proc Sample:Action {w slb action args} { global samples demo_dir demo samples_dir set hlist [$slb subwidget hlist] set ent [$hlist info anchor] if {$ent == ""} { $demo(w:run) config -state disabled $demo(w:view) config -state disabled return } if {[$hlist info data $ent] == {}} { # This is just a comment $demo(w:run) config -state disabled $demo(w:view) config -state disabled return } else { $demo(w:run) config -state normal $demo(w:view) config -state normal } set theSample [$hlist info data $ent] set title [lindex $theSample 0] set prog [lindex $theSample 1] case $action { "run" { RunProg $title $prog } "view" { LoadFile [file join $samples_dir $prog] } "browse" { # Bring up a short description of the sample program # in the scrolled text about set text [$demo(w:stext) subwidget text] uplevel #0 set sample_filename [list [file join $samples_dir $prog]] tixWidgetDoWhenIdle ReadFileWhenIdle $text $demo(w:lab1) subwidget entry config -state normal $demo(w:lab1) subwidget entry delete 0 end $demo(w:lab1) subwidget entry insert end [file join $samples_dir $prog] $demo(w:lab1) subwidget entry xview end $demo(w:lab1) subwidget entry config -state disabled } } } proc RunProg {title prog} { global samples demo_dir demo samples_dir set w .[lindex [split $prog .] 0] set w [string tolower $w] if [winfo exists $w] { wm deiconify $w raise $w return } uplevel #0 source [list [file join $samples_dir $prog]] toplevel $w wm title $w $title RunSample $w } proc LoadFile {filename} { global tixOption set tmp $filename regsub -all . $filename _ tmp set w [string tolower .$tmp] if [winfo exists $w] { wm deiconify $w raise $w return } toplevel $w wm title $w "Source View: $filename" button $w.b -text Close -command "destroy $w" set t [tixScrolledText $w.text] tixForm $w.b -left 0 -bottom -0 -padx 4 -pady 4 tixForm $w.text -left 0 -right -0 -top 0 -bottom $w.b $t subwidget text config -highlightcolor [$t cget -bg] -bd 2 \ -bg [$t cget -bg] -font $tixOption(fixed_font) if {$filename == {}} { return } set text [$w.text subwidget text] $text config -wrap none ReadFile $text $filename } proc ReadFileWhenIdle {text} { global sample_filename if ![file isdir $sample_filename] { ReadFile $text $sample_filename } } proc ReadFile {text filename} { set oldState [$text cget -state] $text config -state normal $text delete 0.0 end set fd [open $filename {RDONLY}] $text delete 1.0 end while {![eof $fd]} { $text insert end [gets $fd]\n } close $fd $text see 1.0 $text config -state $oldState } Tix8.4.3/demos/tclIndex0000664000122200012240000000740207423747507015221 0ustar jeffhjeffh00000000000000# Tcl autoload index file, version 2.0 # This file is generated by the "auto_mkindex" command # and sourced to set up indexing information for one or # more commands. Typically each line is a command that # sets an element in the auto_index array, where the # element name is the name of a command and the value is # a script that loads the command. set auto_index(MkChoosers) [list source [file join $dir MkChoose.tcl]] set auto_index(MkCombo) [list source [file join $dir MkChoose.tcl]] set auto_index(stCmd) [list source [file join $dir MkChoose.tcl]] set auto_index(stValidate) [list source [file join $dir MkChoose.tcl]] set auto_index(MkControl) [list source [file join $dir MkChoose.tcl]] set auto_index(MkSelect) [list source [file join $dir MkChoose.tcl]] set auto_index(MkOptMenu) [list source [file join $dir MkChoose.tcl]] set auto_index(MkFileEnt) [list source [file join $dir MkChoose.tcl]] set auto_index(MkFileBox) [list source [file join $dir MkChoose.tcl]] set auto_index(MkToolBar) [list source [file join $dir MkChoose.tcl]] set auto_index(MkTitle) [list source [file join $dir MkChoose.tcl]] set auto_index(MkDirList) [list source [file join $dir MkDirLis.tcl]] set auto_index(MkDirListWidget) [list source [file join $dir MkDirLis.tcl]] set auto_index(MkExFileWidget) [list source [file join $dir MkDirLis.tcl]] set auto_index(MkManager) [list source [file join $dir MkManag.tcl]] set auto_index(MkPanedWindow) [list source [file join $dir MkManag.tcl]] set auto_index(MkNoteBook) [list source [file join $dir MkManag.tcl]] set auto_index(CreateCommonButtons) [list source [file join $dir MkManag.tcl]] set auto_index(MkSample) [list source [file join $dir MkSample.tcl]] set auto_index(AddSampleToHList) [list source [file join $dir MkSample.tcl]] set auto_index(Sample:Action) [list source [file join $dir MkSample.tcl]] set auto_index(RunProg) [list source [file join $dir MkSample.tcl]] set auto_index(LoadFile) [list source [file join $dir MkSample.tcl]] set auto_index(ReadFileWhenIdle) [list source [file join $dir MkSample.tcl]] set auto_index(ReadFile) [list source [file join $dir MkSample.tcl]] set auto_index(MkScroll) [list source [file join $dir MkScroll.tcl]] set auto_index(MkSList) [list source [file join $dir MkScroll.tcl]] set auto_index(SList:Reset) [list source [file join $dir MkScroll.tcl]] set auto_index(MkSWindow) [list source [file join $dir MkScroll.tcl]] set auto_index(SWindow:Reset) [list source [file join $dir MkScroll.tcl]] set auto_index(MkSText) [list source [file join $dir MkScroll.tcl]] set auto_index(SText:Reset) [list source [file join $dir MkScroll.tcl]] set auto_index(tixDemo:MkMainWindow) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:MkMainMenu) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:MkMainNoteBook) [list source [file join $dir tixwidgets.tcl]] set auto_index(txiDemo:CreatePage) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:MkMainStatus) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:Status) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:MkWelcome) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:MkWelcomeBar) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:MkWelcomeText) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:MainTextFont) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:FileOpen) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:FileOpen:Doit) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:BalloonHelp) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:SelfTest) [list source [file join $dir tixwidgets.tcl]] set auto_index(tixDemo:Exit) [list source [file join $dir tixwidgets.tcl]] Tix8.4.3/demos/MkChoose.tcl0000644000122200012240000002135510761427130015723 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: MkChoose.tcl,v 1.4 2004/03/28 02:44:56 hobbs Exp $ # # MkChoose.tcl -- # # This file implements the "Choosers" page in the widget demo # # This file has not been properly documented. It is NOT intended # to be used as an introductory demo program about Tix # programming. For such demos, please see the files in the # demos/samples directory or go to the "Samples" page in the # "widget demo" # # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc MkChoosers {nb page} { set w [$nb subwidget $page] set name [tixOptionName $w] option add *$name*TixLabelFrame*label.padX 4 tixLabelFrame $w.til -label "Chooser Widgets" tixLabelFrame $w.cbx -label "tixComboBox" tixLabelFrame $w.ctl -label "tixControl" tixLabelFrame $w.sel -label "tixSelect" tixLabelFrame $w.opt -label "tixOptionMenu" tixLabelFrame $w.fil -label "tixFileEntry" tixLabelFrame $w.fbx -label "tixFileSelectBox" tixLabelFrame $w.tbr -label "Tool Bar" MkTitle [$w.til subwidget frame] MkCombo [$w.cbx subwidget frame] MkControl [$w.ctl subwidget frame] MkSelect [$w.sel subwidget frame] MkOptMenu [$w.opt subwidget frame] MkFileBox [$w.fbx subwidget frame] MkFileEnt [$w.fil subwidget frame] MkToolBar [$w.tbr subwidget frame] # # First column: comBox and selector tixForm $w.cbx -top 0 -left 0 -right %33 tixForm $w.sel -left 0 -right &$w.cbx -top $w.cbx tixForm $w.opt -left 0 -right &$w.cbx -top $w.sel -bottom -1 # # Second column: title .. etc tixForm $w.til -left $w.cbx -right %66 -top 0 tixForm $w.ctl -left $w.cbx -right &$w.til -top $w.til tixForm $w.fil -left $w.cbx -right &$w.til -top $w.ctl tixForm $w.tbr -left $w.cbx -right &$w.til -top $w.fil -bottom -1 # # Third column: file selection tixForm $w.fbx -left %66 -right -1 -top 0 } #---------------------------------------------------------------------- # ComboBox #---------------------------------------------------------------------- proc MkCombo {w} { set name [tixOptionName $w] option add *$name*TixComboBox*label.width 10 option add *$name*TixComboBox*label.anchor e option add *$name*TixComboBox*entry.width 14 tixComboBox $w.static -label "Static" \ -editable false tixComboBox $w.editable -label "Editable" \ -editable true tixComboBox $w.history -label "History" \ -editable true -history true -anchor e $w.static insert end January $w.static insert end February $w.static insert end March $w.static insert end April $w.static insert end May $w.static insert end June $w.static insert end July $w.static insert end August $w.static insert end September $w.static insert end October $w.static insert end November $w.static insert end December $w.editable insert end "America" $w.editable insert end "Britain" $w.editable insert end "China" $w.editable insert end "Denmark" $w.editable insert end "Egypt" $w.history insert end "/usr/bin/mail" $w.history insert end "/etc/profile" $w.history insert end "/home/d/doe/Mail/letter" pack $w.static $w.editable $w.history -side top -padx 5 -pady 3 } #---------------------------------------------------------------------- # The Control widgets #---------------------------------------------------------------------- set states {Alabama "New York" Pennsylvania Washington} proc stCmd {w by value} { global states set index [lsearch $states $value] set len [llength $states] set index [expr {$index + $by}] if {$index < 0} { set index [expr {$len -1}] } if {$index >= $len} { set index 0 } return [lindex $states $index] } proc stValidate {w value} { global states if {[lsearch $states $value] == -1} { return [lindex $states 0] } else { return $value } } proc MkControl {w} { set name [tixOptionName $w] option add *$name*TixControl*label.width 10 option add *$name*TixControl*label.anchor e option add *$name*TixControl*entry.width 13 tixControl $w.simple -label Numbers tixControl $w.spintext -label States \ -incrcmd [list stCmd $w.spintext 1] \ -decrcmd [list stCmd $w.spintext -1] \ -validatecmd [list stValidate .d] \ -value "Alabama" pack $w.simple $w.spintext -side top -padx 5 -pady 3 } #---------------------------------------------------------------------- # The Select Widgets #---------------------------------------------------------------------- proc MkSelect {w} { set name [tixOptionName $w] option add *$name*TixSelect*label.anchor c option add *$name*TixSelect*orientation vertical option add *$name*TixSelect*labelSide top tixSelect $w.sel1 -label "Mere Mortals" -allowzero true -radio true tixSelect $w.sel2 -label "Geeks" -allowzero true -radio false $w.sel1 add eat -text Eat $w.sel1 add work -text Work $w.sel1 add play -text Play $w.sel1 add party -text Party $w.sel1 add sleep -text Sleep $w.sel2 add eat -text Eat $w.sel2 add prog1 -text Program $w.sel2 add prog2 -text Program $w.sel2 add prog3 -text Program $w.sel2 add sleep -text Sleep pack $w.sel1 $w.sel2 -side left -padx 5 -pady 3 -fill x } #---------------------------------------------------------------------- # The OptMenu Widget #---------------------------------------------------------------------- proc MkOptMenu {w} { set name [tixOptionName $w] option add *$name*TixOptionMenu*label.anchor e tixOptionMenu $w.menu -label "File Format : " \ -options { menubutton.width 15 } $w.menu add command text -label "Plain Text" $w.menu add command post -label "PostScript" $w.menu add command format -label "Formatted Text" $w.menu add command html -label "HTML" $w.menu add separator sep $w.menu add command tex -label "LaTeX" $w.menu add command rtf -label "Rich Text Format" pack $w.menu -padx 5 -pady 3 -fill x } #---------------------------------------------------------------------- # FileEntry #---------------------------------------------------------------------- proc MkFileEnt {w} { set name [tixOptionName $w] message $w.msg \ -relief flat -width 240 -anchor n\ -text {Press the "open file" icon button and a\ TixFileSelectDialog will popup.} tixFileEntry $w.ent -label "Select a file : " pack $w.msg -side top -expand yes -fill both -padx 3 -pady 3 pack $w.ent -side top -fill x -padx 3 -pady 3 } proc MkFileBox {w} { set name [tixOptionName $w] message $w.msg \ -relief flat -width 240 -anchor n\ -text {The TixFileSelectBox is Motif-style file selection\ box with various enhancements. For example, you can adjust the\ size of the two listboxes and your past selections are recorded.} tixFileSelectBox $w.box pack $w.msg -side top -expand yes -fill both -padx 3 -pady 3 pack $w.box -side top -fill x -padx 3 -pady 3 } #---------------------------------------------------------------------- # Tool Bar #---------------------------------------------------------------------- proc MkToolBar {w} { set name [tixOptionName $w] option add $name*TixSelect*frame.borderWidth 1 message $w.msg -relief flat -width 240 -anchor n\ -text {The Select widget is also good for arranging buttons\ in a tool bar.} frame $w.bar -bd 2 -relief raised tixSelect $w.font -allowzero true -radio false -label {} tixSelect $w.para -allowzero false -radio true -label {} $w.font add bold -bitmap [tix getbitmap bold] $w.font add italic -bitmap [tix getbitmap italic] $w.font add underline -bitmap [tix getbitmap underlin] $w.font add capital -bitmap [tix getbitmap capital] $w.para add left -bitmap [tix getbitmap leftj] $w.para add right -bitmap [tix getbitmap rightj] $w.para add center -bitmap [tix getbitmap centerj] $w.para add justify -bitmap [tix getbitmap justify] pack $w.msg -side top -expand yes -fill both -padx 3 -pady 3 pack $w.bar -side top -fill x -padx 3 -pady 3 pack $w.para $w.font -in $w.bar -side left -padx 4 -pady 3 } #---------------------------------------------------------------------- # Title #---------------------------------------------------------------------- proc MkTitle {w} { set name [tixOptionName $w] option add $name*TixSelect*frame.borderWidth 1 message $w.msg \ -relief flat -width 240 -anchor n\ -text {There are many types of "choose" widgets that allow\ the user to input different type of information.} pack $w.msg -side top -expand yes -fill both -padx 3 -pady 3 } Tix8.4.3/demos/MkScroll.tcl0000644000122200012240000001200307404574003015731 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: MkScroll.tcl,v 1.3 2001/12/09 05:34:59 idiscovery Exp $ # # MkScroll.tcl -- # # This file implements the "Scrolled Widgets" page in the widget demo # # This file has not been properly documented. It is NOT intended # to be used as an introductory demo program about Tix # programming. For such demos, please see the files in the # demos/samples directory or go to the "Samples" page in the # "widget demo" # # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc MkScroll {nb page} { set w [$nb subwidget $page] set name [tixOptionName $w] option add *$name*TixLabelFrame*label.padX 4 tixLabelFrame $w.sls -label "tixScrolledListBox" tixLabelFrame $w.swn -label "tixScrolledWindow" tixLabelFrame $w.stx -label "tixScrolledText" MkSList [$w.sls subwidget frame] MkSText [$w.stx subwidget frame] MkSWindow [$w.swn subwidget frame] tixForm $w.sls -top 0 -left 0 -right %33 -bottom -1 tixForm $w.swn -top 0 -left $w.sls -right %66 -bottom -1 tixForm $w.stx -top 0 -left $w.swn -right -1 -bottom -1 } #---------------------------------------------------------------------- # ScrolledListBox #---------------------------------------------------------------------- proc MkSList {w} { frame $w.top -width 300 -height 330 frame $w.bot message $w.top.msg \ -relief flat -width 200 -anchor n\ -text {This TixScrolledListBox is configured so that it uses\ scrollbars only when it is necessary. Use the handles to\ resize the listbox and watch the scrollbars automatically\ appear and disappear.} set list [tixScrolledListBox $w.top.list -scrollbar auto] place $list -x 50 -y 150 -width 120 -height 80 $list subwidget listbox insert end Alabama $list subwidget listbox insert end California $list subwidget listbox insert end Montana $list subwidget listbox insert end "New Jersy" $list subwidget listbox insert end "New York" $list subwidget listbox insert end Pennsylvania $list subwidget listbox insert end Washington set rh [tixResizeHandle $w.top.r -relief raised \ -handlesize 8 -gridded true -minwidth 50 -minheight 30] button $w.bot.btn -text Reset -command "SList:Reset $rh $list" pack propagate $w.top 0 pack $w.top.msg -fill x pack $w.bot.btn -anchor c pack $w.top -expand yes -fill both pack $w.bot -fill both bind $list "tixDoWhenIdle $rh attachwidget $list" } proc SList:Reset {rh list} { place $list -x 50 -y 150 -width 120 -height 80 update $rh attachwidget $list } #---------------------------------------------------------------------- # ScrolledWindow #---------------------------------------------------------------------- proc MkSWindow {w} { global demo_dir frame $w.top -width 330 -height 330 frame $w.bot message $w.top.msg \ -relief flat -width 200 -anchor n\ -text {The TixScrolledWindow widget allows you\ to scroll any kind of TK widget. It is more versatile\ than a scrolled canvas widget} set win [tixScrolledWindow $w.top.win -scrollbar auto] set f [$win subwidget window] set image [image create photo -file $demo_dir/bitmaps/tix.gif] label $f.b1 -image $image pack $f.b1 -expand yes -fill both place $win -x 30 -y 150 -width 190 -height 120 set rh [tixResizeHandle $w.top.r -relief raised \ -handlesize 8 -gridded true -minwidth 50 -minheight 30] button $w.bot.btn -text Reset -command "SWindow:Reset $rh $win" pack propagate $w.top 0 pack $w.top.msg -fill x pack $w.bot.btn -anchor c pack $w.top -expand yes -fill both pack $w.bot -fill both bind $win "tixDoWhenIdle $rh attachwidget $win" } proc SWindow:Reset {rh win} { place $win -x 30 -y 150 -width 190 -height 120 update $rh attachwidget $win } #---------------------------------------------------------------------- # ScrolledText #---------------------------------------------------------------------- proc MkSText {w} { frame $w.top -width 330 -height 330 frame $w.bot message $w.top.msg \ -relief flat -width 200 -anchor n\ -text {The TixScrolledWindow widget allows you\ to scroll any kind of TK widget. It is more versatile\ than a scrolled canvas widget} set win [tixScrolledText $w.top.win -scrollbar both] $win subwidget text config -wrap none place $win -x 30 -y 150 -width 190 -height 100 set rh [tixResizeHandle $w.top.r -relief raised \ -handlesize 8 -gridded true -minwidth 50 -minheight 30] button $w.bot.btn -text Reset -command "SText:Reset $rh $win" pack propagate $w.top 0 pack $w.top.msg -fill x pack $w.bot.btn -anchor c pack $w.top -expand yes -fill both pack $w.bot -fill both bind $win "tixDoWhenIdle $rh attachwidget $win" } proc SText:Reset {rh win} { place $win -x 30 -y 150 -width 190 -height 100 update $rh attachwidget $win } Tix8.4.3/aclocal.m40000664000122200012240000000022310030100111014201 0ustar jeffhjeffh00000000000000# # Include the TEA standard macro set # builtin(include,tclconfig/tcl.m4) # # Add here whatever m4 macros you want to define for your package # Tix8.4.3/tests/0000775000122200012240000000000010767576212013552 5ustar jeffhjeffh00000000000000Tix8.4.3/tests/xpm/0000775000122200012240000000000010767576212014356 5ustar jeffhjeffh00000000000000Tix8.4.3/tests/xpm/f-badcol.xpm0000664000122200012240000000063407110476705016550 0ustar jeffhjeffh00000000000000/* XPM */ static char * folder_xpm[] = { /* width height num_colors chars_per_pixel */ "16 12 3 1", /* colors */ " s None c None", ". c black", "X c foooo", /* pixels */ " .... ", " .XXXX. ", " .XXXXXX. ", "............. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", "............. "}; Tix8.4.3/tests/xpm/xpm.tcl0000644000122200012240000000755507564540062015673 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: xpm.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # proc About {} { return "the pixmap image reader" } proc Test {} { set data { /* XPM */ static char * folder_xpm[] = { /* width height num_colors chars_per_pixel */ "16 12 4 1", /* colors */ " s None c None", ". c black", "X c #f0ff80", "+ c red", /* pixels */ " .... ", " .XXXX. ", " .XXXXXX. ", "............. ", ".XXXXXXXXXXX. ", ".XXXXX+XXXXX. ", ".XXXXX+XXXXX. ", ".XX+++++++XX. ", ".XXXXX+XXXXX. ", ".XXXXX+XXXXX. ", ".XXXXXXXXXXX. ", "............. "}; } set data1 { /* XPM */ static char * news4_xpm[] = { /* width height ncolors chars_per_pixel */ "45 34 6 1", /* colors */ " s None c None", ". c black", "X c lemon chiffon", "o c tan", "O c blue", "+ c dark slate grey", /* pixels */ " ", " ", " . ", " .X. ", " ..XX. ", " .XXX.X. ", " .XXX.XX. ", " .XXX.XXXX. ", " ..XXX.XXX.XX. ", " .XX...XXX.o..X. ", " .XX.OO.XX.oooo.X.. ", " .XXX..O.X.oo..oo..X.. ", " ..XXX.X..XX..o...oo.XXX. ", " .XXXX.XXXXX.XX.oo...XXXXX. ", " .XX..XXXX..XXXX.o.XXXX.XXX. ", " .X.X.XXXX.XXX.XX..XXX..XXXX. ", " ..X.XXXXX.XX..XXXXXXX.XXXX.XX. ", " .X.X.XXX.XX.XXXX.XXX.XXXX.XXX. ", " .X.X.X.XX.XXXX.XXXXXXX..XXX.. ", " .X.X.XX.XXX..XX.XXXX.XXX...+ ", " ++.X.X.XXXX.XXX.XXXX.XXX..++ ", " ++++.X.X.XX.XX..XXX.XXXX..++ ", " +++++.X.X.XXX.XXXX.XXX...++ ", " +++++.X.X.X.XXX..XXX..+++ ", " +++++.X.X.XXX.XXXX..++ ", " +++++.X.X.X.XXX...++ ", " ++++.X.X.XXX..+++ ", " ++++.X.X.X..++ ", " +++.XX...++ ", " ++...+++ ", " ++++ ", " ", " ", " "}; } # Test for create # # # Good pixmap # test {set pixmap1 [image create pixmap -file f-ok.xpm]} # With some comments # test {set pixmap2 [image create pixmap -file f-commt.xpm]} # Bad color (should use "black" by default) # test {set pixmap3 [image create pixmap -file f-badcol.xpm]} # Shortened lines (should show garbage, shouldn't core dump) # test {set pixmap4 [image create pixmap -file f-shortln.xpm]} # Two chars per pixel # test {set pixmap5 [image create pixmap -file 2cpp.xpm]} # Bad pixel (should show garbage for undefined pixels) # test {set pixmap6 [image create pixmap -file f-badpix.xpm]} # Data switch # test {set pixmap7 [image create pixmap -data $data]} # Missing one line # test {image create pixmap -file f-missline.xpm} {File For} # Multi-word color names # test {set pixmap8 [image create pixmap -data $data1]} # Brace used as pixel value # test {set pixmap9 [image create pixmap -file brace.xpm]} # Many /* ... */ comments # test {set pixmap10 [image create pixmap -file brace.xpm]} set num 10 for {set i 1} {$i < $num} {incr i} { button .b$i -image [set pixmap$i] -bg red pack .b$i } update for {set i 1} {$i < $num} {incr i} { destroy .b$i image delete [set pixmap$i] } } Tix8.4.3/tests/xpm/files0000664000122200012240000000002407110476705015371 0ustar jeffhjeffh00000000000000xpm.tcl compound.tclTix8.4.3/tests/xpm/2cpp.xpm0000664000122200012240000000022407110476705015740 0ustar jeffhjeffh00000000000000/* XPM */ static char * folder_xpm[] = { "4 4 3 2", "AA c black", ".. c white", "XY c yellow", "AAAAAAXY", "XYAAAAAA", "..AA..AA", "..AAAA..", }; Tix8.4.3/tests/xpm/f-missline.xpm0000664000122200012240000000056407110476705017151 0ustar jeffhjeffh00000000000000/* XPM */ static char * folder_xpm[] = { /* width height num_colors chars_per_pixel */ "16 12 3 1", /* colors */ " s None c None", ". c black", "X c foooo", /* pixels */ " .... ", " .XXXX. ", " .XXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", "............. "}; Tix8.4.3/tests/xpm/compound.tcl0000644000122200012240000000216107564540062016677 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: compound.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # proc About {} { return "the compound image type" } proc Test {} { set num 3 # Test for create # # test {image create compound -foo} {missing} test {image create compound -window} {missing} test {image create compound -window foo} {path name} test {set image1 [image create compound -window .b]} {path name} for {set i 0} {$i < $num} {incr i} { button .b$i pack .b$i } # (0) Empty image # test {set image0 [image create compound -window .b0]} # (1) Simple image # test {set image1 [image create compound -window .b1]} $image1 add line $image1 add text -text Hello # (2) Two lines # test {set image2 [image create compound -window .b2]} $image2 add line $image2 add text -text "Line One" $image2 add line $image2 add text -text "Line Two" # Display them # for {set i 0} {$i < $num} {incr i} { .b$i config -image [set image$i] } } Tix8.4.3/tests/xpm/brace.xpm0000664000122200012240000000053607110476705016156 0ustar jeffhjeffh00000000000000/* XPM */ static char * tmp [] = { /* width height ncolors cpp [x_hot y_hot] */ "10 10 2 1 -1 -1", /* colors */ " s iconColor1 m black c gray", "} s iconColor2 m white c white", /* pixels */ " ", " ", " ", " ", " ", "}}}}}}}}}}", "}}}}}}}}}}", "}}}}}}}}}}", "}}}}}}}}}}", "}}}}}}}}}}"}; Tix8.4.3/tests/xpm/folder.xpm0000664000122200012240000000063607110476705016356 0ustar jeffhjeffh00000000000000/* XPM */ static char * folder_xpm[] = { /* width height num_colors chars_per_pixel */ "16 12 3 1", /* colors */ " s None c None", ". c black", "X c #f0ff80", /* pixels */ " .... ", " .XXXX. ", " .XXXXXX. ", "............. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", "............. "}; Tix8.4.3/tests/xpm/comments.xpm0000664000122200012240000000073407110476705016727 0ustar jeffhjeffh00000000000000/* XPM */ static char * tmp [] = { /* width height ncolors cpp [x_hot y_hot] */ /* width height ncolors cpp [x_hot y_hot] */ /* Some comments */ "10 10 2 1 -1 -1", /* colors */ " s iconColor1 m black c gray", "} s iconColor2 m white c white", /* pixels */ " ", " ", " ", " ", /* Some comments */ " ", "}}}}}}}}}}", "}}}}}}}}}}", "}}}}}}}}}}" /* Some comments */, "}}}}}}}}}}", "}}}}}}}}}}" /* Some comments */}; Tix8.4.3/tests/xpm/f-ok.xpm0000664000122200012240000000063607110476705015737 0ustar jeffhjeffh00000000000000/* XPM */ static char * folder_xpm[] = { /* width height num_colors chars_per_pixel */ "16 12 3 1", /* colors */ " s None c None", ". c black", "X c #f0ff80", /* pixels */ " .... ", " .XXXX. ", " .XXXXXX. ", "............. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", "............. "}; Tix8.4.3/tests/xpm/f-shortln.xpm0000664000122200012240000000056607110476705017021 0ustar jeffhjeffh00000000000000/* XPM */ static char * folder_xpm[] = { /* width height num_colors chars_per_pixel */ "16 12 3 1", /* colors */ " s None c None", ". c black", "X c #f0ff80", /* pixels */ " .... ", " .XXXX. ", " .XXXXXX. ", "............. ", ".XXXXXXXXXXX. ", ".XX", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XX. ", ".XX. ", ".XX. ", "............. "}; Tix8.4.3/tests/xpm/f-badpix.xpm0000664000122200012240000000063607110476705016575 0ustar jeffhjeffh00000000000000/* XPM */ static char * folder_xpm[] = { /* width height num_colors chars_per_pixel */ "16 12 3 1", /* colors */ " s None c None", ". c black", "X c #f0ff80", /* pixels */ " .... ", " .XXXX. ", " .XXXXXX. ", "............. ", ".XBBBBBBXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXBBXXX. ", ".XXBBBBBBXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXNNXXX. ", ".XXXXXXXXXXX. ", "............. "}; Tix8.4.3/tests/xpm/f-commt.xpm0000664000122200012240000000067107110476705016444 0ustar jeffhjeffh00000000000000/* XPM */ static char * folder_xpm[] = { /* width height num_colors chars_per_pixel */ "16 12 3 1", /* colors */ " s None c None", ". c black", "X c #f0ff80", /* pixels asd a sd as da sd asad */ " .... ", " .XXXX. ", " .XXXXXX. ", "............. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", ".XXXXXXXXXXX. ", "............. "}; Tix8.4.3/tests/grid/0000775000122200012240000000000010767576212014477 5ustar jeffhjeffh00000000000000Tix8.4.3/tests/grid/files0000664000122200012240000000001007110476704015504 0ustar jeffhjeffh00000000000000Grid.tclTix8.4.3/tests/grid/Grid.tcl0000644000122200012240000001011007564540062016052 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Grid.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # This tests the Grid widget. # # # proc About {} { return "Basic tests for the Grid widget" } proc Test {} { TestBlock grid-1.1 {Grid creation} { test {tixGrid} {args} test {tixGrid .g -ff} {unknown} test {tixGrid .g -width} {missing} Assert {[info command .g] == {}} Assert {![winfo exists .g]} } TestBlock grid-1.2 {Grid creation} { set g [tixGrid .g] pack $g -expand yes -fill both update destroy $g } TestBlock grid-2.1 {Grid widget commands} { set g [tixGrid .g] pack $g -expand yes -fill both test {$g} {args} set foo "" } TestBlock grid-2.2 {Grid widget commands} { $g config -selectmode browse Assert {[tixStrEq [$g cget -selectmode] browse]} } #---------------------------------------- # Sites #---------------------------------------- foreach cmd {anchor dragsite dropsite} { TestBlock grid-3.1 "Grid \"$cmd\" widget command" { test1 {$g $cmd} \ "wrong # args: should be \".g $cmd option ?x y?\"" } TestBlock grid-3.2 "Grid \"$cmd\" widget command" { test1 {$g $cmd foo} \ {wrong option "foo", must be clear, get or set} } TestBlock grid-3.3 "Grid \"$cmd\" widget command" { test1 {$g $cmd clear bar} \ "wrong # of arguments, must be: .g $cmd clear" } TestBlock grid-3.4 "Grid \"$cmd\" widget command" { test1 {$g $cmd set 0 0 bar} \ "wrong # args: should be \".g $cmd option ?x y?\"" } TestBlock grid-3.5 "Grid \"$cmd\" widget command" { test1 {$g $cmd set xxx 0} \ {expected integer but got "xxx"} } TestBlock grid-3.6 "Grid \"$cmd\" widget command" { test1 {$g $cmd set 0 xxx} \ {expected integer but got "xxx"} } foreach selunit {row column cell} { TestBlock grid-3.7 "Grid \"$cmd\" widget command" { $g config -selectunit $selunit $g $cmd set 0 0 update } } TestBlock grid-3.8 "Grid \"$cmd\" widget command" { $g $cmd set 0 0 Assert {[tixStrEq [$g $cmd get] "0 0"]} } TestBlock grid-3.9 "Grid \"$cmd\" widget command" { $g $cmd set -20 -0 Assert {[tixStrEq [$g $cmd get] "0 0"]} } TestBlock grid-3.10 "Grid \"$cmd\" widget command" { $g $cmd set 10000000 100000000 Assert {[tixStrEq [$g $cmd get] "10000000 100000000"]} } } #---------------------------------------- # set #---------------------------------------- TestBlock grid-4.1 {Grid "set" widget command} { test {$g set} {args} test {$g set 0 0 -foo} {missing} test {$g set 0 0 -foo bar} {unknown} test {$g set 0 0 -itemtype foo} {unknown} test {$g set 0 0 -itemtype imagetext -image foo} {image} test {$g set 0 0 -itemtype imagetext -text Hello -image \ [tix getimage folder] } update } TestBlock grid-4.2 {Grid "set" widget command} { for {set x 0} {$x < 19} {incr x} { for {set y 0} {$y < 13} {incr y} { $g set $x $y -itemtype imagetext -text ($x,$y) \ -image [tix getimage folder] } } update } TestBlock grid-4.3 {Grid "unset" widget command} { for {set x 0} {$x < 23} {incr x} { for {set y 0} {$y < 19} {incr y} { $g unset $x $y } } update } #---------------------------------------- # delete #---------------------------------------- TestBlock grid-5.1 {Grid "delete" widget command} { for {set x 0} {$x < 19} {incr x} { for {set y 0} {$y < 13} {incr y} { $g set $x $y -itemtype imagetext -text ($x,$y) \ -image [tix getimage folder] } } foreach index {0 1 3 2 6 3 1 1 max 19 13 max} { $g delete row $index $g delete col $index update } } #---------------------------------------- # move #---------------------------------------- TestBlock grid-6.1 {Grid "move" widget command} { for {set x 0} {$x < 19} {incr x} { for {set y 0} {$y < 13} {incr y} { $g set $x $y -itemtype imagetext -text ($x,$y) \ -image [tix getimage folder] } } foreach index {0 1 3 2 6 3 1 1 max 19 13 max} { $g move row $index $index 3 $g move col $index $index -2 update } } } Tix8.4.3/tests/itcl/0000775000122200012240000000000010767576212014505 5ustar jeffhjeffh00000000000000Tix8.4.3/tests/itcl/files0000664000122200012240000000005307110476704015521 0ustar jeffhjeffh00000000000000general.tcl scope1.tcl namesp.tcl itk.tcl Tix8.4.3/tests/itcl/scope1.tcl0000644000122200012240000000222007564540062016370 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: scope1.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # proc About {} { return "Testing creation of Tix widgets inside ITCL classes" } proc Test {} { class foo { inherit itk::Widget constructor {args} { itk_component add lab { label $itk_interior.lab \ -textvariable [code choice($this)] } itk_component add le { tixOptionMenu $itk_interior.le \ -label "File format" \ -variable [code choice($this)] \ -command "$this foocmd" } foreach cmd {HTML PostScript ASCII} { $itk_component(le) add command $cmd } pack $itk_component(lab) $itk_component(le) \ -anchor e \ -padx 10 \ -pady 10 \ -fill x eval itk_initialize $args } common choice method foocmd {args} { puts $args } method set_format {format} { set choice($this) $format } } usual TixOptionMenu { } foo .xy pack .xy .xy set_format ASCII update .xy component le config -value PostScript update .xy component le config -value HTML } Tix8.4.3/tests/itcl/namesp.tcl0000644000122200012240000000074707564540062016475 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: namesp.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # This file tests the pixmap image reader # proc About {} { return "This file performs test on name space" } proc Test {} { namespace mySpace { variable hsl ".hsl" proc creatHSL {} { global hsl tixScrolledHList $hsl } proc packHSL {} { global hsl pack $hsl } } mySpace::creatHSL mySpace::packHSL } Tix8.4.3/tests/itcl/pkginit.tcl0000644000122200012240000000040007564540062016641 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: pkginit.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # #@scope :: {lappend auto_path $env(IWIDGETS_LIBRARY)} #@scope :: {source "$env(IWIDGETS_LIBRARY)/init.iwidgets"} Tix8.4.3/tests/itcl/general.tcl0000644000122200012240000000041207564540062016614 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: general.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # ITcl general test # proc About {} { return "This file performs general test on Tix w/ ITcl 2.0" } proc Test {} { } Tix8.4.3/tests/itcl/itk.tcl0000644000122200012240000000131107564540062015765 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: itk.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # This file tests the pixmap image reader # proc About {} { return "This file performs tests with ITK mega widgets" } proc Test {} { frame .f pack .f tixPanedWindow .f.tpw pack .f.tpw -side left -expand yes -fill both set p1 [.f.tpw add t1 -min 20 -size 120 ] set p2 [.f.tpw add t2 -min 20 -size 80 ] frame $p1.t1 frame $p2.t2 pack $p1.t1 $p2.t2 tixScrolledListBox $p1.t1.list tixScrolledListBox $p2.t2.list pack $p1.t1.list $p2.t2.list Combobox .ibox -labeltext "ItkBox" -items {one two three} pack .ibox } Tix8.4.3/tests/load/0000775000122200012240000000000010767576212014471 5ustar jeffhjeffh00000000000000Tix8.4.3/tests/load/files0000664000122200012240000000001407110476704015502 0ustar jeffhjeffh00000000000000general.tcl Tix8.4.3/tests/load/pkginit.tcl0000644000122200012240000000021707564540062016633 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: pkginit.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # Tix8.4.3/tests/load/general.tcl0000644000122200012240000000113707564540062016605 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: general.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # This file tests the pixmap image reader # proc About {} { return "This file performs general test on Tix w/ Tk 4.1 dynamic loading" } proc Test {} { if [tixStrEq [info commands tix] tix] { return } if ![file exists ../../unix-tk4.1/libtix.so] { puts "File ../../unix-tk4.1/libtix.so doesn't exist." puts "Dynamic loading skipped." return } test {load ../../unix-tk4.1/libtix.so Tix} test {tixComboBox .c} test {pack .c} } Tix8.4.3/tests/option.test0000664000122200012240000000267707564540061015771 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # option.test -- # # This file is a Tcl script to test out tixOption.c. # It is organized in the standard fashion for Tcl tests. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: option.test,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ package require Tix if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } if {![info exists widgetTestClass1]} { source [file join [pwd] [file dirname [info script]] widgetTestClass1.tcl] } set longword [widgetTestClass1_longword] test option-1.1 {Tix_CallConfigMethod()} { widgetTestClass1 .test set a [.test config -$longword] destroy .test set a } [list -$longword $longword $longword $longword $longword] test option-1.2 {Tix_CallConfigMethod()} { widgetTestClass1 .test .test config -$longword 1234 set a [.test config -$longword] destroy .test set a } [list -$longword $longword $longword $longword 1234] test option-1.3 {Tix_CallConfigMethod()} { widgetTestClass1 .test .test config -x$longword 1234 set a [.test config -x$longword] destroy .test set a } [list -x$longword x$longword x$longword x$longword 1234-x$longword] # cleanup ::tcltest::cleanupTests return Tix8.4.3/tests/Test.tcl0000644000122200012240000000351207564540061015166 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Test.tcl,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ # #! /bin/sh # the next line restarts using tclsh \ exec tclsh "$0" "$@" # Test.tcl -- # # This file executes the Tix test suite for the Unix platform. # Don't execute this file directly. Read the README file in this # directory first. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # set targets [lindex $argv 0] set argvfiles [lrange $argv 1 end] set env(WAITTIME) 200 set genDirs { general xpm hlist } set env(TCL_LIBRARY) $env(TEST_TCL_LIBRARY) set env(TK_LIBRARY) $env(TEST_TK_LIBRARY) set env(ITCL_LIBRARY) $env(TEST_ITCL_LIBRARY) set env(ITK_LIBRARY) $env(TEST_ITK_LIBRARY) set BINSRC_DIR $env(TEST_BINSRC_DIR) catch { unset env(TIX_DEBUG_INTERACTIVE) } set load(bin) $BINSRC_DIR/../tk4.1/unix/wish set tk40(bin) $BINSRC_DIR/unix-tk4.0/tixwish set tk41(bin) $BINSRC_DIR/unix-tk4.1/tixwish set tk42(bin) $BINSRC_DIR/unix-tk4.2/tixwish set itcl20(bin) $BINSRC_DIR/unix-itcl2.0/itixwish set itcl21(bin) $BINSRC_DIR/unix-itcl2.1/itixwish if ![info exists env(LD_LIBRARY_PATH)] { set env(LD_LIBRARY_PATH) "" } if [info exists env(TEST_LDPATHS)] { set env(LD_LIBRARY_PATH) $env(TEST_LDPATHS):$env(LD_LIBRARY_PATH) } foreach t $targets { upvar #0 $t target puts "Executing ---\n" puts "env TCL_LIBRARY=$env(TCL_LIBRARY) TK_LIBRARY=$env(TK_LIBRARY) ITCL_LIBRARY=$env(ITCL_LIBRARY) ITK_LIBRARY=$env(ITK_LIBRARY) LD_LIBRARY_PATH=$env(LD_LIBRARY_PATH) TIX_LIBRARY=$env(TIX_LIBRARY) $target(bin)" puts "" puts "Testing target $t with executable $target(bin)" eval exec $target(bin) Driver.tcl $argvfiles >@ stdout 2>@ stderr } Tix8.4.3/tests/itcl.test0000664000122200012240000000413107564540061015377 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # itcl.test -- # # This file tests interaction between Tix and [incr tcl]/[incr tk]. # It is organized in the standard fashion for Tcl # tests. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: itcl.test,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ package require Tix if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } if {[catch {package require Itcl} msg] || [catch {package require Itk} msg]} { puts "itcl/itk not installed on your system: $msg" puts "tests in [info script] skipped" ::tcltest::cleanupTests return } test itcl-1.1 {variable scope} { # Tests: # - Creating a tix widget inside the scope of an itcl method # - Sharing global variable with itcl itcl::class ::foo { inherit itk::Widget constructor {args} { itk_component add lab { label $itk_interior.lab \ -textvariable ::choice($this) } itk_component add tixwidget { tixOptionMenu $itk_interior.tixwidget \ -label "File format" \ -variable ::choice($this) \ -command "$this foocmd" } foreach cmd {HTML PostScript ASCII} { $itk_component(tixwidget) add command $cmd } pack $itk_component(lab) $itk_component(tixwidget) \ -anchor e \ -padx 10 \ -pady 10 \ -fill x eval itk_initialize $args } common choice method foocmd {args} { #puts $args } method set_format {format} { set ::choice($this) $format } } itk::usual TixOptionMenu { } foo .xy pack .xy .xy set_format ASCII lappend list $choice(::.xy) .xy component tixwidget config -value PostScript lappend list $choice(::.xy) .xy component tixwidget config -value HTML lappend list $choice(::.xy) set list } {ASCII PostScript HTML} # cleanup ::tcltest::cleanupTests return Tix8.4.3/tests/files0000664000122200012240000000130407564540061014567 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # List of tests to execute. # Format: # # { } # { } # ... # # the conditions are AND'ed. Target is taken only if all conditions # are true {general } {xpm {i pixmap} } {hlist {c tixHList} } {load {c load} } {tlist {c tixTList} } {grid {c tixGrid} } {itcl {c @scope} } # This following subdirectory tests whether there is any garbage left # after all the test files are executed. If so, either Tix has # resource leak or the test suite doesn't clean up properly. # {cleanup } Tix8.4.3/tests/hlist/0000775000122200012240000000000010767576212014675 5ustar jeffhjeffh00000000000000Tix8.4.3/tests/hlist/HLHdr.tcl0000644000122200012240000000424307564540062016336 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: HLHdr.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # This tests the "header" functions in HList # # # Assumptions: # (1) add command OK # proc test {cmd {result {}} {ret {}}} { if [catch {set ret [uplevel 1 $cmd]} err] { set done 0 foreach r $result { if [regexp $r $err] { puts "error message OK: $err" set done 1 break } } if {!$done} { error $err } } else { puts "execution OK: $cmd" } return $ret } set h [tixHList .h -header 1 -columns 2] pack $h -expand yes -fill both $h add hello -text hello $h add noind -text hello test {$h header} {args} test {$h header bad} {unknown} # Test for create # # test {$h header create} {args} test {$h header create 3} {{exist}} test {$h header create 1 -itemtype} {missing} test {$h header create 1 -itemtype bad} {unknown} test {$h header create 1 -itemtype imagetext -text Hello -image [tix getimage folder]} # Test for cget # test {$h header cget} {args} test {$h header cget 0 -text} {does not have} test {$h header cget 1} {args} test {$h header cget 3 -text} {exist} test {$h header cget 1 arg arg} {args} test {$h header cget 1 -bad} {{unknown}} test {$h header cget 1 -text} # Test for config # test {$h header config} {args} test {$h header config 3 -text} {exist} test {$h header config 0 -text} {does not have} test {$h header config 1 -bad} {{unknown}} test {$h header config 1} test {$h header config 1 -text} test {$h header config 1 -text Hi} # Test for size # test {$h header size} {args} test {$h header size 0 0} {args} test {$h header size 4} {exist} test {$h header size 0} {not have} test {puts [$h header size 1]} # Test for exist # test {$h header exist} {args} test {$h header exist hello hi} {args} test {$h header exist 4} {exist} test {puts [$h header exist 0]} test {puts [$h header exist 1]} # Test for delete # test {$h header delete} {args} test {$h header delete hello hi} {args} test {$h header delete 4} {exist} test {$h header delete 0} {not have} test {$h header delete 1} # just do it again .. # test {$h header create 1 -itemtype imagetext -text Hello -image [tix getimage folder]} Tix8.4.3/tests/hlist/HList.tcl0000644000122200012240000000335007564540062016416 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: HList.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # HList.tcl -- # # General HList test. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "General tests for the HList widget" } proc Test {} { set h [tixHList .h -selectmode single] pack $h -expand yes -fill both # PutP "Testing the selection command" # for {set x 0} {$x < 40} {incr x} { $h add foo$x -text Foo$x } update test {$h selection set} {arg} test {$h selection set foo1} test {$h selection get foo} {arg} Assert {[tixStrEq [$h selection get] "foo1"]} Assert {[tixStrEq [$h selection get] [$h info selection]]} # PutP "Testing the info bbox command" # $h config -browsecmd "HLTest_BrowseCmd $h" global hlTest_selected for {set x 0} {$x <= 3} {incr x} { set ent foo[expr $x * 8] $h see $ent update set bbox [$h info bbox $ent] Assert {![tixStrEq "$bbox" ""]} set hlTest_selected "" Click $h [lindex $bbox 0] [lindex $bbox 1] update Assert {[tixStrEq "$hlTest_selected" "$ent"]} set hlTest_selected "" Click $h [lindex $bbox 2] [lindex $bbox 3] update Assert {[tixStrEq "$hlTest_selected" "$ent"]} } # PutP "Testing the ClickHListEntry test function" # for {set x 0} {$x <= 3} {incr x} { set hlTest_selected "" set ent foo[expr $x * 8] ClickHListEntry $h $ent update Assert {[tixStrEq "$hlTest_selected" "$ent"]} } } proc HLTest_BrowseCmd {w args} { global hlTest_selected set hlTest_selected [tixEvent value] } Tix8.4.3/tests/hlist/files0000664000122200012240000000003707110476704015713 0ustar jeffhjeffh00000000000000HLInd.tcl DirList.tcl items.tclTix8.4.3/tests/hlist/HLInd.tcl0000644000122200012240000000315007564540062016327 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: HLInd.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # proc Test {} { set h [tixHList .h -indicator 1 -indent 20] pack $h -expand yes -fill both button .b -text close -command "Done forced" pack .b $h add hello -text hello $h add noind -text hello test {$h indicator} {args} test {$h indicator bad} {unknown} # Test for create # # test {$h indicator create} {args} test {$h indicator create xyz} {{not found}} test {$h indicator create hello -itemtype} {missing} test {$h indicator create hello -itemtype bad} {unknown} test {$h indicator create hello -itemtype imagetext \ -image [tix getimage plus]} # Test for cget # test {$h indicator cget} {args} test {$h indicator cget hello} {args} test {$h indicator cget hello arg arg} {args} test {$h indicator cget noind -text} {{does not have}} test {$h indicator cget hello -bad} {{unknown}} test {$h indicator cget hello -image} # Test for size # test {$h indicator size} {args} test {$h indicator size hello hi} {args} test {$h indicator size bad} {{not found}} test {$h indicator size noind} {{does not have}} test {set x [$h indicator size hello]} test {$h indicator cget hello -image} {{does not}} # Test for delete # test {$h indicator delete} {args} test {$h indicator delete hello hi} {args} test {$h indicator delete bad} {{not found}} test {$h indicator delete hello} test {$h indicator cget hello -image} {{does not}} update } Tix8.4.3/tests/hlist/DirList.tcl0000644000122200012240000000226010031436051016725 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: DirList.tcl,v 1.3 2004/03/28 02:44:57 hobbs Exp $ # # This file tests the pixmap image reader # proc About {} { return "This file performs test on the DirList widget" } proc Test {} { set w .dirlist tixDirList $w pack $w set h [$w subwidget hlist] # If we didn't specifi -value, the DirList should display the # current directory Assert {[string equal [$w cget -value] [pwd]]} # After changing the directory, the selection and anchor should change as # well set root [$h info children ""] ClickHListEntry $h $root single Assert {[string equal [$w cget -value] [$h info data $root]]} Assert {[string equal [$h info selection] $root]} Assert {[string equal [$h info anchor] $root]} if {$::tcl_platform(platform) eq "windows"} { set dir1 C:\\Windows set dir2 C:\\Backup } else { set dir1 /etc set dir2 /etc } foreach dir [list $dir1 $dir2] { if ![file exists $dir] { continue } $w config -value $dir Assert {[string equal [$w cget -value] $dir]} Assert {[string equal [$h info data [$h info anchor]] $dir]} } } Tix8.4.3/tests/hlist/items.tcl0000644000122200012240000000173507564540062016521 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: items.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # items.tcl -- # # Test the handling of DisplayStyle and DisplayItem. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Test the handling of DisplayStyle and DisplayItem." } proc Test {} { TestBlock items-1.1 {tixTmpLine} { tixHList .c set style [tixDisplayStyle text -refwindow .c -font fixed] .c add a -itemtype text -style $style -text Hello .c add b -itemtype text -text Hello tixHList .d .d add a -itemtype text -style $style -text Hello .d add b -itemtype text -text Hello pack .c .d -expand yes -fill both update destroy .c update Assert {[string comp [info command $style] ""] == 0} } catch { destroy .c } catch { destroy .d } } Tix8.4.3/tests/tlist/0000775000122200012240000000000010767576212014711 5ustar jeffhjeffh00000000000000Tix8.4.3/tests/tlist/files0000664000122200012240000000001107110476705015720 0ustar jeffhjeffh00000000000000TList.tclTix8.4.3/tests/tlist/TList.tcl0000644000122200012240000000145407110476705016450 0ustar jeffhjeffh00000000000000# # $Id: TList.tcl,v 1.1.1.1 2000/05/17 11:08:53 idiscovery Exp $ # # This tests the TList widget. # # # Assumptions: # None # proc About {} { return "Basic tests for the TList widget" } proc Test {} { # # Test the creation # test {tixTList} {args} test {tixTList .t -ff} {unknown} test {tixTList .t -width} {missing} if {[info command .t] != {}} { error "widget not destroyed when creation failed" } set t [tixTList .t] test {$t} {args} # # Test the "insert" command # test {$t insert} {args} test {$t insert 0 -foo} {missing} test {$t insert 0 -foo bar} {unknown} test {$t insert 0 -itemtype foo} {unknown} test {$t insert 0 -itemtype text -image foo} {unknown} test {$t insert 0 -itemtype text -text Hello} pack $t } Tix8.4.3/tests/TODO.txt0000644000122200012240000000020207564540061015042 0ustar jeffhjeffh00000000000000# -*- mode: text; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- [1] NoteBook active/inactive/disabled tabs drawing Tix8.4.3/tests/README0000664000122200012240000000131507564540061014424 0ustar jeffhjeffh00000000000000# -*- mode: text; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- There are two set of tests in this directory: [1] The Tcltest-style tests (with the .test extension), which are not yet fully supported. [2] The old-style tests, which are invoked by the script Driver.tcl. The old-style tests will be rewritten to use the Tcltest-style. To execute all of the tests, simply do a "make test" in the win/ or unix/ build directories. To execute an individual test file: [1] .test files: simply source the file. E.g., cd unix tixwish ../tests/basic.test [2] Old-style tests: ../unix/tixwish Driver.tcl general/select.tcl - or - ..\win\tixwish.exe Driver.tcl general/select.tcl Tix8.4.3/tests/library/0000775000122200012240000000000010767576212015216 5ustar jeffhjeffh00000000000000Tix8.4.3/tests/library/CaseData.tcl0000644000122200012240000000765410031436051017355 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: CaseData.tcl,v 1.4 2004/03/28 02:44:57 hobbs Exp $ # # CaseData.tcl -- # # Contains data for test cases # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # GetHomeDirs -- # # Returns a list of user names (prefixed with tilde) and their # home directories # proc GetHomeDirs {} { set tryList {root ftp admin operator man john ioi} if [catch { lappend tryList [exec whoami] }] { catch { lappend tryList [exec logname] } } set list {} foreach user $tryList { if [info exists done($user)] { continue } set expanded [tixFile tilde ~$user] if ![tixStrEq $expanded ~$user] { lappend list [list ~$user $expanded] } set done($user) 1 } return $list } # GetCases_FsNormDir -- # # Returns a set of test cases for verifying whether a non-normalized # directory is properly notmalized # proc GetCases_FsNormDir {} { if [tixStrEq [tix platform] unix] { # PATHNAME to TEST expected result Causes error for # file normalize? #---------------------------------------------------------------- set list { {. "" 1} {foo "" 1} {~nosuchuser "" 1} {~nosuchuser/../ "" 1} {/ / 0} {/// / 0} {/./ / 0} {/./. / 0} {/./. / 0} {/././.././../ / 0} {/etc /etc 0} {/etc/../etc /etc 0} {/etc/../etc/./ /etc 0} {/etc/../etc/./ /etc 0} {/etc/../usr/./lib /usr/lib 0} } foreach userInfo [GetHomeDirs] { lappend list [list [lindex $userInfo 0] [lindex $userInfo 1] 0] } } else { set list [list \ [list . "" 1] \ [list foo "" 1] \ [list .. "" 1] \ [list ..\\foo "" 1] \ [list ..\\dat\\. "" 1] \ [list C: "" 1] \ [list C:\\ C: 0] \ [list c:\\ C: 0] \ [list C:\\\\ C: 0] \ [list C:\\ C: 0] \ [list C:\\. C: 0] \ [list C:\\Windows C:\\Windows 0] \ [list C:\\Windows\\System C:\\Windows\\System 0] \ [list C:\\Windows\\.. C: 0] \ ] } return $list } # GetCases_FSNorm -- # # Returns a set of test cases for testing the tixFSNorm command. # proc GetCases_FSNorm {} { global tixPriv if [tixStrEq [tix platform] unix] { # PATHNAME to TEST context <---------- Expected Result -----------------------------------> # path vpath(todo) files(todo) patterns(todo) #---------------------------------------------------------------- set list { {. / / } {./ / / } {./////./ / / } {.. / / } {../ / / } {../.. / / } {../../../ / / } {/etc / /etc } {/etc///../etc/// / /etc } {/etc///../etc///.. / / } {/etc///../etc///../ / / } {/etc/. / /etc } {/./etc/. / /etc } {/./././etc/. / /etc } {/usr/./././local/./lib//// / /usr/local/lib } {./././././etc/ / /etc } {/etc/../etc / /etc } {/etc/../etc/../etc / /etc } {/etc/../etc/../ / / } {~foobar/foo / /~foobar } {~foobar/foo/ / /~foobar/foo } } } else { set p $tixPriv(WinPrefix) set list [list \ [list . $p\\C: $p\\C: ] \ [list .\\. $p\\C: $p\\C: ] \ [list .\\Windows $p\\C: $p\\C:\\Windows ] \ [list .\\Windows\\..\\ $p\\C: $p\\C: ] \ [list tmp\\ $p\\C: $p\\C:\\tmp ] \ [list "no such file" $p\\C: $p\\C: ] \ [list "autoexec.bat" $p\\C: $p\\C: ] \ [list "ignore/slash\\dd" $p\\C: $p\\C:\\ignore/slash ] \ [list "has space\\" $p\\C: "$p\\C:\\has space" ] \ [list "has space" $p\\C: "$p\\C:" ] \ ] # ToDo: # (1) xx\xx\C: + .. should be xx\xx # (2) xx\xx\C: + D: should be xx\xx\D: } return $list } Tix8.4.3/tests/library/load-init.tcl0000644000122200012240000000040707564540062017574 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: load-init.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # # # puts -nonewline "trying to load the Tix dynamic library ... " load ../../unix-tk4.1/libtix.so Tix puts "done" Tix8.4.3/tests/library/TestLib.tcl0000644000122200012240000004431310031436051017247 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: TestLib.tcl,v 1.3 2004/03/28 02:44:57 hobbs Exp $ # # TestLib.tcl # # Procedures used by the Tix test suite. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # set testapp(tix,w,normal) { tixButtonBox tixComboBox tixControl tixDirList tixDirTree tixExDirSelectBox tixExFileSelectBox tixFileSelectBox tixFileEntry tixLabelEntry tixLabelFrame tixNoteBook tixOptionMenu tixPanedWindow tixScrolledHList tixScrolledListBox tixScrolledTList tixScrolledText tixScrolledWindow tixSelect tixStdButtonBox tixTree } set testapp(tix,w,shell) { tixBalloon tixDialogShell tixExFileSelectDialog tixFileSelectDialog tixPopupMenu tixStdDialogShell } set testapp(tix,w,base) { tixLabelWidget tixPrimitive tixScrolledWidget tixShell tixStackWindow tixVResize tixVStack tixVTree } set testapp(tix,w,unsupported) { tixMDIMenuBar tixMDIWindow tixMwmClient tixResizeHandle tixSimpleDialog tixStatusBar } # testConfig(VERBOSE) is the "Verbosity level" of the test suite. # # 0 -- No messages except name of each test # 10 -- Print number of each test block # 15 -- Print number and name of each test block # 20 -- Print all kinds of messages # 30 -- level 20, plus when error occurs, print stack trace. # if [info exists env(TEST_VERBOSE)] { if [catch { set testConfig(VERBOSE) [expr "int($env(TEST_VERBOSE) + 0)"] }] { set testConfig(VERBOSE) 10 } } else { set testConfig(VERBOSE) 0 } set testConfig(errCount) 0 #---------------------------------------------------------------------- # # General assertion and evaluation # #---------------------------------------------------------------------- # -------------------------------------------------------------- Assert # # Evaulates an assertion. Output error message if assertion fails # proc Assert {cond {printErrInfo 0} {abortMode abortfile}} { global errorInfo testConfig if [info exists errorInfo] { set errorInfo "" } uplevel 1 [list \ if !($cond) [list \ TestError "Failed Assertion \"$cond\"\n \ evaluated as \"[uplevel 1 subst -nocommand [list $cond]]\"\ :: [uplevel 1 subst [list $cond]]" $printErrInfo $abortMode ] \ ] }; # Assert # ----------------------------------------------------------- TestAbort # # Aborts a single test file. # proc TestAbort {msg} { error $msg }; # TestAbort # ---------------------------------------------------------------- test # # Try to evaluate a command. # proc test {cmd {result {}} {ret {}}} { global testConfig if [catch {set ret [uplevel 1 $cmd]} err] { set done 0 foreach r $result { if [regexp $r $err] { if {$testConfig(VERBOSE) >= 20} { puts "Passed (Error message is expected):" puts " command = \"$cmd\"" puts " expected error = \"$result\"" puts " actual error = $err" } set done 1 break } } if {!$done} { error $err } } else { if {$testConfig(VERBOSE) >= 20} { puts "Passed (Execution OK):\n command = \"$cmd\"" } } return $ret }; # test # --------------------------------------------------------------- test1 # # Try to evaluate a command and make sure its error result is the same # as $result. # proc test1 {cmd {result {}}} { global testConfig set ret "" if [catch {set ret [uplevel 1 $cmd]} err] { if ![tixStrEq $err $result] { error $err } else { if {$testConfig(VERBOSE) >= 20} { puts "Passed (Error message is expected):" puts " command = \"$cmd\"" puts " expected error = \"$result\"" } } } else { if {$testConfig(VERBOSE) >= 20} { puts "Passed (Execution OK):\n command = \"$cmd\"" } } return $ret }; # test1 #---------------------------------------------------------------------- # # Mouse event emulation routines # #---------------------------------------------------------------------- # ------------------------------------------------------------- GetRoot # # Converts window coordinates to root-window coordinates # proc GetRoot {w x y} { upvar X X upvar Y Y set x0 [winfo rootx $w] set y0 [winfo rooty $w] set X [expr $x0 + $x] set Y [expr $y0 + $y] }; # GetRoot # ---------------------------------------------------------- MouseEvent # # ? simulates mouse event ? # proc MouseEvent {w type x y args} { set tags [bindtags $w] GetRoot $w $x $y lappend args %q lappend args $w lappend args %W lappend args $w lappend args %x lappend args $x lappend args %y lappend args $y lappend args %X lappend args $X lappend args %Y lappend args $Y set found 0 foreach t $tags { set cmd [string trim [bind $t $type]] if {$cmd != ""} { set found 1 } foreach {sub val} $args { regsub -all $sub $cmd $val cmd } uplevel #0 $cmd } if {$found == 0} { global testConfig if $testConfig(VERBOSE) { puts "(testlib warning): $w has no bindings for $type" } } return $found }; # MouseEvent # ------------------------------------------------------ KeyboardString # # Send a string to the widget via a list of key strokes. # # NOTE: To ensure that an entry widget content is exactly $string, you # need to first erase old contents with "$entry delete 0 end" # proc KeyboardString {w string} { set tags [bindtags $w] lappend args %q lappend args $w lappend args %W lappend args $w set found 0 foreach c [split $string ""] { foreach t $tags { set cmd [string trim [bind $t ]] if {$cmd != ""} { set found 1 } set list $args lappend list %A lappend list [list $c] foreach {sub val} $list { regsub -all $sub $cmd $val cmd } # This is really weird: If our char is '\', the lappend line # makes it a quoted \\, but the previous regsub converts it # back to a single quote. So we use regsub again to make it # a \\ again. But that's not enough, because uplevel will # change it back to a single quote and will eventually mess # us up. Hence we use 4 slashes here! # regsub -all {[\\]} $cmd {\\\\} cmd uplevel #0 $cmd } } if {$found == 0} { puts "warning: widget $w has no bindings for $type" } return $found }; # KeyboardString # ------------------------------------------------------- KeyboardEvent # # Send a special keyboard event to the widget. E.g., , , # , etc. To send ASCII character strings, use # KeyboardString # proc KeyboardEvent {w type} { set tags [bindtags $w] lappend args %q lappend args $w lappend args %W lappend args $w set found 0 foreach t $tags { set cmd [string trim [bind $t $type]] if {$cmd != ""} { set found 1 } foreach {sub val} $args { regsub -all $sub $cmd $val cmd } uplevel #0 $cmd } if {$found == 0} { puts "warning: widget $w has no bindings for $type" } return $found }; # KeyboardEvent # ----------------------------------------------------- Event-Initialize # # Initialize event data; called from Driver.tcl/Driver:Test # proc Event-Initialize {} { global app set app(X) -1000 set app(Y) -1000 set app(curWid) {} }; # Event-Initialize # ------------------------------------------------------------ InWidget # # test if point is within window # proc InWidget {w} { global app set a [tixWithinWindow $w $app(X) $app(Y)] # insert debug print here return $a }; # InWidget # --------------------------------------------------------------- Leave # # simulate event # proc Leave {w {x -10} {y -10} args} { global app eval MouseEvent $w $x $y $args }; # Leave # ------------------------------------------------------------ B1-Leave # # simulate event (?identical to Leave?) # proc B1-Leave {w {x -10} {y -10} args} { global app eval MouseEvent $w $x $y $args }; # B1-Leave # ---------------------------------------------------------- RecordRoot # # Converts event coordinates to root-window coordinates and records them # proc RecordRoot {w x y} { global app GetRoot $w $x $y set app(X) $X set app(Y) $Y }; # RecordRoot # --------------------------------------------------------------- Enter # # simulate event # proc Enter {w {x -1} {y -1} args} { global app if {$y == -1} { set x [expr [winfo width $w] / 2] set y [expr [winfo height $w] / 2] } if {$app(curWid) != {} && [winfo exists $app(curWid)]} { Leave $app(curWid) } RecordRoot $w $x $y eval MouseEvent $w $x $y $args set app(curWid) $w }; # Enter # ---------------------------------------------------------------- Drag # # simulate event # proc Drag {w {x -1} {y -1} args} { global app if {$y == -1} { set x [expr [winfo width $w] / 2] set y [expr [winfo height $w] / 2] } if {![InWidget $w]} { B1-Leave $w $x $y } eval MouseEvent $w $x $y $args }; # Drag # ------------------------------------------------------------- Release # # simulate event # proc Release {w {x -1} {y -1} args} { global app if {$y == -1} { set x [expr [winfo width $w] / 2] set y [expr [winfo height $w] / 2] } eval MouseEvent $w $x $y $args }; # Release # ------------------------------------------------------------ HoldDown # # simulate event (assumming button was not already down) # proc HoldDown {w {x -1} {y -1} args} { global app if {$y == -1} { set x [expr [winfo width $w] / 2] set y [expr [winfo height $w] / 2] } if {![InWidget $w]} { Enter $w $x $y } if {![eval MouseEvent $w $x $y $args]} { eval MouseEvent $w <1> $x $y $args } }; # HoldDown # --------------------------------------------------------------- Click # # simulate event # proc Click {w {x -1} {y -1} args} { global app if {$y == -1} { set x [expr [winfo width $w] / 2] set y [expr [winfo height $w] / 2] } eval HoldDown $w $x $y $args eval MouseEvent $w $x $y $args }; # Click # -------------------------------------------------------------- Double # # simulate event # proc Double {w {x -1} {y -1} args} { global app if {$y == -1} { set x [expr [winfo width $w] / 2] set y [expr [winfo height $w] / 2] } eval MouseEvent $w $x $y $args }; # Double # --------------------------------------------------- ClickListboxEntry # # Simulate the event where a listbox entry is clicked. # # Args: # w pathname of listbox # index index of entry to be clicked. # mode "single" ==> single click, "double" ==> double click # proc ClickListboxEntry {w index {mode single}} { $w see $index set bbox [$w bbox $index] set x1 [lindex $bbox 0] set y1 [lindex $bbox 1] if {$mode == "single"} { Click $w $x1 $y1 } else { Double $w $x1 $y1 } }; # ClickListboxEntry # ----------------------------------------------------- ClickHListEntry # # Simulate the event where an HList entry is clicked. # # Args: # w pathname of HList # index index of entry to be clicked. # mode "single" ==> single click, "double" ==> double click # proc ClickHListEntry {w index {mode single}} { $w see $index update set bbox [$w info bbox $index] set x1 [lindex $bbox 0] set y1 [lindex $bbox 1] if {$mode == "single"} { Click $w $x1 $y1 } else { Double $w $x1 $y1 } }; # ClickHListEntry # ------------------------------------------------- InvokeComboBoxByKey # # Simulate the event when the user types in a string into the # entry subwidget of a ComboBox widget and then type Return # proc InvokeComboBoxByKey {w string} { set ent [$w subwidget entry] $ent delete 0 end KeyboardString $ent $string KeyboardEvent $ent update }; # InvokeComboBoxByKey # ---------------------------------------------------- SetComboBoxByKey # # Simulate the event when the user types in a string into the # entry subwidget of a ComboBox widget, *without* a subsequent # Return keystroke. # proc SetComboBoxByKey {w string} { set ent [$w subwidget entry] $ent delete 0 end KeyboardString $ent $string update }; # SetComboBoxByKey #---------------------------------------------------------------------- # # main routines # #---------------------------------------------------------------------- # ---------------------------------------------------------------- Done proc Done {args} { global testConfig if {$testConfig(VERBOSE) >= 20} { puts "--------------------- done ----------------------------" } }; # Done # ---------------------------------------------------------------- Wait proc Wait {msecs} { global Test:timer set Test:timer 0 after $msecs uplevel #0 set Test:timer 1 tkwait variable Test:timer }; # Wait #---------------------------------------------------------------------- # # Messages # #---------------------------------------------------------------------- # ---------------------------------------------------------------- PutP proc PutP {msg} { puts $msg }; # PutP # ----------------------------------------------------------- TestError # # Handle an error # proc TestError {msg {printErrInfo 0} {abortMode cont}} { global testConfig puts " $msg" case $abortMode { cont { if {$printErrInfo || $testConfig(VERBOSE) >= 30} { global errorInfo puts "\$errorInfo = $errorInfo" } return } abortfile { return -code 1234 } abortall { global errorInfo puts "Aborting all test files because of error:" puts $errorInfo exit 1 } } }; # TestError # ----------------------------------------------------------- TestBlock # # Performs a block of test. A block is mainly used to group # together tests that are dependent on each other. TestBlocks # may be nested. # # Args: # name: Textual name of the test. E.g.: button-1.1 # description: Short description of the test. "Pressing button" # printErrInfo: If an error occurs, should the errorInfo be printed # to the console. (Normally only a one-liner error # message is printed). # aMode: # cont -- skip this block and go to the next block # abortfile -- skip all other blocks in this file # abortall -- skip all the Tix tests. # proc TestBlock {name description script {printErrInfo 0} {aMode cont}} { global testConfig # without this, we get a failure in the "Clicking a button" test of # general/event0.tcl because, Click-->HoldDown-->InWidget returns # true and so the Enter command never gets invoked. # Event-Initialize set code [catch {uplevel 1 $script} result] if {$testConfig(VERBOSE) >= 15} { set des "($description)" } else { set des "" } if {$code != 0} { incr testConfig(errCount) puts stdout "---- $name FAILED $des" puts "Script is" foreach line [split $script \n] { regsub "^\[[format %s \ \n\t]\]*" $line "" line puts " $line" } puts "Error message:" TestError $result $printErrInfo $aMode puts stdout "----" } elseif $testConfig(VERBOSE) { puts stdout "++++ $name PASSED $des" } }; # TestBlock #---------------------------------------------------------------------- # # general initialization # #---------------------------------------------------------------------- # place main window in predictable spot wm geometry . +0+0 Tix8.4.3/tests/library/TestLib.txt0000664000122200012240000000242507564540062017323 0ustar jeffhjeffh00000000000000# -*- mode: text; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # $Id: TestLib.txt,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ HIGH LEVEL INTERFACE FOR INTERACTIVE TESTING -------------------------------------------- Click: Simulates a the event when a user moves the mouse pointer into the widget (if the cursor is still outside of the widget), press the button and release it. Double: Simulates a the event when a user moves the mouse pointer into the widget (if the cursor is still outside of the widget), double-click the button and release it. MESSAGE PRINTING ---------------- PutP Prints a progress message. PutTitle Prints the title of a test file PutSubTitle Print the title of a part of a test file PutSubSubTitle One more level than PutSubTitle TestWarn Print a warning message. This will be counted in the final report. TestError {msg {printErrInfo 0} {abortMode cont}} Print an error message. abortMode controls how the error affects other test cases: cont: simply print the message and continue abortfile: skip other test cases in this file abortall: abort the all other tests and exit the test program. printErrInfo specifies whether the "$errorInfo" variable should be printed. Tix8.4.3/tests/distyle.test0000664000122200012240000000331207564540061016121 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # distyle.test -- # # This file is a Tcl script to test out tixDiStyle.c. # It is organized in the standard fashion for Tcl tests. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: distyle.test,v 1.3 2002/11/13 21:12:17 idiscovery Exp $ package require Tix if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } set longword XX for {set i 0} {$i < 10} {incr i} { set longword $longword$longword } test distyle-1.1 {DeleteStyle()} { set stylename [tixDisplayStyle text -stylename foo] foo delete list [catch { foo config } msg] $msg } {1 {invalid command name "foo"}} test distyle-1.2 {GetDItemStyle(), DeleteStyle()} { set stylename [tixDisplayStyle text -stylename $longword] $stylename delete expr {"$stylename" == "$longword"} } {1} test distyle-1.3 {FindStyle()} { set stylename [tixDisplayStyle text -stylename $longword] set a [list [catch { tixDisplayStyle text -stylename $longword } msg] $msg] $stylename delete set a } [list 1 "style \"$longword\" already exists"] test distyle-2.1 {Tix_ItemStyleCmd()} { set x [tixDisplayStyle text] $x delete set x } {tixStyle0} test distyle-2.1 {Tix_ItemStyleCmd()} { set x [tixDisplayStyle text -stylename tixStyle1] set a [list [catch { set y [tixDisplayStyle text] }]] $x delete $y delete list $a $x $y } {0 tixStyle1 tixStyle2} # cleanup ::tcltest::cleanupTests return Tix8.4.3/tests/general/0000775000122200012240000000000010767576212015167 5ustar jeffhjeffh00000000000000Tix8.4.3/tests/general/optmenu.tcl0000644000122200012240000000540007564540062017352 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: optmenu.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # proc About {} { return "Testing Option Menu widget" } proc Test {} { tixOptionMenu .p -label "From File Format : " -command "selectproc input" \ -disablecallback 1 \ -options { label.width 19 label.anchor e menubutton.width 15 } pack .p .p add command text -label "Plain Text" .p add command post -label "PostScript" .p add command format -label "Formatted Text" .p add command html -label "HTML" .p add separator sep .p add command tex -label "LaTeX" .p add command rtf -label "Rich Text Format" update foreach ent [.p entries] { test {.p delete $ent} } Assert {[.p subwidget menubutton cget -text] == {}} test {destroy .p} # Testing deleting "sep" at the end # tixOptionMenu .p -label "From File Format : " -command "selectproc input" \ -disablecallback 1 \ -options { label.width 19 label.anchor e menubutton.width 15 } pack .p .p add command text -label "Plain Text" .p add command post -label "PostScript" .p add command format -label "Formatted Text" .p add command html -label "HTML" .p add separator sep .p add command tex -label "LaTeX" .p add command rtf -label "Rich Text Format" test {.p delete text} test {.p delete post} test {.p delete html} test {.p delete format} test {.p delete tex} test {.p delete rtf} test {.p delete sep} Assert {[.p subwidget menubutton cget -text] == {}} test {destroy .p} # Testing deleting "sep" as the second-last one # tixOptionMenu .p -label "From File Format : " -command "selectproc input" \ -disablecallback 1 \ -options { label.width 19 label.anchor e menubutton.width 15 } pack .p .p add command text -label "Plain Text" .p add command post -label "PostScript" .p add command format -label "Formatted Text" .p add command html -label "HTML" .p add separator sep .p add command tex -label "LaTeX" .p add command rtf -label "Rich Text Format" test {.p delete text} global .p Assert {[info exists .p(text,type)] == 0} Assert {[info exists .p(text,name)] == 0} Assert {[info exists .p(text,label)] == 0} test {.p delete post} test {.p delete html} test {.p delete format} test {.p delete tex} Assert {[.p cget -value] == "rtf"} test {.p delete sep} Assert {[.p cget -value] == "rtf"} test {.p delete rtf} Assert {[.p subwidget menubutton cget -text] == {}} test {destroy .p} } Tix8.4.3/tests/general/options.tcl0000644000122200012240000000127607564540062017365 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: options.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # proc About {} { return "Testing the option configuration of the Tix widgets" } proc Test {} { test {tixComboBox .c -xxxxx} {missing} test {tixComboBox .c -xxxxx xxx} {unknown} test {tixComboBox .c -d xxx} {ambi} test {tixComboBox .c -disab 0} {ambi} test {tixComboBox .c -disablecal 0} Assert {[.c cget -disablecallback] == 0} Assert {[.c cget -disableca] == 0} test {tixComboBox .d -histl 10} Assert {[.d cget -histlimit] == 10} Assert {[.d cget -histlim] == 10} Assert {[.d cget -historylimit] == 10} } Tix8.4.3/tests/general/files0000664000122200012240000000033407110476703016204 0ustar jeffhjeffh00000000000000testtmpl.tcl api.tcl minterp.tcl options.tcl labentry.tcl event0.tcl fs.tcl oop.tcl optmenu.tcl select.tcl slistbox.tcl var1.tcl NoteBook.tcl mwm.tcl cmderror.tcl dirbox.tcl filebox.tcl combobox.tcl samples.tcl draw.tcl Tix8.4.3/tests/general/testtmpl.tcl0000644000122200012240000000145307564540062017543 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: testtmpl.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # testtmpl.tcl -- # # Test Template: # # This program is used as the first test: see whether we can execute any # case at all. # # This program is also used as a template file for writing other test # cases. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Testing whether the test program starts up properly" } proc Test {} { TestBlock testtmpl-1.1 {NULL test} { # # If this fails, we are in big trouble and probably none of the # tests can pass. Abort all the tests # } 1 abortall } Tix8.4.3/tests/general/dirbox.tcl0000644000122200012240000001471110031436051017140 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: dirbox.tcl,v 1.3 2004/03/28 02:44:57 hobbs Exp $ # # dirbox.tcl -- # # Tests the DirSelectBox and DirSelectDialog widgets. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Testing the DirSelectBox and DirSelectDialog widgets." } # Try to configure the directory of a widget and see if it satisfy all # the requirements: # # 1: Should return error for non-existant directory, preserving # the old directory # # 2: When given a non-normalized path, it should normalize it. # proc TestConfigDirectory {class spec pack} { global errorInfo set w .w if [winfo exists $w] { destroy $w } TestBlock config-dir-1.1 "Simple creating of $class" { # Creation without the spec. The default value should be normalized # # The default value should always be an absolute path # $class .w set value [$w cget $spec] Assert {[tixFSIsNorm $value]} 0 cont } catch { destroy .w } TestBlock config-dir-1.2 "Creation with arbitrary (perhaps invalid) path" { foreach item [GetCases_FsNormDir] { if [info exists errorInfo] { set errorInfo "" } set text [lindex $item 0] set want [lindex $item 1] set wanterr [lindex $item 2] set err [catch { set w [$class .w $spec $text] set got [$w cget -value] }] Assert {$err == $wanterr} if {!$err} { set want [tixFSDisplayName $want] Assert {[tixStrEq $want $got]} } catch { destroy .w } } } catch { destroy .w } TestBlock config-dir-1.2 "Config with arbitrary (perhaps invalid) path" { set w [$class .w] foreach item [GetCases_FsNormDir] { if [info exists errorInfo] { set errorInfo "" } set text [lindex $item 0] set want [lindex $item 1] set wanterr [lindex $item 2] set err [catch { $w config $spec $text set got [$w cget -value] }] Assert {$err == $wanterr} if $err { # Should hold the previous -value # set value [$w cget $spec] Assert {[tixFSIsNorm $value]} 0 cont } else { set value [$w cget $spec] Assert {[tixFSIsNorm $value]} 0 cont set want [tixFSDisplayName $want] Assert {[tixStrEq $want $got]} } if $pack { pack $w -expand yes -fill both -padx 10 -pady 10 update idletasks } } } catch { destroy $w } } proc TestRand {max} { global testRandSeed if ![info exists testRandSeed] { set testRandSeed [expr [lindex [time {cd [pwd]}] 0] * 47 + 147] } set x [expr ($testRandSeed + 47) * [lindex [time {cd [pwd]}] 0]] set x [expr $x + 7 * $max] set testRandSeed [expr ($x % $max) + $max] return [expr $testRandSeed % $max] } # TestHListWildClick -- # # Randomly click around an hlist widget # # Args: # hlist:widget The HList widget. # mode: Either "single" or "double", indicating which type # of mouse click is desired. # cmd: Command to call after each click. # proc TestHListWildClick {hlist mode cmd} { # The percentage chance that we sould traverse to a child node # set chance 40 for {set x 0} {$x < 10} {incr x} { set node [$hlist info children ""] if [tixStrEq $node ""] { return } while 1 { set ran [TestRand 100] if {$ran >= $chance} { break } set children [$hlist info children $node] if [tixStrEq $children ""] { break } set node [lindex $children [expr $ran % [llength $children]]] } TestBlock wild-click-1.1 "clicking \"$node\" of HList" { if {![regexp -nocase alex [$hlist info data $node]]} { # # dirty fix: "alex" may be an AFS mounted file. Reading this # directory may start an FTP session, which may be slow like # hell # ClickHListEntry $hlist $node $mode eval $cmd [list $node] } } } } proc DirboxTest_Cmd {args} { global dirboxTest_selected set dirboxTest_selected [tixEvent value] } proc DirboxTest_Compare {isDirBox w h node} { global dirboxTest_selected set selFile [$h info data $node] Assert {[tixStrEq "$dirboxTest_selected" "$selFile"]} set dirboxTest_selected "" if {$isDirBox} { set entry [$w subwidget dircbx subwidget combo subwidget entry] set entText [$entry get] Assert {[tixStrEq "$entText" "$selFile"]} } } proc Test {} { global dirboxTest_selected #------------------------------------------------------------ # (1) DirList #------------------------------------------------------------ TestBlock dirbox-1.1 {Generic testing of tixDirList} { TestConfigDirectory tixDirList -value 1 } TestBlock dirbox-1.2 {Wild click on the hlist subwidget} { set dirboxTest_selected "" set w [tixDirList .c -command DirboxTest_Cmd] set h [$w subwidget hlist] pack $w -expand yes -fill both TestHListWildClick $h double "DirboxTest_Compare 0 $w $h" } catch { destroy $w } #------------------------------------------------------------ # (2) DirTree #------------------------------------------------------------ TestBlock dirbox-2.1 {Generic testing of tixDirTree} { # TestConfigDirectory tixDirTree -value 1 } TestBlock dirbox-2.2 {Wild click on the hlist subwidget} { set dirboxTest_selected "" set w [tixDirTree .c -command DirboxTest_Cmd] set h [$w subwidget hlist] pack $w -expand yes -fill both # TestHListWildClick $h double "DirboxTest_Compare 0 $w $h" } catch { destroy $w } #------------------------------------------------------------ # (3) DirBox #------------------------------------------------------------ TestBlock dirbox-3.1 {Generic testing of tixDirSelectBox} { # TestConfigDirectory tixDirSelectBox -value 1 } TestBlock dirbox-3.2 {Wild click on the hlist subwidget} { set dirboxTest_selected "" set w [tixDirSelectBox .c -command DirboxTest_Cmd] set h [$w subwidget dirlist subwidget hlist] pack $w -expand yes -fill both # TestHListWildClick $h double "DirboxTest_Compare 0 $w $h" } catch { destroy $w } TestBlock dirbox-4.1 {-disablecallback option} { global dirbox_called tixDirList .c -command dirbox_callback pack .c set dirbox_called 0 .c config -disablecallback 1 .c config -value [pwd] .c config -disablecallback 0 Assert {$dirbox_called == 0} } catch { destroy .c } } proc dirbox_callback {args} { global dirbox_called set dirbox_called 1 } Tix8.4.3/tests/general/pane.tcl0000644000122200012240000000141707564540062016612 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: pane.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # pane.tcl -- # # Test the PanedWindow widget. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Test the PanedWindow widget." } proc Test {} { TestBlock pane-1.1 {tixPanedWindow -expand} { tixPanedWindow .p -orient horizontal pack .p -expand yes -fill both set p1 [.p add pane1 -expand 0.3] set p2 [.p add pane2 -expand 1] set p3 [.p add pane3 -size 20] .p config -width 300 -height 200 update .p config -width 500 update .p config -width 200 update } } Tix8.4.3/tests/general/labentry.tcl0000644000122200012240000000300207564540062017477 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: labentry.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # labentry.tcl # # Tests the TixLabelEntry widget. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Testing the TixLabelEntry widget" } proc Test {} { TestBlock labent-1.1 {LabelEntry focus management} { set t [toplevel .t] set w [tixLabelEntry .t.c -label "Stuff(c): "] pack $w -padx 20 -pady 10 tixLabelEntry .t.d -label "Stuff(d): " pack .t.d -padx 20 -pady 10 focus $w update set px [winfo pointerx $t] set py [winfo pointery $t] set W [winfo width $t] set H [winfo height $t] if {$W < 100} { set W 100 } if {$H < 100} { set H 100 } set mx [expr $px - $W / 2] set my [expr $py - $H / 2] # We must move the window under the cursor in order to test # the current focus # wm geometry $t $W\x$H+$mx+$my raise $t update # On some platforms (e.g. Red Hat Linux 5.2/x86), this fails # because we get: LHS = .t.c, RHS = .t.c.frame.entry # (not clear why). # Assert {[focus -lastfor $t] == [$w subwidget entry]} destroy $t }; # TestBlock }; # Test Tix8.4.3/tests/general/draw.tcl0000644000122200012240000000114507564540061016621 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: draw.tcl,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ # # draw.tcl -- # # Test the drawing functions in Tix. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Test the drawing functions in Tix." } proc Test {} { TestBlock draw-1.1 {tixTmpLine} { tixTmpLine 0 50 300 50 tixTmpLine 0 50 300 50 tixTmpLine 0 50 300 50 . tixTmpLine 0 50 300 50 . } } Tix8.4.3/tests/general/select.tcl0000644000122200012240000000266607564540062017155 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: select.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # proc About {} { return "Testing the TixSelect widget" } proc Test {} { set dis [tix option get disabled_fg] set norm [tix option get fg] # Create with a normal state # # tixSelect .foo -allowzero 0 -radio 1 -label "Foo:" \ -state normal .foo add "1" -text "One" .foo add "2" -text "Two" pack .foo Assert {[.foo subwidget label cget -foreground] == $norm} .foo config -state normal .foo config -state normal Assert {[.foo subwidget label cget -foreground] == $norm} .foo config -state disabled Assert {[.foo subwidget label cget -foreground] == $dis} .foo config -state normal Assert {[.foo subwidget label cget -foreground] == $norm} update destroy .foo tixSelect .foo -allowzero 0 -radio 1 -label "Foo:" \ -state disabled .foo add "1" -text "One" .foo add "2" -text "Two" pack .foo Assert {[.foo subwidget label cget -foreground] == $dis} .foo config -state normal Assert {[.foo subwidget label cget -foreground] == $norm} .foo config -state normal Assert {[.foo subwidget label cget -foreground] == $norm} .foo config -state disabled Assert {[.foo subwidget label cget -foreground] == $dis} .foo config -state normal Assert {[.foo subwidget label cget -foreground] == $norm} } Tix8.4.3/tests/general/slistbox.tcl0000644000122200012240000000063007564540062017532 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: slistbox.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # proc About {} { return "Testing ScrolledListBox" } proc Test {} { set w [tixScrolledListBox .listbox] pack $w foreach item {{1 1} 2 3 4 5 6} { $w subwidget listbox insert end $item } Click [$w subwidget listbox] 30 30 destroy $w } Tix8.4.3/tests/general/fs.tcl0000644000122200012240000000103610031436051016255 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: fs.tcl,v 1.4 2004/03/28 02:44:57 hobbs Exp $ # # fs.tcl # # Test the portable file handling ("FS") routines. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Testing portable file handling routines" } proc Test {} { # These tests were all obsolete post-Tix 8.2 }; # Test Tix8.4.3/tests/general/minterp.tcl0000644000122200012240000000270607564540062017347 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: minterp.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # minterp.tcl # # Tests Tix running under multiple interpreters. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Tests Tix running under multiple interpreters." } proc Test {} { global tix tcl_version if ![string comp [info commands interp] ""] { # Does not support multiple interpreters. return } if {[lsearch [package names] Itcl] != -1} { # # multiple interpreters currently core dumps under itcl2.1 # # return } TestBlock minterp-1.1 {multiple interpreters} { for {set x 0} {$x < 5} {incr x} { global testConfig interp create a interp eval a "set dynlib [list $testConfig(dynlib)]" if {[info exists tix(et)] && $tix(et) == 1} { interp eval a { catch {load "" Tk} catch {load "" ITcl} catch {load "" ITk} catch {load "" Tclsam} catch {load "" Tksam} catch {load "" Tixsam} } } else { interp eval a { load "" Tk load $dynlib Tix } } interp eval a { tixControl .d -label Test tixComboBox .e -label Test tixDirList .l pack .l -expand yes -fill both pack .d .e -expand yes -fill both update } interp delete a } } } Tix8.4.3/tests/general/combobox.tcl0000644000122200012240000000467107564540061017503 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: combobox.tcl,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ # # combobox.tcl -- # # Tests the ComboBox widget. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Testing the ComboBox widget." } proc cbTest_Command {args} { global cbTest_selected set cbTest_selected [tixEvent value] } proc cbTest_ListCmd {w} { global counter incr counter $w subwidget listbox delete 0 end $w subwidget listbox insert end 0 $w subwidget listbox insert end 1 $w subwidget listbox insert end 2 } proc Test {} { global cbTest_selected for {set dropdown 1} {$dropdown >= 0} {incr dropdown -1} { TestBlock combo-1.1 {Config -value} { set w [tixComboBox .c -command cbTest_Command -dropdown $dropdown \ -editable true] pack $w update set val "Testing some value .." $w config -value $val Assert {[tixStrEq "$cbTest_selected" $val]} } TestBlock combo-1.2 {selection from listbox} { $w subwidget listbox insert end "entry 0" $w subwidget listbox insert end "entry 1" $w subwidget listbox insert end "entry 2" for {set x 0} {$x <= 2} {incr x} { Click [$w subwidget arrow] update if $dropdown { ClickListboxEntry [$w subwidget listbox] $x single } else { ClickListboxEntry [$w subwidget listbox] $x single ClickListboxEntry [$w subwidget listbox] $x double } update Assert {[tixStrEq "$cbTest_selected" "entry $x"]} } } TestBlock combo-1.3 {invokation by keyboard} { set val "Testing by key with \\ slashes" KeyboardString [$w subwidget entry] $val KeyboardEvent [$w subwidget entry] update Assert {[tixStrEq "$cbTest_selected" "$val"]} } catch { destroy $w } } TestBlock combo-2.1 {-listcmd of ComboBox} { global counter set counter 0 tixComboBox .c -listcmd "cbTest_ListCmd .c" pack .c -expand yes -fill both update Click [.c subwidget arrow] update Assert {$counter == 1} Click [.c subwidget arrow] update Click [.c subwidget arrow] update Click [.c subwidget arrow] update Assert {$counter == 2} Assert {[.c subwidget listbox get 0] == "0"} Assert {[.c subwidget listbox get 1] == "1"} Assert {[.c subwidget listbox get 2] == "2"} } } Tix8.4.3/tests/general/mwm.tcl0000644000122200012240000000246707564540062016475 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: mwm.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # mwm.tcl -- # # Test tixMwm command. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Testing tixMwm command" } proc Test {} { if ![string compare [info command tixMwm] ""] { puts "(OK) The tixMwm command is not available." return } if ![tixMwm ismwmrunning .] { puts "(OK) Mwm is not running on this display." return } toplevel .d toplevel .e test {tixMwm protocol .d add MY_PRINT_HELLO {"Print Hello" _H CtrlH}} wm protocol .d MY_PRINT_HELLO {puts Hello} test {tixMwm protocol .e add MY_PRINT_HELLO {"Print Hello" _H CtrlH}} wm protocol .e MY_PRINT_HELLO {puts Hello} test {destroy .d} test {tixMwm protocol .e add MY_PRINT_HELLO {"Print Hello" _H CtrlH}} wm protocol .e MY_PRINT_HELLO {puts Hello} test {tixMwm protocol . delete MY_PRINT_HELLO} wm protocol . MY_PRINT_HELLO {} test {tixMwm protocol .e add MY_PRINT_HELLO {"Print Hello" _H CtrlH}} wm protocol .e MY_PRINT_HELLO {puts Hello} test {destroy .e} } Tix8.4.3/tests/general/NoteBook.tcl0000644000122200012240000000302207564540061017400 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: NoteBook.tcl,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ # proc About {} { return "Testing the notebook widgets" } proc NoteBookPageConfig {w pages} { foreach page $pages { Assert {"x[$w pagecget $page -label]" == "x$page"} Assert {"x[$w pageconfigure $page -label]" == "x-label {} {} {} $page"} $w pageconfigure $page -label foo Assert {"x[$w pagecget $page -label]" == "xfoo"} update } } proc Test {} { foreach class {tixListNoteBook tixNoteBook tixStackWindow} { set w [$class .d] pack $w update set pages {1 2 3 4 5 6 1111111112221} foreach page $pages { if {$class == "tixListNoteBook"} { $w subwidget hlist add $page -itemtype imagetext \ -image [tix getimage folder] -text $page } set p [$w add $page -label $page] for {set x 1} {$x < 10} {incr x} { button $p.$x -text $x pack $p.$x -fill x } } foreach page $pages { $w raise $page Assert {"x[$w raised]" == "x$page"} update } Assert {[string compare $pages [$w pages]] == 0} # test the "hooking" of the notebook frame subwidget # # if {$class == "tixNoteBook"} { NoteBookPageConfig $w $pages } foreach page $pages { Assert {"x[$w pagecget $page -raisecmd]" == "x"} # Assert {"x[$w pageconfigure $page -raisecmd]" == "x-raisecmd {} {} {} {}"} $w pageconfigure $page -raisecmd "RaiseCmd $page" Assert {"x[$w pagecget $page -raisecmd]" == "xRaiseCmd $page"} update } destroy $w } } Tix8.4.3/tests/general/pkginit.tcl0000644000122200012240000000040307564540062017326 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: pkginit.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # pkginit.tcl -- # # # This file contains the initialization code for all the test programs # in this directory. # Tix8.4.3/tests/general/filebox.tcl0000644000122200012240000000612307564540062017316 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: filebox.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # # filebox.tcl -- # # Tests the File selection box and dialog widget. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Testing the (Ex)FileSelectBox and (Ex)FileSelectDialog widgets." } proc FdTest_GetFile {args} { global fdTest_selected set fdTest_selected [tixEvent value] } proc Test {} { global fdTest_fullPath if [tixStrEq [tix platform] "unix"] { set fdTest_fullPath /etc/passwd } else { set fdTest_fullPath C:\\Windows\\System.ini } Test_FileSelectBox Test_FileSelectDialog Test_ExFileSelectBox Test_ExFileSelectDialog } proc Test_FileSelectBox {} { global fdTest_selected fdTest_fullPath TestBlock filebox-1.1 {FileSelectBox} { set w [tixFileSelectBox .f -command FdTest_GetFile] pack $w -expand yes -fill both update InvokeComboBoxByKey [$w subwidget selection] "$fdTest_fullPath" Assert {[tixStrEq $fdTest_selected "$fdTest_fullPath"]} } catch { destroy $w } } proc Test_FileSelectDialog {} { global fdTest_selected fdTest_fullPath TestBlock filebox-2.1 {FileSelectDialog} { set w [tixFileSelectDialog .f -command FdTest_GetFile] $w popup update InvokeComboBoxByKey [$w subwidget fsbox subwidget selection] \ "$fdTest_fullPath" Assert {[tixStrEq $fdTest_selected "$fdTest_fullPath"]} } catch { destroy $w } } proc Test_ExFileSelectBox {} { global fdTest_selected fdTest_fullPath TestBlock filebox-3.1 {ExFileSelectBox} { set w [tixExFileSelectBox .f -command FdTest_GetFile] pack $w -expand yes -fill both update $w subwidget file config -selection "$fdTest_fullPath" \ -value "$fdTest_fullPath" Assert {[tixStrEq $fdTest_selected "$fdTest_fullPath"]} } TestBlock filebox-3.2 {Keyboard input in ExFileSelectBox entry subwidget} { set dirCbx [$w subwidget dir] set fileCbx [$w subwidget file] set okBtn [$w subwidget ok] foreach file {Foo bar "Foo Bar"} { set fdTest_selected "" InvokeComboBoxByKey $fileCbx $file set fullPath [tixFSJoin [$dirCbx cget -value] $file] update Assert {[tixStrEq "$fdTest_selected" "$fullPath"]} } } TestBlock filebox-3.3 {Keyboard and then press OK} { foreach file {bar "Foo Bar"} { set fdTest_selected "" SetComboBoxByKey $fileCbx $file Click $okBtn set fullPath [tixFSJoin [$dirCbx cget -value] $file] update Assert {[tixStrEq "$fdTest_selected" "$fullPath"]} } } catch { destroy $w } } proc Test_ExFileSelectDialog {} { global fdTest_selected fdTest_fullPath TestBlock filebox-4.1 {ExFileSelectDialog} { set w [tixExFileSelectDialog .f -command FdTest_GetFile] $w popup update InvokeComboBoxByKey [$w subwidget fsbox subwidget file] \ $fdTest_fullPath Assert {[tixStrEq $fdTest_selected "$fdTest_fullPath"]} } catch { destroy $w } } Tix8.4.3/tests/general/samples.tcl0000644000122200012240000000340207564540062017327 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: samples.tcl,v 1.3 2002/11/13 21:12:18 idiscovery Exp $ # # samples.tcl -- # # Tests all the sample programs in the demo/samples directory. # # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Testing all the sample programs in the demo/samples directory" } proc Test {} { global samples_dir demo_dir tix_library TestBlock samples-1.0 "Finding the demo directory" { foreach dir "$tix_library/demos $tix_library/../demos ../../demos ../demos demos" { if {[file exists $dir] && [file isdir $dir]} { set pwd [pwd] cd $dir set demo_dir [pwd] set samples_dir [pwd]/samples cd $pwd break } } } if {![info exists samples_dir]} { puts "Cannot find demos directory. Sample tests are skipped" return } else { puts "loading demos from $demo_dir" } TestBlock samples-1.1 "Running widget demo" { if {[file exists [set file [file join $demo_dir tixwidgets.tcl]]]} { uplevel #0 [list source $file] tixDemo:SelfTest } } if {![file exists [set file [file join $samples_dir AllSampl.tcl]]]} { return } uplevel #0 [list source $file] ForAllSamples root "" Test_Sample } proc Test_Sample {token type text dest} { global samples_dir tix_demo_running set tix_demo_running 1 if {$type == "f"} { set w .sampl_top TestBlock samples-2-$dest "Loading sample $dest" { uplevel #0 source [list $samples_dir/$dest] toplevel $w wm geometry $w +100+100 wm title $w $text RunSample $w update } catch { destroy $w } } } Tix8.4.3/tests/general/api.tcl0000644000122200012240000001176007564540061016441 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: api.tcl,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ # # api.tcl -- # # Performs a comprehensive test on all the Tix widgets and # commands. This test knows the types and arguments of many # common Tix widget methods. It calls each widget method and # ensure that it work as expected. # # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # set depd(init) "" set info(init) "Initialization, find out all the widget classes" set depd(wcreate) "init" set info(wcreate) "Try to create each widget" set depd(method) "init wcreate" set info(method) "Try to call each public method of all widgets" set depd(config-state) "init wcreate method" set info(config-state) "Configuring -state of widgets" proc APITest:init {} { global widCmd cmdNames auto_index testConfig TestBlock api-1.1 {Find out all the widget classes} { # (1) Stores all the Tix commands in the associative array # cmdNames # foreach cmd [info commands tix*] { if [regexp : $cmd] { continue } set cmdNames($cmd) "" } foreach name [array names auto_index "tix*:AutoLoad"] { if [regsub {:AutoLoad} $name "" cmd] { set cmdNames($cmd) "" } } # (3). Don't want to mess with the console routines # foreach name [array names cmdNames] { if [string match tixCon* $name] { catch { unset cmdNames($name) } } } # (2) Find out the names of the widget creation commands # foreach cmd [lsort [array names cmdNames]] { if [info exists $cmd\(superClass\)] { if {[set $cmd\(superClass\)] == ""} { continue } } switch -regexp -- $cmd { {(DoWhenIdle)|(:)} { continue } } if [info exists err] { unset err } catch { auto_load $cmd } catch { if {[uplevel #0 set $cmd\(isWidget\)] == 1} { if {$testConfig(VERBOSE) > 20} { puts "Found widget class: $cmd" } set widCmd($cmd) "" } } } } } proc APITest:wcreate {} { global widCmd testConfig TestBlock api-2 {Find out all the widget classes} { foreach cls [lsort [array names widCmd]] { if {[uplevel #0 set $cls\(virtual\)] == 1} { # This is a virtual base class. Skip it. # continue } TestBlock api-2.1-$cls "Create widget of class: $cls" { $cls .c if ![tixStrEq [winfo toplevel .c] .c] { pack .c -expand yes -fill both } update } TestBlock api-2.2-$cls "Widget Deletion" { catch { destroy .c } frame .c update idletasks global .c if {[info exists .c] && [array names .c] != "context"} { catch { parray .c } catch { puts [set .c] } error "widget record has not been deleted properly" } } catch { destroy .c } } } } proc APITest:method {} { global widCmd testConfig TestBlock api-3 {Call all the methods of a widget class} { foreach cls [lsort [array names widCmd]] { if {[uplevel #0 set $cls\(virtual\)] == 1} { continue } TestBlock api-3.1-$cls "Widget class: $cls" { $cls .c upvar #0 $cls classRec foreach method [lsort $classRec(methods)] { TestBlock api-3.1.1 "method: $method" { catch { .c $method } } } } catch { destroy .c } } } } proc APITest:config-state {} { global widCmd testConfig TestBlock api-4 {Call the config-state method} { foreach cls [lsort [array names widCmd]] { if {[uplevel #0 set $cls\(virtual\)] == 1} { continue } $cls .c catch { pack .c } if [catch {.c cget -state}] { destroy .c continue } if [tixStrEq $cls tixBalloon] { destroy .c continue } TestBlock api-4.1-$cls "Class: $cls" { .c config -state disabled Assert {[tixStrEq [.c cget -state] "disabled"]} update Assert {[tixStrEq [.c cget -state] "disabled"]} .c config -state normal Assert {[tixStrEq [.c cget -state] "normal"]} update Assert {[tixStrEq [.c cget -state] "normal"]} .c config -state disabled Assert {[tixStrEq [.c cget -state] "disabled"]} .c config -state normal Assert {[tixStrEq [.c cget -state] "normal"]} } catch { destroy .c; update } } } } proc APITest {t {level 0}} { global depd tested info if {$level > 300} { error "possibly circular dependency" } set tested(none) 1 if [info exist tested($t)] { return } foreach dep $depd($t) { if {![info exists tested($dep)]} { APITest $dep [expr $level + 1] } } if {$t == "all"} { set tested($t) 1 return } else { update eval APITest:$t set tested($t) 1 } } proc About {} { return "Tix API Testing Suite" } proc Test {} { global depd env if [info exists env(APT_SUBSET)] { set tests $env(APT_SUBSET) } else { set tests [array names depd] } foreach test $tests { APITest $test } } Tix8.4.3/tests/general/cmderror.tcl0000644000122200012240000000270307564540061017502 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: cmderror.tcl,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ # # cmderror.tcl -- # # This program tests whether command handler errors are processed # properly by the Tix toolkit. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Testing command handler errors are processed properly" } proc Test {} { global cmdHandlerCalled if {![string compare [info command tixCmdErrorHandler] ""]} { if ![auto_load tixCmdErrorHandler] { TestAbort "toolkit error: procedure \"tixCmdErrorHandler\" not implemented" } } rename tixCmdErrorHandler _default_tixCmdErrorHandler proc tixCmdErrorHandler {msg} { global cmdHandlerCalled set cmdHandlerCalled 1 } # We cause an error to occur in the -command handler of the combobox # widget. Such an error shouldn't cause the operation to fail. # See the programmer's documentation of tixCmdErrorHandler for details. # catch { tixComboBox .c -command CmdNotFound .c invoke set cmdNotFailed 1 } Assert {[info exists cmdNotFailed]} Assert {[info exists cmdHandlerCalled]} # Clean up # destroy .c rename tixCmdErrorHandler "" rename _default_tixCmdErrorHandler tixCmdErrorHandler unset cmdHandlerCalled } Tix8.4.3/tests/general/oop.tcl0000644000122200012240000000053407564540062016463 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: oop.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # proc About {} { return "Testing OOP features" } proc Test {} { test {tix} {arg} test {tixWidgetClass} {arg} test {tixClass} {arg} test {tixNoteBook} {arg} test {tixAppContext} {arg} } Tix8.4.3/tests/general/event0.tcl0000644000122200012240000000426007564540062017067 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: event0.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # proc About {} { return "Testing the event emulation routines in the test suite" } proc TestEntry_Invoke {w} { global testEntry_Invoked testEntry_value1 set testEntry_Invoked 1 set testEntry_value1 [$w get] } proc Test {} { global foo set foo 0 TestBlock event0-1.1 {Typing return in an entry widget} { global testEntry_Invoked testEntry_value0 testEntry_value1 set testEntry_Invoked 0 entry .e -textvariable testEntry_value0 set testEntry_value0 "Entering some text ..." bind .e "TestEntry_Invoke .e" pack .e update KeyboardEvent .e update Assert {$testEntry_Invoked == 1} Assert {$testEntry_value0 == $testEntry_value1} } TestBlock event0-1.2 {Typing characters in an entry widget} { set testEntry_value0 "" set val "Typing the keyboard ..." focus .e .e delete 0 end update KeyboardString .e $val update Assert {[tixStrEq "$testEntry_value0" "$val"]} } TestBlock event0-1.3 {Typing characters and slashes in an entry widget} { set testEntry_value0 "" set val "Typing the \\ keyboard ..." focus .e .e delete 0 end KeyboardString .e $val update Assert {[tixStrEq "$testEntry_value0" "$val"]} destroy .e } TestBlock event0-1.4 {Testing ClickListboxEntry} { listbox .l -selectmode single .l insert end "index 0" .l insert end "index 1" .l insert end "index 2" pack .l; update for {set x 0} {$x <= 2} {incr x} { ClickListboxEntry .l $x single update Assert {[.l index active] == $x} Assert {[.l curselection] == $x} } destroy .l update } TestBlock event0-1.5 {Clicking a button} { button .b -command "set foo 1" pack .b; update Click .b Assert {$foo == 1} } TestBlock event0-1.6 {Drag and selecting a combobox} { tixComboBox .c .c insert end 10 .c insert end 10 .c insert end 10 .c insert end 10 .c insert end 10 pack .c; update HoldDown [.c subwidget arrow] Drag [.c subwidget listbox] 10 10 Release [.c subwidget listbox] 10 10 Release [.c subwidget arrow] -30 30 Assert {[.c cget -value] == "10"} } } Tix8.4.3/tests/general/var1.tcl0000644000122200012240000000267307564540062016545 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: var1.tcl,v 1.2 2002/11/13 21:12:18 idiscovery Exp $ # proc About {} { return "Testing -variable option with Tix widgets" } proc Test {} { global foo bar arr set classes {tixControl tixComboBox} set value 1234 foreach class $classes { set w [$class .foo] pack $w update idletasks TestBlock var1-1.1 {$class: config -variable with initialized value} { set bar $value $w config -variable bar update idletasks Assert {[$w cget -value] == $value} } TestBlock var1-1.2 {$class: config -variable w/ uninitialized value} { destroy $w set w [$class .foo] $w config -variable bar Assert {[$w cget -value] == $bar} } TestBlock var1-1.2 {$class: config -variable} { set foo 111 $w config -variable foo update idletasks Assert {[$w cget -value] == $foo} } TestBlock var1-1.2 {$class: config -value} { $w config -value 123 Assert {[$w cget -value] == 123} Assert {[set [$w cget -variable]] == 123} } TestBlock var1-1.2 {$class: config -variable on array variable} { set arr(12) 1234 $w config -variable arr(12) Assert {[$w cget -value] == $arr(12)} } TestBlock var1-1.2 {$class: config -value on array variable} { $w config -value 12 Assert {[$w cget -value] == 12} Assert {[set [$w cget -variable]] == 12} } catch { destroy $w } } } Tix8.4.3/tests/Makefile.in0000664000122200012240000001325207564540061015614 0ustar jeffhjeffh00000000000000# -*- mode: makefile; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Makefile.in,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ # # This file is a Makefile for Tix. If it has the name # "Makefile.in" Then it is a template for a Makefile; to # generate the actual Makefile, run "./configure", which is a # configuration script generated by the "autoconf" program # (constructs like "@foo@" will get replaced in the actual # Makefile. # # See the file README for information about executing the test # suites. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # @SET_MAKE@ BINSRC_DIR = @SRC_DIR@ SRC_DIR = @SRC_DIR@ LIBRARY_DIR = @SRC_DIR@/library DEMOS_DIR = @SRC_DIR@/demos MANUAL_DIR = @SRC_DIR@/man VPATH = @SRC_DIR@ all: @TIX_TARGETS@ @TIX_TEST_LOAD@ test: all unix-tk4.0:: tk40 unix-tk4.1:: tk41 unix-tk4.2:: tk42 unix-itcl2.0:: itcl20 unix-itcl2.1:: itcl21 # There are no test for the following targets (they don't really need # tests) unix-et-tk4.0:: unix-et-tk4.1:: demos-c:: # Some versions of make, like SGI's, use the following variable to # determine which shell to use for executing commands: SHELL = /bin/sh SUBSETS= ENVIRON_74 = TEST_TCL_LIBRARY=@TCL74_SRC_DIR@/library \ TEST_TK_LIBRARY=@TK40_SRC_DIR@/library \ TEST_ITCL_LIBRARY=@ITCL20_SRC_DIR@/itcl/library \ TEST_ITK_LIBRARY=@ITCL20_SRC_DIR@/itk/library \ IWIDGETS_LIBRARY=@ITCL20_SRC_DIR@/iwidgets2.0.0 \ TIX_LIBRARY=@SRC_DIR@/library \ TEST_BINSRC_DIR=$(BINSRC_DIR) \ TEST_LDPATHS="" ENVIRON_75 = TEST_TCL_LIBRARY=@TCL75_SRC_DIR@/library \ TEST_TK_LIBRARY=@TK41_SRC_DIR@/library \ TEST_ITCL_LIBRARY=@ITCL20_SRC_DIR@/itcl/library \ TEST_ITK_LIBRARY=@ITCL20_SRC_DIR@/itk/library \ IWIDGETS_LIBRARY=@ITCL20_SRC_DIR@/iwidgets2.0.0 \ TIX_LIBRARY=@SRC_DIR@/library \ TEST_BINSRC_DIR=$(BINSRC_DIR) \ TEST_LDPATHS=@TCL75_SRC_DIR@/unix:@TK41_SRC_DIR@/unix:$(BINSRC_DIR)/unix-tk4.1 ENVIRON_76 = TEST_TCL_LIBRARY=@TCL76_SRC_DIR@/library \ TEST_TK_LIBRARY=@TK42_SRC_DIR@/library \ TEST_ITCL_LIBRARY=@ITCL20_SRC_DIR@/itcl/library \ TEST_ITK_LIBRARY=@ITCL20_SRC_DIR@/itk/library \ IWIDGETS_LIBRARY=@ITCL20_SRC_DIR@/iwidgets2.0.0 \ TIX_LIBRARY=@SRC_DIR@/library \ TEST_BINSRC_DIR=$(BINSRC_DIR) \ TEST_LDPATHS=@TCL76_SRC_DIR@/unix:@TK42_SRC_DIR@/unix:$(BINSRC_DIR)/unix-tk4.2 ENVIRON_ITCL_20 = TEST_TCL_LIBRARY=@ITCL20_SRC_DIR@/tcl7.4/library \ TEST_TK_LIBRARY=@ITCL20_SRC_DIR@/tk4.0/library \ TEST_ITCL_LIBRARY=@ITCL20_SRC_DIR@/itcl/library \ TEST_ITK_LIBRARY=@ITCL20_SRC_DIR@/itk/library \ IWIDGETS_LIBRARY=@ITCL20_SRC_DIR@/iwidgets2.0.0 \ TIX_LIBRARY=@SRC_DIR@/library \ TEST_BINSRC_DIR=$(BINSRC_DIR) \ TEST_LDPATHS="" ENVIRON_ITCL_21 = TEST_TCL_LIBRARY=@ITCL21_SRC_DIR@/tcl7.5/library \ TEST_TK_LIBRARY=@ITCL21_SRC_DIR@/tk4.1/library \ TEST_ITCL_LIBRARY=@ITCL21_SRC_DIR@/itcl/library \ TEST_ITK_LIBRARY=@ITCL21_SRC_DIR@/itk/library \ IWIDGETS_LIBRARY=@ITCL21_SRC_DIR@/iwidgets2.1.0 \ TIX_LIBRARY=@SRC_DIR@/library \ TEST_BINSRC_DIR=$(BINSRC_DIR) \ TEST_LDPATHS=@ITCL21_SRC_DIR@/itk/unix:@ITCL21_SRC_DIR@/itcl/unix:@ITCL21_SRC_DIR@/tcl7.5/unix:@ITCL21_SRC_DIR@/tk4.1/unix:$(BINSRC_DIR)/unix-itcl2.1 tk40:: @$(ENVIRON_74) \ tclsh Test.tcl tk40 $(SUBSETS) tk41:: @$(ENVIRON_75) \ tclsh Test.tcl tk41 $(SUBSETS) tk42:: @$(ENVIRON_76) \ tclsh Test.tcl tk42 $(SUBSETS) itcl20:: @$(ENVIRON_ITCL_20) \ tclsh Test.tcl itcl20 $(SUBSETS) itcl21:: @$(ENVIRON_ITCL_21) \ tclsh Test.tcl itcl21 $(SUBSETS) load:: @$(ENVIRON_75) \ tclsh Test.tcl load $(SUBSETS) Makefile: Makefile.in cd $(SRC_DIR); $(SHELL) config.status distclean: - rm -f Makefile #---------------------------------------------------------------------- # # Testing the files in the binary distribution # #---------------------------------------------------------------------- dist: dist_tk40 dist_tk41 dist_itcl20 dist_itcl21 BDIST=$(TIX_BIN_DIST_DIR) SDIST=$(TIX_SRC_DIST_DIR) ENV_TK40_DIST = \ TIX_LIBRARY=$(SDIST)/library \ TCL_LIBRARY=@TCL74_SRC_DIR@/library \ TK_LIBRARY=@TK40_SRC_DIR@/library \ LD_LIBRARY_PATH=$(SITE_LDPATH) ENV_TK41_DIST = \ TIX_LIBRARY=$(SDIST)/library \ TCL_LIBRARY=@TCL75_SRC_DIR@/library \ TK_LIBRARY=@TK41_SRC_DIR@/library \ LD_LIBRARY_PATH=$(BDIST)/unix-tk4.1:$(SITE_LDPATH) ENV_ITCL20_DIST = \ TIX_LIBRARY=$(SDIST)/library \ TCL_LIBRARY=@ITCL20_SRC_DIR@/tcl7.4/library \ TK_LIBRARY=@ITCL20_SRC_DIR@/tk4.0/library \ ITCL_LIBRARY=@ITCL20_SRC_DIR@/itcl/library \ ITK_LIBRARY=@ITCL20_SRC_DIR@/itk/library \ IWIDGETS_LIBRARY=@ITCL20_SRC_DIR@/iwidgets2.0.0 \ LD_LIBRARY_PATH=$(SITE_LDPATH) ENV_ITCL21_DIST = \ TIX_LIBRARY=$(SDIST)/library \ TCL_LIBRARY=@ITCL21_SRC_DIR@/tcl7.5/library \ TK_LIBRARY=@ITCL21_SRC_DIR@/tk4.1/library \ ITCL_LIBRARY=@ITCL21_SRC_DIR@/itcl/library \ ITK_LIBRARY=@ITCL21_SRC_DIR@/itk/library \ IWIDGETS_LIBRARY=@ITCL21_SRC_DIR@/iwidgets2.1.0 \ LD_LIBRARY_PATH=$(BDIST)/unix-itcl2.1:$(SITE_LDPATH) dist_tk40: @echo @echo ======================== tk40_dist @echo -$(ENV_TK40_DIST) ldd $(BDIST)/unix-tk4.0/tixwish $(ENV_TK40_DIST) $(BDIST)/unix-tk4.0/tixwish Driver.tcl $(SUBSETS) dist_tk41: @echo @echo ======================== tk41_dist @echo -$(ENV_TK41_DIST) ldd $(BDIST)/unix-tk4.1/tixwish $(ENV_TK41_DIST) $(BDIST)/unix-tk4.1/tixwish Driver.tcl $(SUBSETS) dist_itcl20: @echo @echo ======================== itcl20_dist @echo -$(ENV_ITCL20_DIST) ldd $(BDIST)/unix-itcl2.0/itixwish $(ENV_ITCL20_DIST) $(BDIST)/unix-itcl2.0/itixwish Driver.tcl $(SUBSETS) dist_itcl21: @echo @echo ======================== itcl21_dist @echo -$(ENV_ITCL21_DIST) ldd $(BDIST)/unix-itcl2.1/itixwish $(ENV_ITCL21_DIST) $(BDIST)/unix-itcl2.1/itixwish Driver.tcl $(SUBSETS) Tix8.4.3/tests/defs.tcl0000644000122200012240000007734607564540061015210 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # defs.tcl -- # # This file contains support code for the Tcl/Tk test suite.It is # It is normally sourced by the individual files in the test suite # before they run their tests. This improved approach to testing # was designed and initially implemented by Mary Ann May-Pumphrey # of Sun Microsystems. # # Copyright (c) 1990-1994 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # # Copied from Tk 8.3.2 without change. # Original RCS Id: defs.tcl,v 1.7 1999/12/14 06:53:12 hobbs Exp # Tix RCS Id: $Id: defs.tcl,v 1.3 2002/11/13 21:12:17 idiscovery Exp $ # Initialize wish shell if {[info exists tk_version]} { tk appname tktest wm title . tktest } else { # Ensure that we have a minimal auto_path so we don't pick up extra junk. set auto_path [list [info library]] } # create the "tcltest" namespace for all testing variables and procedures namespace eval tcltest { set procList [list test cleanupTests dotests saveState restoreState \ normalizeMsg makeFile removeFile makeDirectory removeDirectory \ viewFile bytestring set_iso8859_1_locale restore_locale \ safeFetch threadReap] if {[info exists tk_version]} { lappend procList setupbg dobg bgReady cleanupbg fixfocus } foreach proc $procList { namespace export $proc } # setup ::tcltest default vars foreach {var default} {verbose b match {} skip {}} { if {![info exists $var]} { variable $var $default } } # Tests should not rely on the current working directory. # Files that are part of the test suite should be accessed relative to # ::tcltest::testsDir. set originalDir [pwd] set tDir [file join $originalDir [file dirname [info script]]] cd $tDir variable testsDir [pwd] cd $originalDir # Count the number of files tested (0 if all.tcl wasn't called). # The all.tcl file will set testSingleFile to false, so stats will # not be printed until all.tcl calls the cleanupTests proc. # The currentFailure var stores the boolean value of whether the # current test file has had any failures. The failFiles list # stores the names of test files that had failures. variable numTestFiles 0 variable testSingleFile true variable currentFailure false variable failFiles {} # Tests should remove all files they create. The test suite will # check the current working dir for files created by the tests. # ::tcltest::filesMade keeps track of such files created using the # ::tcltest::makeFile and ::tcltest::makeDirectory procedures. # ::tcltest::filesExisted stores the names of pre-existing files. variable filesMade {} variable filesExisted {} # ::tcltest::numTests will store test files as indices and the list # of files (that should not have been) left behind by the test files. array set ::tcltest::createdNewFiles {} # initialize ::tcltest::numTests array to keep track fo the number of # tests that pass, fial, and are skipped. array set numTests [list Total 0 Passed 0 Skipped 0 Failed 0] # initialize ::tcltest::skippedBecause array to keep track of # constraints that kept tests from running array set ::tcltest::skippedBecause {} # tests that use thread need to know which is the main thread variable ::tcltest::mainThread 1 if {[info commands testthread] != {}} { puts "Tk with threads enabled is known to have problems with X" set ::tcltest::mainThread [testthread names] } } # If there is no "memory" command (because memory debugging isn't # enabled), generate a dummy command that does nothing. if {[info commands memory] == ""} { proc memory args {} } # ::tcltest::initConfig -- # # Check configuration information that will determine which tests # to run. To do this, create an array ::tcltest::testConfig. Each # element has a 0 or 1 value. If the element is "true" then tests # with that constraint will be run, otherwise tests with that constraint # will be skipped. See the README file for the list of built-in # constraints defined in this procedure. # # Arguments: # none # # Results: # The ::tcltest::testConfig array is reset to have an index for # each built-in test constraint. proc ::tcltest::initConfig {} { global tcl_platform tcl_interactive tk_version catch {unset ::tcltest::testConfig} # The following trace procedure makes it so that we can safely refer to # non-existent members of the ::tcltest::testConfig array without causing an # error. Instead, reading a non-existent member will return 0. This is # necessary because tests are allowed to use constraint "X" without ensuring # that ::tcltest::testConfig("X") is defined. trace variable ::tcltest::testConfig r ::tcltest::safeFetch proc ::tcltest::safeFetch {n1 n2 op} { if {($n2 != {}) && ([info exists ::tcltest::testConfig($n2)] == 0)} { set ::tcltest::testConfig($n2) 0 } } set ::tcltest::testConfig(unixOnly) \ [expr {$tcl_platform(platform) == "unix"}] set ::tcltest::testConfig(macOnly) \ [expr {$tcl_platform(platform) == "macintosh"}] set ::tcltest::testConfig(pcOnly) \ [expr {$tcl_platform(platform) == "windows"}] set ::tcltest::testConfig(unix) $::tcltest::testConfig(unixOnly) set ::tcltest::testConfig(mac) $::tcltest::testConfig(macOnly) set ::tcltest::testConfig(pc) $::tcltest::testConfig(pcOnly) set ::tcltest::testConfig(unixOrPc) \ [expr {$::tcltest::testConfig(unix) || $::tcltest::testConfig(pc)}] set ::tcltest::testConfig(macOrPc) \ [expr {$::tcltest::testConfig(mac) || $::tcltest::testConfig(pc)}] set ::tcltest::testConfig(macOrUnix) \ [expr {$::tcltest::testConfig(mac) || $::tcltest::testConfig(unix)}] set ::tcltest::testConfig(nt) [expr {$tcl_platform(os) == "Windows NT"}] set ::tcltest::testConfig(95) [expr {$tcl_platform(os) == "Windows 95"}] # The following config switches are used to mark tests that should work, # but have been temporarily disabled on certain platforms because they don't # and we haven't gotten around to fixing the underlying problem. set ::tcltest::testConfig(tempNotPc) [expr {!$::tcltest::testConfig(pc)}] set ::tcltest::testConfig(tempNotMac) [expr {!$::tcltest::testConfig(mac)}] set ::tcltest::testConfig(tempNotUnix) [expr {!$::tcltest::testConfig(unix)}] # The following config switches are used to mark tests that crash on # certain platforms, so that they can be reactivated again when the # underlying problem is fixed. set ::tcltest::testConfig(pcCrash) [expr {!$::tcltest::testConfig(pc)}] set ::tcltest::testConfig(macCrash) [expr {!$::tcltest::testConfig(mac)}] set ::tcltest::testConfig(unixCrash) [expr {!$::tcltest::testConfig(unix)}] # Set the "fonts" constraint for wish apps if {[info exists tk_version]} { set ::tcltest::testConfig(fonts) 1 catch {destroy .e} entry .e -width 0 -font {Helvetica -12} -bd 1 .e insert end "a.bcd" if {([winfo reqwidth .e] != 37) || ([winfo reqheight .e] != 20)} { set ::tcltest::testConfig(fonts) 0 } destroy .e catch {destroy .t} text .t -width 80 -height 20 -font {Times -14} -bd 1 pack .t .t insert end "This is\na dot." update set x [list [.t bbox 1.3] [.t bbox 2.5]] destroy .t if {[string match {{22 3 6 15} {31 18 [34] 15}} $x] == 0} { set ::tcltest::testConfig(fonts) 0 } # Test to see if we have are running Unix apps on Exceed, # which won't return font failures (Windows-like), which is # not what we want from ann X server (other Windows X servers # operate as expected) set ::tcltest::testConfig(noExceed) 1 if {$::tcltest::testConfig(unixOnly) && \ [catch {font actual "\{xyz"}] == 0} { puts "Running X app on Exceed, skipping problematic font tests..." set ::tcltest::testConfig(noExceed) 0 } } # Skip empty tests set ::tcltest::testConfig(emptyTest) 0 # By default, tests that expost known bugs are skipped. set ::tcltest::testConfig(knownBug) 0 # By default, non-portable tests are skipped. set ::tcltest::testConfig(nonPortable) 0 # Some tests require user interaction. set ::tcltest::testConfig(userInteraction) 0 # Some tests must be skipped if the interpreter is not in interactive mode set ::tcltest::testConfig(interactive) $tcl_interactive # Some tests must be skipped if you are running as root on Unix. # Other tests can only be run if you are running as root on Unix. set ::tcltest::testConfig(root) 0 set ::tcltest::testConfig(notRoot) 1 set user {} if {$tcl_platform(platform) == "unix"} { catch {set user [exec whoami]} if {$user == ""} { catch {regexp {^[^(]*\(([^)]*)\)} [exec id] dummy user} } if {($user == "root") || ($user == "")} { set ::tcltest::testConfig(root) 1 set ::tcltest::testConfig(notRoot) 0 } } # Set nonBlockFiles constraint: 1 means this platform supports # setting files into nonblocking mode. if {[catch {set f [open defs r]}]} { set ::tcltest::testConfig(nonBlockFiles) 1 } else { if {[catch {fconfigure $f -blocking off}] == 0} { set ::tcltest::testConfig(nonBlockFiles) 1 } else { set ::tcltest::testConfig(nonBlockFiles) 0 } close $f } # Set asyncPipeClose constraint: 1 means this platform supports # async flush and async close on a pipe. # # Test for SCO Unix - cannot run async flushing tests because a # potential problem with select is apparently interfering. # (Mark Diekhans). if {$tcl_platform(platform) == "unix"} { if {[catch {exec uname -X | fgrep {Release = 3.2v}}] == 0} { set ::tcltest::testConfig(asyncPipeClose) 0 } else { set ::tcltest::testConfig(asyncPipeClose) 1 } } else { set ::tcltest::testConfig(asyncPipeClose) 1 } # Test to see if we have a broken version of sprintf with respect # to the "e" format of floating-point numbers. set ::tcltest::testConfig(eformat) 1 if {[string compare "[format %g 5e-5]" "5e-05"] != 0} { set ::tcltest::testConfig(eformat) 0 } # Test to see if execed commands such as cat, echo, rm and so forth are # present on this machine. set ::tcltest::testConfig(unixExecs) 1 if {$tcl_platform(platform) == "macintosh"} { set ::tcltest::testConfig(unixExecs) 0 } if {($::tcltest::testConfig(unixExecs) == 1) && \ ($tcl_platform(platform) == "windows")} { if {[catch {exec cat defs}] == 1} { set ::tcltest::testConfig(unixExecs) 0 } if {($::tcltest::testConfig(unixExecs) == 1) && \ ([catch {exec echo hello}] == 1)} { set ::tcltest::testConfig(unixExecs) 0 } if {($::tcltest::testConfig(unixExecs) == 1) && \ ([catch {exec sh -c echo hello}] == 1)} { set ::tcltest::testConfig(unixExecs) 0 } if {($::tcltest::testConfig(unixExecs) == 1) && \ ([catch {exec wc defs}] == 1)} { set ::tcltest::testConfig(unixExecs) 0 } if {$::tcltest::testConfig(unixExecs) == 1} { exec echo hello > removeMe if {[catch {exec rm removeMe}] == 1} { set ::tcltest::testConfig(unixExecs) 0 } } if {($::tcltest::testConfig(unixExecs) == 1) && \ ([catch {exec sleep 1}] == 1)} { set ::tcltest::testConfig(unixExecs) 0 } if {($::tcltest::testConfig(unixExecs) == 1) && \ ([catch {exec fgrep unixExecs defs}] == 1)} { set ::tcltest::testConfig(unixExecs) 0 } if {($::tcltest::testConfig(unixExecs) == 1) && \ ([catch {exec ps}] == 1)} { set ::tcltest::testConfig(unixExecs) 0 } if {($::tcltest::testConfig(unixExecs) == 1) && \ ([catch {exec echo abc > removeMe}] == 0) && \ ([catch {exec chmod 644 removeMe}] == 1) && \ ([catch {exec rm removeMe}] == 0)} { set ::tcltest::testConfig(unixExecs) 0 } else { catch {exec rm -f removeMe} } if {($::tcltest::testConfig(unixExecs) == 1) && \ ([catch {exec mkdir removeMe}] == 1)} { set ::tcltest::testConfig(unixExecs) 0 } else { catch {exec rm -r removeMe} } } } ::tcltest::initConfig # ::tcltest::processCmdLineArgs -- # # Use command line args to set the verbose, skip, and # match variables. This procedure must be run after # constraints are initialized, because some constraints can be # overridden. # # Arguments: # none # # Results: # ::tcltest::verbose is set to proc ::tcltest::processCmdLineArgs {} { global argv # The "argv" var doesn't exist in some cases, so use {} # The "argv" var doesn't exist in some cases. if {(![info exists argv]) || ([llength $argv] < 2)} { set flagArray {} } else { set flagArray $argv } if {[catch {array set flag $flagArray}]} { puts stderr "Error: odd number of command line args specified:" puts stderr " $argv" exit } # Allow for 1-char abbreviations, where applicable (e.g., -match == -m). # Note that -verbose cannot be abbreviated to -v in wish because it # conflicts with the wish option -visual. foreach arg {-verbose -match -skip -constraints} { set abbrev [string range $arg 0 1] if {([info exists flag($abbrev)]) && \ ([lsearch -exact $flagArray $arg] < \ [lsearch -exact $flagArray $abbrev])} { set flag($arg) $flag($abbrev) } } # Set ::tcltest::workingDir to [pwd]. # Save the names of files that already exist in ::tcltest::workingDir. set ::tcltest::workingDir [pwd] foreach file [glob -nocomplain [file join $::tcltest::workingDir *]] { lappend ::tcltest::filesExisted [file tail $file] } # Set ::tcltest::verbose to the arg of the -verbose flag, if given if {[info exists flag(-verbose)]} { set ::tcltest::verbose $flag(-verbose) } # Set ::tcltest::match to the arg of the -match flag, if given if {[info exists flag(-match)]} { set ::tcltest::match $flag(-match) } # Set ::tcltest::skip to the arg of the -skip flag, if given if {[info exists flag(-skip)]} { set ::tcltest::skip $flag(-skip) } # Use the -constraints flag, if given, to turn on constraints that are # turned off by default: userInteractive knownBug nonPortable. This # code fragment must be run after constraints are initialized. if {[info exists flag(-constraints)]} { foreach elt $flag(-constraints) { set ::tcltest::testConfig($elt) 1 } } } ::tcltest::processCmdLineArgs # ::tcltest::cleanupTests -- # # Remove files and dirs created using the makeFile and makeDirectory # commands since the last time this proc was invoked. # # Print the names of the files created without the makeFile command # since the tests were invoked. # # Print the number tests (total, passed, failed, and skipped) since the # tests were invoked. # proc ::tcltest::cleanupTests {{calledFromAllFile 0}} { set tail [file tail [info script]] # Remove files and directories created by the :tcltest::makeFile and # ::tcltest::makeDirectory procedures. # Record the names of files in ::tcltest::workingDir that were not # pre-existing, and associate them with the test file that created them. if {!$calledFromAllFile} { foreach file $::tcltest::filesMade { if {[file exists $file]} { catch {file delete -force $file} } } set currentFiles {} foreach file [glob -nocomplain [file join $::tcltest::workingDir *]] { lappend currentFiles [file tail $file] } set newFiles {} foreach file $currentFiles { if {[lsearch -exact $::tcltest::filesExisted $file] == -1} { lappend newFiles $file } } set ::tcltest::filesExisted $currentFiles if {[llength $newFiles] > 0} { set ::tcltest::createdNewFiles($tail) $newFiles } } if {$calledFromAllFile || $::tcltest::testSingleFile} { # print stats puts -nonewline stdout "$tail:" foreach index [list "Total" "Passed" "Skipped" "Failed"] { puts -nonewline stdout "\t$index\t$::tcltest::numTests($index)" } puts stdout "" # print number test files sourced # print names of files that ran tests which failed if {$calledFromAllFile} { puts stdout "Sourced $::tcltest::numTestFiles Test Files." set ::tcltest::numTestFiles 0 if {[llength $::tcltest::failFiles] > 0} { puts stdout "Files with failing tests: $::tcltest::failFiles" set ::tcltest::failFiles {} } } # if any tests were skipped, print the constraints that kept them # from running. set constraintList [array names ::tcltest::skippedBecause] if {[llength $constraintList] > 0} { puts stdout "Number of tests skipped for each constraint:" foreach constraint [lsort $constraintList] { puts stdout \ "\t$::tcltest::skippedBecause($constraint)\t$constraint" unset ::tcltest::skippedBecause($constraint) } } # report the names of test files in ::tcltest::createdNewFiles, and # reset the array to be empty. set testFilesThatTurded [lsort [array names ::tcltest::createdNewFiles]] if {[llength $testFilesThatTurded] > 0} { puts stdout "Warning: test files left files behind:" foreach testFile $testFilesThatTurded { puts "\t$testFile:\t$::tcltest::createdNewFiles($testFile)" unset ::tcltest::createdNewFiles($testFile) } } # reset filesMade, filesExisted, and numTests set ::tcltest::filesMade {} foreach index [list "Total" "Passed" "Skipped" "Failed"] { set ::tcltest::numTests($index) 0 } # exit only if running Tk in non-interactive mode global tk_version tcl_interactive if {[info exists tk_version] && !$tcl_interactive} { exit } } else { # if we're deferring stat-reporting until all files are sourced, # then add current file to failFile list if any tests in this file # failed incr ::tcltest::numTestFiles if {($::tcltest::currentFailure) && \ ([lsearch -exact $::tcltest::failFiles $tail] == -1)} { lappend ::tcltest::failFiles $tail } set ::tcltest::currentFailure false } } # test -- # # This procedure runs a test and prints an error message if the test fails. # If ::tcltest::verbose has been set, it also prints a message even if the # test succeeds. The test will be skipped if it doesn't match the # ::tcltest::match variable, if it matches an element in # ::tcltest::skip, or if one of the elements of "constraints" turns # out not to be true. # # Arguments: # name - Name of test, in the form foo-1.2. # description - Short textual description of the test, to # help humans understand what it does. # constraints - A list of one or more keywords, each of # which must be the name of an element in # the array "::tcltest::testConfig". If any of these # elements is zero, the test is skipped. # This argument may be omitted. # script - Script to run to carry out the test. It must # return a result that can be checked for # correctness. # expectedAnswer - Expected result from script. proc ::tcltest::test {name description script expectedAnswer args} { incr ::tcltest::numTests(Total) # skip the test if it's name matches an element of skip foreach pattern $::tcltest::skip { if {[string match $pattern $name]} { incr ::tcltest::numTests(Skipped) return } } # skip the test if it's name doesn't match any element of match if {[llength $::tcltest::match] > 0} { set ok 0 foreach pattern $::tcltest::match { if {[string match $pattern $name]} { set ok 1 break } } if {!$ok} { incr ::tcltest::numTests(Skipped) return } } set i [llength $args] if {$i == 0} { set constraints {} } elseif {$i == 1} { # "constraints" argument exists; shuffle arguments down, then # make sure that the constraints are satisfied. set constraints $script set script $expectedAnswer set expectedAnswer [lindex $args 0] set doTest 0 if {[string match {*[$\[]*} $constraints] != 0} { # full expression, e.g. {$foo > [info tclversion]} catch {set doTest [uplevel #0 expr $constraints]} } elseif {[regexp {[^.a-zA-Z0-9 ]+} $constraints] != 0} { # something like {a || b} should be turned into # $::tcltest::testConfig(a) || $::tcltest::testConfig(b). regsub -all {[.a-zA-Z0-9]+} $constraints \ {$::tcltest::testConfig(&)} c catch {set doTest [eval expr $c]} } else { # just simple constraints such as {unixOnly fonts}. set doTest 1 foreach constraint $constraints { if {![info exists ::tcltest::testConfig($constraint)] || !$::tcltest::testConfig($constraint)} { set doTest 0 # store the constraint that kept the test from running set constraints $constraint break } } } if {$doTest == 0} { incr ::tcltest::numTests(Skipped) if {[string first s $::tcltest::verbose] != -1} { puts stdout "++++ $name SKIPPED: $constraints" } # add the constraint to the list of constraints the kept tests # from running if {[info exists ::tcltest::skippedBecause($constraints)]} { incr ::tcltest::skippedBecause($constraints) } else { set ::tcltest::skippedBecause($constraints) 1 } return } } else { error "wrong # args: must be \"test name description ?constraints? script expectedAnswer\"" } memory tag $name set code [catch {uplevel $script} actualAnswer] if {$code != 0 || [string compare $actualAnswer $expectedAnswer] != 0} { incr ::tcltest::numTests(Failed) set ::tcltest::currentFailure true if {[string first b $::tcltest::verbose] == -1} { set script "" } puts stdout "\n==== $name $description FAILED" if {$script != ""} { puts stdout "==== Contents of test case:" puts stdout $script } if {$code != 0} { if {$code == 1} { puts stdout "==== Test generated error:" puts stdout $actualAnswer } elseif {$code == 2} { puts stdout "==== Test generated return exception; result was:" puts stdout $actualAnswer } elseif {$code == 3} { puts stdout "==== Test generated break exception" } elseif {$code == 4} { puts stdout "==== Test generated continue exception" } else { puts stdout "==== Test generated exception $code; message was:" puts stdout $actualAnswer } } else { puts stdout "---- Result was:\n$actualAnswer" } puts stdout "---- Result should have been:\n$expectedAnswer" puts stdout "==== $name FAILED\n" } else { incr ::tcltest::numTests(Passed) if {[string first p $::tcltest::verbose] != -1} { puts stdout "++++ $name PASSED" } } } # ::tcltest::dotests -- # # takes two arguments--the name of the test file (such # as "parse.test"), and a pattern selecting the tests you want to # execute. It sets ::tcltest::matching to the second argument, calls # "source" on the file specified in the first argument, and restores # ::tcltest::matching to its pre-call value at the end. # # Arguments: # file name of tests file to source # args pattern selecting the tests you want to execute # # Results: # none proc ::tcltest::dotests {file args} { set savedTests $::tcltest::match set ::tcltest::match $args source $file set ::tcltest::match $savedTests } proc ::tcltest::openfiles {} { if {[catch {testchannel open} result]} { return {} } return $result } proc ::tcltest::leakfiles {old} { if {[catch {testchannel open} new]} { return {} } set leak {} foreach p $new { if {[lsearch $old $p] < 0} { lappend leak $p } } return $leak } set ::tcltest::saveState {} proc ::tcltest::saveState {} { uplevel #0 {set ::tcltest::saveState [list [info procs] [info vars]]} } proc ::tcltest::restoreState {} { foreach p [info procs] { if {[lsearch [lindex $::tcltest::saveState 0] $p] < 0} { rename $p {} } } foreach p [uplevel #0 {info vars}] { if {[lsearch [lindex $::tcltest::saveState 1] $p] < 0} { uplevel #0 "unset $p" } } } proc ::tcltest::normalizeMsg {msg} { regsub "\n$" [string tolower $msg] "" msg regsub -all "\n\n" $msg "\n" msg regsub -all "\n\}" $msg "\}" msg return $msg } # makeFile -- # # Create a new file with the name , and write to it. # # If this file hasn't been created via makeFile since the last time # cleanupTests was called, add it to the $filesMade list, so it will # be removed by the next call to cleanupTests. # proc ::tcltest::makeFile {contents name} { set fd [open $name w] fconfigure $fd -translation lf if {[string index $contents [expr {[string length $contents] - 1}]] == "\n"} { puts -nonewline $fd $contents } else { puts $fd $contents } close $fd set fullName [file join [pwd] $name] if {[lsearch -exact $::tcltest::filesMade $fullName] == -1} { lappend ::tcltest::filesMade $fullName } } proc ::tcltest::removeFile {name} { file delete $name } # makeDirectory -- # # Create a new dir with the name . # # If this dir hasn't been created via makeDirectory since the last time # cleanupTests was called, add it to the $directoriesMade list, so it will # be removed by the next call to cleanupTests. # proc ::tcltest::makeDirectory {name} { file mkdir $name set fullName [file join [pwd] $name] if {[lsearch -exact $::tcltest::filesMade $fullName] == -1} { lappend ::tcltest::filesMade $fullName } } proc ::tcltest::removeDirectory {name} { file delete -force $name } proc ::tcltest::viewFile {name} { global tcl_platform if {($tcl_platform(platform) == "macintosh") || \ ($::tcltest::testConfig(unixExecs) == 0)} { set f [open $name] set data [read -nonewline $f] close $f return $data } else { exec cat $name } } # # Construct a string that consists of the requested sequence of bytes, # as opposed to a string of properly formed UTF-8 characters. # This allows the tester to # 1. Create denormalized or improperly formed strings to pass to C procedures # that are supposed to accept strings with embedded NULL bytes. # 2. Confirm that a string result has a certain pattern of bytes, for instance # to confirm that "\xe0\0" in a Tcl script is stored internally in # UTF-8 as the sequence of bytes "\xc3\xa0\xc0\x80". # # Generally, it's a bad idea to examine the bytes in a Tcl string or to # construct improperly formed strings in this manner, because it involves # exposing that Tcl uses UTF-8 internally. proc ::tcltest::bytestring {string} { encoding convertfrom identity $string } # Locate tcltest executable if {![info exists tk_version]} { set tcltest [info nameofexecutable] if {$tcltest == "{}"} { set tcltest {} } } set thisdir [file dirname [info script]] set ::tcltest::testConfig(stdio) 0 catch { catch {file delete -force [file join $thisdir tmp]} set f [open [file join $thisdir tmp] w] puts $f { exit } close $f set f [open "|[list $tcltest [file join $thisdir tmp]]" r] close $f set ::tcltest::testConfig(stdio) 1 } catch {file delete -force [file join $thisdir tmp]} # Deliberately call the socket with the wrong number of arguments. The error # message you get will indicate whether sockets are available on this system. catch {socket} msg set ::tcltest::testConfig(socket) \ [expr {$msg != "sockets are not available on this system"}] # # Internationalization / ISO support procs -- dl # if {[info commands testlocale]==""} { # No testlocale command, no tests... # (it could be that we are a sub interp and we could just load # the Tcltest package but that would interfere with tests # that tests packages/loading in slaves...) set ::tcltest::testConfig(hasIsoLocale) 0 } else { proc ::tcltest::set_iso8859_1_locale {} { set ::tcltest::previousLocale [testlocale ctype] testlocale ctype $::tcltest::isoLocale } proc ::tcltest::restore_locale {} { testlocale ctype $::tcltest::previousLocale } if {![info exists ::tcltest::isoLocale]} { set ::tcltest::isoLocale fr switch $tcl_platform(platform) { "unix" { # Try some 'known' values for some platforms: switch -exact -- $tcl_platform(os) { "FreeBSD" { set ::tcltest::isoLocale fr_FR.ISO_8859-1 } HP-UX { set ::tcltest::isoLocale fr_FR.iso88591 } Linux - IRIX { set ::tcltest::isoLocale fr } default { # Works on SunOS 4 and Solaris, and maybe others... # define it to something else on your system #if you want to test those. set ::tcltest::isoLocale iso_8859_1 } } } "windows" { set ::tcltest::isoLocale French } } } set ::tcltest::testConfig(hasIsoLocale) \ [string length [::tcltest::set_iso8859_1_locale]] ::tcltest::restore_locale } # # procedures that are Tk specific # if {[info exists tk_version]} { # If the main window isn't already mapped (e.g. because the tests are # being run automatically) , specify a precise size for it so that the # user won't have to position it manually. if {![winfo ismapped .]} { wm geometry . +0+0 update } # The following code can be used to perform tests involving a second # process running in the background. # Locate the tktest executable set ::tcltest::tktest [info nameofexecutable] if {$::tcltest::tktest == "{}"} { set ::tcltest::tktest {} puts stdout \ "Unable to find tktest executable, skipping multiple process tests." } # Create background process proc ::tcltest::setupbg args { if {$::tcltest::tktest == ""} { error "you're not running tktest so setupbg should not have been called" } if {[info exists ::tcltest::fd] && ($::tcltest::fd != "")} { cleanupbg } # The following code segment cannot be run on Windows prior # to Tk 8.1b3 due to a channel I/O bug (bugID 1495). global tcl_platform set ::tcltest::fd [open "|[list $::tcltest::tktest -geometry +0+0 -name tktest] $args" r+] puts $::tcltest::fd "puts foo; flush stdout" flush $::tcltest::fd if {[gets $::tcltest::fd data] < 0} { error "unexpected EOF from \"$::tcltest::tktest\"" } if {[string compare $data foo]} { error "unexpected output from background process \"$data\"" } fileevent $::tcltest::fd readable bgReady } # Send a command to the background process, catching errors and # flushing I/O channels proc ::tcltest::dobg {command} { puts $::tcltest::fd "catch [list $command] msg; update; puts \$msg; puts **DONE**; flush stdout" flush $::tcltest::fd set ::tcltest::bgDone 0 set ::tcltest::bgData {} tkwait variable ::tcltest::bgDone set ::tcltest::bgData } # Data arrived from background process. Check for special marker # indicating end of data for this command, and make data available # to dobg procedure. proc ::tcltest::bgReady {} { set x [gets $::tcltest::fd] if {[eof $::tcltest::fd]} { fileevent $::tcltest::fd readable {} set ::tcltest::bgDone 1 } elseif {$x == "**DONE**"} { set ::tcltest::bgDone 1 } else { append ::tcltest::bgData $x } } # Exit the background process, and close the pipes proc ::tcltest::cleanupbg {} { catch { puts $::tcltest::fd "exit" close $::tcltest::fd } set ::tcltest::fd "" } # Clean up focus after using generate event, which # can leave the window manager with the wrong impression # about who thinks they have the focus. (BW) proc ::tcltest::fixfocus {} { catch {destroy .focus} toplevel .focus wm geometry .focus +0+0 entry .focus.e .focus.e insert 0 "fixfocus" pack .focus.e update focus -force .focus.e destroy .focus } } # threadReap -- # # Kill all threads except for the main thread. # Do nothing if testthread is not defined. # # Arguments: # none. # # Results: # Returns the number of existing threads. if {[info commands testthread] != {}} { proc ::tcltest::threadReap {} { testthread errorproc ThreadNullError while {[llength [testthread names]] > 1} { foreach tid [testthread names] { if {$tid != $::tcltest::mainThread} { catch {testthread send -async $tid {testthread exit}} update } } } testthread errorproc ThreadError return [llength [testthread names]] } } else { proc ::tcltest::threadReap {} { return 1 } } # Need to catch the import because it fails if defs.tcl is sourced # more than once. catch {namespace import ::tcltest::*} return Tix8.4.3/tests/grid.test0000664000122200012240000000316107564540061015373 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # grid.test -- # # This file is a Tcl script to test out tixGrid.c and tixGrRC.c # It is organized in the standard fashion for Tcl tests. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: grid.test,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ package require Tix if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } set longword xx for {set i 0} {$i < 10} {incr i} { set longword $longword$longword } proc format-$longword {args} { global format_called set format_called 1 } test grid-1.1 {Tix_GrCallFormatCmd()} { set format_called 0 tixGrid .grid -formatcmd format-$longword pack .grid update idletasks destroy .grid set format_called } {1} test grrc-1.1 {Tix_GrRCSize} { tixGrid .grid set a [list [catch { .grid size row xx } msg] $msg] destroy .grid set a } {1 {unknown option "xx"; must be an integer or "default"}} test grrc-1.2 {Tix_GrRCSize(): sprintf} { tixGrid .grid set a [list [catch { .grid size row default -pad } msg] $msg] destroy .grid set a } {1 {value missing for option "-pad"}} test grrc-1.3 {Tix_GrRCSize(): sprintf} { tixGrid .grid set a [list [catch { .grid size row 123 -pad } msg] $msg] destroy .grid set a } {1 {value missing for option "-pad"}} # cleanup ::tcltest::cleanupTests return Tix8.4.3/tests/basic.test0000644000122200012240000000143610031436051015512 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # basic.test -- # # This file is a Tcl script to test out Tix's basic behaviors. # It is organized in the standard fashion for Tcl tests. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: basic.test,v 1.4 2004/03/28 02:44:57 hobbs Exp $ package require Tix if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } test basic-1.1 {version check} { list This Tix test suite expects Tix version $tix_version } {This Tix test suite expects Tix version 8.4} # cleanup ::tcltest::cleanupTests return Tix8.4.3/tests/namesp.test0000664000122200012240000001064707564540061015740 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # namesp.test -- # # This file is a Tcl script to test out Tix's behavior under # namespaces. It is organized in the standard fashion for Tcl # tests. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: namesp.test,v 1.3 2002/11/13 21:12:17 idiscovery Exp $ # TODO: # Invoke tix methods inside namespace # Invoke tix var traces inside namesp # Invoke tix -commands inside namesp # Invoke delayed actions (e.g., browsecmd) inside namesp # more more more tests package require Tix if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } tixClass tixTestClass { -superclass {} -classname TixTestClass -method { cget configure foo bar } -flag { -x -y } -configspec { {-x 0} {-y 0} } } proc tixTestClass:Constructor {args} {} proc tixTestClass:foo {w args} { upvar #0 $w data return [list $data(-x) and me too] } test namesp-1.1.1 {create widget in namespace} { # # widget command should be created in global name space # namespace eval ::myNameSpace { tixScrolledHList .sl } set a [info command ::.sl] destroy .sl set a } {::.sl} test namesp-1.1.2 {create class instance in namespace} { # # instance command should be created in global name space # namespace eval ::myNameSpace { tixTestClass xx } set a [info command ::xx] rename xx "" set a } {::xx} test namesp-1.2.1 {create widget in namespace} { # # widget variable should be created in global name space # namespace eval ::myNameSpace { tixScrolledHList .sl } set a [list [catch {set ::.sl} msg] $msg] destroy .sl set a } {1 {can't read "::.sl": variable is array}} test namesp-1.2.2 {create class instance in namespace} { # # instance variable should be created in global name space # namespace eval ::myNameSpace { tixTestClass xx } set a [list [catch {set ::xx} msg] $msg] rename xx {} set a } {1 {can't read "::xx": variable is array}} test namesp-1.3.2 {class instance variable} { # # instance variable should be created in global name space # namespace eval ::myNameSpace { tixTestClass xx -x 10 -y 10 } set a [list [catch {set ::xx(-x)} msg] $msg] rename xx {} set a } {0 10} test namesp-1.4.2 {class instance method} { tixTestClass xx -x 10 -y 10 namespace eval ::myNameSpace { set ::a [list [catch {xx foo} msg] $msg] } rename xx {} set a } {0 {10 and me too}} test namesp-1.5.2 {class instance cget} { tixTestClass xx -x 1234 namespace eval ::myNameSpace { set ::a [list [catch {xx cget -x} msg] $msg] } rename xx {} set a } {0 1234} test namesp-1.6.2 {class instance configure} { tixTestClass xx -x 1234 namespace eval ::myNameSpace { xx config -x 2345 } set ::a [list [catch {xx cget -x} msg] $msg] rename xx {} set a } {0 2345} test namesp-2.1.1 {invalid widget name} { list [catch {tixScrolledHList ::.sl} msg] $msg } {1 {invalid widget name "::.sl": may not contain substring "::"}} test namesp-2.1.2 {invalid instance name} { list [catch {tixTestClass ::.sl} msg] $msg } {1 {invalid instance name "::.sl": may not contain substring "::"}} test namesp-2.2 {invalid widget name} { list [catch {tixScrolledHList .sl::xx} msg] $msg } {1 {invalid widget name ".sl::xx": may not contain substring "::"}} test namesp-3.1.1 {declare class inside namespace} { namespace eval ::myNameSpace { tixClass tixTestClass2 { -superclass {} -classname TixTestClass -method { foo bar } -flag { -x -y } -configspec { {-x 0} {-y 0} } } } set a [list [catch {info commands ::tixTestClass2} msg] $msg] set b [list [catch {set ::tixTestClass2} msg] $msg] set c [list [catch {set ::tixTestClass2(className)} msg] $msg] list $a $b $c } {{0 ::tixTestClass2} {1 {can't read "::tixTestClass2": variable is array}} {0 tixTestClass2}} # cleanup ::tcltest::cleanupTests return Tix8.4.3/tests/Driver.tcl0000644000122200012240000002023507577001541015502 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Driver.tcl,v 1.4 2002/12/15 04:21:53 idiscovery Exp $ # # This is the "Test Driver" program that sources in each test script. It # is invoked by tests/Test.tcl or by "make tests" in unix/tk8.0 (in # Unix) or by a properly configured wish.exe program (in Windows). # catch { cd [file dirname [info script]] } # Some parts of the test for a specific platform. The variable # tixPriv(test:platform) controls the tests for which platform should # be executed. This can be controlled by the TEST_PLATFORM environment # variable # set tixPriv(test:platform) unix if [info exists tcl_platform(platform)] { if {$tcl_platform(platform) == "windows"} { set tixPriv(test:platform) windows } } if [info exists env(TEST_PLATFORM)] { set tixPriv(test:platform) $env(TEST_PLATFORM) } global testConfig if {![info exists tix]} { puts "TIX INITIALIZATION ERROR: tix not found" exit -1 } set testConfig(dynlib) "" # The following global arrays are used by these tests: # # testConfig # dynlib, VERBOSE, errCount # tix: # tixPriv: # test:platform # testapp # X, Y # --------------------------------------------------------- Driver:Test # proc Driver:Test {name f} { global errorInfo testConfig # destroy all child windows other than '.__top' foreach w [winfo children .] { if [string comp .__top $w] { destroy $w } } if {$testConfig(VERBOSE) >= 20} { puts ----------------------------------------------------------- puts "Loading script $name" } else { puts $name } update uplevel #0 source $f Event-Initialize catch { wm title . [About] if {$testConfig(VERBOSE) >= 20} { puts " [About]" puts "--------------------- starting ----------------------" } } set code [catch {Test} error] if $code { if {$code == 1234} { puts -nonewline "Test $f is aborted" } else { puts -nonewline "Test $f is aborted unexpectedly" } if {[info exists errorInfo] && ![tixStrEq $errorInfo ""]} { puts " by the following error\n$errorInfo" } else { puts "." } } Done }; # Driver:Test # --------------------------------------------------- Driver:GetTargets # # fileList: name of the file that contains a list of test targets # type: "dir" or "script" # proc Driver:GetTargets {fileList type} { set fd [open $fileList {RDONLY}] set data {} while {![eof $fd]} { set line [string trim [gets $fd]] if [regexp ^# $line] { continue } append data $line\n } close $fd set files {} foreach item $data { set takeit 1 foreach cond [lrange $item 1 end] { set inverse 0 set cond [string trim $cond] if {[string index $cond 0] == "!"} { set cond [string range $cond 1 end] set inverse 1 } set true 1 case [lindex $cond 0] { c { set cmd [lindex $cond 1] if {[info command $cmd] != $cmd} { if ![auto_load $cmd] { set true 0 } } } i { if {[lsearch [image types] [lindex $cond 1]] == -1} { set true 0 } } v { set var [lindex $cond 1] if ![uplevel #0 info exists [list $var]] { set true 0 } } default { # must be an expression # if ![uplevel #0 expr [list $cond]] { set true 0 } } } if {$inverse} { set true [expr !$true] } if {!$true} { set takeit 0 break } } if {$takeit} { lappend files [lindex $item 0] } } return $files }; # Driver:GetTargets # --------------------------------------------------------- Driver:Main # proc Driver:Main {} { global argv env if [tixStrEq $argv "dont"] { return } set argvfiles $argv set env(WAITTIME) 200 set errCount 0 set PWD [pwd] if {$argvfiles == {}} { set argvfiles [Driver:GetTargets files dir] } foreach f $argvfiles { Driver:Execute $f cd $PWD } }; # Driver:Main # ------------------------------------------------------ Driver:Execute # proc Driver:Execute {f} { global testConfig if [file isdir $f] { raise . set dir $f if {$testConfig(VERBOSE) >= 20} { puts "Entering directory $dir ..." } cd $dir if [file exists pkginit.tcl] { # call the package initialization file, which is # something specific to the files in this directory # source pkginit.tcl } foreach f [Driver:GetTargets files script] { set _PWD [pwd] Driver:Test $dir/$f $f cd $_PWD } if {$testConfig(VERBOSE) >= 20} { puts "Leaving directory $dir ..." } } else { set dir [file dirname $f] if {$dir != {}} { if {$testConfig(VERBOSE) >= 20} { puts "Entering directory $dir ..." } cd $dir if [file exists pkginit.tcl] { # call the package initialization file, which is # something specific to the files in this directory # source pkginit.tcl } set f [file tail $f] } set _PWD [pwd] Driver:Test $f $f cd $_PWD if {$testConfig(VERBOSE) >= 20} { puts "Leaving directory $dir ..." } } }; # Driver:Execute if [tixStrEq [tix platform] "windows"] { # The following are a bunch of useful functions to make it more # convenient to run the tests on Windows inside the Tix console # window. # # do -- Execute a test. proc do {f} { set PWD [pwd] Driver:Execute $f cd $PWD puts "% " } # rnew -- Read in all the files in the Tix library path that have # been modified. # proc rnew {} { global lastModified filesPatterns foreach file [eval glob $filesPatterns] { set mtime [file mtime $file] if {$lastModified < $mtime} { set lastModified $mtime puts "sourcing $file" uplevel #0 source [list $file] } } } # pk -- pack widgets filled and expanded proc pk {args} { eval pack $args -expand yes -fill both } # Initialize 'lastModified' so that rnew loads only newly modified # files # set filesPatterns {../library/*.tcl Driver.tcl library/*.tcl} set lastModified 0 foreach file [eval glob $filesPatterns] { set mtime [file mtime $file] if {$lastModified < $mtime} { set lastModified $mtime } } proc ei {} { global errorInfo puts $errorInfo } } puts "tcl_version = $tcl_version, tcl_patchLevel = $tcl_patchLevel" puts "tcl_precision = $tcl_precision, tcl_library = $tcl_library" puts "tk_version = $tk_version, tk_patchLevel = $tk_patchLevel" puts "tix_version = $tix_version, tix_patchLevel = $tix_patchLevel" puts "tix_release = $tix_release" puts "tcl_platform = '[array get tcl_platform]'" uplevel #0 source library/TestLib.tcl uplevel #0 source library/CaseData.tcl wm title . "Test-driving Tix" Driver:Main puts "$testConfig(errCount) error(s) found" destroy . catch {update} exit 0 Tix8.4.3/tests/all.tcl0000644000122200012240000000475407577555140015040 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # all.tcl -- # # This file contains a top-level script to run all of the Tk # tests. Execute it by invoking "source all.tcl" when running tktest # in this directory. # # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # # Copied from Tk 8.3.2 with very minor change. # Original RCS Id: all.tcl,v 1.4 1999/04/21 21:53:29 rjohnson Exp # Tix RCS Id: $Id: all.tcl,v 1.6 2002/12/17 08:03:44 idiscovery Exp $ package require Tix if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } set ::tcltest::testSingleFile false puts stdout "Tix $tix_patchLevel tests running in interp: [info nameofexecutable]" puts stdout "Tests running in working dir: $::tcltest::workingDir" if {[llength $::tcltest::skip] > 0} { puts stdout "Skipping tests that match: $::tcltest::skip" } if {[llength $::tcltest::match] > 0} { puts stdout "Only running tests that match: $::tcltest::match" } puts stdout "tcl_library = $tcl_library" puts stdout "tk_library = $tk_library" puts stdout "tix_library = $tix_library" # Use command line specified glob pattern (specified by -file or -f) # if one exists. Otherwise use *.test. If given, the file pattern # should be specified relative to the dir containing this file. If no # files are found to match the pattern, print an error message and exit. set fileIndex [expr {[lsearch $argv "-file"] + 1}] set fIndex [expr {[lsearch $argv "-f"] + 1}] if {($fileIndex < 1) || ($fIndex > $fileIndex)} { set fileIndex $fIndex } if {$fileIndex > 0} { set globPattern [file join $::tcltest::testsDir [lindex $argv $fileIndex]] puts stdout "Sourcing files that match: $globPattern" } else { set globPattern [file join $::tcltest::testsDir *.test] } set fileList [glob -nocomplain $globPattern] if {[llength $fileList] < 1} { puts "Error: no files found matching $globPattern" exit } global auto_path lappend auto_path [file dir [info script]] set timeCmd {clock format [clock seconds]} puts stdout "Tests began at [eval $timeCmd]" # source each of the specified tests foreach file [lsort $fileList] { set tail [file tail $file] if {[string match l.*.test $tail]} { # This is an SCCS lockfile; ignore it continue } puts stdout $tail if {[catch {source $file} msg]} { puts stdout $msg } } # cleanup puts stdout "\nTests ended at [eval $timeCmd]" ::tcltest::cleanupTests 1 return Tix8.4.3/tests/auto_loaded.tcl0000644000122200012240000000111407564540061016523 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # auto_loaded.tcl -- # # This file is auto-loaded by various test code to test whether # the Tix code is compatible with Tcl autoloading. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: auto_loaded.tcl,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ proc tixTestClass_method:foo {w args} { upvar #0 $w data return returned_by_tixTestClass_method:foo } Tix8.4.3/tests/widgetTestClass1.tcl0000644000122200012240000000232207564540061017437 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # widgetTestClass1.test -- # # This class is used by several test files in this # directory. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: widgetTestClass1.tcl,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ set longword xx for {set i 0} {$i < 10} {incr i} { set longword $longword$longword } tixWidgetClassEx widgetTestClass1 { -classname WidgetTestClass1 -superclass tixFileEntry -flag { -$longword -x$longword } -configspec { {-$longword $longword $longword $longword} {-x$longword x$longword x$longword x$longword} } } proc widgetTestClass1:ConstructFramedWidget {w frame} { upvar #0 $w data set longword [widgetTestClass1_longword] tixChainMethod $w ConstructFramedWidget $frame set data(w:$longword) [button $w.$longword] } proc widgetTestClass1_longword {} [list return $longword] proc widgetTestClass1:config-x$longword {w value} { upvar #0 $w data set longword [widgetTestClass1_longword] set data(-x$longword) $value-x$longword } Tix8.4.3/tests/class.test0000644000122200012240000000257110162662266015555 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # class.test -- # # This file is a Tcl script to test out tixClass.c. # It is organized in the standard fashion for Tcl tests. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: class.test,v 1.4 2004/12/24 00:37:10 hobbs Exp $ package require Tix if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } if {![info exists widgetTestClass1]} { source [file join [pwd] [file dirname [info script]] widgetTestClass1.tcl] } test class-1.1 {Tix_InstanceCmd(): subwidget} { widgetTestClass1 .test set a [.test subwidget $longword] destroy .test list $a } [list .test.$longword] test class-2.1 {Tix_InstanceCmd(): subwidgets} { widgetTestClass1 .test set a [list [catch { .test subwidgets } msg] $msg] destroy .test set a } {1 {wrong # args: should be "tixPrimitive:subwidgets w type args"}} test class-2.2 {Tix_InstanceCmd(): subwidgets} { widgetTestClass1 .test set a [.test subwidgets -class Button] destroy .test expr {[lsearch $a .test.$longword] >= 0} } {1} # todo: subwidgets -group, -all - # cleanup ::tcltest::cleanupTests return Tix8.4.3/tests/tclIndex0000664000122200012240000000112307575562704015250 0ustar jeffhjeffh00000000000000# Tcl autoload index file, version 2.0 # Hand-generated for testing puurpose. # # Typically each line is a command that # sets an element in the auto_index array, where the # element name is the name of a command and the value is # a script that loads the command. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: tclIndex,v 1.3 2002/12/11 07:14:12 idiscovery Exp $ set auto_index(tixTestClass_method:foo) [list source [file join $dir auto_loaded.tcl]] Tix8.4.3/tests/cleanup/0000775000122200012240000000000010767576212015201 5ustar jeffhjeffh00000000000000Tix8.4.3/tests/cleanup/files0000664000122200012240000000001307110476702016207 0ustar jeffhjeffh00000000000000cleanup.tclTix8.4.3/tests/cleanup/cleanup.tcl0000644000122200012240000000153407564540061017327 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: cleanup.tcl,v 1.2 2002/11/13 21:12:17 idiscovery Exp $ # # cleanup.tcl -- # # This program tests whether whether there is any garbage left # after all the test files are executed. If so, either Tix has # resource leak or the test suite doesn't clean up properly. # # Copyright (c) 1996, Expert Interface Technologies # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc About {} { return "Testing resource leaks" } proc Test {} { global testConfig if {$testConfig(VERBOSE) >= 20} { foreach image [image names] { puts "Warning: \[resource leak\] image $image of type [image type $image]" foreach option [$image configure] { puts " $option" } } } } Tix8.4.3/tests/method.test0000644000122200012240000000222010162662301015705 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # method.test -- # # Tests code in tixMethod.c. It is organized in the standard # fashion for Tcl tests. # # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # $Id: method.test,v 1.4 2004/12/24 00:37:21 hobbs Exp $ package require Tix if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } tixClass tixTestClass_method { -superclass {} -classname TixTestClass_Method -method { cget configure foo bar } -flag { -x -y } -configspec { {-x 0} {-y 0} } } proc tixTestClass_method:Constructor {args} {} test method-1.1 {auto-load method} { catch { # Make sure this method needs to be auto-loaded again rename tixTestClass_method:foo {} } tixTestClass_method xx set a [list [catch {xx foo} msg] $msg] rename xx {} set a } {0 returned_by_tixTestClass_method:foo} # cleanup ::tcltest::cleanupTests return Tix8.4.3/tools/0000775000122200012240000000000010767576212013550 5ustar jeffhjeffh00000000000000Tix8.4.3/tools/man2html-fixindex.tcl0000644000122200012240000000544607232766333017617 0ustar jeffhjeffh00000000000000# man2html-fixindex.tcl # # Updates the index file generated by tix-man2html.tcl # in a format more suitable for Tix # # This program is dependent on the specific HTML format # generated by ./tix-man2html.tcl. # # $Id: man2html-fixindex.tcl,v 1.1 2001/01/22 08:18:35 ioilam Exp $ set root [lindex $argv 0] set file [file join $root contents.htm] set fd [open $file RDONLY] set data [read $fd] close $fd # # Remove the link about Tix Commands # regsub "
    $name\n append html
    \n append html {} set tab_height [expr ([llength $list] + $tab_width - 1) / $tab_width] for {set i 0} {$i < $tab_height} {incr i} { append html {} for {set j 0} {$j < $tab_width} {incr j} { set idx [expr ($j * $tab_height) + $i] append html } append html } append html
    if {$idx < [llength $list]} { set page [lindex $list $idx] append html "$page" } else { append html "" } append html
    append html
    \n append html \n return $html } # # Add Tix commands to the page with better categorization. # append tixdata {
    Introduction to the Tix Library
    } append tixdata [section {Tix Standard Widgets} TixCmd $std] append tixdata [section {Tix Mega Widgets} TixCmd $mega] append tixdata [section {Tix Image Types} TixCmd $img] append tixdata [section {Tix Core Commands} TixCmd $other] append tixdata [section {Tix User Programs} UserCmd $progs] regsub $data $tixdata data set fd [open $file {WRONLY TRUNC CREAT}] puts -nonewline $fd $data close $fd Tix8.4.3/tools/tcltrim0000664000122200012240000000060307110476705015142 0ustar jeffhjeffh00000000000000#!/usr/local/bin/tclsh foreach source $argv { set target [file rootname $source].tt set src [open $source RDONLY] set tgt [open $target {RDWR CREAT TRUNC}] while {[eof $src] == 0} { set line [string trim [gets $src]] if {$line == ""} { continue } if {[string index $line 0] == "#"} { continue } puts $tgt $line } close $src close $tgt } Tix8.4.3/tools/tix-man2html.tcl0000644000122200012240000014415507404570525016603 0ustar jeffhjeffh00000000000000set tix_version 8.2.0 package require Tcl 8.0 # $Id: tix-man2html.tcl,v 1.4 2001/12/09 05:06:29 idiscovery Exp $ # # Convert Ousterhout format man pages into highly crosslinked # hypertext. # # Along the way detect many unmatched font changes and other odd # things. # # Note well, this program is a hack rather than a piece of software # engineering. In that sense it's probably a good example of things # that a scripting language, like Tcl, can do well. It is offered as # an example of how someone might convert a specific set of man pages # into hypertext, not as a general solution to the problem. If you # try to use this, you'll be very much on your own. # # Copyright (c) 1995-1997 Roger E. Critchlow Jr # # The authors hereby grant permission to use, copy, modify, distribute, # and license this software and its documentation for any purpose, provided # that existing copyright notices are retained in all copies and that this # notice is included verbatim in any distributions. No written agreement, # license, or royalty fee is required for any of the authorized uses. # Modifications to this software may be copyrighted by their authors # and need not follow the licensing terms described here, provided that # the new terms are clearly indicated on the first page of each file where # they apply. # # IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY # FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES # ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY # DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE # IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE # NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR # MODIFICATIONS. # # Revisions: # May 15, 1995 - initial release # May 16, 1995 - added a back to home link to toplevel table of # contents. # May 18, 1995 - broke toplevel table of contents into separate # pages for each section, and broke long table of contents # into a one page for each man page. # Mar 10, 1996 - updated for tcl7.5b3/tk4.1b3 # Apr 14, 1996 - incorporated command line parsing from Tom Tromey, # -- thanks Tom. # - updated for tcl7.5/tk4.1 final release. # - converted to same copyright as the man pages. # Sep 14, 1996 - made various modifications for tcl7.6b1/tk4.2b1 # Oct 18, 1996 - added tcl7.6/tk4.2 to the list of distributions. # Oct 22, 1996 - major hacking on indentation code and elsewhere. # Mar 4, 1997 - # May 28, 1997 - added tcl8.0b1/tk8.0b1 to the list of distributions # - cleaned source for tclsh8.0 execution # - renamed output files for windoze installation # - added spaces to tables # Oct 24, 1997 - moved from 8.0b1 to 8.0 release # Jan 19, 2001 - added Tix support set Version "0.20" proc parse_command_line {} { global argv Version # These variables determine where the man pages come from and where # the converted pages go to. global tcltkdir tixdir tkdir tcldir webdir # Set defaults based on original code. set tcltkdir ../.. set tkdir {} set tcldir {} set webdir ../man/html # Directory names for Tcl, Tk and Tix, in priority order. set tclDirList {tcl8.3.3 tcl8.3.2 tcl8.2.3 tcl8.3 tcl8.2 tcl8.1 tcl8.0 tcl} set tkDirList {tk8.3.3 tk8.3.2 tk8.2.3 tk8.3 tk8.2 tk8.1 tk8.0 tk} set tixDirList {tix-8.2.0 tix} # Handle arguments a la GNU: # --version # --help # --srcdir=/path # --htmldir=/path foreach option $argv { switch -glob -- $option { --version { puts "tcltk-man-html $Version" exit 0 } --help { puts "usage: tcltk-man-html \[OPTION\] ...\n" puts " --help print this help, then exit" puts " --version print version number, then exit" puts " --srcdir=DIR find tcl and tk source below DIR" puts " --htmldir=DIR put generated HTML in DIR" exit 0 } --srcdir=* { # length of "--srcdir=" is 9. set tcltkdir [string range $option 9 end] } --htmldir=* { # length of "--htmldir=" is 10 set webdir [string range $option 10 end] } default { puts stderr "tcltk-man-html: unrecognized option -- `$option'" exit 1 } } } # Find Tcl. foreach dir $tclDirList { if {[file isdirectory $tcltkdir/$dir]} then { set tcldir $dir break } } if {$tcldir == ""} then { puts stderr "tcltk-man-html: couldn't find Tcl below $tcltkdir" exit 1 } # Find Tk. foreach dir $tkDirList { if {[file isdirectory $tcltkdir/$dir]} then { set tkdir $dir break } } if {$tkdir == ""} then { puts stderr "tcltk-man-html: couldn't find Tk below $tcltkdir" exit 1 } # Find Tix. foreach dir $tixDirList { if {[file isdirectory $tcltkdir/$dir]} then { set tixdir $dir break } } if {$tixdir == ""} then { puts stderr "tcltk-man-html: couldn't find Tix below $tcltkdir" exit 1 } # the title for the man pages overall global overall_title env tix_version if {[info exists env(WITH_TCL_TK)]} { set overall_title "[capitalize tix$tix_version]/[capitalize $tcldir]/[capitalize $tkdir] Reference Manual" } else { set overall_title "[capitalize tix$tix_version] Reference Manual" } } proc capitalize {string} { return [string toupper $string 0] } ## ## ## set manual(report-level) 1 proc manerror {msg} { global manual set name {} set subj {} if {[info exists manual(name)]} { set name $manual(name) } if {[info exists manual(section)] && [string length $manual(section)]} { puts stderr "$name: $manual(section): $msg" } else { puts stderr "$name: $msg" } } proc manreport {level msg} { global manual if {$level < $manual(report-level)} { manerror $msg } } proc fatal {msg} { global manual manerror $msg exit 1 } ## ## parsing ## proc unquote arg { return [string map [list \" {}] $arg] } proc parse-directive {line codename restname} { upvar $codename code $restname rest return [regexp {^(\.[.a-zA-Z0-9]*) *(.*)} $line all code rest] } proc process-text {text} { global manual # preprocess text set text [string map [list \ {\&} "\t" \ {&} {&} \ {\\} {\} \ {\e} {\} \ {\ } { } \ {\|} { } \ {\0} { } \ {\%} {} \ "\\\n" "\n" \ \" {"} \ {<} {<} \ {>} {>} \ {\(+-} {±} \ {\fP} {\fR} \ {\.} . \ ] $text] regsub -all {\\o'o\^'} $text {\ô} text; # o-circumflex in re_syntax.n regsub -all {\\-\\\|\\-} $text -- text; # two hyphens regsub -all -- {\\-\\\^\\-} $text -- text; # two hyphens regsub -all {\\-} $text - text; # a hyphen regsub -all "\\\\\n" $text "\\&\#92;\n" text; # backslashed newline while {[regexp {\\} $text]} { # C R if {[regsub {^([^\\]*)\\fC([^\\]*)\\fR(.*)$} $text {\1\2\3} text]} continue # B R if {[regsub {^([^\\]*)\\fB([^\\]*)\\fR(.*)$} $text {\1\2\3} text]} continue # B I if {[regsub {^([^\\]*)\\fB([^\\]*)\\fI(.*)$} $text {\1\2\\fI\3} text]} continue # I R if {[regsub {^([^\\]*)\\fI([^\\]*)\\fR(.*)$} $text {\1\2\3} text]} continue # I B if {[regsub {^([^\\]*)\\fI([^\\]*)\\fB(.*)$} $text {\1\2\\fB\3} text]} continue # B B, I I, R R if {[regsub {^([^\\]*)\\fB([^\\]*)\\fB(.*)$} $text {\1\\fB\2\3} ntext] || [regsub {^([^\\]*)\\fI([^\\]*)\\fI(.*)$} $text {\1\\fI\2\3} ntext] || [regsub {^([^\\]*)\\fR([^\\]*)\\fR(.*)$} $text {\1\\fR\2\3} ntext]} { manerror "process-text: impotent font change: $text" set text $ntext continue } # unrecognized manerror "process-text: uncaught backslash: $text" set text [string map [list "\\" "#92;"] $text] } return $text } ## ## pass 2 text input and matching ## proc open-text {} { global manual set manual(text-length) [llength $manual(text)] set manual(text-pointer) 0 } proc more-text {} { global manual return [expr {$manual(text-pointer) < $manual(text-length)}] } proc next-text {} { global manual if {[more-text]} { set text [lindex $manual(text) $manual(text-pointer)] incr manual(text-pointer) return $text } manerror "read past end of text" error "fatal" } proc is-a-directive {line} { return [expr {[string first . $line] == 0}] } proc split-directive {line opname restname} { upvar $opname op $restname rest set op [string range $line 0 2] set rest [string trim [string range $line 3 end]] } proc next-op-is {op restname} { global manual upvar $restname rest if {[more-text]} { set text [lindex $manual(text) $manual(text-pointer)] if {[string equal -length 3 $text $op]} { set rest [string range $text 4 end] incr manual(text-pointer) return 1 } } return 0 } proc backup-text {n} { global manual if {$manual(text-pointer)-$n >= 0} { incr manual(text-pointer) -$n } } proc match-text args { global manual set nargs [llength $args] if {$manual(text-pointer) + $nargs > $manual(text-length)} { return 0 } set nback 0 foreach arg $args { if {![more-text]} { backup-text $nback return 0 } set arg [string trim $arg] set targ [string trim [lindex $manual(text) $manual(text-pointer)]] if {[string equal $arg $targ]} { incr nback incr manual(text-pointer) continue } if {[regexp {^@([_a-zA-Z0-9]+)$} $arg all name]} { upvar $name var set var $targ incr nback incr manual(text-pointer) continue } if {[regexp {^(\.[a-zA-Z][a-zA-Z])@([_a-zA-Z0-9]+)$} $arg all op name]\ && [string equal $op [lindex $targ 0]]} { upvar $name var set var [lrange $targ 1 end] incr nback incr manual(text-pointer) continue } backup-text $nback return 0 } return 1 } proc expand-next-text {n} { global manual return [join [lrange $manual(text) $manual(text-pointer) \ [expr {$manual(text-pointer)+$n-1}]] \n\n] } ## ## pass 2 output ## proc man-puts {text} { global manual lappend manual(output-$manual(wing-file)-$manual(name)) $text } ## ## build hypertext links to tables of contents ## proc long-toc {text} { global manual set here M[incr manual(section-toc-n)] set there L[incr manual(long-toc-n)] lappend manual(section-toc) "
    $text" return "$text" } proc option-toc {name class switch} { global manual if {[string equal $manual(section) "WIDGET-SPECIFIC OPTIONS"] || [string equal $manual(section) "CONFIGURATION OPTIONS"] || [regexp ITEMS $manual(section)]} { # link the defined option into the long table of contents set link [long-toc "$switch, $name, $class"] regsub -- "$switch, $name, $class" $link "$switch" link return $link } elseif {[string equal $manual(name):$manual(section) \ "options:DESCRIPTION"]} { # link the defined standard option to the long table of # contents and make a target for the standard option references # from other man pages. set first [lindex $switch 0] set here M$first set there L[incr manual(long-toc-n)] set manual(standard-option-$first) "$switch, $name, $class" lappend manual(section-toc) "
    $switch, $name, $class" return "$switch" } else { error "option-toc in $manual(name) section $manual(section)" } } proc std-option-toc {name} { global manual if {[info exists manual(standard-option-$name)]} { lappend manual(section-toc)
    $manual(standard-option-$name) return $manual(standard-option-$name) } set here M[incr manual(section-toc-n)] set there L[incr manual(long-toc-n)] set other M$name lappend manual(section-toc) "
    $name" return "$name" } ## ## process the widget option section ## in widget and options man pages ## proc output-widget-options {rest} { global manual man-puts
    lappend manual(section-toc)
    backup-text 1 set para {} while {[next-op-is .OP rest]} { switch -exact [llength $rest] { 3 { set switch [lindex $rest 0] set name [lindex $rest 1] set class [lindex $rest 2] } 5 { set switch [lrange $rest 0 2] set name [lindex $rest 3] set class [lindex $rest 4] } default { fatal "bad .OP $rest" } } if {![regexp {^(<.>)([-a-zA-Z0-9 ]+)()$} $switch all oswitch switch cswitch]} { if {![regexp {^(<.>)([-a-zA-Z0-9 ]+) or ([-a-zA-Z0-9 ]+)()$} $switch all oswitch switch1 switch2 cswitch]} { error "not Switch: $switch" } else { set switch "$switch1$cswitch or $oswitch$switch2" } } if {![regexp {^(<.>)([a-zA-Z0-9]*)()$} $name all oname name cname]} { error "not Name: $name" } if {![regexp {^(<.>)([a-zA-Z0-9]*)()$} $class all oclass class cclass]} { error "not Class: $class" } man-puts "$para
    Command-Line Name: $oswitch[option-toc $name $class $switch]$cswitch" man-puts "
    Database Name: $oname$name$cname" man-puts "
    Database Class: $oclass$class$cclass" man-puts
    [next-text] set para

    } man-puts

    lappend manual(section-toc)
    } ## ## process .RS lists ## proc output-RS-list {} { global manual if {[next-op-is .IP rest]} { output-IP-list .RS .IP $rest if {[match-text .RE .sp .RS @rest .IP @rest2]} { man-puts

    $rest output-IP-list .RS .IP $rest2 } if {[match-text .RE .sp .RS @rest .RE]} { man-puts

    $rest return } if {[next-op-is .RE rest]} { return } } man-puts

    while {[more-text]} { set line [next-text] if {[is-a-directive $line]} { split-directive $line code rest switch -exact $code { .RE { break } .SH { manerror "unbalanced .RS at section end" backup-text 1 break } default { output-directive $line } } } else { man-puts $line } } man-puts
    } ## ## process .IP lists which may be plain indents, ## numeric lists, or definition lists ## proc output-IP-list {context code rest} { global manual if {[string equal $rest {}]} { # blank label, plain indent, no contents entry man-puts

    while {[more-text]} { set line [next-text] if {[is-a-directive $line]} { split-directive $line code rest if {[string equal $code ".IP"] && [string equal $rest {}]} { man-puts "

    " continue } if {[lsearch {.br .DS .RS} $code] >= 0} { output-directive $line } else { backup-text 1 break } } else { man-puts $line } } man-puts

    } else { # labelled list, make contents if {[string compare $context ".SH"]} { man-puts

    } man-puts

    lappend manual(section-toc)
    backup-text 1 set accept_RE 0 while {[more-text]} { set line [next-text] if {[is-a-directive $line]} { split-directive $line code rest switch -exact $code { .IP { if {$accept_RE} { output-IP-list .IP $code $rest continue } if {[string equal $manual(section) "ARGUMENTS"] || \ [regexp {^\[[0-9]+\]$} $rest]} { man-puts "

    $rest
    " } else { set canlink 0 if {[regexp {([A-Za-z0-9_]+)} $rest \ foo ref]} { if {"$foo" == "$rest"} { set canlink 1 } } set outtext "

    [long-toc $rest]
    " if {$canlink} { regsub ">$rest" $outtext \ ">[cross-reference $ref]" \ outtext } man-puts $outtext } if {[string equal $manual(name):$manual(section) \ "selection:DESCRIPTION"]} { if {[match-text .RE @rest .RS .RS]} { man-puts
    [long-toc $rest]
    } } } .sp - .br - .DS - .CS { output-directive $line } .RS { if {[match-text .RS]} { output-directive $line incr accept_RE 1 } elseif {[match-text .CS]} { output-directive .CS incr accept_RE 1 } elseif {[match-text .PP]} { output-directive .PP incr accept_RE 1 } elseif {[match-text .DS]} { output-directive .DS incr accept_RE 1 } else { output-directive $line } } .LP { man-puts "

    $rest" } .PP { if {[match-text @rest1 .br @rest2 .RS]} { # yet another nroff kludge as above man-puts "

    [long-toc $rest1]" man-puts "
    [long-toc $rest2]
    " incr accept_RE 1 } elseif {[match-text @rest .RE]} { # gad, this is getting ridiculous if { ! $accept_RE} { man-puts "

    $rest

    " backup-text 1 break } else { man-puts "

    $rest" incr accept_RE -1 } } elseif {$accept_RE} { output-directive $line } else { backup-text 1 break } } .RE { if { ! $accept_RE} { backup-text 1 break } incr accept_RE -1 } default { backup-text 1 break } } } else { man-puts $line } } man-puts

    lappend manual(section-toc)
    if {$accept_RE} { manerror "missing .RE in output-IP-list" } } } ## ## handle the NAME section lines ## there's only one line in the NAME section, ## consisting of a comma separated list of names, ## followed by a hyphen and a short description. ## proc output-name {line} { global manual # split name line into pieces regexp {^([^-]+) - (.*)$} $line all head tail # output line to manual page untouched man-puts $line # output line to long table of contents lappend manual(section-toc)
    $line
    # separate out the names for future reference foreach name [split $head ,] { set name [string trim $name] if {[llength $name] > 1} { manerror "name has a space: {$name}\nfrom: $line" } lappend manual(wing-toc) $name lappend manual(name-$name) $manual(wing-file)/$manual(name) } } ## ## build a cross-reference link if appropriate ## proc cross-reference {ref} { global manual regsub {[(][31n][)]} $ref "" ref if {[string match Tcl_* $ref]} { set lref $ref } elseif {[string match Tk_* $ref]} { set lref $ref } elseif {[string equal $ref "Tcl"]} { set lref $ref } elseif {[regexp -nocase tix $ref]} { set lref $ref } else { set lref [string tolower $ref] } ## ## nothing to reference ## if { ! [info exists manual(name-$lref)]} { foreach name {array file history info interp string trace after clipboard grab image option pack place selection tk tkwait update winfo wm} { if {[regexp "^$name \[a-z0-9]*\$" $lref] && \ [string compare $manual(tail) "$name.n"] && \ [info exists manual(name-$name)]} { return "$ref" } } if {[lsearch {stdin stdout stderr end} $lref] >= 0} { # no good place to send these # tcl tokens? # also end } return $ref } ## ## would be a self reference ## foreach name $manual(name-$lref) { if {[lsearch $name $manual(wing-file)/$manual(name)] >= 0} { return $ref } } ## ## multiple choices for reference ## if {[llength $manual(name-$lref)] > 1} { set tcl_i [lsearch -glob $manual(name-$lref) *TclCmd*] set tcl_ref [lindex $manual(name-$lref) $tcl_i] set tk_i [lsearch -glob $manual(name-$lref) *TkCmd*] set tk_ref [lindex $manual(name-$lref) $tk_i] if {$tcl_i >= 0 && "$manual(wing-file)" == {TclCmd} || "$manual(wing-file)" == {TclLib}} { return "$ref" } if {$tk_i >= 0 && "$manual(wing-file)" == {TkCmd} || "$manual(wing-file)" == {TkLib}} { return "$ref" } if {"$lref" == {exit} && "$manual(tail)" == {tclsh.1} && $tcl_i >= 0} { return "$ref" } puts stderr "multiple cross reference to $ref in $manual(name-$lref) from $manual(wing-file)/$manual(tail)" return $ref } ## ## exceptions, sigh, to the rule ## switch $manual(tail) { canvas.n { if {$lref == {focus}} { upvar tail tail set clue [string first command $tail] if {$clue < 0 || $clue > 5} { return $ref } } if {[lsearch {bitmap image text} $lref] >= 0} { return $ref } } checkbutton.n - radiobutton.n { if {[lsearch {image} $lref] >= 0} { return $ref } } menu.n { if {[lsearch {checkbutton radiobutton} $lref] >= 0} { return $ref } } options.n { if {[lsearch {bitmap image set} $lref] >= 0} { return $ref } } regexp.n { if {[lsearch {string} $lref] >= 0} { return $ref } } source.n { if {[lsearch {text} $lref] >= 0} { return $ref } } history.n { if {[lsearch {exec} $lref] >= 0} { return $ref } } return.n { if {[lsearch {error continue break} $lref] >= 0} { return $ref } } scrollbar.n { if {[lsearch {set} $lref] >= 0} { return $ref } } } ## ## return the cross reference ## return "$ref" } ## ## reference generation errors ## proc reference-error {msg text} { global manual puts stderr "$manual(tail): $msg: {$text}" return $text } ## ## insert as many cross references into this text string as are appropriate ## proc insert-cross-references {text} { global manual ## ## we identify cross references by: ## ``quotation'' ## emboldening ## Tcl_ prefix ## Tk_ prefix ## [a-zA-Z0-9]+ manual entry ## and we avoid messing with already anchored text ## ## ## find where each item lives ## array set offset [list \ anchor [string first {} $text] \ quote [string first {``} $text] \ end-quote [string first {''} $text] \ bold [string first {} $text] \ end-bold [string first {} $text] \ tcl [string first {Tcl_} $text] \ tk [string first {Tk_} $text] \ Tcl1 [string first {Tcl manual entry} $text] \ Tcl2 [string first {Tcl overview manual entry} $text] \ ] ## ## accumulate a list ## foreach name [array names offset] { if {$offset($name) >= 0} { set invert($offset($name)) $name lappend offsets $offset($name) } } ## ## if nothing, then we're done. ## if { ! [info exists offsets]} { return $text } ## ## sort the offsets ## set offsets [lsort -integer $offsets] ## ## see which we want to use ## switch -exact $invert([lindex $offsets 0]) { anchor { if {$offset(end-anchor) < 0} { return [reference-error {Missing end anchor} $text]; } set head [string range $text 0 $offset(end-anchor)] set tail [string range $text [expr $offset(end-anchor)+1] end] return $head[insert-cross-references $tail] } quote { if {$offset(end-quote) < 0} { return [reference-error {Missing end quote} $text]; } if {"$invert([lindex $offsets 1])" == {tk}} { set offsets [lreplace $offsets 1 1]; } if {"$invert([lindex $offsets 1])" == {tcl}} { set offsets [lreplace $offsets 1 1]; } switch -exact $invert([lindex $offsets 1]) { end-quote { set head [string range $text 0 [expr $offset(quote)-1]] set body [string range $text [expr $offset(quote)+2] [expr $offset(end-quote)-1]] set tail [string range $text [expr $offset(end-quote)+2] end] return $head``[cross-reference $body]''[insert-cross-references $tail] } bold - anchor { set head [string range $text 0 [expr $offset(end-quote)+1]] set tail [string range $text [expr $offset(end-quote)+2] end] return $head[insert-cross-references $tail] } } return [reference-error {Uncaught quote case} $text] } bold { if {$offset(end-bold) < 0} { return $text; } if {"$invert([lindex $offsets 1])" == {tk}} { set offsets [lreplace $offsets 1 1]; } if {"$invert([lindex $offsets 1])" == {tcl}} { set offsets [lreplace $offsets 1 1]; } switch -exact $invert([lindex $offsets 1]) { end-bold { set head [string range $text 0 [expr $offset(bold)-1]] set body [string range $text [expr $offset(bold)+3] [expr $offset(end-bold)-1]] set tail [string range $text [expr $offset(end-bold)+4] end] return $head[cross-reference $body][insert-cross-references $tail] } anchor { set head [string range $text 0 [expr $offset(end-bold)+3]] set tail [string range $text [expr $offset(end-bold)+4] end] return $head[insert-cross-references $tail] } } return [reference-error {Uncaught bold case} $text] } tk { set head [string range $text 0 [expr $offset(tk)-1]] set tail [string range $text $offset(tk) end] if { ! [regexp {^(Tk_[a-zA-Z0-9_]+)(.*)$} $tail all body tail]} { return [reference-error {Tk regexp failed} $text]; } return $head[cross-reference $body][insert-cross-references $tail] } tcl { set head [string range $text 0 [expr $offset(tcl)-1]] set tail [string range $text $offset(tcl) end] if { ! [regexp {^(Tcl_[a-zA-Z0-9_]+)(.*)$} $tail all body tail]} { return [reference-error {Tcl regexp failed} $text]; } return $head[cross-reference $body][insert-cross-references $tail] } Tcl1 - Tcl2 { set off [lindex $offsets 0] set head [string range $text 0 [expr $off-1]] set body Tcl set tail [string range $text [expr $off+3] end] return $head[cross-reference $body][insert-cross-references $tail] } end-anchor - end-bold - end-quote { return [reference-error "Out of place $invert([lindex $offsets 0])" $text] } } } ## ## process formatting directives ## proc output-directive {line} { global manual # process format directive split-directive $line code rest switch -exact $code { .BS - .BE { # man-puts
    } .SH { # drain any open lists # announce the subject set manual(section) $rest # start our own stack of stuff set manual($manual(name)-$manual(section)) {} lappend manual(has-$manual(section)) $manual(name) man-puts "

    [long-toc $manual(section)]

    " # some sections can simply free wheel their way through the text # some sections can be processed in their own loops switch -exact $manual(section) { NAME { if {[lsearch {CrtImgType.3 CrtItemType.3 CrtPhImgFmt.3} $manual(tail)] >= 0} { # these manual pages have two NAME sections if {[info exists manual($manual(tail)-NAME)]} { return } set manual($manual(tail)-NAME) 1 } set names {} while {1} { set line [next-text] if {[is-a-directive $line]} { backup-text 1 output-name [join $names { }] return } else { lappend names [string trim $line] } } } SYNOPSIS { lappend manual(section-toc)
    while {1} { if {[next-op-is .nf rest] || [next-op-is .br rest] || [next-op-is .fi rest]} { continue } if {[next-op-is .SH rest] || [next-op-is .BE rest] || [next-op-is .SO rest]} { backup-text 1 break } if {[next-op-is .sp rest]} { #man-puts

    continue } set more [next-text] if {[is-a-directive $more]} { manerror "in SYNOPSIS found $more" backup-text 1 break } else { foreach more [split $more \n] { man-puts $more
    if {[lsearch {TclLib TkLib} $manual(wing-file)] < 0} { lappend manual(section-toc)

    $more } } } } lappend manual(section-toc)
    return } {SEE ALSO} { while {[more-text]} { if {[next-op-is .SH rest]} { backup-text 1 return } set more [next-text] if {[is-a-directive $more]} { manerror "$more" backup-text 1 return } set nmore {} foreach cr [split $more ,] { set cr [string trim $cr] if { ! [regexp {^.*$} $cr]} { set cr $cr } if {[regexp {^(.*)\([13n]\)$} $cr all name]} { set cr $name } lappend nmore $cr } man-puts [join $nmore {, }] } return } KEYWORDS { while {[more-text]} { if {[next-op-is .SH rest]} { backup-text 1 return } set more [next-text] if {[is-a-directive $more]} { manerror "$more" backup-text 1 return } set keys {} foreach key [split $more ,] { set key [string trim $key] lappend manual(keyword-$key) [list $manual(name) $manual(wing-file)/$manual(name).htm] set initial [string toupper [string index $key 0]] lappend keys "
    $key" } man-puts [join $keys {, }] } return } } if {[next-op-is .IP rest]} { output-IP-list .SH .IP $rest return } if {[next-op-is .PP rest]} { return } return } .SO { if {[match-text @stuff .SE]} { output-directive {.SH STANDARD OPTIONS} set opts {} foreach line [split $stuff \n] { foreach option [split $line \t] { lappend opts $option } } man-puts
    lappend manual(section-toc)
    foreach option [lsort $opts] { man-puts "
    [std-option-toc $option]" } man-puts
    lappend manual(section-toc)
    } else { manerror "unexpected .SO format:\n[expand-next-text 2]" } } .OP { output-widget-options $rest return } .IP { output-IP-list .IP .IP $rest return } .PP { man-puts

    } .RS { output-RS-list return } .RE { manerror "unexpected .RE" return } .br { man-puts
    return } .DE { manerror "unexpected .DE" return } .DS { if {[next-op-is .ta rest]} { } if {[match-text @stuff .DE]} { man-puts

    $stuff
    } elseif {[match-text .fi @ul1 @ul2 .nf @stuff .DE]} { man-puts "
    [lindex $ul1 1][lindex $ul2 1]\n$stuff
    " } else { manerror "unexpected .DS format:\n[expand-next-text 2]" } return } .CS { if {[next-op-is .ta rest]} { } if {[match-text @stuff .CE]} { man-puts
    $stuff
    } else { manerror "unexpected .CS format:\n[expand-next-text 2]" } return } .CE { manerror "unexpected .CE" return } .sp { man-puts

    } .ta { # these are tab stop settings for short tables switch -exact $manual(name):$manual(section) { {bind:MODIFIERS} - {bind:EVENT TYPES} - {bind:BINDING SCRIPTS AND SUBSTITUTIONS} - {expr:OPERANDS} - {expr:MATH FUNCTIONS} - {history:DESCRIPTION} - {history:HISTORY REVISION} - {switch:DESCRIPTION} - {upvar:DESCRIPTION} { return; # fix.me } default { manerror "ignoring $line" } } } .nf { if {[match-text @more .fi]} { foreach more [split $more \n] { man-puts $more
    } } elseif {[match-text .RS @more .RE .fi]} { man-puts

    foreach more [split $more \n] { man-puts $more
    } man-puts
    } elseif {[match-text .RS @more .RS @more2 .RE .RE .fi]} { man-puts
    foreach more [split $more \n] { man-puts $more
    } man-puts
    foreach more2 [split $more2 \n] { man-puts $more2
    } man-puts
    } elseif {[match-text .RS @more .RS @more2 .RE @more3 .RE .fi]} { man-puts
    foreach more [split $more \n] { man-puts $more
    } man-puts
    foreach more2 [split $more2 \n] { man-puts $more2
    } man-puts
    foreach more3 [split $more3 \n] { man-puts $more3
    } man-puts
    } elseif {[match-text .sp .RS @more .RS @more2 .sp .RE .RE .fi]} { man-puts

    foreach more [split $more \n] { man-puts $more
    } man-puts
    foreach more2 [split $more2 \n] { man-puts $more2
    } man-puts

    } elseif {[match-text .RS .sp @more .sp .RE .fi]} { man-puts

    foreach more [split $more \n] { man-puts $more
    } man-puts

    } else { manerror "ignoring $line" } } .fi { manerror "ignoring $line" } .na - .ad - .UL - .ne { manerror "ignoring $line" } default { manerror "unrecognized format directive: $line" } } } ## ## merge copyright listings ## proc merge-copyrights {l1 l2} { foreach copyright [concat $l1 $l2] { if {[regexp {^Copyright +\(c\) +([0-9]+) +(by +)?([A-Za-z].*)$} $copyright all date by who]} { lappend dates($who) $date continue } if {[regexp {^Copyright +\(c\) +([0-9]+)-([0-9]+) +(by +)?([A-Za-z].*)$} $copyright all from to by who]} { for {set date $from} {$date <= $to} {incr date} { lappend dates($who) $date } continue } if {[regexp {^Copyright +\(c\) +([0-9]+), *([0-9]+) +(by +)?([A-Za-z].*)$} $copyright all date1 date2 by who]} { lappend dates($who) $date1 $date2 continue } puts "oops: $copyright" } foreach who [array names dates] { set list [lsort $dates($who)] if {[llength $list] == 1 || [lindex $list 0] == [lrange $list end end]} { lappend merge "Copyright (c) [lindex $list 0] $who" } else { lappend merge "Copyright (c) [lindex $list 0]-[lrange $list end end] $who" } } return [lsort $merge] } proc makedirhier {dir} { if { ! [file isdirectory $dir]} { makedirhier [file dirname $dir] if { ! [file isdirectory $dir]} { if {[catch {exec mkdir $dir} error]} { error "cannot create directory $dir: $error" } } } } ## ## foreach of the man directories specified by args ## convert manpages into hypertext in the directory ## specified by html. ## proc make-man-pages {html args} { global env manual overall_title makedirhier $html if { ! [file isdirectory $html]} { exec mkdir $html } set manual(short-toc-n) 1 set manual(short-toc-fp) [open $html/contents.htm w] puts $manual(short-toc-fp) "$overall_title" puts $manual(short-toc-fp) { } puts $manual(short-toc-fp) "


    $overall_title


    " set manual(merge-copyrights) {} foreach arg $args { set manual(wing-glob) [lindex $arg 0] set manual(wing-name) [lindex $arg 1] set manual(wing-file) [lindex $arg 2] set manual(wing-description) [lindex $arg 3] set manual(wing-copyrights) {} makedirhier $html/$manual(wing-file) set manual(wing-toc-fp) [open $html/$manual(wing-file)/contents.htm w] # whistle puts stderr "scanning section $manual(wing-name)" # put the entry for this section into the short table of contents puts $manual(short-toc-fp) "
    $manual(wing-name)
    $manual(wing-description)" # initialize the wing table of contents puts $manual(wing-toc-fp) "$manual(wing-name) Manual" puts $manual(wing-toc-fp) { } puts $manual(wing-toc-fp) "

    $manual(wing-name)


    " # initialize the short table of contents for this section set manual(wing-toc) {} # initialize the man directory for this section makedirhier $html/$manual(wing-file) # initialize the long table of contents for this section set manual(long-toc-n) 1 # get the manual pages for this section set manual(pages) [lsort [glob $manual(wing-glob)]] if {[lsearch -glob $manual(pages) */options.n] >= 0} { set n [lsearch $manual(pages) */options.n] set manual(pages) "[lindex $manual(pages) $n] [lreplace $manual(pages) $n $n]" } # set manual(pages) [lrange $manual(pages) 0 5] foreach manual(page) $manual(pages) { # whistle puts stderr "scanning page $manual(page)" set manual(tail) [file tail $manual(page)] set manual(name) [file root $manual(tail)] set manual(section) {} if {[lsearch {case pack-old menubar} $manual(name)] >= 0} { # obsolete manerror "discarding $manual(name)" continue } set manual(infp) [open "$manual(page)"] set manual(text) {} set manual(partial-text) {} foreach p {.RS .DS .CS .SO} { set manual($p) 0 } set manual(stack) {} set manual(section) {} set manual(section-toc) {} set manual(section-toc-n) 1 set manual(copyrights) {} lappend manual(all-pages) $manual(wing-file)/$manual(tail) manreport 100 "$manual(name)" while {[gets $manual(infp) line] >= 0} { manreport 100 $line if {[regexp {^[`'][/\\]} $line]} { if {[regexp {Copyright \(c\).*$} $line copyright]} { lappend manual(copyrights) $copyright } # comment continue } if {"$line" == {'}} { # comment continue } if {[parse-directive $line code rest]} { switch -exact $code { .ad - .na - .so - .ne - .AS - .VE - .VS - . { # ignore continue } } if {"$manual(partial-text)" != {}} { lappend manual(text) [process-text $manual(partial-text)] set manual(partial-text) {} } switch -exact $code { .SH { if {[llength $rest] == 0} { gets $manual(infp) rest } lappend manual(text) ".SH [unquote $rest]" } .TH { lappend manual(text) "$code [unquote $rest]" } .HS - .UL - .ta { lappend manual(text) "$code [unquote $rest]" } .BS - .BE - .br - .fi - .sp - .nf { if {"$rest" != {}} { manerror "unexpected argument: $line" } lappend manual(text) $code } .AP { lappend manual(text) [concat .IP [process-text "[lindex $rest 0] \\fB[lindex $rest 1]\\fR ([lindex $rest 2])"]] } .IP { regexp {^(.*) +[0-9]+$} $rest all rest lappend manual(text) ".IP [process-text [unquote [string trim $rest]]]" } .TP { set next [gets $manual(infp)] if {"$next" != {'}} { lappend manual(text) ".IP [process-text $next]" } } .OP { lappend manual(text) [concat .OP [process-text \ "\\fB[lindex $rest 0]\\fR \\fB[lindex $rest 1]\\fR \\fB[lindex $rest 2]\\fR"]] } .PP { lappend manual(text) {.PP} } .LP { lappend manual(text) {.LP} } .RS { incr manual(.RS) lappend manual(text) $code } .RE { incr manual(.RS) -1 lappend manual(text) $code } .SO { incr manual(.SO) lappend manual(text) $code } .SE { incr manual(.SO) -1 lappend manual(text) $code } .DS { incr manual(.DS) lappend manual(text) $code } .DE { incr manual(.DS) -1 lappend manual(text) $code } .CS { incr manual(.CS) lappend manual(text) $code } .CE { incr manual(.CS) -1 lappend manual(text) $code } .de { while {[gets $manual(infp) line] >= 0} { if {[regexp {^\.\.} $line]} { break } } } .. { error "found .. outside of .de" } default { manerror "unrecognized format directive: $line" } } } else { if {"$manual(partial-text)" == {}} { set manual(partial-text) $line } else { append manual(partial-text) \n$line } } } if {"$manual(partial-text)" != {}} { lappend manual(text) [process-text $manual(partial-text)] } close $manual(infp) # fixups if {$manual(.RS) != 0} { if {"$manual(name)" != {selection}} { puts "unbalanced .RS .RE" } } if {$manual(.DS) != 0} { puts "unbalanced .DS .DE" } if {$manual(.CS) != 0} { puts "unbalanced .CS .CE" } if {$manual(.SO) != 0} { puts "unbalanced .SO .SE" } # output conversion open-text if {[next-op-is .HS rest]} { set manual($manual(name)-title) "[lrange $rest 1 end] [lindex $rest 0] manual page" while {[more-text]} { set line [next-text] if {[is-a-directive $line]} { output-directive $line } else { man-puts $line } } man-puts
    		foreach copyright $manual(copyrights) {
    		    man-puts "Copyright © [lrange $copyright 2 end]"
    		}
    		man-puts "Copyright © 1995-1997 Roger E. Critchlow Jr.
    " set manual(wing-copyrights) [merge-copyrights $manual(wing-copyrights) $manual(copyrights)] } elseif {[next-op-is .TH rest]} { set manual($manual(name)-title) "[lrange $rest 4 end] - [lindex $rest 0] manual page" while {[more-text]} { set line [next-text] if {[is-a-directive $line]} { output-directive $line } else { man-puts $line } } man-puts
    		foreach copyright $manual(copyrights) {
    		    man-puts "Copyright © [lrange $copyright 2 end]"
    		}
    		man-puts "Copyright © 1995-1997 Roger E. Critchlow Jr.
    " set manual(wing-copyrights) [merge-copyrights $manual(wing-copyrights) $manual(copyrights)] } else { manerror "no .HS or .TH record found" } # # make the long table of contents for this page # set manual(toc-$manual(wing-file)-$manual(name)) [concat
    $manual(section-toc)

    ] } # # make the wing table of contents for the section # set width 0 foreach name $manual(wing-toc) { if {[string length $name] > $width} { set width [string length $name] } } set perline [expr 120 / $width] set nrows [expr ([llength $manual(wing-toc)]+$perline)/$perline] set n 0 catch {unset rows} foreach name [lsort $manual(wing-toc)] { set tail $manual(name-$name) if {[llength $tail] > 1} { manerror "$name is defined in more than one file: $tail" set tail [lindex $tail [expr [llength $tail]-1]] } set tail [file tail $tail] append rows([expr $n%$nrows]) " $name" incr n } puts $manual(wing-toc-fp) foreach row [lsort -integer [array names rows]] { puts $manual(wing-toc-fp) $rows($row) } puts $manual(wing-toc-fp)
    # # insert wing copyrights # puts $manual(wing-toc-fp) "
    "
    	foreach copyright $manual(wing-copyrights) {
    	    puts $manual(wing-toc-fp) "Copyright © [lrange $copyright 2 end]"
    	}
    	puts $manual(wing-toc-fp) "Copyright © 1995-1997 Roger E. Critchlow Jr."
    	puts $manual(wing-toc-fp) "
    " close $manual(wing-toc-fp) set manual(merge-copyrights) [merge-copyrights $manual(merge-copyrights) $manual(wing-copyrights)] } ## ## build the keyword index. ## proc strcasecmp {a b} { return [string compare -nocase $a $b] } set keys [lsort -command strcasecmp [array names manual keyword-*]] makedirhier $html/Keywords catch {eval exec rm -f [glob $html/Keywords/*]} puts $manual(short-toc-fp) {
    Keywords
    The keywords from the Tcl/Tk man pages.} set keyfp [open $html/Keywords/contents.htm w] puts $keyfp "Tcl/Tk Keywords" puts $keyfp { } puts $keyfp "

    Tcl/Tk Keywords


    " foreach a {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} { puts $keyfp "$a" set afp [open $html/Keywords/$a.htm w] puts $afp "Tcl/Tk Keywords - $a" puts $afp { } puts $afp "

    Tcl/Tk Keywords - $a


    " foreach b {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} { puts $afp "$b" } puts $afp "


    " foreach k $keys { if {[regexp -nocase -- "^keyword-$a" $k]} { set k [string range $k 8 end] puts $afp "
    $k
    " set refs {} foreach man $manual(keyword-$k) { set name [lindex $man 0] set file [lindex $man 1] lappend refs "$name" } puts $afp [join $refs {, }] } } puts $afp "

    "
    	# insert merged copyrights
    	foreach copyright $manual(merge-copyrights) {
    	    puts $afp "Copyright © [lrange $copyright 2 end]"
    	}
    	puts $afp "Copyright © 1995-1997 Roger E. Critchlow Jr."
    	puts $afp "
    " close $afp } puts $keyfp "


    "
    
        # insert merged copyrights
        foreach copyright $manual(merge-copyrights) {
    	puts $keyfp "Copyright © [lrange $copyright 2 end]"
        }
        puts $keyfp "Copyright © 1995-1997 Roger E. Critchlow Jr."
        puts $keyfp 
    close $keyfp ## ## finish off short table of contents ## puts $manual(short-toc-fp) {
    Source
    More information about these man pages.} puts $manual(short-toc-fp) "

    "
        # insert merged copyrights
        foreach copyright $manual(merge-copyrights) {
    	puts $manual(short-toc-fp) "Copyright © [lrange $copyright 2 end]"
        }
        puts $manual(short-toc-fp) "Copyright © 1995-1997 Roger E. Critchlow Jr."
        puts $manual(short-toc-fp) "
    " close $manual(short-toc-fp) ## ## output man pages ## unset manual(section) foreach path $manual(all-pages) { set manual(wing-file) [file dirname $path] set manual(tail) [file tail $path] set manual(name) [file root $manual(tail)] set text $manual(output-$manual(wing-file)-$manual(name)) set ntext 0 foreach item $text { incr ntext [llength [split $item \n]] incr ntext } set toc $manual(toc-$manual(wing-file)-$manual(name)) set ntoc 0 foreach item $toc { incr ntoc [llength [split $item \n]] incr ntoc } puts stderr "rescanning page $manual(name) $ntoc/$ntext" set manual(outfp) [open $html/$manual(wing-file)/$manual(name).htm w] puts $manual(outfp) "$manual($manual(name)-title)" puts $manual(outfp) { } if {($ntext > 60) && ($ntoc > 32) || [lsearch { Hash LinkVar SetVar TraceVar ConfigWidg CrtImgType CrtItemType CrtPhImgFmt DoOneEvent GetBitmap GetColor GetCursor GetDash GetJustify GetPixels GetVisual ParseArgv QueueEvent } $manual(tail)] >= 0} { foreach item $toc { puts $manual(outfp) $item } } foreach item $text { puts $manual(outfp) [insert-cross-references $item] } puts $manual(outfp) {} close $manual(outfp) } return {} } set usercmddesc {The interpreters which implement Tcl and Tk.} set tclcmddesc {The commands which the tclsh interpreter implements.} set tkcmddesc {The additional commands which the wish interpreter implements.} set tixcmddesc {The additional commands which the Tix extension implements.} set tcllibdesc {The C functions which a Tcl extended C program may use.} set tklibdesc {The additional C functions which a Tk extended C program may use.} parse_command_line proc addfile {file} { global testfiles if {![info exists testfiles]} { set testfiles $file } else { append testfiles ,$file } } addfile TixIntro.n #-addfile compound.n #-addfile pixmap.n #-addfile tix.n #-addfile tixBalloon.n #-addfile tixButtonBox.n #-addfile tixCheckList.n #-addfile tixComboBox.n #-addfile tixControl.n #-addfile tixDestroy.n #-addfile tixDirList.n #-addfile tixDirSelectDialog.n #-addfile tixDirTree.n #-addfile tixDisplayStyle.n #-addfile tixExFileSelectBox.n #-addfile tixExFileSelectDialog.n #-addfile tixFileEntry.n #-addfile tixFileSelectBox.n #-addfile tixFileSelectDialog.n #-addfile tixForm.n #-addfile tixGetBoolean.n #-addfile tixGetInt.n #-addfile tixGrid.n #-addfile tixHList.n #-addfile tixInputOnly.n #-addfile tixLabelEntry.n #-addfile tixLabelFrame.n #-addfile tixListNoteBook.n #-addfile tixMeter.n #-addfile tixMwm.n #-addfile tixNBFrame.n #-addfile tixNoteBook.n #-addfile tixOptionMenu.n #-addfile tixPanedWindow.n #-addfile tixPopupMenu.n #-addfile tixScrolledHList.n #-addfile tixScrolledListBox.n #-addfile tixScrolledText.n #-addfile tixScrolledWindow.n #-addfile tixSelect.n #-addfile tixStdButtonBox.n #-addfile tixTList.n #-addfile tixTree.n #-addfile tixUtils.n if {[info exists env(TEST_ONLY)]} { # # Only test one or a few files # if {[catch { make-man-pages $webdir \ "$tcltkdir/$tkdir/doc/{button.n,image.n,options.n} {Tk Commands} TkCmd {$tkcmddesc}" \ "$tcltkdir/$tixdir/man/{$testfiles} {Tix Commands} TixCmd {$tixcmddesc}" \ } error]} { puts $error\n$errorInfo } } elseif {[info exists env(WITH_TCL_TK)]} { # # Full distribution: all Tcl, Tk and Tix man pages # if {[catch { make-man-pages $webdir \ "$tcltkdir/{$tkdir,$tcldir,$tixdir}/doc/*.1 {Tcl/Tk Applications} UserCmd {$usercmddesc}" \ "$tcltkdir/$tcldir/doc/*.n {Tcl Commands} TclCmd {$tclcmddesc}" \ "$tcltkdir/$tkdir/doc/*.n {Tk Commands} TkCmd {$tkcmddesc}" \ "$tcltkdir/$tcldir/doc/*.3 {Tcl Library} TclLib {$tcllibdesc}" \ "$tcltkdir/$tkdir/doc/*.3 {Tk Library} TkLib {$tklibdesc}" \ "$tcltkdir/$tixdir/man/*.n {Tix Commands} TixCmd {$tixcmddesc}"\ } error]} { puts $error\n$errorInfo } } else { # # Standard distribution: all Tix man pages and select Tcl/Tk pages # if {[catch { make-man-pages $webdir \ "$tcltkdir/$tkdir/doc/{options.n} {Tk Commands} TkCmd {$tkcmddesc}" \ "$tcltkdir/$tkdir/doc/{ConfigWidg.3} {Tk Library} TkLib {$tklibdesc}"\ "$tcltkdir/$tixdir/man/*.n {Tix Commands} TixCmd {$tixcmddesc}"\ "$tcltkdir/$tixdir/man/*.1 {Applications} UserCmd {$usercmddesc}" \ } error]} { puts $error\n$errorInfo } } Tix8.4.3/tools/winsetup.iss0000664000122200012240000000752707426334227016155 0ustar jeffhjeffh00000000000000; -*- mode: text; fill-column: 75; tab-width: 8; coding: iso-latin-1-dos -*- ; ; $Id: winsetup.iss,v 1.1 2002/01/31 21:35:19 idiscovery Exp $ ; ; winsetup.iss -- ; ; Inno Setup Script for creating Win32 installer program for ; the Tix library. ; ; Copyright (c) 2000-2001 Tix Project Group. ; ; See the file "license.terms" for information on usage and redistribution ; of this file, and for a DISCLAIMER OF ALL WARRANTIES. [Messages] [Setup] MinVersion=4.0.950,4.0.1381 AppCopyright=Copyright © 2001, Tix Project Group AppName=Tix Widgets 8.2.0 AppVerName=Tix Widgets 8.2.0 AppVersion=8.2.0 EnableDirDoesntExistWarning=true InfoBeforeFile=WinBin.txt OutputDir=. OutputBaseFilename=tix-8.2.0b3 LicenseFile=..\license.terms AppPublisherURL=http://tix.sourceforge.net AppSupportURL=http://tix.sourceforge.net AppUpdatesURL=http://tix.sourceforge.net DefaultGroupName=Tix 8.2.0 DefaultDirName={pf}\Tcl UsePreviousAppDir=yes DirExistsWarning=no AllowRootDirectory=true AlwaysShowGroupOnReadyPage=yes BackSolid=yes BackColor=$0000FF [Types] Name: "full"; Description: "Full installation" Name: "compact"; Description: "Compact installation" Name: "custom"; Description: "Custom installation"; Flags: iscustom [Components] Name: "main"; Description: "Main Files"; Types: full compact custom; Flags: fixed Name: "demos"; Description: "Tix Demo Files"; Types: full ;;Name: "html"; Description: "Tix Manual Pages"; Types: full Name: "pdf"; Description: "Tix User Guide"; Types: full [Icons] Name: {group}\tixwish; Filename: {app}\bin\tixwish82.exe; WorkingDir: {app} Name: {group}\Tix Demo; Filename: "{app}\bin\tixwish82.exe"; Parameters: """{app}\lib\tix8.2\demos\tixwidgets.tcl"""; WorkingDir: {app}\bin; Components: demos Name: {group}\Tix User Manual;Filename: {app}\docs\pdf\TixUser.pdf; Components: pdf Name: {group}\Tix Programming Guide; Filename: {app}\docs\pguide-tix4.0.pdf; Components: pdf Name: {group}\Release Notes; Filename: {app}\lib\tix8.2\Release-8.2.0.txt [Run] Filename: "{app}\lib\tix8.2\Release-8.2.0.txt"; Description: "View the Release notes"; Flags: postinstall shellexec skipifsilent unchecked Filename: "{app}\bin\tixwish82.exe"; Description: "Launch Demos"; Parameters: """{app}\lib\tix8.2\demos\tixwidgets.tcl"""; WorkingDir: {app}\bin; Flags: postinstall nowait skipifsilent; Components: demos [LangOptions] LanguageName=English LanguageID=$0409 DialogFontName=MS Shell Dlg DialogFontSize=8 DialogFontStandardHeight=13 TitleFontName=Arial TitleFontSize=29 WelcomeFontName=Verdana WelcomeFontSize=12 CopyrightFontName=Arial CopyrightFontSize=8 [Files] Source: ..\win\Release\tixwish82.exe; DestDir: {app}\bin Source: ..\win\Release\tixwishc82.exe; DestDir: {app}\bin Source: ..\win\Release\tix82.dll; DestDir: {app}\bin Source: ..\win\Release\tix82.lib; DestDir: {app}\lib Source: ..\library\*.tcl; DestDir: {app}\lib\tix8.2 Source: ..\library\tclIndex; DestDir: {app}\lib\tix8.2 Source: ..\license.terms; DestDir: {app}\lib\tix8.2 Source: ..\docs\Release-8.2.0.txt; DestDir: {app}\lib\tix8.2 ; ; This must appear below the line above. We are overridding the ; file ..\library\pkgIndex.tcl with ..\win\Release\pkgIndex.tcl.src ; Source: ..\win\Release\pkgIndex.tcl.src; DestDir: {app}\lib\tix8.2; DestName: "pkgIndex.tcl" Source: ..\library\pref\*.*; DestDir: {app}\lib\tix8.2\pref Source: ..\library\bitmaps\*.*; DestDir: {app}\lib\tix8.2\bitmaps Source: ..\demos\*.*; DestDir: {app}\lib\tix8.2\demos; Components: demos Source: ..\demos\bitmaps\*.*; DestDir: {app}\lib\tix8.2\demos\bitmaps; Components: demos Source: ..\demos\samples\*.*; DestDir: {app}\lib\tix8.2\demos\samples; Components: demos ; ; Docs ; Source: ..\docs\pdf\TixUser.pdf; DestDir: {app}\doc; Components: pdf Source: ..\docs\pdf\pguide-tix4.0.pdf; DestDir: {app}\doc; Components: pdf [Dirs] Tix8.4.3/tools/README.txt0000644000122200012240000000227010162671770015237 0ustar jeffhjeffh00000000000000 Tix Tools [1]tix-man2html.tcl -- Man pages to HTML Convert Ousterhout format man pages into highly crosslinked hypertext. [2]hanno.tcl -- An HTML Annotation Program hanno.tcl automatically generates a "Last Modified" tag for HTML files. It recursively traverses all sub-directories and generates a "Last Modified" tag for each HTML file according to the file's last modification date. Please read the file for available options. [3]tcltrim tcltrim trims all comments and white spaces from TCL files. [4]tixindex tixindex builds the tclIndex file for the Tix widget implementation files. You must use this program to index the Tix librarys instead of the normal TCL auto_mkindex command. [5]color.tcl color.tcl displays all the available colors in your X display. This program requires tixwish. References 1. file://localhost/path/to/tix/tools/tix-man2html.tcl 2. file://localhost/path/to/tix/tools/hanno.tcl 3. file://localhost/path/to/tix/tools/tcltrim 4. file://localhost/path/to/tix/tools/tixindex 5. file://localhost/path/to/tix/tools/color.tcl Tix8.4.3/tools/README.html0000644000122200012240000000232507424215670015365 0ustar jeffhjeffh00000000000000 Tix Tools

    Tix Tools

    tix-man2html.tcl -- Man pages to HTML Convert Ousterhout format man pages into highly crosslinked hypertext.

    hanno.tcl -- An HTML Annotation Program

    hanno.tcl automatically generates a "Last Modified" tag for HTML files. It recursively traverses all sub-directories and generates a "Last Modified" tag for each HTML file according to the file's last modification date. Please read the file for available options.

    tcltrim

    tcltrim trims all comments and white spaces from TCL files.

    tixindex

    tixindex builds the tclIndex file for the Tix widget implementation files. You must use this program to index the Tix librarys instead of the normal TCL auto_mkindex command.

    color.tcl

    color.tcl displays all the available colors in your X display. This program requires tixwish. Tix8.4.3/tools/hanno.tcl0000644000122200012240000000255107110476705015352 0ustar jeffhjeffh00000000000000# # $Id: hanno.tcl,v 1.1.1.1 2000/05/17 11:08:53 idiscovery Exp $ # #!/bin/sh # the next line restarts using tixwish \ exec tclsh7.6 "$0" "$@" # Options # # -v : Verbose mode. Print out what hanno is doing. # set verbose 0 if {[info exists env(TIX_VERBOSE)] && $env(TIX_VERBOSE) == 1} { set verbose 1 } if {[lsearch -glob $argv -v*] != -1} { set verbose 1 } set files [exec find . -name *.html -print] foreach file $files { if {$verbose} { puts "\[html anno]: checking $file" } set output {} set src [open $file RDONLY] set changed 1 while {![eof $src]} { set line [gets $src] if {[regexp -nocase {[ \t]*\
    \Last modified.*} $line]} { # Do nothing } elseif {[regexp -nocase {[ \t]*\Serial.*\} $line]} { if {[scan $line "Serial %d" lastmtime] == 1} { if {[expr [file mtime $file] - $lastmtime] >= 10} { set changed 1 } else { set changed 0 } } } else { append output $line\n } } close $src if {$changed == 1} { if {$verbose} { puts "\[html anno]: modifying tag of $file" } set date [clock format [file mtime $file]] set des [open $file {WRONLY TRUNC}] puts -nonewline $des $output # Somehow the "seek" is necessary # seek $des -1 current puts $des "
    Last modified $date --- " puts $des "Serial [file mtime $file]" close $des } } Tix8.4.3/tools/tixindex0000664000122200012240000000411107110476705015316 0ustar jeffhjeffh00000000000000#!/bin/sh # the next line restarts using tclsh \ exec tclsh "$0" "$@" proc tixAutoMkIndex {dir args} { global errorCode errorInfo set oldDir [pwd] cd $dir set dir [pwd] append index "# Tcl autoload index file, version 2.0\n" append index "# This file is generated by the \"tixindex\" program,\n" append index "# *NOT* by the \"auto_mkindex\" command,\n" append index "# and sourced to set up indexing information for one or\n" append index "# more commands. Typically each line is a command that\n" append index "# sets an element in the auto_index array, where the\n" append index "# element name is the name of a command and the value is\n" append index "# a script that loads the command.\n\n" foreach file [eval glob $args] { set f "" set error [catch { set f [open $file] while {[gets $f line] >= 0} { if [regexp {^tixClass[ ]+([^ ]*)} $line match className] { append index "set [list auto_index($className)]" append index " \"source {\$dir/$file}\"\n" append index "set [list auto_index($className:AutoLoad)]" append index " \"source {\$dir/$file}\"\n" set isClass($className) 1 } if [regexp {^tixWidgetClass[ ]+([^ ]*)} $line match className] { append index "set [list auto_index($className)]" append index " \"source {\$dir/$file}\"\n" append index "set [list auto_index($className:AutoLoad)]" append index " \"source {\$dir/$file}\"\n" set isClass($className) 1 } if [regexp {^proc[ ]+([^ ]*)} $line match procName] { set prefix [lindex [split $procName :] 0] if {![info exists isClass($prefix)]} { append index "set [list auto_index($procName)]" append index " \"source {\$dir/$file}\"\n" } } } close $f } msg] if $error { set code $errorCode set info $errorInfo catch {close $f} cd $oldDir error $msg $info $code } } set f [open tclIndex w] puts $f $index nonewline close $f cd $oldDir } if {$argv == {}} { eval tixAutoMkIndex . *.tcl } else { eval tixAutoMkIndex . $argv } Tix8.4.3/Python/0000775000122200012240000000000010767576212013671 5ustar jeffhjeffh00000000000000Tix8.4.3/Python/Lib/0000775000122200012240000000000010767576212014377 5ustar jeffhjeffh00000000000000Tix8.4.3/Python/Lib/lib-tk/0000775000122200012240000000000010767576212015561 5ustar jeffhjeffh00000000000000Tix8.4.3/Python/Lib/lib-tk/Tix.py0000775000122200012240000017146307423754172016714 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Tix.py,v 1.1 2002/01/24 09:48:42 idiscovery Exp $ # # 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 # (TixWidget.__init__) has been taken from Tkinter (Widget.__init__) # and will break if there are major changes in Tkinter. # # The Tix widgets are represented by a class hierarchy in python with proper # inheritance of base classes. # # As a result after creating a 'w = StdButtonBox', I can write # w.ok['text'] = 'Who Cares' # or w.ok['bg'] = w['bg'] # or even w.ok.invoke() # etc. # # Compare the demo tixwidgets.py to the original Tcl program and you will # appreciate the advantages. # import string from Tkinter import * from Tkinter import _flatten, _cnfmerge, _default_root # WARNING - TkVersion is a limited precision floating point number if TkVersion < 3.999: raise ImportError, "This version of Tix.py requires Tk 4.0 or higher" import _tkinter # If this fails your Python may not be configured for Tk # TixVersion = string.atof(tkinter.TIX_VERSION) # If this fails your Python may not be configured for Tix # WARNING - TixVersion is a limited precision floating point number # Some more constants (for consistency with Tkinter) WINDOW = 'window' TEXT = 'text' STATUS = 'status' IMMEDIATE = 'immediate' IMAGE = 'image' IMAGETEXT = 'imagetext' BALLOON = 'balloon' AUTO = 'auto' ACROSSTOP = 'acrosstop' # Some constants used by Tkinter dooneevent() 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 # BEWARE - this is implemented by copying some code from the Widget class # in Tkinter (to override Widget initialization) and is therefore # liable to break. import Tkinter, os # Could probably add this to Tkinter.Misc class tixCommand: """The tix commands provide access to miscellaneous elements of Tix's internal state and the Tix application context. Most of the information manipulated by these commands pertains to the application as a whole, or to a screen or display, rather than to a particular window. 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 directories under which the tix_getimage and tix_getbitmap commands will search for image files. The standard bitmap directory is $TIX_LIBRARY/bitmaps. The addbitmapdir command 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 dictionary all of the available options. 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 configuration options. """ # Copied from Tkinter.py if kw: cnf = _cnfmerge((cnf, kw)) elif cnf: cnf = _cnfmerge(cnf) if cnf is None: cnf = {} for x in self.tk.split(self.tk.call('tix', 'configure')): cnf[x[0][1:]] = (x[0][1:],) + x[1:] return cnf if type(cnf) is StringType: x = self.tk.split(self.tk.call('tix', 'configure', '-'+cnf)) return (x[0][1:],) + x[1:] return self.tk.call(('tix', 'configure') + self._options(cnf)) def tix_filedialog(self, dlgclass=None): """Returns the file selection dialog that may be shared among different calls from 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 (see the tix_addbitmapdir command above). By using tix_getbitmap, you can avoid 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 directories (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_ getimage, you can advoid hard coding the pathnames of the image files in your application. When successful, 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 include: 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 resetoptions 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 Tix has been has imported and inited, 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 under Unix, 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: """The Tix Form geometry manager Widgets can be arranged by specifying attachments to other widgets. See Tix documentation for complete details""" def config(self, cnf={}, **kw): apply(self.tk.call, ('tixForm', self._w) + self._options(cnf, kw)) form = config def __setitem__(self, key, value): Form.form(self, {key: value}) def check(self): return self.tk.call('tixForm', 'check', self._w) def forget(self): self.tk.call('tixForm', 'forget', self._w) def grid(self, xsize=0, ysize=0): if (not xsize) and (not ysize): x = self.tk.call('tixForm', 'grid', self._w) y = self.tk.splitlist(x) z = () for x in y: z = z + (self.tk.getint(x),) return z self.tk.call('tixForm', 'grid', self._w, xsize, ysize) def info(self, option=None): if not option: return self.tk.call('tixForm', 'info', self._w) if option[0] != '-': option = '-' + option return self.tk.call('tixForm', 'info', self._w, option) def slaves(self): return map(self._nametowidget, self.tk.splitlist( 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. 2) It is possible to give the name of an existing TK widget. These are child widgets created automatically by a Tix mega-widget. The Tk call to create these widgets is therefore bypassed in TixWidget.__init__ Both options are for use by subclasses only. """ def __init__ (self, master=None, widgetName=None, static_options=None, cnf={}, kw={}): # Merge keywords and dictionary arguments if kw: cnf = _cnfmerge((cnf, kw)) else: cnf = _cnfmerge(cnf) # Move static options into extra. static_options must be # a list of keywords (or None). extra=() if static_options: for k,v in cnf.items()[:]: if k in static_options: extra = extra + ('-' + k, v) del cnf[k] self.widgetName = widgetName Widget._setup(self, master, cnf) # If widgetName is None, this is a dummy creation call where the # corresponding Tk widget has already been created by Tix if widgetName: apply(self.tk.call, (widgetName, self._w) + extra) # Non-static options - to be done via a 'config' command if cnf: Widget.config(self, cnf) # Dictionary to hold subwidget names for easier access. We can't # use the children list because the public Tix names may not be the # same as the pathname component self.subwidget_list = {} # We set up an attribute access function so that it is possible to # do w.ok['text'] = 'Hello' rather than w.subwidget('ok')['text'] = 'Hello' # when w is a StdButtonBox. # We can even do w.ok.invoke() because w.ok is subclassed from the # Button class if you go through the proper constructors def __getattr__(self, name): if self.subwidget_list.has_key(name): return self.subwidget_list[name] 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: raise TclError, "Subwidget " + name + " not child of " + self._name # Remove header of name and leading dot n = n[len(self._w)+1:] return self._nametowidget(n) def subwidgets_all(self): """Return all subwidgets.""" names = self._subwidget_names() if not names: return [] retlist = [] for name in names: name = name[len(self._w)+1:] try: retlist.append(self._nametowidget(name)) except: # some of the widgets are unknown e.g. border in LabelFrame pass 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) except TclError: return None def _subwidget_names(self): """Return the name of all subwidgets.""" try: x = self.tk.call(self._w, 'subwidgets', '-all') return self.tk.split(x) except TclError: return None def config_all(self, option, value): """Set configuration options for all subwidgets (and self).""" if option == '': return elif type(option) != type(''): option = `option` if type(value) != type(''): value = `value` names = self._subwidget_names() for name in names: self.tk.call(name, 'configure', '-' + option, value) # Subwidgets are child widgets created automatically by mega-widgets. # In python, we have to create these subwidgets manually to mirror their # existence in Tk/Tix. class TixSubWidget(TixWidget): """Subwidget class. This is used to mirror child widgets automatically created by Tix/Tk as part of a mega-widget in Python (which is not informed of this)""" def __init__(self, master, name, destroy_physically=1, check_intermediate=1): if check_intermediate: path = master._subwidget_name(name) try: path = path[len(master._w)+1:] plist = string.splitfields(path, '.') except: plist = [] if (not check_intermediate) or len(plist) < 2: # immediate descendant TixWidget.__init__(self, master, None, None, {'name' : name}) else: # Ensure that the intermediate widgets exist parent = master for i in range(len(plist) - 1): n = string.joinfields(plist[:i+1], '.') try: w = master._nametowidget(n) parent = w except KeyError: # Create the intermediate widget parent = TixSubWidget(parent, plist[i], destroy_physically=0, check_intermediate=0) TixWidget.__init__(self, parent, None, None, {'name' : name}) self.destroy_physically = destroy_physically def destroy(self): # For some widgets e.g., a NoteBook, when we call destructors, # we must be careful not to destroy the frame widget since this # also destroys the parent NoteBook thus leading to an exception # in Tkinter when it finally calls Tcl to destroy the NoteBook for c in self.children.values(): c.destroy() if self.master.children.has_key(self._name): del self.master.children[self._name] if self.master.subwidget_list.has_key(self._name): del self.master.subwidget_list[self._name] if self.destroy_physically: # This is bypassed only for a few widgets self.tk.call('destroy', self._w) # Useful func. to split Tcl lists and return as a dict. From Tkinter.py def _lst2dict(lst): dict = {} for x in lst: dict[x[0][1:]] = (x[0][1:],) + x[1:] return dict # Useful class to create a display style - later shared by many items. # Contributed by Steffen Kremser class DisplayStyle: """DisplayStyle - handle configuration options shared by (multiple) Display Items""" def __init__(self, itemtype, cnf={}, **kw ): master = _default_root # global from Tkinter if not master and cnf.has_key('refwindow'): master=cnf['refwindow'] elif not master and kw.has_key('refwindow'): master= kw['refwindow'] elif not master: raise RuntimeError, "Too early to create display style: no root window" self.tk = master.tk self.stylename = apply(self.tk.call, ('tixDisplayStyle', itemtype) + self._options(cnf,kw) ) def __str__(self): return self.stylename def _options(self, cnf, kw ): if kw and cnf: cnf = _cnfmerge((cnf, kw)) elif kw: cnf = kw opts = () for k, v in cnf.items(): opts = opts + ('-'+k, v) return opts def delete(self): self.tk.call(self.stylename, 'delete') del(self) def __setitem__(self,key,value): self.tk.call(self.stylename, 'configure', '-%s'%key, value) def config(self, cnf={}, **kw): return _lst2dict( self.tk.split( apply(self.tk.call, (self.stylename, 'configure') + self._options(cnf,kw)))) def __getitem__(self,key): return self.tk.call(self.stylename, 'cget', '-%s'%key) ###################################################### ### The Tix Widget classes - in alphabetical order ### ###################################################### class Balloon(TixWidget): """Balloon help widget. Subwidget Class --------- ----- label Label message Message""" def __init__(self, master=None, cnf={}, **kw): # static seem to be -installcolormap -initwait -statusbar -cursor static = ['options', 'installcolormap', 'initwait', 'statusbar', 'cursor'] TixWidget.__init__(self, master, 'tixBalloon', static, cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label', destroy_physically=0) self.subwidget_list['message'] = _dummyLabel(self, 'message', destroy_physically=0) def bind_widget(self, widget, cnf={}, **kw): """Bind balloon widget to another. One balloon widget may be bound to several widgets at the same time""" apply(self.tk.call, (self._w, 'bind', widget._w) + self._options(cnf, kw)) def unbind_widget(self, widget): self.tk.call(self._w, 'unbind', widget._w) 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', ['orientation', 'options'], cnf, kw) def add(self, name, cnf={}, **kw): """Add a button with given name to box.""" btn = apply(self.tk.call, (self._w, 'add', name) + self._options(cnf, kw)) self.subwidget_list[name] = _dummyButton(self, name) return btn def invoke(self, name): if self.subwidget_list.has_key(name): self.tk.call(self._w, 'invoke', name) 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 --------- ----- entry Entry arrow Button slistbox ScrolledListBox tick Button cross Button : present if created with the fancy option""" def __init__ (self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixComboBox', ['editable', 'dropdown', 'fancy', 'options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') self.subwidget_list['arrow'] = _dummyButton(self, 'arrow') self.subwidget_list['slistbox'] = _dummyScrolledListBox(self, 'slistbox') try: self.subwidget_list['tick'] = _dummyButton(self, 'tick') self.subwidget_list['cross'] = _dummyButton(self, 'cross') except TypeError: # unavailable when -fancy not specified pass def add_history(self, str): self.tk.call(self._w, 'addhistory', str) def append_history(self, str): self.tk.call(self._w, 'appendhistory', str) def insert(self, index, str): self.tk.call(self._w, 'insert', index, str) def pick(self, index): self.tk.call(self._w, 'pick', index) 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 --------- ----- incr Button decr Button entry Entry label Label""" def __init__ (self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixControl', ['options'], cnf, kw) self.subwidget_list['incr'] = _dummyButton(self, 'incr') self.subwidget_list['decr'] = _dummyButton(self, 'decr') self.subwidget_list['label'] = _dummyLabel(self, 'label') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') def decrement(self): self.tk.call(self._w, 'decr') def increment(self): self.tk.call(self._w, 'incr') def invoke(self): self.tk.call(self._w, 'invoke') def update(self): self.tk.call(self._w, 'update') 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 --------- ----- hlist HList hsb Scrollbar vsb Scrollbar""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixDirList', ['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 chdir(self, dir): self.tk.call(self._w, 'chdir', dir) 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 --------- ----- hlist HList hsb Scrollbar vsb Scrollbar""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixDirTree', ['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 chdir(self, dir): 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 --------- ----- cancel Button ok Button hidden Checkbutton types ComboBox dir ComboBox file ComboBox dirlist ScrolledListBox filelist ScrolledListBox""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixExFileSelectBox', ['options'], cnf, kw) self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['hidden'] = _dummyCheckbutton(self, 'hidden') self.subwidget_list['types'] = _dummyComboBox(self, 'types') self.subwidget_list['dir'] = _dummyComboBox(self, 'dir') self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist') self.subwidget_list['file'] = _dummyComboBox(self, 'file') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') def filter(self): self.tk.call(self._w, 'filter') def invoke(self): 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 ---------- ----- fsbox ExFileSelectBox""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixExFileSelectDialog', ['options'], cnf, kw) self.subwidget_list['fsbox'] = _dummyExFileSelectBox(self, 'fsbox') def popup(self): self.tk.call(self._w, 'popup') def popdown(self): self.tk.call(self._w, 'popdown') 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 --------- ----- selection ComboBox filter ComboBox dirlist ScrolledListBox filelist ScrolledListBox""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixFileSelectBox', ['options'], cnf, kw) self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') self.subwidget_list['filter'] = _dummyComboBox(self, 'filter') self.subwidget_list['selection'] = _dummyComboBox(self, 'selection') def apply_filter(self): # name of subwidget is same as command self.tk.call(self._w, 'filter') def invoke(self): self.tk.call(self._w, 'invoke') # Should inherit from a Dialog class class FileSelectDialog(TixWidget): """FileSelectDialog - Motif style file select dialog. Subwidgets Class ---------- ----- btns StdButtonBox fsbox FileSelectBox""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixFileSelectDialog', ['options'], cnf, kw) self.subwidget_list['btns'] = _dummyStdButtonBox(self, 'btns') self.subwidget_list['fsbox'] = _dummyFileSelectBox(self, 'fsbox') def popup(self): self.tk.call(self._w, 'popup') def popdown(self): self.tk.call(self._w, 'popdown') 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 ---------- ----- button Button entry Entry""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixFileEntry', ['dialogtype', 'options'], cnf, kw) self.subwidget_list['button'] = _dummyButton(self, 'button') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') def invoke(self): self.tk.call(self._w, 'invoke') def file_dialog(self): # XXX return python object pass 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""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixHList', ['columns', 'options'], cnf, kw) def add(self, entry, cnf={}, **kw): return apply(self.tk.call, (self._w, 'add', entry) + self._options(cnf, kw)) def add_child(self, parent=None, cnf={}, **kw): if not parent: parent = '' return apply(self.tk.call, (self._w, 'addchild', parent) + self._options(cnf, kw)) def anchor_set(self, entry): self.tk.call(self._w, 'anchor', 'set', entry) def anchor_clear(self): self.tk.call(self._w, 'anchor', 'clear') def column_width(self, col=0, width=None, chars=None): if not chars: return self.tk.call(self._w, 'column', 'width', col, width) else: return self.tk.call(self._w, 'column', 'width', col, '-char', chars) def delete_all(self): self.tk.call(self._w, 'delete', 'all') def delete_entry(self, entry): self.tk.call(self._w, 'delete', 'entry', entry) def delete_offsprings(self, entry): self.tk.call(self._w, 'delete', 'offsprings', entry) def delete_siblings(self, entry): self.tk.call(self._w, 'delete', 'siblings', entry) def dragsite_set(self, index): self.tk.call(self._w, 'dragsite', 'set', index) def dragsite_clear(self): self.tk.call(self._w, 'dragsite', 'clear') def dropsite_set(self, index): self.tk.call(self._w, 'dropsite', 'set', index) def dropsite_clear(self): self.tk.call(self._w, 'dropsite', 'clear') def header_create(self, col, cnf={}, **kw): apply(self.tk.call, (self._w, 'header', 'create', col) + self._options(cnf, kw)) def header_configure(self, col, cnf={}, **kw): if cnf is None: return _lst2dict( self.tk.split( self.tk.call(self._w, 'header', 'configure', col))) apply(self.tk.call, (self._w, 'header', 'configure', col) + self._options(cnf, kw)) def header_cget(self, col, opt): return self.tk.call(self._w, 'header', 'cget', col, opt) def header_exists(self, col): return self.tk.call(self._w, 'header', 'exists', col) def header_delete(self, col): self.tk.call(self._w, 'header', 'delete', col) def header_size(self, col): return self.tk.call(self._w, 'header', 'size', col) def hide_entry(self, entry): self.tk.call(self._w, 'hide', 'entry', entry) def indicator_create(self, entry, cnf={}, **kw): apply(self.tk.call, (self._w, 'indicator', 'create', entry) + self._options(cnf, kw)) def indicator_configure(self, entry, cnf={}, **kw): if cnf is None: return _lst2dict( self.tk.split( self.tk.call(self._w, 'indicator', 'configure', entry))) apply(self.tk.call, (self._w, 'indicator', 'configure', entry) + self._options(cnf, kw)) def indicator_cget(self, entry, opt): return self.tk.call(self._w, 'indicator', 'cget', entry, opt) def indicator_exists(self, entry): return self.tk.call (self._w, 'indicator', 'exists', entry) def indicator_delete(self, entry): self.tk.call(self._w, 'indicator', 'delete', entry) def indicator_size(self, entry): return self.tk.call(self._w, 'indicator', 'size', entry) def info_anchor(self): return self.tk.call(self._w, 'info', 'anchor') def info_children(self, entry=None): c = self.tk.call(self._w, 'info', 'children', entry) return self.tk.splitlist(c) def info_data(self, entry): return self.tk.call(self._w, 'info', 'data', entry) def info_exists(self, entry): return self.tk.call(self._w, 'info', 'exists', entry) def info_hidden(self, entry): return self.tk.call(self._w, 'info', 'hidden', entry) def info_next(self, entry): return self.tk.call(self._w, 'info', 'next', entry) def info_parent(self, entry): return self.tk.call(self._w, 'info', 'parent', entry) def info_prev(self, entry): return self.tk.call(self._w, 'info', 'prev', entry) def info_selection(self): c = self.tk.call(self._w, 'info', 'selection') return self.tk.splitlist(c) def item_cget(self, entry, col, opt): return self.tk.call(self._w, 'item', 'cget', entry, col, opt) def item_configure(self, entry, col, cnf={}, **kw): if cnf is None: return _lst2dict( self.tk.split( self.tk.call(self._w, 'item', 'configure', entry, col))) apply(self.tk.call, (self._w, 'item', 'configure', entry, col) + self._options(cnf, kw)) def item_create(self, entry, col, cnf={}, **kw): apply(self.tk.call, (self._w, 'item', 'create', entry, col) + self._options(cnf, kw)) def item_exists(self, entry, col): return self.tk.call(self._w, 'item', 'exists', entry, col) def item_delete(self, entry, col): self.tk.call(self._w, 'item', 'delete', entry, col) def nearest(self, y): return self.tk.call(self._w, 'nearest', y) def see(self, entry): self.tk.call(self._w, 'see', entry) def selection_clear(self, cnf={}, **kw): apply(self.tk.call, (self._w, 'selection', 'clear') + self._options(cnf, kw)) def selection_includes(self, entry): return self.tk.call(self._w, 'selection', 'includes', entry) def selection_set(self, first, last=None): self.tk.call(self._w, 'selection', 'set', first, last) def show_entry(self, entry): return self.tk.call(self._w, 'show', 'entry', entry) def xview(self, *args): apply(self.tk.call, (self._w, 'xview') + args) def yview(self, *args): apply(self.tk.call, (self._w, 'yview') + args) class InputOnly(TixWidget): """InputOnly - Invisible widget. Subwidgets - None""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixInputOnly', None, cnf, kw) 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 ---------- ----- label Label entry Entry""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixLabelEntry', ['labelside','options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') 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 ---------- ----- label Label frame Frame""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixLabelFrame', ['labelside','options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') 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). Subwidgets Class ---------- ----- nbframe NoteBookFrame page widgets added dynamically with the add method""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self,master,'tixNoteBook', ['options'], cnf, kw) self.subwidget_list['nbframe'] = TixSubWidget(self, 'nbframe', destroy_physically=0) 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 delete(self, name): self.tk.call(self._w, 'delete', name) def page(self, name): return self.subwidget(name) def pages(self): # Can't call subwidgets_all directly because we don't want .nbframe names = self.tk.split(self.tk.call(self._w, 'pages')) ret = [] for x in names: ret.append(self.subwidget(x)) return ret def raise_page(self, name): # raise is a python keyword self.tk.call(self._w, 'raise', name) def raised(self): return self.tk.call(self._w, 'raised') class NoteBookFrame(TixWidget): """Will be added when Tix documentation is available !!!""" pass class OptionMenu(TixWidget): """OptionMenu - creates a menu button of options. Subwidget Class --------- ----- menubutton Menubutton menu Menu""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixOptionMenu', ['options'], cnf, kw) self.subwidget_list['menubutton'] = _dummyMenubutton(self, 'menubutton') self.subwidget_list['menu'] = _dummyMenu(self, 'menu') def add_command(self, name, cnf={}, **kw): apply(self.tk.call, (self._w, 'add', 'command', name) + self._options(cnf, kw)) def add_separator(self, name, cnf={}, **kw): apply(self.tk.call, (self._w, 'add', 'separator', name) + self._options(cnf, kw)) def delete(self, name): self.tk.call(self._w, 'delete', name) def disable(self, name): self.tk.call(self._w, 'disable', name) def enable(self, name): self.tk.call(self._w, 'enable', name) 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 ---------- ----- g/p widgets added dynamically with the add method.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixPanedWindow', ['orientation', 'options'], cnf, kw) 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, check_intermediate=0) return self.subwidget_list[name] def panes(self): names = self.tk.call(self._w, 'panes') ret = [] for x in names: ret.append(self.subwidget(x)) return ret 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 ---------- ----- menubutton Menubutton menu Menu""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixPopupMenu', ['options'], cnf, kw) self.subwidget_list['menubutton'] = _dummyMenubutton(self, 'menubutton') self.subwidget_list['menu'] = _dummyMenu(self, 'menu') def bind_widget(self, widget): self.tk.call(self._w, 'bind', widget._w) def unbind_widget(self, widget): self.tk.call(self._w, 'unbind', widget._w) def post_widget(self, widget, x, y): self.tk.call(self._w, 'post', widget._w, x, y) class ResizeHandle(TixWidget): """Internal widget to draw resize handles on Scrolled widgets.""" def __init__(self, master, cnf={}, **kw): # There seems to be a Tix bug rejecting the configure method # Let's try making the flags -static flags = ['options', 'command', 'cursorfg', 'cursorbg', 'handlesize', 'hintcolor', 'hintwidth', 'x', 'y'] # In fact, x y height width are configurable TixWidget.__init__(self, master, 'tixResizeHandle', flags, cnf, kw) def attach_widget(self, widget): self.tk.call(self._w, 'attachwidget', widget._w) def detach_widget(self, widget): self.tk.call(self._w, 'detachwidget', widget._w) def hide(self, widget): self.tk.call(self._w, 'hide', widget._w) def show(self, widget): self.tk.call(self._w, 'show', widget._w) class ScrolledHList(TixWidget): """ScrolledHList - HList with automatic scrollbars.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledHList', ['options'], cnf, kw) self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledListBox(TixWidget): """ScrolledListBox - Listbox with automatic scrollbars.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledListBox', ['options'], cnf, kw) self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledText(TixWidget): """ScrolledText - Text with automatic scrollbars.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledText', ['options'], cnf, kw) self.subwidget_list['text'] = _dummyText(self, 'text') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledTList(TixWidget): """ScrolledTList - TList with automatic scrollbars.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledTList', ['options'], cnf, kw) self.subwidget_list['tlist'] = _dummyTList(self, 'tlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledWindow(TixWidget): """ScrolledWindow - Window with automatic scrollbars.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledWindow', ['options'], cnf, kw) self.subwidget_list['window'] = _dummyFrame(self, 'window') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 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): TixWidget.__init__(self, master, 'tixSelect', ['allowzero', 'radio', 'orientation', 'labelside', 'options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') def add(self, name, cnf={}, **kw): apply(self.tk.call, (self._w, 'add', name) + self._options(cnf, kw)) self.subwidget_list[name] = _dummyButton(self, name) return self.subwidget_list[name] def invoke(self, name): self.tk.call(self._w, 'invoke', name) class StdButtonBox(TixWidget): """StdButtonBox - Standard Button Box (OK, Apply, Cancel and Help) """ def __init__(self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixStdButtonBox', ['orientation', 'options'], cnf, kw) self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['apply'] = _dummyButton(self, 'apply') self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['help'] = _dummyButton(self, 'help') def invoke(self, name): if self.subwidget_list.has_key(name): self.tk.call(self._w, 'invoke', name) 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""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixTList', ['options'], cnf, kw) def active_set(self, index): self.tk.call(self._w, 'active', 'set', index) def active_clear(self): self.tk.call(self._w, 'active', 'clear') def anchor_set(self, index): self.tk.call(self._w, 'anchor', 'set', index) def anchor_clear(self): self.tk.call(self._w, 'anchor', 'clear') def delete(self, from_, to=None): self.tk.call(self._w, 'delete', from_, to) def dragsite_set(self, index): self.tk.call(self._w, 'dragsite', 'set', index) def dragsite_clear(self): self.tk.call(self._w, 'dragsite', 'clear') def dropsite_set(self, index): self.tk.call(self._w, 'dropsite', 'set', index) def dropsite_clear(self): self.tk.call(self._w, 'dropsite', 'clear') def insert(self, index, cnf={}, **kw): apply(self.tk.call, (self._w, 'insert', index) + self._options(cnf, kw)) def info_active(self): return self.tk.call(self._w, 'info', 'active') def info_anchor(self): return self.tk.call(self._w, 'info', 'anchor') def info_down(self, index): return self.tk.call(self._w, 'info', 'down', index) def info_left(self, index): return self.tk.call(self._w, 'info', 'left', index) def info_right(self, index): return self.tk.call(self._w, 'info', 'right', index) def info_selection(self): c = self.tk.call(self._w, 'info', 'selection') return self.tk.splitlist(c) def info_size(self): return self.tk.call(self._w, 'info', 'size') def info_up(self, index): return self.tk.call(self._w, 'info', 'up', index) def nearest(self, x, y): return self.tk.call(self._w, 'nearest', x, y) def see(self, index): self.tk.call(self._w, 'see', index) def selection_clear(self, cnf={}, **kw): apply(self.tk.call, (self._w, 'selection', 'clear') + self._options(cnf, kw)) def selection_includes(self, index): return self.tk.call(self._w, 'selection', 'includes', index) def selection_set(self, first, last=None): self.tk.call(self._w, 'selection', 'set', first, last) def xview(self, *args): apply(self.tk.call, (self._w, 'xview') + args) def yview(self, *args): apply(self.tk.call, (self._w, 'yview') + args) 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): TixWidget.__init__(self, master, 'tixTree', ['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 setmode(self, entrypath, mode='none'): 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 ### ### mega widget. This allows us to access their methods directly. ### ########################################################################### class _dummyButton(Button, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyCheckbutton(Checkbutton, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyEntry(Entry, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyFrame(Frame, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyLabel(Label, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyListbox(Listbox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyMenu(Menu, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyMenubutton(Menubutton, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyScrollbar(Scrollbar, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyText(Text, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyScrolledListBox(ScrolledListBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class _dummyHList(HList, TixSubWidget): def __init__(self, master, name, destroy_physically=1): 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): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyComboBox(ComboBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) 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) class _dummyDirList(DirList, 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 _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): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['hidden'] = _dummyCheckbutton(self, 'hidden') self.subwidget_list['types'] = _dummyComboBox(self, 'types') self.subwidget_list['dir'] = _dummyComboBox(self, 'dir') self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') self.subwidget_list['file'] = _dummyComboBox(self, 'file') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') class _dummyFileSelectBox(FileSelectBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') self.subwidget_list['filter'] = _dummyComboBox(self, 'filter') 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): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['apply'] = _dummyButton(self, 'apply') self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['help'] = _dummyButton(self, 'help') class _dummyNoteBookFrame(NoteBookFrame, TixSubWidget): def __init__(self, master, name, destroy_physically=0): TixSubWidget.__init__(self, master, name, destroy_physically) ######################## ### Utility Routines ### ######################## # Returns the qualified path name for the widget. Normally used to set # default options for subwidgets. See tixwidgets.py def OptionName(widget): return widget.tk.call('tixOptionName', widget._w) # Called with a dictionary argument of the form # {'*.c':'C source files', '*.txt':'Text Files', '*':'All files'} # returns a string which can be used to configure the fsbox file types # in an ExFileSelectBox. i.e., # '{{*} {* - All files}} {{*.c} {*.c - C source files}} {{*.txt} {*.txt - Text Files}}' def FileTypeList(dict): s = '' for type in dict.keys(): 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 Tix8.4.3/Python/Demo/0000775000122200012240000000000010767576212014555 5ustar jeffhjeffh00000000000000Tix8.4.3/Python/Demo/tix/0000775000122200012240000000000010767576212015361 5ustar jeffhjeffh00000000000000Tix8.4.3/Python/Demo/tix/samples/0000775000122200012240000000000010767576212017025 5ustar jeffhjeffh00000000000000Tix8.4.3/Python/Demo/tix/samples/SHList1.py0000775000122200012240000000766607404771747020654 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SHList1.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates the use of the tixScrolledHList widget. # import Tix TCL_ALL_EVENTS = 0 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 "tixwidgets.py". # if __name__== '__main__' : root=Tix.Tk() RunSample(root) Tix8.4.3/Python/Demo/tix/samples/SHList2.py0000775000122200012240000001275607404771747020651 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SHList2.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates how to use multiple columns and multiple styles # in the tixHList widget # # In a tixHList widget, you can have one ore more columns. # import Tix TCL_ALL_EVENTS = 0 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']) # 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) # This is our little relational database # boss = ('doe', 'John Doe', 'Director') managers = [ ('jeff', 'Jeff Waxman', 'Manager'), ('john', 'John Lee', 'Manager'), ('peter', 'Peter Kenson', 'Manager') ] 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') ] style['mgr_name'] = Tix.DisplayStyle(Tix.TEXT, refwindow=hlist) style['mgr_posn'] = Tix.DisplayStyle(Tix.TEXT, padx=8, refwindow=hlist) style['empl_name'] = Tix.DisplayStyle(Tix.TEXT, refwindow=hlist) style['empl_posn'] = Tix.DisplayStyle(Tix.TEXT, padx=8, refwindow=hlist) # Let configure the appearance of the HList subwidget # hlist.config(separator='.', width=25, drawbranch=0, indent=10) hlist.column_width(0, chars=20) # 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']) # Create the managers # 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']) for key,mgr,name,posn in employees : # "." is the separator character we chose above entrypath = '.' + mgr + '.' + key # ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ # parent entryPath / child's name hlist.add(entrypath, text=name, style=style['empl_name']) hlist.item_create(entrypath, 1, itemtype=Tix.TEXT, text = posn, style = style['empl_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 ) 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 "tixwidgets.py". # if __name__== '__main__' : root=Tix.Tk() RunSample(root) Tix8.4.3/Python/Demo/tix/samples/DirTree.py0000775000122200012240000001003007404771747020736 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: DirTree.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # 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 * 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_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 # 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('', 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): # 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 "tixwidgets.py". # if __name__== '__main__' : root=Tix.Tk() RunSample(root) Tix8.4.3/Python/Demo/tix/samples/PopMenu.py0000775000122200012240000000413007404771747020767 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: PopMenu.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates the use of the tixPopupMenu widget. # import Tix def RunSample(w): # We create the frame and the button, then we'll bind the PopupMenu # to both widgets. The result is, when you press the right mouse # button over $w.top or $w.top.but, the PopupMenu will come up. # top = Tix.Frame(w, relief=Tix.RAISED, bd=1) but = Tix.Button(top, text='Press the right mouse button over this button or its surrounding area') but.pack(expand=1, fill=Tix.BOTH, padx=50, pady=50) p = Tix.PopupMenu(top, title='Popup Test') p.bind_widget(top) p.bind_widget(but) # Set the entries inside the PopupMenu widget. # [Hint] You have to manipulate the "menu" subwidget. # $w.top.p itself is NOT a menu widget. # [Hint] Watch carefully how the sub-menu is created # p.menu.add_command(label='Desktop', underline=0) p.menu.add_command(label='Select', underline=0) p.menu.add_command(label='Find', underline=0) p.menu.add_command(label='System', underline=1) p.menu.add_command(label='Help', underline=0) m1 = Tix.Menu(p.menu) m1.add_command(label='Hello') p.menu.add_cascade(label='More', menu=m1) but.pack(side=Tix.TOP, padx=40, pady=50) box = Tix.ButtonBox(w, orientation=Tix.HORIZONTAL) box.add('ok', text='Ok', underline=0, width=6, command=lambda w=w: w.destroy()) 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) if __name__ == '__main__': root = Tix.Tk() RunSample(root) root.mainloop() Tix8.4.3/Python/Demo/tix/samples/Control.py0000775000122200012240000001006707404771747021032 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Control.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates the use of the tixControl widget -- it is an # entry widget with up/down arrow buttons. You can use the arrow buttons # to adjust the value inside the entry widget. # # 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 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'] def adjust_maker(w, inc): i = maker_list.index(demo_maker.get()) i = i + inc if i >= len(maker_list): i = 0 elif i < 0: i = len(maker_list) - 1 # In Tcl/Tix we should return the string maker_list[i]. We can't # do that in Tkinter so we set the global variable. (This works). demo_maker.set(maker_list[i]) def validate_maker(w): try: i = maker_list.index(demo_maker.get()) except ValueError: # Works here though. Why ? Beats me. return maker_list[0] # Works here though. Why ? Beats me. return maker_list[i] if __name__ == '__main__': root = Tix.Tk() RunSample(root) Tix8.4.3/Python/Demo/tix/samples/CmpImg.py0000775000122200012240000001576107404771747020574 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: CmpImg.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates the use of the compound images: it uses compound # images to display a text string together with a pixmap inside # buttons # import Tix network_pixmap = """/* XPM */ static char * netw_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 7 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #404040", "+ c blue", "@ c red", /* pixels */ " ", " .............. ", " .XXXXXXXXXXXX. ", " .XooooooooooO. ", " .Xo.......XoO. ", " .Xo.++++o+XoO. ", " .Xo.++++o+XoO. ", " .Xo.++oo++XoO. ", " .Xo.++++++XoO. ", " .Xo.+o++++XoO. ", " .Xo.++++++XoO. ", " .Xo.XXXXXXXoO. ", " .XooooooooooO. ", " .Xo@ooo....oO. ", " .............. .XooooooooooO. ", " .XXXXXXXXXXXX. .XooooooooooO. ", " .XooooooooooO. .OOOOOOOOOOOO. ", " .Xo.......XoO. .............. ", " .Xo.++++o+XoO. @ ", " .Xo.++++o+XoO. @ ", " .Xo.++oo++XoO. @ ", " .Xo.++++++XoO. @ ", " .Xo.+o++++XoO. @ ", " .Xo.++++++XoO. ..... ", " .Xo.XXXXXXXoO. .XXX. ", " .XooooooooooO.@@@@@@.X O. ", " .Xo@ooo....oO. .OOO. ", " .XooooooooooO. ..... ", " .XooooooooooO. ", " .OOOOOOOOOOOO. ", " .............. ", " "}; """ hard_disk_pixmap = """/* XPM */ static char * drivea_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 5 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #800080008000", /* pixels */ " ", " ", " ", " ", " ", " ", " ", " ", " ", " .......................... ", " .XXXXXXXXXXXXXXXXXXXXXXXo. ", " .XooooooooooooooooooooooO. ", " .Xooooooooooooooooo..oooO. ", " .Xooooooooooooooooo..oooO. ", " .XooooooooooooooooooooooO. ", " .Xoooooooo.......oooooooO. ", " .Xoo...................oO. ", " .Xoooooooo.......oooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .oOOOOOOOOOOOOOOOOOOOOOOO. ", " .......................... ", " ", " ", " ", " ", " ", " ", " ", " "}; """ network_bitmap = """ #define netw_width 32 #define netw_height 32 static unsigned char netw_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x8a, 0x51, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x4a, 0x50, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x02, 0x40, 0xfe, 0x7f, 0x52, 0x55, 0x02, 0x40, 0xaa, 0x6a, 0xfa, 0x5f, 0xfe, 0x7f, 0x0a, 0x50, 0xfe, 0x7f, 0x0a, 0x52, 0x80, 0x00, 0x0a, 0x52, 0x80, 0x00, 0x8a, 0x51, 0x80, 0x00, 0x0a, 0x50, 0x80, 0x00, 0x4a, 0x50, 0x80, 0x00, 0x0a, 0x50, 0xe0, 0x03, 0x0a, 0x50, 0x20, 0x02, 0xfa, 0xdf, 0x3f, 0x03, 0x02, 0x40, 0xa0, 0x02, 0x52, 0x55, 0xe0, 0x03, 0xaa, 0x6a, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; """ hard_disk_bitmap = """ #define drivea_width 32 #define drivea_height 32 static unsigned char drivea_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x08, 0x00, 0x00, 0x18, 0xa8, 0xaa, 0xaa, 0x1a, 0x48, 0x55, 0xd5, 0x1d, 0xa8, 0xaa, 0xaa, 0x1b, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xfa, 0xaf, 0x1a, 0xc8, 0xff, 0xff, 0x1d, 0xa8, 0xfa, 0xaf, 0x1a, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xaa, 0xaa, 0x1a, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xaa, 0xaa, 0x1a, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; """ def RunSample(w): w.img0 = Tix.Image('pixmap', data=network_pixmap) if not w.img0: w.img0 = Tix.Image('bitmap', data=network_bitmap) w.img1 = Tix.Image('pixmap', data=hard_disk_pixmap) if not w.img0: w.img1 = Tix.Image('bitmap', data=hard_disk_bitmap) hdd = Tix.Button(w, padx=4, pady=1, width=120) net = Tix.Button(w, padx=4, pady=1, width=120) # Create the first image: we create a line, then put a string, # a space and a image into this line, from left to right. # The result: we have a one-line image that consists of three # individual items # # The tk.calls should be methods in Tix ... w.hdd_img = Tix.Image('compound', window=hdd) w.hdd_img.tk.call(str(w.hdd_img), 'add', 'line') w.hdd_img.tk.call(str(w.hdd_img), 'add', 'text', '-text', 'Hard Disk', '-underline', '0') w.hdd_img.tk.call(str(w.hdd_img), 'add', 'space', '-width', '7') w.hdd_img.tk.call(str(w.hdd_img), 'add', 'image', '-image', w.img1) # Put this image into the first button # hdd['image'] = w.hdd_img # Next button w.net_img = Tix.Image('compound', window=net) w.net_img.tk.call(str(w.net_img), 'add', 'line') w.net_img.tk.call(str(w.net_img), 'add', 'text', '-text', 'Network', '-underline', '0') w.net_img.tk.call(str(w.net_img), 'add', 'space', '-width', '7') w.net_img.tk.call(str(w.net_img), 'add', 'image', '-image', w.img0) # Put this image into the first button # net['image'] = w.net_img close = Tix.Button(w, pady=1, text='Close', command=lambda w=w: w.destroy()) hdd.pack(side=Tix.LEFT, padx=10, pady=10, fill=Tix.Y, expand=1) net.pack(side=Tix.LEFT, padx=10, pady=10, fill=Tix.Y, expand=1) close.pack(side=Tix.LEFT, padx=10, pady=10, fill=Tix.Y, expand=1) if __name__ == '__main__': root = Tix.Tk() RunSample(root) root.mainloop() Tix8.4.3/Python/Demo/tix/samples/PanedWin.py0000775000122200012240000000745407404771747021125 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: PanedWin.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates the use of the tixPanedWindow widget. This program # is a dummy news reader: the user can adjust the sizes of the list # of artical names and the size of the text widget that shows the body # of the article. import Tix TCL_ALL_EVENTS = 0 def RunSample (root): panedwin = DemoPanedwin(root) panedwin.mainloop() panedwin.destroy() class DemoPanedwin: 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()) group = Tix.LabelEntry(w, label='Newsgroup:', options='entry.width 25') group.entry.insert(0,'comp.lang.python') pane = Tix.PanedWindow(w, orientation='vertical') p1 = pane.add('list', min=70, size=100) p2 = pane.add('text', min=70) list = Tix.ScrolledListBox(p1) list.listbox['width'] = 80 list.listbox['height'] = 5 text = Tix.ScrolledText(p2) text.text['width'] = 80 text.text['height'] = 20 list.listbox.insert(Tix.END, " 12324 Re: Tkinter is good for your health") list.listbox.insert(Tix.END, "+ 12325 Re: Tkinter is good for your health") list.listbox.insert(Tix.END, "+ 12326 Re: Tix is even better for your health (Was: Tkinter is good...)") list.listbox.insert(Tix.END, " 12327 Re: Tix is even better for your health (Was: Tkinter is good...)") list.listbox.insert(Tix.END, "+ 12328 Re: Tix is even better for your health (Was: Tkinter is good...)") list.listbox.insert(Tix.END, " 12329 Re: Tix is even better for your health (Was: Tkinter is good...)") list.listbox.insert(Tix.END, "+ 12330 Re: Tix is even better for your health (Was: Tkinter is good...)") text.text['bg'] = list.listbox['bg'] text.text['wrap'] = 'none' text.text.insert(Tix.END, """ Mon, 19 Jun 1995 11:39:52 comp.lang.python Thread 34 of 220 Lines 353 A new way to put text and bitmaps together iNo responses ioi@blue.seas.upenn.edu Ioi K. Lam at University of Pennsylvania Hi, I have implemented a new image type called "compound". It allows you to glue together a bunch of bitmaps, images and text strings together to form a bigger image. Then you can use this image with widgets that support the -image option. For example, you can display a text string string together with a bitmap, at the same time, inside a TK button widget. """) text.text['state'] = 'disabled' list.pack(expand=1, fill=Tix.BOTH, padx=4, pady=6) text.pack(expand=1, fill=Tix.BOTH, padx=4, pady=6) group.pack(side=Tix.TOP, padx=3, pady=3, fill=Tix.BOTH) pane.pack(side=Tix.TOP, padx=3, pady=3, fill=Tix.BOTH, expand=1) box = Tix.ButtonBox(w, orientation=Tix.HORIZONTAL) box.add('ok', text='Ok', underline=0, width=6, command=self.quitcmd) box.add('cancel', text='Cancel', underline=0, width=6, command=self.quitcmd) box.pack(side=Tix.BOTTOM, fill=Tix.X) 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() if __name__ == '__main__': root = Tix.Tk() RunSample(root) Tix8.4.3/Python/Demo/tix/samples/ComboBox.py0000775000122200012240000000654107404771747021124 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: ComboBox.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates the use of the tixComboBox widget, which is close # to the MS Window Combo Box control. # import Tix def RunSample(w): global demo_month, demo_year top = Tix.Frame(w, bd=1, relief=Tix.RAISED) demo_month = Tix.StringVar() demo_year = Tix.StringVar() # $w.top.a is a drop-down combo box. It is not editable -- who wants # to invent new months? # # [Hint] The -options switch sets the options of the subwidgets. # [Hint] We set the label.width subwidget option of both comboboxes to # be 10 so that their labels appear to be aligned. # a = Tix.ComboBox(top, label="Month: ", dropdown=1, command=select_month, editable=0, variable=demo_month, options='listbox.height 6 label.width 10 label.anchor e') # $w.top.b is a non-drop-down combo box. It is not editable: we provide # four choices for the user, but he can enter an alternative year if he # wants to. # # [Hint] Use the padY and anchor options of the label subwidget to # align the label with the entry subwidget. # [Hint] Notice that you should use padY (the NAME of the option) and not # pady (the SWITCH of the option). # b = Tix.ComboBox(top, label="Year: ", dropdown=0, command=select_year, editable=1, variable=demo_year, options='listbox.height 4 label.padY 5 label.width 10 label.anchor ne') a.pack(side=Tix.TOP, anchor=Tix.W) b.pack(side=Tix.TOP, anchor=Tix.W) a.insert(Tix.END, 'January') a.insert(Tix.END, 'February') a.insert(Tix.END, 'March') a.insert(Tix.END, 'April') a.insert(Tix.END, 'May') a.insert(Tix.END, 'June') a.insert(Tix.END, 'July') a.insert(Tix.END, 'August') a.insert(Tix.END, 'September') a.insert(Tix.END, 'October') a.insert(Tix.END, 'November') a.insert(Tix.END, 'December') b.insert(Tix.END, '1992') b.insert(Tix.END, '1993') b.insert(Tix.END, '1994') b.insert(Tix.END, '1995') b.insert(Tix.END, '1996') # Use "tixSetSilent" to set the values of the combo box if you # don't want your -command procedures (cbx:select_month and # cbx:select_year) to be called. # a.set_silent('January') b.set_silent('1995') 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) def select_month(event=None): # tixDemo:Status "Month = %s" % demo_month.get() pass def select_year(event=None): # tixDemo:Status "Year = %s" % demo_year.get() pass def ok_command(w): # tixDemo:Status "Month = %s, Year= %s" % (demo_month.get(), demo_year.get()) w.destroy() if __name__ == '__main__': root = Tix.Tk() RunSample(root) root.mainloop() Tix8.4.3/Python/Demo/tix/samples/NoteBook.py0000775000122200012240000000761707404771747021141 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: NoteBook.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates the use of the tixNoteBook widget, which allows # you to lay out your interface using a "notebook" metaphore # import Tix def RunSample(w): global root root = w # We use these options to set the sizes of the subwidgets inside the # notebook, so that they are well-aligned on the screen. prefix = Tix.OptionName(w) if prefix: prefix = '*'+prefix else: prefix = '' w.option_add(prefix+'*TixControl*entry.width', 10) w.option_add(prefix+'*TixControl*label.width', 18) w.option_add(prefix+'*TixControl*label.anchor', Tix.E) w.option_add(prefix+'*TixNoteBook*tagPadX', 8) # Create the notebook widget and set its backpagecolor to gray. # Note that the -backpagecolor option belongs to the "nbframe" # subwidget. nb = Tix.NoteBook(w, name='nb', ipadx=6, ipady=6) nb['bg'] = 'gray' nb.nbframe['backpagecolor'] = 'gray' # Create the two tabs on the notebook. The -underline option # puts a underline on the first character of the labels of the tabs. # Keyboard accelerators will be defined automatically according # to the underlined character. nb.add('hard_disk', label="Hard Disk", underline=0) nb.add('network', label="Network", underline=0) nb.pack(expand=1, fill=Tix.BOTH, padx=5, pady=5 ,side=Tix.TOP) #---------------------------------------- # Create the first page #---------------------------------------- # Create two frames: one for the common buttons, one for the # other widgets # tab=nb.hard_disk f = Tix.Frame(tab) common = Tix.Frame(tab) f.pack(side=Tix.LEFT, padx=2, pady=2, fill=Tix.BOTH, expand=1) common.pack(side=Tix.RIGHT, padx=2, fill=Tix.Y) a = Tix.Control(f, value=12, label='Access time: ') w = Tix.Control(f, value=400, label='Write Throughput: ') r = Tix.Control(f, value=400, label='Read Throughput: ') c = Tix.Control(f, value=1021, label='Capacity: ') a.pack(side=Tix.TOP, padx=20, pady=2) w.pack(side=Tix.TOP, padx=20, pady=2) r.pack(side=Tix.TOP, padx=20, pady=2) c.pack(side=Tix.TOP, padx=20, pady=2) # Create the common buttons createCommonButtons(common) #---------------------------------------- # Create the second page #---------------------------------------- tab = nb.network f = Tix.Frame(tab) common = Tix.Frame(tab) f.pack(side=Tix.LEFT, padx=2, pady=2, fill=Tix.BOTH, expand=1) common.pack(side=Tix.RIGHT, padx=2, fill=Tix.Y) a = Tix.Control(f, value=12, label='Access time: ') w = Tix.Control(f, value=400, label='Write Throughput: ') r = Tix.Control(f, value=400, label='Read Throughput: ') c = Tix.Control(f, value=1021, label='Capacity: ') u = Tix.Control(f, value=10, label='Users: ') a.pack(side=Tix.TOP, padx=20, pady=2) w.pack(side=Tix.TOP, padx=20, pady=2) r.pack(side=Tix.TOP, padx=20, pady=2) c.pack(side=Tix.TOP, padx=20, pady=2) u.pack(side=Tix.TOP, padx=20, pady=2) createCommonButtons(common) def doDestroy(): global root root.destroy() def createCommonButtons(master): ok = Tix.Button(master, name='ok', text='OK', width=6, command=doDestroy) cancel = Tix.Button(master, name='cancel', text='Cancel', width=6, command=doDestroy) ok.pack(side=Tix.TOP, padx=2, pady=2) cancel.pack(side=Tix.TOP, padx=2, pady=2) if __name__ == '__main__': root = Tix.Tk() RunSample(root) root.mainloop() Tix8.4.3/Python/Demo/tix/samples/DirList.py0000775000122200012240000001104207404771747020756 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: DirList.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # 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_ALL_EVENTS = 0 def RunSample (root): 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_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 # 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('', 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.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 "tixwidgets.py". # 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) Tix8.4.3/Python/Demo/tix/samples/Balloon.py0000775000122200012240000000440407404771747020776 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Balloon.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates the use of the tixBalloon widget, which provides # a interesting way to give help tips about elements in your user interface. # Your can display the help message in a "balloon" and a status bar widget. # import Tix 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=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) 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) Tix8.4.3/Python/Demo/tix/samples/Tree.py0000775000122200012240000000526407404771747020314 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Tree.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates how to use the TixTree widget to display # dynamic hierachical data (the files in the Unix file system) # import Tix, os def RunSample(w): top = Tix.Frame(w, relief=Tix.RAISED, bd=1) tree = Tix.Tree(top, options='separator "/"') tree.pack(expand=1, fill=Tix.BOTH, padx=10, pady=10, side=Tix.LEFT) tree['opencmd'] = lambda dir=None, w=tree: opendir(w, dir) # The / directory is added in the "open" mode. The user can open it # and then browse its subdirectories ... adddir(tree, "/") box = Tix.ButtonBox(w, orientation=Tix.HORIZONTAL) box.add('ok', text='Ok', underline=0, command=w.destroy, width=6) box.add('cancel', text='Cancel', underline=0, command=w.destroy, width=6) box.pack(side=Tix.BOTTOM, fill=Tix.X) top.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1) def adddir(tree, dir): if dir == '/': text = '/' else: text = os.path.basename(dir) tree.hlist.add(dir, itemtype=Tix.IMAGETEXT, text=text, image=tree.tk.call('tix', 'getimage', 'folder')) try: os.listdir(dir) tree.setmode(dir, 'open') except os.error: # No read permission ? pass # This function is called whenever the user presses the (+) indicator or # double clicks on a directory whose mode is "open". It loads the files # inside that directory into the Tree widget. # # Note we didn't specify the closecmd option for the Tree widget, so it # performs the default action when the user presses the (-) indicator or # double clicks on a directory whose mode is "close": hide all of its child # entries def opendir(tree, dir): entries = tree.hlist.info_children(dir) if entries: # We have already loaded this directory. Let's just # show all the child entries # # Note: since we load the directory only once, it will not be # refreshed if the you add or remove files from this # directory. # for entry in entries: tree.hlist.show_entry(entry) files = os.listdir(dir) for file in files: if os.path.isdir(dir + '/' + file): adddir(tree, dir + '/' + file) else: tree.hlist.add(dir + '/' + file, itemtype=Tix.IMAGETEXT, text=file, image=tree.tk.call('tix', 'getimage', 'file')) if __name__ == '__main__': root = Tix.Tk() RunSample(root) root.mainloop() Tix8.4.3/Python/Demo/tix/samples/BtnBox.py0000775000122200012240000000306707404771747020610 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: BtnBox.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates the use of the tixButtonBox widget, which is a # group of TK buttons. You can use it to manage the buttons in a dialog box, # for example. # import Tix def RunSample(w): # Create the label on the top of the dialog box # top = Tix.Label(w, padx=20, pady=10, bd=1, relief=Tix.RAISED, anchor=Tix.CENTER, text='This dialog box is\n a demonstration of the\n tixButtonBox widget') # Create the button box and add a few buttons in it. Set the # -width of all the buttons to the same value so that they # appear in the same size. # # Note that the -text, -underline, -command and -width options are all # standard options of the button widgets. # box = Tix.ButtonBox(w, orientation=Tix.HORIZONTAL) box.add('ok', text='OK', underline=0, width=5, command=lambda w=w: w.destroy()) box.add('close', text='Cancel', underline=0, width=5, command=lambda w=w: w.destroy()) box.pack(side=Tix.BOTTOM, fill=Tix.X) top.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1) if __name__ == '__main__': root = Tix.Tk() RunSample(root) root.mainloop() Tix8.4.3/Python/Demo/tix/samples/OptMenu.py0000775000122200012240000000451407404771747021001 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: OptMenu.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # 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. # This file demonstrates the use of the tixOptionMenu widget -- you can # use it for the user to choose from a fixed set of options # import Tix options = {'text':'Plain Text', 'post':'PostScript', 'html':'HTML', 'tex':'LaTeX', 'rtf':'Rich Text Format'} def RunSample(w): global demo_opt_from, demo_opt_to demo_opt_from = Tix.StringVar() demo_opt_to = Tix.StringVar() top = Tix.Frame(w, bd=1, relief=Tix.RAISED) from_file = Tix.OptionMenu(top, label="From File Format : ", variable=demo_opt_from, options = 'label.width 19 label.anchor e menubutton.width 15') to_file = Tix.OptionMenu(top, label="To File Format : ", variable=demo_opt_to, options='label.width 19 label.anchor e menubutton.width 15') # Add the available options to the two OptionMenu widgets # # [Hint] You have to add the options first before you set the # global variables "demo_opt_from" and "demo_opt_to". Otherwise # the OptionMenu widget will complain about "unknown options"! # for opt in options.keys(): from_file.add_command(opt, label=options[opt]) to_file.add_command(opt, label=options[opt]) demo_opt_from.set('html') demo_opt_to.set('post') from_file.pack(side=Tix.TOP, anchor=Tix.W, pady=3, padx=6) to_file.pack(side=Tix.TOP, anchor=Tix.W, pady=3, padx=6) 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) def ok_command(w): # tixDemo:Status "Convert file from %s to %s" % ( demo_opt_from.get(), demo_opt_to.get()) w.destroy() if __name__ == '__main__': root = Tix.Tk() RunSample(root) root.mainloop() Tix8.4.3/Python/Demo/tix/BUGS.txt0000775000122200012240000000057307404771747016676 0ustar jeffhjeffh00000000000000$Id: BUGS.txt,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ 1) There seems to be a problem with ComboBox that shows up in the ExFileSelectBox demo. The popdown scrolled list widget is being created, then destroyed. This does not happen in Tcl Tix. This is probably a sympton in Tix from _tkinter; if you find the cause of this, please post a patch on http://tix.sourceforge.net. Tix8.4.3/Python/Demo/tix/tixwidgets.py0000775000122200012240000011070307404771747020137 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: tixwidgets.py,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ # # tixwidgets.py -- # # For Tix, see http://tix.sourceforge.net # # This is a demo program of all Tix widgets available from Python. If # you have installed Python & Tix properly, you can execute this as # # % python tixwidgets.py # import os, os.path, sys, Tix 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 class Demo: def __init__(self, top): self.root = top self.exit = -1 self.dir = None # script directory self.balloon = None # balloon widget self.useBalloons = Tix.StringVar() self.useBalloons.set('0') self.statusbar = None # status bar widget self.welmsg = None # Msg widget self.welfont = '' # font name self.welsize = '' # font size progname = sys.argv[0] dirname = os.path.dirname(progname) if dirname and dirname != os.curdir: self.dir = dirname index = -1 for i in range(len(sys.path)): p = sys.path[i] if p in ("", os.curdir): index = i if index >= 0: sys.path[index] = dirname else: sys.path.insert(0, dirname) else: self.dir = os.getcwd() sys.path.insert(0, self.dir+'/samples') def MkMainMenu(self): top = self.root w = Tix.Frame(top, bd=2, relief=RAISED) file = Tix.Menubutton(w, text='File', underline=0, takefocus=0) help = Tix.Menubutton(w, text='Help', underline=0, takefocus=0) file.pack(side=LEFT) help.pack(side=RIGHT) fm = Tix.Menu(file, tearoff=0) file['menu'] = fm hm = Tix.Menu(help, tearoff=0) help['menu'] = hm if w.tk.eval ('info commands console') == "console": fm.add_command(label='Console', underline=1, command=lambda w=w: w.tk.eval('console show')) fm.add_command(label='Exit', underline=1, command = lambda self=self: self.quitcmd () ) hm.add_checkbutton(label='BalloonHelp', underline=0, command=ToggleHelp, variable=self.useBalloons) # The trace variable option doesn't seem to work, instead I use 'command' #apply(w.tk.call, ('trace', 'variable', self.useBalloons, 'w', # ToggleHelp)) return w def MkMainNotebook(self): top = self.root w = Tix.NoteBook(top, ipadx=5, ipady=5, options=""" *TixNoteBook*tagPadX 6 *TixNoteBook*tagPadY 4 *TixNoteBook*borderWidth 2 """) # This may be required if there is no *Background option top['bg'] = w['bg'] w.add('wel', label='Welcome', underline=0, createcmd=lambda w=w, name='wel': MkWelcome(w, name)) w.add('cho', label='Choosers', underline=0, createcmd=lambda w=w, name='cho': MkChoosers(w, name)) w.add('scr', label='Scrolled Widgets', underline=0, createcmd=lambda w=w, name='scr': MkScroll(w, name)) w.add('mgr', label='Manager Widgets', underline=0, createcmd=lambda w=w, name='mgr': MkManager(w, name)) w.add('dir', label='Directory List', underline=0, createcmd=lambda w=w, name='dir': MkDirList(w, name)) w.add('exp', label='Run Sample Programs', underline=0, createcmd=lambda w=w, name='exp': MkSample(w, name)) return w def MkMainStatus(self): global demo top = self.root w = Tix.Frame(top, relief=Tix.RAISED, bd=1) demo.statusbar = Tix.Label(w, relief=Tix.SUNKEN, bd=1) demo.statusbar.form(padx=3, pady=3, left=0, right='%70') return w def build(self): root = self.root z = root.winfo_toplevel() z.wm_title('Tix Widget Demonstration') z.geometry('790x590+10+10') demo.balloon = Tix.Balloon(root) frame1 = self.MkMainMenu() frame2 = self.MkMainNotebook() frame3 = self.MkMainStatus() frame1.pack(side=TOP, fill=X) frame3.pack(side=BOTTOM, fill=X) frame2.pack(side=TOP, expand=1, fill=BOTH, padx=4, pady=4) demo.balloon['statusbar'] = demo.statusbar z.wm_protocol("WM_DELETE_WINDOW", lambda self=self: self.quitcmd()) def quitcmd (self): """Quit our mainloop. It is up to you to call root.destroy() after.""" self.exit = 0 def loop(self): import tkMessageBox, traceback while self.exit < 0: try: while self.exit < 0: self.root.tk.dooneevent(TCL_ALL_EVENTS) except SystemExit: #print 'Exit' self.exit = 1 break except KeyboardInterrupt: if tkMessageBox.askquestion ('Interrupt', 'Really Quit?') == 'yes': # self.tk.eval('exit') return else: pass continue except: t, v, tb = sys.exc_info() text = "" for line in traceback.format_exception(t,v,tb): text += line + '\n' try: tkMessageBox.showerror ('Error', text) except: pass self.exit = 1 raise SystemExit, 1 def destroy (self): self.root.destroy() def RunMain(root): global demo demo = Demo(root) demo.build() demo.loop() demo.destroy() # Tabs def MkWelcome(nb, name): w = nb.page(name) bar = MkWelcomeBar(w) text = MkWelcomeText(w) bar.pack(side=TOP, fill=X, padx=2, pady=2) text.pack(side=TOP, fill=BOTH, expand=1) def MkWelcomeBar(top): global demo w = Tix.Frame(top, bd=2, relief=Tix.GROOVE) b1 = Tix.ComboBox(w, command=lambda w=top: MainTextFont(w)) b2 = Tix.ComboBox(w, command=lambda w=top: MainTextFont(w)) b1.entry['width'] = 15 b1.slistbox.listbox['height'] = 3 b2.entry['width'] = 4 b2.slistbox.listbox['height'] = 3 demo.welfont = b1 demo.welsize = b2 b1.insert(Tix.END, 'Courier') b1.insert(Tix.END, 'Helvetica') b1.insert(Tix.END, 'Lucida') b1.insert(Tix.END, 'Times Roman') b2.insert(Tix.END, '8') b2.insert(Tix.END, '10') b2.insert(Tix.END, '12') b2.insert(Tix.END, '14') b2.insert(Tix.END, '18') b1.pick(1) b2.pick(3) b1.pack(side=Tix.LEFT, padx=4, pady=4) b2.pack(side=Tix.LEFT, padx=4, pady=4) demo.balloon.bind_widget(b1, msg='Choose\na font', statusmsg='Choose a font for this page') demo.balloon.bind_widget(b2, msg='Point size', statusmsg='Choose the font size for this page') return w def MkWelcomeText(top): global demo w = Tix.ScrolledWindow(top, scrollbar='auto') win = w.window text = 'Welcome to TIX in Python' title = Tix.Label(win, bd=0, width=30, anchor=Tix.N, text=text) msg = Tix.Message(win, bd=0, width=400, anchor=Tix.N, text='Tix is a set of mega-widgets based on TK. This program \ demonstrates the widgets in the Tix widget set. You can choose the pages \ in this window to look at the corresponding widgets. \n\n\ To quit this program, choose the "File | Exit" command.\n\n\ For more information, see http://tix.sourceforge.net.') title.pack(expand=1, fill=Tix.BOTH, padx=10, pady=10) msg.pack(expand=1, fill=Tix.BOTH, padx=10, pady=10) demo.welmsg = msg return w def MainTextFont(w): global demo if not demo.welmsg: return font = demo.welfont['value'] point = demo.welsize['value'] if font == 'Times Roman': font = 'times' fontstr = '%s %s' % (font, point) demo.welmsg['font'] = fontstr def ToggleHelp(): if demo.useBalloons.get() == '1': demo.balloon['state'] = 'both' else: demo.balloon['state'] = 'none' def MkChoosers(nb, name): w = nb.page(name) prefix = Tix.OptionName(w) if not prefix: prefix = '' w.option_add('*' + prefix + '*TixLabelFrame*label.padX', 4) til = Tix.LabelFrame(w, label='Chooser Widgets') cbx = Tix.LabelFrame(w, label='tixComboBox') ctl = Tix.LabelFrame(w, label='tixControl') sel = Tix.LabelFrame(w, label='tixSelect') opt = Tix.LabelFrame(w, label='tixOptionMenu') fil = Tix.LabelFrame(w, label='tixFileEntry') fbx = Tix.LabelFrame(w, label='tixFileSelectBox') tbr = Tix.LabelFrame(w, label='Tool Bar') MkTitle(til.frame) MkCombo(cbx.frame) MkControl(ctl.frame) MkSelect(sel.frame) MkOptMenu(opt.frame) MkFileEnt(fil.frame) MkFileBox(fbx.frame) MkToolBar(tbr.frame) # First column: comBox and selector cbx.form(top=0, left=0, right='%33') sel.form(left=0, right='&'+str(cbx), top=cbx) opt.form(left=0, right='&'+str(cbx), top=sel, bottom=-1) # Second column: title .. etc til.form(left=cbx, top=0,right='%66') ctl.form(left=cbx, right='&'+str(til), top=til) fil.form(left=cbx, right='&'+str(til), top=ctl) tbr.form(left=cbx, right='&'+str(til), top=fil, bottom=-1) # # Third column: file selection fbx.form(right=-1, top=0, left='%66') def MkCombo(w): prefix = Tix.OptionName(w) if not prefix: prefix = '' w.option_add('*' + prefix + '*TixComboBox*label.width', 10) w.option_add('*' + prefix + '*TixComboBox*label.anchor', Tix.E) w.option_add('*' + prefix + '*TixComboBox*entry.width', 14) static = Tix.ComboBox(w, label='Static', editable=0) editable = Tix.ComboBox(w, label='Editable', editable=1) history = Tix.ComboBox(w, label='History', editable=1, history=1, anchor=Tix.E) static.insert(Tix.END, 'January') static.insert(Tix.END, 'February') static.insert(Tix.END, 'March') static.insert(Tix.END, 'April') static.insert(Tix.END, 'May') static.insert(Tix.END, 'June') static.insert(Tix.END, 'July') static.insert(Tix.END, 'August') static.insert(Tix.END, 'September') static.insert(Tix.END, 'October') static.insert(Tix.END, 'November') static.insert(Tix.END, 'December') editable.insert(Tix.END, 'Angola') editable.insert(Tix.END, 'Bangladesh') editable.insert(Tix.END, 'China') editable.insert(Tix.END, 'Denmark') editable.insert(Tix.END, 'Ecuador') history.insert(Tix.END, '/usr/bin/ksh') history.insert(Tix.END, '/usr/local/lib/python') history.insert(Tix.END, '/var/adm') static.pack(side=Tix.TOP, padx=5, pady=3) editable.pack(side=Tix.TOP, padx=5, pady=3) history.pack(side=Tix.TOP, padx=5, pady=3) states = ['Bengal', 'Delhi', 'Karnataka', 'Tamil Nadu'] def spin_cmd(w, inc): idx = states.index(demo_spintxt.get()) + inc if idx < 0: idx = len(states) - 1 elif idx >= len(states): idx = 0 # following doesn't work. # return states[idx] demo_spintxt.set(states[idx]) # this works def spin_validate(w): global states, demo_spintxt try: i = states.index(demo_spintxt.get()) except ValueError: return states[0] return states[i] # why this procedure works as opposed to the previous one beats me. def MkControl(w): global demo_spintxt prefix = Tix.OptionName(w) if not prefix: prefix = '' w.option_add('*' + prefix + '*TixControl*label.width', 10) w.option_add('*' + prefix + '*TixControl*label.anchor', Tix.E) w.option_add('*' + prefix + '*TixControl*entry.width', 13) demo_spintxt = Tix.StringVar() demo_spintxt.set(states[0]) simple = Tix.Control(w, label='Numbers') spintxt = Tix.Control(w, label='States', variable=demo_spintxt) spintxt['incrcmd'] = lambda w=spintxt: spin_cmd(w, 1) spintxt['decrcmd'] = lambda w=spintxt: spin_cmd(w, -1) spintxt['validatecmd'] = lambda w=spintxt: spin_validate(w) simple.pack(side=Tix.TOP, padx=5, pady=3) spintxt.pack(side=Tix.TOP, padx=5, pady=3) def MkSelect(w): prefix = Tix.OptionName(w) if not prefix: prefix = '' w.option_add('*' + prefix + '*TixSelect*label.anchor', Tix.CENTER) w.option_add('*' + prefix + '*TixSelect*orientation', Tix.VERTICAL) w.option_add('*' + prefix + '*TixSelect*labelSide', Tix.TOP) sel1 = Tix.Select(w, label='Mere Mortals', allowzero=1, radio=1) sel2 = Tix.Select(w, label='Geeks', allowzero=1, radio=0) sel1.add('eat', text='Eat') sel1.add('work', text='Work') sel1.add('play', text='Play') sel1.add('party', text='Party') sel1.add('sleep', text='Sleep') sel2.add('eat', text='Eat') sel2.add('prog1', text='Program') sel2.add('prog2', text='Program') sel2.add('prog3', text='Program') sel2.add('sleep', text='Sleep') sel1.pack(side=Tix.LEFT, padx=5, pady=3, fill=Tix.X) sel2.pack(side=Tix.LEFT, padx=5, pady=3, fill=Tix.X) def MkOptMenu(w): prefix = Tix.OptionName(w) if not prefix: prefix = '' w.option_add('*' + prefix + '*TixOptionMenu*label.anchor', Tix.E) m = Tix.OptionMenu(w, label='File Format : ', options='menubutton.width 15') m.add_command('text', label='Plain Text') m.add_command('post', label='PostScript') m.add_command('format', label='Formatted Text') m.add_command('html', label='HTML') m.add_command('sep') m.add_command('tex', label='LaTeX') m.add_command('rtf', label='Rich Text Format') m.pack(fill=Tix.X, padx=5, pady=3) def MkFileEnt(w): msg = Tix.Message(w, relief=Tix.FLAT, width=240, anchor=Tix.N, text='Press the "open file" icon button and a TixFileSelectDialog will popup.') ent = Tix.FileEntry(w, label='Select a file : ') msg.pack(side=Tix.TOP, expand=1, fill=Tix.BOTH, padx=3, pady=3) 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 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) def MkToolBar(w): """The Select widget is also good for arranging buttons in a tool bar. """ global demo prefix = Tix.OptionName(w) if not prefix: prefix = '' w.option_add('*' + prefix + '*TixSelect*frame.borderWidth', 1) msg = Tix.Message(w, relief=Tix.FLAT, width=240, anchor=Tix.N, text='The Select widget is also good for arranging buttons in a tool bar.') bar = Tix.Frame(w, bd=2, relief=Tix.RAISED) font = Tix.Select(w, allowzero=1, radio=0, label='') para = Tix.Select(w, allowzero=0, radio=1, label='') font.add('bold', bitmap='@' + demo.dir + '/bitmaps/bold.xbm') font.add('italic', bitmap='@' + demo.dir + '/bitmaps/italic.xbm') font.add('underline', bitmap='@' + demo.dir + '/bitmaps/underline.xbm') font.add('capital', bitmap='@' + demo.dir + '/bitmaps/capital.xbm') para.add('left', bitmap='@' + demo.dir + '/bitmaps/leftj.xbm') para.add('right', bitmap='@' + demo.dir + '/bitmaps/rightj.xbm') para.add('center', bitmap='@' + demo.dir + '/bitmaps/centerj.xbm') para.add('justify', bitmap='@' + demo.dir + '/bitmaps/justify.xbm') msg.pack(side=Tix.TOP, expand=1, fill=Tix.BOTH, padx=3, pady=3) bar.pack(side=Tix.TOP, fill=Tix.X, padx=3, pady=3) font.pack({'in':bar}, side=Tix.LEFT, padx=3, pady=3) para.pack({'in':bar}, side=Tix.LEFT, padx=3, pady=3) def MkTitle(w): prefix = Tix.OptionName(w) if not prefix: prefix = '' w.option_add('*' + prefix + '*TixSelect*frame.borderWidth', 1) msg = Tix.Message(w, relief=Tix.FLAT, width=240, anchor=Tix.N, text='There are many types of "chooser" widgets that allow the user to input different types of information') msg.pack(side=Tix.TOP, expand=1, fill=Tix.BOTH, padx=3, pady=3) def MkScroll(nb, name): w = nb.page(name) prefix = Tix.OptionName(w) if not prefix: prefix = '' w.option_add('*' + prefix + '*TixLabelFrame*label.padX', 4) sls = Tix.LabelFrame(w, label='tixScrolledListBox') swn = Tix.LabelFrame(w, label='tixScrolledWindow') stx = Tix.LabelFrame(w, label='tixScrolledText') MkSList(sls.frame) MkSWindow(swn.frame) MkSText(stx.frame) sls.form(top=0, left=0, right='%33', bottom=-1) swn.form(top=0, left=sls, right='%66', bottom=-1) stx.form(top=0, left=swn, right=-1, bottom=-1) def MkSList(w): """This TixScrolledListBox is configured so that it uses scrollbars only when it is necessary. Use the handles to resize the listbox and watch the scrollbars automatically appear and disappear. """ top = Tix.Frame(w, width=300, height=330) bot = Tix.Frame(w) msg = Tix.Message(top, relief=Tix.FLAT, width=200, anchor=Tix.N, text='This TixScrolledListBox is configured so that it uses scrollbars only when it is necessary. Use the handles to resize the listbox and watch the scrollbars automatically appear and disappear.') list = Tix.ScrolledListBox(top, scrollbar='auto') list.place(x=50, y=150, width=120, height=80) list.listbox.insert(Tix.END, 'Alabama') list.listbox.insert(Tix.END, 'California') list.listbox.insert(Tix.END, 'Montana') list.listbox.insert(Tix.END, 'New Jersey') list.listbox.insert(Tix.END, 'New York') list.listbox.insert(Tix.END, 'Pennsylvania') list.listbox.insert(Tix.END, 'Washington') rh = Tix.ResizeHandle(top, bg='black', relief=Tix.RAISED, handlesize=8, gridded=1, minwidth=50, minheight=30) btn = Tix.Button(bot, text='Reset', command=lambda w=rh, x=list: SList_reset(w,x)) top.propagate(0) msg.pack(fill=Tix.X) btn.pack(anchor=Tix.CENTER) top.pack(expand=1, fill=Tix.BOTH) bot.pack(fill=Tix.BOTH) list.bind('', func=lambda arg=0, rh=rh, list=list: list.tk.call('tixDoWhenIdle', str(rh), 'attachwidget', str(list))) def SList_reset(rh, list): list.place(x=50, y=150, width=120, height=80) list.update() rh.attach_widget(list) def MkSWindow(w): """The ScrolledWindow widget allows you to scroll any kind of Tk widget. It is more versatile than a scrolled canvas widget. """ global demo text = 'The Tix ScrolledWindow widget allows you to scroll any kind of Tk widget. It is more versatile than a scrolled canvas widget.' file = os.path.join(demo.dir, 'bitmaps', 'tix.gif') if not os.path.isfile(file): text += ' (Image missing)' top = Tix.Frame(w, width=330, height=330) bot = Tix.Frame(w) msg = Tix.Message(top, relief=Tix.FLAT, width=200, anchor=Tix.N, text=text) win = Tix.ScrolledWindow(top, scrollbar='auto') if 0: global image1 # This image is not showing up in the Label unless it is set to a # global variable - no problem under Tcl/Tix. I assume it is being # garbage collected somehow, even though the Tcl command 'image names' # shows that as far as Tcl is concerned, the image exists and is # called pyimage1. What I find curious is that this if 0: branch # works only if image1 is global, *even though I give Label a string*. image1 = Tix.Image('photo', file=file) else: # No need for image1 to be global if I do it in pure Tcl. # When I do it in pure Tcl the image shows up in the Label. # The tcl command 'image names' shows as far as Tcl is concerned, # the image exists and is called image1. So I assume the problem # lies Tkinter.py Image.__init__, where the image gets the name # pyimage1, instead of what Tcl would have called it - image1. image1 = win.tk.eval('image create photo -file {%s}' % file) lbl = Tix.Label(win.window, image='%s' % image1) lbl.pack(expand=1, fill=Tix.BOTH) win.place(x=30, y=150, width=190, height=120) rh = Tix.ResizeHandle(top, bg='black', relief=Tix.RAISED, handlesize=8, gridded=1, minwidth=50, minheight=30) btn = Tix.Button(bot, text='Reset', command=lambda w=rh, x=win: SWindow_reset(w,x)) top.propagate(0) msg.pack(fill=Tix.X) btn.pack(anchor=Tix.CENTER) top.pack(expand=1, fill=Tix.BOTH) bot.pack(fill=Tix.BOTH) win.bind('', func=lambda arg=0, rh=rh, win=win: win.tk.call('tixDoWhenIdle', str(rh), 'attachwidget', str(win))) def SWindow_reset(rh, win): win.place(x=30, y=150, width=190, height=120) win.update() rh.attach_widget(win) def MkSText(w): """The TixScrolledWindow widget allows you to scroll any kind of Tk widget. It is more versatile than a scrolled canvas widget.""" top = Tix.Frame(w, width=330, height=330) bot = Tix.Frame(w) msg = Tix.Message(top, relief=Tix.FLAT, width=200, anchor=Tix.N, text='The TixScrolledWindow widget allows you to scroll any kind of Tk widget. It is more versatile than a scrolled canvas widget.') win = Tix.ScrolledText(top, scrollbar='auto') # win.text['wrap'] = 'none' win.text.insert(Tix.END, 'This is a text widget embedded in a scrolled window. Although the original Tix demo does not have any text here, I decided to put in some so that you can see the effect of scrollbars etc.') win.place(x=30, y=150, width=190, height=100) rh = Tix.ResizeHandle(top, bg='black', relief=Tix.RAISED, handlesize=8, gridded=1, minwidth=50, minheight=30) btn = Tix.Button(bot, text='Reset', command=lambda w=rh, x=win: SText_reset(w,x)) top.propagate(0) msg.pack(fill=Tix.X) btn.pack(anchor=Tix.CENTER) top.pack(expand=1, fill=Tix.BOTH) bot.pack(fill=Tix.BOTH) win.bind('', func=lambda arg=0, rh=rh, win=win: win.tk.call('tixDoWhenIdle', str(rh), 'attachwidget', str(win))) def SText_reset(rh, win): win.place(x=30, y=150, width=190, height=120) win.update() rh.attach_widget(win) def MkManager(nb, name): w = nb.page(name) prefix = Tix.OptionName(w) if not prefix: prefix = '' w.option_add('*' + prefix + '*TixLabelFrame*label.padX', 4) pane = Tix.LabelFrame(w, label='tixPanedWindow') note = Tix.LabelFrame(w, label='tixNoteBook') MkPanedWindow(pane.frame) MkNoteBook(note.frame) pane.form(top=0, left=0, right=note, bottom=-1) note.form(top=0, right=-1, bottom=-1) def MkPanedWindow(w): """The PanedWindow widget allows the user to interactively manipulate the sizes of several panes. The panes can be arranged either vertically or horizontally. """ msg = Tix.Message(w, relief=Tix.FLAT, width=240, anchor=Tix.N, text='The PanedWindow widget allows the user to interactively manipulate the sizes of several panes. The panes can be arranged either vertically or horizontally.') group = Tix.LabelEntry(w, label='Newsgroup:', options='entry.width 25') group.entry.insert(0,'comp.lang.python') pane = Tix.PanedWindow(w, orientation='vertical') p1 = pane.add('list', min=70, size=100) p2 = pane.add('text', min=70) list = Tix.ScrolledListBox(p1) text = Tix.ScrolledText(p2) list.listbox.insert(Tix.END, " 12324 Re: Tkinter is good for your health") list.listbox.insert(Tix.END, "+ 12325 Re: Tkinter is good for your health") list.listbox.insert(Tix.END, "+ 12326 Re: Tix is even better for your health (Was: Tkinter is good...)") list.listbox.insert(Tix.END, " 12327 Re: Tix is even better for your health (Was: Tkinter is good...)") list.listbox.insert(Tix.END, "+ 12328 Re: Tix is even better for your health (Was: Tkinter is good...)") list.listbox.insert(Tix.END, " 12329 Re: Tix is even better for your health (Was: Tkinter is good...)") list.listbox.insert(Tix.END, "+ 12330 Re: Tix is even better for your health (Was: Tkinter is good...)") text.text['bg'] = list.listbox['bg'] text.text['wrap'] = 'none' text.text.insert(Tix.END, """ Mon, 19 Jun 1995 11:39:52 comp.lang.python Thread 34 of 220 Lines 353 A new way to put text and bitmaps together iNo responses ioi@blue.seas.upenn.edu Ioi K. Lam at University of Pennsylvania Hi, I have implemented a new image type called "compound". It allows you to glue together a bunch of bitmaps, images and text strings together to form a bigger image. Then you can use this image with widgets that support the -image option. For example, you can display a text string string together with a bitmap, at the same time, inside a TK button widget. """) list.pack(expand=1, fill=Tix.BOTH, padx=4, pady=6) text.pack(expand=1, fill=Tix.BOTH, padx=4, pady=6) msg.pack(side=Tix.TOP, padx=3, pady=3, fill=Tix.BOTH) group.pack(side=Tix.TOP, padx=3, pady=3, fill=Tix.BOTH) pane.pack(side=Tix.TOP, padx=3, pady=3, fill=Tix.BOTH, expand=1) def MkNoteBook(w): msg = Tix.Message(w, relief=Tix.FLAT, width=240, anchor=Tix.N, text='The NoteBook widget allows you to layout a complex interface into individual pages.') prefix = Tix.OptionName(w) if not prefix: prefix = '' w.option_add('*' + prefix + '*TixControl*entry.width', 10) w.option_add('*' + prefix + '*TixControl*label.width', 18) w.option_add('*' + prefix + '*TixControl*label.anchor', Tix.E) w.option_add('*' + prefix + '*TixNoteBook*tagPadX', 8) nb = Tix.NoteBook(w, ipadx=6, ipady=6) nb.add('hard_disk', label="Hard Disk", underline=0) nb.add('network', label="Network", underline=0) # Frame for the buttons that are present on all pages common = Tix.Frame(nb.hard_disk) common.pack(side=Tix.RIGHT, padx=2, pady=2, fill=Tix.Y) CreateCommonButtons(common) # Widgets belonging only to this page a = Tix.Control(nb.hard_disk, value=12, label='Access Time: ') w = Tix.Control(nb.hard_disk, value=400, label='Write Throughput: ') r = Tix.Control(nb.hard_disk, value=400, label='Read Throughput: ') c = Tix.Control(nb.hard_disk, value=1021, label='Capacity: ') a.pack(side=Tix.TOP, padx=20, pady=2) w.pack(side=Tix.TOP, padx=20, pady=2) r.pack(side=Tix.TOP, padx=20, pady=2) c.pack(side=Tix.TOP, padx=20, pady=2) common = Tix.Frame(nb.network) common.pack(side=Tix.RIGHT, padx=2, pady=2, fill=Tix.Y) CreateCommonButtons(common) a = Tix.Control(nb.network, value=12, label='Access Time: ') w = Tix.Control(nb.network, value=400, label='Write Throughput: ') r = Tix.Control(nb.network, value=400, label='Read Throughput: ') c = Tix.Control(nb.network, value=1021, label='Capacity: ') u = Tix.Control(nb.network, value=10, label='Users: ') a.pack(side=Tix.TOP, padx=20, pady=2) w.pack(side=Tix.TOP, padx=20, pady=2) r.pack(side=Tix.TOP, padx=20, pady=2) c.pack(side=Tix.TOP, padx=20, pady=2) u.pack(side=Tix.TOP, padx=20, pady=2) msg.pack(side=Tix.TOP, padx=3, pady=3, fill=Tix.BOTH) nb.pack(side=Tix.TOP, padx=5, pady=5, fill=Tix.BOTH, expand=1) def CreateCommonButtons(f): ok = Tix.Button(f, text='OK', width = 6) cancel = Tix.Button(f, text='Cancel', width = 6) ok.pack(side=Tix.TOP, padx=2, pady=2) cancel.pack(side=Tix.TOP, padx=2, pady=2) def MkDirList(nb, name): w = nb.page(name) prefix = Tix.OptionName(w) if not prefix: prefix = '' w.option_add('*' + prefix + '*TixLabelFrame*label.padX', 4) dir = Tix.LabelFrame(w, label='tixDirList') fsbox = Tix.LabelFrame(w, label='tixExFileSelectBox') MkDirListWidget(dir.frame) MkExFileWidget(fsbox.frame) dir.form(top=0, left=0, right='%40', bottom=-1) fsbox.form(top=0, left='%40', right=-1, bottom=-1) def MkDirListWidget(w): """The TixDirList widget gives a graphical representation of the file system directory and makes it easy for the user to choose and access directories. """ msg = Tix.Message(w, relief=Tix.FLAT, width=240, anchor=Tix.N, text='The TixDirList widget gives a graphical representation of the file system directory and makes it easy for the user to choose and access directories.') dirlist = Tix.DirList(w, options='hlist.padY 1 hlist.width 25 hlist.height 16') msg.pack(side=Tix.TOP, expand=1, fill=Tix.BOTH, padx=3, pady=3) dirlist.pack(side=Tix.TOP, padx=3, pady=3) def MkExFileWidget(w): """The TixExFileSelectBox widget is more user friendly than the Motif style FileSelectBox. """ msg = Tix.Message(w, relief=Tix.FLAT, width=240, anchor=Tix.N, text='The TixExFileSelectBox widget is more user friendly than the Motif style FileSelectBox.') # There's a bug in the ComboBoxes - the scrolledlistbox is destroyed box = Tix.ExFileSelectBox(w, bd=2, relief=Tix.RAISED) msg.pack(side=Tix.TOP, expand=1, fill=Tix.BOTH, padx=3, pady=3) box.pack(side=Tix.TOP, padx=3, pady=3) ### ### List of all the demos we want to show off comments = {'widget' : 'Widget Demos', 'image' : 'Image Demos'} samples = {'Balloon' : 'Balloon', 'Button Box' : 'BtnBox', 'Combo Box' : 'ComboBox', 'Compound Image' : 'CmpImg', 'Directory List' : 'DirList', 'Directory Tree' : 'DirTree', 'Control' : 'Control', 'Notebook' : 'NoteBook', 'Option Menu' : 'OptMenu', 'Paned Window' : 'PanedWin', 'Popup Menu' : 'PopMenu', 'ScrolledHList (1)' : 'SHList1', 'ScrolledHList (2)' : 'SHList2', 'Tree (dynamic)' : 'Tree' } # There are still a lot of demos to be translated: ## set root { ## {d "File Selectors" file } ## {d "Hierachical ListBox" hlist } ## {d "Tabular ListBox" tlist {c tixTList}} ## {d "Grid Widget" grid {c tixGrid}} ## {d "Manager Widgets" manager } ## {d "Scrolled Widgets" scroll } ## {d "Miscellaneous Widgets" misc } ## {d "Image Types" image } ## } ## ## set image { ## {d "Compound Image" cmpimg } ## {d "XPM Image" xpm {i pixmap}} ## } ## ## set cmpimg { ## {f "In Buttons" CmpImg.tcl } ## {f "In NoteBook" CmpImg2.tcl } ## {f "Notebook Color Tabs" CmpImg4.tcl } ## {f "Icons" CmpImg3.tcl } ## } ## ## set xpm { ## {f "In Button" Xpm.tcl {i pixmap}} ## {f "In Menu" Xpm1.tcl {i pixmap}} ## } ## ## set file { ##added {f DirList DirList.tcl } ##added {f DirTree DirTree.tcl } ## {f DirSelectDialog DirDlg.tcl } ## {f ExFileSelectDialog EFileDlg.tcl } ## {f FileSelectDialog FileDlg.tcl } ## {f FileEntry FileEnt.tcl } ## } ## ## set hlist { ## {f HList HList1.tcl } ## {f CheckList ChkList.tcl {c tixCheckList}} ##done {f "ScrolledHList (1)" SHList.tcl } ##done {f "ScrolledHList (2)" SHList2.tcl } ##done {f Tree Tree.tcl } ##done {f "Tree (Dynamic)" DynTree.tcl {v win}} ## } ## ## set tlist { ## {f "ScrolledTList (1)" STList1.tcl {c tixTList}} ## {f "ScrolledTList (2)" STList2.tcl {c tixTList}} ## } ## global tcl_platform ## # This demo hangs windows ## if {$tcl_platform(platform) != "windows"} { ##na lappend tlist {f "TList File Viewer" STList3.tcl {c tixTList}} ## } ## ## set grid { ##na {f "Simple Grid" SGrid0.tcl {c tixGrid}} ##na {f "ScrolledGrid" SGrid1.tcl {c tixGrid}} ##na {f "Editable Grid" EditGrid.tcl {c tixGrid}} ## } ## ## set scroll { ## {f ScrolledListBox SListBox.tcl } ## {f ScrolledText SText.tcl } ## {f ScrolledWindow SWindow.tcl } ##na {f "Canvas Object View" CObjView.tcl {c tixCObjView}} ## } ## ## set manager { ## {f ListNoteBook ListNBK.tcl } ##done {f NoteBook NoteBook.tcl } ##done {f PanedWindow PanedWin.tcl } ## } ## ## set misc { ##done {f Balloon Balloon.tcl } ##done {f ButtonBox BtnBox.tcl } ##done {f ComboBox ComboBox.tcl } ##done {f Control Control.tcl } ## {f LabelEntry LabEntry.tcl } ## {f LabelFrame LabFrame.tcl } ## {f Meter Meter.tcl {c tixMeter}} ##done {f OptionMenu OptMenu.tcl } ##done {f PopupMenu PopMenu.tcl } ## {f Select Select.tcl } ## {f StdButtonBox StdBBox.tcl } ## } ## stypes = {} stypes['widget'] = ['Balloon', 'Button Box', 'Combo Box', 'Control', 'Directory List', 'Directory Tree', 'Notebook', 'Option Menu', 'Popup Menu', 'Paned Window', 'ScrolledHList (1)', 'ScrolledHList (2)', 'Tree (dynamic)'] stypes['image'] = ['Compound Image'] def MkSample(nb, name): w = nb.page(name) prefix = Tix.OptionName(w) if not prefix: prefix = '' else: prefix = '*' + prefix w.option_add(prefix + '*TixLabelFrame*label.padX', 4) pane = Tix.PanedWindow(w, orientation='horizontal') pane.pack(side=Tix.TOP, expand=1, fill=Tix.BOTH) f1 = pane.add('list', expand='1') f2 = pane.add('text', expand='5') f1['relief'] = 'flat' f2['relief'] = 'flat' lab = Tix.Label(f1, text='Select a sample program:', anchor=Tix.W) lab.pack(side=Tix.TOP, expand=0, fill=Tix.X, padx=5, pady=5) lab1 = Tix.Label(f2, text='Source:', anchor=Tix.W) lab1.pack(side=Tix.TOP, expand=0, fill=Tix.X, padx=5, pady=5) slb = Tix.Tree(f1, options='hlist.width 25') slb.pack(side=Tix.TOP, expand=1, fill=Tix.BOTH, padx=5) stext = Tix.ScrolledText(f2, name='stext') font = root.tk.eval('tix option get fixed_font') stext.text.config(font=font) stext.text.bind('', lambda w=stext.text: w.yview(scroll='-1 unit')) stext.text.bind('', lambda w=stext.text: w.yview(scroll='1 unit')) stext.text.bind('', lambda w=stext.text: w.xview(scroll='-1 unit')) stext.text.bind('', lambda w=stext.text: w.xview(scroll='1 unit')) stext.pack(side=Tix.TOP, expand=1, fill=Tix.BOTH, padx=7) frame = Tix.Frame(f2, name='frame') frame.pack(side=Tix.TOP, expand=0, fill=Tix.X, padx=7) run = Tix.Button(frame, text='Run ...', name='run') view = Tix.Button(frame, text='View Source ...', name='view') run.pack(side=Tix.LEFT, expand=0, fill=Tix.NONE) view.pack(side=Tix.LEFT, expand=0, fill=Tix.NONE) stext.text['bg'] = slb.hlist['bg'] stext.text['state'] = 'disabled' stext.text['wrap'] = 'none' stext.text['width'] = 80 slb.hlist['separator'] = '.' slb.hlist['width'] = 25 slb.hlist['drawbranch'] = 0 slb.hlist['indent'] = 10 slb.hlist['wideselect'] = 1 slb.hlist['command'] = lambda args=0, w=w,slb=slb,stext=stext,run=run,view=view: Sample_Action(w, slb, stext, run, view, 'run') slb.hlist['browsecmd'] = lambda args=0, w=w,slb=slb,stext=stext,run=run,view=view: Sample_Action(w, slb, stext, run, view, 'browse') run['command'] = lambda args=0, w=w,slb=slb,stext=stext,run=run,view=view: Sample_Action(w, slb, stext, run, view, 'run') view['command'] = lambda args=0, w=w,slb=slb,stext=stext,run=run,view=view: Sample_Action(w, slb, stext, run, view, 'view') for type in ['widget', 'image']: if type != 'widget': x = Tix.Frame(slb.hlist, bd=2, height=2, width=150, relief=Tix.SUNKEN, bg=slb.hlist['bg']) slb.hlist.add_child(itemtype=Tix.WINDOW, window=x, state='disabled') x = slb.hlist.add_child(itemtype=Tix.TEXT, state='disabled', text=comments[type]) for key in stypes[type]: slb.hlist.add_child(x, itemtype=Tix.TEXT, data=key, text=key) slb.hlist.selection_clear() run['state'] = 'disabled' view['state'] = 'disabled' def Sample_Action(w, slb, stext, run, view, action): global demo hlist = slb.hlist anchor = hlist.info_anchor() if not anchor: run['state'] = 'disabled' view['state'] = 'disabled' elif not hlist.info_parent(anchor): # a comment return run['state'] = 'normal' view['state'] = 'normal' key = hlist.info_data(anchor) title = key prog = samples[key] if action == 'run': exec('import ' + prog) w = Tix.Toplevel() w.title(title) rtn = eval(prog + '.RunSample') rtn(w) elif action == 'view': w = Tix.Toplevel() w.title('Source view: ' + title) LoadFile(w, demo.dir + '/samples/' + prog + '.py') elif action == 'browse': ReadFile(stext.text, demo.dir + '/samples/' + prog + '.py') def LoadFile(w, fname): global root b = Tix.Button(w, text='Close', command=w.destroy) t = Tix.ScrolledText(w) # b.form(left=0, bottom=0, padx=4, pady=4) # t.form(left=0, bottom=b, right='-0', top=0) t.pack() b.pack() font = root.tk.eval('tix option get fixed_font') t.text.config(font=font) t.text['bd'] = 2 t.text['wrap'] = 'none' ReadFile(t.text, fname) def ReadFile(w, fname): old_state = w['state'] w['state'] = 'normal' w.delete('0.0', Tix.END) try: f = open(fname) lines = f.readlines() for s in lines: w.insert(Tix.END, s) f.close() finally: # w.see('1.0') w['state'] = old_state if __name__ == '__main__': root = Tix.Tk() RunMain(root) Tix8.4.3/Python/Demo/tix/README.txt0000775000122200012240000000132607404771747017070 0ustar jeffhjeffh00000000000000About Tix.py ----------- Tix.py is based on an idea of Jean-Marc Lugrin (lugrin@ms.com) 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. Features: 1) It is almost complete. 2) Tix widgets are represented by classes in Python. Sub-widgets are members of the mega-widget class. For example, if a particular TixWidget (e.g. ScrolledText) has an embedded widget (Text in this case), it is possible to call the methods of the child directly. 3) The members of the class are created automatically. In the case of widgets like ButtonBox, the members are added dynamically. Tix8.4.3/Python/Demo/tix/bitmaps/0000775000122200012240000000000010767576212017020 5ustar jeffhjeffh00000000000000Tix8.4.3/Python/Demo/tix/bitmaps/optmenu.xpm0000775000122200012240000000436107404771747021250 0ustar jeffhjeffh00000000000000/* XPM */ static char * optmenu_xpm[] = { "50 40 5 1", " s None c None", ". c white", "X c gray80", "o c gray50", "O c black", " ", " ", " .............................. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXOXOXXOXXOXXXXOOXXXXXXXXXXo ", " .XXXOXOXXOXOXXXOXXOXXXXXXXXXXo ", " .XXXXOXXOXXOXXXOXXXOXXXXXXXXXo ", " .XXXXOXXXOXXOOXXOXOXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo.............o ", " .............................o o ", " ..XXXOXXXXXOXXXXXXXXOXXXXXXXOo o ", " ..XXOXOXOXXOXOXXXOXXOXXXXXXXOo ...... o ", " ..XXXOXXXOXXOXXXOXXXOXXXXXXXOo . o o ", " ..XXOXXXOXXXOXOXXOXXOXXXXXXXOo . o o ", " ..XXXXXXXXXXXXXXXXXXXXXXXXXXOo .ooooo o ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOo o ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo o ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXooooooooooooooo ", " .XXXXOXXXXXOXXXXXXXXXXXXXXXXXo ", " .XXXOXXXXXXXXXOXXXXXXXXXXXXXXo ", " .XXXXOXXOXXOXOXOXXXXXXXXXXXXXo ", " .XXXXXOXXOXOXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXOXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXOXOXXXXXXXOXOXXXXXOXXXXXXo ", " .XXXXXOXOXOXXOXXXXXOXXOXXXXXXo ", " .XXXXOXXOXOXOXXXOXOXOXXOXXXXXo ", " .XXXOXXXXOXXOXXXOXXOXXXXOXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " oooooooooooooooooooooooooooooo ", " ", " ", " ", " "}; Tix8.4.3/Python/Demo/tix/bitmaps/rightj.xbm0000775000122200012240000000044207404771747021026 0ustar jeffhjeffh00000000000000#define rightj_width 16 #define rightj_height 16 static unsigned char rightj_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xdb, 0x00, 0x00, 0x70, 0xdb, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0xd8, 0xde, 0x00, 0x00, 0xc0, 0xdd, 0x00, 0x00, 0xa0, 0xef, 0x00, 0x00, 0xd8, 0xde}; Tix8.4.3/Python/Demo/tix/bitmaps/centerj.xbm0000775000122200012240000000044507404771747021174 0ustar jeffhjeffh00000000000000#define centerj_width 16 #define centerj_height 16 static unsigned char centerj_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3e, 0x00, 0x00, 0xc0, 0x0d, 0x00, 0x00, 0x58, 0x77, 0x00, 0x00, 0xb0, 0x3b, 0x00, 0x00, 0xdc, 0xf7, 0x00, 0x00, 0xf0, 0x3e, 0x00, 0x00, 0xd8, 0x7e}; Tix8.4.3/Python/Demo/tix/bitmaps/combobox.xpm.10000775000122200012240000000435407404771747021532 0ustar jeffhjeffh00000000000000/* XPM */ static char * combobox_xpm[] = { "50 40 4 1", " s None c None", ". c black", "X c #FFFF80808080", "o c gray70", " ", " ", " ", " .................................... ....... ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. . . . ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. . . . ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. . . . ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. . . . ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. . ... . ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. . . . ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. . . ", " .................................... ....... ", " ", " ............................................. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .o...................................o.ooooo. ", " .o...................................o.ooooo. ", " .o...................................o.ooooo. ", " .o...................................o.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " .ooooooooooooooooooooooooooooooooooooo.ooooo. ", " ............................................. ", " ", " ", " ", " ", " "}; Tix8.4.3/Python/Demo/tix/bitmaps/leftj.xbm0000775000122200012240000000043707404771747020647 0ustar jeffhjeffh00000000000000#define leftj_width 16 #define leftj_height 16 static unsigned char leftj_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x6d, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0xec, 0x0e, 0x00, 0x00, 0xfc, 0x7e, 0x00, 0x00, 0xdc, 0x03, 0x00, 0x00, 0x6c, 0x3b, 0x00, 0x00, 0x6c, 0x1f}; Tix8.4.3/Python/Demo/tix/bitmaps/select.xpm0000775000122200012240000000446407404771747021044 0ustar jeffhjeffh00000000000000/* XPM */ static char * select_xpm[] = { "50 40 9 1", " s None c None", ". c black", "X c gray95", "o c gray50", "O c gray70", "+ c navy", "@ c #000080800000", "# c #808000000000", "$ c white", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .............................................. ", " .XXXXXXXXXXooooooooooooXXXXXXXXXXXoXXXXXXXXXX. ", " .X ooOOOOOOOOOOXX oX o. ", " .X ooOOOOOOOOOOXX oX o. ", " .X ++++ ooOOOOOOOOOOXX ... oX @ o. ", " .X +++++ ooOOOOOOOOOOXX . . oX @@@ o. ", " .X +++ + ooOOOOOOOOOOXX . . oX @ @ o. ", " .X + + ooOO#####OOOXX . . oX @ @ o. ", " .X + + ooOO#OOO##OOXX . oX @ @ o. ", " .X + + ooO##OOOO##OXX . oX @ @ o. ", " .X ++ ++ ooO###OOO#OOXX . oX @ @ o. ", " .X +++++++ ooO#######OOXX . oX @ @ o. ", " .X + + ooO##O#OO#OOXX . oX @ @ o. ", " .X + ++ ooO##OOOOO#OXX . . oX @ @ o. ", " .X + + ooOO#OOOOO#OXX . . oX @ @@ o. ", " .X + ++ ooOO#OOOOO#OXX .... oX @@@@@ o. ", " .X ooOO######OOXX oX o. ", " .X ooOOOOOOOOOOXX $oX o. ", " .XoooooooooooXXXXXXXXXXXoooooooooooXooooooooo. ", " .............................................. ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; Tix8.4.3/Python/Demo/tix/bitmaps/tix.gif0000775000122200012240000002544207404771747020331 0ustar jeffhjeffh00000000000000GIF87aüÕãÿÿÿÿ‚ÿ‚‚‚ÿÿ‚Âÿ‚‚,üÕ@ÿÈI«½8ëÍ»ÿ`(ŽdihŠé  ÂÏq»ôlϸÐÓƒ pHt }ÁÛ͘<‘L\qš\R¯Á€ÓÇ5v¹¹I†òμg,S¹ß*‰›íIïÊrµÛÄFûRh|fN€…cG@h?Kƒ_v‹g^”TuW—Skampor*,”|iVˆjŽiQu—¦™¤yl~®¨O~^±–D¼ºÀL±¤†O)/(¡ÈZ6¾Æ¯€‡À`Ò›ŠœUÖ•[²z³JÛ_œ«ÅwÐ[l³MσŠUÍÉËZ§‰…djce3Hà‹L`ᆀ!¨¬h¦" +8¤àpㄎÿ@ ¸H„¢–ˆAÌÈQ£Ê8 8Ô•+cñÆY*œ­Ö 10ràÈpBh ©SB¢ÀRÜd PpàT¨`™‚µÕéÓ²fH›µiÕ¦\:–`Y¨k¡¦Ë–¬Ód^-÷3˜$6ƒâ©eT0¡¼ºÄ=P´kÁªzûžÕ6¤W®é®][µtÛmû¾uëtuÚ†@‡ÖL»væfW x¿ÇAßr³ìFãn½„c¡<@®e˵£ï}m· jéØÝb-ÝPìÝìàQœÞÝôá_²Šœ×©Œñ à“Ð;¡ õ€ý¸Ük=jf¶Pa¦ÿXV÷ÜàÑfZk)äÇ_Wà(Þv¨U5J4ê¥^aNàÓL Åeò›0þðÃIrÉ”@G+ªäW²yu`W1.#cAkÐØ AŸ|òà~3²äbA*%é‘T£<·Opª¬R-Þ¢{Ü$ +D\dß—`†)æ˜b*`€™ ¤‰f€úYÇ‚¹–`t^ ¦Sú±•§{òÙTš¨‰¦ ‚îfh:­LIb9›(ve ɇÉ¥x!™—Úç瞦y¦§f¦E¨ iŸL_†„Vvp†÷V ˜ê÷妚²…槣暦ŒpX £¾ÕðèD¾ÂçË”™ÆzW¬ö)P&ÿ r‘ª@Ur5w_\«Î™ÝjÜ5“êdùaÚªšŸ:5¨³²6Ë«#†eF£Ä1† &¦hª“Ý—,™z]Ê'nf…«©sBFem˜¬ÂõT€lM¸U…Þ2{gSœòùeš +±pÜ›MæŒcï4lìD,p“æRe©ê‹_Ë#¬°wY™¯¦DúG[foMÕã[ÅvÀRö5wsÌÌ‚•g¾|šp¥T#ˆ »ÛÞ¨ˆˆ—â@qQ} iØcj¬)µGv5d‘l·mWT0ºÈ,µúAËl¨‚@î`DEBȈìšX5VpY¶{là†™ïdQÝÙ²Y}þiî™\]Jäÿچװãþú+*®äžkú ¦YKÊvX);,ö†c4%¾!$³¸2[lqº`:+üib‚Ëyçš™†š[C?þ²ï²šY·f¹^~®6¾r=Ï!ðû! (?–ƒæš7îòÑ×jn @šÀü$òÉ¿¡Ÿ©úN>p åúîÿž£:Q>5@ 9Ó8Vë0䘫1ƒvác°¤ }ûcÊ·Â n0gß‚KgV%ž­¨¦„‘ó Ä ¼1ÁcƒŠO*º†œ'Uc"8lFqŠÁÈCækáîv‡¾¸4‡<“–œ7¤òufFk[ÛT2À¦àÆh‘ÛµÂÄ"ÿowN‰xø ª1F€Ãá$e¬)D%šx£$ ”¼q!H@D|x8Ò" ±áà8@ä…tc½ÔašÀ U›Á#ó²EÚ.9»ˆDb’á½ãD0Ÿ ¥(s%tèBk˜l(µU’h“<~õ«O,#'?¥ø¾AF]öc _dX'²UÚÄ@@ 5 ÁÆ,˜¬ìå<92_ÎË•¾¥ mÁÊõ˜±™Ù4f• çpRøHccÐÈgRsßCã9FÏͳž:¹g=͹ƒà@íL†qöIPöô ­ç=šÐ{rò¡uŒ VG‡M:jÿvíL`ëÞYˆ‹®@=hfQOa=Ôoðg|b,1 ‡¡j,'d©ùfˆƒ%ɶ׈ôhˆGMLùfˆ–‡9£0FDZÀb”jiºÐœªç7¦ÌêÈž´5ø­v¥¬f/žZÆŸ^²¬¹ '(§Õvð@¡2EÜ)ƘJ±ž•m=Ì9ÈZS¤FâiÝȪ¢d2¥jÉ]°L+.Õ‡U8ð=V¢×a¡Ôª)'©ÆRcÚ½sšEèl„ð¡DÀÀ©]«a½‘ËwÁƒ®E½ 6ÿê¡«Uq” ¤5˜óy&," Í@–r©À}\AŠc ³*¦èlfoÿ"®û¦KË,Å“ÌÍŒs»´P÷»Õ…ŠLŽ:ËÙ øð§EÈÍW"6­>ØÜÊR•¼(…=[\ºÎì;ô«_ƒÖ–­ºd+À¨qš;²F1¢1¦çh³$ÛÂ@!E3òíµÅÝؾ òï¶N£•ÖlEFþáK€ãÄ-òðfÁ'1„ÃŒÇúD|N-f\–âœqwà Sh‚{ൠØ5õô1ÍŽ¬ UÑ}Sc]9Ì/Ôø–šÔŒ¯ð5\ë[[|ÐŒzܶ¯°-FÀ·|D•·-Åd>†}æŸm2±µXÏ».Ù˜g~t—¿P,FP$6LýN È#ÿn\ã™´‰Y*MZÈò>Ö¦&úíÕŽœ)­DP-¬eÒbÑeÉò¢ãº}Ÿ€Ù4×23ä8í¦"Áè쨡ʰ…6#Ž„_ ã]¿–§#İ™$ܯօïgêdq=ê°‹;ºýðe ÕèF§¦ÌedHœ!þš¨¨Ä9e‘Õ¸tÅùÎOYm¥å­<Ϫ¾º«óª°!”UŸt±pS¿+®¸D¬òrê9ólnsØã‰èŠ_ê†7R´¬¸m)„ÍMµ2Áܱ‚¾Á%÷q²Ô¾eÝaÔäÊOëãSéjÕ§PPQýjlu* )•^¦‰q>÷8ÝÄ¡í¯X¯Ø€v-­ÿ3õ+\C>s·4û·d Ó3$–r? {G*ìÓz6oG.Ö6zÂ.Ö€CXp×Vð3DI3&7Ã4bb*.ÇEÏÁ)ȶ‘øG‚Êbq±'tç¶+B±8TrOãQVŸ”hD¨hS@é"‰6Ñ7úDa’G @zu€t#‘‰FˆDºõF•õH(Ñ7€GŸY YpÔx¶T[ÅZï°^ÿM$kògMí5“N VF Ä(=µ:1¦‡ï0U: ;‘"Myˆ Ádˆú&%éñ Tc5CÞ°VÛIÙP/­•~QÓJ‚ÃuØ×Ôÿˆ¨¨Vª§Š 8ÉzK§~¨ˆŠ}Jï‘MlmÅ)¹˜Š¤Ä%Y;Ø!.à Ê2òtÎPÊÐI‹aÒ8ÔXÖxؘ"SÜÈ×pÀîdP84aÃAŽ%R5ŽÞø ☋VÂŽ~ÆP#…S§eQt UìZ]UxPŒYsŠì@ER^æ°jþÆ ¾xZ~Cú¨öÈŽ uRE[ÁòWT"u`…JÏöS’¢(£ÄV ùLx-…z’‘êEPùwkÐOQÕoŒˆ‰©~€õ‡%‡Vx’×0K 2”e3ÄwÅ4%,©Z.WÈxUì×+}HÿFH“Ã$p5™ þhIv‰ý(hy¨M¥O´x2&ÙJzXÄHYYeˆ"#78TבwµøIÛd"+IеUŠ'CI‚WDILðATøæ†çU;…wnù–¬³eò—Uwzà( %r„‰[‚ù¿äaùx¶ZÀ¢‘M'X¡G•t%Kt9“5É‹zWQPMjÈ=öR—"’ &aV‡›ÚV†Áj©Åw{U^­hY Ä%Iÿäš••rmè±g:dx†“T*1™;ðØ|\D@Ä#ôTEáLY0Ç1 Ó9‡$†~tH¡2‹`F©VW´ägÅx;™HHœØ-pÿZÜ5Ãu\ q\•;ÓõH±wÄ%]š —Ñ E^Ê `!#wG;µI}öoª•Ÿ‡µ‘Åšfg0â \j÷sô´ Ÿ1hi† y!yK1i2ú\)„£Ï¥£Eúò£‘v/ ^$Q^«™Wõ0¥ô¹ˆ©i• Xô mV_&!Ý4&æa¡1éÖ£ã'„-ÓU`HJ?SâASˆcƒ…ŽìÅM¹‹o÷5i¿– vq\ÚE†r¢¦ô£il !†{r¢`ë’rY¦i„ŽtÄQöɧTà æÞ¥02ƒ¿õÿõõ p‰ª{¯Á-¬¡<ÜÁ¢ŽJy<£†Âtw(N4F‹—j‹wå•FóAǨi*rÈÓ-¯š_?W©¹áb6¥)ã‰EZœtÀJ”^‰mÒ‚ýl…*p¨F– Ó#A£ahJyc!åQT¢·©l©—Šq8»i^>@ûê©ø!BÁõc;ªBFfD†{Ëó '&«å*°žƒ_ÊódWŒÛÊ!‚xŒ¯yzËd^íé<žfOÄ9ÒÕñ¢n Éš¨="_ò £3Rg¦ê2>Aµ§@A­ðô=Mœ8 ʇÄ{ô­-;f'Û[Žö[7ò#mÿ'Ý·²]êxgFPW›]<2üe,œ> £q¨“:¸|Ü­¦4ª(0‚1ÃÁSÅ…Ü¿9iÂÓê¹î鯝 A´©o.‚œ?bã¬g¡*äE›ƒ¤<ê µ®~Za Êuü¯×4wÍ•ô› š‘W‹™–;‰qw¼…ö[aC6¾ÜÉ?| 6j]¡ada»øã8-×z°Fì)a‚‚3-臹¯“!®•è`Í¡OXI æ”…'0ÌÜÌÛ˜¾žR mǦ›1«Òº¶»û•i³*å§k!(A]| L.,·%²ù&}uÿ8)<¼§t ØFvlklº¹vNô¢ÚÇ)›}™Ï¢2ÄÖ»lä4‹•ˆ%s¶M)„™) §ì;7³À”c¿¤ƒ9Dzo­®û„ÜrœL1ç·¿C\|ƒQ±éZ' M¬™#Ü©8üÏ{ 9‡ÊT<<¤r}Ì;²j̻ǂóøD|ÔS=éK@”\ŸþȽþ6d釆À"HvƒœÈüó>kADå<Ê’W0¨_]”Ãæ;o•ƒØúKÔ„tÉ$&”ÈôÚÐhœ¬è­. Æ!D††&g}8ƒ6Ó¼ÅjibªB3wh B~T.¹‹&tÖTÉL8z:Y¢ÿ5H CK>ùÞöÌ×óÖ/¼#_ç†nœQg]Œ­Þ7·&µVÕó–פ:4D­:¹‰@Áå¤^ùj ôgsL³u.$£ü'ªíŒ}Jã<k€ NÞ KÈ­Ýšb:º{á#Çš\¥™¹ÉX–ß¶w»ìÍ”ÍD™3&3ø¯Þ¼]òs×À†d¦!4{,4}]÷)•Û•ù‡5¶„%W©M´ ДÝÕfc=Õ'‹ÝÖñ 9§¼Baâz¡ƒä5˜¬ _. Ù|D(Ee“}td þ%v÷%Që>`¡ÖU]Q˜•»…!qG¹0`’þƒÌ‚ÿfÈ~T¦¯œNË÷‹YP—ÞœMÐ…C€GpDë°ÞväwdGa(†€„d0Ip†Gõ…ȤçI0Iå ÒÆ$c ;ÞûX}×)¡[`(Jª^ÖŽM fìÊx¥À [Е [ßN2ýÖÔ(Œìþuu™Ì­É“‚åÜ€ã“*w±Ogc¹ÚîÈ é¤•‚´«˜ŸØ®cÝTÀ|x› ™|ù—çæôªØÖ´’”P‰X ñq´¿‹C©¯¨©YÁ!¶Y¼Oñþ¾òGɱPÍSŽù—Ý~eËœN|¹N*¼òûJÓ¾¶Øð–JÂ,ß`ôòoµì£äÿI¯öóD/Ÿ›Š@´ˆ¹ZUÀvyî'ýÅq9„X~íæ¨çòMá„á)íÔœt!½êOÇOÝ@kŸ ˆs2:è´ö=~ ßH³Ë¹O/uPAŽxZöŠ/b¹øsàøW‘?ù”_ùeßø–Ÿù‚”OSµXè´NÎàùˆhÿõñdz%a&QRÆá &…ùš¯ú|Žˆã¨øƒŸŽý;4ÛOR…S€yŒ€5úŽ’QiÔ²¼R%#üùˆSˆ(,êÄû&Ucìc}—’:ð÷›ß#ÅY é~^õÖ4Áåb+–h .ÅüÙo÷iÔW É™ÜàüÖ?ÿ=@ûõ’uÿky‘¾iñ0¤ƒÚzñ¬}[Mó:¡,GÔ A£^–5Åñšï³ fNÆï]@8$…€10Xî~OŸÀ)Í@W—kUËô>4Ž­ žÀ¼ä:ƃµªXðË+×ÅѧiÈTI#&¦¼¼¹.•³/¹›Å:E¯ «»3ž/»œË¶¬ÆHÐ2º8‘*ß>¥¿")BԵ̮Ы9OÓ,¬ËÏZŸÉÜÌÍbϵ]µÓ`+YÔTU"V"WIN›áaßßÊgäÄ­^Ú” â­F37»°Ýu³òxy’ÓÆÂéiÀ!kÓìžIÿàÌ£ÑéÛºpˆÆ©©Á,¡3trÿÒ(Ú4Ïb<\ö‘’¿%´ {4IáE.°N¶ƒÎ")g1LÔJ”a»åªãª}B¬™“È+`K]‘Ä%­ùÙ¡˜Ý`Æ‘I㘕8«jÂöîNG ~öñY²Â˜²¬cÚ §ÅœÂ–ŽÚk»0íÄ‹fïj­¹ì`²·Aôízô‘Uz-Ë1,èp.¡R¢X.XwäTyù’[ pq1Àuœ ®&ë­âÍÊ6†f¨ä¿w]Ÿ…›M2xsbÅÄK&h€ÙHƒ$%ŒÒÍÔ¶–µN‘ÒCÙPéD.el›QÄ¿ÎÒm =¢ÁG‚ /È‘o¸8™.æÛð„hä$ÿɶ:-qßÜÚ«—¹Í”²³"¼>"¯¼øB)­½<'¡É†2O,ªÐƒ '¬0Ã䩦0m”°q¿WŠbJµ&~*p¼A(àÐ8µfÉë˜Y”Qh$àG zì±¼†4Ñ ¶4hbFÑzb ,Áè”ÛC9KÊK¹†äN(ɨ ¿Ó°da‡xäq€ øãM({$l#ð°ƒ;1dÓÎ 6$k #Û,²  ÍM”È „¤óÇ!M´ íâM?ƒ[¬;¿”ÊbIñŠàm+¨Œ§Çò`Èá\ÕU‚J"V ¤õÊFƒÒÑ% ýÑ`kÿ­µ€ QB‰m3Y%èaQG{ô•` €Çˆ-ôPB‰ ¶ˆ43K£V0‚CW*u“à9…˜tØ_­¥öÞD“eVHé=UI%µ7XE -ôàdøGƒ‰ðÑ…­WÒ†NØàDÕL³NPr÷ WÂû ]NHu!Ïn •wh™Úƒ¸Öcó)bÒbžyâB žÙZ ­%´Ú€fø`cuU”`{afØg‰vh`‹¾—Šp±K Z bä}ȼ Àx¬^š‹-¢e¬vZê´¿%"m#ÆXh¦m»Þjáºj¢û<Øî.4ï_}ü^©ÿ¼Z ˆ|ò’“Ñësƒªh"ÿ°Ò àH[¾¹í¿”eÑUI=`Ñ%ŽšZ«gÜô¾]œvÓ‹-_ׇ½t™af»Ú·}r‘Ë) ]¼t¬ÉFí|s  ó´!}™Z—…¿½ZÔû¨=Ò¨…¸ñØ¿ÿÞöõW? ià¥N_ýÁ‹7^rüUR¾*“ÒŠÉÄ4¥3\ ö F0íy~Ã#Bßð57ï™Ov@›ßÁ§>–É+{2[ã·@û Îe”kŽÇ²š>ýéy´ÅÇ®BhEÌw´`µxG¾b‘®[~ûû0X;‚onÙÓIWCÁ…ð~ȃB]Ò€Bÿ&T4á†Rª¤ìqa T ᇳœ%Q.##Ûh;4}>Ä5˜Ã"z±}Tõã®uÙå!)‹vL¤® P†j›[ãäh4îÉKbm(ºáY°Œ\c Á¥Íîç‹äíì8›}lÿÃ@áÂŽeÇZT”Úø¶I rñWÝ3cîÚ(Ç4–s £!; Ë5.r˜ØˆVÆôS®p4¥´Š|Tù® mP†¯„¥Á×»·q“æ ŸI¾àѰš@Ä’òC“›ˆ4É Õ2«èÌݠͬtÝ8;h:l~°hö"7wI¾v‘Ÿµ¤][rñÌ¥²,ÿà Už8*e`Ïw‚Œ#5å(<á…±wêc$.Ýh³œÁ~Uc- ¹¬ÄfS/d¦‹¨ÑhY,E³÷>:P œä Û–S’RR îˤE=úO]ZX2ÅÍØ6ƒ²€<”:a7ÒB,Úmò¬¨Q'˜MŸn´izÛ). :¾q¬›¼WëF-û‘>Tdé$Hó°‚Jurå-V¸ uÅ#x­êG ¨nt5±UYw^ÂÚíé6[ò“?Â/EÃÈ£D!›ð„c•BEÊë˜Ùßz Ò'©ò£K;ÁKL8"`Kfqe¶®iÖÊÿò²º1Vd¿Àˆ`id¯ÀîyËŠOµ­ª•A¢,m¨:‰\1[2IQYÌâ<‹FåøÕet² 0ÒJeÛ'±ª–-F.ËŒ0£ì͸K·UÁ‹ÊY̲_¸Ïž.ŽwêäLÿ¦'dˆ…3!W3«¨«³ÍYÑï[t£`Ï~ ¨˜_'´2 ÏEÃ3sù½ÛŠ´T®V•q*8œ@”®¥W½j£Á´ª H|·“â2™/ôEæÙh`{ È"«]]iµæw6¤$?C­ßEßίvFµ±a}lÁ­š„PVÍa6ì‰=öö™¨ü£h-ltÏ™ØÃ~µ\Í=F“õg Ž$Ùú²0Îyž <õ¾…ÓW¼Ý€TŠ˜þ]Ã:] w(ñÒ—v)ݦF÷±þjxKWœö^ìËgRû[}ý>5ÀÝ}ñ‹<¸rå¶7pðµá¸®ax L ÿìs—šÑ¿v5¬Ý}ò‹g\Î?­!Ç·‰ï›“ºß¥þ7ÉemŸ÷<å'2Ë7<€8ITÌ{ŒÐù‚‰Š6ÅwÞïGè‡w_å,O$N²ãRÀùÙ÷Íh¿bûçkOûÔzè«/`øàº2û¸ÙR$á|EwÎwÞjb}pAoöðûvè"ñÇ Ü¥ä„ÐèsO[ä}³8ßQNpî§Sܼ6B¤Ìc®t\&{Ò-H9û^ë6½ÀŸ®€¶Ÿ÷F_àæµÉÀ‰ÛY“{·øéQŽ—Ô5?³ÑìɃø— e´Á6ZîÕ-zU³åÁO+îÅ©¾åsÞ–•w»°} ùvÿ“^àÓ68“ý…ç!×TÝÌejdQ»½ ÀE[7ñSµ€#H±ÐK¶{£Ÿ`B&h?÷»­æcµ§ã»i;€˜P(»#|Ø?¼r*T Üùy";`3Àb{Aà[Àúµ›ó*’Š@–™@*#-Û«2f£–kó9ùûðãÀOB-é…—#® ¡+^£‰kéAE£Aj½"Tºa+-K𧳩Á Ê® Š4Kµò½Ä)˜I»yŠ?„ wI§îД34»hˆi5IÁ\´*Ü@;ã½k@èJ±å¼óã'ž:뫹ǛA”+Àð38ªÃ o“©Õsƒ»·ÿ0Á#ƈÂ=ôCÜ9˜©#5aiº¤³'ZÒ.!Ò®$ÄäcºÌ£²U“BE£ÄðÀJ¨Œ{¸6¸+]3A^®ÛC\Ì*ï›AZÅÜ«šÂ<‰B?zË¡ö ÃXL>½S\µäS9@«ßRí{Md¡â’)Ü3-ó[ĺ=¬²TLÁ›Ó<`Ò-ÑQDmL5,»t³¿*!´ûðDl´LA®‡.ÀÌ+C=œÅ´Dñ’Æ=´ Œ¢£4¢¡ú<‹TÆt;ż{AS;7å;‘¦²‰êS¦Ü5´0†ˆ\A³È$»_Ë›“œ,¾¨i#^ª,#¸$>üHÿ3D[¼—³³<¿:Ï©¨TQpž—BÇìãpGE»Ç~”·óÙI|ÄØJ¬Y‚E#J†ºyìGeTÊ»{Ÿ“¤=Î8(¯@²9tI&ƒCËÁ { ËÜÊ­üÉÒÆ9sÇ™„,§Yš)º¹$Bɪµ¶d|;·|.¸l†½¢Ës²Ë–\²ë£µÁXaKaƒ–ü¸K­„L"bÄè²—3ØYÓAK*ƒ¶Ó,-¿‚™P¤Lg!B¹Ž¹ô¶–»×óÌÃKÉ&ƒ2 MtûƒD=Ýi×lÄòcÁ§ +|z1š šúª#;Aj~œÂt[µ¸õd°¿Xÿ_œépžá­¯“=É 9`ψi± «1îb5l:EÃ0ЕٮKРdдQ™ã[O“P#xµ!PO!XÀ⡺=À‡é;àŠª)èLÃ[’#ù„N)ŽvDJ[¤Ì‰?ùÃÀø£­æ ¨{R6D´–猣Ǔ¿ß Bç;½ж>ûÐØ@ë úœ“«D‰@¿äÊ‘ÌÅb»c“<¬BòD¤˜iã3+BŒš¡C»+Ò õ½âyŠÏ° nû3õ¬äÌ#‹0,ŠÒ’ܽI,Ii›¼ŸËRìÙQVúª/"Û›Á1U Óë=©»¶¥ªDN41Ïá s|Ó ˆ‘ä ÇlÿÌÝųS Ìƒ?wË!F Ô.úRõ;ŸÂŒ·xCµeÔEÒ““àÌH(q=ªq³*þÑ àÔ¿ªEð»=Fc»1,UÁºQD” Ú„L-=Ö¾6É‹Qßc>W;)…l23¹‡Â+Ñû4“м¬6ÜAZ|KI´8h|.Ã$:kÊQÔéNݼ»im:J{ „¿›Ucs‹±Y‘õx%U0þSGNDiA·¿ÄÂbU:vK”¡/ü§z£Ìiô·|Å×ÑËÀ‹c¾>Õ6¹€(<ÂÌ©Œ†}ÉKU%£”B=ìC"„Áðë4VmËeõɸÃ. ˡ³×ÈöS‹U¾ Ùÿsj¹àˆ<Ù%W«„I– Ït‹Ha#6ªU5ð—|×C¤7ú(Ôùž ½»“º¦›<”Û»“KS‡pß*ÙZ£T“•Mƒk‰¦¾t»,ƒÚƳڪÅÀdmKz,ú1>guűÂ;u5«íÉÅí½]5@Kí í†j‘¹]S]QËöË2ƒ ÉVs·Il$ˤÀÓZjä<¡ Ÿ¼õ¾˜Í;ôƲíÉW 8¥‚\¤å³¾YÚð%[Ò@ÈÜp˜‡S~Ä}óCÒݼڤƒG›B]®…À\úÚkÝšÜ@Œ›]TTëÒZ].bPBˆ" ­I¡?1X¹ÝËH=Iÿ2¼©ÂdA}³Ò>UÀ`¡¥ökGŠšÁÄD Â(e¬û_O%Bb+CÍ;,µ¸w‰=r-R§ì>*Q®›[\U®y<×¾²ÌQ£Â¥‰AûuW—å\óKLŲ¨ÂÍ0Ü›4»nøÌRƒYÀtWeDœô[?Gê'42J÷‹Ùœ¤R¬í»®:nÓ;˜* ãaÞºÔ™ÛÜ¢4µÕ”̱bM|2Ý›’_áë_fŸ_RáÃ2Ö|F†¾å@"cê­Q0Æᵈ†Zsu؉ ½EÌÛ„ÙÙÍ&jËŒŠbÚâÿìLèzÝ´!"V¢ŽÍñŸe(‡Ë\cX)NäîU,;OáÛ*¸køåMî‚EU]åÉ,ãÞìÃØEã]wR6¼^ù8cNÕdcÝTÈ«3¬³:kGïZ˜iÜßZ$Ñ ¡1Ì[xìMžEäöû99<åN쌅BÈÞcœH€5¡*I:˜5Ö\ÕU=:a$:18Y•.äáÑüÚŠi"º]1›]!-ýªââIeÎ_è:˜4½¿þ% Ù¿_ã'uç'yzRÑB4#1’ïMþ2 iDpçG¡!Qi@˜F /f'%ÓDå:|˜ž¾ÿþƒ¢$Ôb˜S!Ï ¢ö€€'ÍxRñÍ€8•6 ”ù¸<±êK€;Qi¯Ž’;ñg—–®š6kšk´Þ†g(‰4()V•µNëÀkIuŽ’0™í‹oMêt4¦•Šºîg³æµNé ˜i¢i³ˆ±F™ h;¡½»>kQB¯~x…è;´8\ b€9SfçÄ“B6é³^mÔîgÍ^ǵFÀÏyxí½¦=ͰÂ6ÆS mÃmLírHk˜vÚ öí 2ÀmLü»á<ßåÏ߆[B¶`â&îL¤Žqý#åa*rLG•Œ`ê¨hÅ;“ü‚ÌnÿöFfæd[í^o? m8<¹L8ó–¯/Ø¿¦moÿ†Ið†„…m“q¤p¦©e;<¸oKoõ6í84çÿŽðZ¸ŒøÚ…¬ãV©Ðp/1Ò2Q [ ¨¼CÑÇ#HêcpdþзœZKn4¼Á^6uBärŒù Pç6mñüvJÍœðNð?QæÍ¢ —Ó¢+ÿ:ìcï Ç:Iòþ-‘È\P6‹þpv¶‘…TG(ÿ’8p4goðã¿K/$¼¿Œles 1s,OsäÆóìþ°§µ*YÛÎs·ëžq§ZóøÖs.ß;ÅsEO îa”à×äÈDc9ô­à†7ÚßJñüÞ’^íàý«èïA·t"$N'„2_Yu17ïJ_p5ðL ]ƒò¹­Gêàñ‹Xÿº© &½„øÀô]˜bïbf2]#äAk¯I'%Å1à- f¿¾Ï”©LIJŒ–òö|àƒÎ¤O)wÏ `¸\ç‡mGßRjP™-ððb² u÷öAF°‹þ‰~W…‡9÷wøÙ liøw†gö­sp~x‹¿x‹xŒßxŽïxÿxùŽ€;Tix8.4.3/Python/Demo/tix/bitmaps/underline.xbm0000775000122200012240000000045307404771747021526 0ustar jeffhjeffh00000000000000#define underline_width 16 #define underline_height 16 static unsigned char underline_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x38, 0x1c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x70, 0x0e, 0xf0, 0x0f, 0xe0, 0x07, 0x00, 0x00, 0xf8, 0x1f}; Tix8.4.3/Python/Demo/tix/bitmaps/combobox.xbm0000775000122200012240000000160007404771747021344 0ustar jeffhjeffh00000000000000#define combobox_width 32 #define combobox_height 32 static unsigned char combobox_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3e, 0x04, 0x00, 0x80, 0x2a, 0x04, 0x00, 0x80, 0x2a, 0x04, 0x00, 0x80, 0x2a, 0x04, 0x00, 0x80, 0x2b, 0xfc, 0xff, 0xff, 0x3e, 0x08, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x3e, 0x08, 0x00, 0x00, 0x2a, 0x28, 0x49, 0x00, 0x2a, 0x08, 0x00, 0x00, 0x3e, 0x08, 0x00, 0x00, 0x22, 0x08, 0x00, 0x00, 0x22, 0x28, 0x49, 0x12, 0x22, 0x08, 0x00, 0x00, 0x22, 0x08, 0x00, 0x00, 0x22, 0x08, 0x00, 0x00, 0x22, 0x28, 0x49, 0x02, 0x22, 0x08, 0x00, 0x00, 0x3e, 0x08, 0x00, 0x00, 0x2a, 0x08, 0x00, 0x00, 0x2a, 0xf8, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Tix8.4.3/Python/Demo/tix/bitmaps/combobox.xpm0000775000122200012240000000441607404771747021372 0ustar jeffhjeffh00000000000000/* XPM */ static char * combobox_xpm[] = { "50 40 6 1", " s None c None", ". c black", "X c white", "o c #FFFF80808080", "O c gray70", "+ c #808000008080", " ", " ", " ", " .................................... XXXXXXX ", " .ooooooooooooooooooooooooooooooooooX X . . ", " .ooooooooooooooooooooooooooooooooooX X . . ", " .oooo.oooooooooooooooooooooooooooooX X . . ", " .oo.o..oo.o.oo.o.ooooooooooooooooooX X . . ", " .o..o.o.o.oo.oo.oo.ooooooooooooooooX X ... . ", " .oo.oo.oo.o.oo.ooo.ooooooooooooooooX X . . ", " .ooooooooooooooooooooooooooooooooooX X . ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X...... ", " ", " ", " ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " X............................................ ", " X.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.OOOOX. ", " X.O+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.OX OX. ", " X.O++OOO+OO+++OOOOOOOOOOOOOOOOOOOOOOOX.X ..X. ", " X.O+O+O+OOO+O+OOOOOOOOOOOOOOOOOOOOOOOX.OOOOX. ", " X.O++OOO+OO+++OOOOOOOOOOOOOOOOOOOOOOOX.OOOOX. ", " X.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.XXXXX. ", " X.O.....X..........................OOX.X .X. ", " X.OX...XXX.X.XX.XX.................OOX.X .X. ", " X.OX.X..X..X.XX..XX.X..............OOX.X .X. ", " X.O.X...X..X.X...X..X..............OOX.X .X. ", " X.OOOOOOOOOOOOOOOOOOOOOOOO+OOOOOOOOOOX.X .X. ", " X.OOOOOOOOO+OOO+OOOOO+OOOO+OOOOOOOOOOX.X .X. ", " X.O+++OO+OO+O+OO++O++OO+OO+OOOOOOOOOOX.X...X. ", " X.OO+OO++OO+O+OO+OOO+OO+O++OOOOOOOOOOX.OOOOX. ", " X.OOOOOOOO+OOOOO++OO+OOOOOOOOOOOOOOOOX.OOOOX. ", " X.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.X .X. ", " X.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.O .OX. ", " X.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX.OOOOX. ", " X.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXX. ", " X............................................ ", " ", " ", " "}; Tix8.4.3/Python/Demo/tix/bitmaps/about.xpm0000775000122200012240000000440607404771747020673 0ustar jeffhjeffh00000000000000/* XPM */ static char * about_xpm[] = { "50 40 7 1", " s None c None", ". c black", "X c white", "o c gray70", "O c navy", "+ c red", "@ c yellow", " ", " ", " ", " ................................. ", " ..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo. ", " .XooooooooooooooooooooooooooooooXo. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooXo. ", " ..oooooooooooooooooooooooooooooooXo. ", " ...............................XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo.++++ ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo+++ ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo+++++ ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo++++++ ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo+++ + ", " .OOOOO@@@@@OOOOOOOOOOOOOOOOOOO.Xo++. ", " .OOOOOOO@OOOOO@OOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOO@OOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOO@OOOO@@OOO@OOO@OOOOOOO.XoXo. ", " .OOOOOOO@OOOOO@OOOO@O@OOOOOOOO.XoXo. ", " .OOOOOOO@OOOOO@OOOOO@OOOOOOOOO.XoXo. ", " .OOOOOOO@OOOOO@OOOOO@OOOOOOOOO.XoXo. ", " .OOOOOOO@OOOOO@OOOO@O@OOOOOOOO.XoXo. ", " .OOOOOOO@OOOO@@@OO@OOO@OOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XoXo. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo.. ", " .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.X. ", " ............................. ", " ", " ", " "}; Tix8.4.3/Python/Demo/tix/bitmaps/netw.xbm0000775000122200012240000000156407404771747020522 0ustar jeffhjeffh00000000000000#define netw_width 32 #define netw_height 32 static unsigned char netw_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x8a, 0x51, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x4a, 0x50, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x02, 0x40, 0xfe, 0x7f, 0x52, 0x55, 0x02, 0x40, 0xaa, 0x6a, 0xfa, 0x5f, 0xfe, 0x7f, 0x0a, 0x50, 0xfe, 0x7f, 0x0a, 0x52, 0x80, 0x00, 0x0a, 0x52, 0x80, 0x00, 0x8a, 0x51, 0x80, 0x00, 0x0a, 0x50, 0x80, 0x00, 0x4a, 0x50, 0x80, 0x00, 0x0a, 0x50, 0xe0, 0x03, 0x0a, 0x50, 0x20, 0x02, 0xfa, 0xdf, 0x3f, 0x03, 0x02, 0x40, 0xa0, 0x02, 0x52, 0x55, 0xe0, 0x03, 0xaa, 0x6a, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Tix8.4.3/Python/Demo/tix/bitmaps/netw.xpm0000775000122200012240000000255207404771747020536 0ustar jeffhjeffh00000000000000/* XPM */ static char * netw_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 7 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #404040", "+ c blue", "@ c red", /* pixels */ " ", " .............. ", " .XXXXXXXXXXXX. ", " .XooooooooooO. ", " .Xo.......XoO. ", " .Xo.++++o+XoO. ", " .Xo.++++o+XoO. ", " .Xo.++oo++XoO. ", " .Xo.++++++XoO. ", " .Xo.+o++++XoO. ", " .Xo.++++++XoO. ", " .Xo.XXXXXXXoO. ", " .XooooooooooO. ", " .Xo@ooo....oO. ", " .............. .XooooooooooO. ", " .XXXXXXXXXXXX. .XooooooooooO. ", " .XooooooooooO. .OOOOOOOOOOOO. ", " .Xo.......XoO. .............. ", " .Xo.++++o+XoO. @ ", " .Xo.++++o+XoO. @ ", " .Xo.++oo++XoO. @ ", " .Xo.++++++XoO. @ ", " .Xo.+o++++XoO. @ ", " .Xo.++++++XoO. ..... ", " .Xo.XXXXXXXoO. .XXX. ", " .XooooooooooO.@@@@@@.X O. ", " .Xo@ooo....oO. .OOO. ", " .XooooooooooO. ..... ", " .XooooooooooO. ", " .OOOOOOOOOOOO. ", " .............. ", " "}; Tix8.4.3/Python/Demo/tix/bitmaps/capital.xbm0000775000122200012240000000044507404771747021157 0ustar jeffhjeffh00000000000000#define capital_width 16 #define capital_height 16 static unsigned char capital_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x08, 0x30, 0x0c, 0x30, 0x06, 0x30, 0x03, 0xb0, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xb0, 0x03, 0x30, 0x07, 0x30, 0x0e, 0x30, 0x1c, 0x00, 0x00}; Tix8.4.3/Python/Demo/tix/bitmaps/filebox.xbm0000775000122200012240000000157507404771747021177 0ustar jeffhjeffh00000000000000#define filebox_width 32 #define filebox_height 32 static unsigned char filebox_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x04, 0x00, 0x00, 0x20, 0xe4, 0xff, 0xff, 0x27, 0x24, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, 0x24, 0xe4, 0xff, 0xff, 0x27, 0x04, 0x00, 0x00, 0x20, 0xe4, 0x7f, 0xfe, 0x27, 0x24, 0x50, 0x02, 0x25, 0x24, 0x40, 0x02, 0x24, 0x24, 0x50, 0x02, 0x25, 0x24, 0x40, 0x02, 0x24, 0x24, 0x50, 0x02, 0x25, 0x24, 0x40, 0x02, 0x24, 0x24, 0x50, 0x02, 0x25, 0xe4, 0x7f, 0xfe, 0x27, 0x04, 0x00, 0x00, 0x20, 0xe4, 0xff, 0xff, 0x27, 0x24, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, 0x24, 0xe4, 0xff, 0xff, 0x27, 0x04, 0x00, 0x00, 0x20, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Tix8.4.3/Python/Demo/tix/bitmaps/filebox.xpm0000775000122200012240000000440607404771747021211 0ustar jeffhjeffh00000000000000/* XPM */ static char * filebox_xpm[] = { "50 40 6 1", " s None c None", ". c white", "X c gray80", "o c black", "O c #FFFF80808080", "+ c gray70", " ", " ", " ", " ............................................ ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXooXooXoXooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXooXooXoXooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXooooooooooooooooooooooooooooooooooooo.XXo ", " .XXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XXo ", " .XXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.XXo ", " .XX......................................XXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXoooooooooooooooo.XXXXoooooooooooooooo.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XXo+++++++++++++++.XXXXo+++++++++++++++.XXo ", " .XX.................XXXX.................XXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXooXooXoXooXoXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXooXooXoXooXoXooXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .XXoooooooooooooooooooooooooooooooooooooo.Xo ", " .XXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo ", " .XXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Xo ", " .XX.......................................Xo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo ", " .ooooooooooooooooooooooooooooooooooooooooooo ", " ", " ", " "}; Tix8.4.3/Python/Demo/tix/bitmaps/drivea.xbm0000775000122200012240000000157207404771747021016 0ustar jeffhjeffh00000000000000#define drivea_width 32 #define drivea_height 32 static unsigned char drivea_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x08, 0x00, 0x00, 0x18, 0xa8, 0xaa, 0xaa, 0x1a, 0x48, 0x55, 0xd5, 0x1d, 0xa8, 0xaa, 0xaa, 0x1b, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xfa, 0xaf, 0x1a, 0xc8, 0xff, 0xff, 0x1d, 0xa8, 0xfa, 0xaf, 0x1a, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xaa, 0xaa, 0x1a, 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xaa, 0xaa, 0x1a, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Tix8.4.3/Python/Demo/tix/bitmaps/drivea.xpm0000775000122200012240000000253307404771747021032 0ustar jeffhjeffh00000000000000/* XPM */ static char * drivea_xpm[] = { /* width height ncolors chars_per_pixel */ "32 32 5 1", /* colors */ " s None c None", ". c #000000000000", "X c white", "o c #c000c000c000", "O c #800080008000", /* pixels */ " ", " ", " ", " ", " ", " ", " ", " ", " ", " .......................... ", " .XXXXXXXXXXXXXXXXXXXXXXXo. ", " .XooooooooooooooooooooooO. ", " .Xooooooooooooooooo..oooO. ", " .Xooooooooooooooooo..oooO. ", " .XooooooooooooooooooooooO. ", " .Xoooooooo.......oooooooO. ", " .Xoo...................oO. ", " .Xoooooooo.......oooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .XooooooooooooooooooooooO. ", " .oOOOOOOOOOOOOOOOOOOOOOOO. ", " .......................... ", " ", " ", " ", " ", " ", " ", " ", " "}; Tix8.4.3/Python/Demo/tix/bitmaps/justify.xbm0000775000122200012240000000044507404771747021237 0ustar jeffhjeffh00000000000000#define justify_width 16 #define justify_height 16 static unsigned char justify_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xdb, 0x00, 0x00, 0x7c, 0xdb, 0x00, 0x00, 0xbc, 0xf7, 0x00, 0x00, 0xdc, 0xde, 0x00, 0x00, 0x6c, 0xdf, 0x00, 0x00, 0x6c, 0xef, 0x00, 0x00, 0xdc, 0xdf}; Tix8.4.3/Python/Demo/tix/bitmaps/bold.xbm0000775000122200012240000000043407404771747020460 0ustar jeffhjeffh00000000000000#define bold_width 16 #define bold_height 16 static unsigned char bold_bits[] = { 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0xfc, 0x0f, 0x18, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1c, 0xf8, 0x0f, 0xf8, 0x0f, 0x18, 0x18, 0x18, 0x30, 0x18, 0x30, 0x18, 0x38, 0xfc, 0x3f, 0xfc, 0x1f}; Tix8.4.3/Python/Demo/tix/bitmaps/exit.xpm0000775000122200012240000000436507404771747020536 0ustar jeffhjeffh00000000000000/* XPM */ static char * exit_xpm[] = { "50 40 5 1", " s None c None", ". c black", "X c white", "o c #000080800000", "O c yellow", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ....................................... ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XoooooooooooooooooooooooooooooooooooX. ", " .XoooooooooooooooooooooooooooooooooooX. ", " .XoooooooooooooooooooooooOoooooooooooX. ", " .XoooooooooooooooooooooooOOooooooooooX. ", " .XoooooooooooooooooooooooOOOoooooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOooooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOOoooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOOOooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOOOOoooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOOOooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOOoooooooX. ", " .XoooooOOOOOOOOOOOOOOOOOOOOOOooooooooX. ", " .XoooooooooooooooooooooooOOOoooooooooX. ", " .XoooooooooooooooooooooooOOooooooooooX. ", " .XoooooooooooooooooooooooOoooooooooooX. ", " .XoooooooooooooooooooooooooooooooooooX. ", " .XoooooooooooooooooooooooooooooooooooX. ", " .XoooooooooooooooooooooooooooooooooooX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " ....................................... ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; Tix8.4.3/Python/Demo/tix/bitmaps/italic.xbm0000775000122200012240000000044207404771747021004 0ustar jeffhjeffh00000000000000#define italic_width 16 #define italic_height 16 static unsigned char italic_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x80, 0x3f, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x80, 0x01, 0x80, 0x01, 0xc0, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x60, 0x00, 0xfc, 0x01, 0xfc, 0x01}; Tix8.4.3/Python/Demo/tix/INSTALL.txt0000775000122200012240000000734607404771747017251 0ustar jeffhjeffh00000000000000$Id: INSTALL.txt,v 1.1 2001/12/09 23:29:43 idiscovery Exp $ Installing Tix.py ---------------- 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 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.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.3.3 for this release of Tix.py. 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 /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'. To build statically, modify the Modules/Setup file to link in the Tix library according to the comments in the file. On Linux this looks like: # *** Always uncomment this (leave the leading underscore in!): _tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \ # *** Uncomment and edit to reflect where your Tcl/Tk libraries are: -L/usr/local/lib \ # *** Uncomment and edit to reflect where your Tcl/Tk headers are: -I/usr/local/include \ # *** Uncomment and edit to reflect where your X11 header files are: -I/usr/X11R6/include \ # *** Or uncomment this for Solaris: # -I/usr/openwin/include \ # *** Uncomment and edit for BLT extension only: # -DWITH_BLT -I/usr/local/blt/blt8.0-unoff/include -lBLT8.0 \ # *** Uncomment and edit for PIL (TkImaging) extension only: # (See http://www.pythonware.com/products/pil/ for more info) # -DWITH_PIL -I../Extensions/Imaging/libImaging tkImaging.c \ # *** Uncomment and edit for TOGL extension only: # -DWITH_TOGL togl.c \ # *** Uncomment and edit for Tix extension only: -DWITH_TIX -ltix8.1.8.3 \ # *** Uncomment and edit to reflect your Tcl/Tk versions: -ltk8.3 -ltcl8.3 \ # *** Uncomment and edit to reflect where your X11 libraries are: -L/usr/X11R6/lib \ # *** Or uncomment this for Solaris: # -L/usr/openwin/lib \ # *** Uncomment these for TOGL extension only: # -lGL -lGLU -lXext -lXmu \ # *** Uncomment for AIX: # -lld \ # *** Always uncomment this; X11 libraries to link with: -lX11 4) Rebuild Python and reinstall. You should now have a working Tix implementation in Python. To see if all is as it should be, run the 'tixwidgets.py' script in the Demo/tix directory. Under X windows, do /usr/local/bin/python Demo/tix/tixwidgets.py 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.3 \ TK_LIBRARY=/usr/local/lib/tk8.3 \ TIX_LIBRARY=/usr/local/lib/tix8.1 \ /usr/local/bin/python Demo/tix/tixwidgets.py If you find any bugs or have suggestions for improvement, please report them via http://tix.sourceforge.net Tix8.4.3/Python/Tix.py0000775000122200012240000017147007426313513015013 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Tix.py,v 1.4 2002/01/31 19:13:15 idiscovery Exp $ # # 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 # (TixWidget.__init__) has been taken from Tkinter (Widget.__init__) # and will break if there are major changes in Tkinter. # # The Tix widgets are represented by a class hierarchy in python with proper # inheritance of base classes. # # As a result after creating a 'w = StdButtonBox', I can write # w.ok['text'] = 'Who Cares' # or w.ok['bg'] = w['bg'] # or even w.ok.invoke() # etc. # # Compare the demo tixwidgets.py to the original Tcl program and you will # appreciate the advantages. # import string from Tkinter import * from Tkinter import _flatten, _cnfmerge, _default_root # WARNING - TkVersion is a limited precision floating point number if TkVersion < 3.999: raise ImportError, "This version of Tix.py requires Tk 4.0 or higher" import _tkinter # If this fails your Python may not be configured for Tk # TixVersion = string.atof(tkinter.TIX_VERSION) # If this fails your Python may not be configured for Tix # WARNING - TixVersion is a limited precision floating point number # Some more constants (for consistency with Tkinter) WINDOW = 'window' TEXT = 'text' STATUS = 'status' IMMEDIATE = 'immediate' IMAGE = 'image' IMAGETEXT = 'imagetext' BALLOON = 'balloon' AUTO = 'auto' ACROSSTOP = 'acrosstop' # Some constants used by Tkinter dooneevent() 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 # BEWARE - this is implemented by copying some code from the Widget class # in Tkinter (to override Widget initialization) and is therefore # liable to break. import Tkinter, os # Could probably add this to Tkinter.Misc class tixCommand: """The tix commands provide access to miscellaneous elements of Tix's internal state and the Tix application context. Most of the information manipulated by these commands pertains to the application as a whole, or to a screen or display, rather than to a particular window. 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 directories under which the tix_getimage and tix_getbitmap commands will search for image files. The standard bitmap directory is $TIX_LIBRARY/bitmaps. The addbitmapdir command 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 dictionary all of the available options. 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 configuration options. """ # Copied from Tkinter.py if kw: cnf = _cnfmerge((cnf, kw)) elif cnf: cnf = _cnfmerge(cnf) if cnf is None: cnf = {} for x in self.tk.split(self.tk.call('tix', 'configure')): cnf[x[0][1:]] = (x[0][1:],) + x[1:] return cnf if type(cnf) is StringType: x = self.tk.split(self.tk.call('tix', 'configure', '-'+cnf)) return (x[0][1:],) + x[1:] return self.tk.call(('tix', 'configure') + self._options(cnf)) def tix_filedialog(self, dlgclass=None): """Returns the file selection dialog that may be shared among different calls from 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 (see the tix_addbitmapdir command above). By using tix_getbitmap, you can avoid 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 directories (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_ getimage, you can advoid hard coding the pathnames of the image files in your application. When successful, 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 include: 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 resetoptions 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 Tix has been has imported and inited, 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 under Unix, 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: """The Tix Form geometry manager Widgets can be arranged by specifying attachments to other widgets. See Tix documentation for complete details""" def config(self, cnf={}, **kw): apply(self.tk.call, ('tixForm', self._w) + self._options(cnf, kw)) form = config def __setitem__(self, key, value): Form.form(self, {key: value}) def check(self): return self.tk.call('tixForm', 'check', self._w) def forget(self): self.tk.call('tixForm', 'forget', self._w) def grid(self, xsize=0, ysize=0): if (not xsize) and (not ysize): x = self.tk.call('tixForm', 'grid', self._w) y = self.tk.splitlist(x) z = () for x in y: z = z + (self.tk.getint(x),) return z self.tk.call('tixForm', 'grid', self._w, xsize, ysize) def info(self, option=None): if not option: return self.tk.call('tixForm', 'info', self._w) if option[0] != '-': option = '-' + option return self.tk.call('tixForm', 'info', self._w, option) def slaves(self): return map(self._nametowidget, self.tk.splitlist( 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. 2) It is possible to give the name of an existing TK widget. These are child widgets created automatically by a Tix mega-widget. The Tk call to create these widgets is therefore bypassed in TixWidget.__init__ Both options are for use by subclasses only. """ def __init__ (self, master=None, widgetName=None, static_options=None, cnf={}, kw={}): # Merge keywords and dictionary arguments if kw: cnf = _cnfmerge((cnf, kw)) else: cnf = _cnfmerge(cnf) # Move static options into extra. static_options must be # a list of keywords (or None). extra=() if static_options: for k,v in cnf.items()[:]: if k in static_options: extra = extra + ('-' + k, v) del cnf[k] self.widgetName = widgetName Widget._setup(self, master, cnf) # If widgetName is None, this is a dummy creation call where the # corresponding Tk widget has already been created by Tix if widgetName: apply(self.tk.call, (widgetName, self._w) + extra) # Non-static options - to be done via a 'config' command if cnf: Widget.config(self, cnf) # Dictionary to hold subwidget names for easier access. We can't # use the children list because the public Tix names may not be the # same as the pathname component self.subwidget_list = {} # We set up an attribute access function so that it is possible to # do w.ok['text'] = 'Hello' rather than w.subwidget('ok')['text'] = 'Hello' # when w is a StdButtonBox. # We can even do w.ok.invoke() because w.ok is subclassed from the # Button class if you go through the proper constructors def __getattr__(self, name): if self.subwidget_list.has_key(name): return self.subwidget_list[name] 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: raise TclError, "Subwidget " + name + " not child of " + self._name # Remove header of name and leading dot n = n[len(self._w)+1:] return self._nametowidget(n) def subwidgets_all(self): """Return all subwidgets.""" names = self._subwidget_names() if not names: return [] retlist = [] for name in names: name = name[len(self._w)+1:] try: retlist.append(self._nametowidget(name)) except: # some of the widgets are unknown e.g. border in LabelFrame pass 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) except TclError: return None def _subwidget_names(self): """Return the name of all subwidgets.""" try: x = self.tk.call(self._w, 'subwidgets', '-all') return self.tk.split(x) except TclError: return None def config_all(self, option, value): """Set configuration options for all subwidgets (and self).""" if option == '': return elif type(option) != type(''): option = `option` if type(value) != type(''): value = `value` names = self._subwidget_names() for name in names: self.tk.call(name, 'configure', '-' + option, value) # Subwidgets are child widgets created automatically by mega-widgets. # In python, we have to create these subwidgets manually to mirror their # existence in Tk/Tix. class TixSubWidget(TixWidget): """Subwidget class. This is used to mirror child widgets automatically created by Tix/Tk as part of a mega-widget in Python (which is not informed of this)""" def __init__(self, master, name, destroy_physically=1, check_intermediate=1): if check_intermediate: path = master._subwidget_name(name) try: path = path[len(master._w)+1:] plist = string.splitfields(path, '.') except: plist = [] if (not check_intermediate) or len(plist) < 2: # immediate descendant TixWidget.__init__(self, master, None, None, {'name' : name}) else: # Ensure that the intermediate widgets exist parent = master for i in range(len(plist) - 1): n = string.joinfields(plist[:i+1], '.') try: w = master._nametowidget(n) parent = w except KeyError: # Create the intermediate widget parent = TixSubWidget(parent, plist[i], destroy_physically=0, check_intermediate=0) TixWidget.__init__(self, parent, None, None, {'name' : name}) self.destroy_physically = destroy_physically def destroy(self): # For some widgets e.g., a NoteBook, when we call destructors, # we must be careful not to destroy the frame widget since this # also destroys the parent NoteBook thus leading to an exception # in Tkinter when it finally calls Tcl to destroy the NoteBook for c in self.children.values(): c.destroy() if self.master.children.has_key(self._name): del self.master.children[self._name] if self.master.subwidget_list.has_key(self._name): del self.master.subwidget_list[self._name] if self.destroy_physically: # This is bypassed only for a few widgets self.tk.call('destroy', self._w) # Useful func. to split Tcl lists and return as a dict. From Tkinter.py def _lst2dict(lst): dict = {} for x in lst: dict[x[0][1:]] = (x[0][1:],) + x[1:] return dict # Useful class to create a display style - later shared by many items. # Contributed by Steffen Kremser class DisplayStyle: """DisplayStyle - handle configuration options shared by (multiple) Display Items""" def __init__(self, itemtype, cnf={}, **kw ): master = _default_root # global from Tkinter if not master and cnf.has_key('refwindow'): master=cnf['refwindow'] elif not master and kw.has_key('refwindow'): master= kw['refwindow'] elif not master: raise RuntimeError, "Too early to create display style: no root window" self.tk = master.tk self.stylename = apply(self.tk.call, ('tixDisplayStyle', itemtype) + self._options(cnf,kw) ) def __str__(self): return self.stylename def _options(self, cnf, kw ): if kw and cnf: cnf = _cnfmerge((cnf, kw)) elif kw: cnf = kw opts = () for k, v in cnf.items(): opts = opts + ('-'+k, v) return opts def delete(self): self.tk.call(self.stylename, 'delete') del(self) def __setitem__(self,key,value): self.tk.call(self.stylename, 'configure', '-%s'%key, value) def config(self, cnf={}, **kw): return _lst2dict( self.tk.split( apply(self.tk.call, (self.stylename, 'configure') + self._options(cnf,kw)))) def __getitem__(self,key): return self.tk.call(self.stylename, 'cget', '-%s'%key) ###################################################### ### The Tix Widget classes - in alphabetical order ### ###################################################### class Balloon(TixWidget): """Balloon help widget. Subwidget Class --------- ----- label Label message Message""" def __init__(self, master=None, cnf={}, **kw): # static seem to be -installcolormap -initwait -statusbar -cursor static = ['options', 'installcolormap', 'initwait', 'statusbar', 'cursor'] TixWidget.__init__(self, master, 'tixBalloon', static, cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label', destroy_physically=0) self.subwidget_list['message'] = _dummyLabel(self, 'message', destroy_physically=0) def bind_widget(self, widget, cnf={}, **kw): """Bind balloon widget to another. One balloon widget may be bound to several widgets at the same time""" apply(self.tk.call, (self._w, 'bind', widget._w) + self._options(cnf, kw)) def unbind_widget(self, widget): self.tk.call(self._w, 'unbind', widget._w) 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', ['orientation', 'options'], cnf, kw) def add(self, name, cnf={}, **kw): """Add a button with given name to box.""" btn = apply(self.tk.call, (self._w, 'add', name) + self._options(cnf, kw)) self.subwidget_list[name] = _dummyButton(self, name) return btn def invoke(self, name): if self.subwidget_list.has_key(name): self.tk.call(self._w, 'invoke', name) 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 --------- ----- entry Entry arrow Button slistbox ScrolledListBox tick Button cross Button : present if created with the fancy option""" def __init__ (self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixComboBox', ['editable', 'dropdown', 'fancy', 'options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') self.subwidget_list['arrow'] = _dummyButton(self, 'arrow') self.subwidget_list['slistbox'] = _dummyScrolledListBox(self, 'slistbox') try: self.subwidget_list['tick'] = _dummyButton(self, 'tick') self.subwidget_list['cross'] = _dummyButton(self, 'cross') except TypeError: # unavailable when -fancy not specified pass def add_history(self, str): self.tk.call(self._w, 'addhistory', str) def append_history(self, str): self.tk.call(self._w, 'appendhistory', str) def insert(self, index, str): self.tk.call(self._w, 'insert', index, str) def pick(self, index): self.tk.call(self._w, 'pick', index) 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 --------- ----- incr Button decr Button entry Entry label Label""" def __init__ (self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixControl', ['options'], cnf, kw) self.subwidget_list['incr'] = _dummyButton(self, 'incr') self.subwidget_list['decr'] = _dummyButton(self, 'decr') self.subwidget_list['label'] = _dummyLabel(self, 'label') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') def decrement(self): self.tk.call(self._w, 'decr') def increment(self): self.tk.call(self._w, 'incr') def invoke(self): self.tk.call(self._w, 'invoke') def update(self): self.tk.call(self._w, 'update') 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 --------- ----- hlist HList hsb Scrollbar vsb Scrollbar""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixDirList', ['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 chdir(self, dir): self.tk.call(self._w, 'chdir', dir) 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 --------- ----- hlist HList hsb Scrollbar vsb Scrollbar""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixDirTree', ['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 chdir(self, dir): 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 --------- ----- cancel Button ok Button hidden Checkbutton types ComboBox dir ComboBox file ComboBox dirlist ScrolledListBox filelist ScrolledListBox""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixExFileSelectBox', ['options'], cnf, kw) self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['hidden'] = _dummyCheckbutton(self, 'hidden') self.subwidget_list['types'] = _dummyComboBox(self, 'types') self.subwidget_list['dir'] = _dummyComboBox(self, 'dir') self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist') self.subwidget_list['file'] = _dummyComboBox(self, 'file') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') def filter(self): self.tk.call(self._w, 'filter') def invoke(self): 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 ---------- ----- fsbox ExFileSelectBox""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixExFileSelectDialog', ['options'], cnf, kw) self.subwidget_list['fsbox'] = _dummyExFileSelectBox(self, 'fsbox') def popup(self): self.tk.call(self._w, 'popup') def popdown(self): self.tk.call(self._w, 'popdown') 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 --------- ----- selection ComboBox filter ComboBox dirlist ScrolledListBox filelist ScrolledListBox""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixFileSelectBox', ['options'], cnf, kw) self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') self.subwidget_list['filter'] = _dummyComboBox(self, 'filter') self.subwidget_list['selection'] = _dummyComboBox(self, 'selection') def apply_filter(self): # name of subwidget is same as command self.tk.call(self._w, 'filter') def invoke(self): self.tk.call(self._w, 'invoke') # Should inherit from a Dialog class class FileSelectDialog(TixWidget): """FileSelectDialog - Motif style file select dialog. Subwidgets Class ---------- ----- btns StdButtonBox fsbox FileSelectBox""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixFileSelectDialog', ['options'], cnf, kw) self.subwidget_list['btns'] = _dummyStdButtonBox(self, 'btns') self.subwidget_list['fsbox'] = _dummyFileSelectBox(self, 'fsbox') def popup(self): self.tk.call(self._w, 'popup') def popdown(self): self.tk.call(self._w, 'popdown') 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 ---------- ----- button Button entry Entry""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixFileEntry', ['dialogtype', 'options'], cnf, kw) self.subwidget_list['button'] = _dummyButton(self, 'button') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') def invoke(self): self.tk.call(self._w, 'invoke') def file_dialog(self): # XXX return python object pass 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""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixHList', ['columns', 'options'], cnf, kw) def add(self, entry, cnf={}, **kw): return apply(self.tk.call, (self._w, 'add', entry) + self._options(cnf, kw)) def add_child(self, parent=None, cnf={}, **kw): if not parent: parent = '' return apply(self.tk.call, (self._w, 'addchild', parent) + self._options(cnf, kw)) def anchor_set(self, entry): self.tk.call(self._w, 'anchor', 'set', entry) def anchor_clear(self): self.tk.call(self._w, 'anchor', 'clear') def column_width(self, col=0, width=None, chars=None): if not chars: return self.tk.call(self._w, 'column', 'width', col, width) else: return self.tk.call(self._w, 'column', 'width', col, '-char', chars) def delete_all(self): self.tk.call(self._w, 'delete', 'all') def delete_entry(self, entry): self.tk.call(self._w, 'delete', 'entry', entry) def delete_offsprings(self, entry): self.tk.call(self._w, 'delete', 'offsprings', entry) def delete_siblings(self, entry): self.tk.call(self._w, 'delete', 'siblings', entry) def dragsite_set(self, index): self.tk.call(self._w, 'dragsite', 'set', index) def dragsite_clear(self): self.tk.call(self._w, 'dragsite', 'clear') def dropsite_set(self, index): self.tk.call(self._w, 'dropsite', 'set', index) def dropsite_clear(self): self.tk.call(self._w, 'dropsite', 'clear') def header_create(self, col, cnf={}, **kw): apply(self.tk.call, (self._w, 'header', 'create', col) + self._options(cnf, kw)) def header_configure(self, col, cnf={}, **kw): if cnf is None: return _lst2dict( self.tk.split( self.tk.call(self._w, 'header', 'configure', col))) apply(self.tk.call, (self._w, 'header', 'configure', col) + self._options(cnf, kw)) def header_cget(self, col, opt): return self.tk.call(self._w, 'header', 'cget', col, opt) def header_exists(self, col): return self.tk.call(self._w, 'header', 'exists', col) def header_delete(self, col): self.tk.call(self._w, 'header', 'delete', col) def header_size(self, col): return self.tk.call(self._w, 'header', 'size', col) def hide_entry(self, entry): self.tk.call(self._w, 'hide', 'entry', entry) def indicator_create(self, entry, cnf={}, **kw): apply(self.tk.call, (self._w, 'indicator', 'create', entry) + self._options(cnf, kw)) def indicator_configure(self, entry, cnf={}, **kw): if cnf is None: return _lst2dict( self.tk.split( self.tk.call(self._w, 'indicator', 'configure', entry))) apply(self.tk.call, (self._w, 'indicator', 'configure', entry) + self._options(cnf, kw)) def indicator_cget(self, entry, opt): return self.tk.call(self._w, 'indicator', 'cget', entry, opt) def indicator_exists(self, entry): return self.tk.call (self._w, 'indicator', 'exists', entry) def indicator_delete(self, entry): self.tk.call(self._w, 'indicator', 'delete', entry) def indicator_size(self, entry): return self.tk.call(self._w, 'indicator', 'size', entry) def info_anchor(self): return self.tk.call(self._w, 'info', 'anchor') def info_children(self, entry=None): c = self.tk.call(self._w, 'info', 'children', entry) return self.tk.splitlist(c) def info_data(self, entry): return self.tk.call(self._w, 'info', 'data', entry) def info_exists(self, entry): return self.tk.call(self._w, 'info', 'exists', entry) def info_hidden(self, entry): return self.tk.call(self._w, 'info', 'hidden', entry) def info_next(self, entry): return self.tk.call(self._w, 'info', 'next', entry) def info_parent(self, entry): return self.tk.call(self._w, 'info', 'parent', entry) def info_prev(self, entry): return self.tk.call(self._w, 'info', 'prev', entry) def info_selection(self): c = self.tk.call(self._w, 'info', 'selection') return self.tk.splitlist(c) def item_cget(self, entry, col, opt): return self.tk.call(self._w, 'item', 'cget', entry, col, opt) def item_configure(self, entry, col, cnf={}, **kw): if cnf is None: return _lst2dict( self.tk.split( self.tk.call(self._w, 'item', 'configure', entry, col))) apply(self.tk.call, (self._w, 'item', 'configure', entry, col) + self._options(cnf, kw)) def item_create(self, entry, col, cnf={}, **kw): apply(self.tk.call, (self._w, 'item', 'create', entry, col) + self._options(cnf, kw)) def item_exists(self, entry, col): return self.tk.call(self._w, 'item', 'exists', entry, col) def item_delete(self, entry, col): self.tk.call(self._w, 'item', 'delete', entry, col) def nearest(self, y): return self.tk.call(self._w, 'nearest', y) def see(self, entry): self.tk.call(self._w, 'see', entry) def selection_clear(self, cnf={}, **kw): apply(self.tk.call, (self._w, 'selection', 'clear') + self._options(cnf, kw)) def selection_includes(self, entry): return self.tk.call(self._w, 'selection', 'includes', entry) def selection_set(self, first, last=None): self.tk.call(self._w, 'selection', 'set', first, last) def show_entry(self, entry): return self.tk.call(self._w, 'show', 'entry', entry) def xview(self, *args): apply(self.tk.call, (self._w, 'xview') + args) def yview(self, *args): apply(self.tk.call, (self._w, 'yview') + args) class InputOnly(TixWidget): """InputOnly - Invisible widget. Subwidgets - None""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixInputOnly', None, cnf, kw) 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 ---------- ----- label Label entry Entry""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixLabelEntry', ['labelside','options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') 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 ---------- ----- label Label frame Frame""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixLabelFrame', ['labelside','options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') 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, 'tixListNoteBook', ['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). Subwidgets Class ---------- ----- nbframe NoteBookFrame page widgets added dynamically with the add method""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self,master,'tixNoteBook', ['options'], cnf, kw) self.subwidget_list['nbframe'] = TixSubWidget(self, 'nbframe', destroy_physically=0) 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 delete(self, name): self.tk.call(self._w, 'delete', name) def page(self, name): return self.subwidget(name) def pages(self): # Can't call subwidgets_all directly because we don't want .nbframe names = self.tk.split(self.tk.call(self._w, 'pages')) ret = [] for x in names: ret.append(self.subwidget(x)) return ret def raise_page(self, name): # raise is a python keyword self.tk.call(self._w, 'raise', name) def raised(self): return self.tk.call(self._w, 'raised') class NoteBookFrame(TixWidget): """Will be added when Tix documentation is available !!!""" pass class OptionMenu(TixWidget): """OptionMenu - creates a menu button of options. Subwidget Class --------- ----- menubutton Menubutton menu Menu""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixOptionMenu', ['options'], cnf, kw) self.subwidget_list['menubutton'] = _dummyMenubutton(self, 'menubutton') self.subwidget_list['menu'] = _dummyMenu(self, 'menu') def add_command(self, name, cnf={}, **kw): apply(self.tk.call, (self._w, 'add', 'command', name) + self._options(cnf, kw)) def add_separator(self, name, cnf={}, **kw): apply(self.tk.call, (self._w, 'add', 'separator', name) + self._options(cnf, kw)) def delete(self, name): self.tk.call(self._w, 'delete', name) def disable(self, name): self.tk.call(self._w, 'disable', name) def enable(self, name): self.tk.call(self._w, 'enable', name) 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 ---------- ----- g/p widgets added dynamically with the add method.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixPanedWindow', ['orientation', 'options'], cnf, kw) 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, check_intermediate=0) return self.subwidget_list[name] def panes(self): names = self.tk.call(self._w, 'panes') ret = [] for x in names: ret.append(self.subwidget(x)) return ret 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 ---------- ----- menubutton Menubutton menu Menu""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixPopupMenu', ['options'], cnf, kw) self.subwidget_list['menubutton'] = _dummyMenubutton(self, 'menubutton') self.subwidget_list['menu'] = _dummyMenu(self, 'menu') def bind_widget(self, widget): self.tk.call(self._w, 'bind', widget._w) def unbind_widget(self, widget): self.tk.call(self._w, 'unbind', widget._w) def post_widget(self, widget, x, y): self.tk.call(self._w, 'post', widget._w, x, y) class ResizeHandle(TixWidget): """Internal widget to draw resize handles on Scrolled widgets.""" def __init__(self, master, cnf={}, **kw): # There seems to be a Tix bug rejecting the configure method # Let's try making the flags -static flags = ['options', 'command', 'cursorfg', 'cursorbg', 'handlesize', 'hintcolor', 'hintwidth', 'x', 'y'] # In fact, x y height width are configurable TixWidget.__init__(self, master, 'tixResizeHandle', flags, cnf, kw) def attach_widget(self, widget): self.tk.call(self._w, 'attachwidget', widget._w) def detach_widget(self, widget): self.tk.call(self._w, 'detachwidget', widget._w) def hide(self, widget): self.tk.call(self._w, 'hide', widget._w) def show(self, widget): self.tk.call(self._w, 'show', widget._w) class ScrolledHList(TixWidget): """ScrolledHList - HList with automatic scrollbars.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledHList', ['options'], cnf, kw) self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledListBox(TixWidget): """ScrolledListBox - Listbox with automatic scrollbars.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledListBox', ['options'], cnf, kw) self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledText(TixWidget): """ScrolledText - Text with automatic scrollbars.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledText', ['options'], cnf, kw) self.subwidget_list['text'] = _dummyText(self, 'text') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledTList(TixWidget): """ScrolledTList - TList with automatic scrollbars.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledTList', ['options'], cnf, kw) self.subwidget_list['tlist'] = _dummyTList(self, 'tlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledWindow(TixWidget): """ScrolledWindow - Window with automatic scrollbars.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledWindow', ['options'], cnf, kw) self.subwidget_list['window'] = _dummyFrame(self, 'window') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 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): TixWidget.__init__(self, master, 'tixSelect', ['allowzero', 'radio', 'orientation', 'labelside', 'options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') def add(self, name, cnf={}, **kw): apply(self.tk.call, (self._w, 'add', name) + self._options(cnf, kw)) self.subwidget_list[name] = _dummyButton(self, name) return self.subwidget_list[name] def invoke(self, name): self.tk.call(self._w, 'invoke', name) class StdButtonBox(TixWidget): """StdButtonBox - Standard Button Box (OK, Apply, Cancel and Help) """ def __init__(self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixStdButtonBox', ['orientation', 'options'], cnf, kw) self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['apply'] = _dummyButton(self, 'apply') self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['help'] = _dummyButton(self, 'help') def invoke(self, name): if self.subwidget_list.has_key(name): self.tk.call(self._w, 'invoke', name) 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""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixTList', ['options'], cnf, kw) def active_set(self, index): self.tk.call(self._w, 'active', 'set', index) def active_clear(self): self.tk.call(self._w, 'active', 'clear') def anchor_set(self, index): self.tk.call(self._w, 'anchor', 'set', index) def anchor_clear(self): self.tk.call(self._w, 'anchor', 'clear') def delete(self, from_, to=None): self.tk.call(self._w, 'delete', from_, to) def dragsite_set(self, index): self.tk.call(self._w, 'dragsite', 'set', index) def dragsite_clear(self): self.tk.call(self._w, 'dragsite', 'clear') def dropsite_set(self, index): self.tk.call(self._w, 'dropsite', 'set', index) def dropsite_clear(self): self.tk.call(self._w, 'dropsite', 'clear') def insert(self, index, cnf={}, **kw): apply(self.tk.call, (self._w, 'insert', index) + self._options(cnf, kw)) def info_active(self): return self.tk.call(self._w, 'info', 'active') def info_anchor(self): return self.tk.call(self._w, 'info', 'anchor') def info_down(self, index): return self.tk.call(self._w, 'info', 'down', index) def info_left(self, index): return self.tk.call(self._w, 'info', 'left', index) def info_right(self, index): return self.tk.call(self._w, 'info', 'right', index) def info_selection(self): c = self.tk.call(self._w, 'info', 'selection') return self.tk.splitlist(c) def info_size(self): return self.tk.call(self._w, 'info', 'size') def info_up(self, index): return self.tk.call(self._w, 'info', 'up', index) def nearest(self, x, y): return self.tk.call(self._w, 'nearest', x, y) def see(self, index): self.tk.call(self._w, 'see', index) def selection_clear(self, cnf={}, **kw): apply(self.tk.call, (self._w, 'selection', 'clear') + self._options(cnf, kw)) def selection_includes(self, index): return self.tk.call(self._w, 'selection', 'includes', index) def selection_set(self, first, last=None): self.tk.call(self._w, 'selection', 'set', first, last) def xview(self, *args): apply(self.tk.call, (self._w, 'xview') + args) def yview(self, *args): apply(self.tk.call, (self._w, 'yview') + args) 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): TixWidget.__init__(self, master, 'tixTree', ['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 setmode(self, entrypath, mode='none'): 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 ### ### mega widget. This allows us to access their methods directly. ### ########################################################################### class _dummyButton(Button, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyCheckbutton(Checkbutton, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyEntry(Entry, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyFrame(Frame, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyLabel(Label, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyListbox(Listbox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyMenu(Menu, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyMenubutton(Menubutton, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyScrollbar(Scrollbar, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyText(Text, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyScrolledListBox(ScrolledListBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class _dummyHList(HList, TixSubWidget): def __init__(self, master, name, destroy_physically=1): 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): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyComboBox(ComboBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) 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) class _dummyDirList(DirList, 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 _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): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['hidden'] = _dummyCheckbutton(self, 'hidden') self.subwidget_list['types'] = _dummyComboBox(self, 'types') self.subwidget_list['dir'] = _dummyComboBox(self, 'dir') self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') self.subwidget_list['file'] = _dummyComboBox(self, 'file') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') class _dummyFileSelectBox(FileSelectBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') self.subwidget_list['filter'] = _dummyComboBox(self, 'filter') 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): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['apply'] = _dummyButton(self, 'apply') self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['help'] = _dummyButton(self, 'help') class _dummyNoteBookFrame(NoteBookFrame, TixSubWidget): def __init__(self, master, name, destroy_physically=0): TixSubWidget.__init__(self, master, name, destroy_physically) ######################## ### Utility Routines ### ######################## # Returns the qualified path name for the widget. Normally used to set # default options for subwidgets. See tixwidgets.py def OptionName(widget): return widget.tk.call('tixOptionName', widget._w) # Called with a dictionary argument of the form # {'*.c':'C source files', '*.txt':'Text Files', '*':'All files'} # returns a string which can be used to configure the fsbox file types # in an ExFileSelectBox. i.e., # '{{*} {* - All files}} {{*.c} {*.c - C source files}} {{*.txt} {*.txt - Text Files}}' def FileTypeList(dict): s = '' for type in dict.keys(): 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 Tix8.4.3/Python/README-2.1.txt0000644000122200012240000000232607404570050015652 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: README-2.1.txt,v 1.2 2001/12/09 05:01:28 idiscovery Exp $ # About Tix.py ----------- Tix.py is based on an idea of Jean-Marc Lugrin (lugrin@ms.com) 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. As of version 2.1, Tix.py is a part of the standard Python library. You should find Tix.py in the Lib/lib-tk directory, and demos in the Demo/tix directory. The files here were current as of Python 2.2 and should work with any version of Python, but may have updated in the standard Python distribution (http://python.sourceforge.net and http://www.python.org). Features: 1) It is almost complete. 2) Tix widgets are represented by classes in Python. Sub-widgets are members of the mega-widget class. For example, if a particular TixWidget (e.g. ScrolledText) has an embedded widget (Text in this case), it is possible to call the methods of the child directly. 3) The members of the class are created automatically. In the case of widgets like ButtonBox, the members are added dynamically. Tix8.4.3/Python/README-2.2.txt0000644000122200012240000000064007423754172015662 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: README-2.2.txt,v 1.1 2002/01/24 09:48:42 idiscovery Exp $ # About Tix.py ----------- As of version 2.1, Tix.py is a part of the standard Python library. However, the Tix shipped with Python 2.2 is broken. You should replace Tix.py in the Lib/lib-tk directory, and demos in the Demo/tix directory with the files found here. Tix8.4.3/Python/INSTALL-2.1.txt0000644000122200012240000001073407404570050016025 0ustar jeffhjeffh00000000000000# -*-mode: text; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: INSTALL-2.1.txt,v 1.2 2001/12/09 05:01:28 idiscovery Exp $ INSTALLING TIX 0) To use Tix.py, you need Tcl/Tk (V8.3.3), Tix (V8.2.0) and Python (V2.1.1). Tix.py has been written and tested on a Intel Pentium running RH Linux 5.2 and Mandrake Linux 6.x and 7.0 and Windows with the above mentioned packages. Any version of Tcl 8.3.x should work with any version of Python >= 2.1.0 and any version of Tix >= 8.1.1 from http://tix.sourceforge.net. However, tcl/tk8.4* is likely to cause problems and may not work by default. Older versions, e.g. Tix 4.1 and Tk 8.0, might also work; 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.3. Build and install Tix 8.1.2 or 8.2.x. 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.3.3 for this release of Tix.py. 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.2 as well. Recursively copy the files from the *installed* /lib8.2 to $PYTHONHOME/lib/tix8.2, and copy the dynamic library (tix8283.dll or libtix8.2.8.3.so) to the same place as the tcl dynamic libraries ($PYTHONHOME/Dlls or lib/python-2.1/lib-dynload). For shared library install such as this are all down, and you can skip to the section TESTING. 2b) To build statically, modify Modules/Setup.dist and setup.py to change the version of the tix library from tix4.1.8.0 to tix8.2.8.3 if necessary. 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'. Under Windows, you will have to modify the MS VC project files, which is complex: use a text editor to modify the PCBuild/_tkinter.dsp file. To build statically under Unix, modify the Modules/Setup file to link in the Tix library according to the comments in the file. On Linux this looks like: # *** Always uncomment this (leave the leading underscore in!): _tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \ # *** Uncomment and edit to reflect where your Tcl/Tk libraries are: -L/usr/local/lib \ # *** Uncomment and edit to reflect where your Tcl/Tk headers are: -I/usr/local/include \ # *** Uncomment and edit to reflect where your X11 header files are: -I/usr/X11R6/include \ # *** Or uncomment this for Solaris: # -I/usr/openwin/include \ # *** Uncomment and edit for BLT extension only: # -DWITH_BLT -I/usr/local/blt/blt8.0-unoff/include -lBLT8.0 \ # *** Uncomment and edit for PIL (TkImaging) extension only: # (See http://www.pythonware.com/products/pil/ for more info) # -DWITH_PIL -I../Extensions/Imaging/libImaging tkImaging.c \ # *** Uncomment and edit for TOGL extension only: # -DWITH_TOGL togl.c \ # *** Uncomment and edit for Tix extension only: -DWITH_TIX -ltix8.2.8.3 \ # *** Uncomment and edit to reflect your Tcl/Tk versions: -ltk8.3 -ltcl8.3 \ # *** Uncomment and edit to reflect where your X11 libraries are: -L/usr/X11R6/lib \ # *** Or uncomment this for Solaris: # -L/usr/openwin/lib \ # *** Uncomment these for TOGL extension only: # -lGL -lGLU -lXext -lXmu \ # *** Uncomment for AIX: # -lld \ # *** Always uncomment this; X11 libraries to link with: -lX11 4) Rebuild Python and reinstall. TESTING ------- You should now have a working Tix implementation in Python. To see if all is as it should be, run the 'tixwidgets.py' script in the Demo/tix directory. Under X windows, do /usr/local/bin/python Demo/tix/tixwidgets.py 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 under Unix: env TCL_LIBRARY=/usr/local/lib/tcl8.3 \ TK_LIBRARY=/usr/local/lib/tk8.3 \ TIX_LIBRARY=/usr/local/lib/tix8.2 \ /usr/local/bin/python Demo/tix/tixwidgets.py or under Windows: set TCL_LIBRARY=\usr\local\lib\tcl8.3 set TK_LIBRARY=\usr\local\lib\tk8.3 set TIX_LIBRARY=\usr\local\lib\tix8.2 pythonw.exe Demo\tix\tixwidgets.py If you find any bugs or have suggestions for improvement, please report them via http://tix.sourceforge.net Tix8.4.3/Python/BUGS-2.1.txt0000644000122200012240000000052007404570050015447 0ustar jeffhjeffh00000000000000# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: BUGS-2.1.txt,v 1.2 2001/12/09 05:01:28 idiscovery Exp $ # 1) There seems to be a problem with ComboBox that shows up in the ExFileSelectBox demo. The popdown scrolled list widget is being created, then destroyed. This does not happen in Tcl Tix. Tix8.4.3/configure0000775000122200012240000126367710761434765014345 0ustar jeffhjeffh00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for Tix 8.4.3. # # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME='Tix' PACKAGE_TARNAME='tix' PACKAGE_VERSION='8.4.3' PACKAGE_STRING='Tix 8.4.3' PACKAGE_BUGREPORT='' # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CYGPATH EXEEXT PKG_LIB_FILE PKG_STUB_LIB_FILE PKG_STUB_SOURCES PKG_STUB_OBJECTS PKG_TCL_SOURCES PKG_HEADERS PKG_INCLUDES PKG_LIBS PKG_CFLAGS TCL_VERSION TCL_BIN_DIR TCL_SRC_DIR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_LIBS TCL_DEFS TCL_EXTRA_CFLAGS TCL_LD_FLAGS TCL_SHLIB_LD_LIBS TK_VERSION TK_BIN_DIR TK_SRC_DIR TK_LIB_FILE TK_LIB_FLAG TK_LIB_SPEC TK_STUB_LIB_FILE TK_STUB_LIB_FLAG TK_STUB_LIB_SPEC TK_LIBS TK_XINCLUDES CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT CPP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA SET_MAKE RANLIB ac_ct_RANLIB EGREP MATH_LIBS PKG_SOURCES PKG_OBJECTS TCL_TOP_DIR_NATIVE TCL_GENERIC_DIR_NATIVE TCL_UNIX_DIR_NATIVE TCL_WIN_DIR_NATIVE TCL_BMAP_DIR_NATIVE TCL_TOOL_DIR_NATIVE TCL_PLATFORM_DIR_NATIVE TCL_INCLUDES TK_TOP_DIR_NATIVE TK_UNIX_DIR_NATIVE TK_WIN_DIR_NATIVE TK_GENERIC_DIR_NATIVE TK_XLIB_DIR_NATIVE TK_PLATFORM_DIR_NATIVE TK_INCLUDES CLEANFILES TCL_THREADS SHARED_BUILD AR CELIB_DIR LIBOBJS DL_LIBS CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING STLIB_LD SHLIB_LD SHLIB_LD_LIBS SHLIB_CFLAGS LD_LIBRARY_PATH_VAR TCL_DBGX CFLAGS_DEFAULT LDFLAGS_DEFAULT MAKE_LIB MAKE_SHARED_LIB MAKE_STATIC_LIB MAKE_STUB_LIB RANLIB_STUB TCLSH_PROG WISH_PROG LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures Tix 8.4.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of Tix 8.4.3:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-threads build with threads --enable-shared build and link with shared libraries (default: on) --enable-64bit enable 64bit support (default: off) --enable-64bit-vis enable 64bit Sparc VIS support (default: off) --enable-wince enable Win/CE support (where applicable) --enable-load allow dynamic loading and "load" command (default: on) --enable-symbols build with debugging symbols (default: off) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-tcl directory containing tcl configuration (tclConfig.sh) --with-tk directory containing tk configuration (tkConfig.sh) --with-x use the X Window System --with-celib=DIR use Windows/CE support library from DIR Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Tix configure 8.4.3 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Tix $as_me 8.4.3, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu #-------------------------------------------------------------------- # Call TEA_INIT as the first TEA_ macro to set up initial vars. # This will define a ${TEA_PLATFORM} variable == "unix" or "windows" # as well as PKG_LIB_FILE and PKG_STUB_LIB_FILE. #-------------------------------------------------------------------- # TEA extensions pass this us the version of TEA they think they # are compatible with. TEA_VERSION="3.6" echo "$as_me:$LINENO: checking for correct TEA configuration" >&5 echo $ECHO_N "checking for correct TEA configuration... $ECHO_C" >&6 if test x"${PACKAGE_NAME}" = x ; then { { echo "$as_me:$LINENO: error: The PACKAGE_NAME variable must be defined by your TEA configure.in" >&5 echo "$as_me: error: The PACKAGE_NAME variable must be defined by your TEA configure.in" >&2;} { (exit 1); exit 1; }; } fi if test x"3.6" = x ; then { { echo "$as_me:$LINENO: error: TEA version not specified." >&5 echo "$as_me: error: TEA version not specified." >&2;} { (exit 1); exit 1; }; } elif test "3.6" != "${TEA_VERSION}" ; then echo "$as_me:$LINENO: result: warning: requested TEA version \"3.6\", have \"${TEA_VERSION}\"" >&5 echo "${ECHO_T}warning: requested TEA version \"3.6\", have \"${TEA_VERSION}\"" >&6 else echo "$as_me:$LINENO: result: ok (TEA ${TEA_VERSION})" >&5 echo "${ECHO_T}ok (TEA ${TEA_VERSION})" >&6 fi case "`uname -s`" in *win32*|*WIN32*|*CYGWIN_NT*|*CYGWIN_9*|*CYGWIN_ME*|*MINGW32_*) # Extract the first word of "cygpath", so it can be a program name with args. set dummy cygpath; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CYGPATH+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CYGPATH="cygpath -w" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo" fi fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then echo "$as_me:$LINENO: result: $CYGPATH" >&5 echo "${ECHO_T}$CYGPATH" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi EXEEXT=".exe" TEA_PLATFORM="windows" ;; *) CYGPATH=echo EXEEXT="" TEA_PLATFORM="unix" ;; esac # Check if exec_prefix is set. If not use fall back to prefix. # Note when adjusted, so that TEA_PREFIX can correct for this. # This is needed for recursive configures, since autoconf propagates # $prefix, but not $exec_prefix (doh!). if test x$exec_prefix = xNONE ; then exec_prefix_default=yes exec_prefix=$prefix fi # This package name must be replaced statically for AC_SUBST to work # Substitute STUB_LIB_FILE in case package creates a stub library too. # We AC_SUBST these here to ensure they are subst'ed, # in case the user doesn't call TEA_ADD_... ac_aux_dir= for ac_dir in tclconfig $srcdir/tclconfig; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in tclconfig $srcdir/tclconfig" >&5 echo "$as_me: error: cannot find install-sh or install.sh in tclconfig $srcdir/tclconfig" >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. #-------------------------------------------------------------------- # Load the tclConfig.sh file #-------------------------------------------------------------------- # # Ok, lets find the tcl configuration # First, look for one uninstalled. # the alternative search directory is invoked by --with-tcl # if test x"${no_tcl}" = x ; then # we reset no_tcl in case something fails here no_tcl=true # Check whether --with-tcl or --without-tcl was given. if test "${with_tcl+set}" = set; then withval="$with_tcl" with_tclconfig=${withval} fi; echo "$as_me:$LINENO: checking for Tcl configuration" >&5 echo $ECHO_N "checking for Tcl configuration... $ECHO_C" >&6 if test "${ac_cv_c_tclconfig+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # First check to see if --with-tcl was specified. if test x"${with_tclconfig}" != x ; then case ${with_tclconfig} in */tclConfig.sh ) if test -f ${with_tclconfig}; then { echo "$as_me:$LINENO: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&5 echo "$as_me: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&2;} with_tclconfig=`echo ${with_tclconfig} | sed 's!/tclConfig\.sh$!!'` fi ;; esac if test -f "${with_tclconfig}/tclConfig.sh" ; then ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)` else { { echo "$as_me:$LINENO: error: ${with_tclconfig} directory doesn't contain tclConfig.sh" >&5 echo "$as_me: error: ${with_tclconfig} directory doesn't contain tclConfig.sh" >&2;} { (exit 1); exit 1; }; } fi fi # then check for a private Tcl installation if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ../tcl \ `ls -dr ../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../tcl[8-9].[0-9]* 2>/dev/null` \ ../../tcl \ `ls -dr ../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../../tcl[8-9].[0-9]* 2>/dev/null` \ ../../../tcl \ `ls -dr ../../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../../../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../../../tcl[8-9].[0-9]* 2>/dev/null` ; do if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig=`(cd $i/unix; pwd)` break fi done fi # on Darwin, check in Framework installation locations if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d ~/Library/Frameworks 2>/dev/null` \ `ls -d /Library/Frameworks 2>/dev/null` \ `ls -d /Network/Library/Frameworks 2>/dev/null` \ `ls -d /System/Library/Frameworks 2>/dev/null` \ ; do if test -f "$i/Tcl.framework/tclConfig.sh" ; then ac_cv_c_tclconfig=`(cd $i/Tcl.framework; pwd)` break fi done fi # on Windows, check in common installation locations if test "${TEA_PLATFORM}" = "windows" \ -a x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d C:/Tcl/lib 2>/dev/null` \ `ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig=`(cd $i; pwd)` break fi done fi # check in a few common install locations if test x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig=`(cd $i; pwd)` break fi done fi # check in a few other private locations if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ${srcdir}/../tcl \ `ls -dr ${srcdir}/../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ${srcdir}/../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ${srcdir}/../tcl[8-9].[0-9]* 2>/dev/null` ; do if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig=`(cd $i/unix; pwd)` break fi done fi fi if test x"${ac_cv_c_tclconfig}" = x ; then TCL_BIN_DIR="# no Tcl configs found" { echo "$as_me:$LINENO: WARNING: Can't find Tcl configuration definitions" >&5 echo "$as_me: WARNING: Can't find Tcl configuration definitions" >&2;} exit 0 else no_tcl= TCL_BIN_DIR=${ac_cv_c_tclconfig} echo "$as_me:$LINENO: result: found ${TCL_BIN_DIR}/tclConfig.sh" >&5 echo "${ECHO_T}found ${TCL_BIN_DIR}/tclConfig.sh" >&6 fi fi echo "$as_me:$LINENO: checking for existence of ${TCL_BIN_DIR}/tclConfig.sh" >&5 echo $ECHO_N "checking for existence of ${TCL_BIN_DIR}/tclConfig.sh... $ECHO_C" >&6 if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then echo "$as_me:$LINENO: result: loading" >&5 echo "${ECHO_T}loading" >&6 . ${TCL_BIN_DIR}/tclConfig.sh else echo "$as_me:$LINENO: result: could not find ${TCL_BIN_DIR}/tclConfig.sh" >&5 echo "${ECHO_T}could not find ${TCL_BIN_DIR}/tclConfig.sh" >&6 fi # eval is required to do the TCL_DBGX substitution eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\"" eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\"" # If the TCL_BIN_DIR is the build directory (not the install directory), # then set the common variable name to the value of the build variables. # For example, the variable TCL_LIB_SPEC will be set to the value # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC # instead of TCL_BUILD_LIB_SPEC since it will work with both an # installed and uninstalled version of Tcl. if test -f ${TCL_BIN_DIR}/Makefile ; then TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC} TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC} TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH} elif test "`uname -s`" = "Darwin"; then # If Tcl was built as a framework, attempt to use the libraries # from the framework at the given location so that linking works # against Tcl.framework installed in an arbitary location. case ${TCL_DEFS} in *TCL_FRAMEWORK*) if test -f ${TCL_BIN_DIR}/${TCL_LIB_FILE}; then for i in "`cd ${TCL_BIN_DIR}; pwd`" \ "`cd ${TCL_BIN_DIR}/../..; pwd`"; do if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then TCL_LIB_SPEC="-F`dirname "$i"` -framework ${TCL_LIB_FILE}" break fi done fi if test -f ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}; then TCL_STUB_LIB_SPEC="-L${TCL_BIN_DIR} ${TCL_STUB_LIB_FLAG}" TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}" fi ;; esac fi # eval is required to do the TCL_DBGX substitution eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\"" eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\"" eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\"" eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\"" #-------------------------------------------------------------------- # Load the tkConfig.sh file if necessary (Tk extension) #-------------------------------------------------------------------- # # Ok, lets find the tk configuration # First, look for one uninstalled. # the alternative search directory is invoked by --with-tk # if test x"${no_tk}" = x ; then # we reset no_tk in case something fails here no_tk=true # Check whether --with-tk or --without-tk was given. if test "${with_tk+set}" = set; then withval="$with_tk" with_tkconfig=${withval} fi; echo "$as_me:$LINENO: checking for Tk configuration" >&5 echo $ECHO_N "checking for Tk configuration... $ECHO_C" >&6 if test "${ac_cv_c_tkconfig+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # First check to see if --with-tkconfig was specified. if test x"${with_tkconfig}" != x ; then case ${with_tkconfig} in */tkConfig.sh ) if test -f ${with_tkconfig}; then { echo "$as_me:$LINENO: WARNING: --with-tk argument should refer to directory containing tkConfig.sh, not to tkConfig.sh itself" >&5 echo "$as_me: WARNING: --with-tk argument should refer to directory containing tkConfig.sh, not to tkConfig.sh itself" >&2;} with_tkconfig=`echo ${with_tkconfig} | sed 's!/tkConfig\.sh$!!'` fi ;; esac if test -f "${with_tkconfig}/tkConfig.sh" ; then ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)` else { { echo "$as_me:$LINENO: error: ${with_tkconfig} directory doesn't contain tkConfig.sh" >&5 echo "$as_me: error: ${with_tkconfig} directory doesn't contain tkConfig.sh" >&2;} { (exit 1); exit 1; }; } fi fi # then check for a private Tk library if test x"${ac_cv_c_tkconfig}" = x ; then for i in \ ../tk \ `ls -dr ../tk[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../tk[8-9].[0-9] 2>/dev/null` \ `ls -dr ../tk[8-9].[0-9]* 2>/dev/null` \ ../../tk \ `ls -dr ../../tk[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../../tk[8-9].[0-9] 2>/dev/null` \ `ls -dr ../../tk[8-9].[0-9]* 2>/dev/null` \ ../../../tk \ `ls -dr ../../../tk[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../../../tk[8-9].[0-9] 2>/dev/null` \ `ls -dr ../../../tk[8-9].[0-9]* 2>/dev/null` ; do if test -f "$i/unix/tkConfig.sh" ; then ac_cv_c_tkconfig=`(cd $i/unix; pwd)` break fi done fi # on Darwin, check in Framework installation locations if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then for i in `ls -d ~/Library/Frameworks 2>/dev/null` \ `ls -d /Library/Frameworks 2>/dev/null` \ `ls -d /Network/Library/Frameworks 2>/dev/null` \ `ls -d /System/Library/Frameworks 2>/dev/null` \ ; do if test -f "$i/Tk.framework/tkConfig.sh" ; then ac_cv_c_tkconfig=`(cd $i/Tk.framework; pwd)` break fi done fi # check in a few common install locations if test x"${ac_cv_c_tkconfig}" = x ; then for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ ; do if test -f "$i/tkConfig.sh" ; then ac_cv_c_tkconfig=`(cd $i; pwd)` break fi done fi # on Windows, check in common installation locations if test "${TEA_PLATFORM}" = "windows" \ -a x"${ac_cv_c_tkconfig}" = x ; then for i in `ls -d C:/Tcl/lib 2>/dev/null` \ `ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \ ; do if test -f "$i/tkConfig.sh" ; then ac_cv_c_tkconfig=`(cd $i; pwd)` break fi done fi # check in a few other private locations if test x"${ac_cv_c_tkconfig}" = x ; then for i in \ ${srcdir}/../tk \ `ls -dr ${srcdir}/../tk[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ${srcdir}/../tk[8-9].[0-9] 2>/dev/null` \ `ls -dr ${srcdir}/../tk[8-9].[0-9]* 2>/dev/null` ; do if test -f "$i/unix/tkConfig.sh" ; then ac_cv_c_tkconfig=`(cd $i/unix; pwd)` break fi done fi fi if test x"${ac_cv_c_tkconfig}" = x ; then TK_BIN_DIR="# no Tk configs found" { echo "$as_me:$LINENO: WARNING: Can't find Tk configuration definitions" >&5 echo "$as_me: WARNING: Can't find Tk configuration definitions" >&2;} exit 0 else no_tk= TK_BIN_DIR=${ac_cv_c_tkconfig} echo "$as_me:$LINENO: result: found ${TK_BIN_DIR}/tkConfig.sh" >&5 echo "${ECHO_T}found ${TK_BIN_DIR}/tkConfig.sh" >&6 fi fi echo "$as_me:$LINENO: checking for existence of ${TK_BIN_DIR}/tkConfig.sh" >&5 echo $ECHO_N "checking for existence of ${TK_BIN_DIR}/tkConfig.sh... $ECHO_C" >&6 if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then echo "$as_me:$LINENO: result: loading" >&5 echo "${ECHO_T}loading" >&6 . ${TK_BIN_DIR}/tkConfig.sh else echo "$as_me:$LINENO: result: could not find ${TK_BIN_DIR}/tkConfig.sh" >&5 echo "${ECHO_T}could not find ${TK_BIN_DIR}/tkConfig.sh" >&6 fi # eval is required to do the TK_DBGX substitution eval "TK_LIB_FILE=\"${TK_LIB_FILE}\"" eval "TK_STUB_LIB_FILE=\"${TK_STUB_LIB_FILE}\"" # If the TK_BIN_DIR is the build directory (not the install directory), # then set the common variable name to the value of the build variables. # For example, the variable TK_LIB_SPEC will be set to the value # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC # instead of TK_BUILD_LIB_SPEC since it will work with both an # installed and uninstalled version of Tcl. if test -f ${TK_BIN_DIR}/Makefile ; then TK_LIB_SPEC=${TK_BUILD_LIB_SPEC} TK_STUB_LIB_SPEC=${TK_BUILD_STUB_LIB_SPEC} TK_STUB_LIB_PATH=${TK_BUILD_STUB_LIB_PATH} elif test "`uname -s`" = "Darwin"; then # If Tk was built as a framework, attempt to use the libraries # from the framework at the given location so that linking works # against Tk.framework installed in an arbitary location. case ${TK_DEFS} in *TK_FRAMEWORK*) if test -f ${TK_BIN_DIR}/${TK_LIB_FILE}; then for i in "`cd ${TK_BIN_DIR}; pwd`" \ "`cd ${TK_BIN_DIR}/../..; pwd`"; do if test "`basename "$i"`" = "${TK_LIB_FILE}.framework"; then TK_LIB_SPEC="-F`dirname "$i"` -framework ${TK_LIB_FILE}" break fi done fi if test -f ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}; then TK_STUB_LIB_SPEC="-L${TK_BIN_DIR} ${TK_STUB_LIB_FLAG}" TK_STUB_LIB_PATH="${TK_BIN_DIR}/${TK_STUB_LIB_FILE}" fi ;; esac fi # eval is required to do the TK_DBGX substitution eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}\"" eval "TK_LIB_SPEC=\"${TK_LIB_SPEC}\"" eval "TK_STUB_LIB_FLAG=\"${TK_STUB_LIB_FLAG}\"" eval "TK_STUB_LIB_SPEC=\"${TK_STUB_LIB_SPEC}\"" # Ensure windowingsystem is defined if test "${TEA_PLATFORM}" = "unix" ; then case ${TK_DEFS} in *MAC_OSX_TK*) cat >>confdefs.h <<\_ACEOF #define MAC_OSX_TK 1 _ACEOF TEA_WINDOWINGSYSTEM="aqua" ;; *) TEA_WINDOWINGSYSTEM="x11" ;; esac elif test "${TEA_PLATFORM}" = "windows" ; then TEA_WINDOWINGSYSTEM="win32" fi #----------------------------------------------------------------------- # Handle the --prefix=... option by defaulting to what Tcl gave. # Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER. #----------------------------------------------------------------------- if test "${prefix}" = "NONE"; then prefix_default=yes if test x"${TCL_PREFIX}" != x; then { echo "$as_me:$LINENO: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&5 echo "$as_me: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&6;} prefix=${TCL_PREFIX} else { echo "$as_me:$LINENO: --prefix defaulting to /usr/local" >&5 echo "$as_me: --prefix defaulting to /usr/local" >&6;} prefix=/usr/local fi fi if test "${exec_prefix}" = "NONE" -a x"${prefix_default}" = x"yes" \ -o x"${exec_prefix_default}" = x"yes" ; then if test x"${TCL_EXEC_PREFIX}" != x; then { echo "$as_me:$LINENO: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&5 echo "$as_me: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&6;} exec_prefix=${TCL_EXEC_PREFIX} else { echo "$as_me:$LINENO: --exec-prefix defaulting to ${prefix}" >&5 echo "$as_me: --exec-prefix defaulting to ${prefix}" >&6;} exec_prefix=$prefix fi fi #----------------------------------------------------------------------- # Standard compiler checks. # This sets up CC by using the CC env var, or looks for gcc otherwise. # This also calls AC_PROG_CC, AC_PROG_INSTALL and a few others to create # the basic setup necessary to compile executables. #----------------------------------------------------------------------- # Don't put any macros that use the compiler (e.g. AC_TRY_COMPILE) # in this macro, they need to go into TEA_SETUP_COMPILER instead. # If the user did not set CFLAGS, set it now to keep # the AC_PROG_CC macro from adding "-g -O2". if test "${CFLAGS+set}" != "set" ; then CFLAGS="" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' #-------------------------------------------------------------------- # Checks to see if the make program sets the $MAKE variable. #-------------------------------------------------------------------- echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi #-------------------------------------------------------------------- # Find ranlib #-------------------------------------------------------------------- if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi #-------------------------------------------------------------------- # Determines the correct binary file extension (.o, .obj, .exe etc.) #-------------------------------------------------------------------- echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Any macros that use the compiler (e.g. AC_TRY_COMPILE) have to go here. #------------------------------------------------------------------------ # If we're using GCC, see if the compiler understands -pipe. If so, use it. # It makes compiling go faster. (This is only a performance feature.) #------------------------------------------------------------------------ if test -z "$no_pipe" -a -n "$GCC"; then echo "$as_me:$LINENO: checking if the compiler understands -pipe" >&5 echo $ECHO_N "checking if the compiler understands -pipe... $ECHO_C" >&6 if test "${tcl_cv_cc_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -pipe" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_cc_pipe=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_cc_pipe=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$hold_cflags fi echo "$as_me:$LINENO: result: $tcl_cv_cc_pipe" >&5 echo "${ECHO_T}$tcl_cv_cc_pipe" >&6 if test $tcl_cv_cc_pipe = yes; then CFLAGS="$CFLAGS -pipe" fi fi #-------------------------------------------------------------------- # Common compiler flag setup #-------------------------------------------------------------------- echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 if test "${ac_cv_c_bigendian+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # See if sys/param.h defines the BYTE_ORDER macro. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # It does; now see whether it defined to BIG_ENDIAN or not. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_bigendian=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # It does not; compile a test program. if test "$cross_compiling" = yes; then # try to guess the endianness by grepping values into an object file ac_cv_c_bigendian=unknown cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () { _ascii (); _ebcdic (); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long l; char c[sizeof (long)]; } u; u.l = 1; exit (u.c[sizeof (long) - 1] == 1); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=no else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_bigendian=yes fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 echo "${ECHO_T}$ac_cv_c_bigendian" >&6 case $ac_cv_c_bigendian in yes) cat >>confdefs.h <<\_ACEOF #define WORDS_BIGENDIAN 1 _ACEOF ;; no) ;; *) { { echo "$as_me:$LINENO: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&5 echo "$as_me: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} { (exit 1); exit 1; }; } ;; esac if test "${TEA_PLATFORM}" = "unix" ; then #-------------------------------------------------------------------- # On a few very rare systems, all of the libm.a stuff is # already in libc.a. Set compiler flags accordingly. # Also, Linux requires the "ieee" library for math to work # right (and it must appear before "-lm"). #-------------------------------------------------------------------- echo "$as_me:$LINENO: checking for sin" >&5 echo $ECHO_N "checking for sin... $ECHO_C" >&6 if test "${ac_cv_func_sin+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define sin to an innocuous variant, in case declares sin. For example, HP-UX 11i declares gettimeofday. */ #define sin innocuous_sin /* System header to define __stub macros and hopefully few prototypes, which can conflict with char sin (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef sin /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char sin (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_sin) || defined (__stub___sin) choke me #else char (*f) () = sin; #endif #ifdef __cplusplus } #endif int main () { return f != sin; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_sin=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_sin=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_sin" >&5 echo "${ECHO_T}$ac_cv_func_sin" >&6 if test $ac_cv_func_sin = yes; then MATH_LIBS="" else MATH_LIBS="-lm" fi echo "$as_me:$LINENO: checking for main in -lieee" >&5 echo $ECHO_N "checking for main in -lieee... $ECHO_C" >&6 if test "${ac_cv_lib_ieee_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lieee $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ieee_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ieee_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ieee_main" >&5 echo "${ECHO_T}$ac_cv_lib_ieee_main" >&6 if test $ac_cv_lib_ieee_main = yes; then MATH_LIBS="-lieee $MATH_LIBS" fi #-------------------------------------------------------------------- # Interactive UNIX requires -linet instead of -lsocket, plus it # needs net/errno.h to define the socket-related error codes. #-------------------------------------------------------------------- echo "$as_me:$LINENO: checking for main in -linet" >&5 echo $ECHO_N "checking for main in -linet... $ECHO_C" >&6 if test "${ac_cv_lib_inet_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-linet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_inet_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_inet_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_inet_main" >&5 echo "${ECHO_T}$ac_cv_lib_inet_main" >&6 if test $ac_cv_lib_inet_main = yes; then LIBS="$LIBS -linet" fi if test "${ac_cv_header_net_errno_h+set}" = set; then echo "$as_me:$LINENO: checking for net/errno.h" >&5 echo $ECHO_N "checking for net/errno.h... $ECHO_C" >&6 if test "${ac_cv_header_net_errno_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_net_errno_h" >&5 echo "${ECHO_T}$ac_cv_header_net_errno_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking net/errno.h usability" >&5 echo $ECHO_N "checking net/errno.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking net/errno.h presence" >&5 echo $ECHO_N "checking net/errno.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: net/errno.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: net/errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: net/errno.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: net/errno.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: net/errno.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: net/errno.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: net/errno.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: net/errno.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: net/errno.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: net/errno.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: net/errno.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: net/errno.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: net/errno.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: net/errno.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: net/errno.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: net/errno.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------ ## ## Report this to the Tix lists. ## ## ------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for net/errno.h" >&5 echo $ECHO_N "checking for net/errno.h... $ECHO_C" >&6 if test "${ac_cv_header_net_errno_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_net_errno_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_net_errno_h" >&5 echo "${ECHO_T}$ac_cv_header_net_errno_h" >&6 fi if test $ac_cv_header_net_errno_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_NET_ERRNO_H 1 _ACEOF fi #-------------------------------------------------------------------- # Check for the existence of the -lsocket and -lnsl libraries. # The order here is important, so that they end up in the right # order in the command line generated by make. Here are some # special considerations: # 1. Use "connect" and "accept" to check for -lsocket, and # "gethostbyname" to check for -lnsl. # 2. Use each function name only once: can't redo a check because # autoconf caches the results of the last check and won't redo it. # 3. Use -lnsl and -lsocket only if they supply procedures that # aren't already present in the normal libraries. This is because # IRIX 5.2 has libraries, but they aren't needed and they're # bogus: they goof up name resolution if used. # 4. On some SVR4 systems, can't use -lsocket without -lnsl too. # To get around this problem, check for both libraries together # if -lsocket doesn't work by itself. #-------------------------------------------------------------------- tcl_checkBoth=0 echo "$as_me:$LINENO: checking for connect" >&5 echo $ECHO_N "checking for connect... $ECHO_C" >&6 if test "${ac_cv_func_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_connect) || defined (__stub___connect) choke me #else char (*f) () = connect; #endif #ifdef __cplusplus } #endif int main () { return f != connect; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 echo "${ECHO_T}$ac_cv_func_connect" >&6 if test $ac_cv_func_connect = yes; then tcl_checkSocket=0 else tcl_checkSocket=1 fi if test "$tcl_checkSocket" = 1; then echo "$as_me:$LINENO: checking for setsockopt" >&5 echo $ECHO_N "checking for setsockopt... $ECHO_C" >&6 if test "${ac_cv_func_setsockopt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define setsockopt to an innocuous variant, in case declares setsockopt. For example, HP-UX 11i declares gettimeofday. */ #define setsockopt innocuous_setsockopt /* System header to define __stub macros and hopefully few prototypes, which can conflict with char setsockopt (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef setsockopt /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char setsockopt (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_setsockopt) || defined (__stub___setsockopt) choke me #else char (*f) () = setsockopt; #endif #ifdef __cplusplus } #endif int main () { return f != setsockopt; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_setsockopt=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_setsockopt=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_setsockopt" >&5 echo "${ECHO_T}$ac_cv_func_setsockopt" >&6 if test $ac_cv_func_setsockopt = yes; then : else echo "$as_me:$LINENO: checking for setsockopt in -lsocket" >&5 echo $ECHO_N "checking for setsockopt in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_setsockopt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char setsockopt (); int main () { setsockopt (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_setsockopt=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_setsockopt=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_setsockopt" >&5 echo "${ECHO_T}$ac_cv_lib_socket_setsockopt" >&6 if test $ac_cv_lib_socket_setsockopt = yes; then LIBS="$LIBS -lsocket" else tcl_checkBoth=1 fi fi fi if test "$tcl_checkBoth" = 1; then tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo "$as_me:$LINENO: checking for accept" >&5 echo $ECHO_N "checking for accept... $ECHO_C" >&6 if test "${ac_cv_func_accept+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define accept to an innocuous variant, in case declares accept. For example, HP-UX 11i declares gettimeofday. */ #define accept innocuous_accept /* System header to define __stub macros and hopefully few prototypes, which can conflict with char accept (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef accept /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char accept (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_accept) || defined (__stub___accept) choke me #else char (*f) () = accept; #endif #ifdef __cplusplus } #endif int main () { return f != accept; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_accept=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_accept=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_accept" >&5 echo "${ECHO_T}$ac_cv_func_accept" >&6 if test $ac_cv_func_accept = yes; then tcl_checkNsl=0 else LIBS=$tk_oldLibs fi fi echo "$as_me:$LINENO: checking for gethostbyname" >&5 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 if test "${ac_cv_func_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define gethostbyname to an innocuous variant, in case declares gethostbyname. For example, HP-UX 11i declares gettimeofday. */ #define gethostbyname innocuous_gethostbyname /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef gethostbyname /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) choke me #else char (*f) () = gethostbyname; #endif #ifdef __cplusplus } #endif int main () { return f != gethostbyname; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 if test $ac_cv_func_gethostbyname = yes; then : else echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 if test $ac_cv_lib_nsl_gethostbyname = yes; then LIBS="$LIBS -lnsl" fi fi # Don't perform the eval of the libraries here because DL_LIBS # won't be set until we call TEA_CONFIG_CFLAGS TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}' echo "$as_me:$LINENO: checking dirent.h" >&5 echo $ECHO_N "checking dirent.h... $ECHO_C" >&6 if test "${tcl_cv_dirent_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { #ifndef _POSIX_SOURCE # ifdef __Lynx__ /* * Generate compilation error to make the test fail: Lynx headers * are only valid if really in the POSIX environment. */ missing_procedure(); # endif #endif DIR *d; struct dirent *entryPtr; char *p; d = opendir("foobar"); entryPtr = readdir(d); p = entryPtr->d_name; closedir(d); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_dirent_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_dirent_h=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $tcl_cv_dirent_h" >&5 echo "${ECHO_T}$tcl_cv_dirent_h" >&6 if test $tcl_cv_dirent_h = no; then cat >>confdefs.h <<\_ACEOF #define NO_DIRENT_H 1 _ACEOF fi if test "${ac_cv_header_errno_h+set}" = set; then echo "$as_me:$LINENO: checking for errno.h" >&5 echo $ECHO_N "checking for errno.h... $ECHO_C" >&6 if test "${ac_cv_header_errno_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_errno_h" >&5 echo "${ECHO_T}$ac_cv_header_errno_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking errno.h usability" >&5 echo $ECHO_N "checking errno.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking errno.h presence" >&5 echo $ECHO_N "checking errno.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: errno.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: errno.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: errno.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: errno.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: errno.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: errno.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: errno.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: errno.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: errno.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: errno.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: errno.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: errno.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: errno.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: errno.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: errno.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------ ## ## Report this to the Tix lists. ## ## ------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for errno.h" >&5 echo $ECHO_N "checking for errno.h... $ECHO_C" >&6 if test "${ac_cv_header_errno_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_errno_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_errno_h" >&5 echo "${ECHO_T}$ac_cv_header_errno_h" >&6 fi if test $ac_cv_header_errno_h = yes; then : else cat >>confdefs.h <<\_ACEOF #define NO_ERRNO_H 1 _ACEOF fi if test "${ac_cv_header_float_h+set}" = set; then echo "$as_me:$LINENO: checking for float.h" >&5 echo $ECHO_N "checking for float.h... $ECHO_C" >&6 if test "${ac_cv_header_float_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_float_h" >&5 echo "${ECHO_T}$ac_cv_header_float_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking float.h usability" >&5 echo $ECHO_N "checking float.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking float.h presence" >&5 echo $ECHO_N "checking float.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: float.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: float.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: float.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: float.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: float.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: float.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: float.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: float.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: float.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: float.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: float.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: float.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: float.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: float.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: float.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: float.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------ ## ## Report this to the Tix lists. ## ## ------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for float.h" >&5 echo $ECHO_N "checking for float.h... $ECHO_C" >&6 if test "${ac_cv_header_float_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_float_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_float_h" >&5 echo "${ECHO_T}$ac_cv_header_float_h" >&6 fi if test $ac_cv_header_float_h = yes; then : else cat >>confdefs.h <<\_ACEOF #define NO_FLOAT_H 1 _ACEOF fi if test "${ac_cv_header_values_h+set}" = set; then echo "$as_me:$LINENO: checking for values.h" >&5 echo $ECHO_N "checking for values.h... $ECHO_C" >&6 if test "${ac_cv_header_values_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_values_h" >&5 echo "${ECHO_T}$ac_cv_header_values_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking values.h usability" >&5 echo $ECHO_N "checking values.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking values.h presence" >&5 echo $ECHO_N "checking values.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: values.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: values.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: values.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: values.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: values.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: values.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: values.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: values.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: values.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: values.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: values.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: values.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: values.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: values.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: values.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: values.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------ ## ## Report this to the Tix lists. ## ## ------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for values.h" >&5 echo $ECHO_N "checking for values.h... $ECHO_C" >&6 if test "${ac_cv_header_values_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_values_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_values_h" >&5 echo "${ECHO_T}$ac_cv_header_values_h" >&6 fi if test $ac_cv_header_values_h = yes; then : else cat >>confdefs.h <<\_ACEOF #define NO_VALUES_H 1 _ACEOF fi if test "${ac_cv_header_limits_h+set}" = set; then echo "$as_me:$LINENO: checking for limits.h" >&5 echo $ECHO_N "checking for limits.h... $ECHO_C" >&6 if test "${ac_cv_header_limits_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5 echo "${ECHO_T}$ac_cv_header_limits_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking limits.h usability" >&5 echo $ECHO_N "checking limits.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking limits.h presence" >&5 echo $ECHO_N "checking limits.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: limits.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: limits.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: limits.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: limits.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: limits.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: limits.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: limits.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: limits.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: limits.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: limits.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: limits.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: limits.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------ ## ## Report this to the Tix lists. ## ## ------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for limits.h" >&5 echo $ECHO_N "checking for limits.h... $ECHO_C" >&6 if test "${ac_cv_header_limits_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_limits_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5 echo "${ECHO_T}$ac_cv_header_limits_h" >&6 fi if test $ac_cv_header_limits_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LIMITS_H 1 _ACEOF else cat >>confdefs.h <<\_ACEOF #define NO_LIMITS_H 1 _ACEOF fi if test "${ac_cv_header_stdlib_h+set}" = set; then echo "$as_me:$LINENO: checking for stdlib.h" >&5 echo $ECHO_N "checking for stdlib.h... $ECHO_C" >&6 if test "${ac_cv_header_stdlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_stdlib_h" >&5 echo "${ECHO_T}$ac_cv_header_stdlib_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking stdlib.h usability" >&5 echo $ECHO_N "checking stdlib.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking stdlib.h presence" >&5 echo $ECHO_N "checking stdlib.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: stdlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: stdlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: stdlib.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: stdlib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: stdlib.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: stdlib.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: stdlib.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: stdlib.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: stdlib.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: stdlib.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: stdlib.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: stdlib.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: stdlib.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: stdlib.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: stdlib.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: stdlib.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------ ## ## Report this to the Tix lists. ## ## ------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for stdlib.h" >&5 echo $ECHO_N "checking for stdlib.h... $ECHO_C" >&6 if test "${ac_cv_header_stdlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_stdlib_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_stdlib_h" >&5 echo "${ECHO_T}$ac_cv_header_stdlib_h" >&6 fi if test $ac_cv_header_stdlib_h = yes; then tcl_ok=1 else tcl_ok=0 fi cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "strtol" >/dev/null 2>&1; then : else tcl_ok=0 fi rm -f conftest* cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "strtoul" >/dev/null 2>&1; then : else tcl_ok=0 fi rm -f conftest* cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "strtod" >/dev/null 2>&1; then : else tcl_ok=0 fi rm -f conftest* if test $tcl_ok = 0; then cat >>confdefs.h <<\_ACEOF #define NO_STDLIB_H 1 _ACEOF fi if test "${ac_cv_header_string_h+set}" = set; then echo "$as_me:$LINENO: checking for string.h" >&5 echo $ECHO_N "checking for string.h... $ECHO_C" >&6 if test "${ac_cv_header_string_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_string_h" >&5 echo "${ECHO_T}$ac_cv_header_string_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking string.h usability" >&5 echo $ECHO_N "checking string.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking string.h presence" >&5 echo $ECHO_N "checking string.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: string.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: string.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: string.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: string.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: string.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: string.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: string.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: string.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: string.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: string.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: string.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: string.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: string.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: string.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: string.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: string.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------ ## ## Report this to the Tix lists. ## ## ------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for string.h" >&5 echo $ECHO_N "checking for string.h... $ECHO_C" >&6 if test "${ac_cv_header_string_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_string_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_string_h" >&5 echo "${ECHO_T}$ac_cv_header_string_h" >&6 fi if test $ac_cv_header_string_h = yes; then tcl_ok=1 else tcl_ok=0 fi cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "strstr" >/dev/null 2>&1; then : else tcl_ok=0 fi rm -f conftest* cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "strerror" >/dev/null 2>&1; then : else tcl_ok=0 fi rm -f conftest* # See also memmove check below for a place where NO_STRING_H can be # set and why. if test $tcl_ok = 0; then cat >>confdefs.h <<\_ACEOF #define NO_STRING_H 1 _ACEOF fi if test "${ac_cv_header_sys_wait_h+set}" = set; then echo "$as_me:$LINENO: checking for sys/wait.h" >&5 echo $ECHO_N "checking for sys/wait.h... $ECHO_C" >&6 if test "${ac_cv_header_sys_wait_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking sys/wait.h usability" >&5 echo $ECHO_N "checking sys/wait.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking sys/wait.h presence" >&5 echo $ECHO_N "checking sys/wait.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: sys/wait.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: sys/wait.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: sys/wait.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: sys/wait.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: sys/wait.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: sys/wait.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: sys/wait.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: sys/wait.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: sys/wait.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: sys/wait.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: sys/wait.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: sys/wait.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: sys/wait.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: sys/wait.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: sys/wait.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: sys/wait.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------ ## ## Report this to the Tix lists. ## ## ------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for sys/wait.h" >&5 echo $ECHO_N "checking for sys/wait.h... $ECHO_C" >&6 if test "${ac_cv_header_sys_wait_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_sys_wait_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 fi if test $ac_cv_header_sys_wait_h = yes; then : else cat >>confdefs.h <<\_ACEOF #define NO_SYS_WAIT_H 1 _ACEOF fi if test "${ac_cv_header_dlfcn_h+set}" = set; then echo "$as_me:$LINENO: checking for dlfcn.h" >&5 echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6 if test "${ac_cv_header_dlfcn_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5 echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking dlfcn.h usability" >&5 echo $ECHO_N "checking dlfcn.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking dlfcn.h presence" >&5 echo $ECHO_N "checking dlfcn.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: dlfcn.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: dlfcn.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: dlfcn.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: dlfcn.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: dlfcn.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: dlfcn.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: dlfcn.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------ ## ## Report this to the Tix lists. ## ## ------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for dlfcn.h" >&5 echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6 if test "${ac_cv_header_dlfcn_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_dlfcn_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5 echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6 fi if test $ac_cv_header_dlfcn_h = yes; then : else cat >>confdefs.h <<\_ACEOF #define NO_DLFCN_H 1 _ACEOF fi # OS/390 lacks sys/param.h (and doesn't need it, by chance). for ac_header in sys/param.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------ ## ## Report this to the Tix lists. ## ## ------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Let the user call this, because if it triggers, they will # need a compat/strtod.c that is correct. Users can also # use Tcl_GetDouble(FromObj) instead. #TEA_BUGGY_STRTOD fi #----------------------------------------------------------------------- # __CHANGE__ # Specify the C source files to compile in TEA_ADD_SOURCES, # public headers that need to be installed in TEA_ADD_HEADERS, # stub library C source files to compile in TEA_ADD_STUB_SOURCES, # and runtime Tcl library files in TEA_ADD_TCL_SOURCES. # This defines PKG(_STUB)_SOURCES, PKG(_STUB)_OBJECTS, PKG_HEADERS # and PKG_TCL_SOURCES. #----------------------------------------------------------------------- # core sources vars="tixClass.c tixCmds.c tixCompat.c tixError.c tixGeometry.c tixInit.c tixList.c tixMethod.c tixOption.c tixScroll.c tixSmpLs.c tixUtils.c tixWidget.c" for i in $vars; do case $i in \$*) # allow $-var names PKG_SOURCES="$PKG_SOURCES $i" PKG_OBJECTS="$PKG_OBJECTS $i" ;; *) # check for existence - allows for generic/win/unix VPATH if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \ ; then { { echo "$as_me:$LINENO: error: could not find source file '$i'" >&5 echo "$as_me: error: could not find source file '$i'" >&2;} { (exit 1); exit 1; }; } fi PKG_SOURCES="$PKG_SOURCES $i" # this assumes it is in a VPATH dir i=`basename $i` # handle user calling this before or after TEA_SETUP_COMPILER if test x"${OBJEXT}" != x ; then j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}" else j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}" fi PKG_OBJECTS="$PKG_OBJECTS $j" ;; esac done # ditem sources vars="tixDItem.c tixDiITxt.c tixDiImg.c tixDiStyle.c tixDiText.c tixDiWin.c" for i in $vars; do case $i in \$*) # allow $-var names PKG_SOURCES="$PKG_SOURCES $i" PKG_OBJECTS="$PKG_OBJECTS $i" ;; *) # check for existence - allows for generic/win/unix VPATH if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \ ; then { { echo "$as_me:$LINENO: error: could not find source file '$i'" >&5 echo "$as_me: error: could not find source file '$i'" >&2;} { (exit 1); exit 1; }; } fi PKG_SOURCES="$PKG_SOURCES $i" # this assumes it is in a VPATH dir i=`basename $i` # handle user calling this before or after TEA_SETUP_COMPILER if test x"${OBJEXT}" != x ; then j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}" else j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}" fi PKG_OBJECTS="$PKG_OBJECTS $j" ;; esac done # manager sources vars="tixForm.c tixFormMisc.c" for i in $vars; do case $i in \$*) # allow $-var names PKG_SOURCES="$PKG_SOURCES $i" PKG_OBJECTS="$PKG_OBJECTS $i" ;; *) # check for existence - allows for generic/win/unix VPATH if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \ ; then { { echo "$as_me:$LINENO: error: could not find source file '$i'" >&5 echo "$as_me: error: could not find source file '$i'" >&2;} { (exit 1); exit 1; }; } fi PKG_SOURCES="$PKG_SOURCES $i" # this assumes it is in a VPATH dir i=`basename $i` # handle user calling this before or after TEA_SETUP_COMPILER if test x"${OBJEXT}" != x ; then j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}" else j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}" fi PKG_OBJECTS="$PKG_OBJECTS $j" ;; esac done # widget sources vars="tixGrid.c tixGrData.c tixGrFmt.c tixGrRC.c tixGrSel.c tixGrSort.c tixGrUtl.c tixHList.c tixHLCol.c tixHLInd.c tixHLHdr.c tixNBFrame.c tixTList.c" for i in $vars; do case $i in \$*) # allow $-var names PKG_SOURCES="$PKG_SOURCES $i" PKG_OBJECTS="$PKG_OBJECTS $i" ;; *) # check for existence - allows for generic/win/unix VPATH if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \ ; then { { echo "$as_me:$LINENO: error: could not find source file '$i'" >&5 echo "$as_me: error: could not find source file '$i'" >&2;} { (exit 1); exit 1; }; } fi PKG_SOURCES="$PKG_SOURCES $i" # this assumes it is in a VPATH dir i=`basename $i` # handle user calling this before or after TEA_SETUP_COMPILER if test x"${OBJEXT}" != x ; then j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}" else j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}" fi PKG_OBJECTS="$PKG_OBJECTS $j" ;; esac done # misc sources vars="tixImgCmp.c tixImgXpm.c" for i in $vars; do case $i in \$*) # allow $-var names PKG_SOURCES="$PKG_SOURCES $i" PKG_OBJECTS="$PKG_OBJECTS $i" ;; *) # check for existence - allows for generic/win/unix VPATH if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \ ; then { { echo "$as_me:$LINENO: error: could not find source file '$i'" >&5 echo "$as_me: error: could not find source file '$i'" >&2;} { (exit 1); exit 1; }; } fi PKG_SOURCES="$PKG_SOURCES $i" # this assumes it is in a VPATH dir i=`basename $i` # handle user calling this before or after TEA_SETUP_COMPILER if test x"${OBJEXT}" != x ; then j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}" else j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}" fi PKG_OBJECTS="$PKG_OBJECTS $j" ;; esac done vars="" for i in $vars; do # check for existence, be strict because it is installed if test ! -f "${srcdir}/$i" ; then { { echo "$as_me:$LINENO: error: could not find header file '${srcdir}/$i'" >&5 echo "$as_me: error: could not find header file '${srcdir}/$i'" >&2;} { (exit 1); exit 1; }; } fi PKG_HEADERS="$PKG_HEADERS $i" done vars="-I. -I\"`${CYGPATH} ${srcdir}/generic`\"" for i in $vars; do PKG_INCLUDES="$PKG_INCLUDES $i" done PKG_CFLAGS="$PKG_CFLAGS " vars="" for i in $vars; do # check for existence - allows for generic/win/unix VPATH if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \ ; then { { echo "$as_me:$LINENO: error: could not find stub source file '$i'" >&5 echo "$as_me: error: could not find stub source file '$i'" >&2;} { (exit 1); exit 1; }; } fi PKG_STUB_SOURCES="$PKG_STUB_SOURCES $i" # this assumes it is in a VPATH dir i=`basename $i` # handle user calling this before or after TEA_SETUP_COMPILER if test x"${OBJEXT}" != x ; then j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}" else j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}" fi PKG_STUB_OBJECTS="$PKG_STUB_OBJECTS $j" done vars="" for i in $vars; do # check for existence, be strict because it is installed if test ! -f "${srcdir}/$i" ; then { { echo "$as_me:$LINENO: error: could not find tcl source file '${srcdir}/$i'" >&5 echo "$as_me: error: could not find tcl source file '${srcdir}/$i'" >&2;} { (exit 1); exit 1; }; } fi PKG_TCL_SOURCES="$PKG_TCL_SOURCES $i" done #-------------------------------------------------------------------- # __CHANGE__ # Choose which headers you need. Extension authors should try very # hard to only rely on the Tcl public header files. Internal headers # contain private data structures and are subject to change without # notice. # This MUST be called after TEA_PATH_TCLCONFIG/TEA_LOAD_TCLCONFIG #-------------------------------------------------------------------- # needed for tclPort.h and such ... can be corrected echo "$as_me:$LINENO: checking for Tcl private include files" >&5 echo $ECHO_N "checking for Tcl private include files... $ECHO_C" >&6 TCL_SRC_DIR_NATIVE=`${CYGPATH} ${TCL_SRC_DIR}` TCL_TOP_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}\" TCL_GENERIC_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/generic\" TCL_UNIX_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/unix\" TCL_WIN_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/win\" TCL_BMAP_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/bitmaps\" TCL_TOOL_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/tools\" TCL_COMPAT_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/compat\" if test "${TEA_PLATFORM}" = "windows"; then TCL_PLATFORM_DIR_NATIVE=${TCL_WIN_DIR_NATIVE} else TCL_PLATFORM_DIR_NATIVE=${TCL_UNIX_DIR_NATIVE} fi # We want to ensure these are substituted so as not to require # any *_NATIVE vars be defined in the Makefile TCL_INCLUDES="-I${TCL_GENERIC_DIR_NATIVE} -I${TCL_PLATFORM_DIR_NATIVE}" if test "`uname -s`" = "Darwin"; then # If Tcl was built as a framework, attempt to use # the framework's Headers and PrivateHeaders directories case ${TCL_DEFS} in *TCL_FRAMEWORK*) if test -d "${TCL_BIN_DIR}/Headers" -a -d "${TCL_BIN_DIR}/PrivateHeaders"; then TCL_INCLUDES="-I\"${TCL_BIN_DIR}/Headers\" -I\"${TCL_BIN_DIR}/PrivateHeaders\" ${TCL_INCLUDES}"; else TCL_INCLUDES="${TCL_INCLUDES} ${TCL_INCLUDE_SPEC} `echo "${TCL_INCLUDE_SPEC}" | sed -e 's/Headers/PrivateHeaders/'`"; fi ;; esac else if test ! -f "${TCL_SRC_DIR}/generic/tclInt.h" ; then { { echo "$as_me:$LINENO: error: Cannot find private header tclInt.h in ${TCL_SRC_DIR}" >&5 echo "$as_me: error: Cannot find private header tclInt.h in ${TCL_SRC_DIR}" >&2;} { (exit 1); exit 1; }; } fi fi echo "$as_me:$LINENO: result: Using srcdir found in tclConfig.sh: ${TCL_SRC_DIR}" >&5 echo "${ECHO_T}Using srcdir found in tclConfig.sh: ${TCL_SRC_DIR}" >&6 echo "$as_me:$LINENO: checking for Tk private include files" >&5 echo $ECHO_N "checking for Tk private include files... $ECHO_C" >&6 TK_SRC_DIR_NATIVE=`${CYGPATH} ${TK_SRC_DIR}` TK_TOP_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}\" TK_UNIX_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/unix\" TK_WIN_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/win\" TK_GENERIC_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/generic\" TK_XLIB_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/xlib\" if test "${TEA_PLATFORM}" = "windows"; then TK_PLATFORM_DIR_NATIVE=${TK_WIN_DIR_NATIVE} else TK_PLATFORM_DIR_NATIVE=${TK_UNIX_DIR_NATIVE} fi # We want to ensure these are substituted so as not to require # any *_NATIVE vars be defined in the Makefile TK_INCLUDES="-I${TK_GENERIC_DIR_NATIVE} -I${TK_PLATFORM_DIR_NATIVE}" if test "${TEA_WINDOWINGSYSTEM}" = "win32" \ -o "${TEA_WINDOWINGSYSTEM}" = "aqua"; then TK_INCLUDES="${TK_INCLUDES} -I${TK_XLIB_DIR_NATIVE}" fi if test "${TEA_WINDOWINGSYSTEM}" = "aqua"; then TK_INCLUDES="${TK_INCLUDES} -I${TK_SRC_DIR_NATIVE}/macosx" fi if test "`uname -s`" = "Darwin"; then # If Tk was built as a framework, attempt to use # the framework's Headers and PrivateHeaders directories case ${TK_DEFS} in *TK_FRAMEWORK*) if test -d "${TK_BIN_DIR}/Headers" -a -d "${TK_BIN_DIR}/PrivateHeaders"; then TK_INCLUDES="-I\"${TK_BIN_DIR}/Headers\" -I\"${TK_BIN_DIR}/PrivateHeaders\" ${TK_INCLUDES}"; fi ;; esac else if test ! -f "${TK_SRC_DIR}/generic/tkInt.h" ; then { { echo "$as_me:$LINENO: error: Cannot find private header tkInt.h in ${TK_SRC_DIR}" >&5 echo "$as_me: error: Cannot find private header tkInt.h in ${TK_SRC_DIR}" >&2;} { (exit 1); exit 1; }; } fi fi echo "$as_me:$LINENO: result: Using srcdir found in tkConfig.sh: ${TK_SRC_DIR}" >&5 echo "${ECHO_T}Using srcdir found in tkConfig.sh: ${TK_SRC_DIR}" >&6 #-------------------------------------------------------------------- # For Unix/Tk builds, make sure that the X libraries/headers are found. #-------------------------------------------------------------------- if test "${TEA_WINDOWINGSYSTEM}" = "x11" ; then echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then withval="$with_x" fi; # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then # Both variables are already set. have_x=yes else if test "${ac_cv_have_x+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -fr conftest.dir if mkdir conftest.dir; then cd conftest.dir # Make sure to not put "make" in the Imakefile rules, since we grep it out. cat >Imakefile <<'_ACEOF' acfindx: @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' _ACEOF if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl; do if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && test -f $ac_im_libdir/libX11.$ac_extension; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /lib) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -fr conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Intrinsic.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # We can compile using X headers with no special include directory. ac_x_includes= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Intrinsic.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lXt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { XtMalloc (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl; do if test -r $ac_dir/libXt.$ac_extension; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then # Didn't find X anywhere. Cache the known absence of X. ac_cv_have_x="have_x=no" else # Record where we found X for the cache. ac_cv_have_x="have_x=yes \ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" fi fi fi eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then echo "$as_me:$LINENO: result: $have_x" >&5 echo "${ECHO_T}$have_x" >&6 no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes \ ac_x_includes=$x_includes ac_x_libraries=$x_libraries" echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 fi not_really_there="" if test "$no_x" = ""; then if test "$x_includes" = ""; then cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 not_really_there="yes" fi rm -f conftest.err conftest.$ac_ext else if test ! -r $x_includes/X11/Intrinsic.h; then not_really_there="yes" fi fi fi if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then echo "$as_me:$LINENO: checking for X11 header files" >&5 echo $ECHO_N "checking for X11 header files... $ECHO_C" >&6 found_xincludes="no" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then found_xincludes="yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 found_xincludes="no" fi rm -f conftest.err conftest.$ac_ext if test "$found_xincludes" = "no"; then dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include" for i in $dirs ; do if test -r $i/X11/Intrinsic.h; then echo "$as_me:$LINENO: result: $i" >&5 echo "${ECHO_T}$i" >&6 XINCLUDES=" -I$i" found_xincludes="yes" break fi done fi else if test "$x_includes" != ""; then XINCLUDES="-I$x_includes" found_xincludes="yes" fi fi if test found_xincludes = "no"; then echo "$as_me:$LINENO: result: couldn't find any!" >&5 echo "${ECHO_T}couldn't find any!" >&6 fi if test "$no_x" = yes; then echo "$as_me:$LINENO: checking for X11 libraries" >&5 echo $ECHO_N "checking for X11 libraries... $ECHO_C" >&6 XLIBSW=nope dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib" for i in $dirs ; do if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then echo "$as_me:$LINENO: result: $i" >&5 echo "${ECHO_T}$i" >&6 XLIBSW="-L$i -lX11" x_libraries="$i" break fi done else if test "$x_libraries" = ""; then XLIBSW=-lX11 else XLIBSW="-L$x_libraries -lX11" fi fi if test "$XLIBSW" = nope ; then echo "$as_me:$LINENO: checking for XCreateWindow in -lXwindow" >&5 echo $ECHO_N "checking for XCreateWindow in -lXwindow... $ECHO_C" >&6 if test "${ac_cv_lib_Xwindow_XCreateWindow+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXwindow $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XCreateWindow (); int main () { XCreateWindow (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_Xwindow_XCreateWindow=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xwindow_XCreateWindow=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_Xwindow_XCreateWindow" >&5 echo "${ECHO_T}$ac_cv_lib_Xwindow_XCreateWindow" >&6 if test $ac_cv_lib_Xwindow_XCreateWindow = yes; then XLIBSW=-lXwindow fi fi if test "$XLIBSW" = nope ; then echo "$as_me:$LINENO: result: could not find any! Using -lX11." >&5 echo "${ECHO_T}could not find any! Using -lX11." >&6 XLIBSW=-lX11 fi if test x"${XLIBSW}" != x ; then PKG_LIBS="${PKG_LIBS} ${XLIBSW}" fi fi #-------------------------------------------------------------------- # __CHANGE__ # A few miscellaneous platform-specific items: # # Define a special symbol for Windows (BUILD_tix in this case) so # that we create the export library with the dll. # # Windows creates a few extra files that need to be cleaned up. # You can add more files to clean if your extension creates any extra # files. # # TEA_ADD any extra compiler/build info here. #-------------------------------------------------------------------- if test "${TEA_PLATFORM}" = "windows" ; then cat >>confdefs.h <<_ACEOF #define BUILD_tix 1 _ACEOF CLEANFILES="pkgIndex.tcl *.lib *.dll *.exp *.ilk *.pdb *.pch" vars="gdi32.lib user32.lib advapi32.lib comdlg32.lib" for i in $vars; do if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then # Convert foo.lib to -lfoo for GCC. No-op if not *.lib i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'` fi PKG_LIBS="$PKG_LIBS $i" done vars="tixWCmpt.c tixWinWm.c tixWinXpm.c tixWinDraw.c" for i in $vars; do case $i in \$*) # allow $-var names PKG_SOURCES="$PKG_SOURCES $i" PKG_OBJECTS="$PKG_OBJECTS $i" ;; *) # check for existence - allows for generic/win/unix VPATH if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \ ; then { { echo "$as_me:$LINENO: error: could not find source file '$i'" >&5 echo "$as_me: error: could not find source file '$i'" >&2;} { (exit 1); exit 1; }; } fi PKG_SOURCES="$PKG_SOURCES $i" # this assumes it is in a VPATH dir i=`basename $i` # handle user calling this before or after TEA_SETUP_COMPILER if test x"${OBJEXT}" != x ; then j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}" else j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}" fi PKG_OBJECTS="$PKG_OBJECTS $j" ;; esac done vars="-I. -I\"`${CYGPATH} ${srcdir}/win`\"" for i in $vars; do PKG_INCLUDES="$PKG_INCLUDES $i" done else CLEANFILES="pkgIndex.tcl" vars="tixInputO.c tixUnixMwm.c" for i in $vars; do case $i in \$*) # allow $-var names PKG_SOURCES="$PKG_SOURCES $i" PKG_OBJECTS="$PKG_OBJECTS $i" ;; *) # check for existence - allows for generic/win/unix VPATH if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \ ; then { { echo "$as_me:$LINENO: error: could not find source file '$i'" >&5 echo "$as_me: error: could not find source file '$i'" >&2;} { (exit 1); exit 1; }; } fi PKG_SOURCES="$PKG_SOURCES $i" # this assumes it is in a VPATH dir i=`basename $i` # handle user calling this before or after TEA_SETUP_COMPILER if test x"${OBJEXT}" != x ; then j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}" else j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}" fi PKG_OBJECTS="$PKG_OBJECTS $j" ;; esac done vars="tixUnixDraw.c tixUnixXpm.c tixUnixWm.c" for i in $vars; do case $i in \$*) # allow $-var names PKG_SOURCES="$PKG_SOURCES $i" PKG_OBJECTS="$PKG_OBJECTS $i" ;; *) # check for existence - allows for generic/win/unix VPATH if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \ ; then { { echo "$as_me:$LINENO: error: could not find source file '$i'" >&5 echo "$as_me: error: could not find source file '$i'" >&2;} { (exit 1); exit 1; }; } fi PKG_SOURCES="$PKG_SOURCES $i" # this assumes it is in a VPATH dir i=`basename $i` # handle user calling this before or after TEA_SETUP_COMPILER if test x"${OBJEXT}" != x ; then j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}" else j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}" fi PKG_OBJECTS="$PKG_OBJECTS $j" ;; esac done vars="-I. -I\"`${CYGPATH} ${srcdir}/unix`\"" for i in $vars; do PKG_INCLUDES="$PKG_INCLUDES $i" done fi if test "${TEA_WINDOWINGSYSTEM}" = "aqua"; then vars="-I${TK_TOP_DIR_NATIVE}/macosx" for i in $vars; do PKG_INCLUDES="$PKG_INCLUDES $i" done fi #-------------------------------------------------------------------- # Check whether --enable-threads or --disable-threads was given. # So far only Tcl responds to this one. #-------------------------------------------------------------------- # Check whether --enable-threads or --disable-threads was given. if test "${enable_threads+set}" = set; then enableval="$enable_threads" tcl_ok=$enableval else tcl_ok=yes fi; if test "${enable_threads+set}" = set; then enableval="$enable_threads" tcl_ok=$enableval else tcl_ok=yes fi if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then TCL_THREADS=1 if test "${TEA_PLATFORM}" != "windows" ; then # We are always OK on Windows, so check what this platform wants: # USE_THREAD_ALLOC tells us to try the special thread-based # allocator that significantly reduces lock contention cat >>confdefs.h <<\_ACEOF #define USE_THREAD_ALLOC 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define _REENTRANT 1 _ACEOF if test "`uname -s`" = "SunOS" ; then cat >>confdefs.h <<\_ACEOF #define _POSIX_PTHREAD_SEMANTICS 1 _ACEOF fi cat >>confdefs.h <<\_ACEOF #define _THREAD_SAFE 1 _ACEOF echo "$as_me:$LINENO: checking for pthread_mutex_init in -lpthread" >&5 echo $ECHO_N "checking for pthread_mutex_init in -lpthread... $ECHO_C" >&6 if test "${ac_cv_lib_pthread_pthread_mutex_init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pthread_mutex_init (); int main () { pthread_mutex_init (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_pthread_pthread_mutex_init=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pthread_pthread_mutex_init=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_init" >&5 echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_init" >&6 if test $ac_cv_lib_pthread_pthread_mutex_init = yes; then tcl_ok=yes else tcl_ok=no fi if test "$tcl_ok" = "no"; then # Check a little harder for __pthread_mutex_init in the same # library, as some systems hide it there until pthread.h is # defined. We could alternatively do an AC_TRY_COMPILE with # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] echo "$as_me:$LINENO: checking for __pthread_mutex_init in -lpthread" >&5 echo $ECHO_N "checking for __pthread_mutex_init in -lpthread... $ECHO_C" >&6 if test "${ac_cv_lib_pthread___pthread_mutex_init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char __pthread_mutex_init (); int main () { __pthread_mutex_init (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_pthread___pthread_mutex_init=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pthread___pthread_mutex_init=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_pthread___pthread_mutex_init" >&5 echo "${ECHO_T}$ac_cv_lib_pthread___pthread_mutex_init" >&6 if test $ac_cv_lib_pthread___pthread_mutex_init = yes; then tcl_ok=yes else tcl_ok=no fi fi if test "$tcl_ok" = "yes"; then # The space is needed THREADS_LIBS=" -lpthread" else echo "$as_me:$LINENO: checking for pthread_mutex_init in -lpthreads" >&5 echo $ECHO_N "checking for pthread_mutex_init in -lpthreads... $ECHO_C" >&6 if test "${ac_cv_lib_pthreads_pthread_mutex_init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthreads $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pthread_mutex_init (); int main () { pthread_mutex_init (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_pthreads_pthread_mutex_init=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pthreads_pthread_mutex_init=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_pthreads_pthread_mutex_init" >&5 echo "${ECHO_T}$ac_cv_lib_pthreads_pthread_mutex_init" >&6 if test $ac_cv_lib_pthreads_pthread_mutex_init = yes; then tcl_ok=yes else tcl_ok=no fi if test "$tcl_ok" = "yes"; then # The space is needed THREADS_LIBS=" -lpthreads" else echo "$as_me:$LINENO: checking for pthread_mutex_init in -lc" >&5 echo $ECHO_N "checking for pthread_mutex_init in -lc... $ECHO_C" >&6 if test "${ac_cv_lib_c_pthread_mutex_init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pthread_mutex_init (); int main () { pthread_mutex_init (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_c_pthread_mutex_init=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_c_pthread_mutex_init=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_c_pthread_mutex_init" >&5 echo "${ECHO_T}$ac_cv_lib_c_pthread_mutex_init" >&6 if test $ac_cv_lib_c_pthread_mutex_init = yes; then tcl_ok=yes else tcl_ok=no fi if test "$tcl_ok" = "no"; then echo "$as_me:$LINENO: checking for pthread_mutex_init in -lc_r" >&5 echo $ECHO_N "checking for pthread_mutex_init in -lc_r... $ECHO_C" >&6 if test "${ac_cv_lib_c_r_pthread_mutex_init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lc_r $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pthread_mutex_init (); int main () { pthread_mutex_init (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_c_r_pthread_mutex_init=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_c_r_pthread_mutex_init=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_c_r_pthread_mutex_init" >&5 echo "${ECHO_T}$ac_cv_lib_c_r_pthread_mutex_init" >&6 if test $ac_cv_lib_c_r_pthread_mutex_init = yes; then tcl_ok=yes else tcl_ok=no fi if test "$tcl_ok" = "yes"; then # The space is needed THREADS_LIBS=" -pthread" else TCL_THREADS=0 { echo "$as_me:$LINENO: WARNING: Do not know how to find pthread lib on your system - thread support disabled" >&5 echo "$as_me: WARNING: Do not know how to find pthread lib on your system - thread support disabled" >&2;} fi fi fi fi fi else TCL_THREADS=0 fi # Do checking message here to not mess up interleaved configure output echo "$as_me:$LINENO: checking for building with threads" >&5 echo $ECHO_N "checking for building with threads... $ECHO_C" >&6 if test "${TCL_THREADS}" = 1; then cat >>confdefs.h <<\_ACEOF #define TCL_THREADS 1 _ACEOF echo "$as_me:$LINENO: result: yes (default)" >&5 echo "${ECHO_T}yes (default)" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # TCL_THREADS sanity checking. See if our request for building with # threads is the same as the way Tcl was built. If not, warn the user. case ${TCL_DEFS} in *THREADS=1*) if test "${TCL_THREADS}" = "0"; then { echo "$as_me:$LINENO: WARNING: Building ${PACKAGE_NAME} without threads enabled, but building against Tcl that IS thread-enabled. It is recommended to use --enable-threads." >&5 echo "$as_me: WARNING: Building ${PACKAGE_NAME} without threads enabled, but building against Tcl that IS thread-enabled. It is recommended to use --enable-threads." >&2;} fi ;; *) if test "${TCL_THREADS}" = "1"; then { echo "$as_me:$LINENO: WARNING: --enable-threads requested, but building against a Tcl that is NOT thread-enabled. This is an OK configuration that will also run in a thread-enabled core." >&5 echo "$as_me: WARNING: --enable-threads requested, but building against a Tcl that is NOT thread-enabled. This is an OK configuration that will also run in a thread-enabled core." >&2;} fi ;; esac #-------------------------------------------------------------------- # The statement below defines a collection of symbols related to # building as a shared library instead of a static library. #-------------------------------------------------------------------- echo "$as_me:$LINENO: checking how to build libraries" >&5 echo $ECHO_N "checking how to build libraries... $ECHO_C" >&6 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" tcl_ok=$enableval else tcl_ok=yes fi; if test "${enable_shared+set}" = set; then enableval="$enable_shared" tcl_ok=$enableval else tcl_ok=yes fi if test "$tcl_ok" = "yes" ; then echo "$as_me:$LINENO: result: shared" >&5 echo "${ECHO_T}shared" >&6 SHARED_BUILD=1 else echo "$as_me:$LINENO: result: static" >&5 echo "${ECHO_T}static" >&6 SHARED_BUILD=0 cat >>confdefs.h <<\_ACEOF #define STATIC_BUILD 1 _ACEOF fi #-------------------------------------------------------------------- # This macro figures out what flags to use with the compiler/linker # when building shared/static debug/optimized objects. This information # can be taken from the tclConfig.sh file, but this figures it all out. #-------------------------------------------------------------------- # Step 0.a: Enable 64 bit support? echo "$as_me:$LINENO: checking if 64bit support is requested" >&5 echo $ECHO_N "checking if 64bit support is requested... $ECHO_C" >&6 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" do64bit=$enableval else do64bit=no fi; echo "$as_me:$LINENO: result: $do64bit" >&5 echo "${ECHO_T}$do64bit" >&6 # Step 0.b: Enable Solaris 64 bit VIS support? echo "$as_me:$LINENO: checking if 64bit Sparc VIS support is requested" >&5 echo $ECHO_N "checking if 64bit Sparc VIS support is requested... $ECHO_C" >&6 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" do64bitVIS=$enableval else do64bitVIS=no fi; echo "$as_me:$LINENO: result: $do64bitVIS" >&5 echo "${ECHO_T}$do64bitVIS" >&6 if test "$do64bitVIS" = "yes"; then # Force 64bit on with VIS do64bit=yes fi # Step 0.c: Cross-compiling options for Windows/CE builds? if test "${TEA_PLATFORM}" = "windows" ; then echo "$as_me:$LINENO: checking if Windows/CE build is requested" >&5 echo $ECHO_N "checking if Windows/CE build is requested... $ECHO_C" >&6 # Check whether --enable-wince or --disable-wince was given. if test "${enable_wince+set}" = set; then enableval="$enable_wince" doWince=$enableval else doWince=no fi; echo "$as_me:$LINENO: result: $doWince" >&5 echo "${ECHO_T}$doWince" >&6 fi # Step 1: set the variable "system" to hold the name and version number # for the system. echo "$as_me:$LINENO: checking system version" >&5 echo $ECHO_N "checking system version... $ECHO_C" >&6 if test "${tcl_cv_sys_version+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "${TEA_PLATFORM}" = "windows" ; then tcl_cv_sys_version=windows elif test -f /usr/lib/NextStep/software_version; then tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then { echo "$as_me:$LINENO: WARNING: can't find uname command" >&5 echo "$as_me: WARNING: can't find uname command" >&2;} tcl_cv_sys_version=unknown else # Special check for weird MP-RAS system (uname returns weird # results, and the version is kept in special file). if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then tcl_cv_sys_version=MP-RAS-`awk '{print $3}' /etc/.relid` fi if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` fi fi fi fi echo "$as_me:$LINENO: result: $tcl_cv_sys_version" >&5 echo "${ECHO_T}$tcl_cv_sys_version" >&6 system=$tcl_cv_sys_version # Step 2: check for existence of -ldl library. This is needed because # Linux can use either -ldl or -ldld for dynamic loading. echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then have_dl=yes else have_dl=no fi # Require ranlib early so we can override it in special cases below. # Step 3: set configuration options based on system name and version. # This is similar to Tcl's unix/tcl.m4 except that we've added a # "windows" case. do64bit_ok=no LDFLAGS_ORIG="$LDFLAGS" # When ld needs options to work in 64-bit mode, put them in # LDFLAGS_ARCH so they eventually end up in LDFLAGS even if [load] # is disabled by the user. [Bug 1016796] LDFLAGS_ARCH="" TCL_EXPORT_FILE_SUFFIX="" UNSHARED_LIB_SUFFIX="" TCL_TRIM_DOTS='`echo ${PACKAGE_VERSION} | tr -d .`' ECHO_VERSION='`echo ${PACKAGE_VERSION}`' TCL_LIB_VERSIONS_OK=ok CFLAGS_DEBUG=-g CFLAGS_OPTIMIZE=-O if test "$GCC" = "yes" ; then CFLAGS_OPTIMIZE=-O2 CFLAGS_WARNING="-Wall -Wno-implicit-int" else CFLAGS_WARNING="" fi TCL_NEEDS_EXP_FILE=0 TCL_BUILD_EXP_FILE="" TCL_EXP_FILE="" # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then echo "$as_me:$LINENO: result: $AR" >&5 echo "${ECHO_T}$AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STLIB_LD='${AR} cr' LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" case $system in windows) # This is a 2-stage check to make sure we have the 64-bit SDK # We have to know where the SDK is installed. # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs # MACHINE is IX86 for LINK, but this is used by the manifest, # which requires x86|amd64|ia64. MACHINE="X86" if test "$do64bit" != "no" ; then if test "x${MSSDK}x" = "xx" ; then MSSDK="C:/Progra~1/Microsoft Platform SDK" fi MSSDK=`echo "$MSSDK" | sed -e 's!\\\!/!g'` PATH64="" case "$do64bit" in amd64|x64|yes) MACHINE="AMD64" ; # default to AMD64 64-bit build PATH64="${MSSDK}/Bin/Win64/x86/AMD64" ;; ia64) MACHINE="IA64" PATH64="${MSSDK}/Bin/Win64" ;; esac if test ! -d "${PATH64}" ; then { echo "$as_me:$LINENO: WARNING: Could not find 64-bit $MACHINE SDK to enable 64bit mode" >&5 echo "$as_me: WARNING: Could not find 64-bit $MACHINE SDK to enable 64bit mode" >&2;} { echo "$as_me:$LINENO: WARNING: Ensure latest Platform SDK is installed" >&5 echo "$as_me: WARNING: Ensure latest Platform SDK is installed" >&2;} do64bit="no" else echo "$as_me:$LINENO: result: Using 64-bit $MACHINE mode" >&5 echo "${ECHO_T} Using 64-bit $MACHINE mode" >&6 do64bit_ok="yes" fi fi if test "$doWince" != "no" ; then if test "$do64bit" != "no" ; then { { echo "$as_me:$LINENO: error: Windows/CE and 64-bit builds incompatible" >&5 echo "$as_me: error: Windows/CE and 64-bit builds incompatible" >&2;} { (exit 1); exit 1; }; } fi if test "$GCC" = "yes" ; then { { echo "$as_me:$LINENO: error: Windows/CE and GCC builds incompatible" >&5 echo "$as_me: error: Windows/CE and GCC builds incompatible" >&2;} { (exit 1); exit 1; }; } fi # First, look for one uninstalled. # the alternative search directory is invoked by --with-celib if test x"${no_celib}" = x ; then # we reset no_celib in case something fails here no_celib=true # Check whether --with-celib or --without-celib was given. if test "${with_celib+set}" = set; then withval="$with_celib" with_celibconfig=${withval} fi; echo "$as_me:$LINENO: checking for Windows/CE celib directory" >&5 echo $ECHO_N "checking for Windows/CE celib directory... $ECHO_C" >&6 if test "${ac_cv_c_celibconfig+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # First check to see if --with-celibconfig was specified. if test x"${with_celibconfig}" != x ; then if test -d "${with_celibconfig}/inc" ; then ac_cv_c_celibconfig=`(cd ${with_celibconfig}; pwd)` else { { echo "$as_me:$LINENO: error: ${with_celibconfig} directory doesn't contain inc directory" >&5 echo "$as_me: error: ${with_celibconfig} directory doesn't contain inc directory" >&2;} { (exit 1); exit 1; }; } fi fi # then check for a celib library if test x"${ac_cv_c_celibconfig}" = x ; then for i in \ ../celib-palm-3.0 \ ../celib \ ../../celib-palm-3.0 \ ../../celib \ `ls -dr ../celib-*3.[0-9]* 2>/dev/null` \ ${srcdir}/../celib-palm-3.0 \ ${srcdir}/../celib \ `ls -dr ${srcdir}/../celib-*3.[0-9]* 2>/dev/null` \ ; do if test -d "$i/inc" ; then ac_cv_c_celibconfig=`(cd $i; pwd)` break fi done fi fi if test x"${ac_cv_c_celibconfig}" = x ; then { { echo "$as_me:$LINENO: error: Cannot find celib support library directory" >&5 echo "$as_me: error: Cannot find celib support library directory" >&2;} { (exit 1); exit 1; }; } else no_celib= CELIB_DIR=${ac_cv_c_celibconfig} CELIB_DIR=`echo "$CELIB_DIR" | sed -e 's!\\\!/!g'` echo "$as_me:$LINENO: result: found $CELIB_DIR" >&5 echo "${ECHO_T}found $CELIB_DIR" >&6 fi fi # Set defaults for common evc4/PPC2003 setup # Currently Tcl requires 300+, possibly 420+ for sockets CEVERSION=420; # could be 211 300 301 400 420 ... TARGETCPU=ARMV4; # could be ARMV4 ARM MIPS SH3 X86 ... ARCH=ARM; # could be ARM MIPS X86EM ... PLATFORM="Pocket PC 2003"; # or "Pocket PC 2002" if test "$doWince" != "yes"; then # If !yes then the user specified something # Reset ARCH to allow user to skip specifying it ARCH= eval `echo $doWince | awk -F, '{ \ if (length($1)) { printf "CEVERSION=\"%s\"\n", $1; \ if ($1 < 400) { printf "PLATFORM=\"Pocket PC 2002\"\n" } }; \ if (length($2)) { printf "TARGETCPU=\"%s\"\n", toupper($2) }; \ if (length($3)) { printf "ARCH=\"%s\"\n", toupper($3) }; \ if (length($4)) { printf "PLATFORM=\"%s\"\n", $4 }; \ }'` if test "x${ARCH}" = "x" ; then ARCH=$TARGETCPU; fi fi OSVERSION=WCE$CEVERSION; if test "x${WCEROOT}" = "x" ; then WCEROOT="C:/Program Files/Microsoft eMbedded C++ 4.0" if test ! -d "${WCEROOT}" ; then WCEROOT="C:/Program Files/Microsoft eMbedded Tools" fi fi if test "x${SDKROOT}" = "x" ; then SDKROOT="C:/Program Files/Windows CE Tools" if test ! -d "${SDKROOT}" ; then SDKROOT="C:/Windows CE Tools" fi fi WCEROOT=`echo "$WCEROOT" | sed -e 's!\\\!/!g'` SDKROOT=`echo "$SDKROOT" | sed -e 's!\\\!/!g'` if test ! -d "${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}" \ -o ! -d "${WCEROOT}/EVC/${OSVERSION}/bin"; then { { echo "$as_me:$LINENO: error: could not find PocketPC SDK or target compiler to enable WinCE mode $CEVERSION,$TARGETCPU,$ARCH,$PLATFORM" >&5 echo "$as_me: error: could not find PocketPC SDK or target compiler to enable WinCE mode $CEVERSION,$TARGETCPU,$ARCH,$PLATFORM" >&2;} { (exit 1); exit 1; }; } doWince="no" else # We could PATH_NOSPACE these, but that's not important, # as long as we quote them when used. CEINCLUDE="${SDKROOT}/${OSVERSION}/${PLATFORM}/include" if test -d "${CEINCLUDE}/${TARGETCPU}" ; then CEINCLUDE="${CEINCLUDE}/${TARGETCPU}" fi CELIBPATH="${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}" fi fi if test "$GCC" != "yes" ; then if test "${SHARED_BUILD}" = "0" ; then runtime=-MT else runtime=-MD fi if test "$do64bit" != "no" ; then # All this magic is necessary for the Win64 SDK RC1 - hobbs CC="\"${PATH64}/cl.exe\"" CFLAGS="${CFLAGS} -I\"${MSSDK}/Include\" -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\"" RC="\"${MSSDK}/bin/rc.exe\"" lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\"" LINKBIN="\"${PATH64}/link.exe\"" CFLAGS_DEBUG="-nologo -Zi -Od -W3 ${runtime}d" CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}" # Avoid 'unresolved external symbol __security_cookie' # errors, c.f. http://support.microsoft.com/?id=894573 vars="bufferoverflowU.lib" for i in $vars; do if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then # Convert foo.lib to -lfoo for GCC. No-op if not *.lib i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'` fi PKG_LIBS="$PKG_LIBS $i" done elif test "$doWince" != "no" ; then CEBINROOT="${WCEROOT}/EVC/${OSVERSION}/bin" if test "${TARGETCPU}" = "X86"; then CC="\"${CEBINROOT}/cl.exe\"" else CC="\"${CEBINROOT}/cl${ARCH}.exe\"" fi CFLAGS="$CFLAGS -I\"${CELIB_DIR}/inc\" -I\"${CEINCLUDE}\"" RC="\"${WCEROOT}/Common/EVC/bin/rc.exe\"" arch=`echo ${ARCH} | awk '{print tolower($0)}'` defs="${ARCH} _${ARCH}_ ${arch} PALM_SIZE _MT _WINDOWS" if test "${SHARED_BUILD}" = "1" ; then # Static CE builds require static celib as well defs="${defs} _DLL" fi for i in $defs ; do cat >>confdefs.h <<_ACEOF #define $i 1 _ACEOF done cat >>confdefs.h <<_ACEOF #define _WIN32_WCE $CEVERSION _ACEOF cat >>confdefs.h <<_ACEOF #define UNDER_CE $CEVERSION _ACEOF CFLAGS_DEBUG="-nologo -Zi -Od" CFLAGS_OPTIMIZE="-nologo -Ox" lversion=`echo ${CEVERSION} | sed -e 's/\(.\)\(..\)/\1\.\2/'` lflags="-MACHINE:${ARCH} -LIBPATH:\"${CELIBPATH}\" -subsystem:windowsce,${lversion} -nologo" LINKBIN="\"${CEBINROOT}/link.exe\"" else RC="rc" lflags="-nologo" LINKBIN="link" CFLAGS_DEBUG="-nologo -Z7 -Od -W3 -WX ${runtime}d" CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}" fi fi if test "$GCC" = "yes"; then # mingw gcc mode RC="windres" CFLAGS_DEBUG="-g" CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer" SHLIB_LD="$CC -shared" UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' LDFLAGS_CONSOLE="-wl,--subsystem,console ${lflags}" LDFLAGS_WINDOW="-wl,--subsystem,windows ${lflags}" else SHLIB_LD="${LINKBIN} -dll ${lflags}" # link -lib only works when -lib is the first arg STLIB_LD="${LINKBIN} -lib ${lflags}" UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.lib' PATHTYPE=-w # For information on what debugtype is most useful, see: # http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp # This essentially turns it all on. LDFLAGS_DEBUG="-debug:full -debugtype:both -warn:2" LDFLAGS_OPTIMIZE="-release" if test "$doWince" != "no" ; then LDFLAGS_CONSOLE="-link ${lflags}" LDFLAGS_WINDOW=${LDFLAGS_CONSOLE} else LDFLAGS_CONSOLE="-link -subsystem:console ${lflags}" LDFLAGS_WINDOW="-link -subsystem:windows ${lflags}" fi fi SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".dll" SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.dll' TCL_LIB_VERSIONS_OK=nodots # Bogus to avoid getting this turned off DL_OBJS="tclLoadNone.obj" ;; AIX-*) if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then # AIX requires the _r compiler when gcc isn't being used case "${CC}" in *_r) # ok ... ;; *) CC=${CC}_r ;; esac echo "$as_me:$LINENO: result: Using $CC for compiling with threads" >&5 echo "${ECHO_T}Using $CC for compiling with threads" >&6 fi LIBS="$LIBS -lc" SHLIB_CFLAGS="" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" LD_LIBRARY_PATH_VAR="LIBPATH" # Check to enable 64-bit flags for compiler/linker on AIX 4+ if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then if test "$GCC" = "yes" ; then { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} else do64bit_ok=yes CFLAGS="$CFLAGS -q64" LDFLAGS_ARCH="-q64" RANLIB="${RANLIB} -X64" AR="${AR} -X64" SHLIB_LD_FLAGS="-b64" fi fi if test "`uname -m`" = "ia64" ; then # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC SHLIB_LD="/usr/ccs/bin/ld -G -z text" # AIX-5 has dl* in libc.so DL_LIBS="" if test "$GCC" = "yes" ; then CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' else CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}' fi LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' else if test "$GCC" = "yes" ; then SHLIB_LD="gcc -shared" else SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" fi SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}" DL_LIBS="-ldl" CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} TCL_NEEDS_EXP_FILE=1 TCL_EXPORT_FILE_SUFFIX='${PACKAGE_VERSION}.exp' fi # AIX v<=4.1 has some different flags than 4.2+ if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then case $LIBOBJS in "tclLoadAix.$ac_objext" | \ *" tclLoadAix.$ac_objext" | \ "tclLoadAix.$ac_objext "* | \ *" tclLoadAix.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS tclLoadAix.$ac_objext" ;; esac DL_LIBS="-lld" fi # On AIX <=v4 systems, libbsd.a has to be linked in to support # non-blocking file IO. This library has to be linked in after # the MATH_LIBS or it breaks the pow() function. The way to # insure proper sequencing, is to add it to the tail of MATH_LIBS. # This library also supplies gettimeofday. # # AIX does not have a timezone field in struct tm. When the AIX # bsd library is used, the timezone global and the gettimeofday # methods are to be avoided for timezone deduction instead, we # deduce the timezone by comparing the localtime result on a # known GMT value. echo "$as_me:$LINENO: checking for gettimeofday in -lbsd" >&5 echo $ECHO_N "checking for gettimeofday in -lbsd... $ECHO_C" >&6 if test "${ac_cv_lib_bsd_gettimeofday+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gettimeofday (); int main () { gettimeofday (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_bsd_gettimeofday=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gettimeofday=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gettimeofday" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gettimeofday" >&6 if test $ac_cv_lib_bsd_gettimeofday = yes; then libbsd=yes else libbsd=no fi if test $libbsd = yes; then MATH_LIBS="$MATH_LIBS -lbsd" cat >>confdefs.h <<\_ACEOF #define USE_DELTA_FOR_TZ 1 _ACEOF fi ;; BeOS*) SHLIB_CFLAGS="-fPIC" SHLIB_LD="${CC} -nostart" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" #----------------------------------------------------------- # Check for inet_ntoa in -lbind, for BeOS (which also needs # -lsocket, even if the network functions are in -lnet which # is always linked to, for compatibility. #----------------------------------------------------------- echo "$as_me:$LINENO: checking for inet_ntoa in -lbind" >&5 echo $ECHO_N "checking for inet_ntoa in -lbind... $ECHO_C" >&6 if test "${ac_cv_lib_bind_inet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbind $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_ntoa (); int main () { inet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_bind_inet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bind_inet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_bind_inet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_bind_inet_ntoa" >&6 if test $ac_cv_lib_bind_inet_ntoa = yes; then LIBS="$LIBS -lbind -lsocket" fi ;; BSD/OS-2.1*|BSD/OS-3*) SHLIB_CFLAGS="" SHLIB_LD="shlicc -r" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; BSD/OS-4.*) SHLIB_CFLAGS="-export-dynamic -fPIC" SHLIB_LD="cc -shared" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" LDFLAGS="$LDFLAGS -export-dynamic" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; dgux*) SHLIB_CFLAGS="-K PIC" SHLIB_LD="cc -G" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; HP-UX-*.11.*) # Use updated header definitions where possible cat >>confdefs.h <<\_ACEOF #define _XOPEN_SOURCE_EXTENDED 1 _ACEOF # Needed by Tcl, but not most extensions #AC_DEFINE(_XOPEN_SOURCE, 1, [Do we want to use the XOPEN network library?]) #LIBS="$LIBS -lxnet" # Use the XOPEN network library if test "`uname -m`" = "ia64" ; then SHLIB_SUFFIX=".so" else SHLIB_SUFFIX=".sl" fi echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then tcl_ok=yes else tcl_ok=no fi if test "$tcl_ok" = yes; then SHLIB_CFLAGS="+z" SHLIB_LD="ld -b" SHLIB_LD_LIBS='${LIBS}' DL_OBJS="tclLoadShl.o" DL_LIBS="-ldld" LDFLAGS="$LDFLAGS -Wl,-E" CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' LD_LIBRARY_PATH_VAR="SHLIB_PATH" fi if test "$GCC" = "yes" ; then SHLIB_LD="gcc -shared" SHLIB_LD_LIBS='${LIBS}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} fi # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc #CFLAGS="$CFLAGS +DAportable" # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then if test "$GCC" = "yes" ; then hpux_arch=`${CC} -dumpmachine` case $hpux_arch in hppa64*) # 64-bit gcc in use. Fix flags for GNU ld. do64bit_ok=yes SHLIB_LD="${CC} -shared" SHLIB_LD_LIBS='${LIBS}' CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ;; *) { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} ;; esac else do64bit_ok=yes CFLAGS="$CFLAGS +DD64" LDFLAGS_ARCH="+DD64" fi fi ;; HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then tcl_ok=yes else tcl_ok=no fi if test "$tcl_ok" = yes; then SHLIB_CFLAGS="+z" SHLIB_LD="ld -b" SHLIB_LD_LIBS="" DL_OBJS="tclLoadShl.o" DL_LIBS="-ldld" LDFLAGS="$LDFLAGS -Wl,-E" CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' LD_LIBRARY_PATH_VAR="SHLIB_PATH" fi ;; IRIX-5.*) SHLIB_CFLAGS="" SHLIB_LD="ld -shared -rdata_shared" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' ;; IRIX-6.*) SHLIB_CFLAGS="" SHLIB_LD="ld -n32 -shared -rdata_shared" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' if test "$GCC" = "yes" ; then CFLAGS="$CFLAGS -mabi=n32" LDFLAGS="$LDFLAGS -mabi=n32" else case $system in IRIX-6.3) # Use to build 6.2 compatible binaries on 6.3. CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS" ;; *) CFLAGS="$CFLAGS -n32" ;; esac LDFLAGS="$LDFLAGS -n32" fi ;; IRIX64-6.*) SHLIB_CFLAGS="" SHLIB_LD="ld -n32 -shared -rdata_shared" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then if test "$GCC" = "yes" ; then { echo "$as_me:$LINENO: WARNING: 64bit mode not supported by gcc" >&5 echo "$as_me: WARNING: 64bit mode not supported by gcc" >&2;} else do64bit_ok=yes SHLIB_LD="ld -64 -shared -rdata_shared" CFLAGS="$CFLAGS -64" LDFLAGS_ARCH="-64" fi fi ;; Linux*) SHLIB_CFLAGS="-fPIC" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer" # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings # when you inline the string and math operations. Turn this off to # get rid of the warnings. #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" # TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS here: SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS_DEFAULT}' DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" LDFLAGS="$LDFLAGS -Wl,--export-dynamic" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} if test "`uname -m`" = "alpha" ; then CFLAGS="$CFLAGS -mieee" fi if test $do64bit = yes; then echo "$as_me:$LINENO: checking if compiler accepts -m64 flag" >&5 echo $ECHO_N "checking if compiler accepts -m64 flag... $ECHO_C" >&6 if test "${tcl_cv_cc_m64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -m64" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_cc_m64=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_cc_m64=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$hold_cflags fi echo "$as_me:$LINENO: result: $tcl_cv_cc_m64" >&5 echo "${ECHO_T}$tcl_cv_cc_m64" >&6 if test $tcl_cv_cc_m64 = yes; then CFLAGS="$CFLAGS -m64" do64bit_ok=yes fi fi # The combo of gcc + glibc has a bug related # to inlining of functions like strtod(). The # -fno-builtin flag should address this problem # but it does not work. The -fno-inline flag # is kind of overkill but it works. # Disable inlining only when one of the # files in compat/*.c is being linked in. if test x"${USE_COMPAT}" != x ; then CFLAGS="$CFLAGS -fno-inline" fi ;; GNU*) SHLIB_CFLAGS="-fPIC" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" SHLIB_LD="${CC} -shared" DL_OBJS="" DL_LIBS="-ldl" LDFLAGS="$LDFLAGS -Wl,--export-dynamic" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" if test "`uname -m`" = "alpha" ; then CFLAGS="$CFLAGS -mieee" fi ;; Lynx*) SHLIB_CFLAGS="-fPIC" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" CFLAGS_OPTIMIZE=-02 SHLIB_LD="${CC} -shared " DL_OBJS="tclLoadDl.o" DL_LIBS="-mshared -ldl" LD_FLAGS="-Wl,--export-dynamic" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' ;; MP-RAS-02*) SHLIB_CFLAGS="-K PIC" SHLIB_LD="cc -G" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; MP-RAS-*) SHLIB_CFLAGS="-K PIC" SHLIB_LD="cc -G" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" LDFLAGS="$LDFLAGS -Wl,-Bexport" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; NetBSD-*|FreeBSD-[1-2].*) # NetBSD/SPARC needs -fPIC, -fpic will not do. SHLIB_CFLAGS="-fPIC" SHLIB_LD="ld -Bshareable -x" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo "$as_me:$LINENO: checking for ELF" >&5 echo $ECHO_N "checking for ELF... $ECHO_C" >&6 if test "${tcl_cv_ld_elf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __ELF__ yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then tcl_cv_ld_elf=yes else tcl_cv_ld_elf=no fi rm -f conftest* fi echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5 echo "${ECHO_T}$tcl_cv_ld_elf" >&6 if test $tcl_cv_ld_elf = yes; then SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so' else SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0' fi # Ancient FreeBSD doesn't handle version numbers with dots. UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' TCL_LIB_VERSIONS_OK=nodots ;; OpenBSD-*) # OpenBSD/SPARC[64] needs -fPIC, -fpic will not do. case `machine` in sparc|sparc64) SHLIB_CFLAGS="-fPIC";; *) SHLIB_CFLAGS="-fpic";; esac SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0' echo "$as_me:$LINENO: checking for ELF" >&5 echo $ECHO_N "checking for ELF... $ECHO_C" >&6 if test "${tcl_cv_ld_elf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __ELF__ yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then tcl_cv_ld_elf=yes else tcl_cv_ld_elf=no fi rm -f conftest* fi echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5 echo "${ECHO_T}$tcl_cv_ld_elf" >&6 if test $tcl_cv_ld_elf = yes; then LDFLAGS=-Wl,-export-dynamic else LDFLAGS="" fi # OpenBSD doesn't do version numbers with dots. UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' TCL_LIB_VERSIONS_OK=nodots ;; FreeBSD-*) # FreeBSD 3.* and greater have ELF. SHLIB_CFLAGS="-fPIC" SHLIB_LD="ld -Bshareable -x" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" LDFLAGS="$LDFLAGS -export-dynamic" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' if test "${TCL_THREADS}" = "1" ; then # The -pthread needs to go in the CFLAGS, not LIBS LIBS=`echo $LIBS | sed s/-pthread//` CFLAGS="$CFLAGS -pthread" LDFLAGS="$LDFLAGS -pthread" fi case $system in FreeBSD-3.*) # FreeBSD-3 doesn't handle version numbers with dots. UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so' TCL_LIB_VERSIONS_OK=nodots ;; esac ;; Darwin-*) CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" # To avoid discrepancies between what headers configure sees during # preprocessing tests and compiling tests, move any -isysroot and # -mmacosx-version-min flags from CFLAGS to CPPFLAGS: CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \ awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \ if ($i~/^(isysroot|mmacosx-version-min)/) print "-"$i}'`" CFLAGS="`echo " ${CFLAGS}" | \ awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \ if (!($i~/^(isysroot|mmacosx-version-min)/)) print "-"$i}'`" if test $do64bit = yes; then case `arch` in ppc) echo "$as_me:$LINENO: checking if compiler accepts -arch ppc64 flag" >&5 echo $ECHO_N "checking if compiler accepts -arch ppc64 flag... $ECHO_C" >&6 if test "${tcl_cv_cc_arch_ppc64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_cc_arch_ppc64=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_cc_arch_ppc64=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$hold_cflags fi echo "$as_me:$LINENO: result: $tcl_cv_cc_arch_ppc64" >&5 echo "${ECHO_T}$tcl_cv_cc_arch_ppc64" >&6 if test $tcl_cv_cc_arch_ppc64 = yes; then CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" do64bit_ok=yes fi;; i386) echo "$as_me:$LINENO: checking if compiler accepts -arch x86_64 flag" >&5 echo $ECHO_N "checking if compiler accepts -arch x86_64 flag... $ECHO_C" >&6 if test "${tcl_cv_cc_arch_x86_64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch x86_64" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_cc_arch_x86_64=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_cc_arch_x86_64=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$hold_cflags fi echo "$as_me:$LINENO: result: $tcl_cv_cc_arch_x86_64" >&5 echo "${ECHO_T}$tcl_cv_cc_arch_x86_64" >&6 if test $tcl_cv_cc_arch_x86_64 = yes; then CFLAGS="$CFLAGS -arch x86_64" do64bit_ok=yes fi;; *) { echo "$as_me:$LINENO: WARNING: Don't know how enable 64-bit on architecture \`arch\`" >&5 echo "$as_me: WARNING: Don't know how enable 64-bit on architecture \`arch\`" >&2;};; esac else # Check for combined 32-bit and 64-bit fat build echo "$CFLAGS " | grep -E -q -- '-arch (ppc64|x86_64) ' && \ echo "$CFLAGS " | grep -E -q -- '-arch (ppc|i386) ' && \ fat_32_64=yes fi # TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS here: SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS_DEFAULT}' echo "$as_me:$LINENO: checking if ld accepts -single_module flag" >&5 echo $ECHO_N "checking if ld accepts -single_module flag... $ECHO_C" >&6 if test "${tcl_cv_ld_single_module+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { int i; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_ld_single_module=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_ld_single_module=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$hold_ldflags fi echo "$as_me:$LINENO: result: $tcl_cv_ld_single_module" >&5 echo "${ECHO_T}$tcl_cv_ld_single_module" >&6 if test $tcl_cv_ld_single_module = yes; then SHLIB_LD="${SHLIB_LD} -Wl,-single_module" fi SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".dylib" DL_OBJS="tclLoadDyld.o" DL_LIBS="" # Don't use -prebind when building for Mac OS X 10.4 or later only: test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\\.' '{print int($2)}'`" -lt 4 -a \ "`echo "${CFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int($2)}'`" -lt 4 && \ LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo "$as_me:$LINENO: checking if ld accepts -search_paths_first flag" >&5 echo $ECHO_N "checking if ld accepts -search_paths_first flag... $ECHO_C" >&6 if test "${tcl_cv_ld_search_paths_first+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { int i; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_ld_search_paths_first=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_ld_search_paths_first=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$hold_ldflags fi echo "$as_me:$LINENO: result: $tcl_cv_ld_search_paths_first" >&5 echo "${ECHO_T}$tcl_cv_ld_search_paths_first" >&6 if test $tcl_cv_ld_search_paths_first = yes; then LDFLAGS="$LDFLAGS -Wl,-search_paths_first" fi CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" # TEA specific: for Tk extensions, remove 64-bit arch flags from # CFLAGS for combined 32-bit and 64-bit fat builds as neither TkAqua # nor TkX11 can be built for 64-bit at present. test "$fat_32_64" = yes && test -n "${TK_BIN_DIR}" && \ CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc64 / /g' -e 's/-arch x86_64 / /g'`" ;; NEXTSTEP-*) SHLIB_CFLAGS="" SHLIB_LD="cc -nostdlib -r" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadNext.o" DL_LIBS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; OS/390-*) CFLAGS_OPTIMIZE="" # Optimizer is buggy cat >>confdefs.h <<\_ACEOF #define _OE_SOCKETS 1 _ACEOF ;; OSF1-1.0|OSF1-1.1|OSF1-1.2) # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 SHLIB_CFLAGS="" # Hack: make package name same as library name SHLIB_LD='ld -R -export :' SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadOSF.o" DL_LIBS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; OSF1-1.*) # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 SHLIB_CFLAGS="-fPIC" if test "$SHARED_BUILD" = "1" ; then SHLIB_LD="ld -shared" else SHLIB_LD="ld -non_shared" fi SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; OSF1-V*) # Digital OSF/1 SHLIB_CFLAGS="" if test "$SHARED_BUILD" = "1" ; then SHLIB_LD='ld -shared -expect_unresolved "*"' else SHLIB_LD='ld -non_shared -expect_unresolved "*"' fi SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' if test "$GCC" = "yes" ; then CFLAGS="$CFLAGS -mieee" else CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee" fi # see pthread_intro(3) for pthread support on osf1, k.furukawa if test "${TCL_THREADS}" = "1" ; then CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE" CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64" LIBS=`echo $LIBS | sed s/-lpthreads//` if test "$GCC" = "yes" ; then LIBS="$LIBS -lpthread -lmach -lexc" else CFLAGS="$CFLAGS -pthread" LDFLAGS="$LDFLAGS -pthread" fi fi ;; QNX-6*) # QNX RTP # This may work for all QNX, but it was only reported for v6. SHLIB_CFLAGS="-fPIC" SHLIB_LD="ld -Bshareable -x" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" # dlopen is in -lc on QNX DL_LIBS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; SCO_SV-3.2*) # Note, dlopen is available only on SCO 3.2.5 and greater. However, # this test works, since "uname -s" was non-standard in 3.2.4 and # below. if test "$GCC" = "yes" ; then SHLIB_CFLAGS="-fPIC -melf" LDFLAGS="$LDFLAGS -melf -Wl,-Bexport" else SHLIB_CFLAGS="-Kpic -belf" LDFLAGS="$LDFLAGS -belf -Wl,-Bexport" fi SHLIB_LD="ld -G" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; SINIX*5.4*) SHLIB_CFLAGS="-K PIC" SHLIB_LD="cc -G" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; SunOS-4*) SHLIB_CFLAGS="-PIC" SHLIB_LD="ld" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} # SunOS can't handle version numbers with dots in them in library # specs, like -ltcl7.5, so use -ltcl75 instead. Also, it # requires an extra version number at the end of .so file names. # So, the library has to have a name like libtcl75.so.1.0 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0' UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' TCL_LIB_VERSIONS_OK=nodots ;; SunOS-5.[0-6]) # Careful to not let 5.10+ fall into this case # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. cat >>confdefs.h <<\_ACEOF #define _REENTRANT 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define _POSIX_PTHREAD_SEMANTICS 1 _ACEOF SHLIB_CFLAGS="-KPIC" # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" if test "$GCC" = "yes" ; then SHLIB_LD="$CC -shared" CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} else SHLIB_LD="/usr/ccs/bin/ld -G -z text" CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} fi ;; SunOS-5*) # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. cat >>confdefs.h <<\_ACEOF #define _REENTRANT 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define _POSIX_PTHREAD_SEMANTICS 1 _ACEOF SHLIB_CFLAGS="-KPIC" # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then arch=`isainfo` if test "$arch" = "sparcv9 sparc" ; then if test "$GCC" = "yes" ; then if test "`gcc -dumpversion | awk -F. '{print $1}'`" -lt "3" ; then { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&5 echo "$as_me: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&2;} else do64bit_ok=yes CFLAGS="$CFLAGS -m64 -mcpu=v9" LDFLAGS="$LDFLAGS -m64 -mcpu=v9" SHLIB_CFLAGS="-fPIC" fi else do64bit_ok=yes if test "$do64bitVIS" = "yes" ; then CFLAGS="$CFLAGS -xarch=v9a" LDFLAGS_ARCH="-xarch=v9a" else CFLAGS="$CFLAGS -xarch=v9" LDFLAGS_ARCH="-xarch=v9" fi # Solaris 64 uses this as well #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64" fi elif test "$arch" = "amd64 i386" ; then if test "$GCC" = "yes" ; then { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} else do64bit_ok=yes CFLAGS="$CFLAGS -xarch=amd64" LDFLAGS="$LDFLAGS -xarch=amd64" fi else { echo "$as_me:$LINENO: WARNING: 64bit mode not supported for $arch" >&5 echo "$as_me: WARNING: 64bit mode not supported for $arch" >&2;} fi fi # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" if test "$GCC" = "yes" ; then SHLIB_LD="$CC -shared" CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} if test "$do64bit_ok" = "yes" ; then # We need to specify -static-libgcc or we need to # add the path to the sparv9 libgcc. # JH: static-libgcc is necessary for core Tcl, but may # not be necessary for extensions. SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" # for finding sparcv9 libgcc, get the regular libgcc # path, remove so name and append 'sparcv9' #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" fi else SHLIB_LD="/usr/ccs/bin/ld -G -z text" CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' fi ;; UNIX_SV* | UnixWare-5*) SHLIB_CFLAGS="-KPIC" SHLIB_LD="cc -G" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo "$as_me:$LINENO: checking for ld accepts -Bexport flag" >&5 echo $ECHO_N "checking for ld accepts -Bexport flag... $ECHO_C" >&6 if test "${tcl_cv_ld_Bexport+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { int i; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_ld_Bexport=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_ld_Bexport=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$hold_ldflags fi echo "$as_me:$LINENO: result: $tcl_cv_ld_Bexport" >&5 echo "${ECHO_T}$tcl_cv_ld_Bexport" >&6 if test $tcl_cv_ld_Bexport = yes; then LDFLAGS="$LDFLAGS -Wl,-Bexport" fi CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; esac if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then { echo "$as_me:$LINENO: WARNING: 64bit support being disabled -- don't know magic for this platform" >&5 echo "$as_me: WARNING: 64bit support being disabled -- don't know magic for this platform" >&2;} fi # Step 4: disable dynamic loading if requested via a command-line switch. # Check whether --enable-load or --disable-load was given. if test "${enable_load+set}" = set; then enableval="$enable_load" tcl_ok=$enableval else tcl_ok=yes fi; if test "$tcl_ok" = "no"; then DL_OBJS="" fi if test "x$DL_OBJS" != "x" ; then BUILD_DLTEST="\$(DLTEST_TARGETS)" else echo "Can't figure out how to do dynamic loading or shared libraries" echo "on this system." SHLIB_CFLAGS="" SHLIB_LD="" SHLIB_SUFFIX="" DL_OBJS="tclLoadNone.o" DL_LIBS="" LDFLAGS="$LDFLAGS_ORIG" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" BUILD_DLTEST="" fi LDFLAGS="$LDFLAGS $LDFLAGS_ARCH" # If we're running gcc, then change the C flags for compiling shared # libraries to the right flags for gcc, instead of those for the # standard manufacturer compiler. if test "$DL_OBJS" != "tclLoadNone.o" ; then if test "$GCC" = "yes" ; then case $system in AIX-*) ;; BSD/OS*) ;; IRIX*) ;; NetBSD-*|FreeBSD-*) ;; Darwin-*) ;; SCO_SV-3.2*) ;; windows) ;; *) SHLIB_CFLAGS="-fPIC" ;; esac fi fi if test "$SHARED_LIB_SUFFIX" = "" ; then SHARED_LIB_SUFFIX='${PACKAGE_VERSION}${SHLIB_SUFFIX}' fi if test "$UNSHARED_LIB_SUFFIX" = "" ; then UNSHARED_LIB_SUFFIX='${PACKAGE_VERSION}.a' fi # These must be called after we do the basic CFLAGS checks and # verify any possible 64-bit or similar switches are necessary echo "$as_me:$LINENO: checking for required early compiler flags" >&5 echo $ECHO_N "checking for required early compiler flags... $ECHO_C" >&6 tcl_flags="" if test "${tcl_cv_flag__isoc99_source+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_flag__isoc99_source=no else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #define _ISOC99_SOURCE 1 #include int main () { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_flag__isoc99_source=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_flag__isoc99_source=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "x${tcl_cv_flag__isoc99_source}" = "xyes" ; then cat >>confdefs.h <<\_ACEOF #define _ISOC99_SOURCE 1 _ACEOF tcl_flags="$tcl_flags _ISOC99_SOURCE" fi if test "${tcl_cv_flag__largefile64_source+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_flag__largefile64_source=no else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #define _LARGEFILE64_SOURCE 1 #include int main () { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_flag__largefile64_source=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_flag__largefile64_source=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then cat >>confdefs.h <<\_ACEOF #define _LARGEFILE64_SOURCE 1 _ACEOF tcl_flags="$tcl_flags _LARGEFILE64_SOURCE" fi if test "${tcl_cv_flag__largefile_source64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { char *p = (char *)open64; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_flag__largefile_source64=no else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #define _LARGEFILE_SOURCE64 1 #include int main () { char *p = (char *)open64; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_flag__largefile_source64=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_flag__largefile_source64=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "x${tcl_cv_flag__largefile_source64}" = "xyes" ; then cat >>confdefs.h <<\_ACEOF #define _LARGEFILE_SOURCE64 1 _ACEOF tcl_flags="$tcl_flags _LARGEFILE_SOURCE64" fi if test "x${tcl_flags}" = "x" ; then echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 else echo "$as_me:$LINENO: result: ${tcl_flags}" >&5 echo "${ECHO_T}${tcl_flags}" >&6 fi echo "$as_me:$LINENO: checking for 64-bit integer type" >&5 echo $ECHO_N "checking for 64-bit integer type... $ECHO_C" >&6 if test "${tcl_cv_type_64bit+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { __int64 value = (__int64) 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_type_64bit=__int64 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_type_64bit="long long" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext # See if we should use long anyway Note that we substitute in the # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { switch (0) { case 1: case (sizeof(${tcl_type_64bit})==sizeof(long)): ; } ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_type_64bit=${tcl_type_64bit} else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "${tcl_cv_type_64bit}" = none ; then cat >>confdefs.h <<\_ACEOF #define TCL_WIDE_INT_IS_LONG 1 _ACEOF echo "$as_me:$LINENO: result: using long" >&5 echo "${ECHO_T}using long" >&6 elif test "${tcl_cv_type_64bit}" = "__int64" \ -a "${TEA_PLATFORM}" = "windows" ; then # We actually want to use the default tcl.h checks in this # case to handle both TCL_WIDE_INT_TYPE and TCL_LL_MODIFIER* echo "$as_me:$LINENO: result: using Tcl header defaults" >&5 echo "${ECHO_T}using Tcl header defaults" >&6 else cat >>confdefs.h <<_ACEOF #define TCL_WIDE_INT_TYPE ${tcl_cv_type_64bit} _ACEOF echo "$as_me:$LINENO: result: ${tcl_cv_type_64bit}" >&5 echo "${ECHO_T}${tcl_cv_type_64bit}" >&6 # Now check for auxiliary declarations echo "$as_me:$LINENO: checking for struct dirent64" >&5 echo $ECHO_N "checking for struct dirent64... $ECHO_C" >&6 if test "${tcl_cv_struct_dirent64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { struct dirent64 p; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_struct_dirent64=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_struct_dirent64=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $tcl_cv_struct_dirent64" >&5 echo "${ECHO_T}$tcl_cv_struct_dirent64" >&6 if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then cat >>confdefs.h <<\_ACEOF #define HAVE_STRUCT_DIRENT64 1 _ACEOF fi echo "$as_me:$LINENO: checking for struct stat64" >&5 echo $ECHO_N "checking for struct stat64... $ECHO_C" >&6 if test "${tcl_cv_struct_stat64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { struct stat64 p; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_struct_stat64=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_struct_stat64=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $tcl_cv_struct_stat64" >&5 echo "${ECHO_T}$tcl_cv_struct_stat64" >&6 if test "x${tcl_cv_struct_stat64}" = "xyes" ; then cat >>confdefs.h <<\_ACEOF #define HAVE_STRUCT_STAT64 1 _ACEOF fi for ac_func in open64 lseek64 do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done echo "$as_me:$LINENO: checking for off64_t" >&5 echo $ECHO_N "checking for off64_t... $ECHO_C" >&6 if test "${tcl_cv_type_off64_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { off64_t offset; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then tcl_cv_type_off64_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 tcl_cv_type_off64_t=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "x${tcl_cv_type_off64_t}" = "xyes" && \ test "x${ac_cv_func_lseek64}" = "xyes" && \ test "x${ac_cv_func_open64}" = "xyes" ; then cat >>confdefs.h <<\_ACEOF #define HAVE_TYPE_OFF64_T 1 _ACEOF echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi #-------------------------------------------------------------------- # Set the default compiler switches based on the --enable-symbols # option. #-------------------------------------------------------------------- echo "$as_me:$LINENO: checking for build with symbols" >&5 echo $ECHO_N "checking for build with symbols... $ECHO_C" >&6 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" tcl_ok=$enableval else tcl_ok=no fi; DBGX="" if test "$tcl_ok" = "no"; then CFLAGS_DEFAULT="${CFLAGS_OPTIMIZE}" LDFLAGS_DEFAULT="${LDFLAGS_OPTIMIZE}" echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 else CFLAGS_DEFAULT="${CFLAGS_DEBUG}" LDFLAGS_DEFAULT="${LDFLAGS_DEBUG}" if test "$tcl_ok" = "yes"; then echo "$as_me:$LINENO: result: yes (standard debugging)" >&5 echo "${ECHO_T}yes (standard debugging)" >&6 fi fi if test "${TEA_PLATFORM}" != "windows" ; then LDFLAGS_DEFAULT="${LDFLAGS}" fi if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then cat >>confdefs.h <<\_ACEOF #define TCL_MEM_DEBUG 1 _ACEOF fi if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then if test "$tcl_ok" = "all"; then echo "$as_me:$LINENO: result: enabled symbols mem debugging" >&5 echo "${ECHO_T}enabled symbols mem debugging" >&6 else echo "$as_me:$LINENO: result: enabled $tcl_ok debugging" >&5 echo "${ECHO_T}enabled $tcl_ok debugging" >&6 fi fi #-------------------------------------------------------------------- # Everyone should be linking against the Tcl stub library. If you # can't for some reason, remove this definition. If you aren't using # stubs, you also need to modify the SHLIB_LD_LIBS setting below to # link against the non-stubbed Tcl library. #-------------------------------------------------------------------- cat >>confdefs.h <<\_ACEOF #define USE_TCL_STUBS 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define USE_TK_STUBS 1 _ACEOF #-------------------------------------------------------------------- # This macro generates a line to use when building a library. It # depends on values set by the TEA_ENABLE_SHARED, TEA_ENABLE_SYMBOLS, # and TEA_LOAD_TCLCONFIG macros above. #-------------------------------------------------------------------- if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes"; then MAKE_STATIC_LIB="\${STLIB_LD} -out:\$@ \$(PKG_OBJECTS)" MAKE_SHARED_LIB="\${SHLIB_LD} \${SHLIB_LD_LIBS} \${LDFLAGS_DEFAULT} -out:\$@ \$(PKG_OBJECTS)" MAKE_STUB_LIB="\${STLIB_LD} -out:\$@ \$(PKG_STUB_OBJECTS)" else MAKE_STATIC_LIB="\${STLIB_LD} \$@ \$(PKG_OBJECTS)" MAKE_SHARED_LIB="\${SHLIB_LD} -o \$@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}" MAKE_STUB_LIB="\${STLIB_LD} \$@ \$(PKG_STUB_OBJECTS)" fi if test "${SHARED_BUILD}" = "1" ; then MAKE_LIB="${MAKE_SHARED_LIB} " else MAKE_LIB="${MAKE_STATIC_LIB} " fi #-------------------------------------------------------------------- # Shared libraries and static libraries have different names. # Use the double eval to make sure any variables in the suffix is # substituted. (@@@ Might not be necessary anymore) #-------------------------------------------------------------------- if test "${TEA_PLATFORM}" = "windows" ; then if test "${SHARED_BUILD}" = "1" ; then # We force the unresolved linking of symbols that are really in # the private libraries of Tcl and Tk. SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}`\"" if test x"${TK_BIN_DIR}" != x ; then SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}`\"" fi eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${SHARED_LIB_SUFFIX}" else eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}" fi # Some packages build their own stubs libraries eval eval "PKG_STUB_LIB_FILE=${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}" if test "$GCC" = "yes"; then PKG_STUB_LIB_FILE=lib${PKG_STUB_LIB_FILE} fi # These aren't needed on Windows (either MSVC or gcc) RANLIB=: RANLIB_STUB=: else RANLIB_STUB="${RANLIB}" if test "${SHARED_BUILD}" = "1" ; then SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TCL_STUB_LIB_SPEC}" if test x"${TK_BIN_DIR}" != x ; then SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TK_STUB_LIB_SPEC}" fi eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${SHARED_LIB_SUFFIX}" RANLIB=: else eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}" fi # Some packages build their own stubs libraries eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}" fi # These are escaped so that only CFLAGS is picked up at configure time. # The other values will be substituted at make time. CFLAGS="${CFLAGS} \${CFLAGS_DEFAULT} \${CFLAGS_WARNING}" if test "${SHARED_BUILD}" = "1" ; then CFLAGS="${CFLAGS} \${SHLIB_CFLAGS}" fi #-------------------------------------------------------------------- # Find tclsh so that we can run pkg_mkIndex to generate the pkgIndex.tcl # file during the install process. Don't run the TCLSH_PROG through # ${CYGPATH} because it's being used directly by make. # Require that we use a tclsh shell version 8.2 or later since earlier # versions have bugs in the pkg_mkIndex routine. #-------------------------------------------------------------------- echo "$as_me:$LINENO: checking for tclsh" >&5 echo $ECHO_N "checking for tclsh... $ECHO_C" >&6 if test -f "${TCL_BIN_DIR}/Makefile" ; then # tclConfig.sh is in Tcl build directory if test "${TEA_PLATFORM}" = "windows"; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}" else TCLSH_PROG="${TCL_BIN_DIR}/tclsh" fi else # tclConfig.sh is in install location if test "${TEA_PLATFORM}" = "windows"; then TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}" else TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}${TCL_DBGX}" fi list="`ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null` \ `ls -d ${TCL_BIN_DIR}/.. 2>/dev/null` \ `ls -d ${TCL_PREFIX}/bin 2>/dev/null`" for i in $list ; do if test -f "$i/${TCLSH_PROG}" ; then REAL_TCL_BIN_DIR="`cd "$i"; pwd`" break fi done TCLSH_PROG="${REAL_TCL_BIN_DIR}/${TCLSH_PROG}" fi echo "$as_me:$LINENO: result: ${TCLSH_PROG}" >&5 echo "${ECHO_T}${TCLSH_PROG}" >&6 echo "$as_me:$LINENO: checking for wish" >&5 echo $ECHO_N "checking for wish... $ECHO_C" >&6 if test -f "${TK_BIN_DIR}/Makefile" ; then # tkConfig.sh is in Tk build directory if test "${TEA_PLATFORM}" = "windows"; then WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}" else WISH_PROG="${TK_BIN_DIR}/wish" fi else # tkConfig.sh is in install location if test "${TEA_PLATFORM}" = "windows"; then WISH_PROG="wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}" else WISH_PROG="wish${TK_MAJOR_VERSION}.${TK_MINOR_VERSION}${TK_DBGX}" fi list="`ls -d ${TK_BIN_DIR}/../bin 2>/dev/null` \ `ls -d ${TK_BIN_DIR}/.. 2>/dev/null` \ `ls -d ${TK_PREFIX}/bin 2>/dev/null`" for i in $list ; do if test -f "$i/${WISH_PROG}" ; then REAL_TK_BIN_DIR="`cd "$i"; pwd`" break fi done WISH_PROG="${REAL_TK_BIN_DIR}/${WISH_PROG}" fi echo "$as_me:$LINENO: result: ${WISH_PROG}" >&5 echo "${ECHO_T}${WISH_PROG}" >&6 #-------------------------------------------------------------------- # Finally, substitute all of the various values into the Makefile. #-------------------------------------------------------------------- ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then we branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. cat >confdef2opt.sed <<\_ACEOF t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g s,\$,$$,g p _ACEOF # We use echo to avoid assuming a particular line-breaking character. # The extra dot is to prevent the shell from consuming trailing # line-breaks from the sub-command output. A line-break within # single-quotes doesn't work because, if this script is created in a # platform that uses two characters for line-breaks (e.g., DOS), tr # would break. ac_LF_and_DOT=`echo; echo .` DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` rm -f confdef2opt.sed ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS="" : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by Tix $as_me 8.4.3, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ Tix config.status 8.4.3 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@CYGPATH@,$CYGPATH,;t t s,@EXEEXT@,$EXEEXT,;t t s,@PKG_LIB_FILE@,$PKG_LIB_FILE,;t t s,@PKG_STUB_LIB_FILE@,$PKG_STUB_LIB_FILE,;t t s,@PKG_STUB_SOURCES@,$PKG_STUB_SOURCES,;t t s,@PKG_STUB_OBJECTS@,$PKG_STUB_OBJECTS,;t t s,@PKG_TCL_SOURCES@,$PKG_TCL_SOURCES,;t t s,@PKG_HEADERS@,$PKG_HEADERS,;t t s,@PKG_INCLUDES@,$PKG_INCLUDES,;t t s,@PKG_LIBS@,$PKG_LIBS,;t t s,@PKG_CFLAGS@,$PKG_CFLAGS,;t t s,@TCL_VERSION@,$TCL_VERSION,;t t s,@TCL_BIN_DIR@,$TCL_BIN_DIR,;t t s,@TCL_SRC_DIR@,$TCL_SRC_DIR,;t t s,@TCL_LIB_FILE@,$TCL_LIB_FILE,;t t s,@TCL_LIB_FLAG@,$TCL_LIB_FLAG,;t t s,@TCL_LIB_SPEC@,$TCL_LIB_SPEC,;t t s,@TCL_STUB_LIB_FILE@,$TCL_STUB_LIB_FILE,;t t s,@TCL_STUB_LIB_FLAG@,$TCL_STUB_LIB_FLAG,;t t s,@TCL_STUB_LIB_SPEC@,$TCL_STUB_LIB_SPEC,;t t s,@TCL_LIBS@,$TCL_LIBS,;t t s,@TCL_DEFS@,$TCL_DEFS,;t t s,@TCL_EXTRA_CFLAGS@,$TCL_EXTRA_CFLAGS,;t t s,@TCL_LD_FLAGS@,$TCL_LD_FLAGS,;t t s,@TCL_SHLIB_LD_LIBS@,$TCL_SHLIB_LD_LIBS,;t t s,@TK_VERSION@,$TK_VERSION,;t t s,@TK_BIN_DIR@,$TK_BIN_DIR,;t t s,@TK_SRC_DIR@,$TK_SRC_DIR,;t t s,@TK_LIB_FILE@,$TK_LIB_FILE,;t t s,@TK_LIB_FLAG@,$TK_LIB_FLAG,;t t s,@TK_LIB_SPEC@,$TK_LIB_SPEC,;t t s,@TK_STUB_LIB_FILE@,$TK_STUB_LIB_FILE,;t t s,@TK_STUB_LIB_FLAG@,$TK_STUB_LIB_FLAG,;t t s,@TK_STUB_LIB_SPEC@,$TK_STUB_LIB_SPEC,;t t s,@TK_LIBS@,$TK_LIBS,;t t s,@TK_XINCLUDES@,$TK_XINCLUDES,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@OBJEXT@,$OBJEXT,;t t s,@CPP@,$CPP,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@EGREP@,$EGREP,;t t s,@MATH_LIBS@,$MATH_LIBS,;t t s,@PKG_SOURCES@,$PKG_SOURCES,;t t s,@PKG_OBJECTS@,$PKG_OBJECTS,;t t s,@TCL_TOP_DIR_NATIVE@,$TCL_TOP_DIR_NATIVE,;t t s,@TCL_GENERIC_DIR_NATIVE@,$TCL_GENERIC_DIR_NATIVE,;t t s,@TCL_UNIX_DIR_NATIVE@,$TCL_UNIX_DIR_NATIVE,;t t s,@TCL_WIN_DIR_NATIVE@,$TCL_WIN_DIR_NATIVE,;t t s,@TCL_BMAP_DIR_NATIVE@,$TCL_BMAP_DIR_NATIVE,;t t s,@TCL_TOOL_DIR_NATIVE@,$TCL_TOOL_DIR_NATIVE,;t t s,@TCL_PLATFORM_DIR_NATIVE@,$TCL_PLATFORM_DIR_NATIVE,;t t s,@TCL_INCLUDES@,$TCL_INCLUDES,;t t s,@TK_TOP_DIR_NATIVE@,$TK_TOP_DIR_NATIVE,;t t s,@TK_UNIX_DIR_NATIVE@,$TK_UNIX_DIR_NATIVE,;t t s,@TK_WIN_DIR_NATIVE@,$TK_WIN_DIR_NATIVE,;t t s,@TK_GENERIC_DIR_NATIVE@,$TK_GENERIC_DIR_NATIVE,;t t s,@TK_XLIB_DIR_NATIVE@,$TK_XLIB_DIR_NATIVE,;t t s,@TK_PLATFORM_DIR_NATIVE@,$TK_PLATFORM_DIR_NATIVE,;t t s,@TK_INCLUDES@,$TK_INCLUDES,;t t s,@CLEANFILES@,$CLEANFILES,;t t s,@TCL_THREADS@,$TCL_THREADS,;t t s,@SHARED_BUILD@,$SHARED_BUILD,;t t s,@AR@,$AR,;t t s,@CELIB_DIR@,$CELIB_DIR,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@DL_LIBS@,$DL_LIBS,;t t s,@CFLAGS_DEBUG@,$CFLAGS_DEBUG,;t t s,@CFLAGS_OPTIMIZE@,$CFLAGS_OPTIMIZE,;t t s,@CFLAGS_WARNING@,$CFLAGS_WARNING,;t t s,@STLIB_LD@,$STLIB_LD,;t t s,@SHLIB_LD@,$SHLIB_LD,;t t s,@SHLIB_LD_LIBS@,$SHLIB_LD_LIBS,;t t s,@SHLIB_CFLAGS@,$SHLIB_CFLAGS,;t t s,@LD_LIBRARY_PATH_VAR@,$LD_LIBRARY_PATH_VAR,;t t s,@TCL_DBGX@,$TCL_DBGX,;t t s,@CFLAGS_DEFAULT@,$CFLAGS_DEFAULT,;t t s,@LDFLAGS_DEFAULT@,$LDFLAGS_DEFAULT,;t t s,@MAKE_LIB@,$MAKE_LIB,;t t s,@MAKE_SHARED_LIB@,$MAKE_SHARED_LIB,;t t s,@MAKE_STATIC_LIB@,$MAKE_STATIC_LIB,;t t s,@MAKE_STUB_LIB@,$MAKE_STUB_LIB,;t t s,@RANLIB_STUB@,$RANLIB_STUB,;t t s,@TCLSH_PROG@,$TCLSH_PROG,;t t s,@WISH_PROG@,$WISH_PROG,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi Tix8.4.3/library/0000775000122200012240000000000010767576212014054 5ustar jeffhjeffh00000000000000Tix8.4.3/library/STList.tcl0000644000122200012240000000457407404570302015736 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: STList.tcl,v 1.4 2001/12/09 05:04:02 idiscovery Exp $ # # STList.tcl -- # # This file implements Scrolled TList widgets # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixScrolledTList { -classname TixScrolledTList -superclass tixScrolledWidget -method { } -flag { } -configspec { } -default { {.scrollbar auto} {*borderWidth 1} {*tlist.background #c3c3c3} {*tlist.highlightBackground #d9d9d9} {*tlist.relief sunken} {*tlist.takeFocus 1} {*Scrollbar.takeFocus 0} } } proc tixScrolledTList:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget set data(w:tlist) \ [tixTList $w.tlist] set data(w:hsb) \ [scrollbar $w.hsb -orient horizontal] set data(w:vsb) \ [scrollbar $w.vsb -orient vertical ] set data(pw:client) $data(w:tlist) } proc tixScrolledTList:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings $data(w:tlist) config \ -xscrollcommand "$data(w:hsb) set"\ -yscrollcommand "$data(w:vsb) set"\ -sizecmd [list tixScrolledWidget:Configure $w] $data(w:hsb) config -command "$data(w:tlist) xview" $data(w:vsb) config -command "$data(w:tlist) yview" } #---------------------------------------------------------------------- # # option configs #---------------------------------------------------------------------- proc tixScrolledTList:config-takefocus {w value} { upvar #0 $w data $data(w:tlist) config -takefocus $value } #---------------------------------------------------------------------- # # Widget commands #---------------------------------------------------------------------- #---------------------------------------------------------------------- # # Private Methods #---------------------------------------------------------------------- #---------------------------------------------------------------------- # virtual functions to query the client window's scroll requirement #---------------------------------------------------------------------- proc tixScrolledTList:GeometryInfo {w mW mH} { upvar #0 $w data return [$data(w:tlist) geometryinfo $mW $mH] } Tix8.4.3/library/pref/0000775000122200012240000000000010767576212015010 5ustar jeffhjeffh00000000000000Tix8.4.3/library/pref/WmDefault.csc0000644000122200012240000003434607404570215017371 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: WmDefault.csc,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # # proc tixPref:SetScheme-Color:WmDefault {args} { global tixOption package require wm_default if {![info exists ::wm_default::wm]} { wm_default::setup wm_default::addoptions } set tixOption(bg) $::wm_default::background set tixOption(fg) $::wm_default::foreground # was "#808080" set tixOption(dark1_bg) $::wm_default::disabledbackground set tixOption(inactive_bg) $::wm_default::disabledbackground set tixOption(inactive_fg) black; # unused # light1 was used for listbox widgets and trough colors set tixOption(light1_bg) $::wm_default::scrollbars set tixOption(light1_fg) white; #unused # text is now used for listbox widgets set tixOption(list_bg) $::wm_default::textbackground set tixOption(active_bg) $::wm_default::activebackground set tixOption(active_fg) $::wm_default::activeforeground set tixOption(disabled_fg) $::wm_default::disabledforeground # new set tixOption(disabled_bg) $::wm_default::disabledtextbackground set tixOption(textbackground) $::wm_default::textbackground set tixOption(input1_fg) $::wm_default::textforeground set tixOption(select_fg) $::wm_default::selectforeground set tixOption(select_bg) $::wm_default::selectbackground set tixOption(selector) $::wm_default::selectcolor set pri $tixOption(prioLevel) # Try to give the subwidget (hlist) the highlightThickness foreach pref {*TixDirTree *TixDirList *TixTree \ *TixScrolledListBox \ *TixScrolledTList *TixScrolledText} { option add $pref.highlightThickness 0 $pri } # necessary: option add *TixBalloon*background white $pri option add *TixBalloon*foreground black $pri option add *TixBalloon.background black $pri # necessary: but should be restricted # was - option add *Label.anchor w $pri option add *TixBalloon*Label.anchor w $pri option add *TixComboBox*Label.anchor w $pri option add *TixFileEntry*Label.anchor w $pri option add *TixLabelEntry*Label.anchor w $pri option add *TixOptionMenu*Label.anchor w $pri option add *TixComboBox*background $tixOption(background) $pri option add *TixFileEntry*Entry.borderWidth 0 $pri option add *TixFileEntry.frame.background $tixOption(textbackground) $pri option add *TixFileEntry*Entry.highlightBackground $::wm_default::highlightbackground $pri option add *TixOptionMenu*menubutton.relief raised $pri option add *TixOptionMenu*menubutton.borderWidth $::wm_default::borderwidth $pri option add *TixResizeHandle*background $tixOption(disabledbackground) $pri option add *handleActiveBg $::wm_default::selectbackground $pri # These may already have been covered by wm_default option add *TixControl*entry.insertBackground $tixOption(textforeground) $pri option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $pri option add *TixDirTree*hlist.disabledBackground $tixOption(disabled_bg) $pri option add *TixDirTree*f1.borderWidth $::wm_default::borderwidth $pri option add *TixDirTree*f1.relief sunken $pri option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $pri option add *TixDirList*hlist.disabledBackground $tixOption(disabled_bg) $pri option add *TixDirList*f1.borderWidth $::wm_default::borderwidth $pri option add *TixDirList*f1.relief sunken $pri option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $pri option add *TixScrolledHList*hlist.disabledBackground $tixOption(disabled_bg) $pri option add *TixScrolledHList*f1.borderWidth $::wm_default::borderwidth $pri option add *TixScrolledHList*f1.relief sunken $pri option add *TixTree*hlist.background $tixOption(textbackground) $pri option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $pri option add *TixTree*hlist.disabledBackground $tixOption(disabled_bg) $pri option add *TixTree*f1.borderWidth $::wm_default::borderwidth $pri option add *TixTree*f1.relief sunken $pri option add *TixFileEntry.background $tixOption(background) $pri option add *TixHList.activeBackground $tixOption(light1_bg) $pri option add *TixHList.disabledBackground $tixOption(disabled_bg) $pri option add *TixLabelEntry*entry.background $tixOption(textbackground) $pri option add *TixLabelEntry*entry.foreground $tixOption(textforeground) $pri option add *TixLabelEntry*entry.insertBackground $tixOption(textforeground) $pri option add *TixMultiView*Listbox.borderWidth 0 $pri option add *TixMultiView*Listbox.highlightThickness 0 $pri option add *TixMultiView*Scrollbar.relief sunken $pri option add *TixMultiView*Scrollbar.width 15 $pri option add *TixMultiView*f1.borderWidth 2 $pri option add *TixMultiView*f1.relief sunken $pri option add *TixMultiView*f1.highlightThickness 2 $pri option add *TixNoteBook.Background $tixOption(background) $pri option add *TixNoteBook.nbframe.Background $tixOption(background) $pri option add *TixNoteBook.nbframe.backPageColor $tixOption(background) $pri option add *TixNoteBook.nbframe.inactiveBackground $tixOption(disabledbackground) $pri option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $pri # option add *TixPanedWindow.seperatorBg $tixOption(disabledbackground) $pri # option add *TixPanedWindow.handleBg $tixOption(disabledbackground) $pri option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $pri option add *TixScrolledTList*tlist.background $tixOption(textbackground) $pri option add *TixScrolledListBox*listbox.background $tixOption(textbackground) $pri option add *TixScrolledWindow.frame.background $tixOption(list_bg) $pri option add *TixTree*hlist.highlightBackground $tixOption(background) $pri option add *TixTree*hlist.background $tixOption(textbackground) $pri option add *TixTree*hlist.borderWidth $::wm_default::borderwidth $pri option add *TixComboBox*Entry.highlightBackground $tixOption(background) $pri option add *TixComboBox*Entry.background $tixOption(textbackground) $pri option add *TixComboBox*Entry.foreground $tixOption(textforeground) $pri option add *TixComboBox*Entry.insertBackground $tixOption(textforeground) $pri } proc tixPref:SetScheme-Mono:Gray {} { global tixOption package require wm_default if {![info exists ::wm_default::wm]} { wm_default::setup wm_default::addoptions } set tixOption(background) lightgray set tixOption(foreground) black set tixOption(dark1_bg) gray70 set tixOption(inactive_bg) lightgray set tixOption(inactive_fg) black set tixOption(light1_bg) gray90 set tixOption(light1_fg) white set tixOption(active_bg) gray90 set tixOption(active_fg) $tixOption(foreground) set tixOption(disabled_fg) gray55 set tixOption(textbackground) $tixOption(light1_bg) set tixOption(select_fg) white set tixOption(select_bg) black set tixOption(selector) black set pri $tixOption(prioLevel) # Override what you want with optional arguments to wm_default::adoptions # necessary: option add *TixBalloon*background white $pri option add *TixBalloon*foreground black $pri option add *TixBalloon.background black $pri # necessary: but should be restricted # was - option add *Label.anchor w $pri option add *TixBalloon*Label.anchor w $pri option add *TixComboBox*Label.anchor w $pri option add *TixFileEntry*Label.anchor w $pri option add *TixLabelEntry*Label.anchor w $pri # option add *TixDirTree*hlist.highlightBackground $tixOption(background) $pri # option add *TixDirTree*hlist.background $tixOption(light1_bg) $pri # option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $pri # option add *TixDirTree*hlist.disabledBackground $tixOption(disabled_bg) $pri # option add *TixDirTree*f1.borderWidth $::wm_default::borderwidth $pri option add *TixDirTree*f1.relief sunken $pri # option add *TixDirList*hlist.highlightBackground $tixOption(background) $pri # option add *TixDirList*hlist.background $tixOption(light1_bg) $pri # option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $pri # option add *TixDirList*hlist.disabledBackground $tixOption(disabled_bg) $pri # option add *TixDirList*f1.borderWidth $::wm_default::borderwidth $pri option add *TixDirList*f1.relief sunken $pri # option add *TixScrolledHList*hlist.highlightBackground $tixOption(background) $pri # option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $pri # option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $pri # option add *TixScrolledHList*hlist.disabledBackground $tixOption(disabled_bg) $pri # option add *TixScrolledHList*f1.borderWidth $::wm_default::borderwidth $pri option add *TixScrolledHList*f1.relief sunken $pri # option add *TixTree*hlist.highlightBackground $tixOption(background) $pri # option add *TixTree*hlist.background $tixOption(light1_bg) $pri # option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $pri # option add *TixTree*hlist.disabledBackground $tixOption(disabled_bg) $pri # option add *TixTree*f1.borderWidth $::wm_default::borderwidth $pri option add *TixTree*f1.relief sunken $pri # option add *TixHList.background $tixOption(light1_bg) $pri # option add *TixHList.activeBackground $tixOption(light1_bg) $pri # option add *TixHList.disabledBackground $tixOption(light1_bg) $pri # option add *TixMultiView*Listbox.borderWidth 0 $pri # option add *TixMultiView*Listbox.highlightThickness 0 $pri option add *TixMultiView*Scrollbar.relief sunken $pri # option add *TixMultiView*f1.borderWidth 2 $pri option add *TixMultiView*f1.relief sunken $pri # option add *TixMultiView*f1.highlightThickness 2 $pri # option add *TixMDIMenuBar*menubar.relief raised $pri # option add *TixMDIMenuBar*menubar.borderWidth 2 $pri # option add *TixMDIMenuBar*Menubutton.padY 2 $pri # option add *TixNoteBook.Background $tixOption(background) $pri # option add *TixNoteBook.nbframe.Background $tixOption(background) $pri # option add *TixNoteBook.nbframe.backPageColor $tixOption(background) $pri # option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $pri # option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $pri # option add *TixPanedWindow.seperatorBg $tixOption(disabledbackground) $pri # option add *TixPanedWindow.handleBg $tixOption(disabledbackground) $pri # option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $pri # option add *TixScrolledHList*hlist.highlightBackground $tixOption(background) $pri # option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $pri # option add *TixScrolledTList*tlist.highlightBackground $tixOption(background) $pri # option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $pri # option add *TixScrolledListBox*listbox.highlightBackground $tixOption(background) $pri # option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $pri # option add *TixTree*hlist.highlightBackground $tixOption(background) $pri # option add *TixTree*hlist.background $tixOption(light1_bg) $pri # option add *TixTree*hlist.borderWidth $::wm_default::borderwidth $pri # These were missing # option add *TixMenu*Menu.selectColor $NIMLook(foreground) $pri # option add *TixMDIMenuBar*Menubutton.padY 2 $pri # option add *TixMDIMenuBar*menubar.borderWidth 2 $pri # option add *TixMDIMenuBar*menubar.relief raised $pri # option add *TixMultiView*Listbox.borderWidth 0 $pri # option add *TixMultiView*Listbox.highlightThickness 0 $pri # option add *TixMultiView*Scrollbar.relief sunken $pri # option add *TixMultiView*f1.borderWidth 2 $pri # option add *TixMultiView*f1.highlightThickness 2 $pri option add *TixMultiView*f1.relief sunken $pri } # Leave the standard widgets alone if {0} { option add *Background $tixOption(background) $pri option add *background $tixOption(background) $pri option add *Foreground $tixOption(foreground) $pri option add *foreground $tixOption(foreground) $pri option add *activeBackground $tixOption(active_bg) $pri option add *activeForeground $tixOption(active_fg) $pri option add *HighlightBackground $tixOption(background) $pri option add *selectBackground $tixOption(select_bg) $pri option add *selectForeground $tixOption(select_fg) $pri option add *selectBorderWidth 0 $pri option add *Menu.selectColor $tixOption(foreground) $pri option add *TixMenu.selectColor $tixOption(foreground) $pri option add *Menubutton.padY 5 $pri option add *Button.borderWidth 2 $pri option add *Button.anchor c $pri option add *Checkbutton.selectColor $tixOption(selector) $pri option add *Radiobutton.selectColor $tixOption(selector) $pri option add *Entry.relief sunken $pri option add *Entry.highlightBackground $tixOption(background) $pri option add *Entry.background $tixOption(textbackground) $pri option add *Entry.foreground $tixOption(textforeground) $pri option add *Entry.insertBackground $tixOption(textforeground) $pri option add *Label.anchor w $pri option add *Label.borderWidth 0 $pri option add *Listbox.background $tixOption(textbackground) $pri option add *Listbox.relief sunken $pri option add *Scale.foreground $tixOption(foreground) $pri option add *Scale.activeForeground $tixOption(background) $pri option add *Scale.background $tixOption(background) $pri option add *Scale.sliderForeground $tixOption(background) $pri option add *Scale.sliderBackground $tixOption(light1_bg) $pri option add *Scrollbar.relief sunken $pri option add *Scrollbar.borderWidth $::wm_default::borderwidth $pri option add *Scrollbar.width 15 $pri option add *Text.background $tixOption(textbackground) $pri option add *Text.relief sunken $pri } Tix8.4.3/library/pref/WmDefault.fsc0000644000122200012240000000421007404570215017357 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: WmDefault.fsc,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # # proc tixPref:InitFontSet:WmDefault {} { global tixOption package require wm_default if {1 || ![info exists ::wm_default::wm]} { wm_default::setup wm_default::addoptions } set tixOption(font) $::wm_default::system_font set tixOption(bold_font) [concat $::wm_default::system_font bold] set tixOption(menu_font) $::wm_default::menu_font set tixOption(italic_font) [concat $::wm_default::system_font italic] set tixOption(fixed_font) $::wm_default::fixed_font set tixOption(border1) $::wm_default::borderwidth } proc tixPref:SetFontSet:WmDefault {} { global tixOption package require wm_default if {1 || ![info exists ::wm_default::wm]} { wm_default::setup wm_default::addoptions } set pri $tixOption(prioLevel) set tixOption(font) $::wm_default::system_font set tixOption(bold_font) [concat $::wm_default::system_font bold] set tixOption(menu_font) $::wm_default::menu_font set tixOption(italic_font) [concat $::wm_default::system_font italic] set tixOption(fixed_font) $::wm_default::fixed_font set tixOption(text_font) $::wm_default::text_font set tixOption(border1) $::wm_default::borderwidth option add *TixBalloon*Label.font $tixOption(font) $pri option add *TixBitmapButton*label.font $tixOption(font) $pri option add *TixControl*label.font $tixOption(font) $pri option add *TixLabelEntry*label.font $tixOption(font) $pri option add *TixLabelFrame*label.font $tixOption(font) $pri option add *TixMenu.font $tixOption(menu_font) $pri option add *TixMwmClient*title.font $tixOption(font) $pri option add *TixNoteBook.nbframe.font $tixOption(font) $pri # Although its a menubutton, it's more like a button than a menu IMHO option add *TixOptionMenu*menubutton.font $tixOption(font) $pri option add *TixComboBox*Entry.font $tixOption(font) $pri option add *TixFileSelectBox*Label.font $tixOption(font) $pri } Tix8.4.3/library/pref/WmDefault.tcl0000755000122200012240000010206510767572344017413 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # # $Id: WmDefault.tcl,v 1.7 2008/03/17 22:47:00 hobbs Exp $ # # Description: Package for making Tk apps use the CDE/KDE/Gnome/Windows scheme # Prefix: wm_default:: # Url: http://tix.sourceforge.net/Tixapps/ # # Usage: # It should be sufficient at the beginning of a wish app to simply: # # package require wm_default # wm_default::setup # wm_default::addoptions # # wm_default::setup takes an optional argument - the scheme if already # known, one of: windows gnome kde1 kde2 cde kde # wm_default::addoptions takes optional arguments - pairs of variables # and values to override the kde settings. e.g. # wm_default::addoptions -background blue # # Description: # package for making Tk apps look nice under CDE or KDE or Windows # # The stuff below attempts to use the options database and the # various files under ~/.dt, $DTHOME, and /usr/dt to figure out # the user's current font and color set. It then uses tk's # palette routines to set sensible defaults, and then override # some of the options to try to make them look like CDE. # # There really *must* be an easier way to get text background # colors and the radiobutton highlight colors out of the # options database or winfo atom... Unfortunately, I can't # figure out how... # This package is based on the cde package by D. J. Hagberg, Jr.: # dhagberg@glatmos.com ######################################################################## # # # Copyright 1998 D. J. Hagberg, Jr. and Global Atmospherics, Inc. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. # D. J. Hagberg, Jr. and Global Atmospherics, Inc. make no representations # about the suitability of this software for any It is provided "as is" # without express or implied warranty. By use of this software the user # agrees to indemnify and hold harmless D. J. Hagberg, Jr. and Global # Atmospherics, Inc. from any claims or liability for loss arising out # of such use. ######################################################################## package require Tk proc tixDetermineWM {} { # Returns one of cde kde1 kde2 gnome windows or "" global tcl_platform env set type "" if {$tcl_platform(platform) eq "windows"} { set type windows } else { # The most definitive way is to check the X atoms # I'm not sure if we can determine this using regular Tk wm calls # I don't want to intern these symbols if they're not there. if {![catch {exec xlsatoms} xatoms]} { if {[string match *GNOME_SESSION_CORBA_COOKIE* $xatoms]} { set type gnome } elseif {[string match *KDEChangeStyle* $xatoms]} { set type kde1 } elseif {[string match *KDE_DESKTOP_WINDOW* $xatoms]} { set type kde2 } } if {$type != ""} { # drop through } elseif {[info exists env(KDEDIR)] && [file isdir $env(KDEDIR)]} { # one or two? set type kde2 } elseif {[info exists env(DTHOME)] && [file isdir $env(DTHOME)]} { set type cde } else { # Maybe look for other Unix window managers? # if {[file isfile $env(HOME)/.fwm2rc]} {} # if {[file isfile $env(HOME)/.fwmrc]} {} # if {[file isfile $env(HOME)/.twmrc]} {} # But twm and fwm don't color applications; mwm maybe? # Hope someone comes up with the code for openlook :-) return "" } } return $type } namespace eval ::wm_default { global tcl_platform env set _usetix [llength [info commands "tix"]] variable wm "" variable _frame_widgets {*Frame *Toplevel} #what about tixGrid? if {$_usetix} { lappend _frame_widgets *TixLabelFrame *TixButtonBox *TixCObjView \ *TixListNoteBook *TixPanedWindow *TixStdButtonBox \ *TixExFileSelectBox } variable _menu_font_widgets {*Menu *Menubutton} if {$_usetix} {lappend _menu_font_widgets *TixMenu} variable _button_font_widgets {*Button} variable _system_font_widgets {*Label \ *Message \ *Scale *Radiobutton *Checkbutton } if {$_usetix} { lappend _system_font_widgets \ *TixBalloon*message *TixLabelFrame*Label \ *TixControl*label *TixControl*Label \ *TixLabelEntry*label *TixNoteBook.nbframe \ *TixFileEntry*label *TixComboBox*label \ *TixOptionMenu*menubutton *TixBitmapButton*label \ *TixMwmClient*title *TixFileSelectBox*Label } variable _text_type_widgets {*Canvas *Entry *Listbox *Text} if {$_usetix} { lappend _text_type_widgets \ *TixComboBox*Entry *TixControl*entry *TixScrolledHList*hlist \ *TixDirTree*hlist *TixDirList*hlist *TixTree*hlist \ *TixMultiList*Listbox *TixScrolledListBox*listbox \ *TixFileEntry*Entry *TixLabelEntry*Entry \ *TixFileEntry*entry *TixLabelEntry*entry \ *TixScrolledTList*tlist *TixScrolledText*text \ *TixHList *TixCheckList*hlist # These arent working yet lappend _text_type_widgets \ *TixDirTree*f1 *TixDirList*f1 \ *TixFileSelectBox*file*listbox \ *TixFileSelectBox*directory*listbox \ *TixExFileSelectBox*filelist*listbox } variable _insert_type_widgets {*Entry *Text} if {$_usetix} { lappend _insert_type_widgets \ *TixControl*entry *TixComboBox*Entry } variable _select_type_widgets {*Checkbutton \ *Radiobutton \ *Menu} variable _active_borderwidth_widgets {*Button *Radiobutton *Checkbutton} # Other Widgets that are given a borderwidth of $wm_default::borderwidth variable _nonzero_borderwidth_widgets {} # Widgets that are given a borderwidth of 0 # must not be *Entry variable _null_borderwidth_widgets {*Menubutton *Label} variable _scrollbar_widgets {} variable _scrollbar_widgets {*Scrollbar} if {$_usetix} { lappend _scrollbar_widgets \ *TixTree*Scrollbar *TixDirTree*Scrollbar *TixDirList*Scrollbar \ *TixScrolledTList*Scrollbar *TixScrolledListBox*Scrollbar \ *TixScrolledHList*Scrollbar *TixMultiView*Scrollbar \ *TixScrolledText*Scrollbar *TixScrolledWindow*Scrollbar \ *TixCObjView*Scrollbar } proc debug {str} { if {[llength [info commands "tix"]] && [string is true -strict [tix cget -debug]]} { puts $str } } # Return the array of what we have deduced proc getoptions {} { set retval {} set len [string length "::wm_default::"] foreach variable [lsort [info vars ::wm_default::*]] { if {[string match ::wm_default::_* $variable]} {continue} set key [string range $variable $len end] lappend retval $key [set $variable] } return $retval } # Print out the array of what we have deduced proc parray {} { set retval "" foreach {key val} [::wm_default::getoptions] { append retval [join [list $key $val]] "\n" } debug $retval return $retval } # Pick a default borderwidth in pixels set _bd 2 # Pick a default font size in pixels set _screenheight [winfo screenheight .] if {$_screenheight < 500} { # for 800x600 or smaller set _pixel 10 set _point 8 # Pick a default borderwidth which smaller set _bd 1 } elseif {$_screenheight < 800} { # for 1024x768 set _pixel 12 set _point 8 } elseif {$_screenheight < 1100} { # for 1200x1000 set _pixel 12 set _point 8 } else { set _pixel 12 set _point 10 } # setup defaults depending on the OS and Window Manager # Really should do another version for mono if {$tcl_platform(platform) eq "windows"} { if {$tcl_platform(osVersion) < 5} { set _prop_default "MS Sans Serif" } else { set _prop_default "Tahoma" } # make sure this font is installed set _allowed [string tolow [font families]] foreach font [list $_prop_default "MS Sans Serif" Tahoma Arial System] { if {[lsearch -exact $_allowed [string tolow $font]] > -1} { set _prop_default $font break } } set _fixed_default {Courier New} # make sure this font is installed foreach font [list $_fixed_default Courier System] { if {[lsearch -exact $_allowed [string tolow $font]] > -1} { set _fixed_default $font break } } # Windows colors: # "3dDarkShadow", COLOR_3DDKSHADOW, # "3dLight", COLOR_3DLIGHT, # "ActiveBorder", COLOR_ACTIVEBORDER, # "ActiveCaption", COLOR_ACTIVECAPTION, # "AppWorkspace", COLOR_APPWORKSPACE, # "Background", COLOR_BACKGROUND, # "ButtonFace", COLOR_BTNFACE, # "ButtonHighlight", COLOR_BTNHIGHLIGHT, # "ButtonShadow", COLOR_BTNSHADOW, # "ButtonText", COLOR_BTNTEXT, # "CaptionText", COLOR_CAPTIONTEXT, # "DisabledText", COLOR_GRAYTEXT, # "GrayText", COLOR_GRAYTEXT, # "Highlight", COLOR_HIGHLIGHT, # "HighlightText", COLOR_HIGHLIGHTTEXT, # "InactiveBorder", COLOR_INACTIVEBORDER, # "InactiveCaption", COLOR_INACTIVECAPTION, # "InactiveCaptionText", COLOR_INACTIVECAPTIONTEXT, # "InfoBackground", COLOR_INFOBK, # "InfoText", COLOR_INFOTEXT, # "Menu", COLOR_MENU, # "MenuText", COLOR_MENUTEXT, # "Scrollbar", COLOR_SCROLLBAR, # "Window", COLOR_WINDOW, # "WindowFrame", COLOR_WINDOWFRAME, # "WindowText", COLOR_WINDOWTEXT, variable \ background "SystemButtonFace" \ foreground "SystemButtonText" \ disabledforeground "SystemDisabledText" \ disabledbackground "SystemButtonShadow" \ textfamily $_prop_default \ systemfamily $_prop_default \ menufamily $_prop_default \ fixedfamily $_fixed_default \ fontsize $_point \ textbackground "SystemWindow" \ textforeground "SystemWindowText" \ disabledtextbackground "SystemDisabledText" \ selectbackground "SystemHighlight" \ selectforeground "SystemHighlightText" \ selectcolor "SystemWindow" \ highlightcolor "SystemWindowFrame" \ highlightbackground "SystemButtonFace" \ scrollbars "SystemScrollbar" \ borderwidth $_bd \ menubackground "SystemMenu" \ menuforeground "SystemMenuText" variable highlightthickness 1 # Windows does not have an activebackground, but Tk does variable activebackground $background variable activeforeground $foreground } else { # intended for Unix # Tk uses the following defaults: #define NORMAL_BG "#d9d9d9" #define ACTIVE_BG "#ececec" #define SELECT_BG "#c3c3c3" #define TROUGH "#c3c3c3" #define INDICATOR "#b03060" #define DISABLED "#a3a3a3" # We know . exists and it has a background # This should be "#d9d9d9" under default Tk set _bg [. cget -background] set _prop_default helvetica # make sure this font is installed set _allowed [string tolow [font families]] foreach font [list $_prop_default times fixed] { if {[lsearch -exact $_allowed [string tolow $font]] > -1} { set _prop_default $font break } } set _fixed_default courier # make sure this font is installed foreach font [list $_fixed_default fixed] { if {[lsearch -exact $_allowed [string tolow $font]] > -1} { set _fixed_default $font break } } variable \ background $_bg \ foreground Black \ disabledforeground #808080 \ disabledbackground #a3a3a3 \ textfamily $_prop_default \ systemfamily $_prop_default \ menufamily $_prop_default \ fixedfamily $_fixed_default \ fontsize $_pixel \ textbackground white \ textforeground Black \ disabledtextbackground $_bg \ selectbackground #000080 \ selectforeground white \ selectcolor yellow \ highlightcolor Black \ highlightbackground $_bg \ scrollbars "#c3c3c3" \ borderwidth $_bd \ menubackground $_bg \ menuforeground Black variable highlightthickness 1 # Windows does not have an activebackground, but Tk does variable activebackground "#ececec" variable activeforeground $foreground } # priority should be userDefault? if {$_usetix} { variable priority [tix cget -schemepriority] } else { variable priority 75 } # variables that will be derived during addoptions - set to null for now variable system_font {} variable menu_font {} variable fixed_font {} variable text_font {} # Different desktops have different visible regions # This is not working properly yet. variable geometry 0+0+[winfo screenwidth .]+$_screenheight # Different desktops have different focusmodels: clicktofocus or # followsmouse This is not working properly yet variable focusmodel clicktofocus # Some desktops have standardized link colors # This is not working properly yet variable linkcolor "#0000ff" vlinkcolor "#800000" alinkcolor "#800080" proc default {args} { # Override the defaults with any optional arguments foreach {var val} $args { set $var $val } } proc setup {{type ""}} { # type is one of the recognized window managers # one of: cde kde win global tcl_platform env if {$type == ""} { if {[set type [::tixDetermineWM]] == ""} { set ::wm_default::wm "" # Generic unix return } } setup-$type set ::wm_default::wm $type # todo - make the menubutton enter and leave events more compatible } proc setup-windows {args} { # Already done by Tk above. # Should find out the useable window region } proc setup-gnome {args} { # GNOME is still barely supported because of the difficulty # of finding and parsing sawfish definition files. # First you have to find what window manager, then what theme, # then find the files, then parse them according to each Wm's syntax. global env set bg $wm_default::background set fg $wm_default::foreground set txtFont $wm_default::textfamily set btnFont $wm_default::systemfamily debug "Setting up Gnome environment" set file ~/.gnome/theme-switcher-capplet if {![file exists $file] || \ [catch {open $file} fd] || $fd == ""} { debug "Skipping $file" } else { debug "Reading $file" set contents [read $fd] catch {close $fd} if {![regexp -- "use_theme_font=true" $contents]} { # not activated } elseif {[regexp -- "\nfont=(\[-a-zA-Z0-9,\]+)" $contents \ foo font]} { set_unix_font $font } } } proc set_unix_font {font} { set list [split $font "-"] set font [lindex $list 2] set font [string tolow $font] if {$font != "" && [lsearch -exact [font families] $font] > -1} { set wm_default::textfamily $font debug "Setting textfamily to $font" set wm_default::systemfamily $font set wm_default::menufamily $font } else { debug "Unable to set font: '$list'" } if {[set size [lindex $list 7]] != "" && \ [string is integer -strict $size]} { debug "Setting fontsize to '$size'" set wm_default::fontsize $size } elseif {[set size [lindex $list 8]] != "" && \ [string is integer -strict $size]} { if {$size > 100} {set size [expr {$size / 10}]} debug "Setting fontsize to '$size'" set wm_default::fontsize $size } else { debug "Unable to set fontsize: '$list'" } } # Common to KDE1 and KDE2 proc setup-kde {args} { global env set file ~/.kderc if {![file exists $file] || [catch {open $file} fd] || $fd == ""} { debug "Skipping $file" } else { debug "Reading $file" set contents [read $fd] catch {close $fd} if {[regexp -- "\nfixedfamily=(\[-a-zA-Z0-9, \]+)" $contents \ foo font]} { set list [split $font ","] set font [lindex $list 0] set wm_default::fixedfamily $font debug "Setting fixedfamily to $font" } if {[regexp -- "\nfont=(\[-a-zA-Z0-9, \]+)" $contents \ foo font]} { set list [split $font ","] set font [lindex $list 0] set wm_default::textfamily $font debug "Setting textfamily to $font" set wm_default::systemfamily $font set wm_default::menufamily $font } } } proc setup-kde1 {args} { # Shortcut for the moment return [eval setup-kde $args] } proc set-kde2-color {str contents var} { if {[regexp -- "\n${str}=(\[0-9,\]+)" $contents -> color]} { set color [eval [list format "#%02x%02x%02x"] [split $color ","]] set ::wm_default::$var $color debug "setting $var to $color" } } proc setup-kde2 {args} { global env set bg $wm_default::background set fg $wm_default::foreground set txtFont $wm_default::textfamily set btnFont $wm_default::systemfamily debug "Setting up KDE environment" # Look for system the user settings set dirs ~/.kde if {[info exists env(KDEDIR)] && [file isdir $env(KDEDIR)]} { lappend dirs $env(KDEDIR) } # read them sequentially and overwrite the previous values foreach dir $dirs { set file $dir/share/config/kdeglobals if {![file exists $file] || [catch {open $file} fd] || $fd == ""} { debug "Skipping $file" } else { debug "Reading $file" set contents [read $fd] catch {close $fd} set-kde2-color background $contents background set-kde2-color foreground $contents foreground set-kde2-color selectBackground $contents selectbackground set-kde2-color selectForeground $contents selectforeground set-kde2-color windowBackground $contents textbackground set-kde2-color visitedLinkColor $contents vlinkcolor set-kde2-color linkColor $contents linkcolor if {[regexp -- "\nactiveFont=(\[-a-zA-Z0-9, \]+)" $contents \ foo font]} { set list [split $font ","] set font [lindex $list 0] set wm_default::textfamily $font set size [lindex $list 1] if {[string is integer -strict $size]} { set wm_default::fontsize $size } debug "Setting textfamily to $font" set wm_default::systemfamily $font set wm_default::menufamily $font } } # should pick up visitedLinkColor set file $dir/share/config/kwmrc if {![file exists $file] || [catch {open $file} fd] || $fd == ""} { debug "Skipping $file" } else { debug "Reading $file" set contents [read $fd] catch {close $fd} if {[regexp -- "\nDesktop1Region=(\[0-9+\]+)" $contents \ foo region]} { set wm_default::geometry $region debug "Setting geometry to $region" } if {[regexp -- "\nFocusPolicy=ClickToFocus" $contents \ foo region]} { set wm_default::focusmodel clicktofocus debug "Setting focusmodel to clicktofocus" } else { # followsmouse } } } return [eval setup-kde $args] } proc setup-cde {args} { namespace import wm_default::* set bg $wm_default::background set fg $wm_default::foreground set txtFont $wm_default::textfamily set sysFont $wm_default::systemfamily debug "Setting up CDE environment" # if any of these options are missing, we must not be under CDE set txtFont [option get . textfamilyList textfamilyList] set sysFont [option get . systemfamilyList systemfamilyList] if {$txtFont ne "" && $sysFont ne ""} { set txtFont [lindex [split $txtFont :] 0] set sysFont [lindex [split $sysFont :] 0] if {$txtFont ne ""} {set textfamily $txtFont} if {$sysFont ne ""} {set systemfamily $sysFont} # # If we can find the user's dt.resources file, we can find out the # palette and text background/foreground colors # set txtBg $bg set txtFg $fg set selFg $selectforeground set selBg $selectbackground set selCol $selectcolor set fh "" set palf "" set cur_rsrc ~/.dt/sessions/current/dt.resources set hom_rsrc ~/.dt/sessions/home/dt.resources if {[file readable $cur_rsrc] && [file readable $hom_rsrc]} { if {[file mtime $cur_rsrc] > [file mtime $hom_rsrc]} { if {[catch {open $cur_rsrc r} fh]} {set fh ""} } else { if {[catch {open $hom_rsrc r} fh]} {set fh ""} } } elseif {[file readable $cur_rsrc]} { if {[catch {open $cur_rsrc r} fh]} {set fh ""} } elseif {[file readable $hom_rsrc]} { if {[catch {open $hom_rsrc r} fh]} {set fh ""} } if {[string length $fh] > 0} { while {[gets $fh ln] != -1} { regexp -- "^\\*0\\*ColorPalette:\[ \t]*(.*)\$" $ln nil palf regexp -- "^Window.Color.Background:\[ \t]*(.*)\$" $ln nil txtBg regexp -- "^Window.Color.Foreground:\[ \t]*(.*)\$" $ln nil txtFg } catch {close $fh} if {$txtBg ne $bg} { set selBg $txtFg set selFg $txtBg } } # # If the *0*ColorPalette setting was found above, try to find the # indicated file in ~/.dt, $DTHOME, or /usr/dt. The 3rd line in the # file will be the radiobutton/checkbutton selectColor. # if {[string length $palf]} { set dtdir /usr/dt if [info exists env(DTHOME)] { set dtdir $env(DTHOME) } if {[file readable ~/.dt/palettes/$palf]} { set palf ~/.dt/palettes/$palf } elseif {[file readable $dtdir/palettes/$palf]} { set palf $dtdir/palettes/$palf } else { set palf "" } if {[string length $palf]} { if {![catch {open $palf r} fh]} { # selectColor will be the 3rd line in the file -- set ln ""; catch {gets $fh; gets $fh; gets $fh ln} set ln [string trim $ln] if {[string length $ln]} {set selCol $ln} close $fh } } } set wm_default::background $bg set wm_default::foreground $fg set wm_default::textfamily $txtFont set wm_default::systemfamily $sysFont set wm_default::menufamily $sysFont set wm_default::textbackground $txtBg set wm_default::textforeground $txtFg set wm_default::selectbackground $selBg set wm_default::selectforeground $selFg set wm_default::selectcolor $selCol } } proc derivefonts {} { global tcl_platform env # variables that will be derived variable system_font variable menu_font variable fixed_font variable text_font # # Set default fonts # global tcl_platform env switch -exact -- $tcl_platform(platform) windows { set system_font [list $::wm_default::systemfamily $::wm_default::fontsize] set menu_font [list $::wm_default::menufamily $::wm_default::fontsize] set text_font [list $::wm_default::textfamily $::wm_default::fontsize] set fixed_font [list $::wm_default::fixedfamily $::wm_default::fontsize] } default { set system_font [list $::wm_default::systemfamily -$::wm_default::fontsize] if {[set type $::wm_default::wm] == ""} { # Generic unix # some Unix Wms seem to make Menu fonts bold - ugly IMHO set menu_font [list $::wm_default::menufamily -$::wm_default::fontsize bold] } else { # gnome kde1 kde2 cde kde don't set menu_font [list $::wm_default::menufamily -$::wm_default::fontsize] } set text_font [list $::wm_default::textfamily -$::wm_default::fontsize] set fixed_font [list $::wm_default::fixedfamily -$::wm_default::fontsize] } } proc addoptions {args} { global tcl_platform env tix_version # variables that will be derived variable system_font variable menu_font variable fixed_font variable text_font if {[info commands "tix"] != ""} {set _usetix 1} {set _usetix 0} # Override what you have found with any optional arguments foreach {var val} $args { set var [string trimleft $var "-"] set ::wm_default::$var $val } set pri $::wm_default::priority # If you are running under Tix, set the colorscheme now # The options below will then override the Tix settings if {$_usetix} { # Tix's focus model is very non-standard bind TixComboBox "" bind TixComboBox "" if {$tix_version < "8.2"} { # works?? option add *TixNoteBook.nbframe.inactiveBackground \ $::wm_default::disabledbackground $pri } else { # works?? option add *TixNoteBook.nbframe.inactiveBackground \ $::wm_default::background $pri } # works?? option add *TixPanedWindow.seperatorBg \ $::wm_default::disabledbackground $pri option add *TixPanedWindow.handleBg \ $::wm_default::disabledbackground $pri # works?? option add *TixPanedWindow.separatorActiveBg \ $::wm_default::activebackground $pri option add *TixPanedWindow.handleActiveBg \ $::wm_default::activebackground $pri option add *TixPanedWindow.Background \ $::wm_default::disabledbackground $pri # works?? option add *TixResizeHandle*background \ $::wm_default::disabledbackground $pri } foreach pref $wm_default::_frame_widgets { option add $pref.background $::wm_default::background $pri } option add *Background $::wm_default::background $pri derivefonts # Set the global defaults to the system font foreach pref [list *Font *font] { option add $pref $system_font $pri } # Set the "system" type defaults to the system font foreach pref $wm_default::_menu_font_widgets { option add $pref.font $menu_font $pri } foreach pref $wm_default::_button_font_widgets { option add $pref.font $system_font $pri option add $pref.disabledForeground $::wm_default::disabledforeground $pri option add $pref.background $::wm_default::background $pri option add $pref.foreground $::wm_default::foreground $pri option add $pref.highlightBackground $::wm_default::highlightbackground $pri } foreach pref $wm_default::_system_font_widgets { option add $pref.font $system_font $pri option add $pref.background $::wm_default::background $pri option add $pref.foreground $::wm_default::foreground $pri option add $pref.highlightBackground $::wm_default::highlightbackground $pri } foreach pref $wm_default::_text_type_widgets { option add $pref.font $text_font $pri option add $pref.relief sunken $pri option add $pref.borderWidth $::wm_default::borderwidth $pri option add $pref.background $::wm_default::textbackground $pri option add $pref.foreground $::wm_default::textforeground $pri option add $pref.selectBackground $::wm_default::selectbackground $pri option add $pref.selectForeground $::wm_default::selectforeground $pri option add $pref.highlightThickness $::wm_default::highlightthickness $pri option add $pref.disabledBackground $::wm_default::disabledtextbackground $pri } foreach pref $wm_default::_insert_type_widgets { option add $pref.relief sunken $pri option add $pref.insertBackground $::wm_default::textforeground $pri option add $pref.highlightThickness $::wm_default::highlightthickness $pri } # # Set the Selector color for radiobuttons, checkbuttons, et. al # foreach pref $wm_default::_select_type_widgets { option add $pref.selectColor $::wm_default::selectcolor $pri option add $pref.background $::wm_default::background $pri option add $pref.foreground $::wm_default::foreground $pri option add $pref.activeBackground $::wm_default::activebackground $pri option add $pref.activeForeground $::wm_default::activeforeground $pri } # Set the "active" defaults - this could be controversial foreach pref $wm_default::_menu_font_widgets { option add $pref.activeBackground $::wm_default::activebackground $pri option add $pref.activeForeground $::wm_default::activeforeground $pri option add $pref.background $::wm_default::background $pri option add $pref.foreground $::wm_default::foreground $pri option add $pref.disabledForeground $::wm_default::disabledforeground $pri option add $pref.highlightThickness $::wm_default::highlightthickness $pri } switch -exact -- $tcl_platform(platform) windows { # Make sure this is set to foreground - check marks on menus set _menu_select_color $::wm_default::foreground } default { # On unix there are recessed check boxes not check marks set _menu_select_color $::wm_default::selectcolor } option add *Menu.selectColor $_menu_select_color $pri if {$_usetix} { option add *TixMenu.selectColor $_menu_select_color $pri option add *TixBalloon*message.background $::wm_default::textbackground $pri } # Windows does not have an activebackground, but Tk does foreach pref $wm_default::_button_font_widgets { option add $pref.activeBackground $::wm_default::activebackground $pri option add $pref.activeForeground $::wm_default::activeforeground $pri } # # Set the default *button borderwidth # # option add *.borderWidth $::wm_default::borderwidth $pri foreach pref $wm_default::_active_borderwidth_widgets { option add $pref.activeBorderWidth $::wm_default::borderwidth $pri option add $pref.borderWidth $::wm_default::borderwidth $pri } foreach pref $wm_default::_nonzero_borderwidth_widgets { option add $pref.borderWidth $::wm_default::borderwidth $pri } foreach pref $wm_default::_null_borderwidth_widgets { option add $pref.borderWidth 0 $pri } if {$_usetix} { if {$tix_version < "8.2"} { option add *TixNoteBook.nbframe.inactiveBackground \ $::wm_default::disabledbackground $pri option add *TixNoteBook*nbframe.inactiveBackground \ $::wm_default::disabledbackground $pri } else { option add *TixNoteBook.nbframe.inactiveBackground \ $::wm_default::background $pri option add *TixNoteBook*nbframe.inactiveBackground \ $::wm_default::background $pri } } foreach pref $wm_default::_scrollbar_widgets { option add $pref.background $::wm_default::background $pri option add $pref.foreground $::wm_default::foreground $pri # Tix 8.1.1 had these wrong option add $pref.troughColor $::wm_default::scrollbars $pri option add $pref.borderWidth $::wm_default::borderwidth $pri } option add *Scale.borderWidth $::wm_default::borderwidth $pri option add *Scale.troughColor $::wm_default::scrollbars $pri option add *highlightColor $::wm_default::highlightcolor $pri option add *highlightBackground $::wm_default::highlightbackground $pri option add *HighlightBackground $::wm_default::highlightbackground $pri # not _system_font_widgets set _focus_widgets [concat \ $::wm_default::_frame_widgets \ $::wm_default::_menu_font_widgets \ $::wm_default::_text_type_widgets \ $::wm_default::_insert_type_widgets \ $::wm_default::_select_type_widgets \ $::wm_default::_active_borderwidth_widgets \ $::wm_default::_nonzero_borderwidth_widgets \ $::wm_default::_null_borderwidth_widgets ] if {$_usetix} { set _tix_hl_widgets [list *TixBitmapButton*label \ *TixComboBox*Entry \ *TixControl*entry \ *TixDirList*hlist \ *TixDirTree*hlist \ *TixFileEntry*Entry \ *TixFileEntry*entry \ *TixMultiList*Listbox \ *TixNoteBook.nbframe \ *TixOptionMenu*menubutton \ *TixScrolledHList*hlist \ *TixScrolledListBox*listbox\ *TixScrolledTList*tlist \ *TixTree*hlist] eval lappend _focus_widgets $_tix_hl_widgets } foreach pref [lsort -uniq $_focus_widgets] { option add $pref.highlightBackground $::wm_default::highlightbackground $pri } # Now for some things to make it look more like the WM # todo - look for and call if {$::wm_default::focusmodel eq "followsmouse"} { tk_focusFollowsMouse } if {$_usetix} { tixSetDefaultOptions if {[lsearch -exact {windows kde1 kde2} $::wm_default::wm] > -1} { # Fix the way Button boxes are packed if {![llength [info procs ::tixButtonBox:add]]} { uplevel #0 auto_load tixButtonBox } proc ::tixButtonBox:add {w name args} { upvar #0 $w data eval [linsert $args 0 button $w.$name] if {![info exists data(-padx)]} {set data(-padx) 5} if {![info exists data(-pady)]} {set data(-pady) 10} if {$data(-orientation) eq "horizontal"} { # Push the Buttons to the right if {[info commands $w.pad] == ""} { label $w.pad pack $w.pad -side left -expand yes -fill both } pack $w.$name -side left \ -expand no \ -padx $data(-padx) -pady $data(-pady) } else { pack $w.$name -side top \ -expand no -fill x \ -padx $data(-padx) -pady $data(-pady) } lappend data(g:buttons) $name set data(w:$name) $w.$name return $w.$name } option add *TixButtonBox.relief flat $::wm_default::priority option add *TixButtonBox.borderwidth 2 $::wm_default::priority } } return [getoptions] } namespace export setup addoptions getoptions parray } package provide wm_default 1.0 proc tixSetDefaultOptions {} { # Returns one of cde kde1 kde2 gnome windows or "" global tcl_platform env tixOption # There is no overlap between the wm_default variable names and # the old style tixOption names. So we can add the wm_default variable # names to the array tixOption, and allow people to upgrade in time. foreach variable { wm linkcolor vlinkcolor alinkcolor background foreground disabledforeground disabledbackground textfamily systemfamily menufamily fixedfamily fontsize textbackground textforeground disabledtextbackground selectbackground selectforeground selectcolor highlightcolor highlightbackground scrollbars borderwidth priority menubackground menuforeground activebackground activeforeground system_font menu_font fixed_font text_font } { set tixOption($variable) [set ::wm_default::$variable] } } Tix8.4.3/library/pref/WmDefault.txt0000644000122200012240000001034407404570215017430 0ustar jeffhjeffh00000000000000One of the bad things about Tk/Tkinter is that it does not pick up the current color and font scheme from the prevailing CDE/KDE/GNOME/Windows window manager scheme. One of the good things about Tk/Tkinter is that it is not tied to one particular widget set so it could pick up the current color and font scheme from the prevailing CDE/KDE/GNOME/Windows window manager scheme. The WmDefault package is for making Tk/Tkinter applications use the prevailing CDE/KDE/GNOME/Windows scheme. It tries to find the files and/or settings that the current window manager is using, and then sets the Tk options database accordingly (plus a few other things as well). DOWNLOAD -------- Download the latest version of wm_default from http://tix.sourceforge.net either as a part of the standard Tix distribution, or as a part of the Tix Applications: http://tix.sourceforge.net/Tide. wm_default does not require Tix, but is Tix enabled. USAGE: ------ For Tix versions 8.1.2 and above from http://tix.sourceforge.net, WmDefault is the default Tix scheme, so there is nothing else to do. For Tk applications, it should be sufficent at the beginning of a wish app to simply: package require wm_default wm_default::setup wm_default::addoptions The process is divided into 2 steps: 1) find the files and/or settings (::wm_default::setup). This is complete for Windows, pretty good for KDE and CDE, and still barely supported for GNOME because of the difficulty of finding and parsing sawfish definition files. setup takes one optional argument: wm, the name of the window manager as a string, if known. One of: windows gnome kde1 kde2 cde. 2) Setting the Tk options database (::wm_default::addoptions). You can override the settings in 1) by adding your values to the call to addoptions: ::wm_default::addoptions -foreground red -background blue You can examine the settings with ::wm_default::getoptions which returns a Tcl array of the current settings, and ::wm_default::parray which returns a string of the current settings, one value-pair per line. There are a number of assumptions built into the heuristics of addoptions, that may need fine tuning. Post patches to http://tix.sourceforge.net. PYTHON ______ If you are using Tix versions 8.1.2 and above from http://tix.sourceforge.net with Python 2.1 and above, WmDefault is the default Tix scheme, so there is nothing else you need to do. The easiest way to install WmDefault for Tkinter is to copy the WmDefault.* AND THE FILE pkgIndex.tcl from lib/tix8.1/pref to a directory on your PYTHONPATH. Then the following should work: import Tkinter root = Tkinter.Tk() import WmDefault WmDefault.setup(root) WmDefault.addoptions(root, {'foreground': 'red'}) print WmDefault.getoptions(root) SETTINGS -------- Here is a list of all the settings controlled by WmDefault: wm - one of windows gnome kde1 kde2 cde kde background foreground disabledforeground disabledbackground textfamily systemfamily menufamily fixedfamily fontsize - in pixels under Unix, in points under Windows textbackground textforeground disabledtextbackground selectbackground selectforeground selectcolor highlightcolor highlightbackground scrollbars - scrollbar trough color borderwidth priority menubackground menuforeground activebackground activeforeground system_font - a Tcl font spec, a list of family size weight menu_font fixed_font text_font linkcolor - not working completely yet vlinkcolor alinkcolor TO MAKE A PREVIOUS TIX USE THIS AS THE DEFAULT SCHEME: ------------------------------------------------------ 1) Compile Tix with -DTIX_DEF_SCHEME "WmDefault" -DTIX_DEF_FONTSET "WmDefault" or change the defines in generic/tixInit.c #define TIX_DEF_SCHEME "WmDefault" #define TIX_DEF_FONTSET "WmDefault" 2) Edit the installed lib/8.1/Tix.tcl and change the -configspec in tixClass tixAppContext with the following {-fontset WmDefault} {-scheme WmDefault} 3) Copy the files WmDefault.* AND pkgIndex.tcl to the installed lib/tix8.1/pref 4) Make or edit the file lib/tix8.1/pkgIndex.tcl and add the lines package ifneeded wm_default 1.0 \ [list source [file join $dir pref WmDefault.tcl]] Tix8.4.3/library/pref/Makefile0000664000122200012240000000150207171213663016437 0ustar jeffhjeffh00000000000000# # $Id: Makefile,v 1.2 2000/10/12 01:45:23 idiscovery Exp $ # # WARNING # # This Makefile is NOT for installation purposes. Please read the file # docs/Install.html for information about installing Tix. # # # # # # # fs = font scheme source # cs = color scheme source # # fsc = font scheme compiled # csc = color scheme compiled # .SUFFIXES: .fs .cs .csc .fsc all:: FONT_PREF COLOR_PREF FONT_SRC = 14Point.fs 12Point.fs TK.fs TkWin.fs FONT_PREF:: ${FONT_SRC:.fs=.fsc} COLOR_SRC = Bisque.cs Blue.cs Gray.cs SGIGray.cs TixGray.cs TK.cs TkWin.cs COLOR_PREF:: ${COLOR_SRC:.cs=.csc} fresh:: -rm -f ${COLOR_SRC:.cs=.csc} FONT_PREF:: ${FONT_SRC:.fs=.fsc} make .cs.csc: tixmkpref -color $< > $@ .fs.fsc: tixmkpref -font $< > $@ distclean: - rm -f *.a *.o core errs *~ \#* TAGS *.E a.out errors \ *.ps clean:: distclean Tix8.4.3/library/pref/12Point.fs0000644000122200012240000000120007404570215016554 0ustar jeffhjeffh00000000000000# # $Id: 12Point.fs,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixSetFontset {} { global tixOption tcl_platform switch -- $tcl_platform(platform) "windows" { # This should be Tahoma for Win2000/XP set font "MS Sans Serif" set fixedfont "Courier New" } unix { set font "helvetica" set fixedfont "courier" } set tixOption(font) [list $font -12] set tixOption(bold_font) [list $font -12 bold] set tixOption(menu_font) [list $font -12] set tixOption(italic_font) [list $font -12 bold italic] set tixOption(fixed_font) [list $fixedfont -12] set tixOption(border1) 1 } Tix8.4.3/library/pref/TK.cs0000644000122200012240000000200007110476677015645 0ustar jeffhjeffh00000000000000# # $Id: TK.cs,v 1.1.1.1 2000/05/17 11:08:47 idiscovery Exp $ # proc tixSetScheme-Color {} { global tixOption set tixOption(bg) #d9d9d9 set tixOption(fg) black set tixOption(dark1_bg) #c3c3c3 set tixOption(dark1_fg) black set tixOption(dark2_bg) #a3a3a3 set tixOption(dark2_fg) black set tixOption(inactive_bg) #a3a3a3 set tixOption(inactive_fg) black set tixOption(light1_bg) #ececec set tixOption(light1_fg) white set tixOption(light2_bg) #fcfcfc set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) #d9d9d9 set tixOption(input2_bg) #d9d9d9 set tixOption(output1_bg) $tixOption(dark1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) black set tixOption(select_bg) #c3c3c3 set tixOption(selector) #b03060 } Tix8.4.3/library/pref/TK.fs0000644000122200012240000000077207404570215015653 0ustar jeffhjeffh00000000000000# # $Id: TK.fs,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixSetFontset {} { global tixOption set tixOption(font) -Adobe-Helvetica-Medium-R-Normal--*-120-* set tixOption(bold_font) -Adobe-Helvetica-Bold-R-Normal--*-120-* set tixOption(menu_font) -Adobe-Helvetica-Bold-R-Normal--*-120-* set tixOption(italic_font) -Adobe-Helvetica-Bold-O-Normal--*-120-* set tixOption(fixed_font) -*-courier-medium-r-*-*-14-*-*-*-*-*-*-* set tixOption(border1) 1 } Tix8.4.3/library/pref/12Point.fsc0000644000122200012240000000377507404570215016742 0ustar jeffhjeffh00000000000000# # $Id: 12Point.fsc,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixPref:InitFontSet:12Point {} { global tixOption tcl_platform switch -- $tcl_platform(platform) "windows" { # This should be Tahoma for Win2000/XP set font "MS Sans Serif" set fixedfont "Courier New" } unix { set font "helvetica" set fixedfont "courier" } set tixOption(font) [list $font -12] set tixOption(bold_font) [list $font -12 bold] set tixOption(menu_font) [list $font -12] set tixOption(italic_font) [list $font -12 bold italic] set tixOption(fixed_font) [list $fixedfont -12] set tixOption(border1) 1 } proc tixPref:SetFontSet:12Point {} { global tixOption option add *Font $tixOption(font) $tixOption(prioLevel) option add *font $tixOption(font) $tixOption(prioLevel) option add *Menu.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixMenu.font $tixOption(menu_font) $tixOption(prioLevel) option add *Menubutton.font $tixOption(menu_font) $tixOption(prioLevel) option add *Label.font $tixOption(bold_font) $tixOption(prioLevel) option add *Scale.font $tixOption(italic_font) $tixOption(prioLevel) option add *TixBalloon*Label.font $tixOption(font) $tixOption(prioLevel) option add *TixBitmapButton*label.font $tixOption(font) $tixOption(prioLevel) option add *TixControl*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixLabelEntry*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixLabelFrame*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixMwmClient*title.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixNoteBook.nbframe.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixOptionMenu*menubutton.font $tixOption(font) $tixOption(prioLevel) option add *TixComboBox*Entry.font $tixOption(font) $tixOption(prioLevel) option add *TixFileSelectBox*Label.font $tixOption(bold_font) $tixOption(prioLevel) } Tix8.4.3/library/pref/Old12Pt.fs0000644000122200012240000000103507404570215016513 0ustar jeffhjeffh00000000000000# # $Id: Old12Pt.fs,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixSetFontset:12Point {} { global tixOption set tixOption(font) -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* set tixOption(bold_font) -*-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-* set tixOption(menu_font) -*-helvetica-bold-o-normal-*-12-*-*-*-*-*-*-* set tixOption(italic_font) -*-helvetica-bold-o-normal-*-12-*-*-*-*-*-*-* set tixOption(fixed_font) -*-courier-medium-r-*-*-12-*-*-*-*-*-*-* set tixOption(border1) 1 } Tix8.4.3/library/pref/Old14Pt.fs0000644000122200012240000000076307404570215016524 0ustar jeffhjeffh00000000000000# # $Id: Old14Pt.fs,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixSetFontset {} { global tixOption set tixOption(font) -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* set tixOption(bold_font) -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-* set tixOption(menu_font) -*-helvetica-bold-o-normal-*-14-*-*-*-*-*-*-* set tixOption(italic_font) -*-helvetica-bold-o-normal-*-14-*-*-*-*-*-*-* set tixOption(fixed_font) -*-courier-medium-r-*-*-14-*-*-*-*-*-*-* } Tix8.4.3/library/pref/WmDefault.cs0000644000122200012240000000265407404570215017223 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: WmDefault.cs,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixSetScheme-Color {} { global tixOption package require wm_default if {![info exists ::wm_default::wm]} { wm_default::setup wm_default::addoptions } set tixOption(bg) $::wm_default::background set tixOption(fg) $::wm_default::foreground set tixOption(dark1_bg) #808080 set tixOption(inactive_bg) $::wm_default::disabledbackground set tixOption(inactive_fg) black; # unused # light1 was used for listbox widgets and trough colors set tixOption(light1_bg) $::wm_default::scrollbars set tixOption(light1_fg) white; # unused # text is now used for listbox widgets set tixOption(list_bg) $::wm_default::textbackground set tixOption(active_bg) $::wm_default::activebackground set tixOption(active_fg) $::wm_default::activeforeground set tixOption(disabled_fg) $::wm_default::disabledforeground # new set tixOption(disabled_bg) $::wm_default::disabledtextbackground set tixOption(input1_bg) $::wm_default::textbackground set tixOption(input1_fg) $::wm_default::textforeground set tixOption(select_fg) $::wm_default::selectforeground set tixOption(select_bg) $::wm_default::selectbackground set tixOption(selector) $::wm_default::selectcolor } Tix8.4.3/library/pref/WmDefault.fs0000644000122200012240000000136307404570215017222 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: WmDefault.fs,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixSetFontset {} { global tixOption package require wm_default if {![info exists ::wm_default::wm]} { wm_default::setup wm_default::addoptions } set tixOption(font) $::wm_default::system_font set tixOption(bold_font) [concat $::wm_default::system_font bold] set tixOption(menu_font) $::wm_default::menu_font set tixOption(italic_font) [concat $::wm_default::system_font italic] set tixOption(fixed_font) $::wm_default::fixed_font set tixOption(text_font) $::wm_default::text_font set tixOption(border1) $::wm_default::borderwidth } Tix8.4.3/library/pref/WmDefault.py0000644000122200012240000000665507404570215017253 0ustar jeffhjeffh00000000000000# -*- mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: WmDefault.py,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # """One of the bad things about Tk/Tkinter is that it does not pick up the current color and font scheme from the prevailing CDE/KDE/GNOME/Windows window manager scheme. One of the good things about Tk/Tkinter is that it is not tied to one particular widget set so it could pick up the current color and font scheme from the prevailing CDE/KDE/GNOME/Windows window manager scheme. The WmDefault package is for making Tk/Tkinter applications use the prevailing CDE/KDE/GNOME/Windows scheme. It tries to find the files and/or settings that the current window manager is using, and then sets the Tk options database accordingly. Download the latest version of wm_default from http://tix.sourceforge.net either as a part of the standard Tix distribution, or as a part of the Tix Applications: http://tix.sourceforge.net/Tide. wm_default does not require Tix, but is Tix enabled. """ import os, sys, traceback, string import tkMessageBox def setup(root, wm=''): """1) find the files and/or settings (::wm_default::setup). Takes one optional argument: wm, the name of the window manager as a string, if known. One of: windows gnome kde1 kde2 cde kde. """ try: try: # Make sure Tcl/Tk knows wm_default is installed root.tk.eval("package require wm_default") except: # Try again with this directory on the Tcl/Tk path dir = os.path.dirname (self.__file__) root.tk.eval('global auto_path; lappend auto_path {%s}' % dir) root.tk.eval("package require wm_default") except: t, v, tb = sys.exc_info() text = "Error loading WmDefault\n" for line in traceback.format_exception(t,v,tb): text = text + line + '\n' try: tkMessageBox.showerror ('WmDefault Error', text) except: sys.stderr.write( text ) return root.tk.call('::wm_default::setup', wm) def addoptions(root, cnf=None, **kw): """2) Setting the Tk options database (::wm_default::addoptions). You can override the settings in 1) by adding your values to the call to addoptions(). """ if cnf is None: return root.tk.splitlist(root.tk.call('::wm_default::addoptions')) return root.tk.splitlist( apply(root.tk.call, ('::wm_default::addoptions',) + root._options(cnf,kw))) def getoptions(root): """Returns the current settings, as a dictionary. """ words = root.tk.splitlist(root.tk.call('::wm_default::getoptions')) dict = {} for i in range(0, len(words), 2): key = words[i] value = words[i+1] dict[key] = value return dict def parray(root): """Returns a string of the current settings, one value-pair per line. """ return root.tk.call('::wm_default::parray') if __name__ == "__main__": dir = "" if len(sys.argv) > 0: # Assume the name of the file containing the tixinspect Tcl source # is the same as argument on the command line with .tcl dir = os.path.dirname(sys.argv[0]) if not dir or not os.path.isdir(dir) or not os.path.isabs(dir): # Or, assume it's in the same directory as this one: dir = os.getcwd() import Tkinter root = Tkinter.Tk() setup(root) addoptions(root, {'foreground': 'red'}) retval = getoptions(root) print retval Tix8.4.3/library/pref/Blue.cs0000644000122200012240000000202507110476677016225 0ustar jeffhjeffh00000000000000# # $Id: Blue.cs,v 1.1.1.1 2000/05/17 11:08:47 idiscovery Exp $ # proc tixSetScheme-Color {} { global tixOption set tixOption(bg) #9090f0 set tixOption(fg) black set tixOption(dark1_bg) #8080d0 set tixOption(dark1_fg) black set tixOption(dark2_bg) #7070c0 set tixOption(dark2_fg) black set tixOption(inactive_bg) #8080da set tixOption(inactive_fg) black set tixOption(light1_bg) #a8a8ff set tixOption(light1_fg) black set tixOption(light2_bg) #c0c0ff set tixOption(light2_fg) black set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray25 set tixOption(input1_bg) $tixOption(light1_bg) set tixOption(input2_bg) $tixOption(bg) set tixOption(output1_bg) $tixOption(light1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) white set tixOption(select_bg) black set tixOption(selector) yellow } Tix8.4.3/library/pref/SGIGray.csc0000644000122200012240000005401107171215440016732 0ustar jeffhjeffh00000000000000# # $Id: SGIGray.csc,v 1.2 2000/10/12 02:00:00 idiscovery Exp $ # proc tixPref:SetScheme-Color:SGIGray {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray set tixOption(dark1_fg) black set tixOption(dark2_bg) gray50 set tixOption(dark2_fg) black set tixOption(inactive_bg) gray50 set tixOption(inactive_fg) black set tixOption(light1_bg) gray90 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray35 set tixOption(input1_bg) rosybrown set tixOption(input2_bg) rosybrown set tixOption(output1_bg) $tixOption(dark1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) black set tixOption(select_bg) lightblue set tixOption(selector) yellow option add *background $tixOption(bg) 10 option add *Background $tixOption(bg) $tixOption(prioLevel) option add *background $tixOption(bg) $tixOption(prioLevel) option add *Foreground $tixOption(fg) $tixOption(prioLevel) option add *foreground $tixOption(fg) $tixOption(prioLevel) option add *activeBackground $tixOption(active_bg) $tixOption(prioLevel) option add *activeForeground $tixOption(active_fg) $tixOption(prioLevel) option add *HighlightBackground $tixOption(bg) $tixOption(prioLevel) option add *selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *selectBorderWidth 0 $tixOption(prioLevel) option add *Menu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *TixMenu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Checkbutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Radiobutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) option add *TixBalloon*background #ffff60 $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.seperatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground black $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground black $tixOption(prioLevel) } proc tixPref:SetScheme-Mono:SGIGray {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray70 set tixOption(dark1_fg) black set tixOption(dark2_bg) gray60 set tixOption(dark2_fg) white set tixOption(inactive_bg) lightgray set tixOption(inactive_fg) black set tixOption(light1_bg) gray90 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) gray90 set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) $tixOption(light1_bg) set tixOption(input2_bg) $tixOption(light1_bg) set tixOption(output1_bg) $tixOption(light1_bg) set tixOption(output2_bg) $tixOption(light1_bg) set tixOption(select_fg) white set tixOption(select_bg) black set tixOption(selector) black option add *background $tixOption(bg) 10 option add *Background $tixOption(bg) $tixOption(prioLevel) option add *background $tixOption(bg) $tixOption(prioLevel) option add *Foreground $tixOption(fg) $tixOption(prioLevel) option add *foreground $tixOption(fg) $tixOption(prioLevel) option add *activeBackground $tixOption(active_bg) $tixOption(prioLevel) option add *activeForeground $tixOption(active_fg) $tixOption(prioLevel) option add *HighlightBackground $tixOption(bg) $tixOption(prioLevel) option add *selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *selectBorderWidth 0 $tixOption(prioLevel) option add *Menu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *TixMenu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Checkbutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Radiobutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) option add *TixBalloon*background #ffff60 $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.seperatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground black $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground black $tixOption(prioLevel) } Tix8.4.3/library/pref/TK.csc0000644000122200012240000000374707110476677016033 0ustar jeffhjeffh00000000000000# # $Id: TK.csc,v 1.1.1.1 2000/05/17 11:08:47 idiscovery Exp $ # proc tixPref:SetScheme-Color:TK {} { global tixOption set tixOption(bg) #d9d9d9 set tixOption(fg) black set tixOption(dark1_bg) #c3c3c3 set tixOption(dark1_fg) black set tixOption(dark2_bg) #a3a3a3 set tixOption(dark2_fg) black set tixOption(inactive_bg) #a3a3a3 set tixOption(inactive_fg) black set tixOption(light1_bg) #ececec set tixOption(light1_fg) white set tixOption(light2_bg) #fcfcfc set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) #d9d9d9 set tixOption(input2_bg) #d9d9d9 set tixOption(output1_bg) $tixOption(dark1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) black set tixOption(select_bg) #c3c3c3 set tixOption(selector) #b03060 } proc tixPref:SetScheme-Mono:TK {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray70 set tixOption(dark1_fg) black set tixOption(dark2_bg) gray60 set tixOption(dark2_fg) white set tixOption(inactive_bg) lightgray set tixOption(inactive_fg) black set tixOption(light1_bg) gray90 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) gray90 set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) $tixOption(light1_bg) set tixOption(input2_bg) $tixOption(light1_bg) set tixOption(output1_bg) $tixOption(light1_bg) set tixOption(output2_bg) $tixOption(light1_bg) set tixOption(select_fg) white set tixOption(select_bg) black set tixOption(selector) black } Tix8.4.3/library/pref/TK.fsc0000644000122200012240000000107107404570215016007 0ustar jeffhjeffh00000000000000# # $Id: TK.fsc,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixPref:InitFontSet:TK {} { global tixOption set tixOption(font) -Adobe-Helvetica-Medium-R-Normal--*-120-* set tixOption(bold_font) -Adobe-Helvetica-Bold-R-Normal--*-120-* set tixOption(menu_font) -Adobe-Helvetica-Bold-R-Normal--*-120-* set tixOption(italic_font) -Adobe-Helvetica-Bold-O-Normal--*-120-* set tixOption(fixed_font) -*-courier-medium-r-*-*-14-*-*-*-*-*-*-* set tixOption(border1) 1 } proc tixPref:SetFontSet:TK {} { global tixOption } Tix8.4.3/library/pref/pkgIndex.tcl0000644000122200012240000000040607423750416017256 0ustar jeffhjeffh00000000000000# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # Tcl package index file, version 1.0 # # $Id: pkgIndex.tcl,v 1.2 2002/01/24 09:17:02 idiscovery Exp $ # package ifneeded wm_default 1.0 [list source [file join $dir WmDefault.tcl]] Tix8.4.3/library/pref/Blue.csc0000644000122200012240000005403007171215400016351 0ustar jeffhjeffh00000000000000# # $Id: Blue.csc,v 1.2 2000/10/12 01:59:28 idiscovery Exp $ # proc tixPref:SetScheme-Color:Blue {} { global tixOption set tixOption(bg) #9090f0 set tixOption(fg) black set tixOption(dark1_bg) #8080d0 set tixOption(dark1_fg) black set tixOption(dark2_bg) #7070c0 set tixOption(dark2_fg) black set tixOption(inactive_bg) #8080da set tixOption(inactive_fg) black set tixOption(light1_bg) #a8a8ff set tixOption(light1_fg) black set tixOption(light2_bg) #c0c0ff set tixOption(light2_fg) black set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray25 set tixOption(input1_bg) $tixOption(light1_bg) set tixOption(input2_bg) $tixOption(bg) set tixOption(output1_bg) $tixOption(light1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) white set tixOption(select_bg) black set tixOption(selector) yellow option add *background $tixOption(bg) 10 option add *Background $tixOption(bg) $tixOption(prioLevel) option add *background $tixOption(bg) $tixOption(prioLevel) option add *Foreground $tixOption(fg) $tixOption(prioLevel) option add *foreground $tixOption(fg) $tixOption(prioLevel) option add *activeBackground $tixOption(active_bg) $tixOption(prioLevel) option add *activeForeground $tixOption(active_fg) $tixOption(prioLevel) option add *HighlightBackground $tixOption(bg) $tixOption(prioLevel) option add *selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *selectBorderWidth 0 $tixOption(prioLevel) option add *Menu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *TixMenu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Checkbutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Radiobutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) option add *TixBalloon*background #ffff60 $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.seperatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground black $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground black $tixOption(prioLevel) } proc tixPref:SetScheme-Mono:Blue {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray70 set tixOption(dark1_fg) black set tixOption(dark2_bg) gray60 set tixOption(dark2_fg) white set tixOption(inactive_bg) lightgray set tixOption(inactive_fg) black set tixOption(light1_bg) gray90 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) gray90 set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) $tixOption(light1_bg) set tixOption(input2_bg) $tixOption(light1_bg) set tixOption(output1_bg) $tixOption(light1_bg) set tixOption(output2_bg) $tixOption(light1_bg) set tixOption(select_fg) white set tixOption(select_bg) black set tixOption(selector) black option add *background $tixOption(bg) 10 option add *Background $tixOption(bg) $tixOption(prioLevel) option add *background $tixOption(bg) $tixOption(prioLevel) option add *Foreground $tixOption(fg) $tixOption(prioLevel) option add *foreground $tixOption(fg) $tixOption(prioLevel) option add *activeBackground $tixOption(active_bg) $tixOption(prioLevel) option add *activeForeground $tixOption(active_fg) $tixOption(prioLevel) option add *HighlightBackground $tixOption(bg) $tixOption(prioLevel) option add *selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *selectBorderWidth 0 $tixOption(prioLevel) option add *Menu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *TixMenu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Checkbutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Radiobutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) option add *TixBalloon*background #ffff60 $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.seperatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground black $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground black $tixOption(prioLevel) } Tix8.4.3/library/pref/14Point.fs0000644000122200012240000000117707404570215016573 0ustar jeffhjeffh00000000000000# # $Id: 14Point.fs,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixSetFontset {} { global tixOption tcl_platform switch -- $tcl_platform(platform) "windows" { # This should be Tahoma for Win2000/XP set font "MS Sans Serif" set fixedfont "Courier New" } unix { set font "helvetica" set fixedfont "courier" } set tixOption(font) [list $font -14] set tixOption(bold_font) [list $font -14 bold] set tixOption(menu_font) [list $font -14] set tixOption(italic_font) [list $font -14 bold italic] set tixOption(fixed_font) [list $fixedfont -14] set tixOption(border1) 1 } Tix8.4.3/library/pref/Bisque.csc0000644000122200012240000005401307171215361016721 0ustar jeffhjeffh00000000000000# # $Id: Bisque.csc,v 1.2 2000/10/12 01:59:13 idiscovery Exp $ # proc tixPref:SetScheme-Color:Bisque {} { global tixOption set tixOption(bg) bisque1 set tixOption(fg) black set tixOption(dark1_bg) bisque2 set tixOption(dark1_fg) black set tixOption(dark2_bg) bisque3 set tixOption(dark2_fg) black set tixOption(inactive_bg) bisque3 set tixOption(inactive_fg) black set tixOption(light1_bg) bisque1 set tixOption(light1_fg) white set tixOption(light2_bg) bisque1 set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) bisque2 set tixOption(input2_bg) bisque2 set tixOption(output1_bg) $tixOption(dark1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) black set tixOption(select_bg) bisque2 set tixOption(selector) #b03060 option add *background $tixOption(bg) 10 option add *Background $tixOption(bg) $tixOption(prioLevel) option add *background $tixOption(bg) $tixOption(prioLevel) option add *Foreground $tixOption(fg) $tixOption(prioLevel) option add *foreground $tixOption(fg) $tixOption(prioLevel) option add *activeBackground $tixOption(active_bg) $tixOption(prioLevel) option add *activeForeground $tixOption(active_fg) $tixOption(prioLevel) option add *HighlightBackground $tixOption(bg) $tixOption(prioLevel) option add *selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *selectBorderWidth 0 $tixOption(prioLevel) option add *Menu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *TixMenu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Checkbutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Radiobutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) option add *TixBalloon*background #ffff60 $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.seperatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground black $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground black $tixOption(prioLevel) } proc tixPref:SetScheme-Mono:Bisque {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray70 set tixOption(dark1_fg) black set tixOption(dark2_bg) gray60 set tixOption(dark2_fg) white set tixOption(inactive_bg) lightgray set tixOption(inactive_fg) black set tixOption(light1_bg) gray90 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) gray90 set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) $tixOption(light1_bg) set tixOption(input2_bg) $tixOption(light1_bg) set tixOption(output1_bg) $tixOption(light1_bg) set tixOption(output2_bg) $tixOption(light1_bg) set tixOption(select_fg) white set tixOption(select_bg) black set tixOption(selector) black option add *background $tixOption(bg) 10 option add *Background $tixOption(bg) $tixOption(prioLevel) option add *background $tixOption(bg) $tixOption(prioLevel) option add *Foreground $tixOption(fg) $tixOption(prioLevel) option add *foreground $tixOption(fg) $tixOption(prioLevel) option add *activeBackground $tixOption(active_bg) $tixOption(prioLevel) option add *activeForeground $tixOption(active_fg) $tixOption(prioLevel) option add *HighlightBackground $tixOption(bg) $tixOption(prioLevel) option add *selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *selectBorderWidth 0 $tixOption(prioLevel) option add *Menu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *TixMenu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Checkbutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Radiobutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) option add *TixBalloon*background #ffff60 $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.seperatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground black $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground black $tixOption(prioLevel) } Tix8.4.3/library/pref/TkWin.cs0000644000122200012240000000430607171213260016356 0ustar jeffhjeffh00000000000000# # $Id: TkWin.cs,v 1.1 2000/10/12 01:41:04 idiscovery Exp $ # proc tixSetScheme-Color {} { global tixOption set tixOption(bg) SystemButtonFace set tixOption(fg) SystemButtonText set tixOption(dark1_bg) SystemScrollbar set tixOption(dark1_fg) SystemButtonText # set tixOption(dark2_bg) SystemDisabledText # set tixOption(dark2_fg) black set tixOption(inactive_bg) SystemButtonFace set tixOption(inactive_fg) SystemButtonText set tixOption(light1_bg) SystemButtonFace # set tixOption(light1_fg) white # set tixOption(light2_bg) #fcfcfc # set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) SystemDisabledText set tixOption(input1_bg) SystemWindow # set tixOption(input2_bg) # set tixOption(output1_bg) $tixOption(dark1_bg) # set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) SystemHighlightText set tixOption(select_bg) SystemHighlight set tixOption(selector) SystemHighlight } proc tixSetScheme-Mono {} { global tixOption set tixOption(bg) SystemButtonFace set tixOption(fg) SystemButtonText set tixOption(dark1_bg) SystemScrollbar set tixOption(dark1_fg) SystemButtonText # set tixOption(dark2_bg) SystemDisabledText # set tixOption(dark2_fg) black set tixOption(inactive_bg) SystemButtonFace set tixOption(inactive_fg) SystemButtonText set tixOption(light1_bg) SystemButtonFace # set tixOption(light1_fg) white # set tixOption(light2_bg) #fcfcfc # set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) SystemDisabledText set tixOption(input1_bg) white # set tixOption(input2_bg) # set tixOption(output1_bg) $tixOption(dark1_bg) # set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) SystemHighlightText set tixOption(select_bg) SystemHighlight set tixOption(selector) SystemHighlight } Tix8.4.3/library/pref/TkWin.fs0000644000122200012240000000060607404570215016365 0ustar jeffhjeffh00000000000000# # $Id: TkWin.fs,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixSetFontset {} { global tixOption set tixOption(font) "windows-message" set tixOption(bold_font) "windows-status" set tixOption(menu_font) "windows-menu" set tixOption(italic_font) "windows-message" set tixOption(fixed_font) "systemfixed" set tixOption(border1) 1 } Tix8.4.3/library/pref/TixGray.csc0000644000122200012240000005401307171215471017062 0ustar jeffhjeffh00000000000000# # $Id: TixGray.csc,v 1.2 2000/10/12 02:00:25 idiscovery Exp $ # proc tixPref:SetScheme-Color:TixGray {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray86 set tixOption(dark1_fg) black set tixOption(dark2_bg) gray77 set tixOption(dark2_fg) black set tixOption(inactive_bg) gray77 set tixOption(inactive_fg) black set tixOption(light1_bg) gray92 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) gray95 set tixOption(input2_bg) gray95 set tixOption(output1_bg) $tixOption(dark1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) black set tixOption(select_bg) lightblue set tixOption(selector) yellow option add *background $tixOption(bg) 10 option add *Background $tixOption(bg) $tixOption(prioLevel) option add *background $tixOption(bg) $tixOption(prioLevel) option add *Foreground $tixOption(fg) $tixOption(prioLevel) option add *foreground $tixOption(fg) $tixOption(prioLevel) option add *activeBackground $tixOption(active_bg) $tixOption(prioLevel) option add *activeForeground $tixOption(active_fg) $tixOption(prioLevel) option add *HighlightBackground $tixOption(bg) $tixOption(prioLevel) option add *selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *selectBorderWidth 0 $tixOption(prioLevel) option add *Menu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *TixMenu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Checkbutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Radiobutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) option add *TixBalloon*background #ffff60 $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.seperatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground black $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground black $tixOption(prioLevel) } proc tixPref:SetScheme-Mono:TixGray {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray70 set tixOption(dark1_fg) black set tixOption(dark2_bg) gray60 set tixOption(dark2_fg) white set tixOption(inactive_bg) lightgray set tixOption(inactive_fg) black set tixOption(light1_bg) gray90 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) gray90 set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) $tixOption(light1_bg) set tixOption(input2_bg) $tixOption(light1_bg) set tixOption(output1_bg) $tixOption(light1_bg) set tixOption(output2_bg) $tixOption(light1_bg) set tixOption(select_fg) white set tixOption(select_bg) black set tixOption(selector) black option add *background $tixOption(bg) 10 option add *Background $tixOption(bg) $tixOption(prioLevel) option add *background $tixOption(bg) $tixOption(prioLevel) option add *Foreground $tixOption(fg) $tixOption(prioLevel) option add *foreground $tixOption(fg) $tixOption(prioLevel) option add *activeBackground $tixOption(active_bg) $tixOption(prioLevel) option add *activeForeground $tixOption(active_fg) $tixOption(prioLevel) option add *HighlightBackground $tixOption(bg) $tixOption(prioLevel) option add *selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *selectBorderWidth 0 $tixOption(prioLevel) option add *Menu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *TixMenu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Checkbutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Radiobutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) option add *TixBalloon*background #ffff60 $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.seperatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground black $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground black $tixOption(prioLevel) } Tix8.4.3/library/pref/Bisque.cs0000644000122200012240000000200407110476677016563 0ustar jeffhjeffh00000000000000# # $Id: Bisque.cs,v 1.1.1.1 2000/05/17 11:08:47 idiscovery Exp $ # proc tixSetScheme-Color {} { global tixOption set tixOption(bg) bisque1 set tixOption(fg) black set tixOption(dark1_bg) bisque2 set tixOption(dark1_fg) black set tixOption(dark2_bg) bisque3 set tixOption(dark2_fg) black set tixOption(inactive_bg) bisque3 set tixOption(inactive_fg) black set tixOption(light1_bg) bisque1 set tixOption(light1_fg) white set tixOption(light2_bg) bisque1 set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) bisque2 set tixOption(input2_bg) bisque2 set tixOption(output1_bg) $tixOption(dark1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) black set tixOption(select_bg) bisque2 set tixOption(selector) #b03060 } Tix8.4.3/library/pref/14Point.fsc0000644000122200012240000000407107404570215016732 0ustar jeffhjeffh00000000000000# # $Id: 14Point.fsc,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixPref:InitFontSet:14Point {} { global tixOption tcl_platform switch -- $tcl_platform(platform) "windows" { if {$tcl_platform(osVersion) < 5} { set font "MS Sans Serif" } else { set font "Tahoma" } set fixedfont "Courier New" set bd 1 } unix { set font "helvetica" set fixedfont "courier" set bd 2 } set tixOption(font) [list $font -14] set tixOption(bold_font) [list $font -14 bold] set tixOption(menu_font) [list $font -14] set tixOption(italic_font) [list $font -14 bold italic] set tixOption(fixed_font) [list $fixedfont -14] set tixOption(border1) $bd } proc tixPref:SetFontSet:14Point {} { global tixOption option add *Font $tixOption(font) $tixOption(prioLevel) option add *font $tixOption(font) $tixOption(prioLevel) option add *Menu.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixMenu.font $tixOption(menu_font) $tixOption(prioLevel) option add *Menubutton.font $tixOption(menu_font) $tixOption(prioLevel) option add *Label.font $tixOption(bold_font) $tixOption(prioLevel) option add *Scale.font $tixOption(italic_font) $tixOption(prioLevel) option add *TixBalloon*Label.font $tixOption(font) $tixOption(prioLevel) option add *TixBitmapButton*label.font $tixOption(font) $tixOption(prioLevel) option add *TixControl*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixLabelEntry*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixLabelFrame*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixMwmClient*title.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixNoteBook.nbframe.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixOptionMenu*menubutton.font $tixOption(font) $tixOption(prioLevel) option add *TixComboBox*Entry.font $tixOption(font) $tixOption(prioLevel) option add *TixFileSelectBox*Label.font $tixOption(bold_font) $tixOption(prioLevel) } Tix8.4.3/library/pref/10Point.fsc0000644000122200012240000000377607423750416016745 0ustar jeffhjeffh00000000000000# # $Id: 10Point.fsc,v 1.2 2002/01/24 09:17:02 idiscovery Exp $ # proc tixPref:InitFontSet:10Point {} { global tixOption tcl_platform switch -- $tcl_platform(platform) "windows" { # This should be Tahoma for Win2000/XP set font "MS Sans Sherif" set fixedfont "Courier New" } unix { set font "helvetica" set fixedfont "courier" } set tixOption(font) [list $font -10] set tixOption(bold_font) [list $font -10 bold] set tixOption(menu_font) [list $font -10] set tixOption(italic_font) [list $font -10 bold italic] set tixOption(fixed_font) [list $fixedfont -10] set tixOption(border1) 1 } proc tixPref:SetFontSet:10Point {} { global tixOption option add *Font $tixOption(font) $tixOption(prioLevel) option add *font $tixOption(font) $tixOption(prioLevel) option add *Menu.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixMenu.font $tixOption(menu_font) $tixOption(prioLevel) option add *Menubutton.font $tixOption(menu_font) $tixOption(prioLevel) option add *Label.font $tixOption(bold_font) $tixOption(prioLevel) option add *Scale.font $tixOption(italic_font) $tixOption(prioLevel) option add *TixBalloon*Label.font $tixOption(font) $tixOption(prioLevel) option add *TixBitmapButton*label.font $tixOption(font) $tixOption(prioLevel) option add *TixControl*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixLabelEntry*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixLabelFrame*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixMwmClient*title.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixNoteBook.nbframe.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixOptionMenu*menubutton.font $tixOption(font) $tixOption(prioLevel) option add *TixComboBox*Entry.font $tixOption(font) $tixOption(prioLevel) option add *TixFileSelectBox*Label.font $tixOption(bold_font) $tixOption(prioLevel) } Tix8.4.3/library/pref/SGIGray.cs0000644000122200012240000000200207110476677016576 0ustar jeffhjeffh00000000000000# # $Id: SGIGray.cs,v 1.1.1.1 2000/05/17 11:08:47 idiscovery Exp $ # proc tixSetScheme-Color {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray set tixOption(dark1_fg) black set tixOption(dark2_bg) gray50 set tixOption(dark2_fg) black set tixOption(inactive_bg) gray50 set tixOption(inactive_fg) black set tixOption(light1_bg) gray90 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray35 set tixOption(input1_bg) rosybrown set tixOption(input2_bg) rosybrown set tixOption(output1_bg) $tixOption(dark1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) black set tixOption(select_bg) lightblue set tixOption(selector) yellow } Tix8.4.3/library/pref/Gray.csc0000644000122200012240000005403007171215420016366 0ustar jeffhjeffh00000000000000# # $Id: Gray.csc,v 1.2 2000/10/12 01:59:44 idiscovery Exp $ # proc tixPref:SetScheme-Color:Gray {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray set tixOption(dark1_fg) black set tixOption(dark2_bg) gray50 set tixOption(dark2_fg) black set tixOption(inactive_bg) gray50 set tixOption(inactive_fg) black set tixOption(light1_bg) gray90 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) $tixOption(dark1_bg) set tixOption(input2_bg) $tixOption(bg) set tixOption(output1_bg) $tixOption(dark1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) black set tixOption(select_bg) lightblue set tixOption(selector) yellow option add *background $tixOption(bg) 10 option add *Background $tixOption(bg) $tixOption(prioLevel) option add *background $tixOption(bg) $tixOption(prioLevel) option add *Foreground $tixOption(fg) $tixOption(prioLevel) option add *foreground $tixOption(fg) $tixOption(prioLevel) option add *activeBackground $tixOption(active_bg) $tixOption(prioLevel) option add *activeForeground $tixOption(active_fg) $tixOption(prioLevel) option add *HighlightBackground $tixOption(bg) $tixOption(prioLevel) option add *selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *selectBorderWidth 0 $tixOption(prioLevel) option add *Menu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *TixMenu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Checkbutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Radiobutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) option add *TixBalloon*background #ffff60 $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.seperatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground black $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground black $tixOption(prioLevel) } proc tixPref:SetScheme-Mono:Gray {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray70 set tixOption(dark1_fg) black set tixOption(dark2_bg) gray60 set tixOption(dark2_fg) white set tixOption(inactive_bg) lightgray set tixOption(inactive_fg) black set tixOption(light1_bg) gray90 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) gray90 set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) $tixOption(light1_bg) set tixOption(input2_bg) $tixOption(light1_bg) set tixOption(output1_bg) $tixOption(light1_bg) set tixOption(output2_bg) $tixOption(light1_bg) set tixOption(select_fg) white set tixOption(select_bg) black set tixOption(selector) black option add *background $tixOption(bg) 10 option add *Background $tixOption(bg) $tixOption(prioLevel) option add *background $tixOption(bg) $tixOption(prioLevel) option add *Foreground $tixOption(fg) $tixOption(prioLevel) option add *foreground $tixOption(fg) $tixOption(prioLevel) option add *activeBackground $tixOption(active_bg) $tixOption(prioLevel) option add *activeForeground $tixOption(active_fg) $tixOption(prioLevel) option add *HighlightBackground $tixOption(bg) $tixOption(prioLevel) option add *selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *selectBorderWidth 0 $tixOption(prioLevel) option add *Menu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *TixMenu.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Checkbutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Radiobutton.selectColor $tixOption(selector) $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) option add *TixBalloon*background #ffff60 $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.seperatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground black $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground black $tixOption(prioLevel) } Tix8.4.3/library/pref/TixGray.cs0000644000122200012240000000200207110476677016720 0ustar jeffhjeffh00000000000000# # $Id: TixGray.cs,v 1.1.1.1 2000/05/17 11:08:47 idiscovery Exp $ # proc tixSetScheme-Color {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray86 set tixOption(dark1_fg) black set tixOption(dark2_bg) gray77 set tixOption(dark2_fg) black set tixOption(inactive_bg) gray77 set tixOption(inactive_fg) black set tixOption(light1_bg) gray92 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) gray95 set tixOption(input2_bg) gray95 set tixOption(output1_bg) $tixOption(dark1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) black set tixOption(select_bg) lightblue set tixOption(selector) yellow } Tix8.4.3/library/pref/TkWin.csc0000644000122200012240000005343607423750346016544 0ustar jeffhjeffh00000000000000# # $Id: TkWin.csc,v 1.2 2002/01/24 09:16:22 idiscovery Exp $ # proc tixPref:SetScheme-Color:TkWin {} { global tixOption set tixOption(bg) SystemButtonFace set tixOption(fg) SystemButtonText set tixOption(dark1_bg) SystemScrollbar set tixOption(dark1_fg) SystemButtonText # set tixOption(dark2_bg) SystemDisabledText # set tixOption(dark2_fg) black set tixOption(inactive_bg) SystemButtonFace set tixOption(inactive_fg) SystemButtonText set tixOption(light1_bg) SystemButtonFace # set tixOption(light1_fg) white # set tixOption(light2_bg) #fcfcfc # set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) SystemDisabledText set tixOption(input1_bg) SystemWindow # set tixOption(input2_bg) # set tixOption(output1_bg) $tixOption(dark1_bg) # set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) SystemHighlightText set tixOption(select_bg) SystemHighlight set tixOption(selector) SystemHighlight option add *TixBalloon*background "#ffff60" $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.separatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground SystemWindowText $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground SystemWindowText $tixOption(prioLevel) option add *TixComboBox*Entry.selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *TixComboBox*TixScrolledListBox.selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *TixComboBox*TixScrolledListBox.selectForeground $tixOption(select_fg) $tixOption(prioLevel) } # Leave the standard widgets alone if {0} { option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) } proc tixPref:SetScheme-Mono:TkWin {} { global tixOption set tixOption(bg) SystemButtonFace set tixOption(fg) SystemButtonText set tixOption(dark1_bg) SystemScrollbar set tixOption(dark1_fg) SystemButtonText # set tixOption(dark2_bg) SystemDisabledText # set tixOption(dark2_fg) black set tixOption(inactive_bg) SystemButtonFace set tixOption(inactive_fg) SystemButtonText set tixOption(light1_bg) SystemButtonFace # set tixOption(light1_fg) white # set tixOption(light2_bg) #fcfcfc # set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) SystemDisabledText set tixOption(input1_bg) white # set tixOption(input2_bg) # set tixOption(output1_bg) $tixOption(dark1_bg) # set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) SystemHighlightText set tixOption(select_bg) SystemHighlight set tixOption(selector) SystemHighlight option add *TixBalloon*background "#ffff60" $tixOption(prioLevel) option add *TixBalloon*foreground black $tixOption(prioLevel) option add *TixBalloon.background black $tixOption(prioLevel) option add *TixBalloon*Label.anchor w $tixOption(prioLevel) option add *TixControl*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixControl*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixControl*entry.foreground black $tixOption(prioLevel) option add *TixControl*entry.insertBackground black $tixOption(prioLevel) option add *TixDirTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirTree*hlist.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.activeBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirTree*hlist.disabledBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirTree*f1.relief sunken $tixOption(prioLevel) option add *TixDirList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixDirList*hlist.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.activeBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirList*hlist.disabledBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixDirList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixDirList*f1.relief sunken $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.activeBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.disabledBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixScrolledHList*f1.borderWidth 1 $tixOption(prioLevel) option add *TixScrolledHList*f1.relief sunken $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixTree*hlist.activeBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixTree*hlist.disabledBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixTree*f1.borderWidth 1 $tixOption(prioLevel) option add *TixTree*f1.relief sunken $tixOption(prioLevel) option add *TixFileEntry*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixHList.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.activeBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixHList.disabledBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixLabelEntry*entry.foreground black $tixOption(prioLevel) option add *TixLabelEntry*entry.insertBackground black $tixOption(prioLevel) option add *TixMultiList*Listbox.borderWidth 0 $tixOption(prioLevel) option add *TixMultiList*Listbox.highlightThickness 0 $tixOption(prioLevel) option add *TixMultiList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixMultiList*Scrollbar.relief sunken $tixOption(prioLevel) option add *TixMultiList*Scrollbar.width 15 $tixOption(prioLevel) option add *TixMultiList*f1.borderWidth 2 $tixOption(prioLevel) option add *TixMultiList*f1.relief sunken $tixOption(prioLevel) option add *TixMultiList*f1.highlightThickness 2 $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.relief raised $tixOption(prioLevel) option add *TixMDIMenuBar*menubar.borderWidth 2 $tixOption(prioLevel) option add *TixMDIMenuBar*Menubutton.padY 2 $tixOption(prioLevel) option add *TixNoteBook.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.Background $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.backPageColor $tixOption(bg) $tixOption(prioLevel) option add *TixNoteBook.nbframe.inactiveBackground $tixOption(inactive_bg) $tixOption(prioLevel) option add *TixPanedWindow.handleActiveBg $tixOption(active_bg) $tixOption(prioLevel) option add *TixPanedWindow.separatorBg $tixOption(bg) $tixOption(prioLevel) option add *TixPanedWindow.handleBg $tixOption(bg) $tixOption(prioLevel) option add *TixPopupMenu*menubutton.background $tixOption(dark1_bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledHList*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledTList*tlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledListBox*listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledText.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledText*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixScrolledWindow*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixScrolledWindow.frame.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *TixTree*Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *TixTree*hlist.background $tixOption(light1_bg) $tixOption(prioLevel) option add *TixTree*hlist.borderWidth 1 $tixOption(prioLevel) option add *TixComboBox*Entry.highlightBackground $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.foreground SystemWindowText $tixOption(prioLevel) option add *TixComboBox*Entry.insertBackground SystemWindowText $tixOption(prioLevel) option add *TixComboBox*Entry.selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *TixComboBox*Entry.selectForeground $tixOption(select_fg) $tixOption(prioLevel) option add *TixComboBox*TixScrolledListBox.selectBackground $tixOption(select_bg) $tixOption(prioLevel) option add *TixComboBox*TixScrolledListBox.selectForeground $tixOption(select_fg) $tixOption(prioLevel) } # Leave the standard widgets alone if {0} { option add *Menubutton.padY 5 $tixOption(prioLevel) option add *Button.borderWidth 2 $tixOption(prioLevel) option add *Button.anchor c $tixOption(prioLevel) option add *Entry.relief sunken $tixOption(prioLevel) option add *Entry.highlightBackground $tixOption(bg) $tixOption(prioLevel) option add *Entry.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Entry.foreground black $tixOption(prioLevel) option add *Entry.insertBackground black $tixOption(prioLevel) option add *Label.anchor w $tixOption(prioLevel) option add *Label.borderWidth 0 $tixOption(prioLevel) option add *Listbox.background $tixOption(light1_bg) $tixOption(prioLevel) option add *Listbox.relief sunken $tixOption(prioLevel) option add *Scale.foreground $tixOption(fg) $tixOption(prioLevel) option add *Scale.activeForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.background $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderForeground $tixOption(bg) $tixOption(prioLevel) option add *Scale.sliderBackground $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.background $tixOption(bg) $tixOption(prioLevel) option add *Scrollbar.troughColor $tixOption(light1_bg) $tixOption(prioLevel) option add *Scrollbar.relief sunken $tixOption(prioLevel) option add *Scrollbar.borderWidth 1 $tixOption(prioLevel) option add *Scrollbar.width 15 $tixOption(prioLevel) option add *Text.background $tixOption(input1_bg) $tixOption(prioLevel) option add *Text.relief sunken $tixOption(prioLevel) } Tix8.4.3/library/pref/TkWin.fsc0000644000122200012240000000321207404570215016524 0ustar jeffhjeffh00000000000000# # $Id: TkWin.fsc,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ # proc tixPref:InitFontSet:TkWin {} { global tixOption set tixOption(font) "windows-message" set tixOption(bold_font) "windows-status" set tixOption(menu_font) "windows-menu" set tixOption(italic_font) "windows-message" set tixOption(fixed_font) "systemfixed" set tixOption(border1) 1 } proc tixPref:SetFontSet:TkWin {} { global tixOption option add *Menu.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixMenu.font $tixOption(menu_font) $tixOption(prioLevel) option add *Menubutton.font $tixOption(menu_font) $tixOption(prioLevel) option add *Label.font $tixOption(bold_font) $tixOption(prioLevel) option add *Scale.font $tixOption(italic_font) $tixOption(prioLevel) option add *TixBalloon*Label.font $tixOption(font) $tixOption(prioLevel) option add *TixBitmapButton*label.font $tixOption(font) $tixOption(prioLevel) option add *TixControl*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixLabelEntry*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixLabelFrame*label.font $tixOption(bold_font) $tixOption(prioLevel) option add *TixMwmClient*title.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixNoteBook.nbframe.font $tixOption(menu_font) $tixOption(prioLevel) option add *TixOptionMenu*menubutton.font $tixOption(font) $tixOption(prioLevel) option add *TixComboBox*Entry.font $tixOption(font) $tixOption(prioLevel) option add *TixFileSelectBox*Label.font $tixOption(bold_font) $tixOption(prioLevel) } Tix8.4.3/library/pref/tixmkpref0000664000122200012240000002266310761632025016742 0ustar jeffhjeffh00000000000000#!/usr/local/bin/tclsh # Undocumented program. Don't use it. # # Usage: # # tixmkpref option name.src > name.tcl # proc tixDefOption {classes specs {level \$tixOption(prioLevel)}} { global isFont tixOption foreach class $classes { foreach spec $specs { if [regexp (Font)|(font) $spec] { if {$isFont} { puts "option add *$class$spec $level" } } else { if {!$isFont} { set aspec [subst $spec] puts "option add *$class$spec $level" } } } } } proc option {classes specs {level \$tixOption(prioLevel)}} { tixDefOption $classes $specs $level } proc tixInitOptionDatabase {strictTK} { global tixOption isFont # general stuff, everything gets these defaults unless otherwise specified #------------------------------------------------------------------------- tixDefOption {""} {{Font $tixOption(font)}} tixDefOption {""} {{font $tixOption(font)}} tixDefOption {""} {{background $tixOption(bg)}} 10 tixDefOption {""} {{Background $tixOption(bg)}} tixDefOption {""} {{background $tixOption(bg)}} tixDefOption {""} {{Foreground $tixOption(fg)}} tixDefOption {""} {{foreground $tixOption(fg)}} tixDefOption {""} {{activeBackground $tixOption(active_bg)}} tixDefOption {""} {{activeForeground $tixOption(active_fg)}} tixDefOption {""} {{HighlightBackground $tixOption(bg)}} tixDefOption {""} {{selectBackground $tixOption(select_bg)}} tixDefOption {""} {{selectForeground $tixOption(select_fg)}} tixDefOption {""} {{selectBorderWidth 0}} #---------------------------------------- # Standard TK Widget Options # # We set up the options for the TK widgets only if # the strictTK option is not selected. #---------------------------------------- tixDefOption {Menu TixMenu} { {.font $tixOption(menu_font)} {.selectColor $tixOption(selector)} } tixDefOption {Menubutton} { {.font $tixOption(menu_font)} {.padY 5} } tixDefOption {Button} { {.borderWidth 2} {.anchor c} } tixDefOption {Checkbutton Radiobutton} { {.selectColor $tixOption(selector)} } tixDefOption {Entry} { {.relief sunken} {.highlightBackground $tixOption(bg)} {.background $tixOption(input1_bg)} {.foreground black} {.insertBackground black} } tixDefOption {Label} { {.anchor w} {.borderWidth 0} {.font $tixOption(bold_font)} } tixDefOption {Listbox} { {.background $tixOption(light1_bg)} {.relief sunken} } tixDefOption {Scale} { {.foreground $tixOption(fg)} {.activeForeground $tixOption(bg)} {.background $tixOption(bg)} {.sliderForeground $tixOption(bg)} {.sliderBackground $tixOption(light1_bg)} {.font $tixOption(italic_font)} } tixDefOption {Scrollbar} { {.background $tixOption(bg)} {.troughColor $tixOption(light1_bg)} {.relief sunken} {.borderWidth 1} {.width 15} } tixDefOption {Text} { {.background $tixOption(input1_bg)} {.relief sunken} } #---------------------------------------------------------------------- # TIX WIDGETS #---------------------------------------------------------------------- tixDefOption {TixBalloon} { {*background #ffff60} {*foreground black} {.background black} {*Label.font $tixOption(font)} {*Label.anchor w} } tixDefOption {TixBitmapButton} { {*label.font $tixOption(font)} } tixDefOption {TixControl} { {*entry.highlightBackground $tixOption(bg)} {*entry.background $tixOption(input1_bg)} {*entry.foreground black} {*entry.insertBackground black} {*label.font $tixOption(bold_font)} } # DLG_BTNS # tixDefOption {TixStdButtonBox} { } # DIR_LIST # tixDefOption {TixDirTree TixDirList TixScrolledHList TixTree} { {*Scrollbar.background $tixOption(bg)} {*Scrollbar.troughColor $tixOption(light1_bg)} {*hlist.highlightBackground $tixOption(bg)} {*hlist.background $tixOption(light1_bg)} {*hlist.activeBackground $tixOption(light1_bg)} {*hlist.disabledBackground $tixOption(light1_bg)} {*f1.borderWidth 1} {*f1.relief sunken} } tixDefOption {TixFileEntry} { {*Entry.background $tixOption(input1_bg)} } tixDefOption {TixHList} { {.background $tixOption(light1_bg)} {.activeBackground $tixOption(light1_bg)} {.disabledBackground $tixOption(light1_bg)} } tixDefOption {TixLabelEntry} { {*entry.highlightBackground $tixOption(bg)} {*entry.background $tixOption(input1_bg)} {*entry.foreground black} {*entry.insertBackground black} {*label.font $tixOption(bold_font)} } tixDefOption {TixLabelFrame} { {*label.font $tixOption(bold_font)} } tixDefOption {TixMultiList} { {*Listbox.borderWidth 0} {*Listbox.highlightThickness 0} {*Scrollbar.background $tixOption(bg)} {*Scrollbar.troughColor $tixOption(light1_bg)} {*Scrollbar.relief sunken} {*Scrollbar.width 15} {*f1.borderWidth 2} {*f1.relief sunken} {*f1.highlightThickness 2} } # MwmClient # tixDefOption {TixMwmClient} { {*title.font $tixOption(menu_font)} } tixDefOption {TixMDIMenuBar} { {*menubar.relief raised} {*menubar.borderWidth 2} {*Menubutton.padY 2} } # NoteBook # tixDefOption {TixNoteBook} { {.Background $tixOption(bg)} {.nbframe.Background $tixOption(bg)} {.nbframe.font $tixOption(menu_font)} {.nbframe.backPageColor $tixOption(bg)} {.nbframe.inactiveBackground $tixOption(inactive_bg)} } # OPTION_MENU # tixDefOption {TixOptionMenu} { {*menubutton.font $tixOption(font)} } # PANED_WINDOW # tixDefOption {TixPanedWindow} { {.handleActiveBg $tixOption(active_bg)} {.seperatorBg $tixOption(bg)} {.handleBg $tixOption(dark1_bg)} } # POPUP MENU # tixDefOption {TixPopupMenu} { {*menubutton.background $tixOption(dark1_bg)} } # SCROLLED_HLIST # tixDefOption {TixScrolledHList} { {*Scrollbar.background $tixOption(bg)} {*Scrollbar.troughColor $tixOption(light1_bg)} {*hlist.highlightBackground $tixOption(bg)} {*hlist.background $tixOption(light1_bg)} } tixDefOption {TixScrolledTList} { {*Scrollbar.background $tixOption(bg)} {*Scrollbar.troughColor $tixOption(light1_bg)} {*tlist.highlightBackground $tixOption(bg)} {*tlist.background $tixOption(light1_bg)} } # SCROLLED_LISTBOX, .. ETC # tixDefOption {TixScrolledListBox} { {*Scrollbar.background $tixOption(bg)} {*Scrollbar.troughColor $tixOption(light1_bg)} {*listbox.highlightBackground $tixOption(bg)} {*listbox.background $tixOption(light1_bg)} } tixDefOption {TixScrolledText} { {*Scrollbar.background $tixOption(bg)} {*Scrollbar.troughColor $tixOption(light1_bg)} } # SCROLLED_WINDOW # tixDefOption {TixScrolledWindow} { {*Scrollbar.background $tixOption(bg)} {*Scrollbar.troughColor $tixOption(light1_bg)} {.frame.background $tixOption(light1_bg)} } # SELECT # tixDefOption {TixSelect} { } tixDefOption {TixTree} { {*Scrollbar.background $tixOption(bg)} {*Scrollbar.troughColor $tixOption(light1_bg)} {*hlist.highlightBackground $tixOption(bg)} {*hlist.background $tixOption(light1_bg)} {*hlist.borderWidth 1} } # NON ALPHABETICAL ORDER WIDGETS # Since TK's option database follows the order-of-declaration rule, not # specific-vs-general rule, the options of the widgets below depends on # the options of the widget above, so their options must be defined here # COMBOBOX tixDefOption {TixComboBox} { {*Entry.font $tixOption(font)} {*Entry.highlightBackground $tixOption(bg)} {*Entry.background $tixOption(input1_bg)} {*Entry.foreground black} {*Entry.insertBackground black} } # FILE_SELECT_BOX # tixDefOption {TixFileSelectBox} { {*Label.font $tixOption(bold_font)} } tixDefOption {TixExFileSelectBox} { } } #---------------------------------------------------------------------- # The default fontset and schemes # #---------------------------------------------------------------------- source ../DefSchm.tcl rename tixSetDefaultFontset tixSetFontset rename tixSetDefaultScheme-Color tixSetScheme-Color rename tixSetDefaultScheme-Mono tixSetScheme-Mono #---------------------------------------------------------------------- # Action: #---------------------------------------------------------------------- if [string match TK* [lindex $argv 1]] { set isTK 1 } else { set isTK 0 } set schemeName [lindex [split [lindex $argv 1] "."] 0] source [lindex $argv 1] tixSetFontset if {[lindex $argv 0] == "-font"} { set isFont 1 # FontSets will be set in two steps. # (1) init fontsets # ... tix checks the validity of the fonts ... # (2) add the fontsets into the option database. # puts "proc tixPref:InitFontSet:$schemeName {} { " puts [info body tixSetFontset] puts "}" puts "proc tixPref:SetFontSet:$schemeName {} { " puts "global tixOption" if {! $isTK} { tixInitOptionDatabase 0 } puts "}" } else { set isFont 0 # Do the Color First # puts "proc tixPref:SetScheme-Color:$schemeName {} {" puts [info body tixSetScheme-Color] if {! $isTK} { tixSetScheme-Color tixInitOptionDatabase 0 } puts "}" # Now Do the Mono # puts "proc tixPref:SetScheme-Mono:$schemeName {} {" puts [info body tixSetScheme-Mono] if {! $isTK} { tixSetScheme-Mono tixInitOptionDatabase 0 } puts "}" } Tix8.4.3/library/pref/10Point.fs0000644000122200012240000000120107423750416016557 0ustar jeffhjeffh00000000000000# # $Id: 10Point.fs,v 1.2 2002/01/24 09:17:02 idiscovery Exp $ # proc tixSetFontset {} { global tixOption tcl_platform switch -- $tcl_platform(platform) "windows" { # This should be Tahoma for Win2000/XP set font "MS Sans Sherif" set fixedfont "Courier New" } unix { set font "helvetica" set fixedfont "courier" } set tixOption(font) [list $font -10] set tixOption(bold_font) [list $font -10 bold] set tixOption(menu_font) [list $font -10] set tixOption(italic_font) [list $font -10 bold italic] set tixOption(fixed_font) [list $fixedfont -10] set tixOption(border1) 1 } Tix8.4.3/library/pref/Gray.cs0000644000122200012240000000202507110476677016240 0ustar jeffhjeffh00000000000000# # $Id: Gray.cs,v 1.1.1.1 2000/05/17 11:08:47 idiscovery Exp $ # proc tixSetScheme-Color {} { global tixOption set tixOption(bg) lightgray set tixOption(fg) black set tixOption(dark1_bg) gray set tixOption(dark1_fg) black set tixOption(dark2_bg) gray50 set tixOption(dark2_fg) black set tixOption(inactive_bg) gray50 set tixOption(inactive_fg) black set tixOption(light1_bg) gray90 set tixOption(light1_fg) white set tixOption(light2_bg) gray95 set tixOption(light2_fg) white set tixOption(active_bg) $tixOption(dark1_bg) set tixOption(active_fg) $tixOption(fg) set tixOption(disabled_fg) gray55 set tixOption(input1_bg) $tixOption(dark1_bg) set tixOption(input2_bg) $tixOption(bg) set tixOption(output1_bg) $tixOption(dark1_bg) set tixOption(output2_bg) $tixOption(bg) set tixOption(select_fg) black set tixOption(select_bg) lightblue set tixOption(selector) yellow } Tix8.4.3/library/HList.tcl0000644000122200012240000004334410031436051015565 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: HList.tcl,v 1.6 2004/03/28 02:44:57 hobbs Exp $ # # HList.tcl -- # # This file defines the default bindings for Tix Hierarchical Listbox # widgets. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # global tkPriv if {![llength [info globals tkPriv]]} { tk::unsupported::ExposePrivateVariable tkPriv } #-------------------------------------------------------------------------- # tkPriv elements used in this file: # # afterId - Token returned by "after" for autoscanning. # fakeRelease - Cancel the ButtonRelease-1 after the user double click #-------------------------------------------------------------------------- # foreach fun {tkCancelRepeat} { if {![llength [info commands $fun]]} { tk::unsupported::ExposePrivateCommand $fun } } unset fun proc tixHListBind {} { tixBind TixHList { tixHList:Button-1 %W %x %y "" } tixBind TixHList { tixHList:Button-1 %W %x %y s } tixBind TixHList { tixHList:Button-1 %W %x %y c } tixBind TixHList { tixHList:ButtonRelease-1 %W %x %y } tixBind TixHList { tixHList:Double-1 %W %x %y } tixBind TixHList { set tkPriv(x) %x set tkPriv(y) %y set tkPriv(X) %X set tkPriv(Y) %Y tixHList:B1-Motion %W %x %y } tixBind TixHList { set tkPriv(x) %x set tkPriv(y) %y set tkPriv(X) %X set tkPriv(Y) %Y tixHList:B1-Leave %W } tixBind TixHList { tixHList:B1-Enter %W %x %y } # Keyboard bindings # tixBind TixHList { tixHList:UpDown %W prev "" } tixBind TixHList { tixHList:UpDown %W next "" } tixBind TixHList { tixHList:UpDown %W prev s } tixBind TixHList { tixHList:UpDown %W next s } tixBind TixHList { tixHList:LeftRight %W left } tixBind TixHList { tixHList:LeftRight %W right } tixBind TixHList { %W yview scroll -1 pages } tixBind TixHList { %W yview scroll 1 pages } tixBind TixHList { tixHList:Keyboard-Activate %W } tixBind TixHList { tixHList:Keyboard-Browse %W } # Under Windows moves up, clears the sel and sets the selection # Under Windows moves up, leaves the selection, and sets the anchor tixBind TixHList { set w %W $w yview moveto 0; # $w xview moveto 0 set sel [lindex [$w info children] 0] # should be first not disabled $w anchor set $sel tixHList:Keyboard-Browse $w } tixBind TixHList { set w %W $w yview moveto 1; # $w xview moveto 0 $w select clear # should be last not disabled set sel [lindex [$w info children .] end] while {[set next [$w info next $sel]] ne "" && \ ![$w info hidden $next] && \ [llength [set kids [$w info child $sel]]]} { set sel [lindex $kids end] } $w anchor set $sel tixHList:Keyboard-Browse $w } tixBind TixHList { set w %W $w yview moveto 0; # $w xview moveto 0 set sel [lindex [$w info children] 0] # should be first not disabled $w anchor set $sel } tixBind TixHList { set w %W $w yview moveto 1; # $w xview moveto 0 # should be last not disabled set sel [lindex [$w info children .] end] while {[set next [$w info next $sel]] ne "" && \ ![$w info hidden $next] && \ [llength [set kids [$w info child $sel]]]} { set sel [lindex $kids end] } $w anchor set $sel } # # Don't use tixBind because %A causes Tk 8.3.2 to crash # bind TixHList { %W yview scroll [expr {- (%D / 120) * 2}] units } } #---------------------------------------------------------------------- # # # Key bindings # # #---------------------------------------------------------------------- proc tixHList:Keyboard-Activate {w} { if {[tixHList:GetState $w] != 0} { return } set ent [$w info anchor] if {$ent eq ""} { return } if {[$w cget -selectmode] eq "single"} { $w select clear } $w select set $ent set command [$w cget -command] if {$command ne ""} { set bind(specs) {%V} set bind(%V) $ent tixEvalCmdBinding $w $command bind $ent } } proc tixHList:Keyboard-Browse {w} { if {[tixHList:GetState $w] != 0} { return } set ent [$w info anchor] if {$ent eq ""} { return } if {[$w cget -selectmode] eq "single"} { $w select clear } $w select set $ent tixHList:Browse $w $ent } proc tixHList:LeftRight {w spec} { catch { uplevel #0 unset $w:priv:shiftanchor } if {[tixHList:GetState $w] != 0} { return } set anchor [$w info anchor] if {$anchor eq ""} { set anchor [lindex [$w info children] 0] } if {$anchor eq ""} { return } set ent $anchor while {1} { set e $ent if {$spec eq "left"} { set ent [$w info parent $e] if {$ent eq "" || [$w entrycget $ent -state] eq "disabled"} { set ent [$w info prev $e] } } else { set ent [lindex [$w info children $e] 0] if {$ent eq "" || [$w entrycget $ent -state] eq "disabled"} { set ent [$w info next $e] } } if {$ent eq ""} { break } if {[$w entrycget $ent -state] eq "disabled"} { continue } if {[$w info hidden $ent]} { continue } break } if {$ent eq ""} { return } $w anchor set $ent $w see $ent if {[$w cget -selectmode] ne "single"} { $w select clear $w selection set $ent tixHList:Browse $w $ent } } proc tixHList:UpDown {w spec mod} { if {[tixHList:GetState $w] ne 0} { return } set anchor [$w info anchor] set done 0 if {$anchor eq ""} { set anchor [lindex [$w info children] 0] if {$anchor eq ""} { return } if {[$w entrycget $anchor -state] ne "disabled"} { # That's a good anchor set done 1 } else { # We search for the first non-disabled entry (downward) set spec next } } set ent $anchor # mike - bulletproofing if {![$w info exists $ent]} {return} # Find the prev/next non-disabled entry # while {!$done} { set ent [$w info $spec $ent] if {$ent eq ""} { break } if {[$w entrycget $ent -state] eq "disabled"} { continue } if {[$w info hidden $ent]} { continue } break } if {$ent eq ""} { return } else { $w see $ent $w anchor set $ent set selMode [$w cget -selectmode] if {$mod eq "s" && ($selMode eq "extended" || $selMode eq "multiple")} { global $w:priv:shiftanchor if {![info exists $w:priv:shiftanchor]} { set $w:priv:shiftanchor $anchor } $w selection clear # mike - bulletproofing if {![catch {$w selection set $ent [set $w:priv:shiftanchor]}]} { tixHList:Browse $w $ent } } else { catch { uplevel #0 unset $w:priv:shiftanchor } if {[$w cget -selectmode] ne "single"} { $w select clear $w selection set $ent tixHList:Browse $w $ent } } } } #---------------------------------------------------------------------- # # # Mouse bindings # # #---------------------------------------------------------------------- proc tixHList:Button-1 {w x y mod} { # if {[$w cget -state] eq "disabled"} { # return # } if {[$w cget -takefocus]} { focus $w } set selMode [$w cget -selectmode] case [tixHList:GetState $w] { {0} { if {$mod eq "s" && $selMode eq "multiple"} { tixHList:GoState 28 $w $x $y return } if {$mod eq "s" && $selMode eq "extended"} { tixHList:GoState 28 $w $x $y return } if {$mod eq "c" && $selMode eq "extended"} { tixHList:GoState 33 $w $x $y return } tixHList:GoState 1 $w $x $y } } } proc tixHList:ButtonRelease-1 {w x y} { case [tixHList:GetState $w] { {5 16} { tixHList:GoState 6 $w $x $y } {15} { tixHList:GoState 17 $w $x $y } {10 11} { tixHList:GoState 18 $w } {13 20} { tixHList:GoState 14 $w $x $y } {21} { tixHList:GoState 22 $w } {24} { tixHList:GoState 25 $w } {26 28 33} { tixHList:GoState 27 $w } {30} { tixHList:GoState 32 $w } } } proc tixHList:Double-1 {w x y} { case [tixHList:GetState $w] { {0} { tixHList:GoState 23 $w $x $y } } } proc tixHList:B1-Motion {w x y} { case [tixHList:GetState $w] { {1} { tixHList:GoState 5 $w $x $y } {5 16} { tixHList:GoState 5 $w $x $y } {13 20 21} { tixHList:GoState 20 $w $x $y } {24 26 28} { tixHList:GoState 26 $w $x $y } } } proc tixHList:B1-Leave {w} { case [tixHList:GetState $w] { {5} { tixHList:GoState 10 $w } {26} { tixHList:GoState 29 $w } } } proc tixHList:B1-Enter {w x y} { case [tixHList:GetState $w] { {10 11} { tixHList:GoState 12 $w $x $y } {29 30} { tixHList:GoState 31 $w $x $y } } } proc tixHList:AutoScan {w} { case [tixHList:GetState $w] { {29 30} { tixHList:GoState 30 $w } } } #---------------------------------------------------------------------- # # STATE MANIPULATION # # #---------------------------------------------------------------------- proc tixHList:GetState {w} { global $w:priv:state if {![info exists $w:priv:state]} { set $w:priv:state 0 } return [set $w:priv:state] } proc tixHList:SetState {w n} { global $w:priv:state set $w:priv:state $n } proc tixHList:GoState {n w args} { # puts "going from [tixHList:GetState $w] --> $n" tixHList:SetState $w $n eval tixHList:GoState-$n $w $args } #---------------------------------------------------------------------- # States #---------------------------------------------------------------------- proc tixHList:GoState-0 {w} { } proc tixHList:GoState-1 {w x y} { set oldEnt [$w info anchor] set ent [tixHList:SetAnchor $w $x $y 1] if {$ent eq ""} { tixHList:GoState 0 $w return } set info [$w info item $x $y] if {[lindex $info 1] eq "indicator"} { tixHList:GoState 13 $w $ent $oldEnt } else { if {[$w entrycget $ent -state] eq "disabled"} { tixHList:GoState 0 $w } else { case [$w cget -selectmode] { {single browse} { tixHList:GoState 16 $w $ent } default { tixHList:GoState 24 $w $ent } } } } } proc tixHList:GoState-5 {w x y} { set oldEnt [$w info anchor] set ent [tixHList:SetAnchor $w $x $y] if {$ent eq "" || $oldEnt eq $ent} { return } if {[$w cget -selectmode] ne "single"} { tixHList:Select $w $ent tixHList:Browse $w $ent } } proc tixHList:GoState-6 {w x y} { set ent [tixHList:SetAnchor $w $x $y] if {$ent eq ""} { tixHList:GoState 0 $w return } tixHList:Select $w $ent tixHList:Browse $w $ent tixHList:GoState 0 $w } proc tixHList:GoState-10 {w} { tixHList:StartScan $w } proc tixHList:GoState-11 {w} { global tkPriv tixHList:DoScan $w set oldEnt [$w info anchor] set ent [tixHList:SetAnchor $w $tkPriv(x) $tkPriv(y)] if {$ent eq "" || $oldEnt eq $ent} { return } if {[$w cget -selectmode] ne "single"} { tixHList:Select $w $ent tixHList:Browse $w $ent } } proc tixHList:GoState-12 {w x y} { tkCancelRepeat tixHList:GoState 5 $w $x $y } proc tixHList:GoState-13 {w ent oldEnt} { global tkPriv set tkPriv(tix,indicator) $ent set tkPriv(tix,oldEnt) $oldEnt tixHList:CallIndicatorCmd $w $ent } proc tixHList:GoState-14 {w x y} { global tkPriv if {[tixHList:InsideArmedIndicator $w $x $y]} { $w anchor set $tkPriv(tix,indicator) $w select clear $w select set $tkPriv(tix,indicator) tixHList:CallIndicatorCmd $w $tkPriv(tix,indicator) } else { tixHList:CallIndicatorCmd $w $tkPriv(tix,indicator) } unset tkPriv(tix,indicator) tixHList:GoState 0 $w } proc tixHList:GoState-16 {w ent} { if {$ent ne "" && [$w cget -selectmode] ne "single"} { tixHList:Select $w $ent tixHList:Browse $w $ent } } proc tixHList:GoState-18 {w} { global tkPriv tkCancelRepeat tixHList:GoState 6 $w $tkPriv(x) $tkPriv(y) } proc tixHList:GoState-20 {w x y} { global tkPriv if {![tixHList:InsideArmedIndicator $w $x $y]} { tixHList:GoState 21 $w $x $y } else { tixHList:CallIndicatorCmd $w $tkPriv(tix,indicator) } } proc tixHList:GoState-21 {w x y} { global tkPriv if {[tixHList:InsideArmedIndicator $w $x $y]} { tixHList:GoState 20 $w $x $y } else { tixHList:CallIndicatorCmd $w $tkPriv(tix,indicator) } } proc tixHList:GoState-22 {w} { global tkPriv if {$tkPriv(tix,oldEnt) ne ""} { $w anchor set $tkPriv(tix,oldEnt) } else { $w anchor clear } tixHList:GoState 0 $w } proc tixHList:GoState-23 {w x y} { set ent [tixHList:GetNearest $w $y] if {$ent ne ""} { set info [$w info item $x $y] if {[lindex $info 1] eq "indicator"} { tixHList:CallIndicatorCmd $w $ent } else { $w select set $ent set command [$w cget -command] if {$command ne ""} { set bind(specs) {%V} set bind(%V) $ent tixEvalCmdBinding $w $command bind $ent } } } tixHList:GoState 0 $w } proc tixHList:GoState-24 {w ent} { if {$ent ne ""} { tixHList:Select $w $ent tixHList:Browse $w $ent } } proc tixHList:GoState-25 {w} { set ent [$w info anchor] if {$ent ne ""} { tixHList:Select $w $ent tixHList:Browse $w $ent } tixHList:GoState 0 $w } proc tixHList:GoState-26 {w x y} { set anchor [$w info anchor] if {$anchor eq ""} { set first [lindex [$w info children ""] 0] if {$first ne ""} { $w anchor set $first set anchor $first } else { return } } set ent [tixHList:GetNearest $w $y 1] if {$ent ne ""} { $w selection clear $w selection set $anchor $ent tixHList:Browse $w $ent } } proc tixHList:GoState-27 {w} { set ent [$w info anchor] if {$ent ne ""} { tixHList:Browse $w $ent } tixHList:GoState 0 $w } proc tixHList:GoState-28 {w x y} { set anchor [$w info anchor] if {$anchor eq ""} { set first [lindex [$w info children ""] 0] if {$first ne ""} { $w anchor set $first set anchor $first } else { return } } set ent [tixHList:GetNearest $w $y 1] if {$ent ne ""} { $w selection clear $w selection set $anchor $ent tixHList:Browse $w $ent } } proc tixHList:GoState-29 {w} { tixHList:StartScan $w } proc tixHList:GoState-30 {w} { global tkPriv tixHList:DoScan $w set anchor [$w info anchor] if {$anchor eq ""} { set first [lindex [$w info children ""] 0] if {$first ne ""} { $w anchor set $first set anchor $first } else { return } } set ent [tixHList:GetNearest $w $tkPriv(y) 1] if {$ent ne ""} { $w selection clear $w selection set $anchor $ent tixHList:Browse $w $ent } } proc tixHList:GoState-31 {w x y} { tkCancelRepeat tixHList:GoState 26 $w $x $y } proc tixHList:GoState-32 {w} { tkCancelRepeat tixHList:GoState 0 $w } proc tixHList:GoState-33 {w x y} { set ent [tixHList:GetNearest $w $y] if {$ent ne ""} { $w anchor set $ent if {[lsearch [$w selection get] $ent] > -1} { # This was missing - mike $w selection clear $ent } else { $w selection set $ent } tixHList:Browse $w $ent } } #---------------------------------------------------------------------- # # Common actions # #---------------------------------------------------------------------- proc tixHList:GetNearest {w y {disableOK 0}} { set ent [$w nearest $y] if {$ent ne ""} { if {!$disableOK && [$w entrycget $ent -state] eq "disabled"} { return "" } } return $ent } proc tixHList:SetAnchor {w x y {disableOK 0}} { set ent [tixHList:GetNearest $w $y $disableOK] if {$ent ne ""} { if {[$w entrycget $ent -state] ne "disabled"} { $w anchor set $ent # mike This is non-standard and has a wierd effect: too much motion # $w see $ent return $ent } elseif $disableOK { return $ent } } return "" } proc tixHList:Select {w ent} { if {[$w info selection] ne $ent} { $w selection clear $w select set $ent } } #---------------------------------------------------------------------- # # Auto scan # #---------------------------------------------------------------------- proc tixHList:StartScan {w} { global tkPriv set tkPriv(afterId) [after 50 tixHList:AutoScan $w] } proc tixHList:DoScan {w} { global tkPriv set x $tkPriv(x) set y $tkPriv(y) set X $tkPriv(X) set Y $tkPriv(Y) if {$y >= [winfo height $w]} { $w yview scroll 1 units } elseif {$y < 0} { $w yview scroll -1 units } elseif {$x >= [winfo width $w]} { $w xview scroll 2 units } elseif {$x < 0} { $w xview scroll -2 units } else { return } set tkPriv(afterId) [after 50 tixHList:AutoScan $w] } #---------------------------------------------------------------------- # # Indicator handling # #---------------------------------------------------------------------- proc tixHList:CallIndicatorCmd {w event ent} { set cmd [$w cget -indicatorcmd] if {$cmd ne ""} { set bind(type) $event set bind(specs) {%V} set bind(%V) $ent tixEvalCmdBinding $w $cmd bind $ent } } proc tixHList:InsideArmedIndicator {w x y} { global tkPriv set ent [tixHList:GetNearest $w $y 1] if {$ent eq "" || $ent ne $tkPriv(tix,indicator)} { return 0 } set info [$w info item $x $y] if {[lindex $info 1] eq "indicator"} { return 1 } else { return 0 } } proc tixHList:Browse {w ent} { set browsecmd [$w cget -browsecmd] if {$browsecmd ne ""} { set bind(specs) {%V} set bind(%V) $ent tixEvalCmdBinding $w $browsecmd bind $ent } } Tix8.4.3/library/IconView.tcl0000644000122200012240000001373607404570302016277 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: IconView.tcl,v 1.2 2001/12/09 05:04:02 idiscovery Exp $ # # IconView.tcl -- # # This file implements the Icon View widget: the "icon" view mode of # the MultiView widget. It implements: # # (1) Creation of the icons in the canvas subwidget. # (2) Automatic arrangement of the objects # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixIconView { -classname TixIconView -superclass tixCObjView -method { add arrange } -flag { -autoarrange } -static { } -configspec { {-autoarrange autoArrange AutoArrange 0 tixVerifyBoolean} } -default { {.scrollbar auto} {*borderWidth 1} {*canvas.background #c3c3c3} {*canvas.highlightBackground #d9d9d9} {*canvas.relief sunken} {*canvas.takeFocus 1} {*Scrollbar.takeFocus 0} } -forcecall { } } proc tixIconView:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget } proc tixIconView:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings set c $data(w:canvas) bind $c <1> "tixIconView:StartDrag $w %x %y" bind $c "tixIconView:Drag $w %x %y" bind $c "tixIconView:EndDrag $w" } proc tixIconView:StartDrag {w x y} { upvar #0 $w data global lastX lastY set c $data(w:canvas) $c raise current set lastX [$c canvasx $x] set lastY [$c canvasy $y] } proc tixIconView:Drag {w x y} { upvar #0 $w data global lastX lastY set c $data(w:canvas) set x [$c canvasx $x] set y [$c canvasy $y] $c move current [expr $x-$lastX] [expr $y-$lastY] set lastX $x set lastY $y } proc tixIconView:EndDrag {w} { upvar #0 $w data tixCallMethod $w adjustscrollregion } #---------------------------------------------------------------------- # # option configs #---------------------------------------------------------------------- proc tixIconView:add {w tag image text} { upvar #0 $w data set cmp [image create compound -window $data(w:canvas)] $cmp add image -image $image $cmp add line $cmp add text -text $text set id [$data(w:canvas) create image 0 0 -image $cmp -anchor nw] $data(w:canvas) addtag $tag withtag $id if {$data(-autoarrange)} { tixWidgetDoWhenIdle tixIconView:Arrange $w 1 } } # Do it in an idle handler, so that Arrange is not called before the window # is properly mapped. # proc tixIconView:arrange {w} { tixWidgetDoWhenIdle tixIconView:Arrange $w 1 } proc tixIconView:PackOneRow {w row y maxH bd padX padY} { upvar #0 $w data set iX [expr $bd+$padX] foreach i $row { set box [$data(w:canvas) bbox $i] set W [expr [lindex $box 2]-[lindex $box 0]+1] set H [expr [lindex $box 3]-[lindex $box 1]+1] set iY [expr $y + $maxH - $H] $data(w:canvas) coords $i $iX $iY incr iX [expr $W+$padX] } } # virtual method # proc tixIconView:PlaceWindow {w} { upvar #0 $w data if {$data(-autoarrange)} { tixWidgetDoWhenIdle tixIconView:Arrange $w 0 } tixChainMethod $w PlaceWindow } proc tixIconView:Arrange {w adjust} { upvar #0 $w data set padX 2 set padY 2 tixIconView:ArrangeGrid $w $padX $padY if {$adjust} { tixCallMethod $w adjustscrollregion } } # the items are not packed # proc tixIconView:ArrangeGrid {w padX padY} { upvar #0 $w data set maxW 0 set maxH 0 foreach item [$data(w:canvas) find all] { set box [$data(w:canvas) bbox $item] set itemW [expr [lindex $box 2]-[lindex $box 0]+1] set itemH [expr [lindex $box 3]-[lindex $box 1]+1] if {$maxW < $itemW} { set maxW $itemW } if {$maxH < $itemH} { set maxH $itemH } } if {$maxW == 0 || $maxH == 0} { return } set winW [tixWinWidth $data(w:canvas)] set bd [expr [$data(w:canvas) cget -bd]+\ [$data(w:canvas) cget -highlightthickness]] set cols [expr $winW / ($maxW+$padX)] if {$cols < 1} { set cols 1 } set y $bd set c 0 set x $bd foreach item [$data(w:canvas) find all] { set box [$data(w:canvas) bbox $item] set itemW [expr [lindex $box 2]-[lindex $box 0]+1] set itemH [expr [lindex $box 3]-[lindex $box 1]+1] set iX [expr $x + $padX + ($maxW-$itemW)/2] set iY [expr $y + $padY + ($maxH-$itemH) ] $data(w:canvas) coords $item $iX $iY incr c incr x [expr $maxW + $padY] if {$c == $cols} { set c 0 incr y [expr $maxH + $padY] set x $bd } } } # the items are packed # proc tixIconView:ArrangePack {w padX padY} { upvar #0 $w data set winW [tixWinWidth $data(w:canvas)] set bd [expr [$data(w:canvas) cget -bd]+\ [$data(w:canvas) cget -highlightthickness]] set y [expr $bd + $padY] set maxH 0 set usedW $padX set row "" foreach item [$data(w:canvas) find all] { set box [$data(w:canvas) bbox $item] set itemW [expr [lindex $box 2]-[lindex $box 0]+1] set itemH [expr [lindex $box 3]-[lindex $box 1]+1] if {[expr $usedW + $itemW] > $winW} { if {$row == ""} { # only one item in this row # $data(w:canvas) coords $item [expr $bd + $padX] $y incr y [expr $itemH+$padY] continue } else { # this item is not in this row. Arrange the previous items # first # tixIconView:PackOneRow $w $row $y $maxH $bd $padX $padY incr y $maxH set row "" set maxH 0 set usedW $padX } } lappend row $item if {$maxH < $itemH} { set maxH $itemH } incr usedW [expr $padX+$itemW] } if {$row != ""} { tixIconView:PackOneRow $w $row $y $maxH $bd $padX $padY } } #---------------------------------------------------------------------- # # Widget commands #---------------------------------------------------------------------- #---------------------------------------------------------------------- # # Private Methods #---------------------------------------------------------------------- Tix8.4.3/library/Makefile0000664000122200012240000000007507110476673015514 0ustar jeffhjeffh00000000000000tclIndex:: ../tools/tixindex *tcl clean:: -rm -f *.bak *~ Tix8.4.3/library/Event.tcl0000644000122200012240000001215710035613575015635 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Event.tcl,v 1.6 2004/04/09 21:37:01 hobbs Exp $ # # Event.tcl -- # # Handles the event bindings of the -command and -browsecmd options # (and various of others such as -validatecmd). # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # #---------------------------------------------------------------------- # Evaluate high-level bindings (-command, -browsecmd, etc): # with % subsitution or without (compatibility mode) # # # BUG : if a -command is intercepted by a hook, the hook must use # the same record name as the issuer of the -command. For the time # being, you must use the name "bind" as the record name!!!!! # #---------------------------------------------------------------------- namespace eval ::tix { variable event_flags "" set evs [list % \# a b c d f h k m o p s t w x y A B E K N R S T W X Y] foreach ev $evs { lappend event_flags "%$ev" } # This is a "name stack" for storing the "bind" structures # # The bottom of the event stack is usually a raw event (generated by # tixBind) but it may also be a programatically triggered (caused by # tixEvalCmdBinding) variable EVENT set EVENT(nameStack) "" set EVENT(stackLevel) 0 } proc tixBind {tag event action} { set cmd [linsert $::tix::event_flags 0 _tixRecordFlags $event] append cmd "; $action; _tixDeleteFlags;" bind $tag $event $cmd } proc tixPushEventStack {} { variable ::tix::EVENT set lastEvent [lindex $EVENT(nameStack) 0] incr EVENT(stackLevel) set thisEvent ::tix::_event$EVENT(stackLevel) set EVENT(nameStack) [list $thisEvent $EVENT(nameStack)] if {$lastEvent == ""} { upvar #0 $thisEvent this set this(type) } else { upvar #0 $lastEvent last upvar #0 $thisEvent this foreach name [array names last] { set this($name) $last($name) } } return $thisEvent } proc tixPopEventStack {varName} { variable ::tix::EVENT if {$varName ne [lindex $EVENT(nameStack) 0]} { error "unmatched tixPushEventStack and tixPopEventStack calls" } incr EVENT(stackLevel) -1 set EVENT(nameStack) [lindex $EVENT(nameStack) 1] global $varName unset $varName } # Events triggered by tixBind # proc _tixRecordFlags [concat event $::tix::event_flags] { set thisName [tixPushEventStack]; upvar #0 $thisName this set this(type) $event foreach f $::tix::event_flags { set this($f) [set $f] } } proc _tixDeleteFlags {} { variable ::tix::EVENT tixPopEventStack [lindex $EVENT(nameStack) 0] } # programatically trigged events # proc tixEvalCmdBinding {w cmd {subst ""} args} { global tixPriv tix variable ::tix::EVENT set thisName [tixPushEventStack]; upvar #0 $thisName this if {$subst != ""} { upvar $subst bind if {[info exists bind(specs)]} { foreach spec $bind(specs) { set this($spec) $bind($spec) } } if {[info exists bind(type)]} { set this(type) $bind(type) } } if {[catch { if {![info exists tix(-extracmdargs)] || [string is true -strict $tix(-extracmdargs)]} { # Compatibility mode set ret [uplevel \#0 $cmd $args] } else { set ret [uplevel 1 $cmd] } } error]} { if {[catch {tixCmdErrorHandler $error} error]} { # double fault: just print out tixBuiltInCmdErrorHandler $error } tixPopEventStack $thisName return "" } else { tixPopEventStack $thisName return $ret } } proc tixEvent {option args} { global tixPriv variable ::tix::EVENT set varName [lindex $EVENT(nameStack) 0] if {$varName == ""} { error "tixEvent called when no event is being processed" } else { upvar #0 $varName event } switch -exact -- $option { type { return $event(type) } value { if {[info exists event(%V)]} { return $event(%V) } else { return "" } } flag { set f %[lindex $args 0] if {[info exists event($f)]} { return $event($f) } error "The flag \"[lindex $args 0]\" does not exist" } match { return [string match [lindex $args 0] $event(type)] } default { error "unknown option \"$option\"" } } } # tixBuiltInCmdErrorHandler -- # # Default method to report command handler errors. This procedure is # also called if double-fault happens (command handler causes error, # then tixCmdErrorHandler causes error). # proc tixBuiltInCmdErrorHandler {errorMsg} { global errorInfo tcl_platform if {![info exists errorInfo]} { set errorInfo "???" } if {$tcl_platform(platform) eq "windows"} { bgerror "Tix Error: $errorMsg" } else { puts "Error:\n $errorMsg\n$errorInfo" } } # tixCmdErrorHandler -- # # You can redefine this command to handle the errors that occur # in the command handlers. See the programmer's documentation # for details # if {![llength [info commands tixCmdErrorHandler]]} { proc tixCmdErrorHandler {errorMsg} { tixBuiltInCmdErrorHandler $errorMsg } } Tix8.4.3/library/Compat.tcl0000644000122200012240000000154610031436051015763 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Compat.tcl,v 1.3 2004/03/28 02:44:57 hobbs Exp $ # # Compat.tcl -- # # This file wraps around many incompatibilities from Tix 3.6 # to Tix 4.0. # # (1) "box" to "Box" changes # (2) "DlgBtns" to "ButtonBox" changes # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # foreach {old new} { tixDlgBtns tixButtonBox tixStdDlgBtns tixStdButtonBox tixCombobox tixComboBox tixFileSelectbox tixFileSelectBox tixScrolledListbox tixScrolledListBox } { interp alias {} $old {} $new } proc tixInit {args} { eval tix config $args puts stderr "tixInit no longer needed for this version of Tix" } Tix8.4.3/library/VTree.tcl0000644000122200012240000001047210031436051015563 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: VTree.tcl,v 1.6 2004/03/28 02:44:57 hobbs Exp $ # # VTree.tcl -- # # Virtual base class for Tree widgets. # # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixVTree { -virtual true -classname TixVTree -superclass tixScrolledHList -method { } -flag { -ignoreinvoke } -configspec { {-ignoreinvoke ignoreInvoke IgnoreInvoke false tixVerifyBoolean} } -default { } } proc tixVTree:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec } proc tixVTree:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget set data(indStyle) \ [tixDisplayStyle image -refwindow $data(w:hlist) -padx 0 -pady 0] } proc tixVTree:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings $data(w:hlist) config \ -indicatorcmd [list tixVTree:IndicatorCmd $w] \ -browsecmd [list tixVTree:BrowseCmdHook $w] \ -command [list tixVTree:CommandHook $w] } proc tixVTree:IndicatorCmd {w args} { upvar #0 $w data set event [tixEvent type] set ent [tixEvent flag V] set type [tixVTree:GetType $w $ent] set plus [tix getimage plus] set plusarm [tix getimage plusarm] set minus [tix getimage minus] set minusarm [tix getimage minusarm] if {![$data(w:hlist) info exists $ent]} {return} switch -exact -- $event { { if {![$data(w:hlist) indicator exists $ent]} {return} $data(w:hlist) indicator config $ent \ -image [expr {$type eq "open" ? $plusarm : $minusarm}] } { if {![$data(w:hlist) indicator exists $ent]} {return} $data(w:hlist) indicator config $ent \ -image [expr {$type eq "open" ? $plus : $minus}] } { upvar bind bind tixCallMethod $w Activate $ent $type set bind(%V) $ent tixVTree:BrowseCmdHook $w } } } proc tixVTree:GetType {w ent} { upvar #0 $w data if {![$data(w:hlist) indicator exists $ent]} { return none } set img [$data(w:hlist) indicator cget $ent -image] if {$img eq [tix getimage plus] || $img eq [tix getimage plusarm]} { return open } return close } proc tixVTree:Activate {w ent type} { upvar #0 $w data if {$type eq "open"} { tixCallMethod $w OpenCmd $ent $data(w:hlist) indicator config $ent -image [tix getimage minus] } else { tixCallMethod $w CloseCmd $ent $data(w:hlist) indicator config $ent -image [tix getimage plus] } } proc tixVTree:CommandHook {w args} { upvar #0 $w data upvar bind bind tixCallMethod $w Command bind } proc tixVTree:BrowseCmdHook {w args} { upvar #0 $w data upvar bind bind tixCallMethod $w BrowseCmd bind } proc tixVTree:SetMode {w ent mode} { upvar #0 $w data switch -exact -- $mode { open { $data(w:hlist) indicator create $ent -itemtype image \ -image [tix getimage plus] -style $data(indStyle) } close { $data(w:hlist) indicator create $ent -itemtype image \ -image [tix getimage minus] -style $data(indStyle) } none { if {[$data(w:hlist) indicator exist $ent]} { $data(w:hlist) indicator delete $ent } } } } #---------------------------------------------------------------------- # # Virtual Methods # #---------------------------------------------------------------------- proc tixVTree:OpenCmd {w ent} { upvar #0 $w data # The default action foreach kid [$data(w:hlist) info children $ent] { $data(w:hlist) show entry $kid } } proc tixVTree:CloseCmd {w ent} { upvar #0 $w data # The default action foreach kid [$data(w:hlist) info children $ent] { $data(w:hlist) hide entry $kid } } proc tixVTree:Command {w B} { upvar #0 $w data upvar $B bind if {$data(-ignoreinvoke)} { return } set ent [tixEvent flag V] if {[$data(w:hlist) indicator exist $ent]} { tixVTree:Activate $w $ent [tixVTree:GetType $w $ent] } } proc tixVTree:BrowseCmd {w B} { } #---------------------------------------------------------------------- # # Widget commands # #---------------------------------------------------------------------- Tix8.4.3/library/SHList.tcl0000644000122200012240000000732110035613635015714 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SHList.tcl,v 1.7 2004/04/09 21:37:33 hobbs Exp $ # # SHList.tcl -- # # This file implements Scrolled HList widgets # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixScrolledHList { -classname TixScrolledHList -superclass tixScrolledWidget -method { } -flag { -highlightbackground -highlightcolor -highlightthickness } -configspec { {-highlightbackground -highlightBackground HighlightBackground #d9d9d9} {-highlightcolor -highlightColor HighlightColor black} {-highlightthickness -highlightThickness HighlightThickness 2} } -default { {.scrollbar auto} {*f1.borderWidth 1} {*hlist.Background #c3c3c3} {*hlist.highlightBackground #d9d9d9} {*hlist.relief sunken} {*hlist.takeFocus 1} {*Scrollbar.takeFocus 0} } -forcecall { -highlightbackground -highlightcolor -highlightthickness } } proc tixScrolledHList:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget set data(pw:f1) [frame $w.f1 -takefocus 0] set data(w:hlist) \ [tixHList $w.f1.hlist -bd 0 -takefocus 1 -highlightthickness 0] pack $data(w:hlist) -in $data(pw:f1) -expand yes -fill both -padx 0 -pady 0 set data(w:hsb) [scrollbar $w.hsb -orient horizontal -takefocus 0] set data(w:vsb) [scrollbar $w.vsb -orient vertical -takefocus 0] set data(pw:client) $data(pw:f1) } proc tixScrolledHList:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings $data(w:hlist) config \ -xscrollcommand [list $data(w:hsb) set] \ -yscrollcommand [list $data(w:vsb) set] \ -sizecmd [list tixScrolledWidget:Configure $w] $data(w:hsb) config -command [list $data(w:hlist) xview] $data(w:vsb) config -command [list $data(w:hlist) yview] } #---------------------------------------------------------------------- # # option configs #---------------------------------------------------------------------- proc tixScrolledHList:config-takefocus {w value} { upvar #0 $w data $data(w:hlist) config -takefocus $value } proc tixScrolledHList:config-highlightbackground {w value} { upvar #0 $w data $data(pw:f1) config -highlightbackground $value } proc tixScrolledHList:config-highlightcolor {w value} { upvar #0 $w data $data(pw:f1) config -highlightcolor $value } proc tixScrolledHList:config-highlightthickness {w value} { upvar #0 $w data $data(pw:f1) config -highlightthickness $value } #---------------------------------------------------------------------- # # Widget commands #---------------------------------------------------------------------- #---------------------------------------------------------------------- # # Private Methods #---------------------------------------------------------------------- # virtual # proc tixScrolledHList:RepackHook {w} { upvar #0 $w data tixChainMethod $w RepackHook } #---------------------------------------------------------------------- # virtual functions to query the client window's scroll requirement #---------------------------------------------------------------------- proc tixScrolledHList:GeometryInfo {w mW mH} { upvar #0 $w data if {[winfo class $w.f1] eq "Frame"} { set extra [expr {[$w.f1 cget -bd]+[$w.f1 cget -highlightthickness]}] } else { set extra 0 } set mW [expr {$mW - $extra*2}] set mH [expr {$mH - $extra*2}] if {$mW < 1} { set mW 1 } if {$mH < 1} { set mH 1 } return [$data(w:hlist) geometryinfo $mW $mH] } Tix8.4.3/library/Console.tcl0000644000122200012240000003571710761360570016165 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Console.tcl,v 1.5 2008/02/27 22:17:28 hobbs Exp $ # # Console.tcl -- # # This code constructs the console window for an application. # It can be used by non-unix systems that do not have built-in # support for shells. # # This file was distributed as a part of Tk 4.1 by Sun # Microsystems, Inc. and subsequently modified by Expert # Interface Techonoligies and included as a part of Tix. # # Some of the functions in this file have been renamed from # using a "tk" prefix to a "tix" prefix to avoid namespace # conflict with the original file. # # Copyright (c) 1995-1996 Sun Microsystems, Inc. # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "docs/license.tcltk" for information on usage and # redistribution of the original file "console.tcl". These license # terms do NOT apply to other files in the Tix distribution. # # See the file "license.terms" for information on usage and # redistribution * of this file, and for a DISCLAIMER OF ALL # WARRANTIES. # tixConsoleInit -- # This procedure constructs and configures the console windows. # # Arguments: # None. foreach fun {tkTextSetCursor} { if {![llength [info commands $fun]]} { tk::unsupported::ExposePrivateCommand $fun } } unset fun proc tixConsoleInit {} { global tcl_platform uplevel #0 set tixConsoleTextFont Courier uplevel #0 set tixConsoleTextSize 14 set f [frame .f] set fontcb [tixComboBox $f.size -label "" -command "tixConsoleSetFont" \ -variable tixConsoleTextFont \ -options { entry.width 15 listbox.height 5 }] set sizecb [tixComboBox $f.font -label "" -command "tixConsoleSetFont" \ -variable tixConsoleTextSize \ -options { entry.width 4 listbox.width 6 listbox.height 5 }] pack $fontcb $sizecb -side left pack $f -side top -fill x -padx 2 -pady 2 foreach font { "Courier New" "Courier" "Helvetica" "Lucida" "Lucida Typewriter" "MS LineDraw" "System" "Times Roman" } { $fontcb subwidget listbox insert end $font } for {set s 6} {$s < 25} {incr s} { $sizecb subwidget listbox insert end $s } bind [$fontcb subwidget entry] "focus .console" bind [$sizecb subwidget entry] "focus .console" text .console -yscrollcommand ".sb set" -setgrid true \ -highlightcolor [. cget -bg] -highlightbackground [. cget -bg] scrollbar .sb -command ".console yview" -highlightcolor [. cget -bg] \ -highlightbackground [. cget -bg] pack .sb -side right -fill both pack .console -fill both -expand 1 -side left tixConsoleBind .console .console tag configure stderr -foreground red .console tag configure stdin -foreground blue focus .console wm protocol . WM_DELETE_WINDOW { wm withdraw . } wm title . "Console" flush stdout .console mark set output [.console index "end - 1 char"] tkTextSetCursor .console end .console mark set promptEnd insert .console mark gravity promptEnd left tixConsoleSetFont } proc tixConsoleSetFont {args} { if ![winfo exists .console] tixConsoleInit global tixConsoleTextFont tixConsoleTextSize set font -*-$tixConsoleTextFont-medium-r-normal-*-$tixConsoleTextSize-*-*-*-*-*-*-* .console config -font $font } # tixConsoleInvoke -- # Processes the command line input. If the command is complete it # is evaled in the main interpreter. Otherwise, the continuation # prompt is added and more input may be added. # # Arguments: # None. proc tixConsoleInvoke {args} { if ![winfo exists .console] tixConsoleInit if {[.console dlineinfo insert] != {}} { set setend 1 } else { set setend 0 } set ranges [.console tag ranges input] set cmd "" if {$ranges != ""} { set pos 0 while {[lindex $ranges $pos] != ""} { set start [lindex $ranges $pos] set end [lindex $ranges [incr pos]] append cmd [.console get $start $end] incr pos } } if {$cmd == ""} { tixConsolePrompt } elseif {[info complete $cmd]} { .console mark set output end .console tag delete input set err [catch { set result [interp record $cmd] } result] if {$result != ""} { if {$err} { .console insert insert "$result\n" stderr } else { .console insert insert "$result\n" } } tixConsoleHistory reset tixConsolePrompt } else { tixConsolePrompt partial } if {$setend} { .console yview -pickplace insert } } # tixConsoleHistory -- # This procedure implements command line history for the # console. In general is evals the history command in the # main interpreter to obtain the history. The global variable # histNum is used to store the current location in the history. # # Arguments: # cmd - Which action to take: prev, next, reset. set histNum 1 proc tixConsoleHistory {cmd} { if ![winfo exists .console] tixConsoleInit global histNum switch $cmd { prev { incr histNum -1 if {$histNum == 0} { set cmd {history event [expr [history nextid] -1]} } else { set cmd "history event $histNum" } if {[catch {interp eval $cmd} cmd]} { incr histNum return } .console delete promptEnd end .console insert promptEnd $cmd {input stdin} } next { incr histNum if {$histNum == 0} { set cmd {history event [expr [history nextid] -1]} } elseif {$histNum > 0} { set cmd "" set histNum 1 } else { set cmd "history event $histNum" } if {$cmd != ""} { catch {interp eval $cmd} cmd } .console delete promptEnd end .console insert promptEnd $cmd {input stdin} } reset { set histNum 1 } } } # tixConsolePrompt -- # This procedure draws the prompt. If tcl_prompt1 or tcl_prompt2 # exists in the main interpreter it will be called to generate the # prompt. Otherwise, a hard coded default prompt is printed. # # Arguments: # partial - Flag to specify which prompt to print. proc tixConsolePrompt {{partial normal}} { if ![winfo exists .console] tixConsoleInit if {$partial == "normal"} { set temp [.console index "end - 1 char"] .console mark set output end if {[interp eval "info exists tcl_prompt1"]} { interp eval "eval \[set tcl_prompt1\]" } else { puts -nonewline "% " } } else { set temp [.console index output] .console mark set output end if {[interp eval "info exists tcl_prompt2"]} { interp eval "eval \[set tcl_prompt2\]" } else { puts -nonewline "> " } } flush stdout .console mark set output $temp tkTextSetCursor .console end .console mark set promptEnd insert .console mark gravity promptEnd left } # tixConsoleBind -- # This procedure first ensures that the default bindings for the Text # class have been defined. Then certain bindings are overridden for # the class. # # Arguments: # None. proc tixConsoleBind {win} { if ![winfo exists .console] tixConsoleInit bindtags $win "$win Text . all" # Ignore all Alt, Meta, and Control keypresses unless explicitly bound. # Otherwise, if a widget binding for one of these is defined, the # class binding will also fire and insert the character, # which is wrong. Ditto for . bind $win {# nothing } bind $win {# nothing} bind $win {# nothing} bind $win {# nothing} bind $win {# nothing} bind $win { tixConsoleInsert %W \t focus %W break } bind $win { %W mark set insert {end - 1c} tixConsoleInsert %W "\n" tixConsoleInvoke break } bind $win { if {[%W tag nextrange sel 1.0 end] != ""} { %W tag remove sel sel.first promptEnd } else { if {[%W compare insert < promptEnd]} { break } } } bind $win { if {[%W tag nextrange sel 1.0 end] != ""} { %W tag remove sel sel.first promptEnd } else { if {[%W compare insert <= promptEnd]} { break } } } foreach left {Control-a Home} { bind $win <$left> { if {[%W compare insert < promptEnd]} { tkTextSetCursor %W {insert linestart} } else { tkTextSetCursor %W promptEnd } break } } foreach right {Control-e End} { bind $win <$right> { tkTextSetCursor %W {insert lineend} break } } bind $win { if {[%W compare insert < promptEnd]} { break } } bind $win { if {[%W compare insert < promptEnd]} { %W mark set insert promptEnd } } bind $win { if {[%W compare insert < promptEnd]} { break } } bind $win { if {[%W compare insert < promptEnd]} { break } } bind $win { if {[%W compare insert <= promptEnd]} { break } } bind $win { if {[%W compare insert <= promptEnd]} { break } } foreach prev {Control-p Up} { bind $win <$prev> { tixConsoleHistory prev break } } foreach prev {Control-n Down} { bind $win <$prev> { tixConsoleHistory next break } } bind $win { if {[%W compare insert > promptEnd]} { catch { %W insert insert [selection get -displayof %W] {input stdin} %W see insert } } break } bind $win { catch {tixConsoleInsert %W [selection get -displayof %W]} break } bind $win { tixConsoleInsert %W %A break } foreach left {Control-b Left} { bind $win <$left> { if {[%W compare insert == promptEnd]} { break } tkTextSetCursor %W insert-1c break } } foreach right {Control-f Right} { bind $win <$right> { tkTextSetCursor %W insert+1c break } } bind $win { %W yview scroll -1 unit break; } bind $win { %W yview scroll 1 unit break; } bind $win { %W yview scroll -1 pages } bind $win { %W yview scroll 1 pages } bind $win { eval destroy [winfo child .] source $tix_library/Console.tcl } foreach copy {F16 Meta-w Control-i} { bind $win <$copy> { if {[selection own -displayof %W] == "%W"} { clipboard clear -displayof %W catch { clipboard append -displayof %W [selection get -displayof %W] } } break } } foreach paste {F18 Control-y} { bind $win <$paste> { catch { set clip [selection get -displayof %W -selection CLIPBOARD] set list [split $clip \n\r] tixConsoleInsert %W [lindex $list 0] foreach x [lrange $list 1 end] { %W mark set insert {end - 1c} tixConsoleInsert %W "\n" tixConsoleInvoke tixConsoleInsert %W $x } } break } } } # tixConsoleInsert -- # Insert a string into a text at the point of the insertion cursor. # If there is a selection in the text, and it covers the point of the # insertion cursor, then delete the selection before inserting. Insertion # is restricted to the prompt area. # # Arguments: # w - The text window in which to insert the string # s - The string to insert (usually just a single character) proc tixConsoleInsert {w s} { if ![winfo exists .console] tixConsoleInit if {[.console dlineinfo insert] != {}} { set setend 1 } else { set setend 0 } if {$s == ""} { return } catch { if {[$w compare sel.first <= insert] && [$w compare sel.last >= insert]} { $w tag remove sel sel.first promptEnd $w delete sel.first sel.last } } if {[$w compare insert < promptEnd]} { $w mark set insert end } $w insert insert $s {input stdin} if $setend { .console see insert } } # tixConsoleOutput -- # # This routine is called directly by ConsolePutsCmd to cause a string # to be displayed in the console. # # Arguments: # dest - The output tag to be used: either "stderr" or "stdout". # string - The string to be displayed. proc tixConsoleOutput {dest string} { if ![winfo exists .console] tixConsoleInit if {[.console dlineinfo insert] != {}} { set setend 1 } else { set setend 0 } .console insert output $string $dest if $setend { .console see insert } } # tixConsoleExit -- # # This routine is called by ConsoleEventProc when the main window of # the application is destroyed. # # Arguments: # None. proc tixConsoleExit {} { if ![winfo exists .console] tixConsoleInit exit } # Configure the default Tk console proc tixConsoleEvalAppend {inter} { global tixOption # A slave like the console interp has no global variables set! if {!$inter} { console hide # Change the menubar to Close the console instead of exiting # Your code must provide a way for the user to do a "console show" console eval { if {[winfo exists .menubar.file]} { .menubar.file entryconfigure "Hide Console" \ -underline 0 \ -label Close \ -command [list wm withdraw .] .menubar.file entryconfigure Exit -state disabled } } } console eval ".option configure -font \{$tixOption(fixed_font)\}" console eval { if {[winfo exists .menubar.edit]} { .menubar.edit add sep .menubar.edit add command \ -accelerator 'Ctrl+l' \ -underline 0 \ -label Clear \ -command [list .console delete 1.0 end] bind .console [list .console delete 1.0 end] } if {![winfo exists .menubar.font]} { set m .menubar.font menu $m -tearoff 0 .menubar add cascade -menu .menubar.font \ -underline 0 -label Options global _TixConsole set font [font actual [.console cget -font]] set pos [lsearch $font -family] set _TixConsole(font) [lindex $font [incr pos]] set pos [lsearch $font -size] set _TixConsole(size) [lindex $font [incr pos]] set pos [lsearch $font -weight] set _TixConsole(weight) [lindex $font [incr pos]] set allowed {System Fixedsys Terminal {MS Serif} {MS Sans Serif} Courier {Lucida Console} Tahoma Arial {Courier New} {Times New Roman} {Arial Black} Verdana Garamond {Arial Narrow}} .menubar.font add cascade -label Font -menu $m.font menu $m.font -tearoff 0 foreach font [lsort [font families]] { if {[lsearch $allowed $font] < 0} {continue} $m.font add radiobutton -label $font \ -variable _TixConsole(font) \ -value $font \ -command \ ".console configure -font \"\{$font\} \$_TixConsole(size) \$_TixConsole(weight)\"" } .menubar.font add cascade -label Size -menu $m.size menu $m.size -tearoff 0 foreach size {8 9 10 12 14 16 18} { $m.size add radiobutton -label $size \ -variable _TixConsole(size) \ -value $size \ -command \ ".console configure -font \"\{\$_TixConsole(font)\} $size \$_TixConsole(weight)\"" } .menubar.font add cascade -label Weight -menu $m.weight menu $m.weight -tearoff 0 foreach weight {normal bold} { $m.weight add radiobutton -label [string totit $weight] \ -variable _TixConsole(weight) \ -value $weight \ -command \ ".console configure -font \"\{\$_TixConsole(font)\} \$_TixConsole(size) $weight\"" } } } } Tix8.4.3/library/OldUtil.tcl0000644000122200012240000000576010031436051016116 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: OldUtil.tcl,v 1.5 2004/03/28 02:44:57 hobbs Exp $ # # OldUtil.tcl - # # This is an undocumented file. # Are these features used in Tix : NO. # Should I use these features : NO. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc setenv {name args} { global env if {[llength $args] == 1} { return [set env($name) [lindex $args 0]] } else { if {[info exists env($ename)] == 0} { bgerror "Error in setenv: " "environment variable \"$name\" does not exist" } else { return $env($name) } } } #---------------------------------------------------------------------- # # # U T I L I T Y F U N C T I O N S F O R T I X # # #---------------------------------------------------------------------- # RESET THE STRING IN THE ENTRY proc tixSetEntry {entry string} { set oldstate [lindex [$entry config -state] 4] $entry config -state normal $entry delete 0 end $entry insert 0 $string $entry config -state $oldstate } # GET THE FIRST SELECTED ITEM IN A LIST proc tixListGetSingle {lst} { set indices [$lst curselection] if {$indices != ""} { return [$lst get [lindex $indices 0]] } else { return "" } } #---------------------------------------------------------------------- # RECORD A DIALOG'S POSITION AND RESTORE IT THE NEXT TIME IT IS OPENED #---------------------------------------------------------------------- proc tixDialogRestore {w {flag -geometry}} { global tixDPos if {[info exists tixDPos($w)]} { if {![winfo ismapped $w]} { wm geometry $w $tixDPos($w) wm deiconify $w } } elseif {$flag eq "-geometry"} { update set tixDPos($w) [winfo geometry $w] } else { update set tixDPos($w) +[winfo rootx $w]+[winfo rooty $w] } } #---------------------------------------------------------------------- # RECORD A DIALOG'S POSITION AND RESTORE IT THE NEXT TIME IT IS OPENED #---------------------------------------------------------------------- proc tixDialogWithdraw {w {flag -geometry}} { global tixDPos if {[winfo ismapped $w]} { if {$flag eq "-geometry"} { set tixDPos($w) [winfo geometry $w] } else { set tixDPos($w) +[winfo rootx $w]+[winfo rooty $w] } wm withdraw $w } } #---------------------------------------------------------------------- # RECORD A DIALOG'S POSITION AND RESTORE IT THE NEXT TIME IT IS OPENED #---------------------------------------------------------------------- proc tixDialogDestroy {w {flag -geometry}} { global tixDPos if {[winfo ismapped $w]} { if {$flag eq "-geometry"} { set tixDPos($w) [winfo geometry $w] } else { set tixDPos($w) +[winfo rootx $w]+[winfo rooty $w] } } destroy $w } Tix8.4.3/library/FileEnt.tcl0000644000122200012240000001622710031436051016070 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: FileEnt.tcl,v 1.7 2004/03/28 02:44:57 hobbs Exp $ # # FileEnt.tcl -- # # TixFileEntry Widget: an entry box for entering filenames. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixFileEntry { -classname TixFileEntry -superclass tixLabelWidget -method { invoke filedialog update } -flag { -activatecmd -command -dialogtype -disablecallback -disabledforeground -filebitmap -selectmode -state -validatecmd -value -variable } -forcecall { -variable } -static { -filebitmap } -configspec { {-activatecmd activateCmd ActivateCmd ""} {-command command Command ""} {-dialogtype dialogType DialogType ""} {-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean} {-disabledforeground disabledForeground DisabledForeground #303030} {-filebitmap fileBitmap FileBitmap ""} {-selectmode selectMode SelectMode normal} {-state state State normal} {-validatecmd validateCmd ValidateCmd ""} {-value value Value ""} {-variable variable Variable ""} } -default { {*frame.borderWidth 2} {*frame.relief sunken} {*Button.highlightThickness 0} {*Entry.highlightThickness 0} {*Entry.borderWidth 0} } } proc tixFileEntry:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec set data(varInited) 0 if {$data(-filebitmap) eq ""} { set data(-filebitmap) [tix getbitmap openfile] } } proc tixFileEntry:ConstructFramedWidget {w frame} { upvar #0 $w data tixChainMethod $w ConstructFramedWidget $frame set data(w:entry) [entry $frame.entry] set data(w:button) [button $frame.button -bitmap $data(-filebitmap) \ -takefocus 0] set data(entryfg) [$data(w:entry) cget -fg] pack $data(w:button) -side right -fill both pack $data(w:entry) -side left -expand yes -fill both } proc tixFileEntry:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings $data(w:button) config -command [list tixFileEntry:OpenFile $w] tixSetMegaWidget $data(w:entry) $w # If user press , verify the value and call the -command # bind $data(w:entry) [list tixFileEntry:invoke $w] bind $data(w:entry) { if {[set [tixGetMegaWidget %W](-selectmode)] eq "immediate"} { tixFileEntry:invoke [tixGetMegaWidget %W] } } bind $data(w:entry) { if {"%d" eq "NotifyNonlinear" || "%d" eq "NotifyNonlinearVirtual"} { tixFileEntry:invoke [tixGetMegaWidget %W] } } bind $w [list focus $data(w:entry)] } #---------------------------------------------------------------------- # CONFIG OPTIONS #---------------------------------------------------------------------- proc tixFileEntry:config-state {w value} { upvar #0 $w data if {$value eq "normal"} { $data(w:button) config -state $value $data(w:entry) config -state $value -fg $data(entryfg) catch {$data(w:label) config -fg $data(entryfg)} } else { $data(w:button) config -state $value $data(w:entry) config -state $value -fg $data(-disabledforeground) catch {$data(w:label) config -fg $data(-disabledforeground)} } return "" } proc tixFileEntry:config-value {w value} { tixFileEntry:SetValue $w $value } proc tixFileEntry:config-variable {w arg} { upvar #0 $w data if {[tixVariable:ConfigVariable $w $arg]} { # The value of data(-value) is changed if tixVariable:ConfigVariable # returns true tixFileEntry:SetValue $w $data(-value) } catch { unset data(varInited) } set data(-variable) $arg } #---------------------------------------------------------------------- # User Commands #---------------------------------------------------------------------- proc tixFileEntry:invoke {w} { upvar #0 $w data if {![catch {$data(w:entry) index sel.first}]} { # THIS ENTRY OWNS SELECTION --> TURN IT OFF # $data(w:entry) select from end $data(w:entry) select to end } tixFileEntry:SetValue $w [$data(w:entry) get] } proc tixFileEntry:filedialog {w args} { upvar #0 $w data if {[llength $args]} { return [eval [tix filedialog $data(-dialogtype)] $args] } else { return [tix filedialog $data(-dialogtype)] } } proc tixFileEntry:update {w} { upvar #0 $w data if {[$data(w:entry) get] ne $data(-value)} { tixFileEntry:invoke $w } } #---------------------------------------------------------------------- # Internal Commands #---------------------------------------------------------------------- proc tixFileEntry:OpenFile {w} { upvar #0 $w data if {$data(-activatecmd) != ""} { uplevel #0 $data(-activatecmd) } switch -- $data(-dialogtype) tk_chooseDirectory { set args [list -parent [winfo toplevel $w]] if {[set initial $data(-value)] != ""} { lappend args -initialdir $data(value) } set retval [eval [linsert $args 0 tk_chooseDirectory]] if {$retval != ""} {tixFileEntry:SetValue $w [tixFSNative $retval]} } tk_getOpenFile - tk_getSaveFile { set args [list -parent [winfo toplevel $w]] if {[set initial [$data(w:entry) get]] != ""} { switch -glob -- $initial *.py { set types [list {"Python Files" {.py .pyw}} {"All Files" *}] } *.txt { set types [list {"Text Files" .txt} {"All Files" *}] } *.tcl { set types [list {"Tcl Files" .tcl} {"All Files" *}] } * - default { set types [list {"All Files" *}] } if {[file isfile $initial]} { lappend args -initialdir [file dir $initial] \ -initialfile $initial } elseif {[file isdir $initial]} { lappend args -initialdir $initial } } else { set types [list {"All Files" *}] } lappend args -filetypes $types set retval [eval $data(-dialogtype) $args] if {$retval != ""} {tixFileEntry:SetValue $w [tixFSNative $retval]} } default { set filedlg [tix filedialog $data(-dialogtype)] $filedlg config -parent [winfo toplevel $w] \ -command [list tixFileEntry:FileDlgCallback $w] focus $data(w:entry) $filedlg popup } } proc tixFileEntry:FileDlgCallback {w args} { set filename [tixEvent flag V] tixFileEntry:SetValue $w $filename } proc tixFileEntry:SetValue {w value} { upvar #0 $w data if {[llength $data(-validatecmd)]} { set value [tixEvalCmdBinding $w $data(-validatecmd) "" $value] } if {$data(-state) eq "normal"} { $data(w:entry) delete 0 end $data(w:entry) insert 0 $value $data(w:entry) xview end } set data(-value) $value tixVariable:UpdateVariable $w if {[llength $data(-command)] && !$data(-disablecallback)} { if {![info exists data(varInited)]} { set bind(specs) "" tixEvalCmdBinding $w $data(-command) bind $value } } } proc tixFileEntry:Destructor {w} { upvar #0 $w data tixUnsetMegaWidget $data(w:entry) tixVariable:DeleteVariable $w # Chain this to the superclass # tixChainMethod $w Destructor } Tix8.4.3/library/StdShell.tcl0000644000122200012240000000222507404570302016265 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: StdShell.tcl,v 1.2 2001/12/09 05:04:02 idiscovery Exp $ # # StdShell.tcl -- # # Standard Dialog Shell. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixStdDialogShell { -classname TixStdDialogShell -superclass tixDialogShell -method {} -flag { -cached } -configspec { {-cached cached Cached ""} } } proc tixStdDialogShell:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget set data(w:btns) [tixStdButtonBox $w.btns] set data(w_tframe) [frame $w.tframe] pack $data(w_tframe) -side top -expand yes -fill both pack $data(w:btns) -side bottom -fill both tixCallMethod $w ConstructTopFrame $data(w_tframe) } # Subclasses of StdDialogShell should override this method instead of # ConstructWidget. # # Override : always # chain : before proc tixStdDialogShell:ConstructTopFrame {w frame} { # Do nothing } Tix8.4.3/library/Variable.tcl0000644000122200012240000000500307404570302016265 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Variable.tcl,v 1.4 2001/12/09 05:04:02 idiscovery Exp $ # # Variable.tcl -- # # Routines in this file are used to set up and operate variables # for classes that support the -variable option # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # tixVariable:ConfigVariable -- # # Set up the -variable option for the object $w # # Side effects: # # data(-variable) is changed to the name of the global variable # if the global variable exists, data(-value) takes the value of this # variable. # if the global variable does not exist, it is created with the # current data(-value) # # Return value: # # true is data(-value) is changed, indicating that data(-command) # should be invoked. # proc tixVariable:ConfigVariable {w arg} { upvar #0 $w data set changed 0 if {$data(-variable) != ""} { uplevel #0 \ [list trace vdelete $data(-variable) w "tixVariable:TraceProc $w"] } if {$arg != ""} { if {[uplevel #0 info exists [list $arg]]} { # This global variable exists, we use its value # set data(-value) [uplevel #0 set [list $arg]] set changed 1 } else { # This global variable does not exist; let's set it # uplevel #0 [list set $arg $data(-value)] } uplevel #0 \ [list trace variable $arg w "tixVariable:TraceProc $w"] } return $changed } proc tixVariable:UpdateVariable {w} { upvar #0 $w data if {$data(-variable) != ""} { uplevel #0 \ [list trace vdelete $data(-variable) w "tixVariable:TraceProc $w"] uplevel #0 \ [list set $data(-variable) $data(-value)] uplevel #0 \ [list trace variable $data(-variable) w "tixVariable:TraceProc $w"] # just in case someone has another trace and restricted my change # set data(-value) [uplevel #0 set [list $data(-variable)]] } } proc tixVariable:TraceProc {w name1 name2 op} { upvar #0 $w data set varname $data(-variable) if {[catch {$w config -value [uplevel #0 [list set $varname]]} err]} { uplevel #0 [list set $varname [list [$w cget -value]]] error $err } return } proc tixVariable:DeleteVariable {w} { upvar #0 $w data # Must delete the trace command of the -variable # if {$data(-variable) != ""} { uplevel #0 \ [list trace vdelete $data(-variable) w "tixVariable:TraceProc $w"] } } Tix8.4.3/library/Control.tcl0000644000122200012240000003016210031436051016154 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Control.tcl,v 1.9 2004/03/28 02:44:57 hobbs Exp $ # # Control.tcl -- # # Implements the TixControl Widget. It is called the "SpinBox" # in other toolkits. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixControl { -classname TixControl -superclass tixLabelWidget -method { incr decr invoke update } -flag { -allowempty -autorepeat -command -decrcmd -disablecallback -disabledforeground -incrcmd -initwait -integer -llimit -repeatrate -max -min -selectmode -step -state -validatecmd -value -variable -ulimit } -forcecall { -variable -state } -configspec { {-allowempty allowEmpty AllowEmpty false} {-autorepeat autoRepeat AutoRepeat true} {-command command Command ""} {-decrcmd decrCmd DecrCmd ""} {-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean} {-disabledforeground disabledForeground DisabledForeground #303030} {-incrcmd incrCmd IncrCmd ""} {-initwait initWait InitWait 500} {-integer integer Integer false} {-max max Max ""} {-min min Min ""} {-repeatrate repeatRate RepeatRate 50} {-step step Step 1} {-state state State normal} {-selectmode selectMode SelectMode normal} {-validatecmd validateCmd ValidateCmd ""} {-value value Value 0} {-variable variable Variable ""} } -alias { {-llimit -min} {-ulimit -max} } -default { {.borderWidth 0} {*entry.relief sunken} {*entry.width 5} {*label.anchor e} {*label.borderWidth 0} {*Button.anchor c} {*Button.borderWidth 2} {*Button.highlightThickness 1} {*Button.takeFocus 0} } } proc tixControl:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec set data(varInited) 0 set data(serial) 0 } proc tixControl:ConstructFramedWidget {w frame} { upvar #0 $w data tixChainMethod $w ConstructFramedWidget $frame set data(w:entry) [entry $frame.entry] set data(w:incr) \ [button $frame.incr -bitmap [tix getbitmap incr] -takefocus 0] set data(w:decr) \ [button $frame.decr -bitmap [tix getbitmap decr] -takefocus 0] # tixForm $data(w:entry) -left 0 -top 0 -bottom -1 -right $data(w:decr) # tixForm $data(w:incr) -right -1 -top 0 -bottom %50 # tixForm $data(w:decr) -right -1 -top $data(w:incr) -bottom -1 pack $data(w:entry) -side left -expand yes -fill both pack $data(w:decr) -side bottom -fill both -expand yes pack $data(w:incr) -side top -fill both -expand yes $data(w:entry) delete 0 end $data(w:entry) insert 0 $data(-value) # This value is used to configure the disable/normal fg of the ebtry set data(entryfg) [$data(w:entry) cget -fg] set data(labelfg) [$data(w:label) cget -fg] } proc tixControl:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings bind $data(w:incr) \ [list after idle tixControl:StartRepeat $w 1] bind $data(w:decr) \ [list after idle tixControl:StartRepeat $w -1] # These bindings will stop the button autorepeat when the # mouse button is up foreach btn [list $data(w:incr) $data(w:decr)] { bind $btn [list tixControl:StopRepeat $w] } tixSetMegaWidget $data(w:entry) $w # If user press , verify the value and call the -command # tixAddBindTag $data(w:entry) TixControl:Entry } proc tixControlBind {} { tixBind TixControl:Entry { tixControl:Invoke [tixGetMegaWidget %W] 1 } tixBind TixControl:Entry { tixControl:Escape [tixGetMegaWidget %W] } tixBind TixControl:Entry { [tixGetMegaWidget %W] incr } tixBind TixControl:Entry { [tixGetMegaWidget %W] decr } tixBind TixControl:Entry { if {"%d" eq "NotifyNonlinear" || "%d" eq "NotifyNonlinearVirtual"} { tixControl:Tab [tixGetMegaWidget %W] %d } } tixBind TixControl:Entry { tixControl:KeyPress [tixGetMegaWidget %W] } tixBind TixControl:Entry { # This has a higher priority than the binding # --> so that data(edited) is not set } } #---------------------------------------------------------------------- # CONFIG OPTIONS #---------------------------------------------------------------------- proc tixControl:config-state {w arg} { upvar #0 $w data if {$arg eq "normal"} { $data(w:incr) config -state $arg $data(w:decr) config -state $arg catch { $data(w:label) config -fg $data(labelfg) } $data(w:entry) config -state $arg -fg $data(entryfg) } else { $data(w:incr) config -state $arg $data(w:decr) config -state $arg catch { $data(w:label) config -fg $data(-disabledforeground) } $data(w:entry) config -state $arg -fg $data(-disabledforeground) } } proc tixControl:config-value {w value} { upvar #0 $w data tixControl:SetValue $w $value 0 1 # This will tell the Intrinsics: "Please use this value" # because "value" might be altered by SetValues # return $data(-value) } proc tixControl:config-variable {w arg} { upvar #0 $w data if {[tixVariable:ConfigVariable $w $arg]} { # The value of data(-value) is changed if tixVariable:ConfigVariable # returns true tixControl:SetValue $w $data(-value) 1 1 } catch { unset data(varInited) } set data(-variable) $arg } #---------------------------------------------------------------------- # User Commands #---------------------------------------------------------------------- proc tixControl:incr {w {by 1}} { upvar #0 $w data if {$data(-state) ne "disabled"} { if {![catch {$data(w:entry) index sel.first}]} { $data(w:entry) select from end $data(w:entry) select to end } # CYGNUS - why set value before changing it? #tixControl:SetValue $w [$data(w:entry) get] 0 1 tixControl:AdjustValue $w $by } } proc tixControl:decr {w {by 1}} { upvar #0 $w data if {$data(-state) ne "disabled"} { if {![catch {$data(w:entry) index sel.first}]} { $data(w:entry) select from end $data(w:entry) select to end } # CYGNUS - why set value before changing it? #tixControl:SetValue $w [$data(w:entry) get] 0 1 tixControl:AdjustValue $w [expr {0 - $by}] } } proc tixControl:invoke {w} { upvar #0 $w data tixControl:Invoke $w 0 } proc tixControl:update {w} { upvar #0 $w data if {[info exists data(edited)]} { tixControl:invoke $w } } #---------------------------------------------------------------------- # Internal Commands #---------------------------------------------------------------------- # Change the value by a multiple of the data(-step) # proc tixControl:AdjustValue {w amount} { upvar #0 $w data if {$amount == 1 && [llength $data(-incrcmd)]} { set newValue [tixEvalCmdBinding $w $data(-incrcmd) "" $data(-value)] } elseif {$amount == -1 && [llength $data(-decrcmd)]} { set newValue [tixEvalCmdBinding $w $data(-decrcmd) "" $data(-value)] } else { set newValue [expr {$data(-value) + $amount * $data(-step)}] } if {$data(-state) ne "disabled"} { tixControl:SetValue $w $newValue 0 1 } } proc tixControl:SetValue {w newvalue noUpdate forced} { upvar #0 $w data if {[$data(w:entry) selection present]} { set oldSelection [list [$data(w:entry) index sel.first] \ [$data(w:entry) index sel.last]] } set oldvalue $data(-value) set oldCursor [$data(w:entry) index insert] set changed 0 if {[llength $data(-validatecmd)]} { # Call the user supplied validation command # set data(-value) [tixEvalCmdBinding $w $data(-validatecmd) "" $newvalue] } else { # Here we only allow int or floating numbers # # If the new value is not a valid number, the old value will be # kept due to the "catch" statements # if {[catch {expr 0+$newvalue}]} { set newvalue 0 set data(-value) 0 set changed 1 } if {$newvalue == ""} { if {![string is true -strict $data(-allowempty)]} { set newvalue 0 set changed 1 } else { set data(-value) "" } } if {$newvalue != ""} { # Change this to a valid decimal string (trim leading 0) # regsub -- {^[0]*} $newvalue "" newvalue if {[catch {expr 0+$newvalue}]} { set newvalue 0 set data(-value) 0 set changed 1 } if {$newvalue == ""} { set newvalue 0 } if {[string is true -strict $data(-integer)]} { set data(-value) [tixGetInt -nocomplain $newvalue] } else { if {[catch {set data(-value) [format "%d" $newvalue]}]} { if {[catch {set data(-value) [expr $newvalue+0.0]}]} { set data(-value) $oldvalue } } } # Now perform boundary checking # if {$data(-max) != "" && $data(-value) > $data(-max)} { set data(-value) $data(-max) } if {$data(-min) != "" && $data(-value) < $data(-min)} { set data(-value) $data(-min) } } } if {! $noUpdate} { tixVariable:UpdateVariable $w } if {$forced || ($newvalue ne $data(-value)) || $changed} { $data(w:entry) delete 0 end $data(w:entry) insert 0 $data(-value) $data(w:entry) icursor $oldCursor if {[info exists oldSelection]} { eval [list $data(w:entry) selection range] $oldSelection } } if {!$data(-disablecallback) && $data(-command) != ""} { if {![info exists data(varInited)]} { set bind(specs) "" tixEvalCmdBinding $w $data(-command) bind $data(-value) } } } proc tixControl:Invoke {w forced} { upvar #0 $w data catch { unset data(edited) } if {[catch {$data(w:entry) index sel.first}] == 0} { # THIS ENTRY OWNS SELECTION --> TURN IT OFF # $data(w:entry) select from end $data(w:entry) select to end } tixControl:SetValue $w [$data(w:entry) get] 0 $forced } #---------------------------------------------------------------------- # The three functions StartRepeat, Repeat and StopRepeat make use of the # data(serial) variable to discard spurious repeats: If a button is clicked # repeatedly but is not hold down, the serial counter will increase # successively and all "after" time event handlers will be discarded #---------------------------------------------------------------------- proc tixControl:StartRepeat {w amount} { if {![winfo exists $w]} { return } upvar #0 $w data incr data(serial) # CYGNUS bug fix # Need to set a local variable because otherwise the buttonrelease # callback could change the value of data(serial) between now and # the time the repeat is scheduled. set serial $data(serial) if {![catch {$data(w:entry) index sel.first}]} { $data(w:entry) select from end $data(w:entry) select to end } if {[info exists data(edited)]} { unset data(edited) tixControl:SetValue $w [$data(w:entry) get] 0 1 } tixControl:AdjustValue $w $amount if {$data(-autorepeat)} { after $data(-initwait) tixControl:Repeat $w $amount $serial } focus $data(w:entry) } proc tixControl:Repeat {w amount serial} { if {![winfo exists $w]} { return } upvar #0 $w data if {$serial eq $data(serial)} { tixControl:AdjustValue $w $amount if {$data(-autorepeat)} { after $data(-repeatrate) tixControl:Repeat $w $amount $serial } } } proc tixControl:StopRepeat {w} { upvar #0 $w data incr data(serial) } proc tixControl:Destructor {w} { tixVariable:DeleteVariable $w # Chain this to the superclass # tixChainMethod $w Destructor } # ToDo: maybe should return -code break if the value is not good ... # proc tixControl:Tab {w detail} { upvar #0 $w data if {![info exists data(edited)]} { return } else { unset data(edited) } tixControl:invoke $w } proc tixControl:Escape {w} { upvar #0 $w data $data(w:entry) delete 0 end $data(w:entry) insert 0 $data(-value) } proc tixControl:KeyPress {w} { upvar #0 $w data if {$data(-selectmode) eq "normal"} { set data(edited) 0 return } else { # == "immediate" after 1 tixControl:invoke $w } } Tix8.4.3/library/Primitiv.tcl0000644000122200012240000002443710031436051016347 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Primitiv.tcl,v 1.7 2004/03/28 02:44:57 hobbs Exp $ # # Primitiv.tcl -- # # This is the primitive widget. It is just a frame with proper # inheritance wrapping. All new Tix widgets will be derived from # this widget # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # No superclass, so the superclass switch is not used # # tixWidgetClass tixPrimitive { -virtual true -superclass {} -classname TixPrimitive -method { cget configure subwidget subwidgets } -flag { -background -borderwidth -cursor -height -highlightbackground -highlightcolor -highlightthickness -options -relief -takefocus -width -bd -bg } -static { -options } -configspec { {-background background Background #d9d9d9} {-borderwidth borderWidth BorderWidth 0} {-cursor cursor Cursor ""} {-height height Height 0} {-highlightbackground highlightBackground HighlightBackground #c3c3c3} {-highlightcolor highlightColor HighlightColor black} {-highlightthickness highlightThickness HighlightThickness 0} {-options options Options ""} {-relief relief Relief flat} {-takefocus takeFocus TakeFocus 0 tixVerifyBoolean} {-width width Width 0} } -alias { {-bd -borderwidth} {-bg -background} } } #---------------------------------------------------------------------- # ClassInitialization: #---------------------------------------------------------------------- # not used # Implemented in C # # Override: never proc tixPrimitive:Constructor {w args} { upvar #0 $w data upvar #0 $data(className) classRec # Set up some minimal items in the class record. # set data(w:root) $w set data(rootCmd) $w:root # We need to create the root widget in order to parse the options # database tixCallMethod $w CreateRootWidget # Parse the default options from the options database # tixPrimitive:ParseDefaultOptions $w # Parse the options supplied by the user # tixPrimitive:ParseUserOptions $w $args # Rename the widget command so that it can be use to access # the methods of this class tixPrimitive:MkWidgetCmd $w # Inistalize the Widget Record # tixCallMethod $w InitWidgetRec # Construct the compound widget # tixCallMethod $w ConstructWidget # Do the bindings # tixCallMethod $w SetBindings # Call the configuration methods for all "force call" options # foreach option $classRec(forceCall) { tixInt_ChangeOptions $w $option $data($option) } } # Create only the root widget. We need the root widget to query the option # database. # # Override: seldom. (unless you want to use a toplevel as root widget) # Chain : never. proc tixPrimitive:CreateRootWidget {w args} { upvar #0 $w data upvar #0 $data(className) classRec frame $w -class $data(ClassName) } proc tixPrimitive:ParseDefaultOptions {w} { upvar #0 $w data upvar #0 $data(className) classRec # SET UP THE INSTANCE RECORD ACCORDING TO DEFAULT VALUES IN # THE OPTIONS DATABASE # foreach option $classRec(options) { set spec [tixInt_GetOptionSpec $data(className) $option] if {[lindex $spec 0] eq "="} { continue } set o_name [lindex $spec 1] set o_class [lindex $spec 2] set o_default [lindex $spec 3] if {![catch {option get $w $o_name $o_class} db_default]} { if {$db_default ne ""} { set data($option) $db_default } else { set data($option) $o_default } } else { set data($option) $o_default } } } proc tixPrimitive:ParseUserOptions {w arglist} { upvar #0 $w data upvar #0 $data(className) classRec # SET UP THE INSTANCE RECORD ACCORDING TO COMMAND ARGUMENTS FROM # THE USER OF THE TIX LIBRARY (i.e. Application programmer:) # foreach {option arg} $arglist { if {[lsearch $classRec(options) $option] != "-1"} { set spec [tixInt_GetOptionSpec $data(className) $option] if {[lindex $spec 0] ne "="} { set data($option) $arg } else { set realOption [lindex $spec 1] set data($realOption) $arg } } else { error "unknown option $option. Should be: [tixInt_ListOptions $w]" } } } #---------------------------------------------------------------------- # Initialize the widget record # # # Override: always # Chain : always, before proc tixPrimitive:InitWidgetRec {w} { # default: do nothing } #---------------------------------------------------------------------- # SetBindings # # # Override: sometimes # Chain : sometimes, before # bind TixDestroyHandler { [tixGetMethod %W [set %W(className)] Destructor] %W } proc tixPrimitive:SetBindings {w} { upvar #0 $w data if {[winfo toplevel $w] eq $w} { bindtags $w [concat TixDestroyHandler [bindtags $w]] } else { bind $data(w:root) \ "[tixGetMethod $w $data(className) Destructor] $w" } } #---------------------------------------------------------------------- # PrivateMethod: ConstructWidget # # Construct and set up the compound widget # # Override: sometimes # Chain : sometimes, before # proc tixPrimitive:ConstructWidget {w} { upvar #0 $w data $data(rootCmd) config \ -background $data(-background) \ -borderwidth $data(-borderwidth) \ -cursor $data(-cursor) \ -relief $data(-relief) if {$data(-width) != 0} { $data(rootCmd) config -width $data(-width) } if {$data(-height) != 0} { $data(rootCmd) config -height $data(-height) } set rootname *[string range $w 1 end] foreach {spec value} $data(-options) { option add $rootname*$spec $value 100 } } #---------------------------------------------------------------------- # PrivateMethod: MkWidgetCmd # # Construct and set up the compound widget # # Override: sometimes # Chain : sometimes, before # proc tixPrimitive:MkWidgetCmd {w} { upvar #0 $w data rename $w $data(rootCmd) tixInt_MkInstanceCmd $w } #---------------------------------------------------------------------- # ConfigOptions: #---------------------------------------------------------------------- #---------------------------------------------------------------------- # ConfigMethod: config # # Configure one option. # # Override: always # Chain : automatic. # # Note the hack of [winfo width] in this procedure # # The hack is necessary because of the bad interaction between TK's geometry # manager (the packer) and the frame widget. The packer determines the size # of the root widget of the ComboBox (a frame widget) according to the # requirement of the slaves inside the frame widget, NOT the -width # option of the frame widget. # # However, everytime the frame widget is # configured, it sends a geometry request to the packer according to its # -width and -height options and the packer will temporarily resize # the frame widget according to the requested size! The packer then realizes # something is wrong and revert to the size determined by the slaves. This # cause a flash on the screen. # foreach opt {-height -width -background -borderwidth -cursor -highlightbackground -highlightcolor -relief -takefocus -bd -bg} { set tixPrimOpt($opt) 1 } proc tixPrimitive:config {w option value} { global tixPrimOpt upvar #0 $w data if {[info exists tixPrimOpt($option)]} { $data(rootCmd) config $option $value } } #---------------------------------------------------------------------- # PublicMethods: #---------------------------------------------------------------------- #---------------------------------------------------------------------- # This method is used to implement the "subwidgets" widget command. # Will be re-written in C. It can't be used as a public method because # of the lame substring comparison routines used in tixClass.c # # proc tixPrimitive:subwidgets {w type args} { upvar #0 $w data case $type { -class { set name [lindex $args 0] set args [lrange $args 1 end] # access subwidgets of a particular class # # note: if $name=="Frame", will *not return the root widget as well # set sub "" foreach des [tixDescendants $w] { if {[winfo class $des] eq $name} { lappend sub $des } } # Note: if the there is no subwidget of this class, does not # cause any error. # if {$args eq ""} { return $sub } else { foreach des $sub { eval [linsert $args 0 $des] } return "" } } -group { set name [lindex $args 0] set args [lrange $args 1 end] # access subwidgets of a particular group # if {[info exists data(g:$name)]} { if {$args eq ""} { set ret "" foreach item $data(g:$name) { lappend ret $w.$item } return $ret } else { foreach item $data(g:$name) { eval [linsert $args 0 $w.$item] } return "" } } else { error "no such subwidget group $name" } } -all { set sub [tixDescendants $w] if {$args eq ""} { return $sub } else { foreach des $sub { eval [linsert $args 0 $des] } return "" } } default { error "unknown flag $type, should be -all, -class or -group" } } } #---------------------------------------------------------------------- # PublicMethod: subwidget # # Access a subwidget withe a particular name # # Override: never # Chain : never # # This is implemented in native C code in tixClass.c # proc tixPrimitive:subwidget {w name args} { upvar #0 $w data if {[info exists data(w:$name)]} { if {$args eq ""} { return $data(w:$name) } else { return [eval [linsert $args 0 $data(w:$name)]] } } else { error "no such subwidget $name" } } #---------------------------------------------------------------------- # PrivateMethods: #---------------------------------------------------------------------- # delete the widget record and remove the command # proc tixPrimitive:Destructor {w} { upvar #0 $w data if {![info exists data(w:root)]} { return } if {[llength [info commands $w]]} { # remove the command rename $w "" } if {[llength [info commands $data(rootCmd)]]} { # remove the command of the root widget rename $data(rootCmd) "" } # delete the widget record catch {unset data} } Tix8.4.3/library/HListDD.tcl0000644000122200012240000001062407404570302016000 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: HListDD.tcl,v 1.3 2001/12/09 05:04:02 idiscovery Exp $ # # HListDD.tcl -- # # !!! PRE-ALPHA CODE, NOT USED, DON'T USE !!! # # This file implements drag+drop for HList. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # # events # # proc tixHListSingle:DragTimer {w ent} { case [tixHListSingle:GetState $w] { {1} { # fire up } } } #---------------------------------------------------------------------- # # Drag + Drop Bindings # #---------------------------------------------------------------------- #----------------------------------------# # Sending Actions # #----------------------------------------# #---------------------------------------------------------------------- # tixHListSingle:Send:WaitDrag -- # # Sender wait for dragging action #---------------------------------------------------------------------- proc tixHListSingle:Send:WaitDrag {w x y} { global tixPriv set ent [tixHListSingle:GetNearest $w $y] if {$ent != ""} { $w anchor set $ent $w select clear $w select set $ent set tixPriv(dd,$w:moved) 0 set tixPriv(dd,$w:entry) $ent # set browsecmd [$w cget -browsecmd] # if {$browsecmd != "" && $ent != ""} { # eval $browsecmd $ent # } } } proc tixHListSingle:Send:StartDrag {w x y} { global tixPriv set dd [tixGetDragDropContext $w] if {![info exists tixPriv(dd,$w:entry)]} { return } if {$tixPriv(dd,$w:entry) == ""} { return } if {$tixPriv(dd,$w:moved) == 0} { $w dragsite set $tixPriv(dd,$w:entry) set tixPriv(dd,$w:moved) 1 $dd config -source $w -command [list tixHListSingle:Send:Cmd $w] $dd startdrag $X $Y } else { $dd drag $X $Y } } proc tixHListSingle:Send:DoneDrag {w x y} { global tixPriv global moved if {![info exists tixPriv(dd,$w:entry)]} { return } if {$tixPriv(dd,$w:entry) == ""} { return } if {$tixPriv(dd,$w:moved) == 1} { set dd [tixGetDragDropContext $w] $dd drop $X $Y } $w dragsite clear catch {unset tixPriv(dd,$w:moved)} catch {unset tixPriv(dd,$w:entry)} } proc tixHListSingle:Send:Cmd {w option args} { set dragCmd [$w cget -dragcmd] if {$dragCmd != ""} { return [eval $dragCmd $option $args] } # Perform the default action # case "$option" { who { return $w } types { return {data text} } get { global tixPriv if {[lindex $args 0] == "text"} { if {$tixPriv(dd,$w:entry) != ""} { return [$w entrycget $tixPriv(dd,$w:entry) -text] } } if {[lindex $args 0] == "data"} { if {$tixPriv(dd,$w:entry) != ""} { return [$w entrycget $tixPriv(dd,$w:entry) -data] } } } } } #----------------------------------------# # Receiving Actions # #----------------------------------------# proc tixHListSingle:Rec:DragOver {w sender x y} { if {[$w cget -selectmode] != "dragdrop"} { return } set ent [tixHListSingle:GetNearest $w $y] if {$ent != ""} { $w dropsite set $ent } else { $w dropsite clear } } proc tixHListSingle:Rec:DragIn {w sender x y} { if {[$w cget -selectmode] != "dragdrop"} { return } set ent [tixHListSingle:GetNearest $w $y] if {$ent != ""} { $w dropsite set $ent } else { $w dropsite clear } } proc tixHListSingle:Rec:DragOut {w sender x y} { if {[$w cget -selectmode] != "dragdrop"} { return } $w dropsite clear } proc tixHListSingle:Rec:Drop {w sender x y} { if {[$w cget -selectmode] != "dragdrop"} { return } $w dropsite clear set ent [tixHListSingle:GetNearest $w $y] if {$ent != ""} { $w anchor set $ent $w select clear $w select set $ent } set dropCmd [$w cget -dropcmd] if {$dropCmd != ""} { eval $dropCmd $sender $x $y return } # set browsecmd [$w cget -browsecmd] # if {$browsecmd != "" && $ent != ""} { # eval $browsecmd [list $ent] # } } tixDropBind TixHListSingle "tixHListSingle:Rec:DragIn %W %S %x %y" tixDropBind TixHListSingle "tixHListSingle:Rec:DragOver %W %S %x %y" tixDropBind TixHListSingle "tixHListSingle:Rec:DragOut %W %S %x %y" tixDropBind TixHListSingle "tixHListSingle:Rec:Drop %W %S %x %y" Tix8.4.3/library/SWindow.tcl0000644000122200012240000001537407404570302016146 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SWindow.tcl,v 1.4 2001/12/09 05:04:02 idiscovery Exp $ # # SWindow.tcl -- # # This file implements Scrolled Window widgets # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # # # Example: # # tixScrolledWindow .w # set window [.w subwidget window] # # Now you can put a whole widget hierachy inside $window. # # # button $window.b # pack $window.b # # Author's note # # Note, the current implementation does not allow the child window # to be outside of the parent window when the parent's size is larger # than the child's size. This is fine for normal operations. However, # it is not suitable for an MDI master window. Therefore, you will notice # that the MDI master window is not a subclass of ScrolledWidget at all. # # tixWidgetClass tixScrolledWindow { -classname TixScrolledWindow -superclass tixScrolledWidget -method { } -flag { -expandmode -shrink -xscrollincrement -yscrollincrement } -static { } -configspec { {-expandmode expandMode ExpandMode expand} {-shrink shrink Shrink ""} {-xscrollincrement xScrollIncrement ScrollIncrement ""} {-yscrollincrement yScrollIncrement ScrollIncrement ""} {-scrollbarspace scrollbarSpace ScrollbarSpace {both}} } -default { {.scrollbar auto} {*window.borderWidth 1} {*f1.borderWidth 1} {*Scrollbar.borderWidth 1} {*Scrollbar.takeFocus 0} } } proc tixScrolledWindow:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec set data(dx) 0 set data(dy) 0 } proc tixScrolledWindow:ConstructWidget {w} { upvar #0 $w data global tcl_platform tixChainMethod $w ConstructWidget set data(pw:f1) \ [frame $w.f1 -relief sunken] set data(pw:f2) \ [frame $w.f2 -bd 0] set data(w:window) \ [frame $w.f2.window -bd 0] pack $data(pw:f2) -in $data(pw:f1) -expand yes -fill both set data(w:hsb) \ [scrollbar $w.hsb -orient horizontal -takefocus 0] set data(w:vsb) \ [scrollbar $w.vsb -orient vertical -takefocus 0] # set data(w:pann) \ # [frame $w.pann -bd 2 -relief groove] $data(pw:f1) config -highlightthickness \ [$data(w:hsb) cget -highlightthickness] set data(pw:client) $data(pw:f1) } proc tixScrolledWindow:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings $data(w:hsb) config -command "tixScrolledWindow:ScrollBarCB $w x" $data(w:vsb) config -command "tixScrolledWindow:ScrollBarCB $w y" tixManageGeometry $data(w:window) "tixScrolledWindow:WindowGeomProc $w" } # This guy just keeps asking for a same size as the w:window # proc tixScrolledWindow:WindowGeomProc {w args} { upvar #0 $w data set rw [winfo reqwidth $data(w:window)] set rh [winfo reqheight $data(w:window)] if {$rw != [winfo reqwidth $data(pw:f2)] || $rh != [winfo reqheight $data(pw:f2)]} { tixGeometryRequest $data(pw:f2) $rw $rh } } proc tixScrolledWindow:Scroll {w axis total window first args} { upvar #0 $w data case [lindex $args 0] { "scroll" { set amt [lindex $args 1] set unit [lindex $args 2] case $unit { "units" { set incr $axis\scrollincrement if {$data(-$incr) != ""} { set by $data(-$incr) } else { set by [expr $window / 16] } set first [expr $first + $amt * $by] } "pages" { set first [expr $first + $amt * $window] } } } "moveto" { set to [lindex $args 1] set first [expr int($to * $total)] } } if {[expr $first + $window] > $total} { set first [expr $total - $window] } if {$first < 0} { set first 0 } return $first } proc tixScrolledWindow:ScrollBarCB {w axis args} { upvar #0 $w data set bd \ [expr [$data(pw:f1) cget -bd] + [$data(pw:f1) cget -highlightthickness]] set fw [expr [winfo width $data(pw:f1)] - 2*$bd] set fh [expr [winfo height $data(pw:f1)] - 2*$bd] set ww [winfo reqwidth $data(w:window)] set wh [winfo reqheight $data(w:window)] if {$axis == "x"} { set data(dx) \ [eval tixScrolledWindow:Scroll $w $axis $ww $fw $data(dx) $args] } else { set data(dy) \ [eval tixScrolledWindow:Scroll $w $axis $wh $fh $data(dy) $args] } tixWidgetDoWhenIdle tixScrolledWindow:PlaceWindow $w } proc tixScrolledWindow:PlaceWindow {w} { upvar #0 $w data set bd \ [expr [$data(pw:f1) cget -bd] + [$data(pw:f1) cget -highlightthickness]] set fw [expr [winfo width $data(pw:f1)] - 2*$bd] set fh [expr [winfo height $data(pw:f1)] - 2*$bd] set ww [winfo reqwidth $data(w:window)] set wh [winfo reqheight $data(w:window)] tixMapWindow $data(w:window) if {$data(-expandmode) == "expand"} { if {$ww < $fw} { set ww $fw } if {$wh < $fh} { set wh $fh } } if {$data(-shrink) == "x"} { if {$fw < $ww} { set ww $fw } } tixMoveResizeWindow $data(w:window) -$data(dx) -$data(dy) $ww $wh set first [expr $data(dx).0 / $ww.0] set last [expr $first + ($fw.0 / $ww.0)] $data(w:hsb) set $first $last set first [expr $data(dy).0 / $wh.0] set last [expr $first + ($fh.0 / $wh.0)] $data(w:vsb) set $first $last } #---------------------------------------------------------------------- # virtual functions to query the client window's scroll requirement # # When this function is called, the scrolled window is going to be # mapped, if it is still unmapped. Also, it is going to change its # size. Therefore, it is a good time to check whether the w:window needs # to be re-positioned due to the new parent window size. #---------------------------------------------------------------------- proc tixScrolledWindow:GeometryInfo {w mW mH} { upvar #0 $w data set bd \ [expr [$data(pw:f1) cget -bd] + [$data(pw:f1) cget -highlightthickness]] set fw [expr $mW -2*$bd] set fh [expr $mH -2*$bd] set ww [winfo reqwidth $data(w:window)] set wh [winfo reqheight $data(w:window)] # Calculate the X info # if {$fw >= $ww} { if {$data(dx) > 0} { set data(dx) 0 } set xinfo [list 0.0 1.0] } else { set maxdx [expr $ww - $fw] if {$data(dx) > $maxdx} { set data(dx) $maxdx } set first [expr $data(dx).0 / $ww.0] set last [expr $first + ($fw.0 / $ww.0)] set xinfo [list $first $last] } # Calculate the Y info # if {$fh >= $wh} { if {$data(dy) > 0} { set data(dy) 0 } set yinfo [list 0.0 1.0] } else { set maxdy [expr $wh - $fh] if {$data(dy) > $maxdy} { set data(dy) $maxdy } set first [expr $data(dy).0 / $wh.0] set last [expr $first + ($fh.0 / $wh.0)] set yinfo [list $first $last] } return [list $xinfo $yinfo] } Tix8.4.3/library/Select.tcl0000644000122200012240000001604407404570302015766 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Select.tcl,v 1.3 2001/12/09 05:04:02 idiscovery Exp $ # # Select.tcl -- # # Implement the tixSelect widget. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixSelect { -superclass tixLabelWidget -classname TixSelect -method { add button invoke } -flag { -allowzero -buttontype -command -disablecallback -orientation -orient -padx -pady -radio -selectedbg -state -validatecmd -value -variable } -forcecall { -variable -state } -static { -allowzero -orientation -padx -pady -radio } -configspec { {-allowzero allowZero AllowZero 0 tixVerifyBoolean} {-buttontype buttonType ButtonType button} {-command command Command ""} {-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean} {-orientation orientation Orientation horizontal} {-padx padx Pad 0} {-pady pady Pad 0} {-radio radio Radio 0 tixVerifyBoolean} {-selectedbg selectedBg SelectedBg gray} {-state state State normal} {-validatecmd validateCmd ValidateCmd ""} {-value value Value ""} {-variable variable Variable ""} } -alias { {-orient -orientation} } -default { {*frame.borderWidth 1} {*frame.relief sunken} {*Button.borderWidth 2} {*Button.highlightThickness 0} } } proc tixSelect:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec set data(items) "" set data(buttonbg) "" set data(varInited) 0 } #---------------------------------------------------------------------- # CONFIG OPTIONS #---------------------------------------------------------------------- proc tixSelect:config-state {w arg} { upvar #0 $w data if {$arg == "disabled"} { foreach item $data(items) { $data(w:$item) config -state disabled -relief raised \ -bg $data(buttonbg) } if {![info exists data(labelFg)]} { set data(labelFg) [$data(w:label) cget -foreground] catch { $data(w:label) config -fg [tix option get disabled_fg] } } } else { foreach item $data(items) { if {[lsearch $data(-value) $item] != -1} { # This button is selected # $data(w:$item) config -relief sunken -bg $data(-selectedbg) \ -state normal } else { $data(w:$item) config -relief raised -bg $data(buttonbg) \ -command "$w invoke $item" -state normal } } if {[info exists data(labelFg)]} { catch { $data(w:label) config -fg $data(labelFg) } unset data(labelFg) } } return "" } proc tixSelect:config-variable {w arg} { upvar #0 $w data set oldValue $data(-value) if {[tixVariable:ConfigVariable $w $arg]} { # The value of data(-value) is changed if tixVariable:ConfigVariable # returns true set newValue $data(-value) set data(-value) $oldValue tixSelect:config-value $w $newValue } catch { unset data(varInited) } set data(-variable) $arg } proc tixSelect:config-value {w value} { upvar #0 $w data # sanity checking # foreach item $value { if {[lsearch $data(items) $item] == "-1"} { error "subwidget \"$item\" does not exist" } } tixSelect:SetValue $w $value } #---------------------------------------------------------------------- # WIDGET COMMANDS #---------------------------------------------------------------------- proc tixSelect:add {w name args} { upvar #0 $w data set data(w:$name) [eval $data(-buttontype) $data(w:frame).$name -command \ [list "$w invoke $name"] -takefocus 0 $args] if {$data(-orientation) == "horizontal"} { pack $data(w:$name) -side left -expand yes -fill y\ -padx $data(-padx) -pady $data(-pady) } else { pack $data(w:$name) -side top -expand yes -fill x\ -padx $data(-padx) -pady $data(-pady) } if {$data(-state) == "disabled"} { $data(w:$name) config -relief raised -state disabled } # find out the background of the buttons # if {$data(buttonbg) == ""} { set data(buttonbg) [lindex [$data(w:$name) config -background] 4] } lappend data(items) $name } # Obsolete command # proc tixSelect:button {w name args} { upvar #0 $w data if {$args != ""} { return [eval $data(w:$name) $args] } else { return $w.$name } } # This is called when a button is invoked # proc tixSelect:invoke {w button} { upvar #0 $w data if {$data(-state) != "normal"} { return } set newValue $data(-value) if {[lsearch $data(-value) $button] != -1} { # This button was selected # if {[llength $data(-value)] > 1 || [tixGetBoolean $data(-allowzero)]} { # Take the button from the selected list # set newValue "" foreach item $data(-value) { if {$item != $button} { lappend newValue $item } } } } else { # This button was not selected # if {[tixGetBoolean $data(-radio)]} { # The button become the sole item in the list # set newValue [list $button] } else { # Add this button into the list # lappend newValue $button } } if {$newValue != $data(-value)} { tixSelect:SetValue $w $newValue } } #---------------------------------------------------------------------- # Private functions #---------------------------------------------------------------------- proc tixSelect:SetValue {w newValue {noUpdate 0}} { upvar #0 $w data set oldValue $data(-value) if {$data(-validatecmd) != ""} { set data(-value) [tixEvalCmdBinding $w $data(-validatecmd) "" $newValue] } else { if {[tixGetBoolean $data(-radio)] && [llength $newValue] > 1} { error "cannot choose more than one items in a radio box" } if {![tixGetBoolean $data(-allowzero)] && [llength $newValue] == 0} { error "empty selection not allowed" } set data(-value) $newValue } if {! $noUpdate} { tixVariable:UpdateVariable $w } # Reset all to be unselected # foreach item $data(items) { if {[lsearch $data(-value) $item] == -1} { # Is unselected # if {[lsearch $oldValue $item] != -1} { # was selected # -> popup the button, call command # $data(w:$item) config -relief raised -bg $data(buttonbg) tixSelect:CallCommand $w $item 0 } } else { # Is selected # if {[lsearch $oldValue $item] == -1} { # was unselected # -> push down the button, call command # $data(w:$item) config -relief sunken -bg $data(-selectedbg) tixSelect:CallCommand $w $item 1 } } } } proc tixSelect:CallCommand {w name value} { upvar #0 $w data if {!$data(-disablecallback) && $data(-command) != ""} { if {![info exists data(varInited)]} { set bind(specs) "name value" set bind(name) $name set bind(value) $value tixEvalCmdBinding $w $data(-command) bind $name $value } } } proc tixSelect:Destructor {w} { tixVariable:DeleteVariable $w # Chain this to the superclass # tixChainMethod $w Destructor } Tix8.4.3/library/ChkList.tcl0000644000122200012240000001173710031436051016104 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: ChkList.tcl,v 1.6 2004/03/28 02:44:57 hobbs Exp $ # # ChkList.tcl -- # # This file implements the TixCheckList widget. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixCheckList { -classname TixCheckList -superclass tixTree -method { getselection getstatus setstatus } -flag { -radio } -configspec { {-radio radio Radio false tixVerifyBoolean} {-ignoreinvoke ignoreInvoke IgnoreInvoke true tixVerifyBoolean} } -static { -radio } -default { {.scrollbar auto} {.doubleClick false} {*Scrollbar.takeFocus 0} {*borderWidth 1} {*hlist.background #c3c3c3} {*hlist.drawBranch 1} {*hlist.height 10} {*hlist.highlightBackground #d9d9d9} {*hlist.indicator 1} {*hlist.indent 20} {*hlist.itemType imagetext} {*hlist.padX 3} {*hlist.padY 0} {*hlist.relief sunken} {*hlist.takeFocus 1} {*hlist.wideSelection 0} {*hlist.width 20} } } proc tixCheckList:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec if {$data(-radio)} { set data(selected) "" } } #---------------------------------------------------------------------- # # Widget commands # #---------------------------------------------------------------------- # Helper function for getselection # proc tixCheckList:GetSel {w var ent mode} { upvar #0 $w data upvar $var img set ents "" catch { if {[$data(w:hlist) entrycget $ent -bitmap] eq $img($mode)} { lappend ents $ent } } foreach child [$data(w:hlist) info children $ent] { set ents [concat $ents [tixCheckList:GetSel $w img $child $mode]] } return $ents } # Mode can be on, off, default # proc tixCheckList:getselection {w {mode on}} { upvar #0 $w data set img(on) [tix getbitmap ck_on] set img(off) [tix getbitmap ck_off] set img(default) [tix getbitmap ck_def] set ents "" foreach child [$data(w:hlist) info children] { set ents [concat $ents [tixCheckList:GetSel $w img $child $mode]] } return $ents } proc tixCheckList:getstatus {w ent} { upvar #0 $w data if {[$data(w:hlist) entrycget $ent -itemtype] eq "imagetext"} { set img(on) [tix getbitmap ck_on] set img(off) [tix getbitmap ck_off] set img(default) [tix getbitmap ck_def] set bitmap [$data(w:hlist) entrycget $ent -bitmap] if {$bitmap eq $img(on)} { set status on } if {$bitmap eq $img(off)} { set status off } if {$bitmap eq $img(default)} { set status default } } if {[info exists status]} { return $status } else { return "none" } } proc tixCheckList:setstatus {w ent {mode on}} { upvar #0 $w data if {$data(-radio)} { set status [tixCheckList:getstatus $w $ent] if {$status eq $mode} { return } if {$mode eq "on"} { if {$data(selected) != ""} { tixCheckList:Select $w $data(selected) off } set data(selected) $ent tixCheckList:Select $w $ent $mode } elseif {$mode eq "off"} { if {$data(selected) eq $ent} { return } tixCheckList:Select $w $ent $mode } else { tixCheckList:Select $w $ent $mode } } else { tixCheckList:Select $w $ent $mode } } proc tixCheckList:Select {w ent mode} { upvar #0 $w data if {[$data(w:hlist) entrycget $ent -itemtype] eq "imagetext"} { set img(on) ck_on set img(off) ck_off set img(default) ck_def if [catch { set bitmap [tix getbitmap $img($mode)] $data(w:hlist) entryconfig $ent -bitmap $bitmap }] { # must be the "none" mode # catch { $data(w:hlist) entryconfig $ent -bitmap "" } } } return $mode } proc tixCheckList:HandleCheck {w ent} { upvar #0 $w data if {[$data(w:hlist) entrycget $ent -itemtype] eq "imagetext"} { set img(on) [tix getbitmap ck_on] set img(off) [tix getbitmap ck_off] set img(default) [tix getbitmap ck_def] set curMode [tixCheckList:getstatus $w $ent] case $curMode { on { tixCheckList:setstatus $w $ent off } off { tixCheckList:setstatus $w $ent on } none { return } default { tixCheckList:setstatus $w $ent on } } } } proc tixCheckList:Command {w B} { upvar #0 $w data upvar $B bind set ent [tixEvent flag V] tixCheckList:HandleCheck $w $ent tixChainMethod $w Command $B } proc tixCheckList:BrowseCmd {w B} { upvar #0 $w data upvar $B bind set ent [tixEvent flag V] case [tixEvent type] { { } { tixCheckList:HandleCheck $w $ent } } tixChainMethod $w BrowseCmd $B } Tix8.4.3/library/PanedWin.tcl0000644000122200012240000006727310031436051016256 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: PanedWin.tcl,v 1.7 2004/03/28 02:44:57 hobbs Exp $ # # PanedWin.tcl -- # # This file implements the TixPanedWindow widget # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixPanedWindow { -classname TixPanedWindow -superclass tixPrimitive -method { add delete forget manage panecget paneconfigure panes setsize } -flag { -command -dynamicgeometry -handleactivebg -handlebg -orient -orientation -panebd -paneborderwidth -panerelief -separatoractivebg -separatorbg } -static { -orientation } -configspec { {-command command Command ""} {-dynamicgeometry dynamicGeometry DynamicGeometry 1 tixVerifyBoolean} {-handleactivebg handleActiveBg HandleActiveBg #ececec} {-handlebg handleBg Background #d9d9d9} {-orientation orientation Orientation vertical} {-paneborderwidth paneBorderWidth PaneBorderWidth 1} {-panerelief paneRelief PaneRelief raised} {-separatoractivebg separatorActiveBg SeparatorActiveBg red} {-separatorbg separatorBg Background #d9d9d9} } -alias { {-panebd -paneborderwidth} {-orient -orientation} } } #---------------------------------------------------------------------- # ClassInitialization: #---------------------------------------------------------------------- proc tixPanedWindow:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec set data(items) "" set data(nItems) 0 set data(totalsize) 0 set data(movePending) 0 set data(repack) 0 set data(counter) 0 set data(maxReqW) 1 set data(maxReqH) 1 } proc tixPanedWindow:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget # Do nothing } proc tixPanedWindow:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings bind $w [list tixPanedWindow:MasterGeomProc $w ""] } #---------------------------------------------------------------------- # ConfigOptions: #---------------------------------------------------------------------- proc tixPanedWindow:config-handlebg {w arg} { upvar #0 $w data for {set i 1} {$i < $data(nItems)} {incr i} { $data(btn,$i) config -bg $arg } } #---------------------------------------------------------------------- # PublicMethods: #---------------------------------------------------------------------- # method: add # # Adds a new pane into the PanedWindow. # # options -size -max -min -allowresize # proc tixPanedWindow:add {w name args} { upvar #0 $w data if {[winfo exists $w.$name] && !$data($name,forgotten)} { error "Pane $name is already managed" } # Step 1: Parse the options to get the children's size options # The default values # if {[info exists data($name,forgotten)]} { set option(-size) $data($name,size) set option(-min) $data($name,min) set option(-max) $data($name,max) set option(-allowresize) $data($name,allowresize) set option(-expand) $data($name,expand) } else { set option(-size) 0 set option(-min) 0 set option(-max) 100000 set option(-allowresize) 1 set option(-expand) 0 } set option(-before) "" set option(-after) "" set option(-at) "" set validOpts {-after -allowresize -at -before -expand -max -min -size} tixHandleOptions option $validOpts $args set data($name,size) $option(-size) set data($name,rsize) $option(-size) set data($name,min) $option(-min) set data($name,max) $option(-max) set data($name,allowresize) $option(-allowresize) set data($name,expand) $option(-expand) set data($name,forgotten) 0 if {$data($name,expand) < 0} { set data($name,expand) 0 } # Step 2: Add the frame and the separator (if necessary) # if {![winfo exist $w.$name]} { # need to check because the frame may have been "forget'ten" # frame $w.$name -bd $data(-paneborderwidth) -relief $data(-panerelief) } if {$option(-at) != ""} { set at [tixGetInt $option(-at)] if {$at < 0} { set at 0 } } elseif {$option(-after) != ""} { set index [lsearch -exact $data(items) $option(-after)] if {$index == -1} { error "Pane $option(-after) doesn't exists" } else { set at [incr index] } } elseif {$option(-before) != ""} { set index [lsearch -exact $data(items) $option(-before)] if {$index == -1} { error "Pane $option(-before) doesn't exists" } set at $index } else { set at end } set data(items) [linsert $data(items) $at $name] incr data(nItems) if {$data(nItems) > 1} { tixPanedWindow:AddSeparator $w } set data(w:$name) $w.$name # Step 3: Add the new frame. Adjust the window later (do when idle) # tixManageGeometry $w.$name [list tixPanedWindow:ClientGeomProc $w] bind $w.$name \ [list tixPanedWindow:ClientGeomProc $w "" $w.$name] tixPanedWindow:RepackWhenIdle $w return $w.$name } proc tixPanedWindow:manage {w name args} { upvar #0 $w data if {![winfo exists $w.$name]} { error "Pane $name does not exist" } if {!$data($name,forgotten)} { error "Pane $name is already managed" } tixMapWindow $data(w:$name) eval tixPanedWindow:add $w [list $name] $args } proc tixPanedWindow:forget {w name} { upvar #0 $w data if {![winfo exists $w.$name]} { error "Pane $name does not exist" } if $data($name,forgotten) { # It has already been forgotten # return } set items "" foreach item $data(items) { if {$item != $name} { lappend items $item } } set data(items) $items incr data(nItems) -1 set i $data(nItems) if {$i > 0} { destroy $data(btn,$i) destroy $data(sep,$i) unset data(btn,$i) unset data(sep,$i) } set data($name,forgotten) 1 tixUnmapWindow $w.$name tixPanedWindow:RepackWhenIdle $w } proc tixPanedWindow:delete {w name} { upvar #0 $w data if {![winfo exists $w.$name]} { error "Pane $name does not exist" } if {!$data($name,forgotten)} { set items "" foreach item $data(items) { if {$item != $name} { lappend items $item } } set data(items) $items incr data(nItems) -1 set i $data(nItems) if {$i > 0} { destroy $data(btn,$i) destroy $data(sep,$i) unset data(btn,$i) unset data(sep,$i) } } unset data($name,allowresize) unset data($name,expand) unset data($name,forgotten) unset data($name,max) unset data($name,min) unset data($name,rsize) unset data($name,size) unset data(w:$name) destroy $w.$name tixPanedWindow:RepackWhenIdle $w } proc tixPanedWindow:paneconfigure {w name args} { upvar #0 $w data if {![info exists data($name,size)]} { error "pane \"$name\" does not exist in $w" } set len [llength $args] if {$len == 0} { set value [$data(w:$name) configure] lappend value [list -allowresize "" "" "" $data($name,allowresize)] lappend value [list -expand "" "" "" $data($name,expand)] lappend value [list -max "" "" "" $data($name,max)] lappend value [list -min "" "" "" $data($name,min)] lappend value [list -size "" "" "" $data($name,size)] return $value } if {$len == 1} { case [lindex $args 0] { -allowresize { return [list -allowresize "" "" "" $data($name,allowresize)] } -expand { return [list -expand "" "" "" $data($name,expand)] } -min { return [list -min "" "" "" $data($name,min)] } -max { return [list -max "" "" "" $data($name,max)] } -size { return [list -size "" "" "" $data($name,size)] } default { return [$data(w:$name) configure [lindex $args 0]] } } } # By default handle each of the options # set option(-allowresize) $data($name,allowresize) set option(-expand) $data($name,expand) set option(-min) $data($name,min) set option(-max) $data($name,max) set option(-size) $data($name,size) tixHandleOptions -nounknown option {-allowresize -expand -max -min -size} \ $args # # the widget options set new_args "" foreach {flag value} $args { case $flag { {-expand -min -max -allowresize -size} { } default { lappend new_args $flag lappend new_args $value } } } if {[llength $new_args] >= 2} { eval $data(w:$name) configure $new_args } # # The add-on options set data($name,allowresize) $option(-allowresize) set data($name,expand) $option(-expand) set data($name,max) $option(-max) set data($name,min) $option(-min) set data($name,rsize) $option(-size) set data($name,size) $option(-size) # # Integrity check if {$data($name,expand) < 0} { set data($name,expand) 0 } if {$data($name,size) < $data($name,min)} { set data($name,size) $data($name,min) } if {$data($name,size) > $data($name,max)} { set data($name,size) $data($name,max) } tixPanedWindow:RepackWhenIdle $w return "" } proc tixPanedWindow:panecget {w name option} { upvar #0 $w data if {![info exists data($name,size)]} { error "pane \"$name\" does not exist in $w" } case $option { {-min -max -allowresize -size} { regsub \\\- $option "" option return "$data($name,$option)" } default { return [$data(w:$name) cget $option] } } } # return the name of all panes proc tixPanedWindow:panes {w} { upvar #0 $w data return $data(items) } # set the size of a pane, specifying which direction it should # grow/shrink proc tixPanedWindow:setsize {w item size {direction next}} { upvar #0 $w data set posn [lsearch $data(items) $item] if {$posn == -1} { error "pane \"$item\" does not exist" } set diff [expr {$size - $data($item,size)}] if {$diff == 0} { return } if {$posn == 0 && $direction eq "prev"} { set direction next } if {$posn == $data(nItems)-1 && $direction eq "next"} { set direction prev } if {$data(-orientation) eq "vertical"} { set rx [winfo rooty $data(w:$item)] } else { set rx [winfo rootx $data(w:$item)] } if {$direction eq "prev"} { set rx [expr {$rx - $diff}] } elseif {$data(-orientation) eq "vertical"} { set rx [expr {$rx + [winfo height $data(w:$item)] + $diff}] incr posn } else { set rx [expr {$rx + [winfo width $data(w:$item)] + $diff}] incr posn } # Set up the panedwin in a proper state # tixPanedWindow:BtnDown $w $posn 1 tixPanedWindow:BtnMove $w $posn $rx 1 tixPanedWindow:BtnUp $w $posn 1 return $data(items) } #---------------------------------------------------------------------- # PrivateMethods: #---------------------------------------------------------------------- proc tixPanedWindow:AddSeparator {w} { global tcl_platform upvar #0 $w data set n [expr {$data(nItems)-1}] # CYGNUS: On Windows, use relief ridge and a thicker line. if {$tcl_platform(platform) eq "windows"} then { set relief "ridge" set thickness 4 } else { set relief "sunken" set thickness 2 } if {$data(-orientation) eq "vertical"} { set data(sep,$n) [frame $w.sep$n -relief $relief \ -bd 1 -height $thickness -width 10000 -bg $data(-separatorbg)] } else { set data(sep,$n) [frame $w.sep$n -relief $relief \ -bd 1 -width $thickness -height 10000 -bg $data(-separatorbg)] } set data(btn,$n) [frame $w.btn$n -relief raised \ -bd 1 -width 9 -height 9 \ -bg $data(-handlebg)] if {$data(-orientation) eq "vertical"} { set cursor sb_v_double_arrow } else { set cursor sb_h_double_arrow } $data(sep,$n) config -cursor $cursor $data(btn,$n) config -cursor $cursor foreach wid [list $data(btn,$n) $data(sep,$n)] { bind $wid \ [list tixPanedWindow:BtnDown $w $n] bind $wid \ [list tixPanedWindow:BtnUp $w $n] bind $wid \ [list tixPanedWindow:HighlightBtn $w $n] bind $wid \ [list tixPanedWindow:DeHighlightBtn $w $n] } if {$data(-orientation) eq "vertical"} { bind $data(btn,$n) [list tixPanedWindow:BtnMove $w $n %Y] } else { bind $data(btn,$n) [list tixPanedWindow:BtnMove $w $n %X] } if {$data(-orientation) eq "vertical"} { # place $data(btn,$n) -relx 0.90 -y [expr "$data(totalsize)-5"] # place $data(sep,$n) -x 0 -y [expr "$data(totalsize)-1"] -relwidth 1 } else { # place $data(btn,$n) -rely 0.90 -x [expr "$data(totalsize)-5"] # place $data(sep,$n) -y 0 -x [expr "$data(totalsize)-1"] -relheight 1 } } proc tixPanedWindow:BtnDown {w item {fake 0}} { upvar #0 $w data if {$data(-orientation) eq "vertical"} { set spec -height } else { set spec -width } if {!$fake} { for {set i 1} {$i < $data(nItems)} {incr i} { $data(sep,$i) config -bg $data(-separatoractivebg) $spec 1 } update idletasks $data(btn,$item) config -relief sunken } tixPanedWindow:GetMotionLimit $w $item $fake if {!$fake} { grab -global $data(btn,$item) } set data(movePending) 0 } proc tixPanedWindow:Min2 {a b} { if {$a < $b} { return $a } else { return $b } } proc tixPanedWindow:GetMotionLimit {w item fake} { upvar #0 $w data set curBefore 0 set minBefore 0 set maxBefore 0 for {set i 0} {$i < $item} {incr i} { set name [lindex $data(items) $i] incr curBefore $data($name,size) incr minBefore $data($name,min) incr maxBefore $data($name,max) } set curAfter 0 set minAfter 0 set maxAfter 0 while {$i < $data(nItems)} { set name [lindex $data(items) $i] incr curAfter $data($name,size) incr minAfter $data($name,min) incr maxAfter $data($name,max) incr i } set beforeToGo [tixPanedWindow:Min2 \ [expr {$curBefore-$minBefore}] \ [expr {$maxAfter-$curAfter}]] set afterToGo [tixPanedWindow:Min2 \ [expr {$curAfter-$minAfter}] \ [expr {$maxBefore-$curBefore}]] set data(beforeLimit) [expr {$curBefore-$beforeToGo}] set data(afterLimit) [expr {$curBefore+$afterToGo}] set data(curSize) $curBefore if {!$fake} { tixPanedWindow:PlotHandles $w 1 } } # Compress the motion so that update is quick even on slow machines # # rootp = root position (either rootx or rooty) proc tixPanedWindow:BtnMove {w item rootp {fake 0}} { upvar #0 $w data set data(rootp) $rootp if {$fake} { tixPanedWindow:BtnMoveCompressed $w $item $fake } else { if {$data(movePending) == 0} { after 2 tixPanedWindow:BtnMoveCompressed $w $item set data(movePending) 1 } } } proc tixPanedWindow:BtnMoveCompressed {w item {fake 0}} { if {![winfo exists $w]} { return } upvar #0 $w data if {$data(-orientation) eq "vertical"} { set p [expr {$data(rootp)-[winfo rooty $w]}] } else { set p [expr {$data(rootp)-[winfo rootx $w]}] } if {$p == $data(curSize)} { set data(movePending) 0 return } if {$p < $data(beforeLimit)} { set p $data(beforeLimit) } if {$p >= $data(afterLimit)} { set p $data(afterLimit) } tixPanedWindow:CalculateChange $w $item $p $fake if {!$fake} { # Force the redraw to happen # update idletasks } set data(movePending) 0 } # Calculate the change in response to mouse motions # proc tixPanedWindow:CalculateChange {w item p {fake 0}} { upvar #0 $w data if {$p < $data(curSize)} { tixPanedWindow:MoveBefore $w $item $p } elseif {$p > $data(curSize)} { tixPanedWindow:MoveAfter $w $item $p } if {!$fake} { tixPanedWindow:PlotHandles $w 1 } } proc tixPanedWindow:MoveBefore {w item p} { upvar #0 $w data set n [expr {$data(curSize)-$p}] # Shrink the frames before # set from [expr {$item-1}] set to 0 tixPanedWindow:Iterate $w $from $to tixPanedWindow:Shrink $n # Adjust the frames after # set from $item set to [expr {$data(nItems)-1}] tixPanedWindow:Iterate $w $from $to tixPanedWindow:Grow $n set data(curSize) $p } proc tixPanedWindow:MoveAfter {w item p} { upvar #0 $w data set n [expr {$p-$data(curSize)}] # Shrink the frames after # set from $item set to [expr {$data(nItems)-1}] tixPanedWindow:Iterate $w $from $to tixPanedWindow:Shrink $n # Graw the frame before # set from [expr {$item-1}] set to 0 tixPanedWindow:Iterate $w $from $to tixPanedWindow:Grow $n set data(curSize) $p } proc tixPanedWindow:CancleLines {w} { upvar #0 $w data if {[info exists data(lines)]} { foreach line $data(lines) { set x1 [lindex $line 0] set y1 [lindex $line 1] set x2 [lindex $line 2] set y2 [lindex $line 3] tixTmpLine $x1 $y1 $x2 $y2 $w } catch {unset data(lines)} } } proc tixPanedWindow:PlotHandles {w transient} { global tcl_platform upvar #0 $w data set totalsize 0 set i 0 if {$data(-orientation) eq "vertical"} { set btnp [expr {[winfo width $w]-13}] } else { set h [winfo height $w] if {$h > 18} { set btnp 9 } else { set btnp [expr {$h-9}] } } set firstpane [lindex $data(items) 0] set totalsize $data($firstpane,size) if {$transient} { tixPanedWindow:CancleLines $w set data(lines) "" } for {set i 1} {$i < $data(nItems)} {incr i} { if {! $transient} { if {$data(-orientation) eq "vertical"} { place $data(btn,$i) -x $btnp -y [expr {$totalsize-4}] place $data(sep,$i) -x 0 -y [expr {$totalsize-1}] -relwidth 1 } else { place $data(btn,$i) -y $btnp -x [expr {$totalsize-5}] place $data(sep,$i) -y 0 -x [expr {$totalsize-1}] -relheight 1 } } else { if {$data(-orientation) eq "vertical"} { set x1 [winfo rootx $w] set x2 [expr {$x1 + [winfo width $w]}] set y [expr {$totalsize-1+[winfo rooty $w]}] tixTmpLine $x1 $y $x2 $y $w lappend data(lines) [list $x1 $y $x2 $y] } else { set y1 [winfo rooty $w] set y2 [expr {$y1 + [winfo height $w]}] set x [expr {$totalsize-1+[winfo rootx $w]}] tixTmpLine $x $y1 $x $y2 $w lappend data(lines) [list $x $y1 $x $y2] } } set name [lindex $data(items) $i] incr totalsize $data($name,size) } } proc tixPanedWindow:BtnUp {w item {fake 0}} { upvar #0 $w data if {!$fake} { tixPanedWindow:CancleLines $w } tixPanedWindow:UpdateSizes $w if {!$fake} { $data(btn,$item) config -relief raised grab release $data(btn,$item) } } proc tixPanedWindow:HighlightBtn {w item} { upvar #0 $w data $data(btn,$item) config -background $data(-handleactivebg) } proc tixPanedWindow:DeHighlightBtn {w item} { upvar #0 $w data $data(btn,$item) config -background $data(-handlebg) } #---------------------------------------------------------------------- # # # Geometry management routines # # #---------------------------------------------------------------------- # update the sizes of each pane according to the data($name,size) variables # proc tixPanedWindow:UpdateSizes {w} { global tcl_platform upvar #0 $w data set data(totalsize) 0 set mw [winfo width $w] set mh [winfo height $w] for {set i 0} {$i < $data(nItems)} {incr i} { set name [lindex $data(items) $i] if {$data($name,size) > 0} { if {$data(-orientation) eq "vertical"} { tixMoveResizeWindow $w.$name 0 $data(totalsize) \ $mw $data($name,size) tixMapWindow $w.$name raise $w.$name } else { tixMoveResizeWindow $w.$name $data(totalsize) 0 \ $data($name,size) $mh tixMapWindow $w.$name raise $w.$name } } else { tixUnmapWindow $w.$name } incr data(totalsize) $data($name,size) } # Reset the color and width of the separator # if {$data(-orientation) eq "vertical"} { set spec -height } else { set spec -width } # CYGNUS: On Windows, use a thicker line. if {$tcl_platform(platform) eq "windows"} then { set thickness 4 } else { set thickness 2 } for {set i 1} {$i < $data(nItems)} {incr i} { $data(sep,$i) config -bg $data(-separatorbg) $spec $thickness raise $data(sep,$i) raise $data(btn,$i) } # Invoke the callback command # if {$data(-command) != ""} { set sizes "" foreach item $data(items) { lappend sizes $data($item,size) } set bind(specs) "" tixEvalCmdBinding $w $data(-command) bind [list $sizes] } } proc tixPanedWindow:GetNaturalSizes {w} { upvar #0 $w data set data(totalsize) 0 set totalreq 0 if {$data(-orientation) eq "vertical"} { set majorspec height set minorspec width } else { set majorspec width set minorspec height } set minorsize 0 foreach name $data(items) { if {[winfo manager $w.$name] ne "tixGeometry"} { error "Geometry management error: pane \"$w.$name\" cannot be managed by \"[winfo manager $w.$name]\"\nhint: delete the line \"[winfo manager $w.$name] $w.$name ...\" from your program" } # set the minor size # set req_minor [winfo req$minorspec $w.$name] if {$req_minor > $minorsize} { set minorsize $req_minor } # Check the natural size against the max, min requirements. # Change the natural size if necessary # if {$data($name,size) <= 1} { set data($name,size) [winfo req$majorspec $w.$name] } if {$data($name,size) > 1} { # If we get zero maybe the widget was not initialized yet ... # # %% hazard : what if the window is really 1x1? # if {$data($name,size) < $data($name,min)} { set data($name,size) $data($name,min) } if {$data($name,size) > $data($name,max)} { set data($name,size) $data($name,max) } } # kludge: because a frame always returns req size of {1,1} before # the packer processes it, we do the following to mark the # pane as "size unknown" # # if {$data($name,size) == 1 && ![winfo ismapped $w.$name]} { # set data($name,size) 0 # } # Add up the total size # incr data(totalsize) $data($name,size) # Find out the request size # if {$data($name,rsize) == 0} { set rsize [winfo req$majorspec $w.$name] } else { set rsize $data($name,rsize) } if {$rsize < $data($name,min)} { set rsize $data($name,min) } if {$rsize > $data($name,max)} { set rsize $data($name,max) } incr totalreq $rsize } if {$data(-orientation) eq "vertical"} { return [list $minorsize $totalreq] } else { return [list $totalreq $minorsize] } } #-------------------------------------------------- # Handling resize #-------------------------------------------------- proc tixPanedWindow:ClientGeomProc {w type client} { tixPanedWindow:RepackWhenIdle $w } # # This monitor the sizes of the master window # proc tixPanedWindow:MasterGeomProc {w master} { tixPanedWindow:RepackWhenIdle $w } proc tixPanedWindow:RepackWhenIdle {w} { if {![winfo exist $w]} { return } upvar #0 $w data if {$data(repack) == 0} { tixWidgetDoWhenIdle tixPanedWindow:Repack $w set data(repack) 1 } } # # This monitor the sizes of the master window # proc tixPanedWindow:Repack {w} { upvar #0 $w data # Calculate the desired size of the master # set dim [tixPanedWindow:GetNaturalSizes $w] if {$data(-width) != 0} { set mreqw $data(-width) } else { set mreqw [lindex $dim 0] } if {$data(-height) != 0} { set mreqh $data(-height) } else { set mreqh [lindex $dim 1] } if !$data(-dynamicgeometry) { if {$mreqw < $data(maxReqW)} { set mreqw $data(maxReqW) } if {$mreqh < $data(maxReqH)} { set mreqh $data(maxReqH) } set data(maxReqW) $mreqw set data(maxReqH) $mreqh } if {$mreqw != [winfo reqwidth $w] || $mreqh != [winfo reqheight $w] } { if {![info exists data(counter)]} { set data(counter) 0 } if {$data(counter) < 50} { incr data(counter) tixGeometryRequest $w $mreqw $mreqh tixWidgetDoWhenIdle tixPanedWindow:Repack $w set data(repack) 1 return } } set data(counter) 0 if {$data(nItems) == 0} { set data(repack) 0 return } tixWidgetDoWhenIdle tixPanedWindow:DoRepack $w } proc tixPanedWindow:DoRepack {w} { upvar #0 $w data if {$data(-orientation) eq "vertical"} { set newSize [winfo height $w] } else { set newSize [winfo width $w] } if {$newSize <= 1} { # Probably this window is too small to see anyway # %%Kludge: I don't know if this always work. # set data(repack) 0 return } set totalExp 0 foreach name $data(items) { set totalExp [expr {$totalExp + $data($name,expand)}] } if {$newSize > $data(totalsize)} { # Grow # set toGrow [expr {$newSize-$data(totalsize)}] set p [llength $data(items)] foreach name $data(items) { set toGrow [tixPanedWindow:xGrow $w $name $toGrow $totalExp $p] if {$toGrow > 0} { set totalExp [expr {$totalExp-$data($name,expand)}] incr p -1 } else { break } } } else { # Shrink # set toShrink [expr {$data(totalsize)-$newSize}] set usedSize 0 foreach name $data(items) { set toShrink [tixPanedWindow:xShrink $w $name $toShrink \ $totalExp $newSize $usedSize] if {$toShrink > 0} { set totalExp [expr {$totalExp-$data($name,expand)}] incr usedSize $data($name,size) } else { break } } } tixPanedWindow:UpdateSizes $w tixPanedWindow:PlotHandles $w 0 set data(repack) 0 } #-------------------------------------------------- # Shrink and grow items #-------------------------------------------------- # # toGrow: how much free area to grow into # p: == 1 if $name is the last in the list of items # totalExp: used to calculate the amount of the free area that this # window can grow into # proc tixPanedWindow:xGrow {w name toGrow totalExp p} { upvar #0 $w data if {$p == 1} { set canGrow $toGrow } else { if {$totalExp == 0} { set canGrow 0 } else { set canGrow [expr {int($toGrow * $data($name,expand) / $totalExp)}] } } if {($canGrow + $data($name,size)) > $data($name,max)} { set canGrow [expr {$data($name,max) - $data($name,size)}] } incr data($name,size) $canGrow incr toGrow -$canGrow return $toGrow } proc tixPanedWindow:xShrink {w name toShrink totalExp newSize usedSize} { upvar #0 $w data if {$totalExp == 0} { set canShrink 0 } else { set canShrink [expr {int($toShrink * $data($name,expand) / $totalExp)}] } if {$data($name,size) - $canShrink < $data($name,min)} { set canShrink [expr {$data($name,size) - $data($name,min)}] } if {$usedSize + $data($name,size) - $canShrink > $newSize} { set data($name,size) [expr {$newSize - $usedSize}] return 0 } else { incr data($name,size) -$canShrink incr toShrink -$canShrink return $toShrink } } #-------------------------------------------------- # Shrink and grow items #-------------------------------------------------- proc tixPanedWindow:Shrink {w name n} { upvar #0 $w data set canShrink [expr {$data($name,size) - $data($name,min)}] if {$canShrink > $n} { incr data($name,size) -$n return 0 } elseif {$canShrink > 0} { set data($name,size) $data($name,min) incr n -$canShrink } return $n } proc tixPanedWindow:Grow {w name n} { upvar #0 $w data set canGrow [expr {$data($name,max) - $data($name,size)}] if {$canGrow > $n} { incr data($name,size) $n return 0 } elseif {$canGrow > 0} { set data($name,size) $data($name,max) incr n -$canGrow } return $n } proc tixPanedWindow:Iterate {w from to proc n} { upvar #0 $w data if {$from <= $to} { for {set i $from} {$i <= $to} {incr i} { set n [$proc $w [lindex $data(items) $i] $n] if {$n == 0} { break } } } else { for {set i $from} {$i >= $to} {incr i -1} { set n [$proc $w [lindex $data(items) $i] $n] if {$n == 0} { break } } } } Tix8.4.3/library/StackWin.tcl0000644000122200012240000000371010031436051016256 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: StackWin.tcl,v 1.3 2004/03/28 02:44:57 hobbs Exp $ # # StackWin.tcl -- # # Similar to NoteBook but uses a Select widget to represent the pages. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixStackWindow { -classname TixStackWindow -superclass tixVStack -method { } -flag { } -configspec { } } proc tixStackWindow:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget set data(w:tabs) [tixSelect $w.tabs] # We can't use the packer because it will conflict with the # geometry management of the VStack widget. # tixManageGeometry $data(w:tabs) [list tixVStack:ClientGeomProc $w] } proc tixStackWindow:add {w child args} { upvar #0 $w data set ret [eval [list tixChainMethod $w add $child] $args] # Find out the -label option # foreach {flag value} $args { if {$flag eq "-label"} { set label $value } } $data(w:tabs) add $child -command [list $w raise $child] -text $label return $ret } proc tixStackWindow:raise {w child} { upvar #0 $w data $data(w:tabs) config -value $child tixChainMethod $w raise $child } proc tixStackWindow:Resize {w} { upvar #0 $w data # We have to take care of the size of the tabs so that # set tW [winfo reqwidth $data(w:tabs)] set tH [winfo reqheight $data(w:tabs)] tixMoveResizeWindow $data(w:tabs) $data(-ipadx) $data(-ipady) $tW $tH tixMapWindow $data(w:tabs) set data(pad-y1) [expr $tH + $data(-ipadx)] set data(minW) [expr $tW + 2 * $data(-ipadx)] set data(minH) [expr $tH + 2 * $data(-ipady)] # Now that we know data(pad-y1), we can chain the call # tixChainMethod $w Resize } Tix8.4.3/library/EFileBox.tcl0000644000122200012240000002617610031436051016203 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: EFileBox.tcl,v 1.5 2004/03/28 02:44:57 hobbs Exp $ # # EFileBox.tcl -- # # Implements the Extended File Selection Box widget. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # # ToDo # (1) If user has entered an invalid directory, give an error dialog # tixWidgetClass tixExFileSelectBox { -classname TixExFileSelectBox -superclass tixPrimitive -method { filter invoke } -flag { -browsecmd -command -dialog -dir -dircmd -directory -disablecallback -filetypes -pattern -selection -showhidden -value } -forcecall { -filetypes } -configspec { {-browsecmd browseCmd BrowseCmd ""} {-command command Command ""} {-dialog dialog Dialog ""} {-dircmd dirCmd DirCmd ""} {-directory directory Directory ""} {-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean} {-filetypes fileTypes FileTypes ""} {-pattern pattern Pattern *} {-showhidden showHidden ShowHidden 0 tixVerifyBoolean} {-value value Value ""} } -alias { {-dir -directory} {-selection -value} } -default { {*dir.label {Directories:}} {*dir.editable true} {*dir.history true} {*dir*listbox.height 5} {*file.label Files:} {*file.editable true} {*file.history false} {*file*listbox.height 5} {*types.label {List Files of Type:}} {*types*listbox.height 3} {*TixComboBox.labelSide top} {*TixComboBox*Label.anchor w} {*dir.label.underline 0} {*file.label.underline 0} {*types.label.underline 14} {*TixComboBox.anchor e} {*TixHList.height 7} {*filelist*listbox.height 7} {*hidden.wrapLength 3c} {*hidden.justify left} } } proc tixExFileSelectBox:InitWidgetRec {w} { upvar #0 $w data global env tixChainMethod $w InitWidgetRec if {$data(-directory) eq ""} { set data(-directory) [pwd] } set data(oldDir) "" set data(flag) 0 } #---------------------------------------------------------------------- # Construct widget #---------------------------------------------------------------------- proc tixExFileSelectBox:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget # listbox frame set lf [frame $w.lf] # The pane that contains the two listboxes # set pane [tixPanedWindow $lf.pane -orientation horizontal] set dpane [$pane add 1 -size 160] set fpane [$pane add 2 -size 160] $dpane config -relief flat $fpane config -relief flat # The File List Pane # set data(w:file) [tixComboBox $fpane.file\ -command [list tixExFileSelectBox:Cmd-FileCombo $w]\ -prunehistory true \ -options { label.anchor w }] set data(w:filelist) \ [tixScrolledListBox $fpane.filelist \ -command [list tixExFileSelectBox:Cmd-FileList $w 1] \ -browsecmd [list tixExFileSelectBox:Cmd-FileList $w 0]] pack $data(w:file) -padx 8 -pady 4 -side top -fill x pack $data(w:filelist) -padx 8 -pady 4 -side top -fill both -expand yes # The Directory Pane # set data(w:dir) [tixComboBox $dpane.dir \ -command [list tixExFileSelectBox:Cmd-DirCombo $w]\ -prunehistory true \ -options { label.anchor w }] set data(w:dirlist) \ [tixDirList $dpane.dirlist \ -command [list tixExFileSelectBox:Cmd-DirList $w]\ -browsecmd [list tixExFileSelectBox:Browse-DirList $w]] pack $data(w:dir) -padx 8 -pady 4 -side top -fill x pack $data(w:dirlist) -padx 8 -pady 4 -side top -fill both -expand yes # The file types listbox # set data(w:types) [tixComboBox $lf.types\ -command [list tixExFileSelectBox:Cmd-TypeCombo $w]\ -options { label.anchor w }] pack $data(w:types) -padx 12 -pady 4 -side bottom -fill x -anchor w pack $pane -side top -padx 4 -pady 4 -expand yes -fill both # Buttons to the right # set bf [frame $w.bf] set data(w:ok) [button $bf.ok -text Ok -width 6 \ -underline 0 -command [list tixExFileSelectBox:Ok $w]] set data(w:cancel) [button $bf.cancel -text Cancel -width 6 \ -underline 0 -command [list tixExFileSelectBox:Cancel $w]] set data(w:hidden) [checkbutton $bf.hidden -text "Show Hidden Files"\ -underline 0\ -variable [format %s(-showhidden) $w] -onvalue 1 -offvalue 0\ -command [list tixExFileSelectBox:SetShowHidden $w]] pack $data(w:ok) $data(w:cancel) $data(w:hidden)\ -side top -fill x -padx 6 -pady 3 pack $bf -side right -fill y -pady 6 pack $lf -side left -expand yes -fill both tixDoWhenMapped $w [list tixExFileSelectBox:Map $w] if {$data(-filetypes) == ""} { $data(w:types) config -state disabled } } #---------------------------------------------------------------------- # Configuration #---------------------------------------------------------------------- proc tixExFileSelectBox:config-showhidden {w value} { upvar #0 $w data set data(-showhidden) $value tixExFileSelectBox:SetShowHidden $w } # Update both DirList and {file list and dir combo} # proc tixExFileSelectBox:config-directory {w value} { upvar #0 $w data set data(-directory) [tixFSNormalize $value] tixSetSilent $data(w:dirlist) $data(-directory) tixSetSilent $data(w:dir) $data(-directory) tixWidgetDoWhenIdle tixExFileSelectBox:LoadFiles $w reload return $data(-directory) } proc tixExFileSelectBox:config-filetypes {w value} { upvar #0 $w data $data(w:types) subwidget listbox delete 0 end foreach name [array names data] { if {[string match type,* $name]} { catch {unset data($name)} } } if {$value == ""} { $data(w:types) config -state disabled } else { $data(w:types) config -state normal foreach type $value { $data(w:types) insert end [lindex $type 1] set data(type,[lindex $type 1]) [lindex $type 0] } tixSetSilent $data(w:types) "" } } #---------------------------------------------------------------------- # MISC Methods #---------------------------------------------------------------------- proc tixExFileSelectBox:SetShowHidden {w} { upvar #0 $w data $data(w:dirlist) config -showhidden $data(-showhidden) tixWidgetDoWhenIdle tixExFileSelectBox:LoadFiles $w reload } # User activates the dir combobox # # proc tixExFileSelectBox:Cmd-DirCombo {w args} { upvar #0 $w data set dir [tixEvent flag V] set dir [tixFSExternal $dir] if {![file isdirectory $dir]} { return } set dir [tixFSNormalize $dir] $data(w:dirlist) config -value $dir set data(-directory) $dir } # User activates the dir list # # proc tixExFileSelectBox:Cmd-DirList {w args} { upvar #0 $w data set dir $data(-directory) catch {set dir [tixEvent flag V]} set dir [tixFSNormalize [tixFSExternal $dir]] tixSetSilent $data(w:dir) $dir set data(-directory) $dir tixWidgetDoWhenIdle tixExFileSelectBox:LoadFiles $w noreload } # User activates the dir list # # proc tixExFileSelectBox:Browse-DirList {w args} { upvar #0 $w data set dir [tixEvent flag V] set dir [tixFSNormalize [tixFSExternal $dir]] tixExFileSelectBox:Cmd-DirList $w $dir } proc tixExFileSelectBox:IsPattern {w string} { return [regexp "\[\[\\\{\\*\\?\]" $string] } proc tixExFileSelectBox:Cmd-FileCombo {w value} { upvar #0 $w data if {[tixEvent type] eq ""} { tixExFileSelectBox:Ok $w } } proc tixExFileSelectBox:Ok {w} { upvar #0 $w data set value [string trim [$data(w:file) subwidget entry get]] if {$value == ""} { set value $data(-pattern) } tixSetSilent $data(w:file) $value if {[tixExFileSelectBox:IsPattern $w $value]} { set data(-pattern) $value tixWidgetDoWhenIdle tixExFileSelectBox:LoadFiles $w reload } else { # ensure absolute path set value [file join $data(-directory) $value]; # native set data(-value) [tixFSNativeNorm $value] tixExFileSelectBox:Invoke $w } } proc tixExFileSelectBox:Cancel {w} { upvar #0 $w data if {$data(-dialog) != ""} { eval $data(-dialog) popdown } } proc tixExFileSelectBox:Invoke {w} { upvar #0 $w data # Save some old history # $data(w:dir) addhistory [$data(w:dir) cget -value] $data(w:file) addhistory $data(-pattern) $data(w:file) addhistory $data(-value) if {$data(-dialog) != ""} { eval $data(-dialog) popdown } if {$data(-command) != "" && !$data(-disablecallback)} { set bind(specs) "%V" set bind(%V) $data(-value) tixEvalCmdBinding $w $data(-command) bind $data(-value) } } proc tixExFileSelectBox:Cmd-FileList {w invoke args} { upvar #0 $w data set index [lindex [$data(w:filelist) subwidget listbox curselection] 0] if {$index == ""} { set index 0 } set file [$data(w:filelist) subwidget listbox get $index] tixSetSilent $data(w:file) $file set value [file join $data(-directory) $file] set data(-value) [tixFSNativeNorm $value] if {$invoke == 1} { tixExFileSelectBox:Invoke $w } elseif {$data(-browsecmd) != ""} { tixEvalCmdBinding $w $data(-browsecmd) "" $data(-value) } } proc tixExFileSelectBox:Cmd-TypeCombo {w args} { upvar #0 $w data set value [tixEvent flag V] if {[info exists data(type,$value)]} { set data(-pattern) $data(type,$value) tixSetSilent $data(w:file) $data(-pattern) tixWidgetDoWhenIdle tixExFileSelectBox:LoadFiles $w reload } } proc tixExFileSelectBox:LoadFiles {w flag} { upvar #0 $w data if {$flag ne "reload" && $data(-directory) eq $data(oldDir)} { return } if {![winfo ismapped [winfo toplevel $w]]} { tixDoWhenMapped [winfo toplevel $w] \ [list tixExFileSelectBox:LoadFiles $w $flag] return } set listbox [$data(w:filelist) subwidget listbox] $listbox delete 0 end set data(-value) "" tixBusy $w on [$data(w:dirlist) subwidget hlist] # wrap in a catch so you can't get stuck in a Busy state if {[catch { foreach name [tixFSListDir $data(-directory) 0 1 0 \ $data(-showhidden) $data(-pattern)] { $listbox insert end $name } if {$data(oldDir) ne $data(-directory)} { # Otherwise if the user has already selected a file and then # presses "show hidden", the selection won't be wiped out. tixSetSilent $data(w:file) $data(-pattern) } } err]} { tixDebug "tixExFileSelectBox:LoadFiles error for $w\n$err" } set data(oldDir) $data(-directory) tixWidgetDoWhenIdle tixBusy $w off [$data(w:dirlist) subwidget hlist] } # # Called when thd listbox is first mapped proc tixExFileSelectBox:Map {w} { if {![winfo exists $w]} { return } upvar #0 $w data set bind(specs) "%V" set bind(%V) $data(-value) tixEvalCmdBinding $w bind \ [list tixExFileSelectBox:Cmd-DirList $w] $data(-directory) } #---------------------------------------------------------------------- # Public commands # #---------------------------------------------------------------------- proc tixExFileSelectBox:invoke {w} { tixExFileSelectBox:Invoke $w } proc tixExFileSelectBox:filter {w} { tixExFileSelectBox:LoadFiles $w reload } Tix8.4.3/library/StdBBox.tcl0000644000122200012240000000317007404570302016050 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: StdBBox.tcl,v 1.2 2001/12/09 05:04:02 idiscovery Exp $ # # StdBBox.tcl -- # # Standard Button Box, used in standard dialog boxes # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixStdButtonBox { -classname TixStdButtonBox -superclass tixButtonBox -flag { -applycmd -cancelcmd -helpcmd -okcmd } -configspec { {-applycmd applyCmd ApplyCmd ""} {-cancelcmd cancelCmd CancelCmd ""} {-helpcmd helpCmd HelpCmd ""} {-okcmd okCmd OkCmd ""} } -default { {.borderWidth 1} {.relief raised} {.padX 5} {.padY 10} {*Button.anchor c} {*Button.padX 5} } } proc tixStdButtonBox:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget $w add ok -text OK -under 0 -width 6 -command $data(-okcmd) $w add apply -text Apply -under 0 -width 6 -command $data(-applycmd) $w add cancel -text Cancel -under 0 -width 6 -command $data(-cancelcmd) $w add help -text Help -under 0 -width 6 -command $data(-helpcmd) } proc tixStdButtonBox:config {w flag value} { upvar #0 $w data case $flag { -okcmd { $data(w:ok) config -command $value } -applycmd { $data(w:apply) config -command $value } -cancelcmd { $data(w:cancel) config -command $value } -helpcmd { $data(w:help) config -command $value } default { tixChainMethod $w config $flag $value } } } Tix8.4.3/library/DirTree.tcl0000644000122200012240000002141410031436051016072 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: DirTree.tcl,v 1.4 2004/03/28 02:44:57 hobbs Exp $ # # DirTree.tcl -- # # Implements directory tree for Unix file systems # # What the indicators mean: # # (+): There are some subdirectories in this directory which are not # currently visible. # (-): This directory has some subdirectories and they are all visible # # none: The dir has no subdirectori(es). # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # ## ## The tixDirTree require special FS handling due to it's limited ## separator idea (instead of real tree). ## tixWidgetClass tixDirTree { -classname TixDirTree -superclass tixVTree -method { activate chdir refresh } -flag { -browsecmd -command -directory -disablecallback -showhidden -value } -configspec { {-browsecmd browseCmd BrowseCmd ""} {-command command Command ""} {-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean} {-showhidden showHidden ShowHidden 0 tixVerifyBoolean} {-value value Value ""} } -alias { {-directory -value} } -default { {.scrollbar auto} {*Scrollbar.takeFocus 0} {*borderWidth 1} {*hlist.indicator 1} {*hlist.background #c3c3c3} {*hlist.drawBranch 1} {*hlist.height 10} {*hlist.highlightBackground #d9d9d9} {*hlist.indent 20} {*hlist.itemType imagetext} {*hlist.padX 3} {*hlist.padY 0} {*hlist.relief sunken} {*hlist.takeFocus 1} {*hlist.wideSelection 0} {*hlist.width 20} } } proc tixDirTree:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec if {$data(-value) == ""} { set data(-value) [pwd] } tixDirTree:SetDir $w [file normalize $data(-value)] } proc tixDirTree:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget tixDoWhenMapped $w [list tixDirTree:StartUp $w] $data(w:hlist) config -separator [tixFSSep] \ -selectmode "single" -drawbranch 1 # We must creat an extra copy of these images to avoid flashes on # the screen when user changes directory # set data(images) [image create compound -window $data(w:hlist)] $data(images) add image -image [tix getimage act_fold] $data(images) add image -image [tix getimage folder] $data(images) add image -image [tix getimage openfold] } proc tixDirTree:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings } # Add one dir into the node (parent directory), sorted alphabetically # proc tixDirTree:AddToList {w fsdir image} { upvar #0 $w data set dir [tixFSInternal $fsdir] if {[$data(w:hlist) info exists $dir]} { return } set parent [file dirname $fsdir] if {$fsdir eq $parent} { # root node set node "" } else { # regular node set node [tixFSInternal $parent] } set added 0 set text [tixFSDisplayFileName $fsdir] foreach sib [$data(w:hlist) info children $node] { if {[string compare $dir $sib] < 0} { $data(w:hlist) add $dir -before $sib -text $text -image $image set added 1 break } } if {!$added} { $data(w:hlist) add $dir -text $text -image $image } # Check to see if we have children (%% optimize!) if {[llength [tixFSListDir $fsdir 1 0 0 $data(-showhidden)]]} { tixVTree:SetMode $w $dir open } } proc tixDirTree:LoadDir {w fsdir {mode toggle}} { if {![winfo exists $w]} { return } upvar #0 $w data # Add the directory and set it to the active directory # set fsdir [tixFSNormalize $fsdir] set dir [tixFSInternal $fsdir] if {![$data(w:hlist) info exists $dir]} { # Add $dir and all ancestors of $dir into the HList widget set fspath "" set imgopenfold [tix getimage openfold] foreach part [tixFSAncestors $fsdir] { set fspath [file join $fspath $part] tixDirTree:AddToList $w $fspath $imgopenfold } } $data(w:hlist) entryconfig $dir -image [tix getimage act_fold] if {$mode eq "toggle"} { if {[llength [$data(w:hlist) info children $dir]]} { set mode flatten } else { set mode expand } } if {$mode eq "expand"} { # Add all the sub directories of fsdir into the HList widget tixBusy $w on $data(w:hlist) set imgfolder [tix getimage folder] foreach part [tixFSListDir $fsdir 1 0 0 $data(-showhidden)] { tixDirTree:AddToList $w [file join $fsdir $part] $imgfolder } tixWidgetDoWhenIdle tixBusy $w off $data(w:hlist) # correct indicator to represent children status (added above) if {[llength [$data(w:hlist) info children $dir]]} { tixVTree:SetMode $w $dir close } else { tixVTree:SetMode $w $dir none } } else { $data(w:hlist) delete offsprings $dir tixVTree:SetMode $w $dir open } } proc tixDirTree:ToggleDir {w value mode} { upvar #0 $w data tixDirTree:LoadDir $w $value $mode tixDirTree:CallCommand $w } proc tixDirTree:CallCommand {w} { upvar #0 $w data if {[llength $data(-command)] && !$data(-disablecallback)} { set bind(specs) {%V} set bind(%V) $data(-value) tixEvalCmdBinding $w $data(-command) bind $data(-value) } } proc tixDirTree:CallBrowseCmd {w ent} { upvar #0 $w data if {[llength $data(-browsecmd)] && !$data(-disablecallback)} { set bind(specs) {%V} set bind(%V) $data(-value) tixEvalCmdBinding $w $data(-browsecmd) bind [list $data(-value)] } } proc tixDirTree:StartUp {w} { if {![winfo exists $w]} { return } upvar #0 $w data # make sure that all the basic volumes are listed set imgopenfold [tix getimage openfold] foreach fspath [tixFSVolumes] { tixDirTree:AddToList $w $fspath $imgopenfold } tixDirTree:LoadDir $w [tixFSExternal $data(i-directory)] } proc tixDirTree:ChangeDir {w fsdir {forced 0}} { upvar #0 $w data set dir [tixFSInternal $fsdir] if {!$forced && $data(i-directory) eq $dir} { return } if {!$forced && [$data(w:hlist) info exists $dir]} { # Set the old directory to "non active" # if {[$data(w:hlist) info exists $data(i-directory)]} { $data(w:hlist) entryconfig $data(i-directory) \ -image [tix getimage folder] } $data(w:hlist) entryconfig $dir -image [tix getimage act_fold] } else { if {$forced} { if {[llength [$data(w:hlist) info children $dir]]} { set mode expand } else { set mode flatten } } else { set mode toggle } tixDirTree:LoadDir $w $fsdir $mode tixDirTree:CallCommand $w } tixDirTree:SetDir $w $fsdir } proc tixDirTree:SetDir {w path} { upvar #0 $w data set data(i-directory) [tixFSInternal $path] set data(-value) [tixFSNativeNorm $path] } #---------------------------------------------------------------------- # # Virtual Methods # #---------------------------------------------------------------------- proc tixDirTree:OpenCmd {w ent} { set fsdir [tixFSExternal $ent] tixDirTree:ToggleDir $w $fsdir expand tixDirTree:ChangeDir $w $fsdir tixDirTree:CallBrowseCmd $w $fsdir } proc tixDirTree:CloseCmd {w ent} { set fsdir [tixFSExternal $ent] tixDirTree:ToggleDir $w $fsdir flatten tixDirTree:ChangeDir $w $fsdir tixDirTree:CallBrowseCmd $w $fsdir } proc tixDirTree:Command {w B} { upvar #0 $w data upvar $B bind set ent [tixEvent flag V] tixChainMethod $w Command $B if {[llength $data(-command)]} { set fsdir [tixFSExternal $ent] tixEvalCmdBinding $w $data(-command) bind $fsdir } } # This is a virtual method # proc tixDirTree:BrowseCmd {w B} { upvar #0 $w data upvar 1 $B bind set ent [tixEvent flag V] set fsdir [tixFSExternal $ent] # This is a hack because %V may have been modified by callbrowsecmd set fsdir [file normalize $fsdir] tixDirTree:ChangeDir $w $fsdir tixDirTree:CallBrowseCmd $w $fsdir } #---------------------------------------------------------------------- # # Public Methods # #---------------------------------------------------------------------- proc tixDirTree:chdir {w value} { tixDirTree:ChangeDir $w [file normalize $value] } proc tixDirTree:refresh {w {dir ""}} { upvar #0 $w data if {$dir eq ""} { set dir $data(-value) } set dir [file normalize $dir] tixDirTree:ChangeDir $w $dir 1 # Delete any stale directories that no longer exist # foreach child [$data(w:hlist) info children [tixFSInternal $dir]] { if {![file exists [tixFSExternal $child]]} { $data(w:hlist) delete entry $child } } } proc tixDirTree:config-directory {w value} { tixDirTree:ChangeDir $w [file normalize $value] } Tix8.4.3/library/ComboBox.tcl0000644000122200012240000010665710761634021016270 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: ComboBox.tcl,v 1.9 2008/02/28 22:39:13 hobbs Exp $ # # tixCombobox -- # # A combobox widget is basically a listbox widget with an entry # widget. # # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. global tkPriv if {![llength [info globals tkPriv]]} { tk::unsupported::ExposePrivateVariable tkPriv } #-------------------------------------------------------------------------- # tkPriv elements used in this file: # # afterId - Token returned by "after" for autoscanning. #-------------------------------------------------------------------------- # foreach fun {tkCancelRepeat tkListboxUpDown tkButtonUp} { if {![llength [info commands $fun]]} { tk::unsupported::ExposePrivateCommand $fun } } unset fun tixWidgetClass tixComboBox { -classname TixComboBox -superclass tixLabelWidget -method { addhistory align appendhistory flash invoke insert pick popdown } -flag { -anchor -arrowbitmap -browsecmd -command -crossbitmap -disablecallback -disabledforeground -dropdown -editable -fancy -grab -histlimit -historylimit -history -listcmd -listwidth -prunehistory -selection -selectmode -state -tickbitmap -validatecmd -value -variable } -static { -dropdown -fancy } -forcecall { -variable -selectmode -state } -configspec { {-arrowbitmap arrowBitmap ArrowBitmap ""} {-anchor anchor Anchor w} {-browsecmd browseCmd BrowseCmd ""} {-command command Command ""} {-crossbitmap crossBitmap CrossBitmap ""} {-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean} {-disabledforeground disabledForeground DisabledForeground #606060} {-dropdown dropDown DropDown true tixVerifyBoolean} {-editable editable Editable false tixVerifyBoolean} {-fancy fancy Fancy false tixVerifyBoolean} {-grab grab Grab global} {-listcmd listCmd ListCmd ""} {-listwidth listWidth ListWidth ""} {-historylimit historyLimit HistoryLimit ""} {-history history History false tixVerifyBoolean} {-prunehistory pruneHistory PruneHistory true tixVerifyBoolean} {-selectmode selectMode SelectMode browse} {-selection selection Selection ""} {-state state State normal} {-validatecmd validateCmd ValidateCmd ""} {-value value Value ""} {-variable variable Variable ""} {-tickbitmap tickBitmap TickBitmap ""} } -alias { {-histlimit -historylimit} } -default { {*Entry.relief sunken} {*TixScrolledListBox.scrollbar auto} {*Listbox.exportSelection false} {*Listbox.takeFocus false} {*shell.borderWidth 2} {*shell.relief raised} {*shell.cursor arrow} {*Button.anchor c} {*Button.borderWidth 1} {*Button.highlightThickness 0} {*Button.padX 0} {*Button.padY 0} {*tick.width 18} {*tick.height 18} {*cross.width 18} {*cross.height 18} {*arrow.anchor c} {*arrow.width 15} {*arrow.height 18} } } # States: normal numbers: for dropdown style # d+digit(s) : for non-dropdown style # proc tixComboBox:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec set data(curIndex) "" set data(varInited) 0 set data(state) none set data(ignore) 0 if {$data(-history)} { set data(-editable) 1 } if {$data(-arrowbitmap) eq ""} { set data(-arrowbitmap) [tix getbitmap cbxarrow] } if {$data(-crossbitmap) eq ""} { set data(-crossbitmap) [tix getbitmap cross] } if {$data(-tickbitmap) eq ""} { set data(-tickbitmap) [tix getbitmap tick] } } proc tixComboBox:ConstructFramedWidget {w frame} { upvar #0 $w data tixChainMethod $w ConstructFramedWidget $frame if {$data(-dropdown)} { tixComboBox:ConstructEntryFrame $w $frame tixComboBox:ConstructListShell $w } else { set f1 [frame $frame.f1] set f2 [frame $frame.f2] tixComboBox:ConstructEntryFrame $w $f1 tixComboBox:ConstructListFrame $w $f2 pack $f1 -side top -pady 2 -fill x pack $f2 -side top -pady 2 -fill both -expand yes } } proc tixComboBox:ConstructEntryFrame {w frame} { upvar #0 $w data # (1) The entry # set data(w:entry) [entry $frame.entry] if {!$data(-editable)} { set bg [$w cget -bg] $data(w:entry) config -bg $bg -state disabled -takefocus 1 } # This is used during "config-state" # set data(entryfg) [$data(w:entry) cget -fg] # (2) The dropdown button, not necessary when not in dropdown mode # set data(w:arrow) [button $frame.arrow -bitmap $data(-arrowbitmap)] if {!$data(-dropdown)} { set xframe [frame $frame.xframe -width 19] } # (3) The fancy tick and cross buttons # if {$data(-fancy)} { if {$data(-editable)} { set data(w:cross) [button $frame.cross -bitmap $data(-crossbitmap)] set data(w:tick) [button $frame.tick -bitmap $data(-tickbitmap)] pack $frame.cross -side left -padx 1 pack $frame.tick -side left -padx 1 } else { set data(w:tick) [button $frame.tick -bitmap $data(-tickbitmap)] pack $frame.tick -side left -padx 1 } } if {$data(-dropdown)} { pack $data(w:arrow) -side right -padx 1 foreach wid [list $data(w:frame) $data(w:label)] { tixAddBindTag $wid TixComboWid tixSetMegaWidget $wid $w TixComboBox } } else { pack $xframe -side right -padx 1 } pack $frame.entry -side right -fill x -expand yes -padx 1 } proc tixComboBox:ConstructListShell {w} { upvar #0 $w data # Create the shell and the list #------------------------------ set data(w:shell) [menu $w.shell -bd 2 -relief raised -tearoff 0] wm overrideredirect $data(w:shell) 1 wm withdraw $data(w:shell) set data(w:slistbox) [tixScrolledListBox $data(w:shell).slistbox \ -anchor $data(-anchor) -scrollbarspace y \ -options {listbox.selectMode "browse"}] set data(w:listbox) [$data(w:slistbox) subwidget listbox] pack $data(w:slistbox) -expand yes -fill both -padx 2 -pady 2 } proc tixComboBox:ConstructListFrame {w frame} { upvar #0 $w data set data(w:slistbox) [tixScrolledListBox $frame.slistbox \ -anchor $data(-anchor)] set data(w:listbox) [$data(w:slistbox) subwidget listbox] pack $data(w:slistbox) -expand yes -fill both } proc tixComboBox:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings # (1) Fix the bindings for the combobox # bindtags $w [list $w TixComboBox [winfo toplevel $w] all] # (2) The entry subwidget # tixSetMegaWidget $data(w:entry) $w TixComboBox bindtags $data(w:entry) [list $data(w:entry) Entry TixComboEntry\ TixComboWid [winfo toplevel $data(w:entry)] all] # (3) The listbox and slistbox # $data(w:slistbox) config -browsecmd \ [list tixComboBox:LbBrowse $w] $data(w:slistbox) config -command\ [list tixComboBox:LbCommand $w] $data(w:listbox) config -takefocus 0 tixAddBindTag $data(w:listbox) TixComboLb tixAddBindTag $data(w:slistbox) TixComboLb tixSetMegaWidget $data(w:listbox) $w TixComboBox tixSetMegaWidget $data(w:slistbox) $w TixComboBox # (4) The buttons # if {$data(-dropdown)} { $data(w:arrow) config -takefocus 0 tixAddBindTag $data(w:arrow) TixComboArrow tixSetMegaWidget $data(w:arrow) $w TixComboBox bind $data(w:root) <1> [list tixComboBox:RootDown $w] bind $data(w:root) [list tixComboBox:RootUp $w] } if {$data(-fancy)} { if {$data(-editable)} { $data(w:cross) config -command [list tixComboBox:CrossBtn $w] \ -takefocus 0 } $data(w:tick) config -command [list tixComboBox:Invoke $w] -takefocus 0 } if {$data(-dropdown)} { set data(state) 0 } else { set data(state) n0 } } proc tixComboBoxBind {} { #---------------------------------------------------------------------- # The class bindings for the TixComboBox # tixBind TixComboBox { if {[tixComboBox:EscKey %W]} { break } } tixBind TixComboBox { tixWidgetDoWhenIdle tixComboBox:align %W } # Only the two "linear" detail_fields are for tabbing (moving) among # widgets inside the same toplevel. Other detail_fields are sort # of irrelevant # tixBind TixComboBox { if {[string equal %d NotifyNonlinear] || [string equal %d NotifyNonlinearVirtual]} { if {[info exists %W(cancelTab)]} { unset %W(cancelTab) } else { if {[set %W(-state)] ne "disabled"} { if {[set %W(-selection)] ne [set %W(-value)]} { tixComboBox:Invoke %W } } } } } tixBind TixComboBox { if {"%d" eq "NotifyNonlinear" || "%d" eq "NotifyNonlinearVirtual"} { focus [%W subwidget entry] # CYGNUS: Setting the selection if there is no data # causes backspace to misbehave. if {[[set %W(w:entry)] get] ne ""} { [set %W(w:entry)] selection from 0 [set %W(w:entry)] selection to end } } } #---------------------------------------------------------------------- # The class tixBindings for the arrow button widget inside the TixComboBox # tixBind TixComboArrow <1> { tixComboBox:ArrowDown [tixGetMegaWidget %W TixComboBox] } tixBind TixComboArrow { tixComboBox:ArrowUp [tixGetMegaWidget %W TixComboBox] } tixBind TixComboArrow { if {[tixComboBox:EscKey [tixGetMegaWidget %W TixComboBox]]} { break } } #---------------------------------------------------------------------- # The class tixBindings for the entry widget inside the TixComboBox # tixBind TixComboEntry { tixComboBox:EntDirKey [tixGetMegaWidget %W TixComboBox] up } tixBind TixComboEntry { tixComboBox:EntDirKey [tixGetMegaWidget %W TixComboBox] down } tixBind TixComboEntry { tixComboBox:EntDirKey [tixGetMegaWidget %W TixComboBox] pageup } tixBind TixComboEntry { tixComboBox:EntDirKey [tixGetMegaWidget %W TixComboBox] pagedown } tixBind TixComboEntry { tixComboBox:EntReturnKey [tixGetMegaWidget %W TixComboBox] } tixBind TixComboEntry { tixComboBox:EntKeyPress [tixGetMegaWidget %W TixComboBox] } tixBind TixComboEntry { if {[tixComboBox:EscKey [tixGetMegaWidget %W TixComboBox]]} { break } } tixBind TixComboEntry { if {[set [tixGetMegaWidget %W TixComboBox](-state)] ne "disabled"} { if {[tixComboBox:EntTab [tixGetMegaWidget %W TixComboBox]]} { break } } } tixBind TixComboEntry <1> { if {[set [tixGetMegaWidget %W TixComboBox](-state)] ne "disabled"} { focus %W } } tixBind TixComboEntry { tixComboBox:EntKeyPress [tixGetMegaWidget %W TixComboBox] } #---------------------------------------------------------------------- # The class bindings for the listbox subwidget # tixBind TixComboWid { if {[tixComboBox:EscKey [tixGetMegaWidget %W TixComboBox]]} { break } } #---------------------------------------------------------------------- # The class bindings for some widgets inside ComboBox # tixBind TixComboWid { tixComboBox:WidUp [tixGetMegaWidget %W TixComboBox] } tixBind TixComboWid { if {[tixComboBox:EscKey [tixGetMegaWidget %W TixComboBox]]} { break } } } #---------------------------------------------------------------------- # Cooked events #---------------------------------------------------------------------- proc tixComboBox:ArrowDown {w} { upvar #0 $w data if {$data(-state) eq "disabled"} { return } switch -exact -- $data(state) { 0 { tixComboBox:GoState 1 $w } 2 { tixComboBox:GoState 19 $w } default { tixComboBox:StateError $w } } } proc tixComboBox:ArrowUp {w} { upvar #0 $w data switch -exact -- $data(state) { 1 { tixComboBox:GoState 2 $w } 19 { # data(ignore) was already set in state 19 tixComboBox:GoState 4 $w } 5 { tixComboBox:GoState 13 $w } default { tixComboBox:StateError $w } } } proc tixComboBox:RootDown {w} { upvar #0 $w data switch -exact -- $data(state) { 0 { # Ignore } 2 { tixComboBox:GoState 3 $w } default { tixComboBox:StateError $w } } } proc tixComboBox:RootUp {w} { upvar #0 $w data switch -exact -- $data(state) { {1} { tixComboBox:GoState 12 $w } {3} { # data(ignore) was already set in state 3 tixComboBox:GoState 4 $w } {5} { tixComboBox:GoState 7 $w } default { tixComboBox:StateError $w } } } proc tixComboBox:WidUp {w} { upvar #0 $w data switch -exact -- $data(state) { {1} { tixComboBox:GoState 12 $w } {5} { tixComboBox:GoState 13 $w } } } proc tixComboBox:LbBrowse {w args} { upvar #0 $w data set event [tixEvent type] set x [tixEvent flag x] set y [tixEvent flag y] set X [tixEvent flag X] set Y [tixEvent flag Y] if {$data(-state) eq "disabled"} { return } switch -exact -- $event { <1> { case $data(state) { {2} { tixComboBox:GoState 5 $w $x $y $X $Y } {5} { tixComboBox:GoState 5 $w $x $y $X $Y } {n0} { tixComboBox:GoState n6 $w $x $y $X $Y } default { tixComboBox:StateError $w } } } { case $data(state) { {5} { tixComboBox:GoState 6 $w $x $y $X $Y } {n6} { tixComboBox:GoState n0 $w } default { tixComboBox:StateError $w } } } default { # Must be a motion event case $data(state) { {1} { tixComboBox:GoState 9 $w $x $y $X $Y } {5} { tixComboBox:GoState 5 $w $x $y $X $Y } {n6} { tixComboBox:GoState n6 $w $x $y $X $Y } default { tixComboBox:StateError $w } } } } } proc tixComboBox:LbCommand {w} { upvar #0 $w data if {$data(state) eq "n0"} { tixComboBox:GoState n1 $w } } #---------------------------------------------------------------------- # General keyboard event # returns 1 if the combobox is in some special state and the Escape key # shouldn't be handled by the toplevel bind tag. As a result, when a combobox # is popped up in a dialog box, Escape will popdown the combo. If the combo # is not popped up, Escape will invoke the toplevel bindtag (which can # pop down the dialog box) # proc tixComboBox:EscKey {w} { upvar #0 $w data if {$data(-state) eq "disabled"} { return 0 } switch -exact -- $data(state) { {0} { tixComboBox:GoState 17 $w } {2} { tixComboBox:GoState 16 $w return 1 } {n0} { tixComboBox:GoState n4 $w } default { # ignore return 1 } } return 0 } #---------------------------------------- # Keyboard events #---------------------------------------- proc tixComboBox:EntDirKey {w dir} { upvar #0 $w data if {$data(-state) eq "disabled"} { return } switch -exact -- $data(state) { {0} { tixComboBox:GoState 10 $w $dir } {2} { tixComboBox:GoState 11 $w $dir } {5} { # ignore } {n0} { tixComboBox:GoState n3 $w $dir } } } proc tixComboBox:EntReturnKey {w} { upvar #0 $w data if {$data(-state) eq "disabled"} { return } switch -exact -- $data(state) { {0} { tixComboBox:GoState 14 $w } {2} { tixComboBox:GoState 15 $w } {5} { # ignore } {n0} { tixComboBox:GoState n1 $w } } } # Return 1 == break from the binding == no keyboard focus traversal proc tixComboBox:EntTab {w} { upvar #0 $w data switch -exact -- $data(state) { {0} { tixComboBox:GoState 14 $w set data(cancelTab) "" return 0 } {2} { tixComboBox:GoState 15 $w set data(cancelTab) "" return 0 } {n0} { tixComboBox:GoState n1 $w set data(cancelTab) "" return 0 } default { return 1 } } } proc tixComboBox:EntKeyPress {w} { upvar #0 $w data if {$data(-state) eq "disabled" || !$data(-editable)} { return } switch -exact -- $data(state) { 0 - 2 - n0 { tixComboBox:ClearListboxSelection $w tixComboBox:SetSelection $w [$data(w:entry) get] 0 0 } } } #---------------------------------------------------------------------- proc tixComboBox:HandleDirKey {w dir} { upvar #0 $w data if {[tixComboBox:CheckListboxSelection $w]} { switch -exact -- $dir { "up" { tkListboxUpDown $data(w:listbox) -1 set data(curIndex) [lindex [$data(w:listbox) curselection] 0] tixComboBox:SetSelectionFromListbox $w } "down" { tkListboxUpDown $data(w:listbox) 1 set data(curIndex) [lindex [$data(w:listbox) curselection] 0] tixComboBox:SetSelectionFromListbox $w } "pageup" { $data(w:listbox) yview scroll -1 pages } "pagedown" { $data(w:listbox) yview scroll 1 pages } } } else { # There wasn't good selection in the listbox. # tixComboBox:SetSelectionFromListbox $w } } proc tixComboBox:Invoke {w} { upvar #0 $w data tixComboBox:SetValue $w $data(-selection) if {![winfo exists $w]} { return } if {$data(-history)} { tixComboBox:addhistory $w $data(-value) set data(curIndex) 0 } $data(w:entry) selection from 0 $data(w:entry) selection to end $data(w:entry) icursor end } #---------------------------------------------------------------------- # MAINTAINING THE -VALUE #---------------------------------------------------------------------- proc tixComboBox:SetValue {w newValue {noUpdate 0} {updateEnt 1}} { upvar #0 $w data if {[llength $data(-validatecmd)]} { set data(-value) [tixEvalCmdBinding $w $data(-validatecmd) "" $newValue] } else { set data(-value) $newValue } if {! $noUpdate} { tixVariable:UpdateVariable $w } if {$updateEnt} { if {!$data(-editable)} { $data(w:entry) delete 0 end $data(w:entry) insert 0 $data(-value) } } if {!$data(-disablecallback) && [llength $data(-command)]} { if {![info exists data(varInited)]} { set bind(specs) {%V} set bind(%V) $data(-value) tixEvalCmdBinding $w $data(-command) bind $data(-value) if {![winfo exists $w]} { # The user destroyed the window! return } } } set data(-selection) $data(-value) if {$updateEnt} { tixSetEntry $data(w:entry) $data(-value) if {$data(-anchor) eq "e"} { tixComboBox:EntryAlignEnd $w } } } # markSel: should the all the text in the entry be highlighted? # proc tixComboBox:SetSelection {w value {markSel 1} {setent 1}} { upvar #0 $w data if {$setent} { tixSetEntry $data(w:entry) $value } set data(-selection) $value if {$data(-selectmode) eq "browse"} { if {$markSel} { $data(w:entry) selection range 0 end } if {[llength $data(-browsecmd)]} { set bind(specs) {%V} set bind(%V) [$data(w:entry) get] tixEvalCmdBinding $w $data(-browsecmd) bind [$data(w:entry) get] } } else { tixComboBox:SetValue $w $value 0 0 } } proc tixComboBox:ClearListboxSelection {w} { upvar #0 $w data if {![winfo exists $data(w:listbox)]} { tixDebug "tixComboBox:ClearListboxSelection error non-existent $data(w:listbox)" return } $data(w:listbox) selection clear 0 end } proc tixComboBox:UpdateListboxSelection {w index} { upvar #0 $w data if {![winfo exists $data(w:listbox)]} { tixDebug "tixComboBox:UpdateListboxSelection error non-existent $data(w:listbox)" return } if {$index != ""} { $data(w:listbox) selection set $index $data(w:listbox) selection anchor $index } } proc tixComboBox:Cancel {w} { upvar #0 $w data tixSetEntry $data(w:entry) $data(-value) tixComboBox:SetSelection $w $data(-value) if {[tixComboBox:LbGetSelection $w] ne $data(-selection)} { tixComboBox:ClearListboxSelection $w } } proc tixComboBox:flash {w} { tixComboBox:BlinkEntry $w } # Make the entry blink when the user selects a choice # proc tixComboBox:BlinkEntry {w} { upvar #0 $w data if {![info exists data(entryBlacken)]} { set old_bg [$data(w:entry) cget -bg] set old_fg [$data(w:entry) cget -fg] $data(w:entry) config -fg $old_bg $data(w:entry) config -bg $old_fg set data(entryBlacken) 1 after 50 tixComboBox:RestoreBlink $w [list $old_bg] [list $old_fg] } } proc tixComboBox:RestoreBlink {w old_bg old_fg} { upvar #0 $w data if {[info exists data(w:entry)] && [winfo exists $data(w:entry)]} { $data(w:entry) config -fg $old_fg $data(w:entry) config -bg $old_bg } if {[info exists data(entryBlacken)]} { unset data(entryBlacken) } } #---------------------------------------- # Handle events inside the list box #---------------------------------------- proc tixComboBox:LbIndex {w {flag ""}} { upvar #0 $w data if {![winfo exists $data(w:listbox)]} { tixDebug "tixComboBox:LbIndex error non-existent $data(w:listbox)" if {$flag eq "emptyOK"} { return "" } else { return 0 } } set sel [lindex [$data(w:listbox) curselection] 0] if {$sel != ""} { return $sel } else { if {$flag eq "emptyOK"} { return "" } else { return 0 } } } #---------------------------------------------------------------------- # # STATE MANIPULATION # #---------------------------------------------------------------------- proc tixComboBox:GoState-0 {w} { upvar #0 $w data if {[info exists data(w:root)] && [grab current] eq "$data(w:root)"} { grab release $w } } proc tixComboBox:GoState-1 {w} { upvar #0 $w data tixComboBox:Popup $w } proc tixComboBox:GoState-2 {w} { upvar #0 $w data } proc tixComboBox:GoState-3 {w} { upvar #0 $w data set data(ignore) 1 tixComboBox:Popdown $w } proc tixComboBox:GoState-4 {w} { upvar #0 $w data tixComboBox:Ungrab $w if {$data(ignore)} { tixComboBox:Cancel $w } else { tixComboBox:Invoke $w } tixComboBox:GoState 0 $w } proc tixComboBox:GoState-5 {w x y X Y} { upvar #0 $w data tixComboBox:LbSelect $w $x $y $X $Y } proc tixComboBox:GoState-6 {w x y X Y} { upvar #0 $w data tixComboBox:Popdown $w if {[tixWithinWindow $data(w:shell) $X $Y]} { set data(ignore) 0 } else { set data(ignore) 1 } tixComboBox:GoState 4 $w } proc tixComboBox:GoState-7 {w} { upvar #0 $w data tixComboBox:Popdown $w set data(ignore) 1 catch { global tkPriv if {$tkPriv(afterId) != ""} { tkCancelRepeat } } set data(ignore) 1 tixComboBox:GoState 4 $w } proc tixComboBox:GoState-9 {w x y X Y} { upvar #0 $w data catch { tkButtonUp $data(w:arrow) } tixComboBox:GoState 5 $w $x $y $X $Y } proc tixComboBox:GoState-10 {w dir} { upvar #0 $w data tixComboBox:Popup $w if {![tixComboBox:CheckListboxSelection $w]} { # There wasn't good selection in the listbox. # tixComboBox:SetSelectionFromListbox $w } tixComboBox:GoState 2 $w } proc tixComboBox:GoState-11 {w dir} { upvar #0 $w data tixComboBox:HandleDirKey $w $dir tixComboBox:GoState 2 $w } proc tixComboBox:GoState-12 {w} { upvar #0 $w data catch { tkButtonUp $data(w:arrow) } tixComboBox:GoState 2 $w } proc tixComboBox:GoState-13 {w} { upvar #0 $w data catch { global tkPriv if {$tkPriv(afterId) != ""} { tkCancelRepeat } } tixComboBox:GoState 2 $w } proc tixComboBox:GoState-14 {w} { upvar #0 $w data tixComboBox:Invoke $w tixComboBox:GoState 0 $w } proc tixComboBox:GoState-15 {w} { upvar #0 $w data tixComboBox:Popdown $w set data(ignore) 0 tixComboBox:GoState 4 $w } proc tixComboBox:GoState-16 {w} { upvar #0 $w data tixComboBox:Popdown $w tixComboBox:Cancel $w set data(ignore) 1 tixComboBox:GoState 4 $w } proc tixComboBox:GoState-17 {w} { upvar #0 $w data tixComboBox:Cancel $w tixComboBox:GoState 0 $w } proc tixComboBox:GoState-19 {w} { upvar #0 $w data set data(ignore) [string equal $data(-selection) $data(-value)] tixComboBox:Popdown $w } #---------------------------------------------------------------------- # Non-dropdown states #---------------------------------------------------------------------- proc tixComboBox:GoState-n0 {w} { upvar #0 $w data } proc tixComboBox:GoState-n1 {w} { upvar #0 $w data tixComboBox:Invoke $w tixComboBox:GoState n0 $w } proc tixComboBox:GoState-n3 {w dir} { upvar #0 $w data tixComboBox:HandleDirKey $w $dir tixComboBox:GoState n0 $w } proc tixComboBox:GoState-n4 {w} { upvar #0 $w data tixComboBox:Cancel $w tixComboBox:GoState n0 $w } proc tixComboBox:GoState-n6 {w x y X Y} { upvar #0 $w data tixComboBox:LbSelect $w $x $y $X $Y } #---------------------------------------------------------------------- # General State Manipulation #---------------------------------------------------------------------- proc tixComboBox:GoState {s w args} { upvar #0 $w data tixComboBox:SetState $w $s eval tixComboBox:GoState-$s $w $args } proc tixComboBox:SetState {w s} { upvar #0 $w data # catch {puts [info level -2]} # puts "setting state $data(state) --> $s" set data(state) $s } proc tixComboBox:StateError {w} { upvar #0 $w data # error "wrong state $data(state)" } #---------------------------------------------------------------------- # Listbox handling #---------------------------------------------------------------------- # Set a selection if there isn't one. Returns true if there was already # a good selection inside the listbox # proc tixComboBox:CheckListboxSelection {w} { upvar #0 $w data if {![winfo exists $data(w:listbox)]} { tixDebug "tixComboBox:CheckListboxSelection error non-existent $data(w:listbox)" return 0 } if {[$data(w:listbox) curselection] == ""} { if {$data(curIndex) == ""} { set data(curIndex) 0 } $data(w:listbox) activate $data(curIndex) $data(w:listbox) selection clear 0 end $data(w:listbox) selection set $data(curIndex) $data(w:listbox) see $data(curIndex) return 0 } else { return 1 } } proc tixComboBox:SetSelectionFromListbox {w} { upvar #0 $w data set string [$data(w:listbox) get $data(curIndex)] tixComboBox:SetSelection $w $string tixComboBox:UpdateListboxSelection $w $data(curIndex) } proc tixComboBox:LbGetSelection {w} { upvar #0 $w data set index [tixComboBox:LbIndex $w emptyOK] if {$index >=0} { return [$data(w:listbox) get $index] } else { return "" } } proc tixComboBox:LbSelect {w x y X Y} { upvar #0 $w data set index [tixComboBox:LbIndex $w emptyOK] if {$index == ""} { set index [$data(w:listbox) nearest $y] } if {$index >= 0} { if {[focus -lastfor $data(w:entry)] ne $data(w:entry) && [focus -lastfor $data(w:entry)] ne $data(w:listbox)} { focus $data(w:entry) } set string [$data(w:listbox) get $index] tixComboBox:SetSelection $w $string tixComboBox:UpdateListboxSelection $w $index } } #---------------------------------------------------------------------- # Internal commands #---------------------------------------------------------------------- proc tixComboBox:CrossBtn {w} { upvar #0 $w data $data(w:entry) delete 0 end tixComboBox:ClearListboxSelection $w tixComboBox:SetSelection $w "" } #-------------------------------------------------- # Popping up list shell #-------------------------------------------------- # Popup the listbox and grab # # proc tixComboBox:Popup {w} { global tcl_platform upvar #0 $w data if {![winfo ismapped $data(w:root)]} { return } #--------------------------------------------------------------------- # Pop up # if {$data(-listcmd) != ""} { # This option allows the user to fill in the listbox on demand # tixEvalCmdBinding $w $data(-listcmd) } # calculate the size set y [winfo rooty $data(w:entry)] incr y [winfo height $data(w:entry)] incr y 3 set bd [$data(w:shell) cget -bd] # incr bd [$data(w:shell) cget -highlightthickness] set height [expr {[winfo reqheight $data(w:slistbox)] + 2*$bd}] set x1 [winfo rootx $data(w:entry)] if {$data(-listwidth) == ""} { if {[winfo ismapped $data(w:arrow)]} { set x2 [winfo rootx $data(w:arrow)] if {$x2 >= $x1} { incr x2 [winfo width $data(w:arrow)] set width [expr {$x2 - $x1}] } else { set width [winfo width $data(w:entry)] set x2 [expr {$x1 + $width}] } } else { set width [winfo width $data(w:entry)] set x2 [expr {$x1 + $width}] } } else { set width $data(-listwidth) set x2 [expr {$x1 + $width}] } set reqwidth [winfo reqwidth $data(w:shell)] if {$reqwidth < $width} { set reqwidth $width } else { if {$reqwidth > [expr {$width *3}]} { set reqwidth [expr {$width *3}] } if {$reqwidth > [winfo vrootwidth .]} { set reqwidth [winfo vrootwidth .] } } set width $reqwidth # If the listbox is too far right, pull it back to the left # set scrwidth [winfo vrootwidth .] if {$x2 > $scrwidth} { set x1 [expr {$scrwidth - $width}] } # If the listbox is too far left, pull it back to the right # if {$x1 < 0} { set x1 0 } # If the listbox is below bottom of screen, put it upwards # set scrheight [winfo vrootheight .] set bottom [expr {$y+$height}] if {$bottom > $scrheight} { set y [expr {$y-$height-[winfo height $data(w:entry)]-5}] } # OK , popup the shell # global tcl_platform wm geometry $data(w:shell) $reqwidth\x$height+$x1+$y if {$tcl_platform(platform) eq "windows"} { update } wm deiconify $data(w:shell) if {$tcl_platform(platform) eq "windows"} { update } raise $data(w:shell) focus $data(w:entry) set data(popped) 1 # add for safety update tixComboBox:Grab $w } proc tixComboBox:SetCursor {w cursor} { upvar #0 $w data $w config -cursor $cursor } proc tixComboBox:Popdown {w} { upvar #0 $w data wm withdraw $data(w:shell) tixComboBox:SetCursor $w "" } # Grab the server so that user cannot move the windows around proc tixComboBox:Grab {w} { upvar #0 $w data tixComboBox:SetCursor $w arrow if {[catch { # We catch here because grab may fail under a lot of circumstances # Just don't want to break the code ... switch -exact -- $data(-grab) { global { tixPushGrab -global $data(w:root) } local { tixPushGrab $data(w:root) } } } err]} { tixDebug "tixComboBox:Grab+: Error grabbing $data(w:root)\n$err" } } proc tixComboBox:Ungrab {w} { upvar #0 $w data if {[catch { catch { switch -exact -- $data(-grab) { global { tixPopGrab } local { tixPopGrab } } } } err]} { tixDebug "tixComboBox:Grab+: Error grabbing $data(w:root)\n$err" } } #---------------------------------------------------------------------- # Alignment #---------------------------------------------------------------------- # The following two routines can emulate a "right align mode" for the # entry in the combo box. proc tixComboBox:EntryAlignEnd {w} { upvar #0 $w data $data(w:entry) xview end } proc tixComboBox:Destructor {w} { upvar #0 $w data tixUnsetMegaWidget $data(w:entry) tixVariable:DeleteVariable $w # Chain this to the superclass # tixChainMethod $w Destructor } #---------------------------------------------------------------------- # CONFIG OPTIONS #---------------------------------------------------------------------- proc tixComboBox:config-state {w value} { upvar #0 $w data catch {if {[$data(w:arrow) cget -state] eq $value} {set a 1}} if {[info exists a]} { return } catch {$data(w:arrow) config -state $value} catch {$data(w:tick) config -state $value} catch {$data(w:cross) config -state $value} catch {$data(w:slistbox) config -state $value} if {[string equal $value normal]} { set fg [$data(w:arrow) cget -fg] set entryFg $data(entryfg) set lbSelFg [lindex [$data(w:listbox) config -selectforeground] 3] set lbSelBg [lindex [$data(w:listbox) config -selectbackground] 3] set entrySelFg [lindex [$data(w:entry) config -selectforeground] 3] set entrySelBg [lindex [$data(w:entry) config -selectbackground] 3] } else { set fg [$data(w:arrow) cget -disabledforeground] set entryFg $data(-disabledforeground) set lbSelFg $entryFg set lbSelBg [$data(w:listbox) cget -bg] set entrySelFg $entryFg set entrySelBg [$data(w:entry) cget -bg] } if {$fg ne ""} { $data(w:label) config -fg $fg $data(w:listbox) config -fg $fg -selectforeground $lbSelFg \ -selectbackground $lbSelBg } $data(w:entry) config -fg $entryFg -selectforeground $entrySelFg \ -selectbackground $entrySelBg if {$value eq "normal"} { if {$data(-editable)} { $data(w:entry) config -state normal } $data(w:entry) config -takefocus 1 } else { if {$data(-editable)} { $data(w:entry) config -state disabled } $data(w:entry) config -takefocus 0 } } proc tixComboBox:config-value {w value} { upvar #0 $w data tixComboBox:SetValue $w $value set data(-selection) $value if {[tixComboBox:LbGetSelection $w] ne $value} { tixComboBox:ClearListboxSelection $w } } proc tixComboBox:config-selection {w value} { upvar #0 $w data tixComboBox:SetSelection $w $value if {[tixComboBox:LbGetSelection $w] ne $value} { tixComboBox:ClearListboxSelection $w } } proc tixComboBox:config-variable {w arg} { upvar #0 $w data if {[tixVariable:ConfigVariable $w $arg]} { # The value of data(-value) is changed if tixVariable:ConfigVariable # returns true set data(-selection) $data(-value) tixComboBox:SetValue $w $data(-value) 1 } catch { unset data(varInited) } set data(-variable) $arg } #---------------------------------------------------------------------- # WIDGET COMMANDS #---------------------------------------------------------------------- proc tixComboBox:align {w args} { upvar #0 $w data if {$data(-anchor) eq "e"} { tixComboBox:EntryAlignEnd $w } } proc tixComboBox:addhistory {w value} { upvar #0 $w data tixComboBox:insert $w 0 $value $data(w:listbox) selection clear 0 end if {$data(-prunehistory)} { # Prune from the end # set max [$data(w:listbox) size] if {$max <= 1} { return } for {set i [expr {$max -1}]} {$i >= 1} {incr i -1} { if {[$data(w:listbox) get $i] eq $value} { $data(w:listbox) delete $i break } } } } proc tixComboBox:appendhistory {w value} { upvar #0 $w data tixComboBox:insert $w end $value $data(w:listbox) selection clear 0 end if {$data(-prunehistory)} { # Prune from the end # set max [$data(w:listbox) size] if {$max <= 1} { return } for {set i [expr {$max -2}]} {$i >= 0} {incr i -1} { if {[$data(w:listbox) get $i] eq $value} { $data(w:listbox) delete $i break } } } } proc tixComboBox:insert {w index newitem} { upvar #0 $w data $data(w:listbox) insert $index $newitem if {$data(-history) && $data(-historylimit) != "" && [$data(w:listbox) size] eq $data(-historylimit)} { $data(w:listbox) delete 0 } } proc tixComboBox:pick {w index} { upvar #0 $w data $data(w:listbox) activate $index $data(w:listbox) selection clear 0 end $data(w:listbox) selection set active $data(w:listbox) see active set text [$data(w:listbox) get $index] tixComboBox:SetValue $w $text set data(curIndex) $index } proc tixComboBox:invoke {w} { tixComboBox:Invoke $w } proc tixComboBox:popdown {w} { upvar #0 $w data if {$data(-dropdown)} { tixComboBox:Popdown $w } } Tix8.4.3/library/DirList.tcl0000644000122200012240000001563010031436051016111 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: DirList.tcl,v 1.5 2004/03/28 02:44:57 hobbs Exp $ # # DirList.tcl -- # # Implements the tixDirList widget. # # - overrides the -browsecmd and -command options of the # HList subwidget # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixDirList { -classname TixDirList -superclass tixScrolledHList -method { chdir } -flag { -browsecmd -command -dircmd -disablecallback -root -rootname -showhidden -value } -configspec { {-browsecmd browseCmd BrowseCmd ""} {-command command Command ""} {-dircmd dirCmd DirCmd ""} {-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean} {-root root Root ""} {-rootname rootName RootName ""} {-showhidden showHidden ShowHidden 0 tixVerifyBoolean} {-value value Value ""} } -default { {.scrollbar auto} {*borderWidth 1} {*hlist.background #c3c3c3} {*hlist.indent 7} {*hlist.relief sunken} {*hlist.height 10} {*hlist.width 20} {*hlist.padX 2} {*hlist.padY 0} {*hlist.wideSelection 0} {*hlist.drawBranch 0} {*hlist.highlightBackground #d9d9d9} {*hlist.itemType imagetext} {*hlist.takeFocus 1} } -forcecall { -value } } # Important data members: # # data(vpath) # The currently selected vpath. This internal variable is useful on # the Win95 platform, where an directory may correspond to more than # one node in the hierarchy. For example, C:\Windows\Desktop\Foo # can appead as "Desktop\Foo" and # "Desktop\My Computer\C:\Windows\Desktop\Foo". This variable tells us # which icon should we show given the same DOS pathname. # proc tixDirList:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec } proc tixDirList:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget $data(w:hlist) config -separator [tixFSSep] -selectmode "single" } proc tixDirList:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings $data(w:hlist) config \ -browsecmd [list tixDirList:Browse $w] \ -command [list tixDirList:Command $w] if {$data(-value) eq "" || [catch {set data(-value) [tixFSNormalize $data(-value)]}]} { set data(-value) [pwd] } set data(vpath) [tixFSInternal $data(-value)] } #---------------------------------------------------------------------- # Incoming-Events #---------------------------------------------------------------------- proc tixDirList:Browse {w args} { upvar #0 $w data set vpath [tixEvent flag V] set value [$data(w:hlist) info data $vpath] tixDirList:HighLight $w $vpath set data(vpath) $vpath set data(-value) [tixFSExternal $value] tixDirList:CallBrowseCmd $w $data(-value) } proc tixDirList:Command {w args} { upvar #0 $w data set vpath [tixEvent value] set value [$data(w:hlist) info data $vpath] set data(-value) [tixFSExternal $value] tixDirList:LoadDir $w [tixFSNativeNorm $value] $vpath tixDirList:HighLight $w $vpath set data(vpath) $vpath tixDirList:CallCommand $w $data(-value) } #---------------------------------------------------------------------- # Outgoing-Events #---------------------------------------------------------------------- proc tixDirList:CallBrowseCmd {w npath} { upvar #0 $w data if {[llength $data(-browsecmd)]} { set bind(specs) "%V" set bind(%V) $npath tixEvalCmdBinding $w $data(-browsecmd) bind $npath } } proc tixDirList:CallCommand {w npath} { upvar #0 $w data if {[llength $data(-command)] && !$data(-disablecallback)} { set bind(specs) "%V" set bind(%V) $npath tixEvalCmdBinding $w $data(-command) bind $npath } } #---------------------------------------------------------------------- # Directory loading #---------------------------------------------------------------------- proc tixDirList:LoadDir {w {npath ""} {vpath ""}} { upvar #0 $w data tixBusy $w on $data(w:hlist) $data(w:hlist) delete all if {$npath eq ""} { set npath [tixFSNativeNorm $data(-value)] set vpath [tixFSInternal $npath] } tixDirList:ListHierachy $w $npath $vpath tixDirList:ListSubDirs $w $npath $vpath tixWidgetDoWhenIdle tixBusy $w off $data(w:hlist) } proc tixDirList:ListHierachy {w npath vpath} { upvar #0 $w data set img [tix getimage openfold] set curpath "" foreach part [tixFSAncestors $npath] { set curpath [file join $curpath $part] set text [tixFSDisplayFileName $curpath] set vpath [tixFSInternal $curpath] $data(w:hlist) add $vpath -text $text -data $curpath -image $img } } proc tixDirList:ListSubDirs {w npath vpath} { upvar #0 $w data $data(w:hlist) entryconfig $vpath -image [tix getimage act_fold] set img [tix getimage folder] foreach ent [tixFSListDir $npath 1 0 0 $data(-showhidden)] { set curpath [file join $npath $ent] set vp [tixFSInternal $curpath] if {![$data(w:hlist) info exists $vp]} { $data(w:hlist) add $vp -text $ent -data $curpath -image $img } } } proc tixDirList:SetValue {w npath vpath {flag ""}} { upvar #0 $w data if {$flag eq "reload" || ![$data(w:hlist) info exists $vpath]} { tixDirList:LoadDir $w $npath $vpath } tixDirList:HighLight $w $vpath set data(-value) [tixFSNativeNorm $npath] set data(vpath) $vpath tixDirList:CallCommand $w $data(-value) } proc tixDirList:HighLight {w vpath} { upvar #0 $w data if {$data(vpath) ne $vpath} { set old $data(vpath) if {[$data(w:hlist) info exists $old]} { # Un-highlight the originally selected entry by changing its # folder image if {[llength [$data(w:hlist) info children $old]]} { set img [tix getimage openfold] } else { set img [tix getimage folder] } $data(w:hlist) entryconfig $old -image $img } } # Highlight the newly selected entry # $data(w:hlist) entryconfig $vpath -image [tix getimage act_fold] $data(w:hlist) anchor set $vpath $data(w:hlist) select clear $data(w:hlist) select set $vpath $data(w:hlist) see $vpath } #---------------------------------------------------------------------- # Config options #---------------------------------------------------------------------- proc tixDirList:config-value {w value} { upvar #0 $w data tixDirList:chdir $w $value return $data(-value) } proc tixDirList:config-showhidden {w value} { upvar #0 $w data tixWidgetDoWhenIdle tixDirList:LoadDir $w } #---------------------------------------------------------------------- # Public methods #---------------------------------------------------------------------- proc tixDirList:chdir {w value} { upvar #0 $w data set npath [tixFSNativeNorm $value] tixDirList:SetValue $w $npath [tixFSInternal $npath] } Tix8.4.3/library/CObjView.tcl0000644000122200012240000001707207404570302016221 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: CObjView.tcl,v 1.3 2001/12/09 05:04:02 idiscovery Exp $ # # CObjView.tcl -- # # This file implements the Canvas Object View widget. This is a base # class of IconView. It implements: # (1) 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. # # (2) D+D bindings of the objects (%% not implemented) # # (3) Keyboard traversal of the objects (%% not implemented). By the # virtual method :SelectObject. # # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixCObjView { -classname TixCObjView -superclass tixScrolledWidget -method { adjustscrollregion } -flag { -xscrollincrement -yscrollincrement } -static { } -configspec { {-xscrollincrement xScrollIncrement ScrollIncrement 10} {-yscrollincrement yScrollIncrement ScrollIncrement 10} } -default { {.scrollbar auto} {*borderWidth 1} {*canvas.background #c3c3c3} {*canvas.highlightBackground #d9d9d9} {*canvas.relief sunken} {*canvas.takeFocus 1} {*Scrollbar.takeFocus 0} } -forcecall { -scrollbar } } proc tixCObjView:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget set data(w:canvas) \ [canvas $w.canvas] set data(w:hsb) \ [scrollbar $w.hsb -orient horizontal] set data(w:vsb) \ [scrollbar $w.vsb -orient vertical] set data(pw:client) $data(w:canvas) set data(xorig) 0 set data(yorig) 0 set data(sx1) 0 set data(sy1) 0 set data(sx2) 0 set data(sy2) 0 } proc tixCObjView:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings # %% scan/drag of canvas?? # # $data(w:canvas) config \ # -xscrollcommand "tixCObjView:XScroll $w"\ # -yscrollcommand "tixCObjView:YScroll $w" $data(w:hsb) config -command "tixCObjView:UserScroll $w x" $data(w:vsb) config -command "tixCObjView:UserScroll $w y" } #---------------------------------------------------------------------- # # option configs #---------------------------------------------------------------------- proc tixCObjView:config-takefocus {w value} { upvar #0 $w data $data(w:canvas) config -takefocus $value } #---------------------------------------------------------------------- # # Widget commands #---------------------------------------------------------------------- proc tixCObjView:adjustscrollregion {w} { upvar #0 $w data set cW [tixWinWidth $data(w:canvas)] set cH [tixWinHeight $data(w:canvas)] tixCObjView:GetScrollRegion $w $cW $cH 1 1 } #---------------------------------------------------------------------- # # Private Methods #---------------------------------------------------------------------- proc tixCObjView:GeometryInfo {w cW cH} { upvar #0 $w data set bd \ [expr [$data(w:canvas) cget -bd] + [$data(w:canvas) cget -highlightthickness]] incr cW -[expr {2*$bd}] incr cH -[expr {2*$bd}] return [tixCObjView:GetScrollRegion $w $cW $cH 0 0] } proc tixCObjView:PlaceWindow {w} { upvar #0 $w data set cW [tixWinWidth $data(w:canvas)] set cH [tixWinHeight $data(w:canvas)] tixCObjView:GetScrollRegion $w $cW $cH 1 0 tixChainMethod $w PlaceWindow } proc tixCObjView:GetScrollRegion {w cW cH setReg callConfig} { upvar #0 $w data set x1max $data(xorig) set y1max $data(yorig) set x2min [expr {$x1max + $cW - 1}] set y2min [expr {$y1max + $cH - 1}] set bbox [$data(w:canvas) bbox all] if {$bbox == ""} { set bbox {0 0 1 1} } set x1 [lindex $bbox 0] set y1 [lindex $bbox 1] set x2 [lindex $bbox 2] set y2 [lindex $bbox 3] set bd \ [expr [$data(w:canvas) cget -bd] + [$data(w:canvas) cget -highlightthickness]] incr x1 -$bd incr y1 -$bd incr x2 -$bd incr y2 -$bd if {$x1 > $x1max} { set x1 $x1max } if {$y1 > $y1max} { set y1 $y1max } if {$x2 < $x2min} { set x2 $x2min } if {$y2 < $y2min} { set y2 $y2min } set data(sx1) $x1 set data(sy1) $y1 set data(sx2) $x2 set data(sy2) $y2 set sW [expr {$x2 - $x1 + 1}] set sH [expr {$y2 - $y1 + 1}] # puts "sregion = {$x1 $y1 $x2 $y2}; sW=$sW; cW=$cW" if {$sW > $cW} { set hsbSpec {0.5 1} } else { set hsbSpec {0 1} } if {$sH > $cH} { set vsbSpec {0.5 1} } else { set vsbSpec {0 1} } if $setReg { tixCObjView:SetScrollBars $w $cW $cH $sW $sH } if $callConfig { tixWidgetDoWhenIdle tixScrolledWidget:Configure $w } return [list $hsbSpec $vsbSpec] } #xF = xFirst # proc tixCObjView:SetScrollBars {w cW cH sW sH} { upvar #0 $w data # puts "$data(xorig) <--> $data(sx1)" set xF [expr ($data(xorig).0-$data(sx1).0)/$sW.0] set xL [expr $cW.0/$sW.0 + $xF] set yF [expr ($data(yorig).0-$data(sy1).0)/$sH.0] set yL [expr $cH.0/$sH.0 + $yF] # puts "$xF $xL : $yF $yL" $data(w:hsb) set $xF $xL $data(w:vsb) set $yF $yL } proc tixCObjView:UserScroll {w dir type args} { upvar #0 $w data $data(w:canvas) config -xscrollincrement 1 -yscrollincrement 1 case $dir { x { set n $data(xorig) set orig $data(xorig) set s1 $data(sx1) set total [expr {$data(sx2)-$data(sx1)}] set page [tixWinWidth $data(w:canvas)] set min $data(sx1) set max [expr {$data(sx1)+$total-$page}] set inc $data(-xscrollincrement) } y { set n $data(yorig) set orig $data(yorig) set s1 $data(sy1) set total [expr {$data(sy2)-$data(sy1)}] set page [tixWinHeight $data(w:canvas)] set min $data(sy1) set max [expr {$data(sy1)+$total-$page}] set inc $data(-yscrollincrement) } } case $type { scroll { set amt [lindex $args 0] set unit [lindex $args 1] case $unit { units { incr n [expr int($inc)*$amt] } pages { incr n [expr {$page*$amt}] } } } moveto { set first [lindex $args 0] set n [expr round($first*$total)+$s1] } } if {$n < $min} { set n $min } if {$n > $max} { set n $max } # puts "n=$n min=$min max=$max" case $dir { x { $data(w:canvas) xview scroll [expr {$n-$orig}] units set data(xorig) $n } y { $data(w:canvas) yview scroll [expr {$n-$orig}] units set data(yorig) $n } } set cW [tixWinWidth $data(w:canvas)] set cH [tixWinHeight $data(w:canvas)] set sW [expr {$data(sx2)-$data(sx1)+1}] set sH [expr {$data(sy2)-$data(sy1)+1}] tixCObjView:SetScrollBars $w $cW $cH $sW $sH } # Junk # # proc tixCObjView:XScroll {w first last} { upvar #0 $w data set sc [$data(w:canvas) cget -scrollregion] if {$sc == ""} { set x1 1 set x2 [tixWinWidth $data(w:canvas)] } else { set x1 [lindex $sc 0] set x2 [lindex $sc 2] } set W [expr {$x2 - $x1}] if {$W < 1} { set W 1 } $data(w:hsb) set $first $last # tixWidgetDoWhenIdle tixScrolledWidget:Configure $w } # Junk # proc tixCObjView:YScroll {w first last} { upvar #0 $w data set sc [$data(w:canvas) cget -scrollregion] if {$sc == ""} { set y1 1 set y2 [tixWinHeight $data(w:canvas)] } else { set y1 [lindex $sc 1] set y2 [lindex $sc 3] } set H [expr {$y2 - $y1}] if {$H < 1} { set H 1 } $data(w:vsb) set $first $last # tixWidgetDoWhenIdle tixScrolledWidget:Configure $w } Tix8.4.3/library/MultView.tcl0000644000122200012240000000717007404570302016323 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: MultView.tcl,v 1.3 2001/12/09 05:04:02 idiscovery Exp $ # # MultView.tcl -- # # Implements the multi-view widget # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixMultiView { -classname TixMultiView -superclass tixPrimitive -method { add } -flag { -browsecmd -command -view } -forcecall { -view } -configspec { {-browsecmd browseCmd BrowseCmd ""} {-command command Command ""} {-view view View icon tixMultiView:VerifyView} } -alias { } -default { } } proc tixMultiView:InitWidgetRec {w} { upvar #0 $w data global env tixChainMethod $w InitWidgetRec } #---------------------------------------------------------------------- # Construct widget #---------------------------------------------------------------------- proc tixMultiView:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget set data(w:stlist) [tixScrolledTList $w.stlist] set data(w:sgrid) [tixScrolledGrid $w.sgrid] set data(w:icon) [tixIconView $w.icon] set data(w:tlist) [$data(w:stlist) subwidget tlist] set data(w:grid) [$data(w:sgrid) subwidget grid] $data(w:grid) config -formatcmd [list tixMultiView:GridFormat $w] \ -leftmargin 0 -topmargin 1 } proc tixMultiView:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings } proc tixMultiView:GetWid {w which} { upvar #0 $w data case $which { list { return $data(w:stlist) } icon { return $data(w:icon) } detail { return $data(w:sgrid) } } } #---------------------------------------------------------------------- # Configuration #---------------------------------------------------------------------- proc tixMultiView:config-view {w value} { upvar #0 $w data if {$data(-view) != ""} { pack forget [tixMultiView:GetWid $w $data(-view)] } pack [tixMultiView:GetWid $w $value] -expand yes -fill both } #---------------------------------------------------------------------- # Private methods #---------------------------------------------------------------------- proc tixMultiView:GridFormat {w area x1 y1 x2 y2} { upvar #0 $w data case $area { main { } {x-margin y-margin s-margin} { # cborder specifies consecutive 3d borders # $data(w:grid) format cborder $x1 $y1 $x2 $y2 \ -fill 1 -relief raised -bd 2 -bg gray60 \ -selectbackground gray80 } } } #---------------------------------------------------------------------- # Public methods #---------------------------------------------------------------------- # Return value is the index of "$name" in the grid subwidget # # proc tixMultiView:add {w name args} { upvar #0 $w data set validOptions {-image -text} set opt(-image) "" set opt(-text) "" tixHandleOptions -nounknown opt $validOptions $args $data(w:icon) add $name $opt(-image) $opt(-text) $data(w:tlist) insert end -itemtype imagetext \ -image $opt(-image) -text $opt(-text) $data(w:grid) set 0 end -itemtype imagetext \ -image $opt(-image) -text $opt(-text) return max } #---------------------------------------------------------------------- # checker #---------------------------------------------------------------------- proc tixMultiView:VerifyView {value} { case $value { {icon list detail} { return $value } } error "bad view \"$value\", must be detail, icon or list" } Tix8.4.3/library/LabEntry.tcl0000644000122200012240000000413710031436051016257 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: LabEntry.tcl,v 1.4 2004/03/28 02:44:57 hobbs Exp $ # # LabEntry.tcl -- # # TixLabelEntry Widget: an entry box with a label # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixLabelEntry { -classname TixLabelEntry -superclass tixLabelWidget -method { } -flag { -disabledforeground -state } -forcecall { -state } -static { } -configspec { {-disabledforeground disabledForeground DisabledForeground #303030} {-state state State normal} } -default { {.borderWidth 0} {*entry.relief sunken} {*entry.width 7} {*label.anchor e} {*label.borderWidth 0} } } proc tixLabelEntry:ConstructFramedWidget {w frame} { upvar #0 $w data tixChainMethod $w ConstructFramedWidget $frame set data(w:entry) [entry $frame.entry] pack $data(w:entry) -side left -expand yes -fill both # This value is used to configure the disable/normal fg of the ebtry # set data(entryfg) [$data(w:entry) cget -fg] set data(labelfg) [$data(w:label) cget -fg] } proc tixLabelEntryBind {} { tixBind TixLabelEntry { if {[focus -displayof [set %W(w:entry)]] ne [set %W(w:entry)]} { focus [%W subwidget entry] [set %W(w:entry)] selection from 0 [set %W(w:entry)] selection to end [set %W(w:entry)] icursor end } } } #---------------------------------------------------------------------- # CONFIG OPTIONS #---------------------------------------------------------------------- proc tixLabelEntry:config-state {w value} { upvar #0 $w data if {$value == "normal"} { catch { $data(w:label) config -fg $data(labelfg) } $data(w:entry) config -state $value -fg $data(entryfg) } else { catch { $data(w:label) config -fg $data(-disabledforeground) } $data(w:entry) config -state $value -fg $data(-disabledforeground) } } Tix8.4.3/library/PopMenu.tcl0000644000122200012240000001257410031436051016126 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: PopMenu.tcl,v 1.7 2004/03/28 02:44:57 hobbs Exp $ # # PopMenu.tcl -- # # This file implements the TixPopupMenu widget # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # global tkPriv if {![llength [info globals tkPriv]]} { tk::unsupported::ExposePrivateVariable tkPriv } #-------------------------------------------------------------------------- # tkPriv elements used in this file: # # inMenubutton - #-------------------------------------------------------------------------- # foreach fun {tkMenuUnpost tkMbButtonUp tkMbEnter tkMbPost} { if {![llength [info commands $fun]]} { tk::unsupported::ExposePrivateCommand $fun } } unset fun tixWidgetClass tixPopupMenu { -classname TixPopupMenu -superclass tixShell -method { bind post unbind } -flag { -buttons -installcolormap -postcmd -spring -state -title } -configspec { {-buttons buttons Buttons {{3 {Any}}}} {-installcolormap installColormap InstallColormap false} {-postcmd postCmd PostCmd ""} {-spring spring Spring 1 tixVerifyBoolean} {-state state State normal} {-cursor corsor Cursor arrow} } -static { -buttons } -default { {*Menu.tearOff 0} } } proc tixPopupMenu:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec set data(g:clients) "" } proc tixPopupMenu:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget wm overrideredirect $w 1 wm withdraw $w set data(w:menubutton) [menubutton $w.menubutton -text $data(-title) \ -menu $w.menubutton.menu -anchor w] set data(w:menu) [menu $w.menubutton.menu] pack $data(w:menubutton) -expand yes -fill both } proc tixPopupMenu:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings foreach elm $data(-buttons) { set btn [lindex $elm 0] foreach mod [lindex $elm 1] { tixBind TixPopupMenu:MB:$w <$mod-ButtonPress-$btn> \ "tixPopupMenu:Unpost $w" tixBind TixPopupMenu:$w <$mod-ButtonPress-$btn> \ "tixPopupMenu:post $w %W %x %y" } tixBind TixPopupMenu:MB:$w \ "tixPopupMenu:BtnRelease $w %X %Y" tixBind TixPopupMenu:M:$w \ "tixPopupMenu:Unmap $w" tixBind TixPopupMenu:$w \ "tixPopupMenu:BtnRelease $w %X %Y" tixAddBindTag $data(w:menubutton) TixPopupMenu:MB:$w tixAddBindTag $data(w:menu) TixPopupMenu:M:$w } } #---------------------------------------------------------------------- # PrivateMethods: #---------------------------------------------------------------------- proc tixPopupMenu:Unpost {w} { upvar #0 $w data catch { tkMenuUnpost "" } # tkMbButtonUp $data(w:menubutton) } proc tixPopupMenu:BtnRelease {w rootX rootY} { upvar #0 $w data set cW [winfo containing -displayof $w $rootX $rootY] if {$data(-spring)} { tixPopupMenu:Unpost $w } } proc tixPopupMenu:Unmap {w} { upvar #0 $w data wm withdraw $w } proc tixPopupMenu:Destructor {w} { upvar #0 $w data foreach client $data(g:clients) { if {[winfo exists $client]} { tixDeleteBindTag $client TixPopupMenu:$w } } # delete the extra bindings # foreach tag [list TixPopupMenu:MB:$w TixPopupMenu:M:$w] { foreach e [bind $tag] { bind $tag $e "" } } tixChainMethod $w Destructor } proc tixPopupMenu:config-title {w value} { upvar #0 $w data $data(w:menubutton) config -text $value } #---------------------------------------------------------------------- # PublicMethods: #---------------------------------------------------------------------- proc tixPopupMenu:bind {w args} { upvar #0 $w data foreach client $args { if {[lsearch $data(g:clients) $client] == -1} { lappend data(g:clients) $client tixAppendBindTag $client TixPopupMenu:$w } } } proc tixPopupMenu:unbind {w args} { upvar #0 $w data foreach client $args { if {[winfo exists $client]} { set index [lsearch $data(g:clients) $client] if {$index != -1} { tixDeleteBindTag $client TixPopupMenu:$w set data(g:clients) [lreplace $data(g:clients) $index $index] } } } } proc tixPopupMenu:post {w client x y} { upvar #0 $w data global tkPriv if {$data(-state) == "disabled"} { return } set rootx [expr $x + [winfo rootx $client]] set rooty [expr $y + [winfo rooty $client]] if {$data(-postcmd) != ""} { set ret [tixEvalCmdBinding $w $data(-postcmd) "" $rootx $rooty] if {![tixGetBoolean $ret]} { return } } if {[string is true -strict $data(-installcolormap)]} { wm colormapwindows . $w } set menuWidth [winfo reqwidth $data(w:menu)] set width [winfo reqwidth $w] set height [winfo reqheight $w] if {$width < $menuWidth} { set width $menuWidth } set wx $rootx set wy $rooty # trick: the following lines allow the popup menu # acquire a stable width and height when it is finally # put on the visible screen. Advoid flashing # wm geometry $w +10000+10000 wm deiconify $w raise $w update wm geometry $w ${width}x${height}+${wx}+${wy} update tkMbEnter $data(w:menubutton) tkMbPost $tkPriv(inMenubutton) $rootx $rooty } Tix8.4.3/library/OptMenu.tcl0000644000122200012240000002226007404570302016133 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: OptMenu.tcl,v 1.3 2001/12/09 05:04:02 idiscovery Exp $ # # OptMenu.tcl -- # # This file implements the TixOptionMenu widget. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixOptionMenu { -classname TixOptionMenu -superclass tixLabelWidget -method { add delete disable enable entrycget entryconfigure entries } -flag { -command -disablecallback -dynamicgeometry -value -variable -validatecmd -state } -forcecall { -variable -state } -configspec { {-command command Command ""} {-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean} {-dynamicgeometry dynamicGeometry DynamicGeometry 0 tixVerifyBoolean} {-state state State normal} {-value value Value ""} {-validatecmd validateCmd ValidateCmd ""} {-variable variable Variable ""} } -default { {.highlightThickness 0} {.takeFocus 0} {.frame.menubutton.relief raised} {.frame.menubutton.borderWidth 2} {.frame.menubutton.anchor w} {.frame.menubutton.highlightThickness 2} {.frame.menubutton.takeFocus 1} } } proc tixOptionMenu:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec set data(nItems) 0 set data(items) "" set data(posted) 0 set data(varInited) 0 set data(maxWidth) 0 } proc tixOptionMenu:ConstructFramedWidget {w frame} { upvar #0 $w data tixChainMethod $w ConstructFramedWidget $frame set data(w:menubutton) [menubutton $frame.menubutton -indicatoron 1] set data(w:menu) [menu $frame.menubutton.menu -tearoff 0] pack $data(w:menubutton) -side left -expand yes -fill both $data(w:menubutton) config -menu $data(w:menu) bind $data(w:menubutton) [bind Menubutton ] bind $data(w:menubutton) [bind Menubutton ] tixSetMegaWidget $data(w:menubutton) $w } proc tixOptionMenu:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings } #---------------------------------------------------------------------- # Private methods #---------------------------------------------------------------------- proc tixOptionMenu:Invoke {w name} { upvar #0 $w data if {"$data(-state)" == "normal"} { tixOptionMenu:SetValue $w $name } } proc tixOptionMenu:SetValue {w value {noUpdate 0}} { upvar #0 $w data if {$data(-validatecmd) != ""} { set value [tixEvalCmdBinding $w $data(-validatecmd) "" $value] } set name $value if {$name == "" || [info exists data(varInited)]} { # variable may contain a bogus value if {![info exists data($name,index)]} { set data(-value) "" tixVariable:UpdateVariable $w $data(w:menubutton) config -text "" return } } if {[info exists data($name,index)]} { $data(w:menubutton) config -text $data($name,label) set data(-value) $value if {! $noUpdate} { tixVariable:UpdateVariable $w } if {$data(-command) != "" && !$data(-disablecallback)} { if {![info exists data(varInited)]} { set bind(specs) "" tixEvalCmdBinding $w $data(-command) bind $value } } } else { error "item \"$value\" does not exist" } } proc tixOptionMenu:SetMaxWidth {w} { upvar #0 $w data foreach name $data(items) { set len [string length $data($name,label)] if {$data(maxWidth) < $len} { set data(maxWidth) $len } } if {$data(maxWidth) > 0} { $data(w:menubutton) config -width $data(maxWidth) } } #---------------------------------------------------------------------- # Configuration #---------------------------------------------------------------------- proc tixOptionMenu:config-state {w value} { upvar #0 $w data if {![info exists data(w:label)]} { return } if {$value == "normal"} { catch { $data(w:label) config -fg \ [$data(w:menubutton) cget -foreground] } $data(w:menubutton) config -state $value } else { catch { $data(w:label) config -fg \ [$data(w:menubutton) cget -disabledforeground] } $data(w:menubutton) config -state $value } } proc tixOptionMenu:config-value {w value} { upvar #0 $w data tixOptionMenu:SetValue $w $value # This will tell the Intrinsics: "Please use this value" # because "value" might be altered by SetValues # return $data(-value) } proc tixOptionMenu:config-variable {w arg} { upvar #0 $w data if {[tixVariable:ConfigVariable $w $arg]} { # The value of data(-value) is changed if tixVariable:ConfigVariable # returns true tixOptionMenu:SetValue $w $data(-value) 1 } catch { unset data(varInited) } set data(-variable) $arg } #---------------------------------------------------------------------- # Public Methdos #---------------------------------------------------------------------- proc tixOptionMenu:add {w type name args} { upvar #0 $w data if {[info exists data($name,index)]} { error "item $name already exists in the option menu $w" } case $type { "command" { set validOptions { -command -label } set opt(-command) "" set opt(-label) $name tixHandleOptions -nounknown opt $validOptions $args if {$opt(-command) != ""} { error "option -command cannot be specified" } # Create a new item inside the menu # eval $data(w:menu) add command $args \ [list -label $opt(-label) \ -command "tixOptionMenu:Invoke $w \{$name\}"] set index $data(nItems) # Store info about this item # set data($index,name) $name set data($name,type) cmd set data($name,label) $opt(-label) set data($name,index) $index if {$index == 0} { $data(w:menubutton) config -text $data($name,label) tixOptionMenu:SetValue $w $name } incr data(nItems) lappend data(items) $name if $data(-dynamicgeometry) { tixOptionMenu:SetMaxWidth $w } } "separator" { $data(w:menu) add separator set index $data(nItems) # Store info about this item # set data($index,name) $name set data($name,type) sep set data($name,label) "" set data($name,index) $index incr data(nItems) lappend data(items) $name } default { error "only types \"separator\" and \"command\" are allowed" } } return "" } proc tixOptionMenu:delete {w item} { upvar #0 $w data if {![info exists data($item,index)]} { error "item $item does not exist in $w" } # Rehash the item list set newItems "" set oldIndex 0 set newIndex 0 foreach name $data(items) { if {$item == $name} { unset data($name,label) unset data($name,index) unset data($name,type) $data(w:menu) delete $oldIndex } else { set data($name,index) $newIndex set data($newIndex,name) $name incr newIndex lappend newItems $name } incr oldIndex } incr oldIndex -1; unset data($oldIndex,name) set data(nItems) $newIndex set data(items) $newItems if {$data(-value) == $item} { set newVal "" foreach item $data(items) { if {$data($item,type) == "cmd"} { set newVal $item } } tixOptionMenu:SetValue $w $newVal } return "" } proc tixOptionMenu:disable {w item} { upvar #0 $w data if {![info exists data($item,index)]} { error "item $item does not exist in $w" } else { catch {$data(w:menu) entryconfig $data($item,index) -state disabled} } } proc tixOptionMenu:enable {w item} { upvar #0 $w data if {![info exists data($item,index)]} { error "item $item does not exist in $w" } else { catch {$data(w:menu) entryconfig $data($item,index) -state normal} } } proc tixOptionMenu:entryconfigure {w item args} { upvar #0 $w data if {![info exists data($item,index)]} { error "item $item does not exist in $w" } else { return [eval $data(w:menu) entryconfig $data($item,index) $args] } } proc tixOptionMenu:entrycget {w item arg} { upvar #0 $w data if {![info exists data($item,index)]} { error "item $item does not exist in $w" } else { return [$data(w:menu) entrycget $data($item,index) $arg] } } proc tixOptionMenu:entries {w} { upvar #0 $w data return $data(items) } proc tixOptionMenu:Destructor {w} { tixVariable:DeleteVariable $w # Chain this to the superclass # tixChainMethod $w Destructor } #---------------------------------------------------------------------- # Obsolete # These have been replaced by new commands in Tk 4.0 # proc tixOptionMenu:Post {w} { upvar #0 $w data set rootx [winfo rootx $data(w:frame)] set rooty [winfo rooty $data(w:frame)] # adjust for the border of the menu and frame # incr rootx [lindex [$data(w:menu) config -border] 4] incr rooty [lindex [$data(w:frame) config -border] 4] incr rooty [lindex [$data(w:menu) config -border] 4] set value $data(-value) set y [$data(w:menu) yposition $data($value,index)] $data(w:menu) post $rootx [expr $rooty - $y] $data(w:menu) activate $data($value,index) grab -global $data(w:menubutton) set data(posted) 1 } Tix8.4.3/library/WInfo.tcl0000644000122200012240000000170507404570302015567 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: WInfo.tcl,v 1.2 2001/12/09 05:04:02 idiscovery Exp $ # # WInfo.tcl -- # # This file implements the command tixWInfo, which return various # information about a Tix widget. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc tixWInfo {option w} { upvar #0 $w data case $option { tix { # Is this a Tix widget? # return [info exists data(className)] } compound { # Is this a compound widget? # Currently this is the same as "tixWinfo tix" because only # Tix compilant compound widgets are supported return [info exists data(className)] } class { if {[info exists data(className)]} { return $data(className) } else { return "" } } } } Tix8.4.3/library/Meter.tcl0000644000122200012240000000605207404570302015621 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Meter.tcl,v 1.3 2001/12/09 05:04:02 idiscovery Exp $ # # Meter.tcl -- # # Implements the tixMeter widget # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixMeter { -classname TixMeter -superclass tixPrimitive -method { } -flag { -foreground -text -value } -configspec { {-fillcolor fillColor FillColor #8080ff} {-foreground foreground Foreground black} {-text text Text ""} {-value value Value 0} } -default { {.relief sunken} {.borderWidth 2} {.width 150} } } proc tixMeter:InitWidgetRec {w} { upvar #0 $w data global env tixChainMethod $w InitWidgetRec } #---------------------------------------------------------------------- # Construct widget #---------------------------------------------------------------------- proc tixMeter:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget set data(w:canvas) [canvas $w.canvas] pack $data(w:canvas) -expand yes -fill both tixMeter:Update $w } proc tixMeter:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings } proc tixMeter:Update {w} { upvar #0 $w data # set the width of the canvas set W [expr $data(-width)-\ ([$data(w:root) cget -bd]+[$data(w:root) cget -highlightthickness]*2)] $data(w:canvas) config -width $W if {$data(-text) == ""} { set text [format "%d%%" [expr int($data(-value)*100)]] } else { set text $data(-text) } # (Create/Modify) the text item. # if {![info exists data(text)]} { set data(text) [$data(w:canvas) create text 0 0 -text $text] } else { $data(w:canvas) itemconfig $data(text) -text $text } set bbox [$data(w:canvas) bbox $data(text)] set itemW [expr [lindex $bbox 2]-[lindex $bbox 0]] set itemH [expr [lindex $bbox 3]-[lindex $bbox 1]] $data(w:canvas) coord $data(text) [expr $W/2] [expr $itemH/2+4] set H [expr $itemH + 4] $data(w:canvas) config -height [expr $H] set rectW [expr int($W*$data(-value))] if {![info exists data(rect)]} { set data(rect) [$data(w:canvas) create rectangle 0 0 $rectW 1000] } else { $data(w:canvas) coord $data(rect) 0 0 $rectW 1000 } $data(w:canvas) itemconfig $data(rect) \ -fill $data(-fillcolor) -outline $data(-fillcolor) $data(w:canvas) raise $data(text) } #---------------------------------------------------------------------- # Configuration #---------------------------------------------------------------------- proc tixMeter:config-value {w value} { upvar #0 $w data set data(-value) $value tixMeter:Update $w } proc tixMeter:config-text {w value} { upvar #0 $w data set data(-text) $value tixMeter:Update $w } proc tixMeter:config-fillcolor {w value} { upvar #0 $w data set data(-fillcolor) $value tixMeter:Update $w } Tix8.4.3/library/ListNBk.tcl0000644000122200012240000000677510031436051016057 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: ListNBk.tcl,v 1.5 2004/03/28 02:44:57 hobbs Exp $ # # ListNBk.tcl -- # # "List NoteBook" widget. Acts similarly to the notebook but uses a # HList widget to represent the pages. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixListNoteBook { -classname TixListNoteBook -superclass tixVStack -method { } -flag { -height -width } -configspec { {-width width Width 0} {-height height Height 0} } -forcecall { -dynamicgeometry -width -height } -default { {*Orientation horizontal} } } proc tixListNoteBook:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget set data(w_pane) [tixPanedWindow $w.pane -panerelief flat] set p1 [$data(w_pane) add p1 -expand 0] set p2 [$data(w_pane) add p2 -expand 1] set data(w_p2) $p2 set data(w:shlist) [tixScrolledHList $p1.shlist] set data(w:hlist) [$data(w:shlist) subwidget hlist] if {[$data(w_pane) cget -orientation] eq "vertical"} { pack $data(w:shlist) -expand yes -fill both -padx 2 -pady 3 } else { pack $data(w:shlist) -expand yes -fill both -padx 3 -pady 2 } $data(w:hlist) config \ -command [list tixListNoteBook:Choose $w] \ -browsecmd [list tixListNoteBook:Choose $w] \ -selectmode single pack $data(w_pane) -expand yes -fill both } proc tixListNoteBook:add {w child args} { upvar #0 $w data if {[string match *.* $child]} { error "the name of the page cannot contain the \".\" character" } return [eval tixChainMethod $w add $child $args] } #---------------------------------------------------------------------- # Virtual Methods #---------------------------------------------------------------------- proc tixListNoteBook:InitGeometryManager {w} { tixWidgetDoWhenIdle tixListNoteBook:InitialRaise $w } proc tixListNoteBook:InitialRaise {w} { upvar #0 $w data if {$data(topchild) eq ""} { set top [lindex $data(windows) 0] } else { set top $data(topchild) } if {$top ne ""} { tixCallMethod $w raise $top } } proc tixListNoteBook:CreateChildFrame {w child} { upvar #0 $w data return [frame $data(w_p2).$child] } proc tixListNoteBook:RaiseChildFrame {w child} { upvar #0 $w data if {$data(topchild) ne $child} { if {$data(topchild) ne ""} { pack forget $data(w:$data(topchild)) } pack $data(w:$child) -expand yes -fill both } } # #---------------------------------------------------------------------- # proc tixListNoteBook:config-dynamicgeometry {w value} { upvar #0 $w data $data(w_pane) config -dynamicgeometry $value } proc tixListNoteBook:config-width {w value} { upvar #0 $w data if {$value != 0} { $data(w_pane) config -width $value } } proc tixListNoteBook:config-height {w value} { upvar #0 $w data if {$value != 0} { $data(w_pane) config -height $value } } proc tixListNoteBook:raise {w child} { upvar #0 $w data $data(w:hlist) selection clear $data(w:hlist) selection set $child $data(w:hlist) anchor set $child tixChainMethod $w raise $child } proc tixListNoteBook:Choose {w args} { upvar #0 $w data set entry [tixEvent flag V] if {[lsearch $data(windows) $entry] != -1} { tixCallMethod $w raise $entry } } Tix8.4.3/library/DirBox.tcl0000644000122200012240000001246110031436051015725 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: DirBox.tcl,v 1.4 2004/03/28 02:44:57 hobbs Exp $ # # DirBox.tcl -- # # Implements the tixDirSelectBox widget. # # - overrides the -browsecmd and -command options of the # HList subwidget # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixDirSelectBox { -classname TixDirSelectBox -superclass tixPrimitive -method { } -flag { -command -disablecallback -value } -configspec { {-command command Command ""} {-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean} {-label label Label "Directory:"} {-value value Value ""} } -forcecall { -value -label } -default { {*combo*listbox.height 5} {*combo.label.anchor w} {*combo.labelSide top} {*combo.history true} {*combo.historyLimit 20} } } proc tixDirSelectBox:InitWidgetRec {w} { upvar #0 $w data tixChainMethod $w InitWidgetRec } proc tixDirSelectBox:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget set data(w:dircbx) [tixFileComboBox $w.dircbx] set data(w:dirlist) [tixDirList $w.dirlist] pack $data(w:dircbx) -side top -fill x -padx 4 -pady 2 pack $data(w:dirlist) -side top -fill both -expand yes -padx 4 -pady 2 if {$data(-value) eq ""} { set data(-value) [pwd] } } proc tixDirSelectBox:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings $data(w:dircbx) config -command [list tixDirSelectBox:Cmd-DirCbx $w] $data(w:dirlist) config -command [list tixDirSelectBox:Cmd-DirList $w]\ -browsecmd [list tixDirSelectBox:Browse-DirList $w] } #---------------------------------------------------------------------- # Incoming event: User #---------------------------------------------------------------------- # User activates the FileComboBox # # proc tixDirSelectBox:Cmd-DirCbx {w args} { upvar #0 $w data set fInfo [tixEvent value] set path [lindex $fInfo 0] if {![file exists $path]} { # 1.1 Check for validity. The pathname cannot contain invalid chars # if {![tixFSIsValid $path]} { tk_messageBox -title "Invalid Directory" \ -type ok -icon error \ -message "\"$path\" is not a valid directory name" $data(w:dircbx) config \ -text [tixFSDisplayName [file normalize $data(-value)]] \ -directory $data(-value) return } # 1.2 Prompt for creation # set choice [tk_messageBox -title "Create Directory?" \ -type yesno -icon question \ -message "Directory \"$path\" does not exist.\ \nDo you want to create it?"] if {$choice eq "yes" && [catch {file mkdir [file dirname $path]} err]} { tk_messageBox -title "Error Creating Directory" \ -icon error -type ok \ -message "Cannot create directory \"$path\":\n$err" set choice "no" } if {$choice eq "no"} { $data(w:dircbx) config \ -text [tixFSDisplayName [file normalize $data(-value)]] \ -directory $data(-value) return } tixDirSelectBox:SetValue $w $path 1 1 } elseif {![file isdirectory $path]} { # 2.1: Can't choose a non-directory file # tk_messageBox -title "Invalid Directory" \ -type ok -icon error \ -message "\"$path\" is not a directory" $data(w:dircbx) config \ -text [tixFSDisplayName [file normalize $data(-value)]] \ -directory $data(-value) return } else { # OK. It is an existing directory # tixDirSelectBox:SetValue $w $path 1 1 } } # User activates the dir list # # proc tixDirSelectBox:Cmd-DirList {w args} { upvar #0 $w data set dir $data(-value) catch {set dir [tixEvent flag V]} set dir [tixFSNormalize $dir] tixDirSelectBox:SetValue $w $dir 0 0 } # User browses the dir list # # proc tixDirSelectBox:Browse-DirList {w args} { upvar #0 $w data set dir $data(-value) catch {set dir [tixEvent flag V]} set dir [tixFSNormalize $dir] tixDirSelectBox:SetValue $w $dir 0 0 } #---------------------------------------------------------------------- # Incoming event: Application #---------------------------------------------------------------------- proc tixDirSelectBox:config-value {w value} { upvar #0 $w data set value [tixFSNormalize $value] tixDirSelectBox:SetValue $w $value 1 1 return $value } proc tixDirSelectBox:config-label {w value} { upvar #0 $w data $data(w:dircbx) subwidget combo config -label $value } #---------------------------------------------------------------------- # # Internal functions # #---------------------------------------------------------------------- # Arguments: # callback:Bool Should we invoke the the -command. # setlist:Bool Should we set the -value of the DirList subwidget. # proc tixDirSelectBox:SetValue {w dir callback setlist} { upvar #0 $w data set data(-value) $dir $data(w:dircbx) config -text [tixFSDisplayName $dir] -directory $dir if {$setlist && [file isdirectory $dir]} { tixSetSilent $data(w:dirlist) $dir } if {$callback} { if {!$data(-disablecallback) && [llength $data(-command)]} { set bind(specs) {%V} set bind(%V) $data(-value) tixEvalCmdBinding $w $data(-command) bind $data(-value) } } } Tix8.4.3/library/fs.tcl0000644000122200012240000000763310031436051015153 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: fs.tcl,v 1.6 2004/03/28 02:44:57 hobbs Exp $ # # File system routines to handle some file system variations # and how that interoperates with the Tix widgets (mainly HList). # # Copyright (c) 2004 ActiveState ## ## Cross-platform ## proc tixFSSep {} { return "/" } proc tixFSNormalize {path} { # possibly use tixFSTilde ? return [file normalize $path] } proc tixFSVolumes {} { return [file volumes] } proc tixFSAncestors {path} { return [file split [file normalize $path]] } # how a filename should be displayed proc tixFSDisplayFileName {path} { if {$path eq [file dirname $path]} { return $path } else { return [file tail $path] } } # dir: Make a listing of this directory # showSubDir: Want to list the subdirectories? # showFile: Want to list the non-directory files in this directory? # showPrevDir: Want to list ".." as well? # showHidden: Want to list the hidden files? # # return value: a list of files and/or subdirectories # proc tixFSListDir {dir showSubDir showFile showPrevDir \ showHidden {pattern ""}} { if {$pattern eq ""} { set pattern [list "*"] } if {$::tcl_platform(platform) eq "unix" && $showHidden && $pattern eq "*"} { lappend pattern ".*" } if {[catch {eval [list glob -nocomplain -directory $dir] \ $pattern} files]} { # The user has entered an invalid or unreadable directory # %% todo: prompt error, go back to last succeed directory return "" } set list "" foreach f [lsort -dictionary $files] { set tail [file tail $f] # file tail handles this automatically #if {[string match ~* $tail]} { set tail ./$tail } if {[file isdirectory $f]} { if {$tail eq "."} { continue } if {$showSubDir} { if {$tail eq ".." && !$showPrevDir} { continue } lappend list $tail } } else { if {$showFile} { lappend list $tail } } } return $list } # in: internal name # out: native name proc tixFSNativeNorm {path} { return [tixFSNative [tixFSNormalize $path]] } # tixFSDisplayName -- # # Returns the name of a normalized path which is usually displayed by # the OS # proc tixFSDisplayName {path} { return [tixFSNative $path] } proc tixFSTilde {path} { # verify that paths with leading ~ are files or real users if {[string match ~* $path]} { # The following will report if the user doesn't exist if {![file isdirectory $path]} { set path ./$path } else { set path [file normalize $path] } } return $path } proc tixFSJoin {dir sub} { return [tixFSNative [file join $dir [tixFSTilde $sub]]] } proc tixFSNative {path} { return $path } if {$::tcl_platform(platform) eq "windows"} { ## ## WINDOWS ## # is an absoulte path only if it starts with a baclskash # or starts with ":" # # in: nativeName # proc tixFSIsAbsPath {nativeName} { set ptype [file pathtype $nativename] return [expr {$ptype eq "absolute" || $ptype eq "volumerelative"}] } # tixFSIsValid -- # # Checks whether a native pathname contains invalid characters. # proc tixFSIsValid {path} { #if {$::tcl_platform(platform) eq "windows"} {set bad "\\/:*?\"<>|\0"} return 1 } proc tixFSExternal {path} { # Avoid normalization on root adding unwanted volumerelative pwd if {[string match -nocase {[A-Z]:} $path]} { return $path/ } return [file normalize $path] } proc tixFSInternal {path} { # Only need to watch for ^[A-Z]:/$, but this does the trick return [string trimright [file normalize $path] /] } } else { ## ## UNIX ## proc tixFSIsAbsPath {path} { return [string match {[~/]*} $path] } # tixFSIsValid -- # # Checks whether a native pathname contains invalid characters. # proc tixFSIsValid {path} { return 1 } proc tixFSExternal {path} { return $path } proc tixFSInternal {path} { return $path } } Tix8.4.3/library/Balloon.tcl0000644000122200012240000003174510761360570016146 0ustar jeffhjeffh00000000000000# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: Balloon.tcl,v 1.7 2008/02/27 22:17:28 hobbs Exp $ # # Balloon.tcl -- # # The help widget. It provides both "balloon" type of help # message and "status bar" type of help message. You can use # this widget to indicate the function of the widgets inside # your application. # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # Copyright (c) 2004 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixBalloon { -classname TixBalloon -superclass tixShell -method { bind post unbind } -flag { -installcolormap -initwait -state -statusbar -cursor } -configspec { {-installcolormap installColormap InstallColormap false} {-initwait initWait InitWait 1000} {-state state State both} {-statusbar statusBar StatusBar ""} {-cursor cursor Cursor {}} } -default { {*background #ffff60} {*foreground black} {*borderWidth 0} {.borderWidth 1} {.background black} {*Label.anchor w} {*Label.justify left} } } # static seem to be -installcolormap -initwait -statusbar -cursor # Class Record # global tixBalloon set tixBalloon(bals) "" proc tixBalloon:InitWidgetRec {w} { upvar #0 $w data global tixBalloon tixChainMethod $w InitWidgetRec set data(isActive) 0 set data(client) "" lappend tixBalloon(bals) $w } proc tixBalloon:ConstructWidget {w} { upvar #0 $w data tixChainMethod $w ConstructWidget if {[tk windowingsystem] eq "aqua"} { ::tk::unsupported::MacWindowStyle style $w help none } else { wm overrideredirect $w 1 } catch {wm attributes $w -topmost 1} wm positionfrom $w program wm withdraw $w # Frame 1 : arrow frame $w.f1 -bd 0 set data(w:label) [label $w.f1.lab -bd 0 -relief flat \ -bitmap [tix getbitmap balarrow]] pack $data(w:label) -side left -padx 1 -pady 1 # Frame 2 : Message frame $w.f2 -bd 0 set data(w:message) [label $w.f2.message -padx 0 -pady 0 -bd 0] pack $data(w:message) -side left -expand yes -fill both -padx 10 -pady 1 # Pack all pack $w.f1 -fill both pack $w.f2 -fill both # This is an event tag used by the clients # bind TixBal$w [list tixBalloon:ClientDestroy $w %W] } proc tixBalloon:Destructor {w} { global tixBalloon set bals "" foreach b $tixBalloon(bals) { if {$w != $b} { lappend bals $b } } set tixBalloon(bals) $bals tixChainMethod $w Destructor } #---------------------------------------------------------------------- # Config: #---------------------------------------------------------------------- proc tixBalloon:config-state {w value} { upvar #0 $w data set re {^(none|balloon|status|both)$} if {![regexp -- $re $value]} { error "invalid value $value, must be none, balloon, status, or both" } } #---------------------------------------------------------------------- # "RAW" event bindings: #---------------------------------------------------------------------- bind all "+tixBalloon_XXMotion %X %Y 1" bind all "+tixBalloon_XXMotion %X %Y 2" bind all "+tixBalloon_XXMotion %X %Y 3" bind all "+tixBalloon_XXMotion %X %Y 4" bind all "+tixBalloon_XXMotion %X %Y 5" bind all "+tixBalloon_XXMotion %X %Y 0" # Should %b be 0? %b is illegal bind all "+tixBalloon_XXMotion %X %Y 0" bind all