english
version "1.0"
identify "wxyz"

# Copyright (c) 1998-1999 by Wayne C. Gramlich.
# All rights reserved.
#
# Permission to use, copy, modify, distribute, and sell this software
# for any purpose is hereby granted without fee provided that the above
# copyright notice and this permission are retained.  The author makes
# no representations about the suitability of this software for any purpose.
# It is provided "as is" without express or implied warranty.

module swit_widget

#: This module contains the SWIT widget implementation.


#: {widget} procedures:

procedure application_get@widget
    takes
	widget widget
    returns application

    #: This procedure will return the {application} object associated
    #, with {widget}.


procedure background_color_append@widget
    takes
	widget widget
	tcl_command tcl_command
    returns_nothing

    #: This procedure will append the background color for widget to
    #, {tcl_command}.


procedure background_get@widget
    takes
	widget widget
    returns color

    #: This procedure will return the background color associated with
    #, {widget}.  ??@{color} is returned if {widget} is inheriting
    #, its background color from its parent.


procedure background_set@widget
    takes
	widget widget
	background color
    returns_nothing

    #: This procedure will set the background color of {widget} to
    #, {background}.  If {background} is the transparent color,
    #, the background color is inherited from the parent of {widget}.


procedure children_increment@widget
    takes
	widget widget
    returns_nothing

    #: This procedure will cause each of the child widgets in {widget}
    #, to have its modificaiton count incremented.


procedure clone@widget
    takes
	master_widget widget
	clone_parent frame
    returns widget

    #: This procedure will create a clone of {master_widget} for the
    #, {clone_parent} frame.


procedure clone_get@widget
    takes
	widget widget
    returns clone

    #: This procedure will return the {clone} that is the ultimate
    #, parent of {widget}.


procedure column_get@widget
    takes
	widget widget
    returns unsigned

    #: This procedure will return the column span for {widget}.


procedure column_set@widget
    takes
	widget widget
	column unsigned
    returns_nothing

    #: This procedure will set the column span for {widget} to {column}.


procedure column_span_get@widget
    takes
	widget widget
    returns unsigned

    #: This procedure will return the column span for {widget}.


procedure column_span_set@widget
    takes
	widget widget
	column_span unsigned
    returns_nothing

    #: This procedure will set the column span for {widget} to {column_span}.


procedure compare@widget
    takes
	widget1 frame
	widget2 frame
    returns integer

    #: This procedure will return -1, 0, or 1 depending upon whether
    #, {widget1} is less than, equal to, or greater than {widget2} in
    #, its row order position.


procedure create@widget1[additional_type]
    routine_types
	procedure additional_set
	    takes widget_additional, additional_type
	    returns_nothing
    takes
	uid unsigned
	parent frame
	additional_type additional_type
	additional_set additional_set
    returns widget

    #: This procedure will create and return a new {widget} object
    #, with a unique identifier of {uid}, a parent frame of {parent},
    #, and {widget_additional} variant typeof {additional_type}.
    #, The procedure variable {additional_set} is used to set the
    #, {widget_additional} field of the new widget.


procedure destroy@widget
    takes
	widget widget
    returns_nothing

    #: This procedure will cause {widget} to be destroyed.


procedure destroy@widget1[additional_type]
    takes
	additional additional_type
    returns_nothing
    needs
	procedure widget_get@additional_type
	    takes additional_type
	    returns widget

    #: This procedure will emit a Tcl/Tk command to destroy {widget}.


procedure drop@widget
    takes
	widget widget
    returns_nothing

    #: This procedure will cause {widget} to be dropped.


procedure drop@widget1[additional_type]
    takes
	additional additional_type
    returns_nothing
    needs
	procedure widget_get@additional_type
	    takes additional_type
	    returns widget

    #: This procedure will emit a Tcl/Tk command to destroy {widget}.


procedure event@widget
    takes
	widget widget
	line string
	index unsigned
	clone clone
	event_handler event_handler
    returns_nothing

    #: This procedure will deliver an event to {widget} with {line} as
    #, its argument.


procedure event_handler_create@widget
    takes
	widget widget
    returns event_handler

    #: This procedure will create and return an {event_handler} object
    #, for {widget}.


procedure foreground_color_append@widget
    takes
	widget widget
	tcl_command tcl_command
    returns_nothing

    #: This procedure will append the foreground color for widget to
    #, {tcl_command}.


procedure foreground_get@widget
    takes
	widget widget
    returns color

    #: This procedure will return the foreground color associated with
    #, {widget}.  ??@{color} is returned if {widget} is inheriting
    #, its foreground color from its parent.


procedure foreground_set@widget
    takes
	widget widget
	foreground color
    returns_nothing

    #: This procedure will set the foreground color of {widget} to
    #, {foreground}.  If {foreground} is the transparent color,
    #, the foreground color is inherited from the parent of {widget}.


procedure grid_increment@widget
    takes
	widget widget
    returns_nothing

    #: This procedure will increment the grid modification count for
    #, {widget}.


procedure highlight_set@widget
    takes
	widget widget
	highlight logical
    returns_nothing

    #: This procedure will set {widget} to be highlighted depending
    #, upon whether {highlight} is {true} or {false}.


procedure highlight_get@widget
    takes
	widget widget
    returns logical

    #: This procedure will return whether or not {widget} is marked for
    #, highlighting.


