head	1.6;
access;
symbols
	itcl-3-4-b1:1.6
	itcl-ng:1.6.0.2
	itcl-3-2-1:1.4
	tclpro-1-5-0:1.4
	tclpro-1-4-1:1.4
	tclpro-1-4-0:1.4
	itcl-3-2-0:1.4
	ajuba-ajuba2-2-0:1.3
	scriptics-sc-2-0-b5:1.3
	scriptics-sc-2-0-fixed:1.3
	scriptics-sc-2-0-b2:1.3
	scriptics-sc-2-0-b1:1.3
	scriptics-sc-1-1:1.3
	scriptics-sc-1-1-b1:1.3
	scriptics-sc-1-1-branch:1.3.0.4
	scriptics-sc-1-1-base:1.3
	scriptics-sc-1-0:1.3
	scriptics-sc-1-0-branch:1.3.0.2
	scriptics-sc-1-0-base:1.3
	scriptics-bc-1-0-b1:1.3
	scriptics-tclpro-1-3-0:1.3
	scriptics-tclpro-1-3-b4:1.3
	itcl-3-1-0:1.3
	scriptics-tclpro-1-3-b3:1.3
	scriptics-tclpro-1-2:1.3
	scriptics-tclpro-1-2-b2:1.3
	scriptics-tclpro-1-2-b1:1.3
	scriptics-tclpro-1-2-a1:1.3
	itcl-3-0-1:1.3
	itcl3-0-1:1.3
	stanton:1.3;
locks; strict;
comment	@# @;


1.6
date	2007.05.24.21.40.21;	author hobbs;	state Exp;
branches;
next	1.5;

1.5
date	2004.08.10.20.54.02;	author hobbs;	state Exp;
branches;
next	1.4;

1.4
date	2000.07.06.07.34.30;	author mmc;	state Exp;
branches;
next	1.3;

1.3
date	98.09.03.02.05.09;	author stanton;	state Exp;
branches;
next	1.2;

1.2
date	98.08.11.14.40.34;	author welch;	state Exp;
branches;
next	1.1;

1.1
date	98.07.27.18.39.04;	author stanton;	state Exp;
branches;
next	;


desc
@@


1.6
log
@	* README, itcl/configure, itcl/configure.in: updated to 3.3.1
	* itcl/generic/itcl.h, itcl/generic/itclInt.decls:
	* itcl/generic/itclInt.h, itcl/generic/itclIntDecls.h:
	* itcl/generic/itcl_bicmds.c, itcl/generic/itcl_class.c:
	* itcl/generic/itcl_cmds.c, itcl/generic/itcl_methods.c:
	* itcl/generic/itcl_migrate.c, itcl/generic/itcl_objects.c:
	* itcl/generic/itcl_parse.c, itcl/generic/itcl_util.c:
	* itk/configure, itk/configure.in, itk/generic/itk.h:
	* itk/generic/itk_archetype.c, itk/generic/itk_option.c: Fix itcl
	use of Tcl_CallFrame to allow itcl compiled with pre-8.5 core to
	work in Tcl 8.5.  [Bug 1725219]
@
text
@------------------------------------------------------------------------
         [incr Tcl] - version 3.3.1 for Tcl/Tk 8.0.3 and beyond
------------------------------------------------------------------------
  This is a bug-fix release in the itcl3.x series.

  As much as possible, I've tried to make itcl3.x backward-compatible
  with earlier releases.  The class definition syntax has not changed
  at all from itcl2.2, and the old itcl1.x syntax is still supported.
  But you'll notice changes related to the new namespace mechanism in
  Tcl 8.0.  For information on incompatibilities and porting to itcl3.x,
  read the INCOMPATIBLE file in this directory, or check out the itcl
  web site:

      http://incrtcl.sourceforge.net/
      http://www.tcltk.com/itcl/

  Many people through the years have helped me with [incr Tcl]
  development, and I thank them for their contributions.  Please
  read the acknowledgements section below.

  Send comments or suggestions to the [incr Tcl] mailing list
  (itcl@@scriptics.com) or directly to me (mmc@@cadence.com).
  If you want to subscribe to the mailing list, send a message
  with the subject "subscribe" to "itcl-request@@tcltk.com".

