trusty (3) Tk_ConfigureInfo.3tk.gz

Provided by: tk8.5-doc_8.5.15-2ubuntu3_all bug

NAME

       Tk_ConfigureWidget,  Tk_ConfigureInfo,  Tk_ConfigureValue, Tk_FreeOptions - process configuration options
       for widgets

SYNOPSIS

       #include <tk.h>

       int
       Tk_ConfigureWidget(interp, tkwin, specs, argc, argv, widgRec, flags)

       int
       Tk_ConfigureInfo(interp, tkwin, specs, widgRec, argvName, flags)

       int
       Tk_ConfigureValue(interp, tkwin, specs, widgRec, argvName, flags)

       Tk_FreeOptions(specs, widgRec, display, flags)

ARGUMENTS

       Tcl_Interp *interp (in)              Interpreter to use for returning error messages.

       Tk_Window tkwin (in)                 Window used to represent widget (needed to set up X resources).

       Tk_ConfigSpec *specs (in)            Pointer to table specifying legal  configuration  options  for  this
                                            widget.

       int argc (in)                        Number of arguments in argv.

       const char **argv (in)               Command-line options for configuring widget.

       char *widgRec (in/out)               Points  to  widget  record  structure.  Fields in this structure get
                                            modified by Tk_ConfigureWidget to hold configuration information.

       int flags (in)                       If non-zero, then it specifies an OR-ed combination  of  flags  that
                                            control     the    processing    of    configuration    information.
                                            TK_CONFIG_ARGV_ONLY causes the option database and  defaults  to  be
                                            ignored,  and  flag  bits  TK_CONFIG_USER_BIT and higher are used to
                                            selectively disable entries in specs.

       type name type (in)                  The name of the type of a widget record.

       field name field (in)                The name of a field in records of type type.

       const char *argvName (in)            The name used on Tcl command lines to refer to a  particular  option
                                            (e.g.  when  creating  a  widget  or  invoking  the configure widget
                                            command).  If non-NULL, then information is returned only  for  this
                                            option.   If  NULL,  then  information is returned for all available
                                            options.

       Display *display (in)                Display containing widget whose record is being  freed;   needed  in
                                            order to free up resources.
_________________________________________________________________

