From 28a14cd72a430d6acbca5acd47c5eb4e93004b8c Mon Sep 17 00:00:00 2001 From: hunt Date: Tue, 21 Jan 2003 20:42:51 +0000 Subject: [PATCH] Initial revision --- itcl/iwidgets/.cvsignore | 5 + itcl/iwidgets/CHANGES | 1604 +++++++++++++++++++++++++++++ itcl/iwidgets/ChangeLog | 1498 +++++++++++++++++++++++++++ itcl/iwidgets/Makefile.in | 199 ++++ itcl/iwidgets/README | 212 ++++ itcl/iwidgets/aclocal.m4 | 1 + itcl/iwidgets/configure | 1273 +++++++++++++++++++++++ itcl/iwidgets/configure.in | 131 +++ itcl/iwidgets/iwidgets.tcl.in | 31 + itcl/iwidgets/license.terms | 31 + itcl/iwidgets/pkgIndex.tcl.in | 3 + itcl/iwidgets/tcl.m4 | 2270 +++++++++++++++++++++++++++++++++++++++++ 12 files changed, 7258 insertions(+) create mode 100644 itcl/iwidgets/.cvsignore create mode 100644 itcl/iwidgets/CHANGES create mode 100644 itcl/iwidgets/ChangeLog create mode 100644 itcl/iwidgets/Makefile.in create mode 100644 itcl/iwidgets/README create mode 100644 itcl/iwidgets/aclocal.m4 create mode 100755 itcl/iwidgets/configure create mode 100644 itcl/iwidgets/configure.in create mode 100644 itcl/iwidgets/iwidgets.tcl.in create mode 100644 itcl/iwidgets/license.terms create mode 100644 itcl/iwidgets/pkgIndex.tcl.in create mode 100644 itcl/iwidgets/tcl.m4 diff --git a/itcl/iwidgets/.cvsignore b/itcl/iwidgets/.cvsignore new file mode 100644 index 0000000000..58652af0aa --- /dev/null +++ b/itcl/iwidgets/.cvsignore @@ -0,0 +1,5 @@ +Makefile +config.log +confdefs.h +iwidgets.tcl +pkgIndex.tcl diff --git a/itcl/iwidgets/CHANGES b/itcl/iwidgets/CHANGES new file mode 100644 index 0000000000..d012c1f9d7 --- /dev/null +++ b/itcl/iwidgets/CHANGES @@ -0,0 +1,1604 @@ +[incr Widgets] CHANGES +---------------------- + +========================================================================== +CURRENT VERSION: 4.0.1 +PREVIOUS VERSION: 4.0.0 +DATE: 9/16/02 +CONTACT: Chad Smith (itclguy@attbi.com) + + This is primarily a bug-fix release of the [incr Widgets]. Please see +the ChangeLog for a detailed explanation of the changes made to the various +widgets and the SourceForge tickets to which each change is associated. + + Check out the incoming/demos directory. I've added a couple new widgets +that were submitted to SourceForge. Let me know if you think they are +useful or not. If so, they can be added to the distribution in a future +release. + + Many thanks to Marty Backe for his tireless efforts closing out numerous +SF tickets for this release! + +========================================================================== + + + +========================================================================== + -------------------------- iwidgets-4.0.0 ------------------------------ + -------------------- CHANGES FROM iwidgets-3.1.0 ----------------------- +========================================================================== +DATE: 8/07/01 +CONTACT: Chad Smith (itclguy@yahoo.com) + +-------- +CHANGES: +-------- + This release of the [incr Widgets] marks the first time they are +released independently of the [incr Tcl] distribution. The Iwidgets +package is now separate from Itcl and can be optionally downloaded +and built as a true extension to Itcl (well actually Itk). + + Along with the Makefile/configuration-type changes necessary for +removing the Iwidgets from Itcl, there are many other changes you +should note in this release. I'll try to list each of these: + +o - The most important change is that doing a 'package require Iwidgets' + no longer pulls the itcl namespace commands into the global namespace. + Previously, this was done because none of the itcl-specific commands + such as class, configbody, etc. were properly resolved in the [incr + Widgets] classes. Now, all references to itcl commands use proper + namespace resolution. For example, "class iwidgets::Checkbox" is now + replaced with "itcl::class iwidgets::Checkbox". + + Here is a list of itcl commands that are now properly scoped: + class + body + configbody + scope + code + + There are likely many folks in the community that have come to rely + on the exporting of itcl commands into the global namespace, so if you're + one of these folks you have two choices if you want to use this version + of the [incr Widgets]: (1) You can add a "namespace import -force itcl::*" + at the beginning of your application (this is what 'package require + Iwidgets' used to do); or (2) you can add "itcl::" in front of each of the + itcl-specific commands in your code. + +o - A new mega-widget, extbutton, was added to the distribution. Note that + this new widget will only work with Tk 8.4 or later. A man page and + test case is available in the distribution. + +o - "readonly" was added as a new value for the combobox's -state option. + +o - A new option, -gmt, was added to the datefield. It accepts boolean values. + +o - A new option, -state, was added to the radiobox. + +o - A new method, bbox, was added to tabset to return the bounding box that + will completely enclose all tabs. + +o - A new option, -automount, was added to extfileselectionbox and + fileselectionbox. + +o - Error checking was added to hierarchy's -alwaysquery option to enforce + boolean values, and some memory leaks were plugged in the 'clear' method. + +========================================================================== + + + +========================================================================== + -------------------------- iwidgets-3.0.0 ------------------------------ + -------------------- CHANGES FROM iwidgets-2.2.0 ----------------------- +========================================================================== + + [incr Widgets] version 3.0.0 is compatable with itcl3.0 + + [incr Widgets] has undergone a major overhaul between the last version +and 3.0.0. Since so many changes have taken place it made more since to +list them by widget class name rather than the old style of new features +and bug fixes. The majority of the changes are under the covers and will +have minimal impact of existing scripts, but there are a few that may +bite you. To locate possible incompatabilities, just search this file +for the key words "POSSIBLE INCOMPATIBILITY". + + In addition, quite a few new widgets have been added to the set. They +include the following: + + Calendar + Checkbox + Dateentry + Datefield + Disjointlistbox + Extfileselectionbox + Extfileselectiondialog + Finddialog + Hierarchy + Labeledframe + Mainwindow + Messagebox + Scrolledwidget + Timeentry + Timefield + Watch + + Thanx to the following contributors who have been kind enough to help +me support this effort through enhancements, bug fixes, and new widgets. + + John Tucker jatucker@austin.dsccc.com + Mitch Gorman emrys@net-gate.com + John Reekie johnr@EECS.Berkeley.EDU + Alfredo Jahn ajahn@spd.dsccc.com + Michael McLennan mmclennan@lucent.com + + +Labeledwidget +______________________________________________________________________________ + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Changed component option basis to be that of the "usuals". + +>> Removed a redundant frame component named "shell" just below the hull. + +>> Corrected labelvariable bug. Setting the labelvariable had no effect. + The code has been corrected such that a trace is installed on the variable + which forces an update of the label text upon writes to the variable. + +>> Removed the labmargin frame component used for implementing a margin. + This is now accomplished via the grid by maintaining an empty row/column + for the margin and adjusting its minsize. + +>> POSSIBLE INCOMPATIBILITY - The childsite is now a protected component. + If you need access to it, use the childsite command. + +>> Added new label position orientation settings. The current label + positions are nw, n, ne, sw, s, se, en, e, es, wn, w, and ws. + +>> Updated the test script and man page. + + +Scrolledlistbox +______________________________________________________________________________ + +>> Derived from the Scrolledwidget class which provides the vertical + and horizontal scrollbars along with the options to control their + display. + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Changed component option basis to be that of the "usuals". + +>> Added a -state option that allows you to disable the listbox. Selection + is blocked. The foreground of the scrolledlistbox label is changed + to disbabledforeground. + +>> Fixed the infinite looping problem which would occur with -hscrollmode + set to dynamic and a really long line added just out of the view port. + As you'd scroll down the horizontal scrollbar bar would start flashing + on and off. + +>> Removed the margin frame components used for implementing a margin + between the listbox and scrollbars. This is now accomplished via + the grid by maintaining an empty row/column for the margin and + adjusting its minsize. + +>> POSSIBLE INCOMPATIBILITY - Removed -items option. This was originally + put in as a convienence, but it turns out to be quite costly in terms + of performance. It had to go. The insert/delete/get commands can be + used instead which is much more in line with Tk. + +>> Updated the test script, demo, and man page. + + +Entryfield +______________________________________________________________________________ + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Modified the real type validation to except exponents. Patch provided + by evans@engineous.com (Rick Evans). + +>> The -state option changes the label to disabledforeground when the + entryfield is disabled. + +>> Changed component option basis to be that of the "usuals". + +>> Added a -pasting configuration option to allow user to enable/disable + pasting into the entry component of the entryfield. csmith@adc.com + (Chad Smith) + +>> Removed hardcoded state comparisons in the _keyPress method and replaced + with code to mask out and keypress events. csmith@adc.com + (Chad Smith) + + +Pushbutton +______________________________________________________________________________ + +>> Changed component option basis to be that of the "usuals". + +>> POSSIBLE INCOMPATABILITY - The pushButton component has been changed + to pushbutton. + +>> POSSIBLE INCOMPATABILITY - The following options have been removed + and are not directly available in the pushbutton anymore: + -anchor -justify -textvariable + + The underlying button component still maintains them , but not the + pushbutton itself. You can still set them via the component + command, i.e. ".pb component pushButton configure -justify left" + + +Buttonbox +______________________________________________________________________________ + +>> Changed component option basis to be that of the "usuals". + + +Shell +______________________________________________________________________________ + +>> Changed component option basis to be that of the "usuals". + +>> Added a -width and -height option. A value of zero causes the width + and/or height to be adjusted to the required value based on the size + requests of the components placed in the childsite. Otherwise, the + width and/or height is fixed. The default is zero. + +>> Added -width and -height tests to the test script and updated the + man page. + +>> The activate method no longer returns an error if it is called when + the shell is already active. Instead, the shell is just raised. + + +Dialogshell +______________________________________________________________________________ + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Changed component option basis to be that of the "usuals". + +>> Updated the test script and man page, adding the -width and -height + options that are inherited from the shell. + + +Dialog +______________________________________________________________________________ + +>> Updated the test script and man page, adding the -width and -height + options that are inherited from the shell. + + +Selectionbox +______________________________________________________________________________ + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Changed component option basis to be that of the "usuals". + +>> Modified the insert and delete methods to use the items insert and + delete method rather than configuring the -items option which has + been removed from the underlying scrolledlistbox. + +>> Removed the margin frame component used for implementing a margin + between the items and selection. This is now accomplished via + the grid by maintaining an empty row for the margin and adjusting + its minsize. + +>> Removed the unecessary frame that was used to contrain the width + and height of the widget. This is now performed directly on the + widget hull. + +>> POSSIBLE INCOMPATABILITY - The following options have been removed + and are not directly available in the selectionbox anymore: + -hscrollmode -itemslabelpos -labelmargin -margin -relief + -sbwidth -scrollmargin -selectionlabelpos -vscrollmode + + The underlying components still maintain them, but not the + selectionbox itself. You can still set them via the component + command, i.e. ".sb component selection configure -labelpos nw" or + ".sb component items configure -hscrollmode static" + +>> Added a -width and -height option. A value of zero causes the width + and/or height to be adjusted to the required value based on the size + requests of the components placed in the childsite. Otherwise, the + width and/or height is fixed. The default is zero. + +>> Updated the test script, demo, and man page. + + +Selectiondialog +______________________________________________________________________________ + +>> Pack propagation is now handled by the shell class. + +>> Modified the insert and delete methods to use the insert and + delete method rather than configuring the -items option which has + been removed from the underlying scrolledlistbox. + +>> Changed component option basis to be that of the "usuals". + +>> POSSIBLE INCOMPATABILITY - The "sb" component has been renamed to be + "selectionbox". This is much more descriptive. + +>> POSSIBLE INCOMPATABILITY - The following options have been removed + and are not directly available in the selectiondialog anymore: + -hscrollmode -itemslabelpos -labelmargin -margin -relief + -sbwidth -scrollmargin -selectionlabelpos -vscrollmode + + The underlying components still maintain them, but not the + selectiondialog itself. You can still set them via the component + command, i.e. ".sd component selectionbox configure -margin 10" or + ".sd component selectionbox component items configure -hscrollmode static" + +>> The -width and -height options are now controlled by the shell class. + A value of zero causes the width and/or height to be adjusted to the + required value based on the size requests of the components. Otherwise, + the width and/or height is fixed. The default is zero. + + +Scrolledtext +______________________________________________________________________________ + +>> Derived from the Scrolledwidget class which provides the vertical + and horizontal scrollbars along with the options to control their + display. + +>> Reimplemented geometry management using the grid instead of the packer, + eliminating quite a few unneeded frames along the way. + +>> Changed component option basis to be that of the "usuals". + +>> Removed the margin frame components used for implementing a margin + between the text and scrollbars. This is now accomplished via + the grid by maintaining an empty row/column for the margin and + adjusting its minsize. + +>> The -state option changes the label to disabledforeground when the + scrolledtext is disabled. + +>> Fixed the infinite looping problem which would occur with -wrap set + to none, -hscrollmode set to dynamic and a really long line added + just out of the view port. As you'd scroll down the horizontal + scrollbar bar would start flashing on and off. + +>> Added an index argument to the import method so a file can be + imported into the text area at positions other than just the end. + +>> Updated the test script and man page. + + +Feedback +______________________________________________________________________________ + +>> Corrected namspace problem by removing global scope qualifier from + class definition as well as method and option bodies. Bug report + and patch provided by evans@engineous.com (Rick Evans). + + +Hyperhelp +______________________________________________________________________________ + +>> Corrected namspace problem by removing global scope qualifier from + class definition as well as method and option bodies. Bug report + provided by evans@engineous.com (Rick Evans). + + +Scrolledhtml +______________________________________________________________________________ + +>> Corrected namspace problem by removing global scope qualifier from + class definition as well as method and option bodies. Bug report + provided by evans@engineous.com (Rick Evans). + + +Canvasprintbox +______________________________________________________________________________ + +>> Added tcl_platform to list of global variables declared in print + method. Bug report provided by evans@engineous.com (Rick Evans). + + +Scrolledcanvas +______________________________________________________________________________ + +>> Derived from the Scrolledwidget class which provides the vertical + and horizontal scrollbars along with the options to control their + display. + +>> POSSIBLE INCOMPATIBILITY - The ScrCanvas component has been renamed + canvas. + +>> The -state option changes the label to disabledforeground when the + scrolledcanvas is disabled. + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Changed component option basis to be that of the "usuals". + +>> Removed the margin frame components used for implementing a margin + between the canvas and scrollbars. This is now accomplished via + the grid by maintaining an empty row/column for the margin and + adjusting its minsize. + +>> Updated the test script, demo, and man page. + + +Scrolledframe +______________________________________________________________________________ + +>> Derived from the Scrolledwidget class which provides the vertical + and horizontal scrollbars along with the options to control their + display. + +>> POSSIBLE INCOMPATIBILITY - The childsite is now a protected component. + If you need access to it, use the childsite command. + +>> POSSIBLE INCOMPATIBILITY - The scrCanvas component has been renamed + canvas and the scrFrame component to sfchildsite. + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Changed component option basis to be that of the "usuals". + +>> Fixed the infinite looping problem which would occur with -hscrollmode + set to dynamic and a really long component added just out of the view + port. As you'd scroll down the horizontal scrollbar bar would start + flashing on and off. + +>> Removed the margin frame components used for implementing a margin + between the canvas and scrollbars. This is now accomplished via + the grid by maintaining an empty row/column for the margin and + adjusting its minsize. + +>> Updated the test script, demo, and man page. + + +Promptdialog +______________________________________________________________________________ + +>> Changed component option basis to be that of the "usuals". + +>> POSSIBLE INCOMPATABILITY - Renamed the "ef" component to "prompt". + +>> POSSIBLE INCOMPATABILITY - The following options have been removed + and are not directly available in the promptdialog anymore: + -fixed -justify -labelbitmap -labelimage -labelmargin + -state -textvariable -width + + The underlying components still maintain them, but not the + promptdialog itself. You can still set them via the component + command, i.e. ".pd component prompt configure -labelpos w" + +>> Updated the test script, demo, and man page. + + +Messagedialog +______________________________________________________________________________ + +>> Changed component option basis to be that of the "usuals". + +>> POSSIBLE INCOMPATABILITY - Renamed the "msg" component to "message". + +>> POSSIBLE INCOMPATABILITY - The following options have been removed + and are not directly available in the messagedialog anymore: + -anchor -justify -wraplength + + The underlying components still maintain them, but not the + messagedialog itself. You can still set them via the component + command, i.e. ".md component message configure -justify left" + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Updated the test script, demo, and man page. + + +Hierarchy +______________________________________________________________________________ + +>> New iwidgets hierarchical data viewer mega-widget which manages a list + of nodes that can be expanded or collapsed. Individual nodes can be + highlighted. Clicking with the right mouse button on any item brings + up a special item menu. Clicking on the background area brings up + a different popup menu. + +>> Many thanks to Michael McLennan who provided the nucleus of this code. + +>> Man page, test script, and demo have been produced. + +>> The catalog demo has been updated to include the hierarchy demo. + + +Checkbox +______________________________________________________________________________ + +>> New iwidget checkbox mega-widget which manages a group of check + buttons quite similar to that of the existing radiobox. + +>> Thanks to John Tucker for the contributed code. + +>> Man page, test script, and demo have been produced. + +>> The catalog demo has been updated to include the checkbox demo. + + +Radiobox +______________________________________________________________________________ + +>> Changed component option basis to be that of the "usuals". + +>> Changed the base class to be labeledframe. + +>> Updated the test script, demo, and man page. + + +Spinner +______________________________________________________________________________ + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Removed a redundant frame component named "arrowFrame". + +>> Removed the use of the option database to set the option values. + + +Spinint +______________________________________________________________________________ + +>> Removed the use of the option database to set the option values. + + +Datefield +______________________________________________________________________________ + +>> New iwidget. The datefield is a smart date entry field with adjustable + built-in intelligence levels. It can be made smart enough not to accept + any bad dates or made dumb enough to accept any old thing typed. Since + it is derived from the labeledwidget, it also includes an optional label. + +>> Man page, test script, and demo have been produced. + +>> The catalog demo has been updated to include the datefield demo. + + +Calendar +______________________________________________________________________________ + +>> New iwidget. The calendar widget provide for the selection and/or + display of dates. It displays a single month at a time. Buttons exist + on the top to change the month in effect turning th pages of a calendar. + As a page is turned, the dates for the month are modified. Selection + of a date visually marks that date. The selected value can be monitored + via the -command option or just retrieved using the get method. Methods + also exist to select a date and show a particular month. + + The option set allows the calendars appearance to take on many forms. + For example, the background of the weekdays and weekends can be + independently changed, the starting day of the week can be set to + any of the days, the titles and fonts of everything is configurable, + and an outline can be displayed around the each day. + +>> Many thanks to Michael McLennan who provided me a early copy of his + book which gave me the example on which this code is based. + +>> Man page, test script, and demo have been produced. + +>> The catalog demo has been updated to include the calendar demo. + + +Dateentry +______________________________________________________________________________ + +>> New iwidget. Dateentry is a quicken style date entry field with a + popup calendar produced by combining the datefield and calendar widgets + together. This allows a user to enter the date via the keyboard or by + using the mouse by selecting the calendar icon which brings up a popup + calendar. Since it is based on both the datefield and calendar, both + option sets exists under the same roof in the dateentry. + +>> Man page, test script, and demo have been produced. + +>> The catalog demo has been updated to include the dateentry demo. + + +Messagebox +______________________________________________________________________________ + +>> New iwidget. Implements an information messages area widget with + scrollbars. Message types can be user defined and configured. Their + options include foreground, background, font, bell, and their display + mode of on or off. This allows message types to defined as needed, + removed when no longer so, and modified when necessary. + + The number of lines that can be displayed may be limited. When this + limit is reached, the oldest line is removed. There is also support + for saving the contents to a file, using the standard file selection + dialog. + +>> Many thanks to Alfredo Jahn who came up with idea and provided me a + very stable working version which I extended to support user defined + message types. + +>> Man page, test script, and demo have been produced. + +>> The catalog demo has been updated to include the messagebox demo. + + +Spintime +______________________________________________________________________________ + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Removed the margin frame component used for implementing a margin + between the hour, minute and second components. This is now accomplished + via the grid by maintaining an empty row for the margin and adjusting + its minsize. + +>> POSSIBLE INCOMPATIBILITY - The delete, clear, and insert methods have + been removed. Use the show method to set the time. + +>> POSSIBLE INCOMPATIBILITY - The get method has been changed such that + it returns the time as either a colon separated string or a clock clicks + value. + +>> Added a show method to be used to set the time. The method takes as + an argument either a valid time string, a clock clicks value, or the + keyword now. + +>> The current time will now appear as the default. + +>> Updated the test script, demo, and man page. + + +Spindate +______________________________________________________________________________ + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Removed the margin frame component used for implementing a margin + between the month, day and year components. This is now accomplished + via the grid by maintaining an empty row for the margin and adjusting + its minsize. + +>> Spindate now uses the clock command during the spinning of the date + components. Only valid dates are spun now. + +>> POSSIBLE INCOMPATIBILITY - Changed the -monthformat option to be + string, brief, and full doing away with the optional user specified list. + +>> POSSIBLE INCOMPATIBILITY - The delete, clear, and insert methods have + been removed. Use the show method to set the date. + +>> POSSIBLE INCOMPATIBILITY - The get method has been changed such that + it returns the date as either a string or a clock clicks value. + +>> Added a show method to be used to set the time. The method takes as + an argument either a valid time string, a clock clicks value, or the + keyword now. + +>> The current date will now appear as the default. + +>> Selection and keyboard entry of values has been disabled. The value + may only be changed via the spinners which insures correct operation. + +>> Updated the test script, demo, and man page.. + + +Feedback +______________________________________________________________________________ + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Made all the itk_components public. + +>> Added a trough which appears beneath the feedback widget. It has a + -troughcolor option to set its color. + + +Scrolledhtml +______________________________________________________________________________ + +>> Added -alink (same as -linkhighlight, but matches html naming) and -update + options. + +>> Added new tags to come up to html3.2: + basefont + div + font + table + td + th + tr + +>> Added numbering formats for
  • tag. + +>> Fixed to delete images after page is cleared. + +>> Fixed to bring anchor points to middle when moving down to a nearby + anchor point. + +>> Fixes to regular expression matches. + +>> Performance enhancements with stack algorithm and regular expression + searches. + + +Hyperhelp +______________________________________________________________________________ + +>> Added -closecmd and -maxhistory options. + +>> Made itk_components public/private (which could conceivably break + someone, if they were using a component directly that is now private) + +>> Fixed bindings. + + +Toolbar +______________________________________________________________________________ + +>> Added a destructor to cancel the possibly pending after command request + to display the popup help. + +>> Corrected the vertical packing such that items are expanded horizontally. + + +Finddialog +______________________________________________________________________________ + +>> New iwidget. Finddialog works in conjunction with a text or + scrolledtext widget to provide a means of performing search operations. + The user is prompted for a text pattern to be found in the text or + scrolledtext widget. The search can be for all occurances, by regular + expression, considerate of the case, or backwards. + +>> Man page, test script, and demo have been produced. + +>> The catalog demo has been updated to include the finddialog demo. + + +Panedwindow +______________________________________________________________________________ + +>> Corrected show/hide bug which caused the placement of the sash and + separator to be incorrect. If you added a couple of panes and then + hid them all of them followed by showing them, the sash distribution + was wrong. + +>> Corrected a divide by zero problem which occurred when you hid all + of the panes. + + +Combobox +______________________________________________________________________________ + +>> Mitch Gorman (emrys@net-gate.com) has taken over maintenance of the + combobox from John Sigler. + +>> Entry completion has been added. Should your typing in the entry + field match an item in the list, it is completed for you automatically. + This feature is switchable via the -completion option. The default + is on. + +>> It now utilizes a true button for the arrowBtn component. + +>> The -state option has been fixed such that it can be truly disabled. + +>> Reimplemented geometry management using the grid instead of the packer. + +>> A -grab option has been added to do both local and global grabs + of the drop-down listbox. + +>> POSSIBLE INCOMPATIBILITY - Removed -items option. This was originally + put in as a convienence, but it turns out to be quite costly in terms + of performance. It had to go. The insert/delete/get commands can be + used instead which is much more in line with Tk. + +>> POSSIBLE INCOMPATIBILITY - The following options have been removed: + -autoclear and -fliparrow. + +>> The combobox now utilizes built-in bitmaps for button glyphs. + +>> Removed the margin frame component used for implementing a margin + between the entry and arrow button. This is now accomplished via + the grid by maintaining an empty column for the margin and adjusting + its minsize. + +>> List elements are preserved when switching between drop-down and simple + styles via the -dropdown option. + +>> The functionality of the -state and -editable options have been made + completely independent of each other. It can be editable/normal, + non-editable/normal, or disabled, and toggling one option will not + impact the other option when the first is toggled back + +>> Corrected the validation processing in the -unique option. + +>> Fixed various error messages returned due to bad arguments, options, etc. + + +Fileselectionbox +______________________________________________________________________________ + +>> Reimplemented geometry management using the grid instead of the packer. + +>> Changed component option basis to be that of the "usuals". + +>> Removed frame components used for margins. This is now accomplished + via the grid by maintaining an empty row/column for the margin and + setting its minsize. + +>> Changed the default value of -nomatchstring to "". + +>> The directory and files lists are now shown without the leading + directory name. Although this differs from the Motif standard, it + keeps the fileselectionbox more in line with the tk_getSaveFile dialog. + +>> POSSIBLE INCOMPATIBILITY - The -style option which allowed you to + display the fileselectionbox in a "notif" style using comboboxes + for the filter and selection and kept the lists in a panedwindow + has been removed. A related option, -dirsfraction is also gone. + + This feature caused the fileselectionbox to be much slower during + construction than anticipated. If you liked the "notif" style, it + exists in a new mega-widget call extfileselectionbox and + extfileselectiondialog. + +>> POSSIBLE INCOMPATIBILITY - The childsite is now a protected component. + If you need access to it, use the childsite command. + +>> POSSIBLE INCOMPATABILITY - The following options have been removed + and are not directly available in the fileselectionbox anymore: + + -relief -repeatdelay -repeatinterval -labelmargin + -hscrollmode -sbwidth -scrollmargin -vscrollmode + -dirslabelpos -fileslabelpos -filterlabelpos + -selectionimage- selectionlabelpos -filterfocuscommand + -selectionfocuscommand -dbldirscommand -dblfilescommand + + The underlying components still maintain them , but not the + fileselectionbox itself. You can still set them via the component + command, i.e. ".fsb component dirs configure -hscrollmode none" + +>> POSSIBLE INCOMPATIBILITY - The -horizmargin and -vertmargin options + have been removed. I doubt if anybody other than the most picky + of people will be effected. + +>> Added new childsite position orientation settings. The new + positions are n, s, e, w, top, bottom, and center. + +>> Updated the test script and man page. + + +Extfileselectionbox +______________________________________________________________________________ + +>> New Iwidget. The extfileselectionbox is basically the "notif" portion + of the previous version of the fileselectionbox. It was separated from + the fileselectionbox for performance reasons. + +>> Created test script, demo and man page. + +>> The catalog demo has been updated to include the extfileselectionbox demo. + + +Tabset +______________________________________________________________________________ +>> Corrected tab display problem which was occurring on HP machines. + + Some additional updates were installed in tab selection and deselection. + They will only be invoke should the os be HP-UX. Also, the ability + to scroll the tabs via MB2 has been disabled for HPs. Thanks to + tilt@designacc.com (Thomas Tempero) for first reporting the problem + mikesz@pcs.mot.com (Michael Szilagyi) for sending me the fix which + was implemented. + + +Timefield +______________________________________________________________________________ + +>> New iwidget. The timefield is a smart time entry field. It verifies + user time input prior to its display. Since it is derived from the + labeledwidget, it also includes an optional label. + +>> Man page, test script, and demo have been produced. + +>> The catalog demo has been updated to include the timefield demo. + + +Watch +______________________________________________________________________________ + +>> New iwidget. The watch widget displays a simple clock face. Methods + exist to set/get the time. The hands can be adjusted via mouse selection + with the new setting being retrievable via the get method. It is + very configurable. The colors of the hands, face, and marks can all + be changed to suit your needs. + +>> Many thanks to John Tucker who developed this nice widget. + +>> Man page, test script, and demo have been produced. + +>> The catalog demo has been updated to include the watch demo. + + +Timeentry +______________________________________________________________________________ + +>> New iwidget. Timeentry, like the dateentry, is along the quicken + lines as well. It displays a timefield with a watch icon button + beside it. Selection of button presents a popup watch which enables + you to select the time by dragging the hands about the face. The + popup has a close button that removes the popup and sets the timefield + to the value previously displayed in the watch. You can also just + enter the time directly as you would in the standard timefield. + +>> Man page, test script, and demo have been produced. + +>> The catalog demo has been updated to include the timeentry demo. + + +========================================================================== + -------------------------- iwidgets-2.1.1 ------------------------------ + -------------------- CHANGES FROM iwidgets-2.1.0 ----------------------- +========================================================================== + + [incr Widgets] version 2.1.1 is compatable with itcl2.1 + +NEW FEATURES +------------------------------------------------------------------------------ +>> Added pagecget method to notebook class. + + Patch supplied by Tom Tromey (tromey@cygnus.com). + +>> Added buttoncget method to buttonbox class. + + Patch supplied by Tom Tromey (tromey@cygnus.com). + +>> Added buttoncget method to dialogshell class. + + Patch supplied by Tom Tromey (tromey@cygnus.com). + +>> Added -closecmd option to the hyperhelp mega-widget. + + Previously, closing the hyperhelp widget deleted the object which was + deemed to be user hostile. Now, there exists a -closecmd option + which defaults to just deactivating the widget. Should you wish to + destroy the widget, either do so explictly or modify the -closecmd + to do it. + + +BUG FIXES +------------------------------------------------------------------------------ +>> Corrected selectborderwidth option class name in the toolbar + + The class name was set to SelectBorderWidth rather than BorderWidth. + This created problems when attempting to use the toolbar with + other widgets like the scrolledcanvas. Bug report by csmith@adc.com + (Chad Smith). + +>> Allow negative indexes in scrolledlistbox + + Negative indicies are reasonable and valid. Bug report by + wfarel@cas.org (Bill Farel). + +>> Corrected problem with caps-lock and num-lock in entryfields + + Validation was not being being done if the num-lock or caps-lock + keys are down. Bug report by ronnie@r2d2.wink.com (Ronnie Carpio). + +>> Corrected problem with special character entry in entryfields + + Upon entry of a special character in the entry field like \ or [ + an error would be reported: "Error: missing "". The substitutions + being performed in iwidgets::Entryfield::_keyPress have been corrected. + Bug report and patch provided by ronnie@r2d2.wink.com (Ronnie Carpio). + +>> Made the relayout method in pushbutton protected. + + The relayout method in the pushbutton needed to be changed from private + to protected so parent classes can have access. Bug discovered by + Mario Weilguni + +>> Corrected html tag parsing in scrolledhtml mega-widget + + Fixed regular expressions parsing html tags to ignore text in quotes + and only examine first attribute in list. + +>> Corrected optionmenu insert bug + + The option menu would not allow you to insert an entry beyond the + current length of the popup menu. It should just default to using + the end in this case. + +>> Corrected scrolledtext import method newline insertion problem + + There was a bug in the scrolledtext widget. It always inserted a + newline before the text of the file when doing an "import". And it + didn't correctly preserve a trailing newline on the file. Reported + by Tom Tromey (tromey@cygnus.com) + +>> Corrected minor problems in notebook class. + + The index method gave an error if (eg) "select" wass passed but + there is no selection. Instead it should return -1 as documented. + Changed it to always return -1 in case of error. This makes more + sense. + + If there are no items in the notebook, the -scrollcommand should + still be run (if it is set). Otherwise, you end up with a + scrollbar that looks odd, and when you try to scroll you get + errors. Changed it so that it will tell the scrollbar that + the entire notebook is being displayed. Reported by Tom Tromey + (tromey@cygnus.com) + +>> Corrected menubar menucget command to return errors for bad options. + + The command " menucget .element" returned something other + than an error message. This has been corrected. Reported by Tom + Tromey (tromey@cygnus.com) + +>> Corrected menubar man page. + + The usage for the menubar menucget command was wrong and has been + fixed. Reported by Tom Tromey (tromey@cygnus.com) + + +INCOMPATIBLE CHANGES +------------------------------------------------------------------------------ + + +========================================================================== + -------------------------- iwidgets-2.1.0 ------------------------------ + -------------------- CHANGES FROM iwidgets-2.0.1 ----------------------- +========================================================================== + + [incr Widgets] version 2.1.0 is compatable with itcl2.1 + +NEW FEATURES +------------------------------------------------------------------------------ +>> Eliminated unneeded update idletask calls. + + Went through many of the [incr Widgets] and got rid of those update + idletask calls that were not really needed. This should speed a few + of them up a bit. + +>> The hyperhelp mega-widget has been enhanced such that topic items + don't need to be in the help directory. + + It's just an added option in specifying topics. To use it, you would + replace '-topics {topic1 topic2 topic3}' with + '-topics {topic1 {topicname2 filename2} {topic3 filename3}}'. In other + words, you only have to change where you want to specify a pathname. If + you don't specify a filename, everything works the same. + +>> Added a -autoclear option to the combobox. + + The combobox was doing an automatic erasure of the entry field contents + upon hitting return. With this option, you can turn that off but it + still puts the string in the list. + +>> Added a -master option to the shell class. + + The shell made all instances transient with "." as the master. With + this option, you can change the master to other toplevels. The default + is no master for shells, and "." for all dialogs which are derived from + shell. + +>> Added a -style option to the fileselectionbox and fileselection dialog. + + Tony Parent did a great job of augmenting the fileselectionbox with + a style option that allows you to change the layout from the standard + motif look-and-feel to a better than motif layout. This new layout + is called notif and features comboboxes for the filter and selection + entry fields and a paned window contains the two listboxes allowing + you to change the allocation of space for the lists. + +>> Removed the center childsite position for the fileselectionbox. + + This is a side effect of the notif change made by Tony Parent. It + just isn't easy to have a center position when your in a pane window. + It is a small sacrifice for the having an alternate layout of the + fileselectionbox. + + +BUG FIXES +------------------------------------------------------------------------------ +>> The makefile was amended to install the unknown.gif file correctly. + + The hyperhelp and scrolledhtml widgets need an unknown gif file that + is used when unable to load an image. The makefile was not properly + installing it. + +>> The scrolledhtml.n man page was fixed to allow man2html to work. + + The scrolledhtml.n file had a bug which would hang man2html during a + "make install-html". The bug affected only the htmling of the file + not the man page itself. + + +INCOMPATIBLE CHANGES +------------------------------------------------------------------------------ + + +========================================================================== + -------------------------- iwidgets-2.0.1 ------------------------------ + -------------------- CHANGES FROM iwidgets-2.0.0 ----------------------- +========================================================================== + + [incr Widgets] version 2.0.1 is compatable with itcl2.0 + +NEW FEATURES +------------------------------------------------------------------------------ +>> Added extra frame around canvas widget in Scrolledcanvas class + + The borderwidth, relief, and hightlight options have been removed from + the canvas widget and placed on the new encompassing frame widget. This + fixes the problem with canvas widgets including the border and highlight + ring in the clipping region. + +>> Added extra frame around text widget in Scrolledtext class + + The borderwidth, relief, and hightlight options have been removed from + the text widget and placed on the new encompassing frame widget. This + fixes the problem with text widgets including the border and highlight + ring in the clipping region. + +>> The canvasprintbox stamp supports resizing and default print buttons + + Tako Schotanus updated the canvasprintbox such that the stamp now gets + updated whenever the window is resized. Also, he modified the dialog + default buttons to be Print, Apply and Cancel. Apply does a refresh and + Print does what you'd expect. + +>> Added feedback mega-widget to [incr Widgets] + + The feedback widget is a gage for displaying process status. Display + is given as a percentage and as a thermometer type bar. Options exist + for adding a label and controlling its position. + + Special thanks go to Sam Shen(SLShen@lbl.gov), as this code is based on his + feedback.tcl code from tk inspect. The original code is copyright 1995 + Lawrence Berkeley Laboratory. + +>> Added scrolledhtml mega-widget to [incr Widgets] + + The scrolledhtml widget implements a scrollable html text widget through + inheritance from scrolledtext. Import reads from an html file, while + export still writes plain text. Also provides a render command, to + display html text passed in as an argument. + + Special thanks go to Sam Shen(SLShen@lbl.gov), as this code is based on his + tkhtml.tcl code from tk inspect. The original code is copyright 1995 + Lawrence Berkeley Laboratory. + +>> Added hyperhelp mega-widget to [incr Widgets] + + The hyperhelp widget implements a help facility using html formatted + hypertext files. + + Special thanks go to Sam Shen(SLShen@lbl.gov), as this code is based on his + help.tcl code from tk inspect. + +>> Added menubar mega-widget to [incr Widgets] + + Actually it was kind-of already an iwidget. It was living in the incoming + directory for a time. No one had a complaints about it so now it is + a full citizen. + + +BUG FIXES +------------------------------------------------------------------------------ +>> Corrected spurious quote in toolbar.itk + + Thanks to Tom Tromey for finding this elusive little buglet and sending + the patch. Wish all problems were reported in this manner. + +>> Corrected problem with dialogs being unable to acquire a grab. + + The dialogshell activate method would generate an error if unable to + acquire a grab for application and global modal dialogs. The fix + installed adds a catch and a reattempt loop with a delay. In other + words, the dialog shell will continuously attempt to acquire the grab + with a delay between attempts. + +>> Corrected problem with pushbutton not displaying the tab traversal ring. + + The pushbutton would not display the tab traversal ring when the default + ring was enabled. This has been corrected. + +>> Corrected scrolledlistbox getcurselection method with multiple selectmode. + + If the current scrolledlistbox selectmode is multiple, then the + getcurselection method should always return the selected items as + a list, regardless of the number of items selected. It used to + return a list only if more than one item is selected. + +>> Buttonbox wasn't adjusting geometrically following hides if not mapped. + + Bernard Johnson from TI was good enough to find this one. It could + be seen by creating a dialog, activating, deactivating, then hiding + a button. Next, activate it again and you'd notice that the dialog's + buttonbox had not been resized. The problem was that the resizing + of the buttonbox was bound to the map event, which once mapped, was + removed when it shouldn't have been. + +>> Buttonbox wasn't adjusting properly following button additions which + were preceeded by deletions. + + Greg McFarlane found this one. The buttonbox needed to do perform + and update idletasks following the sizing of the box during a deletion. + Otherwise, the values returned by winfo were incorrect during a + subsequent button addition. + +>> Removed underlining of listbox items in the combobox. + + Milind Khandekar requested that this feature be removed. It was + annoying. + + +INCOMPATIBLE CHANGES +------------------------------------------------------------------------------ + + +========================================================================== + -------------------------- iwidgets-2.0.0 ------------------------------ + -------------------- CHANGES FROM iwidgets-2.0b4 ----------------------- +========================================================================== + + [incr Widgets] version 2.0.0 is compatable with itcl2.0 + +NEW FEATURES +------------------------------------------------------------------------------ +>> The copyright has been assigned to DSC Communications Corporation. + + The copyright has been transferred from private individuals to DSC. + It is still an open copyright, just changes in the legalize wording. + +>> Added several new mega-widgets. + + The new mega-widgets include the toolbar, tabnotebook, tabset, and + notebook. Check the man pages for details. + +>> Added demo catalog. + + The demos directory now contains a catalog program. It displays the + code for each demo upon single select. Double-click starts the demo. + +>> Added incoming directory for experimental mega-widgets. + + An incoming directory exists in the distribution which contains beta + state mega-widgets. They are not installed, but do include the needed + doc, demos, and tests. These mega-widgets may or may not make the cut. + Please send feedback on their viability. If enough positive response + is felt, then they will be moved up. Otherwise, I'll move them to an + outgoing directory and later delete them altogether. + +>> With the introduction of the new itcl-2.0b3 code command, the following + changes were required. + + All "bind" and "after" commands now use "code". + + All "-command" options and scrollbar commands now use "code". + + Removed "uplevel /scope" combinations from command type options. + + Replaced "eval" with "uplevel #0" for evaluation of command options. + +>> Added curselection method to selectionbox and selectiondialog class. + + The curselection command from the contained listbox of the selectionbox + has been thinwrapped. + +>> Removed BLT dependency for implementing application modal dialogs. + + The dialogshell class no longer uses blt_busy for application modal + dialogs. Instead, local grabs are performed. The benefits are speed + and extension independence. Minus is the loss of the watch cursor + which blt_busy used. I figure, programmers wanting the cursor action + can implement it themselves on an as needed basis. + +>> Added a grab stack in the dialogshell. + + The dialogshell uses a grabstack to keep track of the current blocking + levels. Thus a application modal dialog can activate another one and + upon closing the last one, the next one in the stack gets the block. + This feature did not exist before. + +>> Replace "after 1" commands with "after idle" + + This produces the same result, but makes for a cleaner syntax. + +>> Added center command to the dialogshell. + + The dialogshell provides a center command which takes an optional argument + of the path for another widget. Upon activation, the dialogshell will + be centered with respect to it. The command may also be invoked with + no arguments to center the dialogshell on the screen as a whole. Since + all other dialog classes are derived from dialogshell, all dialogs now + have the center command available. + +>> Made the Help button hidden by default for dialogs + + Most people turn it off right away anyway. It is still there. Just need + to do a "show Help" if you need it back. + +>> Comboxbox now derived from entryfield. + + The combobox structure has been modified to be derived from the entryfield + class. Now combobox labels can be aligned using the labeledwidget + alignlabels method along with optionmenus, entryfields and such. + +>> Added -justify and -wraplength to Messagedialog. + + The justify and wraplength options are now kept for the label in the + messagedialog widget. + +>> Added a man page generator for itcl. + + In the doc directory is a new utility called mkitclman. It does a good + job at an initial pass of man page generation for new iwidget classes. + You still need to get in there and beef up the man page which is produced, + but it is better than starting from scratch. + +>> Added the canvasprintbox and canvasprintdialog mega-widgets. + + Two new mega-widgets, canvasprintbox and canvasprintdialog, have been + contributed to [incr Widgets]. Thanks to Tako Schotanus, + Tako.Schotanus@bouw.tno.nl. + +>> Added the textbackground option to the scrolledcanvas widget + + The textbackground option has been added to the scrolledcanvas widget + similarly to the scrolledlistbox and entryfield widgets. + + +BUG FIXES +------------------------------------------------------------------------------ +>> Enabled repeat action in spinners. + + This was available in iwidgets two versions ago. I made in incorrect + merge and lost the change. It has now been added back into the spinner. + +>> Eliminated use of #auto in panedwindow. + + Using #auto made the test script fail should you run it two times in a + row. Instead, the class keeps its own unique counter which is always + reset upon construction. This was more of an annoyance than a bug. + +>> Corrected selection problem in selectiondialog. + + The selectiondialog wasn't configuring the itemscommand properly, so + selection of an item was not reflected in the selection entryfield. + +>> Corrected index usage problem in buttonbox insert method. + + The buttonbox insert method didn't correctly convert the index argument + prior to inserting the new pushbutton. This has been fixed. + +>> Corrected flicker problem in scrolled* widgets. + + Modified the scrolled* widgets to only change the current scrollbar + display if different than the current setting. This fixes the flicker + problem which was apparent during horizontal scrolling. + +>> Entryfield command option performs a break. + + Following evaluation of the command option for entryfield widgets, a + break is performed. This caused a problem when entryfields were in + a dialog. Hitting return in the entryfield, invoked the dialogs + default button. This has been fixed. + + +INCOMPATIBLE CHANGES +------------------------------------------------------------------------------ +>> Removed -highlightbackground option from mega-widgets + + All the -highlightbackground options have been renamed to be -background. + This was always an annoyance anyway. Now, setting the -background changes + all the highlightbackgrounds as well. Should anybody still for some odd + reason need -highlightbackground, just access the component with the + "component name configure" command. + + +========================================================================== + -------------------------- iwidgets-2.0b0 ------------------------------ + -------------------- CHANGES FROM iwidgets-2.0b1 ----------------------- +========================================================================== + + [incr Widgets] versions b1, b2, b3, and b4 are compatable with itcl-2.0b2 + +NEW FEATURES +------------------------------------------------------------------------------ + +>> A secondary lower case mega-widget command now exits. + + Mega-widgets can now be created using the new lower case, more tk'ish + method or still using the class name. + + Entryfield .ef and entryfield .ef + + both perform the same operation. + +>> The demos should now all work. + + The correct wish is now called. itkwish instead of the old itcl_wish. + +>> The man pages have all been updated to the best of my ability. + +>> A new more minimal format for the code style has been implemented. + + The class declaration only contains declarations. All implementation is + spearate. This creates a much more readable class. + +>> All class file names as well as the tests, doc, and demos are all lower + case. + +>> Several new validate types such as hexidecimal and real have been added + to the Entryfield. + +>> The Panedwindow class additional commands: + + A paneconfigure command exists for configuring indiviual tagged panes. + + panedwindow .pw + .pw add first + .pw add last + .pw paneconfigure first -margin 10 + + An insert command exists. It takes an index and tag as arguments followed + by optional arguments to be applied to the pane. + + .pw insert end second -minimum 20 + +>> The Buttonbox class now has additional commands: + + A buttonconfigure command exists for configuring indiviual tagged buttons. + + buttonbox .bb + .bb add OK -text OK + .bb add Cancel -text Cancel + .bb buttonconfigure OK -command [list puts OK] + + An insert command has been added. It takes an index as the first arg, + followed by the tag and button arguments. + + .bb insert Cancel Apply -text Apply + + The invoke command no long excepts a list of buttons to invoke. That + didn't make much sense. It takes an optional index for a single button + to invoke. Without any arguments, the default button is invoked. + +BUG FIXES +------------------------------------------------------------------------------ + +>> Corrected scrolled* packing + + The packing order of all the scrolled* mega-widgets has been modified + such that the scrollbars are the last to be clipped. + +>> Corrected buttonbox single button centering + + The buttonbox has been modified such that a box with only one button + will be correctly centered. + +>> scrolledlist selection corrected + + The -selectioncommand is now invoked following any selection of an item, + regardless if it was already selected. The programmer must now determine + if the selected item has changed if necessary. The previous approach of + only invoking the -selectioncommand if the selection has changed caused + too many problems, making it behave erraticly. + +>> Corrected problems preventing classes being derived from scrolled* classes + + Several variables were incorrectly declared to be private rather than + protected. Also, the _scroll* method was incorrectly declared private + instead of protected. These problems prevented inheritance from the + scrolled* classes. + + +INCOMPATIBLE CHANGES +------------------------------------------------------------------------------ + +>> The class names are now upper case on the first character only. + + Class names have been changed to be upper case on the first character + only to be more X'ish. Old class names like EntryField are now Entryfield. + +>> All public methods are now all lowercase. + + This effects the typical common method such as childsite. Others effected + include : + + ::iwidgets::Labeledwidget::alignlabels + +>> Labeledwidget class changes: + + The -labelon option has been removed. The mega-widget now unpacks both + the label and margin if neither the -labeltext, -labelbitmap, or + -labeimage have a value. + + The -font option has been removed. The -labelfont option should be used + instead. + +>> Entryfield class changes: + + The -labelon option is not inherited by the Entryfield anymore. See the + Labeledwidget changes above. + + The Entryfield fixed option has a different meaning. It now specified + the maximum number of characters allowed. A value of zero is unlimited. + This frees up the width option to be able to specify a greater number + of characters than the fixed amount for visual effect. + + The -type and -validate options have been combined to just -validate + which now takes either a type keyword or a command. The command receives + additional trailing arguments consisting of the input character and the + the widget. I hope to change this soon to use substitutions like %c + for the character at a later date. + + The -background option has been removed. The -textbackground option + should be used instead. + + The -validate option now has several substitution strings which may be + passed to the validation script. + +>> ScrollBar class changes: + + It has been deleted. It wasn't a big win. The only benefit was that the + -background option automatically calculated the troughcolor at 80% of + its value. It's just as easy to use the option database and change the + Tk scrollbar troughcolor to whatever value is desired. The various + scrolled* classes now all use the straight Tk scrollbar. + +>> Panedwindow class changes: + + Panes are now tagged. This means the add, and insert methods take an + additional argument which is the tag for that pane. + + The panedwindow index method now takes the tag as well as the number and + keyword "end". Other methods such as delete, hide, and show now can use + the pane tag as an index. + + panedwindow .pw + .pw add bottom + .pw insert 0 top + .pw insert 1 middle + .pw delete middle + + The refresh method has been renamed to reset. + + The semi-private -state option has been removed. The only method of + controlling the display of panes is via the hide and show methods. + +>> Dialogshell class changes: + + The modality option value of "system" has been renamed to be "global" + +>> Dialog class changes: + + All the options for the buttons have been removed. The buttonconfigure + method should be used instead. The class simply creates the standard + OK, Apply, Cancel, and Help buttons tagged by their default labels. + The buttonconfigure method can be used to make modifications to the + buttons. The hide and show methods should now be used instead of the + the -disp* options. + + dialog .d + .d buttonconfigure OK -text Enter + .d hide Help + .d hide Apply + + The -orient option is no longer kept. It seemed rarely used if at all. + The -buttonboxpos option handles the mojority of the cases as is. + +>> Scrolledcanvas class changes: + + The binditem method is now been renamed back to bind. This is what it + should have been all along. A problem in the alpha version of [incr Tcl] + prevented use of this word. + diff --git a/itcl/iwidgets/ChangeLog b/itcl/iwidgets/ChangeLog new file mode 100644 index 0000000000..76b8dcada3 --- /dev/null +++ b/itcl/iwidgets/ChangeLog @@ -0,0 +1,1498 @@ +=-=-=-=-=-=-=-=-=-=-= BEGIN IWIDGETS 4.0.1 CHANGES =-=-=-=-=-=-=-=-=-=-=- +2002-09-09 Chad Smith + * Makefile.in: SF ticket 227921 + Updated man page installation such that "iwidgets_" is now + prepended to the man page filename. This is done to avoid + naming conflicts with man pages in other extensions. + +2002-09-09 Chad Smith + * generic/scrolledtext.itk + * doc/scrolledtext.n + * doc/scrolledhtml.n + * demos/html/scrolledtext.n.html + * demos/html/scrolledhtml.n.html + * tests/scrolledtext.test + * tests/scrolledhtml.test + SF ticket 532602: added -tabs to scrolledtext (and + scrolledhtml due to inheritance) + +2002-09-08 Marty Backe + * generic/combobox.itk + Fixed SF bug 501300 - keyboard navigation was not working + properly if any items were null + +2002-09-06 Chad Smith + * generic/hierarchy.itk: SF ticket 596111 + After reconfiguring -querycommand, the text component + lost its tag configuration. Added code to reset + the hilite, lowlite, and info tags. + +2002-09-05 Chad Smith + * generic/hierarchy.itk: SF ticket 600941 + Marked node lost its highlighting when parent folder + closed and reopened + +2002-09-05 Chad Smith + * generic/canvasprintbox.itk: SF ticket 560153 + Wouldn't print to a filename other than "canvas.ps". + +2002-09-05 Chad Smith + * generic/tabnotebook.itk: SF ticket 514222 + Patch added for infinite loop problem introduced by + new -padx and -pady Tk frame widget options in 8.4 + +2002-09-05 Chad Smith + * generic/tabnotebook.itk: SF ticket 603823 + Patch for bugs related to the -int option + * generic/calendar.itk: SF ticket 603823 + Found bug while testing the dateentry patch. Several + methods expected -int to be set to "yes" or "no" + +2002-03-24 Marty Backe + * generic/disjointlistbox.itk + Applied patch sumitted by Brett Schwarz to add two new sort + options which determine how items are added to each + scrolledlistbox. Did some various code formatting cleanup. + * doc/disjointlistbox.n + Updated the man page to reflect the addition of the two + sort options. + * demos/html/disjointlistbox.n.html + Updated the html version of the man page + * tests/disjointlistbox.test + Added tests for the the two new options. + +2002-03-19 Marty Backe + * generic/messagebox.itk + Modified the save method to center the tk_getSaveFile dialog + on the messagebox window. + +2002-03-16 Marty Backe + * generic/scrolledlistbox.itk: SF Patch 494696 + Applied patch submitted by Brett Schwarz to change the sort + method to accept any sort arguments allowed by Tcl's lsort. + Modified patch to generate an appropriate error message if an + invalid sort argument is provided. + * doc/scrolledlistbox.n + Updated the man page to reflect the new sort arguments. + * demos/html/scrolledlistbox.n.html + Updated per change to doc/scrolledlistbox.n + * tests/scrolledlistbox.test + Updated the 'fail test' to reflect the new error message generated + by an invalid sort argument. + * tests/combobox.test + Updated the sort 'failed test' to reflect the new error message + generated by an invalid sort argument. Fallout from patch to + scrolledlistbox.itk. See above. + +2002-03-15 Marty Backe + * generic/messagebox.itk + Fixed a couple of bugs relating to the popup menu 'Save' function: + 1) The filename that was saved to was also echoed to the + messagebox. Unfortunately the variable referenced was not + valid, so a stack trace followed any Save operation. + 2) The message 'issued' to the messagebox from item 1) above + used the tag INFO, which doesn't exist by default. + + I choose to remove the 'issue' after a file Save. The widget + really shouldn't contribute anything to the messagebox output. + The user of the messagebox iwidget should have control over + what gets displayed. + + Changed the 'export' method to directly use the scrolledtext + 'export' method instead of re-implementing it within this widget. + + Rearranged the layout of the popup menu. Moved the 'Clear' menu + to the end of the list. It was too easy to generate the popup and + accidentally choose the 'Clear' function. + + * generic/hyperhelp.itk + Removed the 'error' statement that would cause any application that + used Hyperhelp to stacktrace if a file to be rendered couldn't be + opened. It's now just a silent error. Perhaps a -errorcommand option + could be added later. + +2002-03-10 Marty Backe + * generic/extfileselectionbox.itk: SF ticket 482080 + Fixed SF ticket 482080 - wrapped _pwd in quotes + Fixed newly discovered bug: + When the current directory contains a directory named after + a punctuation mark (e.g., ! '). Method _setDirList was always + setting the Dir listbox selection to index 0, which is normally + ".", unless the directory contains a directory named + after a punctuation mark. Now it gets set to "." regardless. + +2002-02-26 Marty Backe + * generic/radiobox.itk: SF ticket 521332 + Fixed various bugs: + 1) Traces weren't being released when the object was destroyed. + 2) Small memory leak - _modes($this) array element not deleted + when the object was destroyed. + 3) If the -command option was defined, the command would be + triggered when the first radiobutton was added via the add + method. + Added a destructor to fix bugs 1 & 2. Modified the constructor to + fix bug 3. + * generic/extfileselectiondialog.itk: SF ticket 521335 + Added the -sashcursor option (was already defined in the man page, + but wasn't implemented). + * tests/radiobox.test: + Added test to check for bug number 3 above. + * tests/extfileselectiondialog.test: + Added 2 option tests for -sashcursor & -labelfont. Updated the + option count test. + +2002-02-24 Marty Backe + * generic/datefield.itk + Fixed bugs introduced in previous patch - unbraced 'if' conditionals + * generic/tabset.itk + Fixed bug introduced in previous patch - 'code' used instead + of 'itcl::code'. + * generic/shell.itk: SF ticket 521338 + The 'center' method now properly centers windows that have been + resized between calls to center. + * generic/scrolledlistbox.ikt: SF ticket 521326 + The binding was removed to eliminate multiple triggers + of the command specified by the -selectioncommand option if the + mouse is moved while the item is being selected. + +2002-02-16 Marty Backe + * generic/scrolledhtml.itk: SF ticket 481956 + Fixed potential for lengthy page renderings to throw a bgerror. + +2001-12-11 Chad Smith + * generic/combobox.itk: SF ticket 474817 + Fixed an auto-completion problem. + +2001-12-07 Chad Smith + * generic/tabset.itk: + Added patch submitted by Reinhard Max to optimize tab addition. + +2001-11-29 Chad Smith + * configure.in: + * Makefile.in: SF tickets 462528 and 486735 + Removed a lot of unnecessary variables. Updated configure.in + so that autoconf-generated version matches the configure script + that is included (thanks Andreas). Removed --with-itk and + changed --with-itcl to be required if Iwidgets is not + installed direcly underneath toplevel Itcl directory. + +2001-09-20 Chad Smith + * generic/shell.itk: SF ticket 227885 + Added an 'update idletasks' to flush the event loop after + activating a shell iwidgets. + +2001-09-18 Chad Smith + * generic/radiobox.itk: SF ticket 227923 + Added code to keep users from modifying -variable and -value + radiobutton component options. + +2001-09-17 Chad Smith + * generic/entryfield.itk: SF ticket 227912 + Corrected some pasting problems. + +2001-09-14 Chad Smith + * generic/tabset.itk: SF ticket 460879 + Commented out a line of code to keep the tab from forcing + focus on the hull frame on . + +2001-09-14 Chad Smith + * generic/tabnotebook.itk: SF tickets 452803 and 461471 + Had to do an "undo" of some previous code that was causing an + infinite resizing on events. + +=-=-=-=-=-=-=-=-=-=-= END IWIDGETS 4.0.1 CHANGES =-=-=-=-=-=-=-=-=-=-=-=- + +2001-08-07 Chad Smith + * Merged iwidgets_overhaul branch to CVS head. This branch + included all modifications necessary to extract the iwidgets + from the itcl distribution. + +2001-07-17 Jeff Hobbs + * Makefile.in: removed attempt to install $(GENERIC_DIR)/*.tcl + from install-libraries target as there aren't any .tcl files there + since the removal of generic/scopedobject.tcl. This was resulting + in an error on install. + +2001-05-24 davygrvy + * ChangeLog (added): + Auto gen'd this from output of `cvs log`. This will help us + make a nice quality digest of the changes done for a release. + +2001-05-23 davygrvy + * .cvsignore: + * configure: + * configure.in: + Updated patch level to 3.0.2 in prep for a release. + +2001-05-22 davygrvy + * win/iwidgets.tcl: + * win/makefile.vc: + * win/pkg.vc: + makefile.vc actually works again. + + * win/pkgIndex.tcl: + we'll auto gen these from the makefile + + * win/makefile.vc: + got catalog.tcl installing + +2001-05-21 davygrvy + * demos/demo.html: + Moved change on the old iwidget3.0.0 to the new repository tree + for Iwidgets + +2001-05-19 davygrvy + * generic/menubar.itk: + * generic/tabnotebook.itk: + Moved Chad's changes to the new repository files from the old + iwidgets3.0.0 + +2001-05-18 davygrvy + * generic/scopedobject.tcl: + removed due to copy + +2001-04-25 davygrvy + * generic/colors.itk: + * win/catalog.bat: + * win/makefile.bc: + * win/tclIndex: + cleaning of prior 2.2.0 import to match the correct HEAD + + * CHANGES: + * Makefile.in: + * README: + * aclocal.m4: + * configure: + * configure.in: + * demos/buttonbox: + * demos/canvasprintdialog: + * demos/catalog: + * demos/combobox: + * demos/demo.html: + * demos/dialog: + * demos/dialogshell: + * demos/entryfield: + * demos/feedback: + * demos/fileselectionbox: + * demos/fileselectiondialog: + * demos/html/buttonbox.n.html: + * demos/html/canvasprintbox.n.html: + * demos/html/canvasprintdialog.n.html: + * demos/html/combobox.n.html: + * demos/html/dialog.n.html: + * demos/html/dialogshell.n.html: + * demos/html/entryfield.n.html: + * demos/html/feedback.n.html: + * demos/html/fileselectionbox.n.html: + * demos/html/fileselectiondialog.n.html: + * demos/html/hyperhelp.n.html: + * demos/html/iwidgets2.2.0UserCmds.html: + * demos/html/labeledwidget.n.html: + * demos/html/menubar.n.html: + * demos/html/messagedialog.n.html: + * demos/html/notebook.n.html: + * demos/html/optionmenu.n.html: + * demos/html/panedwindow.n.html: + * demos/html/promptdialog.n.html: + * demos/html/pushbutton.n.html: + * demos/html/radiobox.n.html: + * demos/html/scrolledcanvas.n.html: + * demos/html/scrolledframe.n.html: + * demos/html/scrolledhtml.n.html: + * demos/html/scrolledlistbox.n.html: + * demos/html/scrolledtext.n.html: + * demos/html/selectionbox.n.html: + * demos/html/selectiondialog.n.html: + * demos/html/shell.n.html: + * demos/html/spindate.n.html: + * demos/html/spinint.n.html: + * demos/html/spinner.n.html: + * demos/html/spintime.n.html: + * demos/html/tabnotebook.n.html: + * demos/html/tabset.n.html: + * demos/html/toolbar.n.html: + * demos/hyperhelp: + * demos/images/mag.gif: + * demos/images/poly.gif: + * demos/images/ruler.gif: + * demos/images/select.gif: + * demos/iwidgets.gif: + * demos/labeledwidget: + * demos/menubar: + * demos/messagedialog: + * demos/notebook: + * demos/optionmenu: + * demos/panedwindow: + * demos/promptdialog: + * demos/pushbutton: + * demos/radiobox: + * demos/scrolledcanvas: + * demos/scrolledframe: + * demos/scrolledhtml: + * demos/scrolledlistbox: + * demos/scrolledtext: + * demos/selectionbox: + * demos/selectiondialog: + * demos/spindate: + * demos/spinint: + * demos/spinner: + * demos/spintime: + * demos/tabnotebook: + * demos/tabset: + * demos/toolbar: + * doc/buttonbox.n: + * doc/canvasprintbox.n: + * doc/canvasprintdialog.n: + * doc/combobox.n: + * doc/dialog.n: + * doc/dialogshell.n: + * doc/entryfield.n: + * doc/feedback.n: + * doc/fileselectionbox.n: + * doc/fileselectiondialog.n: + * doc/hyperhelp.n: + * doc/iwidgets.ps: + * doc/labeledwidget.n: + * doc/man.macros: + * doc/menubar.n: + * doc/messagedialog.n: + * doc/mkitclman: + * doc/notebook.n: + * doc/optionmenu.n: + * doc/panedwindow.n: + * doc/promptdialog.n: + * doc/pushbutton.n: + * doc/radiobox.n: + * doc/scrolledcanvas.n: + * doc/scrolledframe.n: + * doc/scrolledhtml.n: + * doc/scrolledlistbox.n: + * doc/scrolledtext.n: + * doc/selectionbox.n: + * doc/selectiondialog.n: + * doc/shell.n: + * doc/spindate.n: + * doc/spinint.n: + * doc/spinner.n: + * doc/spintime.n: + * doc/tabnotebook.n: + * doc/tabset.n: + * doc/tk2html: + * doc/tk2html.awk: + * doc/tk2html.perl: + * doc/tk2html2.awk: + * doc/toolbar.n: + * generic/buttonbox.itk: + * generic/canvasprintbox.itk: + * generic/canvasprintdialog.itk: + * generic/colors.itk: + * generic/combobox.itk: + * generic/dialog.itk: + * generic/dialogshell.itk: + * generic/entryfield.itk: + * generic/feedback.itk: + * generic/fileselectionbox.itk: + * generic/fileselectiondialog.itk: + * generic/hyperhelp.itk: + * generic/labeledwidget.itk: + * generic/menubar.itk: + * generic/messagedialog.itk: + * generic/notebook.itk: + * generic/optionmenu.itk: + * generic/pane.itk: + * generic/panedwindow.itk: + * generic/promptdialog.itk: + * generic/pushbutton.itk: + * generic/radiobox.itk: + * generic/scrolledcanvas.itk: + * generic/scrolledframe.itk: + * generic/scrolledhtml.itk: + * generic/scrolledlistbox.itk: + * generic/scrolledtext.itk: + * generic/selectionbox.itk: + * generic/selectiondialog.itk: + * generic/shell.itk: + * generic/spindate.itk: + * generic/spinint.itk: + * generic/spinner.itk: + * generic/spintime.itk: + * generic/tabnotebook.itk: + * generic/tabset.itk: + * generic/tclIndex: + * generic/toolbar.itk: + * generic/unknownimage.gif: + * incoming/README: + * incoming/doc/man.macros: + * incoming/tests/all: + * incoming/tests/defs: + * iwidgets.tcl.in: + * license.terms: + * outgoing/README: + * pkgIndex.tcl.in: + * tests/all: + * tests/all.tcl: + * tests/buttonbox.test: + * tests/canvasprintbox.test: + * tests/canvasprintdialog.test: + * tests/combobox.test: + * tests/defs: + * tests/dialog.test: + * tests/dialogshell.test: + * tests/entryfield.test: + * tests/feedback.test: + * tests/fileselectionbox.test: + * tests/fileselectiondialog.test: + * tests/hyperhelp.html: + * tests/hyperhelp.test: + * tests/labeledwidget.test: + * tests/menubar.test: + * tests/messagedialog.test: + * tests/notebook.test: + * tests/optionmenu.test: + * tests/panedwindow.test: + * tests/promptdialog.test: + * tests/pushbutton.test: + * tests/radiobox.test: + * tests/scrolledcanvas.test: + * tests/scrolledframe.test: + * tests/scrolledhtml.test: + * tests/scrolledlistbox.test: + * tests/scrolledtext.test: + * tests/selectionbox.test: + * tests/selectiondialog.test: + * tests/shell.test: + * tests/spindate.test: + * tests/spinint.test: + * tests/spinner.test: + * tests/spintime.test: + * tests/tabnotebook.test: + * tests/tabset.test: + * tests/toolbar.test: + * tests/usual.test: + * win/catalog.bat: + * win/iwidgets.tcl: + * win/makefile.bc: + * win/makefile.vc: + * win/pkgIndex.tcl: + * win/tclIndex: + import of current 2.2.0 + + * win/pkg.vc: + moved the info about the iwidget version for makefile.vc + +2001-04-04 smithc + * generic/menubar.itk: + Fixed stack trace that would occur if the programmer attempted to create two menu items with the + same command name. + +2000-12-19 smithc + * generic/combobox.itk: + Fixed 3 bugs: + + 1) bug with -state config option + 2) added some performance enhancements + 3) added code to restore grabs following dropdown listbox unmap + +2000-12-06 smithc + * generic/hierarchy.itk: + Added patches submitted by Martin Backe on 12/5/00. One was for a memory leak in + the clear() method, and the other was to correct %n substitution in the _select() + method. + + * doc/hierarchy.n: + Added -selectcommand to the man page. + +2000-08-25 csmith + * generic/scrolledlistbox.itk: + Patch submitted by Shaun Lowry - I don't know the ticket number, but here's + part of the ticket description: + + Name: Shaun Lowry + email: slowry@iss.net + Support: Gold + Severity: 2 + OperatingSystem: Windows NT + OperatingSystemVersion: NT4 SP6 + Machine: Beige :-) (home built PC) + Synopsis: scrolledlistbox "pattern" based selection doesn't work properly + + ReproducibleScript: + package require Iwidgets + iwidgets::scrolledlistbox .f + .f insert end "friendly" + .f insert end "hostile" + .f get host* + .f get friend* + +2000-08-22 welch + * configure: + * configure.in: + Bumped version number to 3.0.1 (PARTS LIST NOTICE) + + * generic/scrolledlistbox.itk: + Added catch around -listvariable option so this can be used + with older versions of Tk that do not have this option on listboxes. + +2000-08-17 csmith + * generic/timeentry.itk: + Same problem as dateentry. See documentation for dateentry version 1.2 in + CVS. I don't have a ticket number. + + -chad smith + + * generic/dateentry.itk: + While documenting the iwidgets last year in my book, I came across a bug where + destroying a component didn't remove it from the composite options list. I + told Michael about it, and he's fixed it in 3.2. This broke the dateentry + because it was explicitly unsetting the component from the itk_component + array. I simply deleted that line of code. + + I need to make a pass at the rest of the iwidgets to see which other ones were + also unsetting the component. + + -chad smith + +2000-08-08 csmith + * generic/hierarchy.itk: + Several enhancements and bug fixes added by Doug Howard. Doug added the + following configuration options: + -dblclickcommand + -icondblcommand + -imagecommand + -imagedblcommand + -imagemenuloadcommand + -textmenuloadcommand + + He also added two public methods: expanded and expState. Multiple non-public + methods were added to support the new configuration options. I have updated + the man page for each new option and public method. + + * doc/hierarchy.n: + Man page updated per the additional configuration options and public methods + added by Doug Howard. + + * tests/hierarchy.test: + Needed to change the number of configuration options per additions by + Doug Howard so hierarchy would pass the 'make test'. + +2000-08-07 welch + * configure: + Ran autoconf + +2000-08-02 welch + * Makefile.in: + * configure: + Changed this to use installFiles.tcl instead of install-sh + +2000-07-29 welch + * configure: + * configure: + Ran autoconf + +2000-07-14 welch + * configure: + Updated configure + +2000-07-06 mmc + * generic/timefield.itk: + * tests/all: + * tests/all.tcl: + * tests/defs: + * tests/menubar.test: + * tests/notebook.test: + * tests/tabnotebook.test: + * tests/tabset.test: + * tests/toolbar.test: + * unix/Makefile.in: + * unix/configure.in: + * unix/install-sh: + * unix/iwidgets.tcl.in: + * unix/pkgIndex.tcl.in: + + 6/26/00 (bug fix) + Fixed Itcl_ClassVarResolver so that the formal parameters in a + method/proc take precedence over class data members. + + 6/30/00 (bug fix) + Fixed all itcl/itk/iwidgets3.0.0 tests to run cleanly with the new + tcltest package. + + 7/1/00 (bug fix) + Fixed "itk_component delete" so that the composite option list is + cleaned up whenever a component is deleted. For example, suppose + a component is the sole contributor of -font. When that component + is removed via "itk_component delete", the -font option goes away + as well. Also fixed the handling of the itk-delete-* binding for + the component. When the component is removed, the binding tag + is also removed by itk::remove_destroy_hook. + + 7/5/00 (bug fix) + Fixed the check done during object creation to avoid clobbering + existing commands. Previously, itcl would look for any command-- + in the local *and* global namespace--that might be clobbered. + Now, it looks for commands only in the local namespace, since + those are the only ones that could truly be clobbered. + + 7/5/00 (cleanup) + Removed obsolete Makefile/configure files in the various "unix" + directories. Makefiles and configure files now reside one level + above, in the standard TEA place. + +2000-06-06 wart + * Makefile.in: + * configure: + * configure.in: + * tests/all.tcl: + * tests/buttonbox.test: + * tests/calendar.test: + * tests/canvasprintbox.test: + * tests/canvasprintdialog.test: + * tests/checkbox.test: + * tests/combobox.test: + * tests/dateentry.test: + * tests/datefield.test: + * tests/dialog.test: + * tests/dialogshell.test: + * tests/disjointlistbox.test: + * tests/entryfield.test: + * tests/extfileselectionbox.test: + * tests/extfileselectiondialog.test: + * tests/feedback.test: + * tests/fileselectionbox.test: + * tests/fileselectiondialog.test: + * tests/finddialog.test: + * tests/hierarchy.test: + * tests/hyperhelp.test: + * tests/labeledframe.test: + * tests/labeledwidget.test: + * tests/menubar.test: + * tests/messagebox.test: + * tests/messagedialog.test: + * tests/notebook.test: + * tests/optionmenu.test: + * tests/panedwindow.test: + * tests/promptdialog.test: + * tests/pushbutton.test: + * tests/radiobox.test: + * tests/regexpfield.test: + * tests/scrolledcanvas.test: + * tests/scrolledframe.test: + * tests/scrolledhtml.test: + * tests/scrolledlistbox.test: + * tests/scrolledtext.test: + * tests/selectionbox.test: + * tests/selectiondialog.test: + * tests/shell.test: + * tests/spindate.test: + * tests/spinint.test: + * tests/spinner.test: + * tests/spintime.test: + * tests/tabnotebook.test: + * tests/tabset.test: + * tests/timeentry.test: + * tests/timefield.test: + * tests/toolbar.test: + * tests/usual.test: + * tests/watch.test: + Modified tests to run with TEA Makefile + +2000-06-02 csmith + * generic/timefield.itk: + Here are the comments from an itcl mailing list poster as well as + my comments interspersed. + + + iwidgets::timefield + +2000-04-26 csmith + * generic/checkbox.itk: + Bug fix - patch by Mark Wilson added to select method to handle boolean + (other than 0,1) -onvalue options. + +2000-04-19 mmc + * configure: + * configure.in: + + - fixed itcl::find to find classes/objects in *all* namespaces + - fixed tests to run cleanly + +2000-03-28 csmith + * generic/scrolledhtml.itk: + Applied patches submitted by Brian Griffin. The patches are as follows: + + *** scrolledhtml.itk 1999/02/21 02:50:38 1.3 + --- scrolledhtml.itk 2000/03/14 18:07:27 + *************** class iwidgets::Scrolledhtml { + *** 141,146 **** + --- 141,147 ---- + itk_option define -unknownimage unknownimage File {} + itk_option define -textbackground textBackground Background {} + itk_option define -update update Update 1 + + itk_option define -debug deBug Debug 0 + =20 + public method import {args} + public method clear {} + *************** body iwidgets::Scrolledhtml::import {arg + *** 544,550 **** + append _cwd [file dirname $filename] + } else { + set f [open $filename r] + ! g set _cwd [file dirname $filename] + } + } + } + --- 545,551 ---- + append _cwd [file dirname $filename] + } else { + set f [open $filename r] + ! set _cwd [file dirname $filename] + } + } + } + *************** body iwidgets::Scrolledhtml::render {htm + *** 611,618 **** + [lindex $entity 1]] "" entity + set cmd [string tolower [lindex $entity 0]] + if {[info command _entity_$cmd]!=3D""} { + ! catch {eval _entity_$cmd [lrange $entity 1 end]} + } + set html \ + [string range $html [expr [lindex $match 1]+1] end] + } + --- 612,624 ---- + [lindex $entity 1]] "" entity + set cmd [string tolower [lindex $entity 0]] + if {[info command _entity_$cmd]!=3D""} { + ! if {[catch {eval _entity_$cmd [lrange $entity 1 end]} + bad]} { + ! if {$itk_option(-debug)} { + ! global errorInfo + ! puts stderr "render: _entity_$cmd [lrange $entity + 1 end] = + Error:$bad\n$errorInfo" + ! } + } + + } + set html \ + [string range $html [expr [lindex $match 1]+1] end] + } + *************** body iwidgets::Scrolledhtml::_append_tex + *** 728,743 **** + if ![string length $text] return + } + if {!$_pre && !$_intitle} { + ! set p [$_hottext get "end - 2c"] + set n [string index $text 0] + if {$n =3D=3D " " && $p =3D=3D " "} { + set text [string range $text 1 end] + } + ! $_hottext insert end $text $_tag + return + } + if {$_pre && !$_intitle} { + ! $_hottext insert end $text $_tag + return + } + append _title $text + --- 734,757 ---- + if ![string length $text] return + } + if {!$_pre && !$_intitle} { + ! if {[catch {$_hottext get "end - 2c"} p]} { + ! set p "" + ! } + set n [string index $text 0] + if {$n =3D=3D " " && $p =3D=3D " "} { + set text [string range $text 1 end] + } + ! if {[catch {$_hottext insert end $text $_tag}]} { + ! set pht [winfo parent $_hottext] + ! catch {$pht insert end $text $_tag} + ! } =20 + return + } + if {$_pre && !$_intitle} { + ! if {[catch {$_hottext insert end $text $_tag}]} { + ! set pht [winfo parent $_hottext] + ! catch {$pht insert end $text $_tag} + ! } =20 + return + } + append _title $text + *************** body iwidgets::Scrolledhtml::_set_tag {} + *** 807,813 **** + if {![info exists _tagl($_tag)]} { + set _tagfont($_tag) 1 + eval $_hottext tag configure $_tag \ + ! -foreground $_color \ + -lmargin1 ${_left}m \ + -lmargin2 ${_left2}m $args + if [catch {eval $_hottext tag configure $_tag \ + --- 821,827 ---- + if {![info exists _tagl($_tag)]} { + set _tagfont($_tag) 1 + eval $_hottext tag configure $_tag \ + ! -foreground \$_color \ + -lmargin1 ${_left}m \ + -lmargin2 ${_left2}m $args + if [catch {eval $_hottext tag configure $_tag \ + *************** body iwidgets::Scrolledhtml::_entity_tab + *** 2127,2133 **** + # end table + # ------------------------------------------------------------------ + body iwidgets::Scrolledhtml::_entity_/table {} { + ! if $_intable { + _pop tableborder + set table [[_pop table] childsite] + _pop row + --- 2141,2147 ---- + # end table + # ------------------------------------------------------------------ + body iwidgets::Scrolledhtml::_entity_/table {} { + ! if {$_intable} { + _pop tableborder + set table [[_pop table] childsite] + _pop row + *************** body iwidgets::Scrolledhtml::_entity_/ta + *** 2150,2155 **** + --- 2164,2181 ---- + set _link [_pop link] + set _alink [_pop alink] + foreach x [grid slaves $table] { + + set text [$x get 1.0 end] + + set tl [split $text \n] + + set max 0 + + foreach l $tl { + + set len [string length $l] + + if {$len > $max} { + + set max $len + + } + + } + + if {$max > [$x cget -width]} { + + $x configure -width $max + + } + if {[$x cget -height] =3D=3D 1} { + $x configure -height [lindex [split [$x index "end - 1 chars"] + "."] = + 0] + } + *************** body iwidgets::Scrolledhtml::_entity_td=20 + *** 2219,2227 **** + set cellspacing [_peek cellspacing] + set _hottext $table.cell[incr _counter] + text $_hottext -relief flat -width $ar(width) -height $ar(height) = + \ + ! -foreground $_color -background $_bgcolor = + -highlightthickness 0 \ + ! -wrap word -cursor $itk_option(-cursor) \ + -padx $cellpadding -pady $cellpadding + if [info exists ar(nowrap)] { + $_hottext configure -wrap none + } + --- 2245,2258 ---- + set cellspacing [_peek cellspacing] + set _hottext $table.cell[incr _counter] + text $_hottext -relief flat -width $ar(width) -height $ar(height) \ + ! -highlightthickness 0 -wrap word -cursor $itk_option(-cursor) \ + -padx $cellpadding -pady $cellpadding + + if {$_color !=3D ""} { + + $_hottext config -foreground $_color + + } + + if {$_bgcolor !=3D ""} { + + $_hottext config -background $_bgcolor=20 + + } + if [info exists ar(nowrap)] { + $_hottext configure -wrap none + } + *************** body iwidgets::Scrolledhtml::_entity_td=20 + *** 2229,2235 **** + --- 2260,2272 ---- + $_hottext configure -relief sunken + } + set row [_peek row] + + if {$row < 0} { + + set row 0 + + } + set column [_pop column] + + if {$column < 0} { + + set column 0 + + } + while {[grid slaves $table -row $row -column $column] !=3D ""} { + incr column + } + + * generic/shell.itk: + Reversed these two lines of code in the activate() method. + wm deiconify $itk_component(hull) + raise $itk_component(hull) + This fixes a problem mentioned by Brett Schwarz with a particular window + manager he was using with Linux. After testing this code change on a number + of other platforms/WMs (Solaris, Windows, HP-UX -- OLVWM, CDE, GNOME, FVWM) it + does not appear to affect behavior on any of these other systems. + +2000-03-21 csmith + * generic/fileselectionbox.itk: + From a patch I received from Brett Schwarz: + + BUG + --- + When the -fileson option is set to false, then only the directory + listing is shown. It is implied that this becomes a directory selector. + However, when single clicking on a directory, the selection entry widget + only gets updated with the tail of the directory name (what is actually + in the directory listbox), not the whole path. + + DESIRED BEHAVIOR + + * generic/extfileselectionbox.itk: + From a patch I received from Brett Schwarz: + + BUG + --- + When the -fileson option is set to false, then only the directory + listing is shown. I is implied that this becomes a directory selector. + However, when single clicking on a directory, the selection entry widget + only gets updated with the tail of the directory name (what is actually + in the directory listbox), not the whole path. + + DESIRED BEHAVIOR + +2000-03-10 csmith + * doc/checkbox.n: + Updated man page to reflect addition of new config option: + orient. + + * generic/radiobox.itk: + Added a new configuration option to the radiobox: -orient, which specifies the + orientation of the radiobuttons within the radiobox. + + * generic/checkbox.itk: + Added a new config option to the checkbox: -oritent, which allows the user to + specify the orientation of the checkbuttons, either horizontally or + vertically (default). + + * doc/radiobox.n: + Updated man page to reflect the new config option I added: + orient. + +2000-03-09 csmith + * doc/scrolledlistbox.n: + Updated man page to include -listvariable associated option and itemconfigure + associated method. + + * generic/spinint.itk: + Added patch submitted by Brett Schwarz. When a value outside the specified + range is typed into the entryfield component, the spinint will beep if the up + or down arrow is pressed. We decided it was better to change the value back + to within the valid range. For example, if the range is from 10 to 20: + user types 50 in entryfield: + up arrow results in 10 + down arrow results in 20 + user types 5 in entryfield: + up arrow results in 10 + down arrow results in 20 + + * generic/feedback.itk: + This is to close ticket #2881. While implementing the fix, I found another + bug where resizing of the window did not update the trough. So I did not add + the patch from this ticket. Rather, I added a new binding in the class + constructor on the hull such that events invoke the _display + method to update the trough. This binding fixes both cases and does not + introduce any performance problems. + + * doc/scrolledtext.n: + Updated man page to include image associated method. + +2000-03-08 csmith + * generic/hierarchy.itk: + Implemented and tested bug fix for ticket #3444. + csmith: 3/8/00 4:02pm + +2000-03-02 csmith + * generic/scrolledlistbox.itk: + Added a wrapper method for the new tk8.3 itemconfigure command for the + listbox. + + * generic/scrolledtext.itk: + This is to close bug report #3446. I added a wrapper method for the text + widget's new image function per request. + + * unix/Makefile.in: + This is to close ticket #3958. Removed the "iwidgets.tcl and pkgIndex.tcl" + targets from 'make clean'. + + * generic/scrolledlistbox.itk: + Added -listvariable to the list of options kept with the listbox component is + added so that this option is available at the mega-widget level. + +2000-01-31 csmith + * generic/combobox.itk: + Small bug fix in the delete method when deleting text from the entry + component. + +2000-01-26 csmith + * generic/disjointlistbox.itk: + This mega-widget is setting tk_strictMotif to 1. Several emails circulated + around the itcl mailing list about problems that this caused. disjointlistbox + is the only mega-widget that set this global variable, so I've removed the + line of code that did this. After a brief sanity check, things look fine + without this line of code. + +2000-01-24 wart + * configure: + Regenerated configure scripts to pick up changes to tcl.m4 + + * configure: + Regenerated configure scripts to pick up recent changes to tcl.m4 + +2000-01-07 csmith + * generic/messagedialog.itk: + Added -wraplength and -justify to configuration options. I don't know why + these were removed from version 2.2, but they're useful and should be there. + +2000-01-03 csmith + * generic/combobox.itk: + One typo dealing with -state with -dropdown is false ("info exists" should + have been "winfo exists"). Also added a conditional in the delete method + to avoid a possible stack dump. + + * generic/watch.itk: + -tickcolor was not working - simple fix to modify the canvas option + from -fill to -outline + + * generic/timefield.itk: + Patch by Massimo Morin to add -gmt and -textvariable options to + the timefield. + + * generic/optionmenu.itk: + The 'select' method was not working properly when passed the "end" argument. + Modified the 'select' method to check for a bad index value - did not use + the patch attached to the bug report. + + * generic/canvasprintbox.itk: + minor bug fix, -pagesize was not updating the optionmenu + + * generic/calendar.itk: + Fixed a bug with -buttonforeground when photos used instead of + bitmaps. + + * generic/spindate.itk: + datemargin was not working properly. Bug fixed by Brett + Schwarz. + + * generic/finddialog.itk: + Patch by Brett Schwarz to fix -clearcommand and -matchcommand options, + which were not working. + + * generic/extfileselectionbox.itk: + A few public methods should be private: + _selectDir + _dblSelectDir + _selectFile + + * Makefile.in: + Patch submitted by Andreas Gustafsson: 'make clean' removes files generated + by the configure script and should only remove files generated by make. + +1999-12-20 csmith + * generic/labeledframe.itk: + Fixed some access level inconsistencies with some class methods. One public + method (smt) should not be public. Actually, I can't find anywhere in any + code where this method is called. Maybe it should be deleted? I made it + protected along with 3 private methods that were labeled as protected in the + method comment block. + + * generic/checkbox.itk: + 1) I removed the following configuration option definitions from the + class definition: -command, -disabledforeground, and -selectcolor. + These options are now only applicable after checkbuttons have been + added to the checkbox. + + a) The -command option never worked anyway. It was defined + via 'itk_option define' but was not implemented. The easiest + solution was to keep this option when adding a new checkbutton. + This at least adds -command functionality but doesn't provide + for % variable substitutions, which would be a nice addition + for future revisions. + + b) The -disabledforeground and -selectcolor options were valid + options for initial checkbox creation but had no error checking. + You could therefore create a new checkbox with -selectcolor set + to "foo bar" and it would work OK. When you tried to add a new + checkbutton via the add() method, however, it would fail until + the class level -selectcolor was modified. This could lead to + confusion, so these two options are now only valid after (or + during) the addition of checkbuttons. Tk then handles the error + checking. + + 2) Added -state to the keep fragment during checkbutton addition. + + So in a nutshell, these 4 options are now valid checkbox options after + at least one checkbutton has been added: + -command + -disabledforeground + -selectcolor + -state + +1999-12-16 wart + * Makefile.in: + Install a few extra useful files (license.terms, catalog.bat) + +1999-12-16 csmith + * generic/menubar.itk: + public method _helpHandler should be private. Not sure how this originally + happened unless just an oversight on the author's part. + +1999-12-15 csmith + * generic/feedback.itk: + Modified the _display method per a bug report submitted by Kory Hopkins on + 9/24/99 (at least that's when I got it). There was a simple code change to + fix a problem with the trough calculation when stepping. + +1999-11-24 wart + * configure: + regenerated configure scripts to pick up tcl.m4 changes + + * configure: + tcl.m4: Updated to reflect recent TEA changes + + */configure: Regnereated with new tcl.m4 + + iwidgets2.2.0/Makefile.in: Don't copy nonexistent files + +1999-11-18 csmith + * generic/optionmenu.itk: + Modified a ternary expression to a simple if:then conditional because of some + problems with exponentials. + + * generic/optionmenu.itk: + Just for clarity, changed the menubutton component's designated "-indicator" + option to "-indicatoron". Someone noticed it and actually submitted a bug + report on it. Geez. + + * doc/toolbar.n: + Removed the -relief option from the list of standard options. + + * generic/scrolledtext.itk: + Fixed a bug with the search method. The arguments needed to be evaluated one + level down the call stack. + + * demos/html/toolbar.n.html: + Removed the -relief option from the standard options and also alphabetized + each of the standard options for lookup convenience. + +1999-09-14 wart + * iwidgets.tcl.in: + * pkgIndex.tcl.in: + Fixed installation of pkgIndex.tcl file. We have to install a pre-made + pkgIndex.tcl file since pkg_mkIndex can't seem to make a usable one. + +1999-09-10 wart + * Makefile.in: + Fixed bug when calling mkIndex.tcl for itk + + reduced amount of output from "make install" in iwidgets + +1999-09-09 wart + * iwidgets.tcl.in: + * pkgIndex.tcl.in: + Added pkgIndex files for Iwidgets + + Top level Makefile should no longer loop endlessly if the configure went bad. + +1999-09-04 wart + * Makefile.in: + * aclocal.m4: + * configure: + * configure.in: + TEA changes. Itcl now uses the same Makefiles and configure scripts for + both Windows and Unix. + + Note that static shells are not yet done in this TEA implementation. + +1999-08-21 matt + * win/makefile.vc: + Moved HTML install to seperate non-default target, since the files that + it tries to install don't exist and cause a failure during the install. + +1999-07-26 csmith + * generic/pane.itk: + A typo in the configbody for -minimum. The first '$' should be removed from + set $itk_option(-minimum) $pixels + +1999-07-22 csmith + * generic/notebook.itk: + This is to incorporate a bug fix reported by Larry Virden for the + tabbed notebook. Looks like a typo in the code, where + set $_currPage -1 + should be + set _currPage -1 + + * generic/calendar.itk: + This is to fix a problem reported by Larry Virden in the calendar + iwidget. There's a typo in the line, + set $_time $time + which should be + set _time $time + +1999-07-08 rjohnson + * demos/html/iwidgets2.2.0UserCmds.html: + * demos/html/iwidgets3.0.0UserCmds.htm: + + Updated html index file to 3.0. + + * demos/html/iwidgets3.0.0UserCmds.htm: + * demos/html/iwidgets3.0.0UserCmds.html: + + Messed up extension. + +1999-06-16 csmith + * generic/toolbar.itk: + This fix is contributed by Raviv Gil. Below is his description of the bug. + + "Working with iwidgets3.0.0 we've encountered the following problem : + We created a toolbar containing several buttons, each button with a short + help string. Passing above the toolbar and then closing the window sometimes + opened a Tcl Error message indicating that the method 'showBalloon' was + invoked for an invalid tk path." + + * generic/panedwindow.itk: + There were several places in the code that looped from 1 to the number of + actual panes in the panedwindow when the code should be looping over the + number of active panes. Each of these areas in the code could cause a stack + dump, complaining about an invalid pathanme regarding a sash or a separator. + I've changed each of these areas to use _activePanes instead of _panes. + +1999-05-25 redman + * unix/configure.in: + Fix the makefile and configure files, etc., for Unix + in order to compile with Tcl/Tk 8.1 with stubs. + + Builds itclsh and itkwish properly. + +1999-03-30 csmith + * generic/checkbox.itk: + ::Checkbox::select invokes the specified checkbutton regardless of whether + it's selected or not. It should only tell the checkbutton to invoke if + the checkbutton is not already selected. + + * generic/menubar.itk: + There was a typo in the redefinition of the tkMenuFind proc at the bottom + of menubar.itk. "winfo" was being used instead of "info" with the + "command" argument. + +1999-03-15 csmith + * tests/entryfield.test: + Added one line of code in the 'foreach test' loop for the new - + pasting option. + + * doc/entryfield.n: + Updated man page to document a new option, -pasting, which allows the + developer to disable pasting into the entry component of the entryfield. + This is useful when using -validate because validation does not catch + pasting text. + + * generic/entryfield.itk: + 1) Added a new configuration option, -pasting, which allows the user to + disable pasting text into the entry component of the entryfield. + Previously, when using -validate, the user was allowed to paste text + which could cause stack dumps into the entryfield because pasting was + not caught. The user, for instance, could paste a 40 digit number and + kill any expr's since the integer is too large for tcl to handle. + 2) The _keyPress method hardcoded state comparisons for , , + , and . The problem was that these + hardcoded values were UNIX-specific. I added platform-independant code. + + * CHANGES: + Added to entries under the Entryfield section: 1) documented new configuration + option, -pasting; and 2) documented change to _keyPress method to remove + hardcoded state comparisons. + +1999-03-08 csmith + * generic/panedwindow.itk: + Instantiating an extfileselectionbox iwidgets with a single configuration + option, '-fileson 0', caused a stack dump as a result of accessing an + invalid tk window pathname in iwidgets::Panedwindow::sashcursor. The + solution was to wrap a conditional around the path to see if it exists + before trying to use it. + +1999-03-04 csmith + * generic/combobox.itk: + The -command configuration option was being overwritten in the + _createComponents method if it was specified during widget creation. + +1999-02-21 rjohnson + * generic/scrolledhtml.itk: + + Removed stack trace error in widget. However, the widget still + doesn't display correctly... + +1999-01-25 stanton + * unix/iwidgets.tcl.in: + * win/iwidgets.tcl: + Changed so iwidgets.tcl does a "namespace import -force itcl::*" + This is a hack to get around the fact that iwidgets uses "class" + instead of "itcl::class". The correct long term solution is to change + all of the iwidgets code to use qualified names. + +1998-12-22 rjohnson + * demos/watch: + + Fixed bug in watch demo. + +1998-12-18 rjohnson + * demos/catalog: + + Removed the mainwindow demo from the catalog demo. It was not a well + behaved demo and running would break the catalog demo. [Bug ID: 508] + +1998-09-14 stanton + * demos/images/clear.gif: + * demos/images/close.gif: + * demos/images/copy.gif: + * demos/images/cut.gif: + * demos/images/exit.gif: + * demos/images/find.gif: + * demos/images/help.gif: + * demos/images/mag.gif: + * demos/images/new.gif: + * demos/images/open.gif: + * demos/images/paste.gif: + * demos/images/poly.gif: + * demos/images/print.gif: + * demos/images/ruler.gif: + * demos/images/save.gif: + * demos/images/select.gif: + * demos/iwidgets.gif: + * generic/unknownimage.gif: + Fixed binary files + +1998-09-10 stanton + * doc/iwidgets.ps: + added iwidgets.ps as a binary file + +1998-08-25 stanton + * demos/mainwindow: + fixed bug where image names conflicted with global commands + +1998-08-24 stanton + * generic/hyperhelp.itk: + fixed portability bug in file name handling + + * demos/html/buttonbox.n.html: + * demos/html/canvasprintbox.n.html: + * demos/html/canvasprintdialog.n.html: + * demos/html/combobox.n.html: + * demos/html/dialog.n.html: + * demos/html/dialogshell.n.html: + * demos/html/entryfield.n.html: + * demos/html/feedback.n.html: + * demos/html/fileselectionbox.n.html: + * demos/html/fileselectiondialog.n.html: + * demos/html/hyperhelp.n.html: + * demos/html/iwidgets2.2.0UserCmds.html: + * demos/html/labeledwidget.n.html: + * demos/html/menubar.n.html: + * demos/html/messagedialog.n.html: + * demos/html/notebook.n.html: + * demos/html/optionmenu.n.html: + * demos/html/panedwindow.n.html: + * demos/html/promptdialog.n.html: + * demos/html/pushbutton.n.html: + * demos/html/radiobox.n.html: + * demos/html/scrolledcanvas.n.html: + * demos/html/scrolledframe.n.html: + * demos/html/scrolledhtml.n.html: + * demos/html/scrolledlistbox.n.html: + * demos/html/scrolledtext.n.html: + * demos/html/selectionbox.n.html: + * demos/html/selectiondialog.n.html: + * demos/html/shell.n.html: + * demos/html/spindate.n.html: + * demos/html/spinint.n.html: + * demos/html/spinner.n.html: + * demos/html/spintime.n.html: + * demos/html/tabnotebook.n.html: + * demos/html/tabset.n.html: + * demos/html/toolbar.n.html: + updated + +1998-08-21 stanton + * demos/catalog: + removed extraneous import + +1998-08-18 welch + * demos/catalog: + Fixed demo + +1998-08-11 welch + * CHANGES: + * demos/catalog: + * demos/html/buttonbox.n.html: + * demos/html/canvasprintbox.n.html: + * demos/html/combobox.n.html: + * demos/html/dialogshell.n.html: + * demos/html/entryfield.n.html: + * demos/html/fileselectionbox.n.html: + * demos/html/fileselectiondialog.n.html: + * demos/html/hyperhelp.n.html: + * demos/html/labeledwidget.n.html: + * demos/html/menubar.n.html: + * demos/html/notebook.n.html: + Updates from Michael + + * demos/feedback: + * demos/html/canvasprintdialog.n.html: + * demos/html/dialog.n.html: + * demos/html/feedback.n.html: + * demos/html/messagedialog.n.html: + * demos/html/optionmenu.n.html: + * demos/html/panedwindow.n.html: + * demos/html/promptdialog.n.html: + * demos/html/pushbutton.n.html: + * demos/html/radiobox.n.html: + * demos/html/scrolledcanvas.n.html: + * demos/html/scrolledframe.n.html: + * demos/html/scrolledhtml.n.html: + * demos/html/scrolledlistbox.n.html: + * demos/html/scrolledtext.n.html: + * demos/html/selectionbox.n.html: + * demos/html/selectiondialog.n.html: + * demos/html/shell.n.html: + * demos/html/spindate.n.html: + * demos/html/spinint.n.html: + * demos/html/spinner.n.html: + * demos/html/spintime.n.html: + * demos/html/tabnotebook.n.html: + * demos/html/tabset.n.html: + * demos/html/toolbar.n.html: + * demos/mainwindow: + * demos/watch: + * doc/calendar.n: + * doc/labeledframe.n: + * doc/optionmenu.n: + * doc/selectionbox.n: + * generic/combobox.itk: + * generic/entryfield.itk: + * generic/hierarchy.itk: + * generic/menubar.itk: + * generic/messagebox.itk: + * generic/optionmenu.itk: + * generic/radiobox.itk: + * generic/scrolledframe.itk: + * generic/scrolledhtml.itk: + * generic/shell.itk: + * generic/toolbar.itk: + * tests/entryfield.test: + * tests/hyperhelp.test: + * tests/optionmenu.test: + * tests/shell.test: + * tests/spinner.test: + * unix/Makefile.in: + * unix/iwidgets.tcl.in: + * unix/pkgIndex.tcl.in: + 3.0 final from Michael + + * unix/Makefile.in: + Fixed symlink + diff --git a/itcl/iwidgets/Makefile.in b/itcl/iwidgets/Makefile.in new file mode 100644 index 0000000000..badce22155 --- /dev/null +++ b/itcl/iwidgets/Makefile.in @@ -0,0 +1,199 @@ +# +# This file is a Makefile for [incr Widgets]. 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. +# +# RCS: $Id$ + +# Current [incr Widgets] version; used in various names. + +ITCL_VERSION = @ITCL_VERSION@ +IWIDGETS_VERSION = @VERSION@ + +#---------------------------------------------------------------- +# Things you can change to personalize the Makefile for your own +# site (you can make these changes in either Makefile.in or +# Makefile, but changes to Makefile will get lost if you re-run +# the configuration script). +#---------------------------------------------------------------- + +# Default top-level directories in which to install architecture- +# specific files (exec_prefix) and machine-independent files such +# as scripts (prefix). The values specified here may be overridden +# at configure-time with the --exec-prefix and --prefix options +# to the "configure" script. + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +srcdir = @srcdir@ +bindir = @bindir@ + +# The following definition can be set to non-null for special systems +# like AFS with replication. It allows the pathnames used for installation +# to be different than those used for actually reference files at +# run-time. INSTALL_ROOT is prepended to $prefix and $exec_prefix +# when installing files. +INSTALL_ROOT = + +# Path name to use when installing library scripts: + +# REDHAT LOCAL +#SCRIPT_INSTALL_DIR = $(INSTALL_ROOT)$(prefix)/lib/iwidgets$(IWIDGETS_VERSION) +SCRIPT_INSTALL_DIR = @datadir@/iwidgets$(IWIDGETS_VERSION) +# END REDHAT LOCAL + +# Directory in which to install the archive libtcl.a: +LIB_INSTALL_DIR = $(INSTALL_ROOT)$(exec_prefix)/lib + +# Directory in which to install the program tclsh: +BIN_INSTALL_DIR = $(INSTALL_ROOT)$(exec_prefix)/bin + +# Top-level directory in which to install manual entries: +MAN_INSTALL_DIR = $(INSTALL_ROOT)$(prefix)/man/mann + +# Directory containing Tcl source code (for library used during test): +TCL_SRC_DIR = @TCL_SRC_DIR@ + +# Directory containing Tk source code (for library used during test): +TK_SRC_DIR = @TK_SRC_DIR@ + +# Itcl libraries can be found here: +ITCL_LIB_DIR = @ITCL_LIB_DIR@ + +# Directory containing Itcl source code (for library used during test): +ITCL_SRC_DIR = @ITCL_SRC_DIR@ + +# Itk libraries can be found here: +ITK_LIB_DIR = @ITK_LIB_DIR@ + +# Directory containing Itk source code (for library used during test): +ITK_SRC_DIR = @ITK_SRC_DIR@ + +# Some versions of make, like SGI's, use the following variable to +# determine which shell to use for executing commands: +SHELL = /bin/sh + +#---------------------------------------------------------------- +# The information below is modified by the configure script when +# Makefile is generated from Makefile.in. You shouldn't normally +# modify any of this stuff by hand. +#---------------------------------------------------------------- + +# REDHAT LOCAL +#INSTALL = $(TCLSH_PROG) `$(CYGPATH) $(ITCL_SRC_DIR)/../config/installFile.tcl` -c +INSTALL = @INSTALL@ +# END REDHAT LOCAL + +INSTALL_PROGRAM = $(INSTALL) +INSTALL_DATA = $(INSTALL) -m 644 +INSTALL_SCRIPT = $(INSTALL) -m 555 +MKINSTALLDIRS = $(ITCL_SRC_DIR)/../config/mkinstalldirs +RANLIB = @RANLIB@ +LN_S = ln -s +TOP_DIR = $(srcdir) +GENERIC_DIR = $(TOP_DIR)/generic +UNIX_DIR = $(TOP_DIR)/unix + +CYGPATH = @CYGPATH@ +TCLSH_PROG = @TCLSH_PROG@ + +#---------------------------------------------------------------- +# The information below should be usable as is. The configure +# script won't modify it and you shouldn't need to modify it +# either. +#---------------------------------------------------------------- + +info: + @echo "Please specify either 'make test' or 'make install'." + +all: + @echo "Nothing to make for target 'all'. Run 'make test' to \ + test the distribution" + @echo "and 'make install' to install it." + +install: install-libraries install-doc install-demos + +test: + LD_LIBRARY_PATH=$(ITCL_LIB_DIR):$(ITK_LIB_DIR):$(LD_LIBRARY_PATH); export LD_LIBRARY_PATH ; \ + TCL_LIBRARY=$(TCL_SRC_DIR)/library; export TCL_LIBRARY; \ + ITCL_LIBRARY=$(ITCL_LIB_DIR); export ITCL_LIBRARY; \ + TK_LIBRARY=$(TK_SRC_DIR)/library; export TK_LIBRARY; \ + ITK_LIBRARY=$(ITK_LIB_DIR); export ITK_LIBRARY; \ + IWIDGETS_LIBRARY=@IWIDGETS_SRC_DIR@; export IWIDGETS_LIBRARY; \ + $(TCLSH_PROG) `@CYGPATH@ $(srcdir)/tests/all.tcl` \ + -exedir `@CYGPATH@ $(TK_SRC_DIR)/unix` $(TESTFLAGS) + +install-libraries: + @$(MKINSTALLDIRS) $(SCRIPT_INSTALL_DIR) $(LIB_INSTALL_DIR) + @rm -f $(LIB_INSTALL_DIR)/iwidgets +# REDHAT LOCAL +# $(LN_S) $(SCRIPT_INSTALL_DIR) $(LIB_INSTALL_DIR)/iwidgets +# END REDHAT LOCAL + @$(MKINSTALLDIRS) $(SCRIPT_INSTALL_DIR)/scripts + @echo "Installing source files from $(GENERIC_DIR) into $(SCRIPT_INSTALL_DIR)" + @for i in $(GENERIC_DIR)/*.itk $(GENERIC_DIR)/*.itcl $(GENERIC_DIR)/tclIndex $(GENERIC_DIR)/*.gif ; \ + do \ + $(INSTALL_DATA) $$i $(SCRIPT_INSTALL_DIR)/scripts; \ + done; + @echo "Installing iwidgets.tcl and pkgIndex.tcl into $(SCRIPT_INSTALL_DIR)" + @for i in iwidgets.tcl pkgIndex.tcl ; \ + do \ + $(INSTALL_DATA) $$i $(SCRIPT_INSTALL_DIR); \ + done; + +install-demos: + @$(MKINSTALLDIRS) $(SCRIPT_INSTALL_DIR)/demos/images $(SCRIPT_INSTALL_DIR)/demos/html + @echo "Installing demos from $(srcdir)/demos into $(SCRIPT_INSTALL_DIR)/demos" + @for i in $(srcdir)/demos/*; \ + do \ + if [ -f $$i ] ; then \ + $(INSTALL_SCRIPT) $$i $(SCRIPT_INSTALL_DIR)/demos; \ + fi; \ + done; + @echo "Installing images from $(srcdir)/demos/images into $(SCRIPT_INSTALL_DIR)/demos/images" + for i in $(srcdir)/demos/images/*; \ + do \ + if [ -f $$i ] ; then \ + $(INSTALL_DATA) $$i $(SCRIPT_INSTALL_DIR)/demos/images; \ + fi; \ + done; + @echo "Installing html man pages from $(srcdir)/demos/html into $(SCRIPT_INSTALL_DIR)/demos/html" + for i in $(srcdir)/demos/html/*; \ + do \ + if [ -f $$i ] ; then \ + $(INSTALL_DATA) $$i $(SCRIPT_INSTALL_DIR)/demos/html; \ + fi; \ + done; + +install-doc: + @$(MKINSTALLDIRS) $(MAN_INSTALL_DIR) + @echo "Installing man pages from $(TOP_DIR)/doc into $(MAN_INSTALL_DIR)" + @cd $(TOP_DIR)/doc; for i in *.n; \ + do \ + rm -f $(MAN_INSTALL_DIR)/`basename $$i`; \ + rm -f $(MAN_INSTALL_DIR)/`basename iwidgets_$$i`; \ + sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \ + $$i > $(MAN_INSTALL_DIR)/`basename iwidgets_$$i`; \ + chmod 444 $(MAN_INSTALL_DIR)/`basename iwidgets_$$i`; \ + done; + $(INSTALL_DATA) $(srcdir)/license.terms $(SCRIPT_INSTALL_DIR) + +Makefile: $(srcdir)/Makefile.in + $(SHELL) config.status + +clean: + rm -f core errs *~ \#* TAGS *.E a.out errors + +distclean: clean + rm -f Makefile config.status config.cache config.log + +depend: + makedepend -- $(CC_SWITCHES) -- $(SRCS) + +configure: configure.in + autoconf + +# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/itcl/iwidgets/README b/itcl/iwidgets/README new file mode 100644 index 0000000000..6e80802082 --- /dev/null +++ b/itcl/iwidgets/README @@ -0,0 +1,212 @@ +------------------------------------------------------------------------------ + [incr Widgets] - version 4.0.1 +------------------------------------------------------------------------------ +Please send general comments, suggestions, and questions to chad_smith@adc.com +or itclguy@yahoo.com. Much of this file was written by Mark Ulferts, the +original [incr Widgets] guy, several years ago when the Iwidgets were first +released. Chad has assumed responsibilities for updates and maintenance. + +============================================================================== + Copyright (c) 1995 DSC Technologies Corporation +============================================================================== + This software is copyrighted by DSC Technologies and private individual + contributors. The copyright holder is specifically listed in the header + of each file. The following terms apply to all files associated with the + software unless explicitly disclaimed in individual files by private + contributors. + + Permission to use, copy, modify, distribute and license this software and + its documentation for any purpose, and without fee or written agreement + with DSC, is hereby granted, provided that the above copyright notice + appears in all copies and that both the copyright notice and warranty + disclaimer below appear in supporting documentation, and that the names of + DSC Technologies Corporation or DSC Communications Corporation not be used + in advertising or publicity pertaining to the software without specific, + written prior permission. + + DSC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, 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. IN NO EVENT SHALL DSC BE LIABLE FOR ANY + SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF + CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN + CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + 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. +============================================================================== + + OVERVIEW +------------------------------------------------------------------------------ + - Introduction + - Distribution + - Web site + - Getting started + - Contributions + - Acknowledgements +------------------------------------------------------------------------------ + + + Introduction +------------------------------------------------------------------------------ + [incr Widgets] is an object-oriented mega-widget set which extends + Tcl/Tk and is based on [incr Tcl] and [incr Tk]. This set of mega-widgets + delivers many new, general purpose widgets like option menus, comboboxes, + selection boxes, and various dialogs whose couterparts are found in Motif + and Windows. Since [incr Widgets] is based on the [incr Tk] extension, the + Tk framework of configuration options, widget commands, and default bindings + is maintained. In other words, each [incr Widgets] mega-widget seamlessly + blends with the standard Tk widgets. They look, act and feel like Tk + widgets. In addition, all [incr Widgets] mega-widgets are object oriented and + may themselves be extended, using either inheritance or composition. + + [incr Widgets] offers a strong object-oriented foundation which addresses + the need for a flexible and extensible mega-widget set. Its usage replaces + common widget combinations with higher level abstractions, simplifying code, + reducing errors, increasing readability, adding productivity, and promoting + a singular look-and-feel. The ability to extend [incr Widgets] enables + developers to create new mega-widgets based on previous work. + + In short, [incr Widgets] is a library of reusable mega-widgets that can + be easily extended using composition or inheritance, allowing quicker + development of large scale applications. Usage drastically reduces + development time. New dialogs can be created in hours. Whole applications + in a few days. Reuse becomes a reality. Many projects are benefitting frm + the intergration of this mega-widget set into their development strategy. + [incr Widgets] is an [incr Tcl] and [incr Tk] success story. Good products + come from good foundations. + + + Distribution +------------------------------------------------------------------------------ + The [incr Widgets] distribution may be downloaded at SourceForge: + www.sourceforge.net/projects/incrtcl. The current distribution is + version 4.0.1. + + + Web site +------------------------------------------------------------------------------ + For the most current news regarding [incr Widgets] please consult the web + site - http://incrtcl.sourceforge.net/iwidgets. Many thanks to Brett Schwarz + who has done an incredible job overhauling this site. Take a look! + + + Getting started +------------------------------------------------------------------------------ + The "doc" directory contains man pages and a technical paper. The man + pages are installed under the man directory off your --prefix, and as of + version 4.0.1 are prepended with the text "iwidgets_" to easily differentiate + [incr Widgets] man pages from those of other extensions. + + doc/iwidgets.ps ... Updated paper presented at Tcl Workshop 95. + + doc/*.n ........... Man pages + + The "demos" directory contains demo scripts for each mega-widget as + well as html versions of all the [incr Widgets] man pages. The + demos are also installed under the lib directory off your --prefix. + + demos/catalog ..... Comprehensive demo package which illustrates + [incr Widgets] usage additionally displaying the + source. + + demos/html ..... HTML version of the [incr Widgets] man pages. + + The "tests" directory contains a set of test scripts for [incr Widgets]. + They also make for a great demo of the flexiblity of the mega-widgets. + + + Installation +------------------------------------------------------------------------------ + NOTE: Having the itcl distribution is a prerequsite to using iwidgets. + Thus, if you don't have itcl you need to visit Source Forge to download + and install it first. Once you have downloaded and installed [incr Tcl] + and [incr Tk], you can proceed with [incr Widgets] installation as follows: + + 1) Copy the iwidgets4.0.1.tar.gz file to your toplevel [incr Tcl] + directory. For example, if you have the itcl3.2.1 distribution in + a directory named /usr/local/tcl/itcl3.2.1, then you should copy + the iwidgets file to this directory. + + Note, if you don't copy the iwidgets archive to this directory, + then you will need to specify the --with-itcl flag when you run + the configure script. + + 2) Untar/unzip the archive: + + gunzip -c iwidgets4.0.1.tar.gz |tar xvf - + + 3) Run the configuration script: + + cd iwidgets4.0.0 + ./configure + + By default, the configuration script will set things up to be + installed in "/usr/local". You can change this by specifying a + different "prefix" in the "configure" command. You'll want to + use the same value you used for the prefix in the configuration + of your [incr Tcl/Tk] distribution. + + ./configure --prefix=/your/install/path + + The "configure" script generates a Makefile from the Makefile.in + template. + + Also, as mentioned eariler, you may need to tell the [incr Widgets] + where the [incr Tcl] source is located. For example, if your toplevel + [incr Tcl] directory is located in /opt/tools/tcl/itcl3.2.1 and you + are building the [incr Widgets] in a directory other than this, then + you will need to use the following: + + ./configure --prefix=/your/install/path \ + --with-itcl=/opt/tools/tcl/itcl3.2.1 + + 4) Run the test suite: + + make test + + 7) Install the [incr Widgets] man pages, demos, and script files. + + make install + + + Acknowledgements +------------------------------------------------------------------------------ + Thanks to Brett Schwarz for a ton of work done on the new [incr Widgets] + web site, http://incrtcl.sourceforge.net/iwidgets. + + Thanks to the original develment team, comprised of Mark Ulferts, Sue + Yockey, Bret Schuhmacher, Alfredo Jahn, John Sigler, and Bill Scott. Also + thanks to Mark Harrison for his influence, confidence, and ideas. + + Thanks also to the new set of contributors which include John Tucker, + Mitch Gorman, John Reekie, Alfredo Jahn, Ken Copeland, Tako Schotanus, + Tony Parent and Michael McLennan + + Thanks to Michael McLennan, creator of [incr Tcl] and [incr Tk], for the + beta copies, training, assistance, and his infectious enthusiasm. + + Thanks to DSC Communications for picking up the copyright and supporting + the public release of this software. + + Thanks to John P. Davis for creating the [incr Widgets] "Flaming Toaster" + logo which can be seen at http://www.tcltk.com/iwidgets + + Thanks to WebNet Technologies for their assistance is designing the [incr + Widgets] web site, as well as hosting it. + + Special thanks to my wife Karen for supporting this effort and to our two + girls, Katelyn and Bailey, who occasionally shared the PC with me. Also + thanks to my Discman and its relentless power supply as well as my rock + and roll CD collection. No music, no software. + +-- + ____________________________________________________________________________ + _/_/ _/_/ _/ _/ _/ Mark L. Ulferts + _/ _/ _/ _/ _/ _/ _/ ulferts@swbell.net + _/ _/_/ _/ _/ _/ _/ mulferts@austin.dsccc.com + _/ _/ _/ _/ _/_/_/ _/ _/_/_/_/ _/ DSC Communications Corp, Austin Texas diff --git a/itcl/iwidgets/aclocal.m4 b/itcl/iwidgets/aclocal.m4 new file mode 100644 index 0000000000..8618b995c5 --- /dev/null +++ b/itcl/iwidgets/aclocal.m4 @@ -0,0 +1 @@ +builtin(include,./tcl.m4) diff --git a/itcl/iwidgets/configure b/itcl/iwidgets/configure new file mode 100755 index 0000000000..ab9ff8543d --- /dev/null +++ b/itcl/iwidgets/configure @@ -0,0 +1,1273 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_help="$ac_help + --with-tcl directory containing tcl configuration (tclConfig.sh)" +ac_help="$ac_help + --with-tk directory containing tk configuration (tkConfig.sh)" +ac_help="$ac_help + --with-itcl=DIR use Itcl 3.0 binaries from DIR" +ac_help="$ac_help + --with-itk=DIR use Itk 3.0 binaries from DIR" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +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' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +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 + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # 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 ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$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" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) 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) + # 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 << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$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) + 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 ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + 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 "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# 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 + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=generic/buttonbox.itk + +# 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_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + 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 "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# 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 "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + +# RCS: $Id$ + +#-------------------------------------------------------------------- +# We should really cache the ITCL_VERSION when we configure itcl, +# and pick up the version from the cache here. +#-------------------------------------------------------------------- + +ITCL_VERSION=3.2 + + +PACKAGE=iwidgets +MAJOR_VERSION=4 +MINOR_VERSION=0 +PATCHLEVEL=.1 + +VERSION=${MAJOR_VERSION}.${MINOR_VERSION}${PATCHLEVEL} + + + + +ac_aux_dir= +for ac_dir in ../config $srcdir/../config; 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 + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in ../config $srcdir/../config" 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + + + +# 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 +# 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" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:586: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/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 + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +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 "$ac_t""$INSTALL" 1>&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_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + +case "`uname -s`" in + *win32* | *WIN32* | *CYGWIN_NT*|*CYGWIN_98*|*CYGWIN_95*) + CYGPATH="cygpath -w" + RELPATH=".. .. bin" + ;; + *) + CYGPATH=echo + RELPATH=.. + ;; +esac + + + + +#-------------------------------------------------------------------- +# See if there was a command-line option for where Tcl is; if +# not, search for Tcl. +#-------------------------------------------------------------------- + + + # + # 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 $ac_n "checking for Tcl configuration""... $ac_c" 1>&6 +echo "configure:675: checking for Tcl configuration" >&5 + if eval "test \"`echo '$''{'ac_cv_c_tclconfig'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + + # First check to see if --with-tcl was specified. + if test x"${with_tclconfig}" != x ; then + if test -f "${with_tclconfig}/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)` + else + { echo "configure: error: ${with_tclconfig} directory doesn't contain tclConfig.sh" 1>&2; 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]* 2>/dev/null` \ + ../../tcl \ + `ls -dr ../../tcl[8-9].[0-9]* 2>/dev/null` \ + ../../../tcl \ + `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 + + # check in a few common install locations + if test x"${ac_cv_c_tclconfig}" = x ; then + for i in `ls -d ${prefix}/lib 2>/dev/null` \ + `ls -d /usr/local/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]* 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 "configure: warning: Can't find Tcl configuration definitions" 1>&2 + exit 0 + else + no_tcl= + TCL_BIN_DIR=${ac_cv_c_tclconfig} + echo "$ac_t""found $TCL_BIN_DIR/tclConfig.sh" 1>&6 + fi + fi + + + echo $ac_n "checking for existence of $TCL_BIN_DIR/tclConfig.sh""... $ac_c" 1>&6 +echo "configure:745: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5 + + if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then + echo "$ac_t""loading" 1>&6 + . $TCL_BIN_DIR/tclConfig.sh + else + echo "$ac_t""file not found" 1>&6 + fi + + # + # The eval is required to do the TCL_DBGX substitution in the + # TCL_LIB_FILE variable + # + + eval TCL_LIB_FILE=${TCL_LIB_FILE} + eval TCL_LIB_FLAG=${TCL_LIB_FLAG} + + + + + + + + + + + + + + + + + + +#-------------------------------------------------------------------- +# See if there was a command-line option for where Tk is; if +# not, search for Tk. +#-------------------------------------------------------------------- + + + # + # 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 $ac_n "checking for Tk configuration""... $ac_c" 1>&6 +echo "configure:801: checking for Tk configuration" >&5 + if eval "test \"`echo '$''{'ac_cv_c_tkconfig'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + + # First check to see if --with-tkconfig was specified. + if test x"${with_tkconfig}" != x ; then + if test -f "${with_tkconfig}/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)` + else + { echo "configure: error: ${with_tkconfig} directory doesn't contain tkConfig.sh" 1>&2; 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]* 2>/dev/null` \ + ../../tk \ + `ls -dr ../../tk[8-9].[0-9]* 2>/dev/null` \ + ../../../tk \ + `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 + # check in a few common install locations + if test x"${ac_cv_c_tkconfig}" = x ; then + for i in `ls -d ${prefix}/lib 2>/dev/null` \ + `ls -d /usr/local/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]* 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 "configure: warning: Can't find Tk configuration definitions" 1>&2 + exit 0 + else + no_tk= + TK_BIN_DIR=${ac_cv_c_tkconfig} + echo "$ac_t""found $TK_BIN_DIR/tkConfig.sh" 1>&6 + fi + fi + + + + echo $ac_n "checking for existence of $TK_BIN_DIR/tkConfig.sh""... $ac_c" 1>&6 +echo "configure:869: checking for existence of $TK_BIN_DIR/tkConfig.sh" >&5 + + if test -f "$TK_BIN_DIR/tkConfig.sh" ; then + echo "$ac_t""loading" 1>&6 + . $TK_BIN_DIR/tkConfig.sh + else + echo "$ac_t""could not find $TK_BIN_DIR/tkConfig.sh" 1>&6 + fi + + + + + + + +#-------------------------------------------------------------------- +# See if there was a command-line option for where Itcl is; if +# not, search for Itcl. +#-------------------------------------------------------------------- + +# Check whether --with-itcl or --without-itcl was given. +if test "${with_itcl+set}" = set; then + withval="$with_itcl" + itcl_search=$withval +else + itcl_search=`cd ${srcdir}/../itcl; pwd` +fi + + +ITCL_LIB_DIR="" +for dir in $exec_prefix/lib $TCL_LIB_DIR $itcl_search ; do + if test -r $dir/library/itcl.tcl; then + ITCL_LIB_DIR=$dir + ITCL_SRC_DIR=$dir + break + fi +done + +if test -z "$ITCL_LIB_DIR"; then + { echo "configure: error: Can't find Itcl libraries. Use --with-itcl to specify the directory containing itcl.tcl on your system." 1>&2; exit 1; } +fi + +#-------------------------------------------------------------------- +# See if there was a command-line option for where Itk is; if +# not, search for Itk. +#-------------------------------------------------------------------- + +# Check whether --with-itk or --without-itk was given. +if test "${with_itk+set}" = set; then + withval="$with_itk" + itk_search=$withval +else + itk_search=`cd ${srcdir}/../itk; pwd` +fi + + +ITK_LIB_DIR="" +for dir in $exec_prefix/lib $TCL_LIB_DIR $itk_search ; do + if test -r $dir/library/itk.tcl; then + ITK_LIB_DIR=$dir + ITK_SRC_DIR=$dir + break + fi +done + +if test -z "$ITK_LIB_DIR"; then + { echo "configure: error: Can't find Itk libraries. Use --with-itk to specify the directory containing itk.tcl on your system." 1>&2; exit 1; } +fi + +#-------------------------------------------------------------------- +# Needed for running the test suite +#-------------------------------------------------------------------- + +# CYGNUS LOCAL +# END CYGNUS LOCAL + +#-------------------------------------------------------------------- +# Fill in template files with the proper info. +#-------------------------------------------------------------------- +#AC_SUBST(BUILD_DIR) + + + + + + + + + +#AC_SUBST(ITCL_VERSION) +#AC_SUBST(IWIDGETS_VERSION) +#AC_SUBST(IWIDGETS_LIBRARY) +#AC_SUBST(IWIDGETS_SRC_DIR) + +trap '' 1 2 15 +cat > confcache <<\EOF +# 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. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# 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 \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +# 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 + + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo "Makefile \ + iwidgets.tcl \ + pkgIndex.tcl" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@ITCL_VERSION@%$ITCL_VERSION%g +s%@PACKAGE@%$PACKAGE%g +s%@VERSION@%$VERSION%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@CYGPATH@%$CYGPATH%g +s%@RELPATH@%$RELPATH%g +s%@TCL_DBGX@%$TCL_DBGX%g +s%@TCL_BIN_DIR@%$TCL_BIN_DIR%g +s%@TCL_SRC_DIR@%$TCL_SRC_DIR%g +s%@TCL_LIB_FILE@%$TCL_LIB_FILE%g +s%@TCL_LIBS@%$TCL_LIBS%g +s%@TCL_DEFS@%$TCL_DEFS%g +s%@TCL_SHLIB_LD_LIBS@%$TCL_SHLIB_LD_LIBS%g +s%@TCL_EXTRA_CFLAGS@%$TCL_EXTRA_CFLAGS%g +s%@TCL_LD_FLAGS@%$TCL_LD_FLAGS%g +s%@TCL_STUB_LIB_FILE@%$TCL_STUB_LIB_FILE%g +s%@TCL_LIB_SPEC@%$TCL_LIB_SPEC%g +s%@TCL_BUILD_LIB_SPEC@%$TCL_BUILD_LIB_SPEC%g +s%@TCL_STUB_LIB_SPEC@%$TCL_STUB_LIB_SPEC%g +s%@TCL_BUILD_STUB_LIB_SPEC@%$TCL_BUILD_STUB_LIB_SPEC%g +s%@TK_BIN_DIR@%$TK_BIN_DIR%g +s%@TK_SRC_DIR@%$TK_SRC_DIR%g +s%@TK_LIB_FILE@%$TK_LIB_FILE%g +s%@TK_XINCLUDES@%$TK_XINCLUDES%g +s%@TCL_LIB_DIR@%$TCL_LIB_DIR%g +s%@TK_LIB_DIR@%$TK_LIB_DIR%g +s%@ITCL_LIB_DIR@%$ITCL_LIB_DIR%g +s%@ITCL_SRC_DIR@%$ITCL_SRC_DIR%g +s%@ITK_LIB_DIR@%$ITK_LIB_DIR%g +s%@ITK_SRC_DIR@%$ITK_SRC_DIR%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# 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_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # 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" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + diff --git a/itcl/iwidgets/configure.in b/itcl/iwidgets/configure.in new file mode 100644 index 0000000000..05afed90ae --- /dev/null +++ b/itcl/iwidgets/configure.in @@ -0,0 +1,131 @@ +dnl This file is an input file used by the GNU "autoconf" program to +dnl generate the file "configure", which is run during [incr Tcl] +dnl installation to configure the system for the local environment. + +AC_INIT(generic/buttonbox.itk) +# RCS: $Id$ + +#-------------------------------------------------------------------- +# We should really cache the ITCL_VERSION when we configure itcl, +# and pick up the version from the cache here. +#-------------------------------------------------------------------- + +ITCL_VERSION=3.2 +AC_SUBST(ITCL_VERSION) + +PACKAGE=iwidgets +MAJOR_VERSION=4 +MINOR_VERSION=0 +PATCHLEVEL=.1 + +VERSION=${MAJOR_VERSION}.${MINOR_VERSION}${PATCHLEVEL} + +AC_SUBST(PACKAGE) +AC_SUBST(VERSION) + +AC_CONFIG_AUX_DIR(../config) +AC_PREREQ(2.0) + +AC_PROG_INSTALL + +case "`uname -s`" in + *win32* | *WIN32* | *CYGWIN_NT*|*CYGWIN_98*|*CYGWIN_95*) + CYGPATH="cygpath -w" + RELPATH=".. .. bin" + ;; + *) + CYGPATH=echo + RELPATH=.. + ;; +esac + +AC_SUBST(CYGPATH) +AC_SUBST(RELPATH) + +#-------------------------------------------------------------------- +# See if there was a command-line option for where Tcl is; if +# not, search for Tcl. +#-------------------------------------------------------------------- + +SC_PATH_TCLCONFIG +SC_LOAD_TCLCONFIG + +#-------------------------------------------------------------------- +# See if there was a command-line option for where Tk is; if +# not, search for Tk. +#-------------------------------------------------------------------- + +SC_PATH_TKCONFIG +SC_LOAD_TKCONFIG + +#-------------------------------------------------------------------- +# See if there was a command-line option for where Itcl is; if +# not, search for Itcl. +#-------------------------------------------------------------------- + +AC_ARG_WITH(itcl, [ --with-itcl=DIR use Itcl 3.0 binaries from DIR], + itcl_search=$withval, itcl_search=`cd ${srcdir}/../itcl; pwd`) + +ITCL_LIB_DIR="" +for dir in $exec_prefix/lib $TCL_LIB_DIR $itcl_search ; do + if test -r $dir/library/itcl.tcl; then + ITCL_LIB_DIR=$dir + ITCL_SRC_DIR=$dir + break + fi +done + +if test -z "$ITCL_LIB_DIR"; then + AC_MSG_ERROR(Can't find Itcl libraries. Use --with-itcl to specify the directory containing itcl.tcl on your system.) +fi + +#-------------------------------------------------------------------- +# See if there was a command-line option for where Itk is; if +# not, search for Itk. +#-------------------------------------------------------------------- + +AC_ARG_WITH(itk, [ --with-itk=DIR use Itk 3.0 binaries from DIR], + itk_search=$withval, itk_search=`cd ${srcdir}/../itk; pwd`) + +ITK_LIB_DIR="" +for dir in $exec_prefix/lib $TCL_LIB_DIR $itk_search ; do + if test -r $dir/library/itk.tcl; then + ITK_LIB_DIR=$dir + ITK_SRC_DIR=$dir + break + fi +done + +if test -z "$ITK_LIB_DIR"; then + AC_MSG_ERROR(Can't find Itk libraries. Use --with-itk to specify the directory containing itk.tcl on your system.) +fi + +#-------------------------------------------------------------------- +# Needed for running the test suite +#-------------------------------------------------------------------- + +# CYGNUS LOCAL +dnl SC_PROG_TCLSH +# END CYGNUS LOCAL + +#-------------------------------------------------------------------- +# Fill in template files with the proper info. +#-------------------------------------------------------------------- +#AC_SUBST(BUILD_DIR) +AC_SUBST(TCL_LIB_DIR) +AC_SUBST(TCL_SRC_DIR) +AC_SUBST(TK_LIB_DIR) +AC_SUBST(TK_SRC_DIR) +AC_SUBST(ITCL_LIB_DIR) +AC_SUBST(ITCL_SRC_DIR) +AC_SUBST(ITK_LIB_DIR) +AC_SUBST(ITK_SRC_DIR) + +#AC_SUBST(ITCL_VERSION) +#AC_SUBST(IWIDGETS_VERSION) +#AC_SUBST(IWIDGETS_LIBRARY) +#AC_SUBST(IWIDGETS_SRC_DIR) + +AC_OUTPUT(Makefile \ + iwidgets.tcl \ + pkgIndex.tcl) diff --git a/itcl/iwidgets/iwidgets.tcl.in b/itcl/iwidgets/iwidgets.tcl.in new file mode 100644 index 0000000000..93098c3b6b --- /dev/null +++ b/itcl/iwidgets/iwidgets.tcl.in @@ -0,0 +1,31 @@ +# +# iwidgets.tcl +# ---------------------------------------------------------------------- +# Invoked automatically by [incr Tk] upon startup to initialize +# the [incr Widgets] package. +# ---------------------------------------------------------------------- +# AUTHOR: Mark L. Ulferts EMAIL: mulferts@spd.dsccc.com +# +# @(#) $Id$ +# ---------------------------------------------------------------------- +# Copyright (c) 1995 Mark L. Ulferts +# ====================================================================== +# See the file "license.terms" for information on usage and +# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. + +package require Tcl 8.0 +package require Tk 8.0 +package require Itcl @ITCL_VERSION@ +package require Itk @ITCL_VERSION@ + +namespace eval ::iwidgets { + namespace export * + + variable library [file dirname [info script]] + variable version @VERSION@ +} + +lappend auto_path $iwidgets::library \ + [file join $iwidgets::library generic] \ + [file join $iwidgets::library scripts] +package provide Iwidgets $iwidgets::version diff --git a/itcl/iwidgets/license.terms b/itcl/iwidgets/license.terms new file mode 100644 index 0000000000..cc56f996b9 --- /dev/null +++ b/itcl/iwidgets/license.terms @@ -0,0 +1,31 @@ +This software is copyrighted by DSC Technologies and private individual +contributors. The copyright holder is specifically listed in the header +of each file. The following terms apply to all files associated with the +software unless explicitly disclaimed in individual files by private +contributors. + +Copyright 1997 DSC Technologies Corporation + +Permission to use, copy, modify, distribute and license this software and +its documentation for any purpose, and without fee or written agreement +with DSC, is hereby granted, provided that the above copyright notice +appears in all copies and that both the copyright notice and warranty +disclaimer below appear in supporting documentation, and that the names of +DSC Technologies Corporation or DSC Communications Corporation not be used +in advertising or publicity pertaining to the software without specific, +written prior permission. + +DSC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, 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. IN NO EVENT SHALL DSC BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +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. diff --git a/itcl/iwidgets/pkgIndex.tcl.in b/itcl/iwidgets/pkgIndex.tcl.in new file mode 100644 index 0000000000..bde254ab38 --- /dev/null +++ b/itcl/iwidgets/pkgIndex.tcl.in @@ -0,0 +1,3 @@ +# Tcl package index file, version 1.0 + +package ifneeded Iwidgets @VERSION@ [list source [file join $dir iwidgets.tcl]] diff --git a/itcl/iwidgets/tcl.m4 b/itcl/iwidgets/tcl.m4 new file mode 100644 index 0000000000..e1b51065e4 --- /dev/null +++ b/itcl/iwidgets/tcl.m4 @@ -0,0 +1,2270 @@ +# tcl.m4 -- +# +# This file provides a set of autoconf macros to help TEA-enable +# a Tcl extension. +# +# Copyright (c) 1999 Scriptics Corporation. +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. + +#------------------------------------------------------------------------ +# SC_PATH_TCLCONFIG -- +# +# Locate the tclConfig.sh file and perform a sanity check on +# the Tcl compile flags +# +# Arguments: +# none +# +# Results: +# +# Adds the following arguments to configure: +# --with-tcl=... +# +# Defines the following vars: +# TCL_BIN_DIR Full path to the directory containing +# the tclConfig.sh file +#------------------------------------------------------------------------ + +AC_DEFUN(SC_PATH_TCLCONFIG, [ + # + # 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 + AC_ARG_WITH(tcl, [ --with-tcl directory containing tcl configuration (tclConfig.sh)], with_tclconfig=${withval}) + AC_MSG_CHECKING([for Tcl configuration]) + AC_CACHE_VAL(ac_cv_c_tclconfig,[ + + # First check to see if --with-tcl was specified. + if test x"${with_tclconfig}" != x ; then + if test -f "${with_tclconfig}/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)` + else + AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh]) + 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]]* 2>/dev/null` \ + ../../tcl \ + `ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` \ + ../../../tcl \ + `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 + + # check in a few common install locations + if test x"${ac_cv_c_tclconfig}" = x ; then + for i in `ls -d ${prefix}/lib 2>/dev/null` \ + `ls -d /usr/local/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]]* 2>/dev/null` ; do + if test -f "$i/unix/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd $i/unix; pwd)` + break + fi + done + fi + ]) + + if test x"${ac_cv_c_tclconfig}" = x ; then + TCL_BIN_DIR="# no Tcl configs found" + AC_MSG_WARN(Can't find Tcl configuration definitions) + exit 0 + else + no_tcl= + TCL_BIN_DIR=${ac_cv_c_tclconfig} + AC_MSG_RESULT(found $TCL_BIN_DIR/tclConfig.sh) + fi + fi +]) + +#------------------------------------------------------------------------ +# SC_PATH_TKCONFIG -- +# +# Locate the tkConfig.sh file +# +# Arguments: +# none +# +# Results: +# +# Adds the following arguments to configure: +# --with-tk=... +# +# Defines the following vars: +# TK_BIN_DIR Full path to the directory containing +# the tkConfig.sh file +#------------------------------------------------------------------------ + +AC_DEFUN(SC_PATH_TKCONFIG, [ + # + # 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 + AC_ARG_WITH(tk, [ --with-tk directory containing tk configuration (tkConfig.sh)], with_tkconfig=${withval}) + AC_MSG_CHECKING([for Tk configuration]) + AC_CACHE_VAL(ac_cv_c_tkconfig,[ + + # First check to see if --with-tkconfig was specified. + if test x"${with_tkconfig}" != x ; then + if test -f "${with_tkconfig}/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)` + else + AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh]) + 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]]* 2>/dev/null` \ + ../../tk \ + `ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` \ + ../../../tk \ + `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 + # check in a few common install locations + if test x"${ac_cv_c_tkconfig}" = x ; then + for i in `ls -d ${prefix}/lib 2>/dev/null` \ + `ls -d /usr/local/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]]* 2>/dev/null` ; do + if test -f "$i/unix/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd $i/unix; pwd)` + break + fi + done + fi + ]) + if test x"${ac_cv_c_tkconfig}" = x ; then + TK_BIN_DIR="# no Tk configs found" + AC_MSG_WARN(Can't find Tk configuration definitions) + exit 0 + else + no_tk= + TK_BIN_DIR=${ac_cv_c_tkconfig} + AC_MSG_RESULT(found $TK_BIN_DIR/tkConfig.sh) + fi + fi + +]) + +#------------------------------------------------------------------------ +# SC_LOAD_TCLCONFIG -- +# +# Load the tclConfig.sh file +# +# Arguments: +# +# Requires the following vars to be set: +# TCL_BIN_DIR +# +# Results: +# +# Subst the following vars: +# TCL_BIN_DIR +# TCL_SRC_DIR +# TCL_LIB_FILE +# +#------------------------------------------------------------------------ + +AC_DEFUN(SC_LOAD_TCLCONFIG, [ + AC_MSG_CHECKING([for existence of $TCL_BIN_DIR/tclConfig.sh]) + + if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then + AC_MSG_RESULT([loading]) + . $TCL_BIN_DIR/tclConfig.sh + else + AC_MSG_RESULT([file not found]) + fi + + # + # The eval is required to do the TCL_DBGX substitution in the + # TCL_LIB_FILE variable + # + + eval TCL_LIB_FILE=${TCL_LIB_FILE} + eval TCL_LIB_FLAG=${TCL_LIB_FLAG} + + AC_SUBST(TCL_DBGX) + AC_SUBST(TCL_BIN_DIR) + AC_SUBST(TCL_SRC_DIR) + AC_SUBST(TCL_LIB_FILE) + AC_SUBST(TCL_LIBS) + AC_SUBST(TCL_DEFS) + AC_SUBST(TCL_SHLIB_LD_LIBS) + AC_SUBST(TCL_EXTRA_CFLAGS) + AC_SUBST(TCL_LD_FLAGS) + AC_SUBST(TCL_LIB_FILE) + AC_SUBST(TCL_STUB_LIB_FILE) + AC_SUBST(TCL_LIB_SPEC) + AC_SUBST(TCL_BUILD_LIB_SPEC) + AC_SUBST(TCL_STUB_LIB_SPEC) + AC_SUBST(TCL_BUILD_STUB_LIB_SPEC) +]) + +#------------------------------------------------------------------------ +# SC_LOAD_TKCONFIG -- +# +# Load the tkConfig.sh file +# +# Arguments: +# +# Requires the following vars to be set: +# TK_BIN_DIR +# +# Results: +# +# Sets the following vars that should be in tkConfig.sh: +# TK_BIN_DIR +#------------------------------------------------------------------------ + +AC_DEFUN(SC_LOAD_TKCONFIG, [ + AC_MSG_CHECKING([for existence of $TK_BIN_DIR/tkConfig.sh]) + + if test -f "$TK_BIN_DIR/tkConfig.sh" ; then + AC_MSG_RESULT([loading]) + . $TK_BIN_DIR/tkConfig.sh + else + AC_MSG_RESULT([could not find $TK_BIN_DIR/tkConfig.sh]) + fi + + AC_SUBST(TK_BIN_DIR) + AC_SUBST(TK_SRC_DIR) + AC_SUBST(TK_LIB_FILE) + AC_SUBST(TK_XINCLUDES) +]) + +#------------------------------------------------------------------------ +# SC_ENABLE_GCC -- +# +# Allows the use of GCC if available +# +# Arguments: +# none +# +# Results: +# +# Adds the following arguments to configure: +# --enable-gcc +# +# Sets the following vars: +# CC Command to use for the compiler +#------------------------------------------------------------------------ + +AC_DEFUN(SC_ENABLE_GCC, [ + AC_ARG_ENABLE(gcc, [ --enable-gcc allow use of gcc if available [--disable-gcc]], + [ok=$enableval], [ok=no]) + if test "$ok" = "yes"; then + CC=gcc + else + case "`uname -s`" in + *win32* | *WIN32* | *CYGWIN_NT* | *CYGWIN_98* | *CYGWIN_95*) + CC=cl + ;; + *) + CC=${CC-cc} + ;; + esac + fi + AC_PROG_CC +]) + +#------------------------------------------------------------------------ +# SC_ENABLE_SHARED -- +# +# Allows the building of shared libraries +# +# Arguments: +# none +# +# Results: +# +# Adds the following arguments to configure: +# --enable-shared=yes|no +# +# Defines the following vars: +# STATIC_BUILD Used for building import/export libraries +# on Windows. +# +# Sets the following vars: +# SHARED_BUILD Value of 1 or 0 +#------------------------------------------------------------------------ + +AC_DEFUN(SC_ENABLE_SHARED, [ + AC_MSG_CHECKING([how to build libraries]) + AC_ARG_ENABLE(shared, + [ --enable-shared build and link with shared libraries [--enable-shared]], + [tcl_ok=$enableval], [tcl_ok=yes]) + + if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + tcl_ok=$enableval + else + tcl_ok=yes + fi + + if test "$tcl_ok" = "yes" ; then + AC_MSG_RESULT([shared]) + SHARED_BUILD=1 + else + AC_MSG_RESULT([static]) + SHARED_BUILD=0 + AC_DEFINE(STATIC_BUILD) + fi +]) + +#------------------------------------------------------------------------ +# SC_ENABLE_THREADS -- +# +# Specify if thread support should be enabled +# +# Arguments: +# none +# +# Results: +# +# Adds the following arguments to configure: +# --enable-threads +# +# Sets the following vars: +# THREADS_LIBS Thread library(s) +# +# Defines the following vars: +# TCL_THREADS +# _REENTRANT +# +#------------------------------------------------------------------------ + +AC_DEFUN(SC_ENABLE_THREADS, [ + AC_MSG_CHECKING(for building with threads) + AC_ARG_ENABLE(threads, [ --enable-threads build with threads], + [tcl_ok=$enableval], [tcl_ok=no]) + + if test "$tcl_ok" = "yes"; then + TCL_THREADS=1 + AC_DEFINE(TCL_THREADS) + AC_DEFINE(_REENTRANT) + + case "`uname -s`" in + *win32* | *WIN32* | *CYGWIN_NT* | *CYGWIN_98* | *CYGWIN_95*) + AC_MSG_RESULT(yes) + ;; + *) + AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no) + if test "$tcl_ok" = "yes"; then + # The space is needed + THREADS_LIBS=" -lpthread" + AC_MSG_RESULT(yes) + else + TCL_THREADS=0 + AC_MSG_RESULT(no) + AC_MSG_WARN("Don t know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile...") + fi + ;; + esac + else + TCL_THREADS=0 + AC_MSG_RESULT(no (default)) + fi + +]) + +#------------------------------------------------------------------------ +# SC_ENABLE_SYMBOLS -- +# +# Specify if debugging symbols should be used +# +# Arguments: +# none +# +# Requires the following vars to be set: +# CFLAGS_DEBUG +# CFLAGS_OPTIMIZE +# LDFLAGS_DEBUG +# LDFLAGS_OPTIMIZE +# +# Results: +# +# Adds the following arguments to configure: +# --enable-symbols +# +# Defines the following vars: +# CFLAGS_DEFAULT Sets to CFLAGS_DEBUG if true +# Sets to CFLAGS_OPTIMIZE if false +# LDFLAGS_DEFAULT Sets to LDFLAGS_DEBUG if true +# Sets to LDFLAGS_OPTIMIZE if false +# DBGX Debug library extension +# +#------------------------------------------------------------------------ + +AC_DEFUN(SC_ENABLE_SYMBOLS, [ + case "`uname -s`" in + *win32* | *WIN32* | *CYGWIN_NT* | *CYGWIN_98* | *CYGWIN_95*) + tcl_dbgx=d + ;; + *) + tcl_dbgx=g + ;; + esac + + AC_MSG_CHECKING([for build with symbols]) + AC_ARG_ENABLE(symbols, [ --enable-symbols build with debugging symbols [--disable-symbols]], [tcl_ok=$enableval], [tcl_ok=no]) + if test "$tcl_ok" = "yes"; then + CFLAGS_DEFAULT="${CFLAGS_DEBUG}" + LDFLAGS_DEFAULT="${LDFLAGS_DEBUG}" + DBGX=${tcl_dbgx} + TCL_DBGX=${tcl_dbgx} + AC_MSG_RESULT([yes]) + else + CFLAGS_DEFAULT="${CFLAGS_OPTIMIZE}" + LDFLAGS_DEFAULT="${LDFLAGS_OPTIMIZE}" + DBGX="" + TCL_DBGX="" + AC_MSG_RESULT([no]) + fi + + AC_SUBST(TCL_DBGX) + AC_SUBST(CFLAGS_DEFAULT) + AC_SUBST(LDFLAGS_DEFAULT) +]) + +#-------------------------------------------------------------------- +# SC_CONFIG_CFLAGS +# +# Try to determine the proper flags to pass to the compiler +# for building shared libraries and other such nonsense. +# +# Arguments: +# none +# +# Results: +# +# Defines the following vars: +# +# DL_OBJS - Name of the object file that implements dynamic +# loading for Tcl on this system. +# DL_LIBS - Library file(s) to include in tclsh and other base +# applications in order for the "load" command to work. +# LDFLAGS - Flags to pass to the compiler when linking object +# files into an executable application binary such +# as tclsh. +# LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib", +# that tell the run-time dynamic linker where to look +# for shared libraries such as libtcl.so. Depends on +# the variable LIB_RUNTIME_DIR in the Makefile. +# MAKE_LIB - Command to execute to build the Tcl library; +# differs depending on whether or not Tcl is being +# compiled as a shared library. +# SHLIB_CFLAGS - Flags to pass to cc when compiling the components +# of a shared library (may request position-independent +# code, among other things). +# SHLIB_LD - Base command to use for combining object files +# into a shared library. +# SHLIB_LD_LIBS - Dependent libraries for the linker to scan when +# creating shared libraries. This symbol typically +# goes at the end of the "ld" commands that build +# shared libraries. The value of the symbol is +# "${LIBS}" if all of the dependent libraries should +# be specified when creating a shared library. If +# dependent libraries should not be specified (as on +# SunOS 4.x, where they cause the link to fail, or in +# general if Tcl and Tk aren't themselves shared +# libraries), then this symbol has an empty string +# as its value. +# SHLIB_SUFFIX - Suffix to use for the names of dynamically loadable +# extensions. An empty string means we don't know how +# to use shared libraries on this platform. +# TCL_LIB_FILE - Name of the file that contains the Tcl library, such +# as libtcl7.8.so or libtcl7.8.a. +# TCL_LIB_SUFFIX -Specifies everything that comes after the "libtcl" +# in the shared library name, using the $VERSION variable +# to put the version in the right place. This is used +# by platforms that need non-standard library names. +# Examples: ${VERSION}.so.1.1 on NetBSD, since it needs +# to have a version after the .so, and ${VERSION}.a +# on AIX, since the Tcl shared library needs to have +# a .a extension whereas shared objects for loadable +# extensions have a .so extension. Defaults to +# ${VERSION}${SHLIB_SUFFIX}. +# TCL_NEEDS_EXP_FILE - +# 1 means that an export file is needed to link to a +# shared library. +# TCL_EXP_FILE - The name of the installed export / import file which +# should be used to link to the Tcl shared library. +# Empty if Tcl is unshared. +# TCL_BUILD_EXP_FILE - +# The name of the built export / import file which +# should be used to link to the Tcl shared library. +# Empty if Tcl is unshared. +# CFLAGS_DEBUG - +# Flags used when running the compiler in debug mode +# CFLAGS_OPTIMIZE - +# Flags used when running the compiler in optimize mode +# +# EXTRA_CFLAGS +# +# Subst's the following vars: +# DL_LIBS +# CFLAGS_DEBUG +# CFLAGS_OPTIMIZE +#-------------------------------------------------------------------- + +AC_DEFUN(SC_CONFIG_CFLAGS, [ + + # Step 0: Enable 64 bit support? + + AC_MSG_CHECKING([if 64bit support is enabled]) + AC_ARG_ENABLE(64bit,[ --enable-64bit enable 64bit support],,enableval="no") + + if test "$enableval" = "yes"; then + AC_MSG_RESULT(Will compile with 64bit support) + do64bit=yes + else + do64bit=no + fi + AC_MSG_RESULT($do64bit) + + # Step 1: set the variable "system" to hold the name and version number + # for the system. This can usually be done via the "uname" command, but + # there are a few systems, like Next, where this doesn't work. + + AC_MSG_CHECKING([system version (for dynamic loading)]) + if test -f /usr/lib/NextStep/software_version; then + system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` + else + system=`uname -s`-`uname -r` + if test "$?" -ne 0 ; then + AC_MSG_RESULT([unknown (can't find uname command)]) + system=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 + system=MP-RAS-`awk '{print $3}' /etc/.relid'` + fi + if test "`uname -s`" = "AIX" ; then + system=AIX-`uname -v`.`uname -r` + fi + AC_MSG_RESULT($system) + fi + fi + + # Step 2: check for existence of -ldl library. This is needed because + # Linux can use either -ldl or -ldld for dynamic loading. + + AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no) + + # Step 3: set configuration options based on system name and version. + + do64bit_ok=no + fullSrcDir=`cd $srcdir; pwd` + EXTRA_CFLAGS="" + TCL_EXPORT_FILE_SUFFIX="" + UNSHARED_LIB_SUFFIX="" + TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`' + ECHO_VERSION='`echo ${VERSION}`' + TCL_LIB_VERSIONS_OK=ok + CFLAGS_DEBUG=-g + CFLAGS_OPTIMIZE=-O + TCL_NEEDS_EXP_FILE=0 + TCL_BUILD_EXP_FILE="" + TCL_EXP_FILE="" + STLIB_LD="ar cr" + case $system in + AIX-4.[[2-9]]) + SHLIB_CFLAGS="" + SHLIB_LD="$fullSrcDir/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + LDFLAGS="" + LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + TCL_NEEDS_EXP_FILE=1 + TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' + ;; + AIX-*) + SHLIB_CFLAGS="" + SHLIB_LD="$fullSrcDir/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + LIBOBJS="$LIBOBJS tclLoadAix.o" + DL_LIBS="-lld" + LDFLAGS="" + LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + TCL_NEEDS_EXP_FILE=1 + TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' + ;; + 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" + LDFLAGS="" + 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="-export-dynamic" + LD_SEARCH_FLAGS="" + ;; + *win32*|*WIN32*|CYGWIN_NT*|cygwin_nt*|*CYGWIN_98*|*CYGWIN_95*) + CFLAGS_DEBUG="-nologo -Z7 -Od -WX ${runtime}d" + CFLAGS_OPTIMIZE="-nologo -Oti -Gs -GD ${runtime}" + LDFLAGS_CONSOLE="-subsystem:console" + LDFLAGS_WINDOW="-subsystem:windows" + LDFLAGS_DEBUG="-debug:full -debugtype:cv" + LDFLAGS_OPTIMIZE="-release" + EXTRA_CFLAGS="-YX" + PATHTYPE=-w + STLIB_LD="lib -nologo" + SHLIB_LD="link -dll -nologo" + SHLIB_LD_LIBS="user32.lib advapi32.lib" + RC="rc" + ;; + dgux*) + SHLIB_CFLAGS="-K PIC" + SHLIB_LD="cc -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + LDFLAGS="" + LD_SEARCH_FLAGS="" + ;; + HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*|HP-UX-*.11.*) + SHLIB_SUFFIX=".sl" + AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no) + if test "$tcl_ok" = yes; then + SHLIB_CFLAGS="+z" + SHLIB_LD="ld -b" + SHLIB_LD_LIBS="" + DL_OBJS="tclLoadShl.o" + DL_LIBS="-ldld" + LDFLAGS="-Wl,-E" + LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' + fi + ;; + IRIX-4.*) + SHLIB_CFLAGS="-G 0" + SHLIB_SUFFIX=".a" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" + SHLIB_LD_LIBS='${LIBS}' + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + LDFLAGS="-Wl,-D,08000000" + LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' + ;; + IRIX-5.*|IRIX-6.*|IRIX64-6.5*) + SHLIB_CFLAGS="" + SHLIB_LD="ld -n32 -shared -rdata_shared" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + if test "$CC" = "gcc" -o `$CC -v 2>&1 | grep -c gcc` != "0" ; then + EXTRA_CFLAGS="-mabi=n32" + LDFLAGS="-mabi=n32" + else + case $system in + IRIX-6.3) + # Use to build 6.2 compatible binaries on 6.3. + EXTRA_CFLAGS="-n32 -D_OLD_TERMIOS" + ;; + *) + EXTRA_CFLAGS="-n32" + ;; + esac + LDFLAGS="-n32" + fi + ;; + IRIX64-6.*) + SHLIB_CFLAGS="" + SHLIB_LD="ld -32 -shared -rdata_shared" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + LDFLAGS="" + LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + ;; + Linux*) + SHLIB_CFLAGS="-fPIC" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + + # 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" + + if test "$have_dl" = yes; then + SHLIB_LD="${CC} -shared" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + LDFLAGS="-rdynamic" + LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + else + AC_CHECK_HEADER(dld.h, [ + SHLIB_LD="ld -shared" + DL_OBJS="tclLoadDld.o" + DL_LIBS="-ldld" + LDFLAGS="" + LD_SEARCH_FLAGS=""]) + fi + if test "`uname -m`" = "alpha" ; then + EXTRA_CFLAGS="-mieee" + fi + ;; + MP-RAS-02*) + SHLIB_CFLAGS="-K PIC" + SHLIB_LD="cc -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + LDFLAGS="" + 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="-Wl,-Bexport" + LD_SEARCH_FLAGS="" + ;; + NetBSD-*|FreeBSD-[[12]].*|OpenBSD-*) + # Not available on all versions: check for include file. + AC_CHECK_HEADER(dlfcn.h, [ + SHLIB_CFLAGS="-fpic" + SHLIB_LD="ld -Bshareable -x" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + LDFLAGS="" + LD_SEARCH_FLAGS="" + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' + ], [ + SHLIB_CFLAGS="" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".a" + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + LDFLAGS="" + LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + ]) + + # FreeBSD doesn't handle version numbers with dots. + + UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + TCL_LIB_VERSIONS_OK=nodots + ;; + FreeBSD-*) + # FreeBSD 3.* and greater have ELF. + SHLIB_CFLAGS="-fpic" + SHLIB_LD="ld -Bshareable -x" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + LDFLAGS="" + LD_SEARCH_FLAGS="" + ;; + NEXTSTEP-*) + SHLIB_CFLAGS="" + SHLIB_LD="cc -nostdlib -r" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadNext.o" + DL_LIBS="" + LDFLAGS="" + LD_SEARCH_FLAGS="" + ;; + OS/390-*) + CFLAGS_OPTIMIZE="" # Optimizer is buggy + AC_DEFINE(_OE_SOCKETS) # needed in sys/socket.h + ;; + 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="" + LDFLAGS="" + LD_SEARCH_FLAGS="" + ;; + OSF1-1.*) + # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 + SHLIB_CFLAGS="-fpic" + SHLIB_LD="ld -shared" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + LDFLAGS="" + LD_SEARCH_FLAGS="" + ;; + OSF1-V*) + # Digital OSF/1 + SHLIB_CFLAGS="" + SHLIB_LD='ld -shared -expect_unresolved "*"' + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + LDFLAGS="" + LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + ;; + RISCos-*) + SHLIB_CFLAGS="-G 0" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".a" + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + LDFLAGS="-Wl,-D,08000000" + LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + ;; + 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. + SHLIB_CFLAGS="-Kpic -belf" + SHLIB_LD="ld -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + LDFLAGS="-belf -Wl,-Bexport" + 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" + LDFLAGS="" + LD_SEARCH_FLAGS="" + ;; + SunOS-4*) + SHLIB_CFLAGS="-PIC" + SHLIB_LD="ld" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + LDFLAGS="" + LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + + # 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}\$\{DBGX\}.so.1.0' + UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + TCL_LIB_VERSIONS_OK=nodots + ;; + SunOS-5.[[0-6]]*) + SHLIB_CFLAGS="-KPIC" + SHLIB_LD="/usr/ccs/bin/ld -G -z text" + + # 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" + LDFLAGS="" + LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + ;; + SunOS-5*) + SHLIB_CFLAGS="-KPIC" + SHLIB_LD="/usr/ccs/bin/ld -G -z text" + LDFLAGS="" + + do64bit_ok=no + if test "$do64bit" = "yes" ; then + arch=`isainfo` + if test "$arch" = "sparcv9 sparc" ; then + if test "$CC" != "gcc" -a `$CC -v 2>&1 | grep -c gcc` = "0" ; then + do64bit_ok=yes + EXTRA_CFLAGS="-xarch=v9" + LDFLAGS="-xarch=v9" + else + AC_MSG_WARN("64bit mode not supported using GCC on $system") + fi + else + AC_MSG_WARN("64bit mode only supported sparcv9 system") + 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 "$CC" = "gcc" -o `$CC -v 2>&1 | grep -c gcc` != "0" ; then + LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + else + LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' + fi + ;; + ULTRIX-4.*) + SHLIB_CFLAGS="-G 0" + SHLIB_SUFFIX=".a" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" + SHLIB_LD_LIBS='${LIBS}' + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + LDFLAGS="-Wl,-D,08000000" + LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + ;; + 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. + hold_ldflags=$LDFLAGS + AC_MSG_CHECKING(for ld accepts -Bexport flag) + LDFLAGS="${LDFLAGS} -Wl,-Bexport" + AC_TRY_LINK(, [int i;], found=yes, found=no) + LDFLAGS=$hold_ldflags + AC_MSG_RESULT($found) + if test $found = yes; then + LDFLAGS="-Wl,-Bexport" + else + LDFLAGS="" + fi + LD_SEARCH_FLAGS="" + ;; + esac + + if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then + AC_MSG_WARN("64bit support being disabled -- not supported on this platform") + fi + + # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic + # Loading for Tcl -- What Became of It?". Proc. 2nd Tcl/Tk Workshop, + # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need + # to determine which of several header files defines the a.out file + # format (a.out.h, sys/exec.h, or sys/exec_aout.h). At present, we + # support only a file format that is more or less version-7-compatible. + # In particular, + # - a.out files must begin with `struct exec'. + # - the N_TXTOFF on the `struct exec' must compute the seek address + # of the text segment + # - The `struct exec' must contain a_magic, a_text, a_data, a_bss + # and a_entry fields. + # The following compilation should succeed if and only if either sys/exec.h + # or a.out.h is usable for the purpose. + # + # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the + # `struct exec' includes a second header that contains information that + # duplicates the v7 fields that are needed. + + if test "x$DL_OBJS" = "xtclLoadAout.o" ; then + AC_MSG_CHECKING(sys/exec.h) + AC_TRY_COMPILE([#include ],[ + struct exec foo; + unsigned long seek; + int flag; +#if defined(__mips) || defined(mips) + seek = N_TXTOFF (foo.ex_f, foo.ex_o); +#else + seek = N_TXTOFF (foo); +#endif + flag = (foo.a_magic == OMAGIC); + return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; + ], tcl_ok=usable, tcl_ok=unusable) + AC_MSG_RESULT($tcl_ok) + if test $tcl_ok = usable; then + AC_DEFINE(USE_SYS_EXEC_H) + else + AC_MSG_CHECKING(a.out.h) + AC_TRY_COMPILE([#include ],[ + struct exec foo; + unsigned long seek; + int flag; +#if defined(__mips) || defined(mips) + seek = N_TXTOFF (foo.ex_f, foo.ex_o); +#else + seek = N_TXTOFF (foo); +#endif + flag = (foo.a_magic == OMAGIC); + return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; + ], tcl_ok=usable, tcl_ok=unusable) + AC_MSG_RESULT($tcl_ok) + if test $tcl_ok = usable; then + AC_DEFINE(USE_A_OUT_H) + else + AC_MSG_CHECKING(sys/exec_aout.h) + AC_TRY_COMPILE([#include ],[ + struct exec foo; + unsigned long seek; + int flag; +#if defined(__mips) || defined(mips) + seek = N_TXTOFF (foo.ex_f, foo.ex_o); +#else + seek = N_TXTOFF (foo); +#endif + flag = (foo.a_midmag == OMAGIC); + return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; + ], tcl_ok=usable, tcl_ok=unusable) + AC_MSG_RESULT($tcl_ok) + if test $tcl_ok = usable; then + AC_DEFINE(USE_SYS_EXEC_AOUT_H) + else + DL_OBJS="" + fi + fi + fi + fi + + # Step 5: disable dynamic loading if requested via a command-line switch. + + AC_ARG_ENABLE(load, [ --disable-load disallow dynamic loading and "load" command], + [tcl_ok=$enableval], [tcl_ok=yes]) + 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="" + LD_SEARCH_FLAGS="" + BUILD_DLTEST="" + fi + + # 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 "$CC" = "gcc" -o `$CC -v 2>&1 | grep -c gcc` != "0" ; then + case $system in + AIX-*) + ;; + BSD/OS*) + ;; + IRIX*) + ;; + NetBSD-*|FreeBSD-*|OpenBSD-*) + ;; + RISCos-*) + ;; + ULTRIX-4.*) + ;; + *) + SHLIB_CFLAGS="-fPIC" + ;; + esac + fi + fi + + if test "$SHARED_LIB_SUFFIX" = "" ; then + SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}${SHLIB_SUFFIX}' + fi + if test "$UNSHARED_LIB_SUFFIX" = "" ; then + UNSHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' + fi + + AC_SUBST(STLIB_LD) + AC_SUBST(SHLIB_LD) + AC_SUBST(SHLIB_CFLAGS) + AC_SUBST(SHLIB_LDFLAGS) + AC_SUBST(DL_LIBS) + AC_SUBST(CFLAGS_DEBUG) + AC_SUBST(CFLAGS_OPTIMIZE) + AC_SUBST(LDFLAGS_DEBUG) + AC_SUBST(LDFLAGS_OPTIMIZE) +]) + +#-------------------------------------------------------------------- +# SC_SERIAL_PORT +# +# Determine which interface to use to talk to the serial port. +# Note that #include lines must begin in leftmost column for +# some compilers to recognize them as preprocessor directives. +# +# Arguments: +# none +# +# Results: +# +# Defines only one of the following vars: +# USE_TERMIOS +# USE_TERMIO +# USE_SGTTY +# +#-------------------------------------------------------------------- + +AC_DEFUN(SC_SERIAL_PORT, [ + AC_MSG_CHECKING([termios vs. termio vs. sgtty]) + + AC_TRY_RUN([ +#include + +main() +{ + struct termios t; + if (tcgetattr(0, &t) == 0) { + cfsetospeed(&t, 0); + t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB; + return 0; + } + return 1; +}], tk_ok=termios, tk_ok=no, tk_ok=no) + + if test $tk_ok = termios; then + AC_DEFINE(USE_TERMIOS) + else + AC_TRY_RUN([ +#include + +main() +{ + struct termio t; + if (ioctl(0, TCGETA, &t) == 0) { + t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB; + return 0; + } + return 1; + }], tk_ok=termio, tk_ok=no, tk_ok=no) + + if test $tk_ok = termio; then + AC_DEFINE(USE_TERMIO) + else + AC_TRY_RUN([ +#include + +main() +{ + struct sgttyb t; + if (ioctl(0, TIOCGETP, &t) == 0) { + t.sg_ospeed = 0; + t.sg_flags |= ODDP | EVENP | RAW; + return 0; + } + return 1; +}], tk_ok=sgtty, tk_ok=none, tk_ok=none) + if test $tk_ok = sgtty; then + AC_DEFINE(USE_SGTTY) + fi + fi + fi + AC_MSG_RESULT($tk_ok) +]) + +#-------------------------------------------------------------------- +# SC_MISSING_POSIX_HEADERS +# +# Supply substitutes for missing POSIX header files. Special +# notes: +# - stdlib.h doesn't define strtol, strtoul, or +# strtod insome versions of SunOS +# - some versions of string.h don't declare procedures such +# as strstr +# +# Arguments: +# none +# +# Results: +# +# Defines some of the following vars: +# NO_DIRENT_H +# NO_ERRNO_H +# NO_VALUES_H +# NO_LIMITS_H +# NO_STDLIB_H +# NO_STRING_H +# NO_SYS_WAIT_H +# NO_DLFCN_H +# HAVE_UNISTD_H +# HAVE_SYS_PARAM_H +# +# HAVE_STRING_H ? +# +#-------------------------------------------------------------------- + +AC_DEFUN(SC_MISSING_POSIX_HEADERS, [ + + AC_MSG_CHECKING(dirent.h) + AC_TRY_LINK([#include +#include ], [ +#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); +], tcl_ok=yes, tcl_ok=no) + + if test $tcl_ok = no; then + AC_DEFINE(NO_DIRENT_H) + fi + + AC_MSG_RESULT($tcl_ok) + AC_CHECK_HEADER(errno.h, , AC_DEFINE(NO_ERRNO_H)) + AC_CHECK_HEADER(float.h, , AC_DEFINE(NO_FLOAT_H)) + AC_CHECK_HEADER(values.h, , AC_DEFINE(NO_VALUES_H)) + AC_CHECK_HEADER(limits.h, , AC_DEFINE(NO_LIMITS_H)) + AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0) + AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0) + AC_EGREP_HEADER(strtoul, stdlib.h, , tcl_ok=0) + AC_EGREP_HEADER(strtod, stdlib.h, , tcl_ok=0) + if test $tcl_ok = 0; then + AC_DEFINE(NO_STDLIB_H) + fi + AC_CHECK_HEADER(string.h, tcl_ok=1, tcl_ok=0) + AC_EGREP_HEADER(strstr, string.h, , tcl_ok=0) + AC_EGREP_HEADER(strerror, string.h, , tcl_ok=0) + + # See also memmove check below for a place where NO_STRING_H can be + # set and why. + + if test $tcl_ok = 0; then + AC_DEFINE(NO_STRING_H) + fi + + AC_CHECK_HEADER(sys/wait.h, , AC_DEFINE(NO_SYS_WAIT_H)) + AC_CHECK_HEADER(dlfcn.h, , AC_DEFINE(NO_DLFCN_H)) + + # OS/390 lacks sys/param.h (and doesn't need it, by chance). + + AC_HAVE_HEADERS(unistd.h sys/param.h) + +]) + +#-------------------------------------------------------------------- +# SC_PATH_X +# +# Locate the X11 header files and the X11 library archive. Try +# the ac_path_x macro first, but if it doesn't find the X stuff +# (e.g. because there's no xmkmf program) then check through +# a list of possible directories. Under some conditions the +# autoconf macro will return an include directory that contains +# no include files, so double-check its result just to be safe. +# +# Arguments: +# none +# +# Results: +# +# Sets the the following vars: +# XINCLUDES +# XLIBSW +# +#-------------------------------------------------------------------- + +AC_DEFUN(SC_PATH_X, [ + AC_PATH_X + not_really_there="" + if test "$no_x" = ""; then + if test "$x_includes" = ""; then + AC_TRY_CPP([#include ], , not_really_there="yes") + 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 + AC_MSG_CHECKING(for X11 header files) + XINCLUDES="# no special path needed" + AC_TRY_CPP([#include ], , XINCLUDES="nope") + if test "$XINCLUDES" = nope; 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 + AC_MSG_RESULT($i) + XINCLUDES=" -I$i" + break + fi + done + fi + else + if test "$x_includes" != ""; then + XINCLUDES=-I$x_includes + else + XINCLUDES="# no special path needed" + fi + fi + if test "$XINCLUDES" = nope; then + AC_MSG_RESULT(couldn't find any!) + XINCLUDES="# no include files found" + fi + + if test "$no_x" = yes; then + AC_MSG_CHECKING(for X11 libraries) + 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 + AC_MSG_RESULT($i) + 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 + AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow) + fi + if test "$XLIBSW" = nope ; then + AC_MSG_RESULT(couldn't find any! Using -lX11.) + XLIBSW=-lX11 + fi +]) +#-------------------------------------------------------------------- +# SC_BLOCKING_STYLE +# +# The statements below check for systems where POSIX-style +# non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. +# On these systems (mostly older ones), use the old BSD-style +# FIONBIO approach instead. +# +# Arguments: +# none +# +# Results: +# +# Defines some of the following vars: +# HAVE_SYS_IOCTL_H +# HAVE_SYS_FILIO_H +# USE_FIONBIO +# O_NONBLOCK +# +#-------------------------------------------------------------------- + +AC_DEFUN(SC_BLOCKING_STYLE, [ + AC_CHECK_HEADERS(sys/ioctl.h) + AC_CHECK_HEADERS(sys/filio.h) + AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O]) + if test -f /usr/lib/NextStep/software_version; then + system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` + else + system=`uname -s`-`uname -r` + if test "$?" -ne 0 ; then + system=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 + system=MP-RAS-`awk '{print $3}' /etc/.relid'` + fi + if test "`uname -s`" = "AIX" ; then + system=AIX-`uname -v`.`uname -r` + fi + fi + fi + case $system in + # There used to be code here to use FIONBIO under AIX. However, it + # was reported that FIONBIO doesn't work under AIX 3.2.5. Since + # using O_NONBLOCK seems fine under AIX 4.*, I removed the FIONBIO + # code (JO, 5/31/97). + + OSF*) + AC_DEFINE(USE_FIONBIO) + AC_MSG_RESULT(FIONBIO) + ;; + SunOS-4*) + AC_DEFINE(USE_FIONBIO) + AC_MSG_RESULT(FIONBIO) + ;; + ULTRIX-4.*) + AC_DEFINE(USE_FIONBIO) + AC_MSG_RESULT(FIONBIO) + ;; + *) + AC_MSG_RESULT(O_NONBLOCK) + ;; + esac +]) + +#-------------------------------------------------------------------- +# SC_HAVE_VFORK +# +# Check to see whether the system provides a vfork kernel call. +# If not, then use fork instead. Also, check for a problem with +# vforks and signals that can cause core dumps if a vforked child +# resets a signal handler. If the problem exists, then use fork +# instead of vfork. +# +# Arguments: +# none +# +# Results: +# +# Defines some of the following vars: +# vfork (=fork) +# +#-------------------------------------------------------------------- + +AC_DEFUN(SC_HAVE_VFORK, [ + AC_TYPE_SIGNAL() + AC_CHECK_FUNC(vfork, tcl_ok=1, tcl_ok=0) + if test "$tcl_ok" = 1; then + AC_MSG_CHECKING([vfork/signal bug]); + AC_TRY_RUN([ +#include +#include +#include +int gotSignal = 0; +sigProc(sig) + int sig; +{ + gotSignal = 1; +} +main() +{ + int pid, sts; + (void) signal(SIGCHLD, sigProc); + pid = vfork(); + if (pid < 0) { + exit(1); + } else if (pid == 0) { + (void) signal(SIGCHLD, SIG_DFL); + _exit(0); + } else { + (void) wait(&sts); + } + exit((gotSignal) ? 0 : 1); +}], tcl_ok=1, tcl_ok=0, tcl_ok=0) + + if test "$tcl_ok" = 1; then + AC_MSG_RESULT(ok) + else + AC_MSG_RESULT([buggy, using fork instead]) + fi + fi + rm -f core + if test "$tcl_ok" = 0; then + AC_DEFINE(vfork, fork) + fi +]) + +#-------------------------------------------------------------------- +# SC_TIME_HANLDER +# +# Checks how the system deals with time.h, what time structures +# are used on the system, and what fields the structures have. +# +# Arguments: +# none +# +# Results: +# +# Defines some of the following vars: +# USE_DELTA_FOR_TZ +# HAVE_TM_GMTOFF +# HAVE_TM_TZADJ +# HAVE_TIMEZONE_VAR +# +#-------------------------------------------------------------------- + +AC_DEFUN(SC_TIME_HANDLER, [ + AC_CHECK_HEADERS(sys/time.h) + AC_HEADER_TIME + AC_STRUCT_TIMEZONE + + AC_MSG_CHECKING([tm_tzadj in struct tm]) + AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_tzadj;], + [AC_DEFINE(HAVE_TM_TZADJ) + AC_MSG_RESULT(yes)], + AC_MSG_RESULT(no)) + + AC_MSG_CHECKING([tm_gmtoff in struct tm]) + AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_gmtoff;], + [AC_DEFINE(HAVE_TM_GMTOFF) + AC_MSG_RESULT(yes)], + AC_MSG_RESULT(no)) + + # + # Its important to include time.h in this check, as some systems + # (like convex) have timezone functions, etc. + # + have_timezone=no + AC_MSG_CHECKING([long timezone variable]) + AC_TRY_COMPILE([#include ], + [extern long timezone; + timezone += 1; + exit (0);], + [have_timezone=yes + AC_DEFINE(HAVE_TIMEZONE_VAR) + AC_MSG_RESULT(yes)], + AC_MSG_RESULT(no)) + + # + # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. + # + if test "$have_timezone" = no; then + AC_MSG_CHECKING([time_t timezone variable]) + AC_TRY_COMPILE([#include ], + [extern time_t timezone; + timezone += 1; + exit (0);], + [AC_DEFINE(HAVE_TIMEZONE_VAR) + AC_MSG_RESULT(yes)], + AC_MSG_RESULT(no)) + fi + + # + # 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. + # + + if test "`uname -s`" = "AIX" ; then + AC_CHECK_LIB(bsd, gettimeofday, libbsd=yes) + if test $libbsd = yes; then + AC_DEFINE(USE_DELTA_FOR_TZ) + fi + fi +]) + +#-------------------------------------------------------------------- +# SC_BUGGY_STRTOD +# +# Under Solaris 2.4, strtod returns the wrong value for the +# terminating character under some conditions. Check for this +# and if the problem exists use a substitute procedure +# "fixstrtod" (provided by Tcl) that corrects the error. +# +# Arguments: +# none +# +# Results: +# +# Might defines some of the following vars: +# strtod (=fixstrtod) +# +#-------------------------------------------------------------------- + +AC_DEFUN(SC_BUGGY_STRTOD, [ + AC_CHECK_FUNC(strtod, tk_strtod=1, tk_strtod=0) + if test "$tk_strtod" = 1; then + AC_MSG_CHECKING([for Solaris 2.4 strtod bug]) + AC_TRY_RUN([ + extern double strtod(); + int main() + { + char *string = "NaN"; + char *term; + strtod(string, &term); + if ((term != string) && (term[-1] == 0)) { + exit(1); + } + exit(0); + }], tk_ok=1, tk_ok=0, tk_ok=0) + if test "$tk_ok" = 1; then + AC_MSG_RESULT(ok) + else + AC_MSG_RESULT(buggy) + AC_DEFINE(strtod, fixstrtod) + fi + fi +]) + +#-------------------------------------------------------------------- +# SC_TCL_LINK_LIBS +# +# Search for the libraries needed to link the Tcl shell. +# Things like the math library (-lm) and socket stuff (-lsocket vs. +# -lnsl) are dealt with here. +# +# Arguments: +# Requires the following vars to be set in the Makefile: +# DL_LIBS +# LIBS +# MATH_LIBS +# +# Results: +# +# Subst's the following var: +# TCL_LIBS +# MATH_LIBS +# +# Might append to the following vars: +# LIBS +# +# Might define the following vars: +# HAVE_NET_ERRNO_H +# +#-------------------------------------------------------------------- + +AC_DEFUN(SC_TCL_LINK_LIBS, [ + #-------------------------------------------------------------------- + # 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"). + #-------------------------------------------------------------------- + + AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm") + AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"]) + + #-------------------------------------------------------------------- + # On AIX 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. + #-------------------------------------------------------------------- + + libbsd=no + if test "`uname -s`" = "AIX" ; then + AC_CHECK_LIB(bsd, gettimeofday, libbsd=yes) + if test $libbsd = yes; then + MATH_LIBS="$MATH_LIBS -lbsd" + fi + fi + + + #-------------------------------------------------------------------- + # Interactive UNIX requires -linet instead of -lsocket, plus it + # needs net/errno.h to define the socket-related error codes. + #-------------------------------------------------------------------- + + AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"]) + AC_CHECK_HEADER(net/errno.h, AC_DEFINE(HAVE_NET_ERRNO_H)) + + #-------------------------------------------------------------------- + # 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 + AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1) + if test "$tcl_checkSocket" = 1; then + AC_CHECK_LIB(socket, main, LIBS="$LIBS -lsocket", tcl_checkBoth=1) + fi + if test "$tcl_checkBoth" = 1; then + tk_oldLibs=$LIBS + LIBS="$LIBS -lsocket -lnsl" + AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs]) + fi + AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, main, + [LIBS="$LIBS -lnsl"])) + + # Don't perform the eval of the libraries here because DL_LIBS + # won't be set until we call SC_CONFIG_CFLAGS + + TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}' + AC_SUBST(TCL_LIBS) + AC_SUBST(MATH_LIBS) +]) + +#------------------------------------------------------------------------ +# SC_MAKE_LIB -- +# +# Generate a line that can be used to build a shared/unshared library +# in a platform independent manner. +# +# Arguments: +# none +# +# Requires: +# +# Results: +# +# Defines the following vars: +# MAKE_LIB Makefile rule for building a library +# MAKE_SHARED_LIB Makefile rule for building a shared library +# MAKE_UNSHARED_LIB Makefile rule for building a static +# library +#------------------------------------------------------------------------ + +AC_DEFUN(SC_MAKE_LIB, [ + case "`uname -s`" in + *win32* | *WIN32* | *CYGWIN_NT* |*CYGWIN_98*|*CYGWIN_95*) + if test "${CC-cc}" = "cl"; then + MAKE_STATIC_LIB="\${STLIB_LD} -out:\[$]@ \$(\[$]@_OBJECTS) " + MAKE_SHARED_LIB="\${SHLIB_LD} \${SHLIB_LDFLAGS} \${SHLIB_LD_LIBS} \$(LDFLAGS) -out:\[$]@ \$(\[$]@_OBJECTS) " + fi + ;; + *) + MAKE_STATIC_LIB="\${STLIB_LD} \[$]@ \$(\[$]@_OBJECTS)" + MAKE_SHARED_LIB="\${SHLIB_LD} -o \[$]@ \$(\[$]@_OBJECTS) \${SHLIB_LDFLAGS} \${SHLIB_LD_LIBS}" + ;; + esac + + if test "${SHARED_BUILD}" = "1" ; then + MAKE_LIB=${MAKE_SHARED_LIB} + else + MAKE_LIB=${MAKE_STATIC_LIB} + fi + + AC_SUBST(MAKE_LIB) + AC_SUBST(MAKE_SHARED_LIB) + AC_SUBST(MAKE_STATIC_LIB) +]) + +#------------------------------------------------------------------------ +# SC_LIB_SPEC -- +# +# Compute the name of an existing object library located in libdir +# from the given base name and produce the appropriate linker flags. +# +# Arguments: +# basename The base name of the library without version +# numbers, extensions, or "lib" prefixes. +# extra_dir Extra directory in which to search for the +# library. This location is used first, then +# $prefix/$exec-prefix, then some defaults. +# +# Requires: +# CYGPATH command used to generate native style paths +# +# Results: +# +# Defines the following vars: +# ${basename}_LIB_NAME The computed library name. +# ${basename}_LIB_SPEC The computed linker flags. +#------------------------------------------------------------------------ + +AC_DEFUN(SC_LIB_SPEC, [ + AC_MSG_CHECKING(for $1 library) + + # Look in exec-prefix and prefix for the library. If neither of + # these were specified, look in libdir. It doesn't matter if libdir + # wasn't specified since a search in the unspecified directory will + # fail (NONE/lib) + + if test x"${exec_prefix}" != x"NONE" ; then + sc_lib_name_dir="${exec_prefix}/lib" + elif test x"${prefix}" != "NONE" ; then + sc_lib_name_dir="${prefix}/lib" + else + eval "sc_lib_name_dir=${libdir}" + fi + + if test x"$2" != x ; then + sc_extra_lib_dir=$2 + else + sc_extra_lib_dir=NONE + fi + + for i in \ + `ls -dr ${sc_extra_lib_dir}/$1[[0-9]]*.lib 2>/dev/null ` \ + `ls -dr ${sc_extra_lib_dir}/lib$1[[0-9]]* 2>/dev/null ` \ + `ls -dr ${sc_lib_name_dir}/$1[[0-9]]*.lib 2>/dev/null ` \ + `ls -dr ${sc_lib_name_dir}/lib$1[[0-9]]* 2>/dev/null ` \ + `ls -dr /usr/lib/$1[[0-9]]*.lib 2>/dev/null ` \ + `ls -dr /usr/lib/lib$1[[0-9]]* 2>/dev/null ` \ + `ls -dr /usr/local/lib/$1[[0-9]]*.lib 2>/dev/null ` \ + `ls -dr /usr/local/lib/lib$1[[0-9]]* 2>/dev/null ` ; do + if test -f "$i" ; then + + sc_lib_name_dir=`dirname $i` + $1_LIB_NAME=`basename $i` + $1_LIB_PATH_NAME=$i + break + fi + done + + case "`uname -s`" in + *win32* | *WIN32* | *CYGWIN_NT* |*CYGWIN_98*|*CYGWIN_95*) + $1_LIB_SPEC=\"`${CYGPATH} ${$1_LIB_PATH_NAME}`\" + ;; + *) + # Strip off the leading "lib" and trailing ".a" or ".so" + + sc_lib_name_lib=`echo ${$1_LIB_NAME}|sed -e 's/^lib//' -e 's/\.[[^.]]*$//'` + $1_LIB_SPEC="-L${sc_lib_name_dir} -l${sc_lib_name_lib}" + ;; + esac + if test "x$1_LIB_NAME" = x ; then + AC_MSG_ERROR(not found) + else + AC_MSG_RESULT(${$1_LIB_SPEC}) + fi +]) + +#------------------------------------------------------------------------ +# SC_PRIVATE_TCL_HEADERS -- +# +# Locate the private Tcl include files +# +# Arguments: +# +# Requires: +# TCL_SRC_DIR Assumes that SC_LOAD_TCLCONFIG has +# already been called. +# +# Results: +# +# Substs the following vars: +# 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_BIN_DIR_NATIVE +# TCL_INCLUDES +#------------------------------------------------------------------------ + +AC_DEFUN(SC_PRIVATE_TCL_HEADERS, [ + AC_MSG_CHECKING(for Tcl private include files) + + case "`uname -s`" in + *win32* | *WIN32* | *CYGWIN_NT* |*CYGWIN_98*|*CYGWIN_95*) + TCL_TOP_DIR_NATIVE=\"`${CYGPATH} ${TCL_SRC_DIR}`\" + TCL_GENERIC_DIR_NATIVE=\"`${CYGPATH} ${TCL_SRC_DIR}/generic`\" + TCL_UNIX_DIR_NATIVE=\"`${CYGPATH} ${TCL_SRC_DIR}/unix`\" + TCL_WIN_DIR_NATIVE=\"`${CYGPATH} ${TCL_SRC_DIR}/win`\" + TCL_BMAP_DIR_NATIVE=\"`${CYGPATH} ${TCL_SRC_DIR}/bitmaps`\" + TCL_TOOL_DIR_NATIVE=\"`${CYGPATH} ${TCL_SRC_DIR}/tools`\" + TCL_COMPAT_DIR_NATIVE=\"`${CYGPATH} ${TCL_SRC_DIR}/compat`\" + TCL_PLATFORM_DIR_NATIVE=${TCL_WIN_DIR_NATIVE} + ;; + *) + TCL_TOP_DIR_NATIVE='$(TCL_SRC_DIR)' + TCL_GENERIC_DIR_NATIVE='$(TCL_TOP_DIR_NATIVE)/generic' + TCL_UNIX_DIR_NATIVE='$(TCL_TOP_DIR_NATIVE)/unix' + TCL_WIN_DIR_NATIVE='$(TCL_TOP_DIR_NATIVE)/win' + TCL_BMAP_DIR_NATIVE='$(TCL_TOP_DIR_NATIVE)/bitmaps' + TCL_TOOL_DIR_NATIVE='$(TCL_TOP_DIR_NATIVE)/tools' + TCL_COMPAT_DIR_NATIVE='$(TCL_TOP_DIR_NATIVE)/compat' + TCL_PLATFORM_DIR_NATIVE=${TCL_UNIX_DIR_NATIVE} + ;; + esac + + AC_SUBST(TCL_TOP_DIR_NATIVE) + AC_SUBST(TCL_GENERIC_DIR_NATIVE) + AC_SUBST(TCL_UNIX_DIR_NATIVE) + AC_SUBST(TCL_WIN_DIR_NATIVE) + AC_SUBST(TCL_BMAP_DIR_NATIVE) + AC_SUBST(TCL_TOOL_DIR_NATIVE) + AC_SUBST(TCL_PLATFORM_DIR_NATIVE) + + TCL_INCLUDES="-I${TCL_GENERIC_DIR_NATIVE} -I${TCL_PLATFORM_DIR_NATIVE}" + AC_SUBST(TCL_INCLUDES) + AC_MSG_RESULT(Using srcdir found in tclConfig.sh: ${TCL_SRC_DIR}) +]) + +#------------------------------------------------------------------------ +# SC_PUBLIC_TCL_HEADERS -- +# +# Locate the installed public Tcl header files +# +# Arguments: +# None. +# +# Requires: +# CYGPATH must be set +# +# Results: +# +# Adds a --with-tclinclude switch to configure. +# Result is cached. +# +# Substs the following vars: +# TCL_INCLUDES +#------------------------------------------------------------------------ + +AC_DEFUN(SC_PUBLIC_TCL_HEADERS, [ + AC_MSG_CHECKING(for Tcl public headers) + + AC_ARG_WITH(tclinclude, [ --with-tclinclude directory containing the public Tcl header files.], with_tclinclude=${withval}) + + if test x"${with_tclinclude}" != x ; then + if test -f "${with_tclinclude}/tcl.h" ; then + ac_cv_c_tclh=${with_tclinclude} + else + AC_MSG_ERROR([${with_tclinclude} directory does not contain Tcl public header file tcl.h]) + fi + else + AC_CACHE_VAL(ac_cv_c_tclh, [ + # Use the value from --with-tclinclude, if it was given + + if test x"${with_tclinclude}" != x ; then + ac_cv_c_tclh=${with_tclinclude} + else + # Check in the includedir, if --prefix was specified + + eval "temp_includedir=${includedir}" + for i in \ + `ls -d ${temp_includedir} 2>/dev/null` \ + /usr/local/include /usr/include ; do + if test -f "$i/tcl.h" ; then + ac_cv_c_tclh=$i + break + fi + done + fi + ]) + fi + + # Print a message based on how we determined the include path + + if test x"${ac_cv_c_tclh}" = x ; then + AC_MSG_ERROR(tcl.h not found. Please specify its location with --with-tclinclude) + else + AC_MSG_RESULT(${ac_cv_c_tclh}) + fi + + # Convert to a native path and substitute into the output files. + + INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tclh}` + + TCL_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\" + + AC_SUBST(TCL_INCLUDES) +]) + +#------------------------------------------------------------------------ +# SC_PRIVATE_TK_HEADERS -- +# +# Locate the private Tk include files +# +# Arguments: +# +# Requires: +# TK_SRC_DIR Assumes that SC_LOAD_TKCONFIG has +# already been called. +# +# Results: +# +# Substs the following vars: +# TK_INCLUDES +#------------------------------------------------------------------------ + +AC_DEFUN(SC_PRIVATE_TK_HEADERS, [ + AC_MSG_CHECKING(for Tk private include files) + + case "`uname -s`" in + *win32* | *WIN32* | *CYGWIN_NT* |*CYGWIN_98*|*CYGWIN_95*) + TK_UNIX_DIR_NATIVE=\"`${CYGPATH} ${TK_SRC_DIR}/unix`\" + TK_WIN_DIR_NATIVE=\"`${CYGPATH} ${TK_SRC_DIR}/win`\" + TK_GENERIC_DIR_NATIVE=\"`${CYGPATH} ${TK_SRC_DIR}/generic`\" + TK_XLIB_DIR_NATIVE=\"`${CYGPATH} ${TK_SRC_DIR}/xlib`\" + TK_PLATFORM_DIR_NATIVE=${TK_WIN_DIR_NATIVE} + + TK_INCLUDES="-I${TK_GENERIC_DIR_NATIVE} -I${TK_PLATFORM_DIR_NATIVE} -I${TK_XLIB_DIR_NATIVE}" + ;; + *) + TK_GENERIC_DIR_NATIVE='$(TK_TOP_DIR_NATIVE)/generic' + TK_UNIX_DIR_NATIVE='$(TK_TOP_DIR_NATIVE)/unix' + TK_WIN_DIR_NATIVE='$(TK_TOP_DIR_NATIVE)/win' + TK_PLATFORM_DIR_NATIVE=${TK_UNIX_DIR_NATIVE} + + TK_INCLUDES="-I${TK_GENERIC_DIR_NATIVE} -I${TK_PLATFORM_DIR_NATIVE}" + ;; + esac + + AC_SUBST(TK_UNIX_DIR_NATIVE) + AC_SUBST(TK_WIN_DIR_NATIVE) + AC_SUBST(TK_GENERIC_DIR_NATIVE) + AC_SUBST(TK_XLIB_DIR_NATIVE) + AC_SUBST(TK_PLATFORM_DIR_NATIVE) + + AC_SUBST(TK_INCLUDES) + AC_MSG_RESULT(Using srcdir found in tkConfig.sh) +]) + +#------------------------------------------------------------------------ +# SC_PUBLIC_TK_HEADERS -- +# +# Locate the installed public Tk header files +# +# Arguments: +# None. +# +# Requires: +# CYGPATH must be set +# +# Results: +# +# Adds a --with-tkinclude switch to configure. +# Result is cached. +# +# Substs the following vars: +# TK_INCLUDES +#------------------------------------------------------------------------ + +AC_DEFUN(SC_PUBLIC_TK_HEADERS, [ + AC_MSG_CHECKING(for Tk public headers) + + AC_ARG_WITH(tkinclude, [ --with-tkinclude directory containing the public Tk header files.], with_tkinclude=${withval}) + + if test x"${with_tkinclude}" != x ; then + if test -f "${with_tkinclude}/tk.h" ; then + ac_cv_c_tkh=${with_tkinclude} + else + AC_MSG_ERROR([${with_tkinclude} directory does not contain Tk public header file tk.h]) + fi + else + AC_CACHE_VAL(ac_cv_c_tkh, [ + # Use the value from --with-tkinclude, if it was given + + if test x"${with_tkinclude}" != x ; then + ac_cv_c_tkh=${with_tkinclude} + else + # Check in the includedir, if --prefix was specified + + eval "temp_includedir=${includedir}" + for i in \ + `ls -d ${temp_includedir} 2>/dev/null` \ + /usr/local/include /usr/include ; do + if test -f "$i/tk.h" ; then + ac_cv_c_tkh=$i + break + fi + done + fi + ]) + fi + + # Print a message based on how we determined the include path + + if test x"${ac_cv_c_tkh}" = x ; then + AC_MSG_ERROR(tk.h not found. Please specify its location with --with-tkinclude) + else + AC_MSG_RESULT(${ac_cv_c_tkh}) + fi + + # Convert to a native path and substitute into the output files. + + INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tkh}` + + TK_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\" + + AC_SUBST(TK_INCLUDES) +]) + +#------------------------------------------------------------------------ +# SC_SIMPLE_EXEEXT +# Select the executable extension based on the host type. This +# is a lightweight replacement for AC_EXEEXT that doesn't require +# a compiler. +# +# Arguments +# none +# +# Results +# Subst's the following values: +# EXEEXT +#------------------------------------------------------------------------ + +AC_DEFUN(SC_SIMPLE_EXEEXT, [ + AC_MSG_CHECKING(executable extension based on host type) + + case "`uname -s`" in + *win32* | *WIN32* | *CYGWIN_NT* |*CYGWIN_98*|*CYGWIN_95*) + EXEEXT=".exe" + ;; + *) + EXEEXT="" + ;; + esac + + AC_MSG_RESULT(${EXEEXT}) + AC_SUBST(EXEEXT) +]) + +#------------------------------------------------------------------------ +# SC_PROG_TCLSH +# Locate a tclsh shell in the following directories: +# ${exec_prefix}/bin +# ${prefix}/bin +# ${TCL_BIN_DIR} +# ${TCL_BIN_DIR}/../bin +# ${PATH} +# +# Arguments +# none +# +# Results +# Subst's the following values: +# TCLSH_PROG +#------------------------------------------------------------------------ + +AC_DEFUN(SC_PROG_TCLSH, [ + AC_MSG_CHECKING([for tclsh]) + + AC_CACHE_VAL(ac_cv_path_tclsh, [ + search_path=`echo ${exec_prefix}/bin:${prefix}/bin:${TCL_BIN_DIR}:${TCL_BIN_DIR}/../bin:${PATH} | sed -e 's/:/ /g'` + for dir in $search_path ; do + for j in `ls -r $dir/tclsh[[8-9]]*${EXEEXT} 2> /dev/null` \ + `ls -r $dir/tclsh*${EXEEXT} 2> /dev/null` ; do + if test x"$ac_cv_path_tclsh" = x ; then + if test -f "$j" ; then + ac_cv_path_tclsh=$j + break + fi + fi + done + done + ]) + + if test -f "$ac_cv_path_tclsh" ; then + TCLSH_PROG=$ac_cv_path_tclsh + AC_MSG_RESULT($TCLSH_PROG) + else + AC_MSG_ERROR(No tclsh found in PATH: $search_path) + fi + AC_SUBST(TCLSH_PROG) +]) + +#------------------------------------------------------------------------ +# SC_PROG_WISH +# Locate a wish shell in the following directories: +# ${exec_prefix}/bin +# ${prefix}/bin +# ${TCL_BIN_DIR} +# ${TCL_BIN_DIR}/../bin +# ${PATH} +# +# Arguments +# none +# +# Results +# Subst's the following values: +# WISH_PROG +#------------------------------------------------------------------------ + +AC_DEFUN(SC_PROG_WISH, [ + AC_MSG_CHECKING([for wish]) + + AC_CACHE_VAL(ac_cv_path_wish, [ + search_path=`echo ${exec_prefix}/bin:${prefix}/bin:${TCL_BIN_DIR}:${TCL_BIN_DIR}/../bin:${PATH} | sed -e 's/:/ /g'` + for dir in $search_path ; do + for j in `ls -r $dir/wish[[8-9]]*${EXEEXT} 2> /dev/null` \ + `ls -r $dir/wish*${EXEEXT} 2> /dev/null` ; do + if test x"$ac_cv_path_wish" = x ; then + if test -f "$j" ; then + ac_cv_path_wish=$j + break + fi + fi + done + done + ]) + + if test -f "$ac_cv_path_wish" ; then + WISH_PROG=$ac_cv_path_wish + AC_MSG_RESULT($WISH_PROG) + else + AC_MSG_ERROR(No wish found in PATH: $search_path) + fi + AC_SUBST(WISH_PROG) +]) + -- 2.11.0