========================================================================
        Copyright (c) 1993-1998   Lucent Technologies, Inc.
        Copyright (c) 1998-2000   Cadence Design Systems, Inc.
========================================================================

 OVERVIEW
------------------------------------------------------------------------
 - What is [incr Tcl]?
 - Getting started
 - Installation
 - Integrating [incr Tcl] with other extensions
 - Acknowledgements
------------------------------------------------------------------------


 What is [incr Tcl]?
------------------------------------------------------------------------
 [incr Tcl] is an object-oriented extension of the Tcl language.  It
 was created to support more structured programming in Tcl.  Tcl scripts
 that grow beyond a few thousand lines become extremely difficult to
 maintain.  This is because the building blocks of vanilla Tcl are
 procedures and global variables, and all of these building blocks
 must reside in a single global namespace.  There is no support for
 protection or encapsulation.

 [incr Tcl] introduces the notion of objects.  Each object is a bag
 of data with a set of procedures or "methods" that are used to
 manipulate it.  Objects are organized into "classes" with identical
 characteristics, and classes can inherit functionality from one
 another.  This object-oriented paradigm adds another level of
 organization on top of the basic variable/procedure elements, and
 the resulting code is easier to understand and maintain.

 Among other things, [incr Tcl] can be used to create new widgets that
 look and work like the usual Tk widgets, but are written entirely at
 the Tcl language level (C code is optional).  These "mega-widgets"
 can be created using [incr Tk], a set of base classes which provide
 the core mega-widget functionality.  [incr Widgets] is a set of
 high-level mega-widgets built using [incr Tk].  It has more than
 50 widget classes, and can be used right out of the box to create:

   - fileselectiondialog
   - tabnotebook
   - panedwindow
   - scrolledhtml
   - combobox
   - optionmenu
   - scrolledlistbox
   - scrolledframe
   - messagedialog
   - and many others...
 
 Classes and/or related procedures can also be encapsulated in their
 own "namespace".  A namespace is a collection of commands, variables,
 classes and other namespaces that is set apart from the usual global
 scope.  Elements within a namespace can be "private" or "protected",
 so that access to them is restricted.  An "import" command allows all
 of the elements from one namespace to be integrated into another.

 Extension writers will immediately see the benefit of namespaces.
 With vanilla Tcl, each extension must add its commands and variables
 at the global scope.  Extension writers are encouraged to add a unique
 prefix to all of the names in their package, to avoid naming collisions.
 Extensions can now sit in their own namespace of commands and variables,
 and sensitive elements can be protected from accidental access.  For
 example, the current release of [incr Tcl] has a namespace "itcl"
 for object-oriented support, a namespace "itk" for mega-widget
 support, and a namespace "iwidgets" for the [incr Widgets] package.
 Each of these namespaces has its own collection of commands and
 variables.  Developers can then pick and choose among the extensions,
 and integrate the parts that they need for their application by
 importing various namespaces at the global scope.


 Getting started
------------------------------------------------------------------------
 If you're just getting started with [incr Tcl], check out these
 useful resources:

   - FREE TUTORIAL on our web site:  http://www.tcltk.com/itcl/

   - BOOK:  "[incr Tcl/Tk] from the Ground Up," by Chad Smith
            (ISBN 0-07-212106-8)

   - BOOK:  "Tcl/Tk Tools," edited by Mark Harrison
            (ISBN 1-56592-218-2)

 Also, run the "catalog" demo to get an overview of the [incr Widgets]
 package.  On Windows and Macintosh systems, this is installed as one
 of the executables.  On Unix systems, this is installed in the
 "lib/itcl/iwidgets3.0.0/demos" library directory.

 The file "iwidgets3.0.0/doc/iwidgets.ps" contains a tutorial
 introduction to the [incr Widgets] package.  The mega-widget classes
 in [incr Widgets] show off most of the functionality in this release.
 You can use them as a pattern to create your own widget classes.

 If you're a seasoned itcl professional, check the CHANGES file for a
 summary of recent enhancements.  Consult the man pages for detailed
 information on particular commands.

 Check out our web site for the latest news:

      http://incrtcl.sourceforge.net/

 Installation on Unix Systems
