itcl User Commands - itclvars






NAME

     itclvars - variables used by [incr Tcl]





DESCRIPTION

     The following  global  variables  are  created  and  managed
     automatically by the [incr Tcl] library.  Except where noted
     below, these variables should normally be treated  as  read-
     only by application-specific code and by users.

     itcl::library
          When an interpreter is created, [incr Tcl]  initializes
          this  variable to hold the name of a directory contain-
          ing the system library of [incr Tcl] scripts.  The ini-
          tial   value   of   itcl::library   is   set  from  the
          ITCL_LIBRARY environment variable if it exists, or from
          a compiled-in value otherwise.

     itcl::patchLevel
          When an interpreter is created, [incr Tcl]  initializes
          this  variable  to  hold  the  current  patch level for
          [incr Tcl].  For example, the value  "2.0p1"  indicates
          [incr Tcl]  version  2.0  with the first set of patches
          applied.

     itcl::purist
          When an interpreter is created  containing  Tcl/Tk  and
          the  [incr Tcl]  namespace facility, this variable con-
          trols  a  "backward-compatibility"  mode   for   widget
          access.

          In vanilla Tcl/Tk, there is a single pool of  commands,
          so  the  access command for a widget is the same as the
          window  name.   When  a  widget  is  created  within  a
          namespace,  however, its access command is installed in
          that namespace, and should be accessed outside  of  the
          namespace using a qualified name.  For example,

              namespace foo {
                  namespace bar {
                      button .b -text "Testing"
                  }
              }
              foo::bar::.b configure -background red
              pack .b

          Note that the window name ".b" is still  used  in  con-
          junction with commands like pack and destroy.  However,
          the access command for  the  widget  (i.e.,  name  that
          appears  as  the first argument on a command line) must
          be more specific.

          The "winfo command" command can be used  to  query  the
          fully-qualified  access  command for any widget, so one
          can write:

              [winfo command .b] configure -background red

          and this is good practice  when  writing  library  pro-
          cedures.   Also,  in conjunction with the bind command,
          the "%q" field can be used in  place  of  "%W"  as  the
          access command:

              bind Button <Key-Return> {%q flash; %q invoke}

          While this behavior makes sense from the standpoint  of
          encapsulation,  it causes problems with existing Tcl/Tk
          applications.  Many existing applications  are  written
          with  bindings  that use "%W".  Many library procedures
          assume that the window name is the access command.

          The  itcl::purist   variable   controls   a   backward-
          compatibility  mode.  By default, this variable is "0",
          and the window name can be used as an access command in
          any  context.   Whenever the unknown procedure stumbles
          across a widget name, it simply uses "winfo command" to
          determine  the appropriate command name.  If this vari-
          able is set to "1", this backward-compatibility mode is
          disabled.   This  gives better encapsulation, but using
          the window name as  the  access  command  may  lead  to
          "invalid command" errors.

     itcl::version
          When an interpreter is created, [incr Tcl]  initializes
          this  variable  to  hold the version number of the form
          x.y.  Changes to x represent major changes  with  prob-
          able incompatibilities and changes to y represent small
          enhancements and bug fixes that retain backward  compa-
          tibility.



KEYWORDS

     itcl, variables