DESCRIPTION

       Note:  Tk_ConfigureWidget  should  be  replaced  with  the  new Tcl_Obj based API Tk_SetOptions.  The old
       interface is retained for backward compatibility.

       Tk_ConfigureWidget is called to configure various aspects of a widget,  such  as  colors,  fonts,  border
       width,  etc.  It is intended as a convenience procedure to reduce the amount of code that must be written
       in individual widget managers to handle configuration information.  It is typically invoked when  widgets
       are  created,  and again when the configure command is invoked for a widget.  Although intended primarily
       for widgets, Tk_ConfigureWidget can be used in other situations where argc-argv information is to be used
       to fill in a record structure, such as configuring graphical elements for a canvas widget or entries of a
       menu.

       Tk_ConfigureWidget processes a table specifying the configuration options that are supported (specs)  and
       a  collection of command-line arguments (argc and argv) to fill in fields of a record (widgRec).  It uses
       the option database and defaults specified in specs to fill in fields of widgRec that are  not  specified
       in  argv.   Tk_ConfigureWidget normally returns the value TCL_OK; in this case it does not modify interp.
       If an error occurs then TCL_ERROR is returned and Tk_ConfigureWidget  will  leave  an  error  message  in
       interp->result  in  the  standard  Tcl  fashion.   In the event of an error return, some of the fields of
       widgRec could already have been set, if configuration information for  them  was  successfully  processed
       before  the  error  occurred.   The  other  fields  will  be  set  to  reasonable  initial values so that
       Tk_FreeOptions can be called for cleanup.

       The specs array specifies the kinds of configuration options expected by the widget.  Each of its entries
       specifies one configuration option and has the following structure:
              typedef struct {
                  int type;
                  char *argvName;
                  char *dbName;
                  char *dbClass;
                  char *defValue;
                  int offset;
                  int specFlags;
                  Tk_CustomOption *customPtr;
              } Tk_ConfigSpec;
       The  type  field  indicates  what  type of configuration option this is (e.g. TK_CONFIG_COLOR for a color
       value, or TK_CONFIG_INT for an integer value).  The type field indicates how to  use  the  value  of  the
       option  (more on this below).  The argvName field is a string such as “-font” or “-bg”, which is compared
       with the values in argv (if argvName is NULL it means this is  a  grouped  entry;   see  GROUPED  ENTRIES
       below).   The  dbName  and  dbClass  fields  are  used  to  look up a value for this option in the option
       database.  The defValue field specifies a default value for this configuration  option  if  no  value  is
       specified  in either argv or the option database.  Offset indicates where in widgRec to store information
       about this option, and specFlags contains additional  information  to  control  the  processing  of  this
       configuration  option  (see  FLAGS  below).   The  last  field,  customPtr,  is  only  used  if  type  is
       TK_CONFIG_CUSTOM;  see CUSTOM OPTION TYPES below.

       Tk_ConfigureWidget first processes argv to see which (if any) configuration options are specified  there.
       Argv  must contain an even number of fields;  the first of each pair of fields must match the argvName of
       some entry in specs (unique abbreviations are acceptable), and the second field of the pair contains  the
       value  for  that  configuration  option.   If  there are entries in spec for which there were no matching
       entries in argv, Tk_ConfigureWidget uses the dbName and dbClass fields of the specs entry  to  probe  the
       option database;  if a value is found, then it is used as the value for the option.  Finally, if no entry
       is found in the option database, the defValue field of the specs entry is  used  as  the  value  for  the
       configuration option.  If the defValue is NULL, or if the TK_CONFIG_DONT_SET_DEFAULT bit is set in flags,
       then there is no default value and this specs entry will be ignored if no value is specified in  argv  or
       the option database.

       Once  a  string  value  has been determined for a configuration option, Tk_ConfigureWidget translates the
       string value into a more useful form, such as a color if type is TK_CONFIG_COLOR or an integer if type is
       TK_CONFIG_INT.  This value is then stored in the record pointed to by widgRec.  This record is assumed to
       contain  information  relevant  to  the  manager  of  the  widget;   its  exact  type   is   unknown   to
       Tk_ConfigureWidget.   The  offset  field  of  each  specs  entry  indicates where in widgRec to store the
       information about this configuration option.  You should use  the  Tk_Offset  macro  to  generate  offset
       values  (see below for a description of Tk_Offset).  The location indicated by widgRec and offset will be
       referred to as the “target” in the descriptions below.

       The type field of each entry in specs determines what to do with the string value of  that  configuration
       option.  The legal values for type, and the corresponding actions, are:

       TK_CONFIG_ACTIVE_CURSOR
              The  value  must  be  an  ASCII  string  identifying  a  cursor  in a form suitable for passing to
              Tk_GetCursor.  The value is converted to a Tk_Cursor by calling Tk_GetCursor  and  the  result  is
              stored  in  the  target.  In addition, the resulting cursor is made the active cursor for tkwin by
              calling XDefineCursor.  If TK_CONFIG_NULL_OK is specified in specFlags then the value  may  be  an
              empty  string,  in  which  case  the target and tkwin's active cursor will be set to None.  If the
              previous value of the target was not None, then it is freed by passing it to Tk_FreeCursor.

       TK_CONFIG_ANCHOR
              The value must be an ASCII string identifying an anchor point in  one  of  the  ways  accepted  by
              Tk_GetAnchor.   The  string  is converted to a Tk_Anchor by calling Tk_GetAnchor and the result is
              stored in the target.

       TK_CONFIG_BITMAP
              The value must be an ASCII string  identifying  a  bitmap  in  a  form  suitable  for  passing  to
              Tk_GetBitmap.  The value is converted to a Pixmap by calling Tk_GetBitmap and the result is stored
              in the target.  If TK_CONFIG_NULL_OK is specified in specFlags then the  value  may  be  an  empty
              string,  in  which  case  the  target is set to None.  If the previous value of the target was not
              None, then it is freed by passing it to Tk_FreeBitmap.

       TK_CONFIG_BOOLEAN
              The value must be an ASCII string specifying a boolean value.  Any of the  values  “true”,  “yes”,
              “on”,  or  “1”,  or an abbreviation of one of these values, means true; any of the values “false”,
              “no”, “off”, or “0”, or an abbreviation of one of  these  values,  means  false.   The  target  is
              expected  to  be  an integer;  for true values it will be set to 1 and for false values it will be
              set to 0.

       TK_CONFIG_BORDER
              The value must be an ASCII string identifying a border color in a form  suitable  for  passing  to
              Tk_Get3DBorder.   The  value  is  converted to a (Tk_3DBorder *) by calling Tk_Get3DBorder and the
              result is stored in the target.  If TK_CONFIG_NULL_OK is specified in specFlags then the value may
              be  an  empty  string, in which case the target will be set to NULL.  If the previous value of the
              target was not NULL, then it is freed by passing it to Tk_Free3DBorder.

       TK_CONFIG_CAP_STYLE
              The value must be an ASCII string identifying  a  cap  style  in  one  of  the  ways  accepted  by
              Tk_GetCapStyle.   The  string  is  converted to an integer value corresponding to the cap style by
              calling Tk_GetCapStyle and the result is stored in the target.

       TK_CONFIG_COLOR
              The value must be an ASCII  string  identifying  a  color  in  a  form  suitable  for  passing  to
              Tk_GetColor.   The  value  is  converted to an (XColor *) by calling Tk_GetColor and the result is
              stored in the target.  If TK_CONFIG_NULL_OK is specified in specFlags then the  value  may  be  an
              empty  string,  in which case the target will be set to None.  If the previous value of the target
              was not NULL, then it is freed by passing it to Tk_FreeColor.

       TK_CONFIG_CURSOR
              This option is identical to TK_CONFIG_ACTIVE_CURSOR except that the new cursor  is  not  made  the
              active one for tkwin.

       TK_CONFIG_CUSTOM
              This  option  allows  applications  to  define new option types.  The customPtr field of the entry
              points to a structure defining the new option type.  See the section CUSTOM OPTION TYPES below for
              details.

       TK_CONFIG_DOUBLE
              The  value must be an ASCII floating-point number in the format accepted by strtol.  The string is
              converted to a double value, and the value is stored in the target.

       TK_CONFIG_END
              Marks the end of the table.  The last entry in specs must have this type;  all of its other fields
              are ignored and it will never match any arguments.

       TK_CONFIG_FONT
              The value must be an ASCII string identifying a font in a form suitable for passing to Tk_GetFont.
              The value is converted to a Tk_Font by calling Tk_GetFont and the result is stored in the  target.
              If  TK_CONFIG_NULL_OK  is  specified  in specFlags then the value may be an empty string, in which
              case the target will be set to NULL.  If the previous value of the target was not NULL, then it is
              freed by passing it to Tk_FreeFont.

       TK_CONFIG_INT
              The  value  must  be  an ASCII integer string in the format accepted by strtol (e.g.  “0” and “0x”
              prefixes may be used to specify octal  or  hexadecimal  numbers,  respectively).   The  string  is
              converted to an integer value and the integer is stored in the target.

       TK_CONFIG_JOIN_STYLE
              The  value  must  be  an  ASCII  string  identifying  a  join style in one of the ways accepted by
              Tk_GetJoinStyle.  The string is converted to an integer value corresponding to the join  style  by
              calling Tk_GetJoinStyle and the result is stored in the target.

       TK_CONFIG_JUSTIFY
              The  value  must be an ASCII string identifying a justification method in one of the ways accepted
              by Tk_GetJustify.  The string is converted to a Tk_Justify by calling Tk_GetJustify and the result
              is stored in the target.

       TK_CONFIG_MM
              The  value  must  specify a screen distance in one of the forms acceptable to Tk_GetScreenMM.  The
              string is converted to double-precision floating-point distance in millimeters and  the  value  is
              stored in the target.

       TK_CONFIG_PIXELS
              The value must specify screen units in one of the forms acceptable to Tk_GetPixels.  The string is
              converted to an integer distance in pixels and the value is stored in the target.

       TK_CONFIG_RELIEF
              The value must be an ASCII string  identifying  a  relief  in  a  form  suitable  for  passing  to
              Tk_GetRelief.   The  value is converted to an integer relief value by calling Tk_GetRelief and the
              result is stored in the target.

       TK_CONFIG_STRING
              A copy of the value is made by allocating memory space with Tcl_Alloc and copying the  value  into
              the  dynamically-allocated  space.   A  pointer  to  the  new  string is stored in the target.  If
              TK_CONFIG_NULL_OK is specified in specFlags then the value may be an empty string, in  which  case
              the  target  will  be  set  to NULL.  If the previous value of the target was not NULL, then it is
              freed by passing it to Tcl_Free.

       TK_CONFIG_SYNONYM
              This type value identifies special entries in specs that are synonyms for other  entries.   If  an
              argv  value  matches  the  argvName  of a TK_CONFIG_SYNONYM entry, the entry is not used directly.
              Instead, Tk_ConfigureWidget searches specs for another entry whose argvName is  the  same  as  the
              dbName  field  in the TK_CONFIG_SYNONYM entry;  this new entry is used just as if its argvName had
              matched the argv value.  The synonym mechanism allows multiple argv values to be used for a single
              configuration option, such as “-background” and “-bg”.

       TK_CONFIG_UID
              The  value  is translated to a Tk_Uid (by passing it to Tk_GetUid).  The resulting value is stored
              in the target.  If TK_CONFIG_NULL_OK is specified in specFlags and the value is  an  empty  string
              then the target will be set to NULL.

       TK_CONFIG_WINDOW
              The  value  must  be  a  window path name.  It is translated to a Tk_Window token and the token is
              stored in the target.