------------------------------------------------------------------------
  1)  Obtain this distribution from an archive site like this:

        http://incrtcl.sourceforge.net/
        http://sourceforge.net/project/showfiles.php?group_id=13244

  2)  Uncompress and untar the distribution:

        gunzip itcl<version>.tar.gz
        tar xvf itcl<version>.tar

  3)  Run the configuration script:

        cd itcl<version>
        ./configure

      or, for systems that don't recognize "#!" in shell scripts:

        cd itcl<version>
        /bin/sh ./configure

      The "configure" script finds the appropriate compiler flags and
      generates new Makefiles from template files (Makefile.in).

      By default, the configuration script will set things up so
      that everything is installed in "/usr/local".  You can change
      this by specifying a different "prefix" in the "configure" command:

        ./configure --prefix=/your/install/path

      If your Tcl installation is sitting somewhere other than right
      next to this package, you may have to tell configure where to
      find it:

        ./configure --with-tcl=/usr/local/tcl/lib

      If you want to debug, you can add this option as well:

        ./configure --enable-symbols

  4)  Build the libraries and the executables.  From the toplevel
      directory type:

        make all

  5)  Install the libraries, executables, man pages and script files.
      From the toplevel directory type:

        make install

  6)  Use the final product:

        $ tclsh
        % package require Itcl
        % itcl::class Foo { method testing {} { return "testing!" } }

      If you don't like the itcl:: prefix, you can import the itcl
      commands into the global namespace:

        % namespace import -force itcl::*
        % class Foo { ... }

      Note that you'll find the same behavior with [incr Widgets]:

        $ wish
        % package require Iwidgets
        % iwidgets::optionmenu .om
        % namespace import -force iwidgets::*
        % optionmenu .om


 Installation on Windows
------------------------------------------------------------------------
 Follow the usual TEA instructions for building under Windows.
 Requires Cygwin and Visual C++ 6.0.


 Installation on Macintosh Systems
------------------------------------------------------------------------
 Many thanks to Jim Ingham for putting up Macintosh binaries for
 various releases.  Check out http://www.tcltk.com/itcl for downloads.


 Integrating [incr Tcl] with other extensions
------------------------------------------------------------------------
 [incr Tcl] is now a pure extension to Tcl/Tk.  Therefore, if you
 build the Tcl/Tk core and this package with the "--enable-shared"
 option, you can load [incr Tcl] into a vanilla tclsh, as follows:

     package require Itcl

 Similarly, you can load [incr Tcl] along with the [incr Tk] mega-widget
 facility into a vanilla wish, as follows:

     package require Itk

 You can load [incr Tcl], [incr Tk], and the [incr Widgets] package
 like this:

     package require Iwidgets

 If you require the earlier release of [incr Widgets] for some reason,
 you can specify the version number:

     package require Iwidgets 2.2

 Other packages should plug-and-play in the same fashion.

 >> NOTE:  If you have any trouble with dynamic loading on UNIX
 >>        systems, you may need to set your LD_LIBRARY_PATH environment
 >>        variable to include the "lib" directory for your Tcl/Tk
 >>        installation.  For example:
 >>
 >>        LD_LIBRARY_PATH="/usr/local/tcl/lib:$LD_LIBRARY_PATH"
 >>        export LD_LIBRARY_PATH


 Acknowledgements
