wcb::callback
    Commandwcb::cbappend
    Commandwcb::cbprepend
    Commandwcb::cancel Commandwcb::canceled
    Commandwcb::extend Commandwcb::replace
    Commandwcb::pathname
    Commandwcb::changeEntryText
    Commandwcb::postInsertEntryLen Commandwcb::postInsertEntryText Commandwcb::postDeleteEntryText Commandinsert Callbacks for Tk
    entry, tile entry, BWidget Entry, Tk spinbox, tile spinbox, and tile
    combobox Widgetsinsert Callbacks for text
    and ctext Widgetswcb::callback Commandwcb::callback - Retrieve, set, and remove widget
    callbackswcb::callback widgetName before|after option ?callback callback ...?
widgetName, the argument
      before or after, and the command
      corresponding to option.  The values of the
      option argument can be:insert, delete, or
        motion, for a Tk or tile entry, BWidget Entry, Tk
        or tile spinbox, tile combobox, text, or ctext widget;replace, for a text or ctext widget;activate, for a listbox or tablelist
        widget;selset or selclear, for a
        listbox, tablelist, text, or ctext widget;activatecell, cellselset,
        or cellselclear, for a tablelist widget.option parameter are
    specified, then the procedure just returns the current before- or
    after-callback list, respectively, for the given widget operation.option parameter is a nonempty string, then:option
            parameter, then the procedure renames the Tcl command
            widgetName to _widgetName
            and builds a new procedure widgetName, in which
            the execution of the widget operations associated with the above
            values of option is preceded by invocations of
            the corresponding before-callbacks and followed by calls to the
            corresponding after-callbacks, in the global scope;option parameter
        are empty, then the procedure unregisters all the corresponding before-
        or after-callbacks for the given widget and returns an empty
        string.When a callback is invoked, the name of the original Tcl command for
      the widget widgetName as well as the command
      arguments are automatically appended to it as parameters.
The following table shows the widget subcommands corresponding to the
      above values of option, together with the arguments
      of these subcommands:
| Widget | option | Subcommand | Arguments | 
|---|---|---|---|
| Tk or tile entry, BWidget Entry, Tk or tile spinbox, or tile combobox | insert | insert | index string | 
| delete | delete | from ?to? | |
| motion | icursor | index | |
| listbox | activate | activate | index | 
| selset | selection set | first ?last? | |
| selclear | selection clear | first ?last? | |
| tablelist | activate | activate | index | 
| selset | selection set | first ?last? | |
| selclear | selection clear | first ?last? | |
| activatecell | activatecell | cellIndex | |
| cellselset | cellselection set | first ?last? | |
| cellselclear | cellselection clear | first ?last? | |
| text or ctext | insert | insert | index string ?tagList string
          tagList ...? | 
| delete | delete | from ?to? | |
| replace | replace | from to string ?tagList
          string tagList ...? | |
| motion | mark set insert | index | |
| selset | tag add sel | from ?to from to
          ...? | |
| selclear | tag remove sel | from ?to from to
          ...? | 
before,
        after, insert,
        delete, replace,
        motion, and activate (the
        latter for listbox widgets only) to a minimum of one character. 
        Similarly, the first four characters of the words
        selset and selclear, the first
        eight characters of cellselset and
        cellselclear, and the first nine characters of
        activatecell are sufficient for Wcb to recognize
        these options.option argument,
        you can use either the new procedure widgetName or
        the original Tcl command _widgetName to perform any
        valid operation on the widget widgetName.  Use
        the old Tcl command _widgetName if you want to
        prevent the callbacks from being invoked when executing the respective
        widget subcommand.widgetName for which
        wcb::callback has replaced the corresponding Tcl
        command with a new procedure, the original command
        _widgetName is deleted automatically by the Tcl
        interpreter (this is not true in the case of a BWidget Entry,
        tablelist, or ctext widget).  The new widget procedure
        widgetName would persist, but Wcb arranges for it
        to be deleted from within a cleanup script bound to the
        <Destroy> event.  This cleanup script is
        associated with a binding tag called WcbCleanup,
        which is appended to the list of binding tags of the widget the first
        time when registering some callbacks for it.  (In the case of a
        BWidget Entry, tablelist, or ctext widget, this script also deletes the
        original Tcl command _widgetName.)widgetName, thus ensuring that a widget
        with the same path created later will not inherit them from the widget
        just deleted (this can be important in some applications).  For
        this reason, you should be careful not to remove
        WcbCleanup from the list of binding tags of the
        given widget!wcb::cbappend Commandwcb::cbappend - Append to a callback listwcb::cbappend widgetName before|after option ?callback callback ...?
wcb::callback.  The only difference is that
    wcb::cbappend appends the arguments specified
    after the option parameter to the current callback list
    (if present), while wcb::callback replaces the
    old callbacks with these arguments.wcb::cbprepend
  Commandwcb::cbprepend - Prepend to a callback listwcb::cbprepend widgetName before|after option ?callback callback ...?