GROUPED ENTRIES

       In some cases it is useful to generate  multiple  resources  from  a  single  configuration  value.   For
       example,  a  color  name  might  be  used  both  to  generate  the  background  color for a widget (using
       TK_CONFIG_COLOR) and to generate a 3-D border to draw around the  widget  (using  TK_CONFIG_BORDER).   In
       cases  like this it is possible to specify that several consecutive entries in specs are to be treated as
       a group.  The first entry is used to determine a value (using its argvName, dbName, dbClass, and defValue
       fields).   The  value  will  be  processed  several  times  (one for each entry in the group), generating
       multiple different resources and modifying multiple targets within widgRec.  Each of  the  entries  after
       the  first  must have a NULL value in its argvName field;  this indicates that the entry is to be grouped
       with the entry that precedes it.  Only the type and offset fields are used from these follow-on entries.

FLAGS

       The flags argument passed to Tk_ConfigureWidget is used in conjunction with the specFlags fields  in  the
       entries  of  specs  to  provide  additional  control over the processing of configuration options.  These
       values are used in three different ways as described below.

       First, if the flags argument to Tk_ConfigureWidget has the TK_CONFIG_ARGV_ONLY bit  set  (i.e.,  flags  |
       TK_CONFIG_ARGV_ONLY  !=  0), then the option database and defValue fields are not used.  In this case, if
       an entry in specs does not match a field in argv then nothing happens: the corresponding  target  is  not
       modified.   This feature is useful when the goal is to modify certain configuration options while leaving
       others in their current state, such as when a configure widget command is being processed.

       Second, the specFlags field of an entry in specs may be used to control the  processing  of  that  entry.
       Each specFlags field may consists of an OR-ed combination of the following values:

       TK_CONFIG_COLOR_ONLY
              If  this  bit is set then the entry will only be considered if the display for tkwin has more than
              one bit plane.  If the display is monochromatic then this specs entry will be ignored.

       TK_CONFIG_MONO_ONLY
              If this bit is set then the entry will only be considered if the display for tkwin has exactly one
              bit plane.  If the display is not monochromatic then this specs entry will be ignored.

       TK_CONFIG_NULL_OK
              This  bit  is  only  relevant for some types of entries (see the descriptions of the various entry
              types above).  If this bit is set, it indicates that an  empty  string  value  for  the  field  is
              acceptable  and  if it occurs then the target should be set to NULL or None, depending on the type
              of the target.  This flag is typically used to allow a feature to be turned off entirely, e.g. set
              a  cursor  value to None so that a window simply inherits its parent's cursor.  If this bit is not
              set then empty strings are processed as strings, which generally results in an error.

       TK_CONFIG_DONT_SET_DEFAULT
              If this bit is one, it means that the defValue  field  of  the  entry  should  only  be  used  for
              returning  the  default value in Tk_ConfigureInfo.  In calls to Tk_ConfigureWidget no default will
              be supplied for entries with this flag set;  it is assumed that the caller has already supplied  a
              default  value  in the target location.  This flag provides a performance optimization where it is
              expensive to process the default string:  the client can compute the default once, save the value,
              and provide it before calling Tk_ConfigureWidget.

       TK_CONFIG_OPTION_SPECIFIED
              This  bit is deprecated. It used to be set and cleared by Tk_ConfigureWidget so that callers could │
              detect what entries were specified in argv, but it was removed because it was  inherently  thread- │
              unsafe. Code that wishes to detect what options were specified should use Tk_SetOptions instead.

       The  TK_CONFIG_MONO_ONLY  and  TK_CONFIG_COLOR_ONLY flags are typically used to specify different default
       values for monochrome and color displays.  This is done  by  creating  two  entries  in  specs  that  are
       identical   except   for  their  defValue  and  specFlags  fields.   One  entry  should  have  the  value
       TK_CONFIG_MONO_ONLY in its specFlags and the default value for monochrome displays in its defValue;   the
       other  entry should have the value TK_CONFIG_COLOR_ONLY in its specFlags and the appropriate defValue for
       color displays.

       Third, it is possible to use flags and specFlags together to  selectively  disable  some  entries.   This
       feature  is  not  needed  very  often.   It is useful in cases where several similar kinds of widgets are
       implemented in one place.  It allows a single specs table  to  be  created  with  all  the  configuration
       options  for  all  the  widget types.  When processing a particular widget type, only entries relevant to
       that type will be used.  This effect is achieved by setting the high-order bits (those in positions equal
       to  or greater than TK_CONFIG_USER_BIT) in specFlags values or in flags.  In order for a particular entry
       in specs to be used, its high-order bits must match exactly the high-order bits of the flags value passed
       to  Tk_ConfigureWidget.  If a specs table is being used for N different widget types, then N of the high-
       order bits will be used.  Each specs entry will have one of more of those bits set in its specFlags field
       to  indicate the widget types for which this entry is valid.  When calling Tk_ConfigureWidget, flags will
       have a single one of these bits set to select the entries for the desired widget  type.   For  a  working
       example of this feature, see the code in tkButton.c.