------------------------------------------------------------------------
 Thanks to Chad Smith for writing an excellent, comprehensive
 book "[incr Tcl/Tk] from the Ground Up," for many helpful bug
 reports, and for nudging me along to fix things.

 Thanks to Matt Newman for providing the Tcl-only "tcl++" package
 that helped so many people move forward while waiting for the
 itcl3.0 release.

 Thanks to John Ousterhout and the Scriptics team for bundling this
 package with their TclPro product.  It's gratifying to see [incr Tcl]
 accepted as a mainstream product.

 Thanks to Mark Ulferts, Sue Yockey, John Sigler, Bill Scott, Alfredo
 Jahn, Bret Schuhmacher, Tako Schotanus and Kris Raney for building
 the [incr Widgets] package.  With a sketchy overview and a crappy
 prototype of [incr Tk], they managed to build a nice set of mega-widgets.
 Their initial designs helped me smooth out the rough spots in [incr Tk].
 Thanks especially to Mark Ulferts for keeping things up over the past
 few years, and for streamlining the package for itcl3.0.

 Thanks to Jan Nijtmans, Karel Zuiderveld, and Vince Darley for helping
 to keep up with Tcl/Tk releases, and for supporting the "plus" and
 "dash" patches under [incr Tcl].

 Thanks to Forest Rouse and ICEM CFD Engineering for integrating
 [incr Tcl] into their Tcl/Tk compiler.  This is a large undertaking,
 and they have done an excellent job.

 Thanks to Alfredo Jahn and Bret Schuhmacher at WebNet for helping
 to create the [incr Tcl] web site, and for maintaining the
 [incr Tcl] mailing list for many years.

 Thanks to extension writers like Mark Diekhans (tclX) and Ioi Lam (Tix)
 for making their packages compatible with [incr Tcl].

 Thanks to George Howlett for teaching me how namespaces should really
 work.  He has been a constant source of inspiration, and has kept
 a careful watch against many bad ideas.  Jim Ingham fleshed out the
 notion of explicit scoping, added many nice features to [incr Tk],
 and has helped tremendously with porting.  Lee Bernhard worked on
 distributed systems with Iclient/Iserver, and also helped with porting.
 Bill Scott, with a steady stream of bug reports, helped me understand
 the questions that a typical user might have.  He forced me to reinvent
 the paradigm on more than one occasion.

 Thanks to all of the alpha-testers that helped me polish this release.

 Thanks to Mark Harrison for his enthusiasm and support.  Due in
 large part to his evangelism, I have been able to make [incr Tcl]
 development a mainstream activity.

 And many thanks to my wife Maria and my children Maxwell and Katie
 for putting up with all of this.

--Michael
. . . . . . . . . . . . . . . . .                  ---_-----------
                                . . . . . . . . . | c a d e n c e |
      Michael McLennan          .                  ---------------
      mmc@@cadence.com           .      Cadence Design Systems, Inc.
      phone: 610-398-6348       .      7535 Windsor Dr. Suite A-200
        fax: 610-530-7985       .      Allentown, PA  18195
@


1.5
log
@version, info updates
@
text
@d2 1
a2 1
         [incr Tcl] - version 3.3 for Tcl/Tk 8.0.3 and beyond
@


1.4
log
@
Touched up README for itcl3.2 release.  Fixed master Makefile to
avoid testing iwidgets2.2.0, which is an older release provided
only for backward-compatibility.  Bug fixes and improvements are
made and tested in the newer iwidgets3.0.0 release.
@
text
@d2 1
a2 1
         [incr Tcl] - version 3.2 for Tcl/Tk 8.0.3 and beyond
d14 1
d129 1
a129 2
     http://www.tcltk.com/itcl/

d135 2
a136 6
        ftp ftp.tcltk.com
        cd pub/itcl
        binary
        get itcl3.2.tar.gz
        quit

d140 2
a141 3
        gunzip itcl3.2.tar.gz
        tar xvf itcl3.2.tar

d145 1
a145 1
        cd itcl3.2
d150 1
a150 1
        cd itcl3.2
d168 1
a168 4
      If you like the gcc compiler and/or want to debug, you can add
      those options as well:

        ./configure --enable-gcc --enable-symbols
d170 1
a176 1

a181 1

d203 1
a203 1
 Installation on Windows 95/98/NT
@


1.3
log
@more changes
@
text
@a0 2
#------------------------------------------------------------------------
               [incr Tcl] - version 3.0 for Tcl/Tk 8.0.3
d2 5
a6 1
  As much as possible, I've tried to make itcl3.0 backward-compatible
d10 1
a10 1
  Tcl 8.0.  For information on incompatibilities and porting to itcl3.0,
d21 1
a21 1
  (itcl@@tcltk.com) or directly to me (mmclennan@@lucent.com).
d26 2
a27 1
           Copyright (c) 1993-1998   Lucent Technologies, Inc.
d101 4
a104 3
 Read the first part of the CHANGES file for a brief overview of
 new commands, and a summary of important changes.  Consult the
 man pages for detailed information on particular commands.
d106 2
a107 1
 Check out our web site on WebNet for the latest news:
d109 2
a110 1
     http://www.tcltk.com/itcl/
