# Originally, the following text was located in the-methods but as the
# text became longer and longer, it was sensible to put the history
# information into a separate file. Usually, I keep individual histories
# on each file -- don't know why I didn't do that here with all the files.
#
#						Juergen Wagner, Aug. 1993
#
#						J_Wagner@iao.fhg.de
#						gandalf@csli.stanford.edu
#
#---------------------------------------------------------------------------
#
#	This provides essential support for subcommands in Tcl.
#	The basic notion of a named object is supported by "defobject"
#	which creates a new object with an associated attribute value
#	list and a list of super-objects. The default super-object is
#	"vanilla-object".
#
#	Methods can be defined for an object by calling "defmethod" with
#	the object name, a method name, the method argument list and its
#	body. Within a method defined this way, the local variable "self"
#	will be bound to the name of the current object receiving the
#	message.
#
#	When a call to an object is executed, the first argument specifies
#	the name of the desired method. If an object does not support a
#	given method itself, the hierarchy of super-objects is searched
#	depth-first.
#
#	The default messages understood by "vanilla-object" are "help"
#	(printing some useful information), "clone NEW" (creating a copy
#	named NEW of the current object), "super" (returning a list of
#	the immediate super-objects), and "slot SLOT ?VALUE?" (query or
#	set a slot value).
#
#	This object-oriented paradigm is based on object prototypes,
#	rather than on classes. At the time of object creation, the
#	internal state of another object is cloned. After that, only
#	methods are inherited.
#
# 93-06-22 J_Wagner@iao.fhg.de - theObjects-1.0
#	Preparation for release (cleanup). The whole code in this file 
#	should probably be reimplemented in C. Since all code necessary
#	for the object system is contained in this file (modulo some basic
#	assoc functions), there shouldn't be any changes necessary in
#	other functions.
#
# 93-07-10 J_Wagner@iao.fhg.de - theObjects-1.1
#	Major overhaul: due to some incompatibility problems and deficiencies
#	of the Tcl/Tk system (dependencies on exact names of some commands),
#	defining objects no longer renames the underlying commands (too bad).
#	Objects are now simply a second layer on top of vanilla Tcl/Tk. The
#	procedure for defining default handlers, "defdefault", has been
#	replaced by a "DEFAULT" method. Slot values (internal object state)
#	is now kept in array variables, not in association lists. These
#	modifications boost performance by a factor of 10 (still, it's slow).
#
# 93-07-18 J_Wagner@iao.fhg.de - theObjects-1.2
#	Introduced the notion of (sort-of) anonymous windows where the
#	widget creation code also creates a unique name. Fixed some bugs in
#	the menubutton and menubar event handler procedures to correctly
#	deal with mouse traversal of menus. The "Output" object now optionally
#	marks those lines which have changed in a different color.
#
# 93-07-28 J_Wagner@iao.fhg.de - theObjects-2.0
#	A debugged version of C coded functions is now available. I recoded
#	(primitively - without much optimization in mind) some time-critical
#	procedures:
#
#	    anon ?root?
#		Obtains an anonymous window name.
#	    args argspecs...
#		Parses argument lists and transforms "*" into an anonymous
#		window name when found in the variable "name".
#	    defobject name ?super? ?slots?
#		Defines a new object.
#	    defmethod object ?method arglist body?
#		Define a new method.
#
#	In addition to those user-visible procedures, the internal handling
#	of message passing (handler lookup and invocation) has been coded in C.
#	The C-based version gives speedups with factors between 8 and 20 in
#	comparison to the old, Tcl-based version.
#
# 93-08-01 J_Wagner@iao.fhg.de - theObjects-2.1
#	Fixed a problem in the "reclaimall" method: methods of child windows
#	were not reclaimed properly. Extended the "help" method to print
#	more detail. Added more widgets to the release version. Avoided that
#	"slot" method redefinition warning. Added a demo button panel for
#	the demo program "init.tcl".
#
# 93-08-15 J_Wagner@iao.fhg.de - theObjects-2.2
#	Fixed some typos. Added the getpid routine to theObjects.c. Added
#	the Ilist, Timeline, and Tree widgets. Minor changes in other
#	modules. From now on, all distributed files will be identical to
#	the ones I use for my projects (with the exception of the-toolkit,
#	where some of the lines may be commented out because some of the
#	widgets/files loaded there are not yet released officially).
#
# 93-08-22 J_Wagner@iao.fhg.de - theObjects-2.3
#	Added assertlength procedure. Added Matrix widget width variable
#	width columns and general text items. Added a new Canvas method
#	"newTextElement" creating a text item on a canvas (for Matrix).
#	Added a dummy "action" option for Label object. Added the "Dismiss0"
#	and "DismissChildren" methods for Window. Minor bugfixes in some
#	modules. The simple DAG layouter routine which was only available
#	in LISP until now, is now also available as a method of the DAG
#	widget.
#
#---------------------------------------------------------------------------