wcb::callback.  The only difference is that
    wcb::cbprepend prepends the arguments specified
    after the option parameter to the current callback list
    (if present), while wcb::callback replaces the
    old callbacks with these arguments.wcb::cancel Commandwcb::cancel - Cancel a widget commandwcb::cancel ?script?
script
      argument in the global scope.  If this argument is not specified, it
      defaults to the bell command.
      The return value is the one obtained from script
      if this argument is specified and nonempty.  Otherwise, the command
      returns an empty string.
wcb::canceled Commandwcb::canceled - Query the canceled status of a widget
    commandwcb::canceled widgetName option
1 if the most recent invocation of the
    widget operation corresponding to widgetName and
    option has been aborted by some before-callback by
    invoking wcb::cancel; otherwise,
    the return value is 0.  The arguments must fulfil the
    same restrictions as in the case of the wcb::callback command.wcb::extend Commandwcb::extend - Extend the argument list of a widget
    commandwcb::extend ?arg arg ...?
arg parameters to the argument list of that
      command.  The new argument list will be passed to the remaining
      callbacks for that command, too.
      This procedure simply passes its parameters to the
      lappend command, called for the argument list of the
      respective widget operation.
wcb::replace Commandwcb::replace - Replace arguments of a widget command with
    new oneswcb::replace first last ?arg arg ...?
first through last of that
      command with the optional arg parameters.  The
      new argument list will be passed to the remaining callbacks for that
      command, too.  The arguments are numbered from 0 (see
      the table in the description of the
      wcb::callback command).
      This procedure simply passes its parameters to the
      lreplace command, called for the argument list of the
      respective widget operation.
wcb::pathname Commandwcb::pathname - Query the path name of the widget
    corresponding to a Tcl command namewcb::pathname origCmd
origCmd passed to a callback.
      When a before- or after-callback for a widget is invoked, the name of
      the original Tcl command associated with that widget is automatically
      appended to it as parameter.  This procedure can be used within a
      callback to derive the path name of the widget from the command name
      passed to the callback as argument.  It simply returns the string
      range obtained from origCmd by removing the
      "::_" prefix.
wcb::changeEntryText Commandwcb::changeEntryText - Change the text of a Tk or tile
    entry, BWidget Entry, Tk or tile spinbox, or tile combobox widgetwcb::changeEntryText widgetName string
widgetName with
      string, by using the delete and
      insert operations.  If the first subcommand is
      canceled by some before-delete callback then the
      procedure returns without inserting the new text; if the second operation
      is canceled by some before-insert callback then the
      command restores the original contents of the widget.
      The procedure keeps the position of the insertion cursor.  The
      return value is 1 on success and 0 on failure,
      i.e., if one of the attempted operations was canceled by some
      before-callback.
wcb::postInsertEntryLen Commandwcb::postInsertEntryLen - Query the would-be length of the
    text in a Tk or tile entry, BWidget Entry, Tk or tile spinbox, or tile
    combobox widget after text insertionwcb::postInsertEntryLen widgetName string
widgetName after inserting
    string.wcb::postInsertEntryText Commandwcb::postInsertEntryText - Query the would-be text of a Tk
    or tile entry, BWidget Entry, Tk or tile spinbox, or tile combobox widget
    after text insertionwcb::postInsertEntryText widgetName index string
widgetName after inserting string
    before the character indicated by index.wcb::postDeleteEntryText Commandwcb::postDeleteEntryText - Query the would-be text of a Tk
    or tile entry, BWidget Entry, Tk or tile spinbox, or tile combobox widget
    after text deletionwcb::postDeleteEntryText widgetName from ?to?
widgetName after deleting the characters starting
      with the one indicated by the index from and stopping
      just before to.  If to is
      not specified then the return value is the text that would be contained
      in the widget after deleting the single character given by
      from.
      REMARK:  This command has a variable number (2 or 3) of
      arguments, because the delete subcommand of the Tcl
      command associated with widgetName expects either one
      or two indices as arguments.  For this reason, the correct way to
      invoke this command from within a before-delete
      callback is as shown in the following example:
      
        
proc myBeforeDeleteCallback {w args} {
    #
    # Get the text that would be contained in the widget after
    # deleting the characters specified by $args, which stands
    # for the one or two arguments passed to delete; pass these
    # arguments to wcb::postDeleteEntryText by expanding $args
    #
    set newText [eval [list wcb::postDeleteEntryText $w] $args]
    if {!some_condition_on_$newText} {
        wcb::cancel
    }
}
      
      The following alternative, more elegant solution requires Tcl/Tk 8.5 or later:
        
proc myBeforeDeleteCallback {w args} {
    # . . .
    set newText [wcb::postDeleteEntryText $w {*}$args]
    . . .
}
      
    insert Callbacks for Tk
  entry, tile entry, BWidget Entry, Tk spinbox, tile spinbox, and tile combobox
  Widgetswcb::checkStrFor*, wcb::convStrTo*,
    wcb::checkEntryFor*, wcb::checkEntryLen -
    Before-insert callbacks for Tk entry, tile entry,
    BWidget Entry, Tk spinbox, tile spinbox, and tile combobox widgets| wcb::checkStrForRegExp | exp w idx str | 