d112 4
a115 13
 >> NOTE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 >>                                                             <<
 >>   If you are just getting started with [incr Tcl], be sure  <<
 >>   to download the TUTORIAL on our web site.  This has over  <<
 >>   100 pages of introductory text and code examples.         <<
 >>                                                             <<
 >>   Also, run the "catalog" demo to get an overview of the    <<
 >>   [incr Widgets] package.  On Windows and Macintosh         <<
 >>   systems, this is installed as one of the executables.     <<
 >>   On Unix systems, this is installed in the                 <<
 >>   "lib/itcl/iwidgets3.0.0/demos" library directory.         <<
 >>                                                             <<
 >><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
d118 11
a128 4
 introduction to the [incr Widgets] package.  The mega-widget
 classes in this package show off most of the functionality in
 this release.  You can use them as a pattern to create your
 own widget classes.
d138 1
a138 1
        get itcl3.0.tar.gz
d144 2
a145 2
        gunzip itcl3.0.tar.gz
        tar xvf itcl3.0.tar
d150 1
a150 1
        cd itcl3.0
d155 1
a155 1
        cd itcl3.0
d167 8
a174 2
      By default, everything will be build with non-shared libraries.
      You can request shared libraries and dynamic loading like this:
d176 1
a176 1
        ./configure --enable-shared
d191 25
a215 29
  6)  Use the final product.  This distribution creates and installs
      four executables:
      
        tclsh8.0 ......... tclsh for Tcl8.0
        wish8.0 .......... wish for Tk8.0
        itclsh3.0 ........ tclsh + namespaces + classes
        itkwish3.0 ....... wish + namespaces + classes + megawidgets

      If you configured this distribution with "--enabled-shared" to
      request dynamic loading, you can use "tclsh" or "wish" as the
      core program and load everything else as needed.

      If you did not configure for dynamic loading, you will probably
      want to use the "itkwish3.0" program instead.  This includes
      everything you need to use [incr Widgets], and you won't have
      to worry about LD_LIBRARY_PATH at all.


 Installation on Windows 95, NT, and 3.1.x
------------------------------------------------------------------------
 This distribution has been built for Windows 95/NT systems using
 the makefiles in the "win" directory.  These makefiles are for
 Visual C++, version 4.0 or beyond.  Just edit the "makefile.vc"
 in the toplevel directory to include the appropriate paths on
 your system.  Then, type:

     nmake dist -f makefile.vc
     nmake dist-install -f makefile.vc
     nmake dist-clean -f makefile.vc
d220 2
a221 4
 This distribution has been built on Macintosh systems, but still
 needs some work to get things running smoothly.  If anyone has
 access to a Macintosh machine, I invite them to help with this
 porting effort.
d260 7
a266 5
 Thanks to everyone for being patient with me while I put together
 this release.  It took much longer than expected, due to a series
 of other interruptions.  Thanks to Matt Newman for providing the
 Tcl-only "tcl++" package that helped so many people move forward
 while they were waiting for this release.
d290 1
a290 1
 [incr Tcl] mailing list.
d315 6
a320 9
                                                              ...
