blob: 5a23bc26be160c8e21ac580e03abfc4b84f67836 [file] [log] [blame]
#
# itk::Archetype
# ----------------------------------------------------------------------
# Base class for all widgets in the [incr Tk] Toolkit. Provides
# facilities to merge widget options into a composite list of options
# for the overall widget. Derived classes add widgets and methods to
# specialize behavior.
#
# METHODS:
# configure
# configure -option
# configure -option value ?-option value?...
# Used to set/query configuration options
#
# component
# component <name> <command> ?<arg> <arg>...?
# Invokes the given <command> as a method on the component
# called <name>.
#
# itk_component add <name> <create-cmd> <option-cmds>
# Creates a component widget and merges its options into
# the composite option list for the overall widget
#
# itk_component delete <name> ?<name>...?
# Destroys a component widget and removes its options from
# the composite option list
#
# itk_option add <name> ?<name>...?
# Adds the option <name> belonging to a class or component
# widget into the option list. Options can be added even
# if they were not originally kept when the component was
# created.
#
# itk_option remove <name> ?<name>...?
# Removes the option <name> belonging to a class or component
# widget from the option list. This allows a derived class
# to turn off or redefine undesirable options inherited from
# a base class.
#
# WIDGET ATTRIBUTES:
# none
#
# ----------------------------------------------------------------------
# AUTHOR: Michael J. McLennan
# Bell Labs Innovations for Lucent Technologies
# mmclennan@lucent.com
# http://www.tcltk.com/itcl
#
# RCS: $Id: Archetype.itk,v 1.1 1998/07/27 18:45:26 stanton Exp $
# ----------------------------------------------------------------------
# Copyright (c) 1993-1998 Lucent Technologies, Inc.
# ======================================================================
# See the file "license.terms" for information on usage and
# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
itcl::class itk::Archetype {
constructor {args} {
_initOptionInfo
eval itk_initialize $args
}
destructor {
_deleteOptionInfo
}
method cget {option} @Archetype-cget
method configure {{option ""} args} \
@Archetype-configure
method config {{option ""} args} {
eval configure $option $args
}
method component {{name ""} args} \
@Archetype-component
protected method itk_component {option args} \
@Archetype-itk_component
protected method itk_option {option args} \
@Archetype-itk_option
protected method itk_initialize {args} \
@Archetype-itk_initialize
protected variable itk_option
protected variable itk_component
protected variable itk_interior ""
# ------------------------------------------------------------------
# Options common to all widgets
# ------------------------------------------------------------------
itk_option define -clientdata clientData ClientData ""
# ------------------------------------------------------------------
# Private methods needed for option management
# ------------------------------------------------------------------
private method _initOptionInfo {} @Archetype-init
private method _deleteOptionInfo {} @Archetype-delete
}