TK_OFFSET

       The  Tk_Offset  macro  is  provided  as  a  safe  way  of  generating  the  offset  values for entries in
       Tk_ConfigSpec structures.  It takes two arguments:  the name of a type of record, and the name of a field
       in that record.  It returns the byte offset of the named field in records of the given type.

TK_CONFIGUREINFO

       The  Tk_ConfigureInfo  procedure  may be used to obtain information about one or all of the options for a
       given widget.  Given a token for a window (tkwin), a table describing the  configuration  options  for  a
       class  of  widgets  (specs), a pointer to a widget record containing the current information for a widget
       (widgRec), and a NULL argvName argument, Tk_ConfigureInfo  generates  a  string  describing  all  of  the
       configuration   options  for  the  window.   The  string  is  placed  in  interp->result.   Under  normal
       circumstances it returns TCL_OK;  if an  error  occurs  then  it  returns  TCL_ERROR  and  interp->result
       contains an error message.

       If  argvName is NULL, then the value left in interp->result by Tk_ConfigureInfo consists of a list of one
       or more entries, each of which describes one configuration option (i.e. one entry in specs).  Each  entry
       in  the  list  will  contain  either  two  or  five values.  If the corresponding entry in specs has type
       TK_CONFIG_SYNONYM, then the list will contain two values:  the argvName for  the  entry  and  the  dbName
       (synonym  name).   Otherwise the list will contain five values:  argvName, dbName, dbClass, defValue, and
       current value.  The current value is computed from the appropriate field of widgRec by calling procedures
       like Tk_NameOfColor.

       If  the  argvName  argument  to  Tk_ConfigureInfo  is  non-NULL,  then  it indicates a single option, and
       information is returned only for that option.  The  string  placed  in  interp->result  will  be  a  list
       containing  two  or  five values as described above;  this will be identical to the corresponding sublist
       that would have been returned if argvName had been NULL.

       The flags argument to Tk_ConfigureInfo is used to restrict the specs entries to  consider,  just  as  for
       Tk_ConfigureWidget.