---------------------------------------------------------  ':'...''. ---
  Michael J. McLennan 2C-226      mmclennan@@lucent.com   '::.''''':;:
  Lucent Technologies                                   '::;       ;;:
  1247 S Cedar Crest Blvd                               :::,,       :;;
  Allentown, PA  18103             Lucent Technologies  ;:;'        ;:;
  phone: 610-712-2842            Bell Labs Innovations   ;;:       .;:
    fax: 610-712-2773                                     :;:,   ,:;:
                                                           ':;;;:;:'
@


1.2
log
@3.0 final from Michael
@
text
@d1 1
a1 1
------------------------------------------------------------------------
@


1.1
log
@Initial revision
@
text
@d2 1
a2 1
                     [incr Tcl] - version 3.0a1
d4 7
a10 4
  This version includes tcl8.0p2 / tk8.0p2 with minor patches
  for [incr Tcl].  John Ousterhout has agreed to support these
  patches in future releases of Tcl/Tk, so further patching won't
  be necessary after the next Tcl/Tk release.
a11 3
  For information on incompatibilities and porting to itcl3.0,
  check out our web site:

d116 1
a116 1
 >>   "lib/itcl/iwidgets3.0.0" library directory.               <<
d134 1
a134 1
        get itcl3.0a1.tar.gz
d140 2
a141 2
        gunzip itcl3.0a1.tar.gz
        tar xvf itcl3.0a1.tar
d146 1
a146 1
        cd itcl3.0a1
d151 1
a151 1
        cd itcl3.0a1
d191 1
a191 2
      core program and load everything else as needed.  In theory,
      this should work, but it hasn't been tested at this point.
d199 1
a199 1
 Installation on Macintosh Systems
d201 5
a205 4
 This distribution hasn't been built on Macintosh systems.  There
 is a "mac" directory with code from earlier releases, but it
 hasn't been tried.  If anyone has access to a Macintosh machine,
 I invite them to help with this porting effort.
d207 3
d211 2
a212 1
 Installation on Windows 95, NT, and 3.1.x
d214 4
a217 4
 This distribution hasn't been built on Windows systems.  There
 is a "win" directory with code from earlier releases, but it
 hasn't been tried.  If anyone has access to a Windows machine,
 I invite them to help with this porting effort.
d222 3
a224 5
 [incr Tcl] now requires its own version of Tcl/Tk with support for
 namespaces.  Therefore, you must use the version of Tcl/Tk that
 comes in this distribution as a basis for other applications.
 Hopefully, the namespace support will become a part of the standard
 distribution some day.
d226 1
a226 2
 You can add other extensions into the [incr Tcl] package by
 following the usual instructions for Tcl/Tk:
d228 2
a229 3
  1) Put the source code for the extension in the directory
     "itcl3.0a1", at the same level as the directories "tcl8.0"
     and "tk8.0".
d231 1
a231 3
  2) Copy "tclAppInit.c" or "tkAppInit.c" from the standard
     distribution.  Choose the appropriate version according to
     your needs:
d233 2
a234 4
       tcl8.0/tclAppInit.c .... Tcl8.0
       tk8.0/tkAppInit.c ...... Tk8.0
       itcl/tclAppInit.c ...... tclsh + [incr Tcl]
       itk/tkAppInit.c ........ wish + [incr Tcl]/[incr Tk]
d236 1
a236 3
  3) Each extension should have an initialization function with a
     name like "XXX_Init()".  The BLT package, for example, has a
     function "Blt_Init()".
d238 2
a239 2
     a) Include the declarations for any initialization routines
        at the top of the tclAppInit.c or tkAppInit.c file.
d241 1
a241 2
     b) Within the body of Tcl_AppInit(), add a call to the
        initialization routine.  It should look something like this:
d243 1
a243 9
          if (Itcl_Init(interp) == TCL_ERROR) {
              return TCL_ERROR;
          }
          if (Itk_Init(interp) == TCL_ERROR) {
              return TCL_ERROR;
          }
          if (Blt_Init(interp) == TCL_ERROR) {
              return TCL_ERROR;
          }
d245 7
a251 2
        In this example we have integrated BLT in with [incr Tcl] and
        [incr Tk].
a252 3
  4) Link your application with the appropriate libraries.
     For example, with non-shared libraries, you would link
     against:
a253 10
       libtcl8.0.a ............. Tcl with namespaces
       libtk8.0.a .............. Tk with namespaces
       libitcl3.0.a ............ [incr Tcl]
       libitk3.0.a ............. [incr Tk]

     and on Unix systems, you will also need:

       -lX11 ................... X11 library


d262 13
a274 1
 Thanks to Karel Zuiderveld, Jan Nijtmans and Vince Darley for helping
a277 8
 Thanks to Mark Ulferts, Sue Yockey, John Sigler, Bill Scott, Alfredo
 Jahn, Tako Schotanus and Kris Raney for building the [incr Widgets]
 package.  With a sketchy overview and a crappy prototype of [incr Tk],
 they managed to build a nice set of mega-widgets.  Their initial
 designs helped me smooth out the rough spots in [incr Tk].  Thanks
 especially to Mark Ulferts for keeping things up over the past few
 years, and for streamlining the package for itcl3.0.

d292 3
a294 1
 notion of explicit scoping, and added many nice features to [incr Tk].
d299 1
a299 2
 Thanks to more than 100 beta-testers that helped me polish the itcl2.0
 release.
@