procedure html_generate@widget
    takes
	widget widget
	html_stream out_stream
	indent unsigned
	delta unsigned
    returns_nothing

    #: This procedure will output {widget} as HTML to {html_stream}
    #, indented by {indent}.  New levels are indented by {delta}.


procedure increment@widget
    takes
	widget widget
    returns_nothing

    #: This procedure will increment the modification count for {widget}
    #, and its parents.


procedure is_highlighted@widget
    takes
	widget widget
    returns logical

    #: This procedure will return {true} if {widgit} is supposed to
    #, be highlighted.


procedure is_synchronized@widget
    takes
	master_widget widget
	clone_widget widget
    returns logical

    #: This procedure will return {true}@{logical} if the modification
    #, counts of {master_widget} and {clone_widget} are equal and
    #, {false} otherwise.


procedure is_synchronized@widget1[additional_type]
    takes
	master additional_type
	clone additional_type
    returns logical
    needs
	procedure widget_get@additional_type
	    takes additional_type
	    returns widget

    #: This procedure will return {true}@{logical} if the modification
    #, count for {master} and {clone} are equal and {false} otherwise.


procedure is_master_get@widget
    takes
	widget widget
    returns logical

    #: This procedure will return {true} if {widget} is a member of
    #, the master clone.


procedure name_get@widget
    takes
	widget widget
    returns string

    #: This procedure will return the private name associated with
    #, {widget}.


procedure name_set@widget
    takes
	widget widget
	new_name string
    returns_nothing

    #: This procedure will set the private name of {widget} to {new_name}.


procedure relief_get@widget
    takes
	widget widget
    returns relief

    #: This procedure will return the relief span for {widget}.


procedure relief_set@widget
    takes
	widget widget
	relief relief
    returns_nothing

    #: This procedure will set the relief span for {widget} to {relief}.


procedure restore@widget
    takes
	restore restore
	xframe frame
	application application
    returns widget

    #: This procedure will restore a widget from {restore} into {frame}.


procedure row_get@widget
    takes
	widget widget
    returns unsigned

    #: This procedure will return the row span for {widget}.


procedure row_set@widget
    takes
	widget widget
	row unsigned
    returns_nothing

    #: This procedure will set the row span for {widget} to {row}.


procedure row_span_get@widget
    takes
	widget widget
    returns unsigned

    #: This procedure will return the row span for {widget}.


procedure row_span_set@widget
    takes
	widget widget
	row_span unsigned
    returns_nothing

    #: This procedure will set the row span for {widget} to {row_span}.


procedure save@widget
    takes
	widget widget
	save_stream out_stream
    returns_nothing

    #: This procedure will save the data of {widget} to {save_stream}.


procedure search@widget
    takes
	widget widget
	uid unsigned
    returns widget

    #: This procedure will recursively search through {widget} until
    #, it finds a {widget} with a unique identifier of {uid}.  If no
    #, matching {widget} is found, ??@{widget} is returned.


procedure sticky_get@widget
    takes
	widget widget
    returns sticky

    #: This procedure will return the sticky setting for {widget}.


procedure sticky_set@widget
    takes
	widget widget
	sticky sticky
    returns_nothing

    #: This procedure will set the sticky setting for {widget} to {sticky}.


procedure synchronize@widget
    takes
	master_widget widget
	clone_widget widget
    returns_nothing

    #: This procedure will make the modification count of {clone_widget}
    #, equal to the modification count of {master_widget}.


procedure synchronize@widget1[additional_type]
    takes
	master additional_type
	clone additional_type
    returns_nothing
    needs
	procedure widget_get@additional_type
	    takes additional_type
	    returns widget

    #: This procedure will make the modification count of {clone}
    #, equal to the modificatin count of {master}.


procedure update@widget
    takes
	master_widget widget
	clone_widget widget
    returns_nothing

    #: This procedure will update {clone_widget} to be in synch.
    #, with {master_widget}.


procedure window_path_append@widget
    takes
	widget widget
	tcl_command tcl_command
    returns_nothing

    #: This procedure will append the Tcl/Tk window path for {widget}
    #, to {tcl_command}.


#: {widget_additional} procedures:

procedure destroy@widget_additional
    takes
	additional widget_additional
    returns_nothing

    #: This procedure will destroy {widget_additional}.


procedure event@widget_additional
    takes
	additional widget_additional
	line string
	index unsigned
	clone clone
	event_handler event_handler
    returns_nothing

    #: This procedure will deliver an event to {additional} with {line} as
    #, its arguement.


procedure restore@widget_additional
    takes
	restore restore
	parent frame
	kind widget_kind
	application application
    returns widget

    #: This procedure will restore a widget from {restore} into {parent}.


procedure save@widget_additional
    takes
	additional widget_additional
	save_stream out_stream
    returns_nothing

    #: This procedure will save {additional} to {save_stream}.


procedure update@widget_additional
    takes
	master_additional widget_additional
	clone_additional widget_additional
    returns_nothing

    #: This procedure will update {clone_additional} to be in synch.
    #, with {master_additional}.


#: {widget_kind} procedures:

procedure string_convert@widget_kind
    takes
	widget_kind widget_kind
    returns string

    #: This procedure will return the string representation of {widget_kind}.