TK_CONFIGUREVALUE

       Tk_ConfigureValue  takes arguments similar to Tk_ConfigureInfo; instead of returning a list of values, it
       just returns the current value of the option given by argvName (argvName must not be NULL).  The value is
       returned in interp->result and TCL_OK is normally returned as the procedure's result.  If an error occurs
       in Tk_ConfigureValue (e.g., argvName is not a valid option name), TCL_ERROR  is  returned  and  an  error
       message is left in interp->result.  This procedure is typically called to implement cget widget commands.

TK_FREEOPTIONS

       The  Tk_FreeOptions  procedure  may  be  invoked  during  widget  cleanup to release all of the resources
       associated with configuration options.  It scans through specs and for  each  entry  corresponding  to  a
       resource  that  must be explicitly freed (e.g. those with type TK_CONFIG_COLOR), it frees the resource in
       the widget record.  If the field in the widget record does not refer to a resource (e.g.  it  contains  a
       null  pointer)  then  no resource is freed for that entry.  After freeing a resource, Tk_FreeOptions sets
       the corresponding field of the widget record to null.

CUSTOM OPTION TYPES

       Applications can extend the built-in configuration types with additional configuration types  by  writing
       procedures  to  parse  and  print  options  of  the  a  type  and  creating a structure pointing to those
       procedures:
              typedef struct Tk_CustomOption {
                  Tk_OptionParseProc *parseProc;
                  Tk_OptionPrintProc *printProc;
                  ClientData clientData;
              } Tk_CustomOption;

              typedef int Tk_OptionParseProc(
                  ClientData clientData,
                  Tcl_Interp *interp,
                  Tk_Window tkwin,
                  char *value,
                  char *widgRec,
                  int offset);

              typedef char *Tk_OptionPrintProc(
                  ClientData clientData,
                  Tk_Window tkwin,
                  char *widgRec,
                  int offset,
                  Tcl_FreeProc **freeProcPtr);
       The Tk_CustomOption structure contains three fields, which are pointers  to  the  two  procedures  and  a
       clientData  value to be passed to those procedures when they are invoked.  The clientData value typically
       points to a structure containing information that is needed by the procedures when they are  parsing  and
       printing options.

       The  parseProc procedure is invoked by Tk_ConfigureWidget to parse a string and store the resulting value
       in the widget record.  The clientData argument is a copy of the clientData field in  the  Tk_CustomOption
       structure.  The interp argument points to a Tcl interpreter used for error reporting.  Tkwin is a copy of
       the tkwin argument to Tk_ConfigureWidget.  The value argument is a string describing the  value  for  the
       option;   it could have been specified explicitly in the call to Tk_ConfigureWidget or it could come from
       the option database or a default.  Value will never be a null pointer  but  it  may  point  to  an  empty
       string.   RecordPtr is the same as the widgRec argument to Tk_ConfigureWidget;  it points to the start of
       the widget record to modify.  The last argument, offset, gives the offset in bytes from the start of  the
       widget record to the location where the option value is to be placed.  The procedure should translate the
       string to whatever form is appropriate for the option and store the  value  in  the  widget  record.   It
       should normally return TCL_OK, but if an error occurs in translating the string to a value then it should
       return TCL_ERROR and store an error message in interp->result.

       The printProc procedure is called by Tk_ConfigureInfo to produce a string value  describing  an  existing
       option.   Its  clientData,  tkwin,  widgRec,  and  offset  arguments  all  have  the  same meaning as for
       Tk_OptionParseProc procedures.  The printProc procedure should examine the option whose value  is  stored
       at  offset  in  widgRec, produce a string describing that option, and return a pointer to the string.  If
       the string is stored in dynamically-allocated memory, then the procedure must  set  *freeProcPtr  to  the
       address  of  a  procedure to call to free the string's memory;  Tk_ConfigureInfo will call this procedure
       when it is finished with the string.  If the result string is stored in static memory then printProc need
       not do anything with the freeProcPtr argument.

       Once parseProc and printProc have been defined and a Tk_CustomOption structure has been created for them,
       options of  this  new  type  may  be  manipulated  with  Tk_ConfigSpec  entries  whose  type  fields  are
       TK_CONFIG_CUSTOM and whose customPtr fields point to the Tk_CustomOption structure.

EXAMPLES

       Although  the  explanation  of  Tk_ConfigureWidget  is  fairly  complicated,  its  actual  use  is pretty
       straightforward.  The easiest way to get started is to copy  the  code  from  an  existing  widget.   The
       library  implementation  of  frames  (tkFrame.c)  has  a  simple  configuration  table,  and  the library
       implementation of buttons (tkButton.c) has a much  more  complex  table  that  uses  many  of  the  fancy
       specFlags mechanisms.

SEE ALSO

       Tk_SetOptions(3tk)

KEYWORDS

       anchor,  bitmap,  boolean, border, cap style, color, configuration options, cursor, custom, double, font,
       integer, join style, justify, millimeters, pixels, relief, synonym, uid