| wcb::checkStrForAlpha | w idx str | 
| wcb::checkStrForNum | w idx str | 
| wcb::checkStrForAlnum | w idx str | 
| wcb::convStrToUpper | w idx str | 
| wcb::convStrToLower | w idx str | 
| wcb::checkEntryForInt | w idx str | 
| wcb::checkEntryForUInt | max w idx str | 
| wcb::checkEntryForReal | w idx str | 
| wcb::checkEntryForFixed  | cnt w idx str | 
| wcb::checkEntryLen | len w idx str | 
wcb::checkStrForRegExp callback checks whether
      the string str to be inserted into the Tk or tile
      entry, BWidget Entry, Tk or tile spinbox, or tile combobox widget
      w is matched by the regular expression
      exp; if not, it cancels the
      insert operation.
      The three other wcb::checkStrFor* callbacks check
      whether the string str to be inserted into the Tk or
      tile entry, BWidget Entry, Tk or tile spinbox, or tile combobox widget
      w is alphabetic, numeric, or alphanumeric,
      respectively; if not, they cancel the insert
      operation.  These procedures just invoke the callback
      wcb::checkStrForRegExp, passing to it the
      Unicode-based patterns {^[[:alpha:]]*$},
      {^[[:digit:]]*$}, and {^[[:alnum:]]*$} for Tk
      versions 8.1 or higher, and the ASCII patterns
      {^[A-Za-z]*$}, {^[0-9]*$}, and
      {^[A-Za-z0-9]*$} if Tk version 8.0 is being used.
The wcb::convStrTo* callbacks replace the string
      str to be inserted into the Tk or tile entry, BWidget
      Entry, Tk or tile spinbox, or tile combobox widget w
      with its uppercase or lowercase equivalent, respectively.
The wcb::checkEntryFor* callbacks check whether
      the text contained in the Tk or tile entry, BWidget Entry, Tk or tile
      spinbox, or tile combobox widget w after inserting
      the string str before the character indicated by the
      index idx would represent (the starting part of) an
      integer number, unsigned integer no greater than max,
      real number, or real number in fixed-point format with at most
      cnt digits after the decimal point, respectively; if
      not, they cancel the insert operation. 
      max and cnt should be nonnegative
      numbers or *;  max =
      *  means: no upper bound for the Tk or tile entry,
      BWidget Entry, Tk or tile spinbox, or tile combobox value, while 
      cnt = *  stands for an unlimited number
      of digits after the decimal point.
The wcb::checkEntryLen callback checks whether the
      length of the text contained in the Tk or tile entry, BWidget Entry, Tk
      or tile spinbox, or tile combobox widget w after
      inserting the string str would be greater than
      len; if yes, it cancels the
      insert operation.
These callback procedures are implemented in the file
      wcbEntry.tcl, contained in the
      scripts directory.  They return an empty
      string.
insert Callbacks for text
  and ctext Widgetswcb::checkStrsFor*, wcb::convStrsTo* -
    Before-insert callbacks for text and ctext widgets| wcb::checkStrsForRegExp  | exp w idx args | 
| wcb::checkStrsForAlpha | w idx args | 
| wcb::checkStrsForNum | w idx args | 
| wcb::checkStrsForAlnum | w idx args | 
| wcb::convStrsToUpper | w idx args | 
| wcb::convStrsToLower | w idx args | 
wcb::checkStrsForRegExp callback checks whether
      the strings to be inserted into the text or ctext widget
      w, contained in the list args of
      the form  string ?tagList string
      tagList ...?,  are matched by the regular expression
      exp; if not, it cancels the
      insert operation.
      The three other wcb::checkStrsFor* callbacks check
      whether the strings to be inserted into the text or ctext widget
      w, contained in the list args of
      the form  string ?tagList string
      tagList ...?,  are alphabetic, numeric, or
      alphanumeric, respectively; if not, they cancel the
      insert operation.  These procedures just invoke
      the callback wcb::checkStrsForRegExp, passing to it
      the Unicode-based patterns {^[[:alpha:]\n]*$},
      {^[[:digit:]\n]*$}, and {^[[:alnum:]\n]*$} for
      Tk versions 8.1 or higher, and the ASCII patterns
      "^\[A-Za-z\n]*$", "^\[0-9\n]*$", and
      "^\[A-Za-z0-9\n]*$" if Tk version 8.0 is being used (in this
      case, the presence of the "\n" makes the regular expressions
      a bit ugly).
The wcb::convStrsTo* callbacks replace the strings
      to be inserted into the text or ctext widget w,
      contained in the list args of the form 
      string ?tagList string tagList
      ...?,  with their uppercase or lowercase equivalents,
      respectively.
These callback procedures are implemented in the file
      wcbText.tcl, contained in the
      scripts directory.  They return an empty
      string.