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_button

#: This module contains the SWIT button widget implementation.


#: {button} procedures:

procedure background_get@button
    takes
	button button
    returns color

    #: This procedure will return the background color of {button}.


procedure background_set@button
    takes
	button button
	background color
    returns_nothing

    #: This procedure will set the background color of {button}
    #, to {background}.


procedure clone@button
    takes
	master_button button
	frame frame
    returns button

    #: This procedure will cause a clone of {master} to be created
    #, in {frame}.


procedure clone_get@button
    takes
	button button
    returns clone

    #: This procedure will return the parent clone of {button}.


procedure configure@button
    takes
	button button
	mode button_mode
    returns_nothing

    #: This procedure configure {button} using {mode}.  If {mode} is
    #, {normal}, the button is raised with a white background.  If
    #, {mode} is {disabled}, the button is flat with the button text
    #, greyed out.  If {mode} is {active}, the button is sunken with
    #, a light grey background.


procedure create@button
    routine_types
	procedure button_call_back
	    takes button
	    returns_nothing
    takes
	parent frame
	uid unsigned
	text string
	button_call_back button_call_back
	event_number unsigned
    returns button

    #: This procedure will create and return a {button} object that
    #, is contained in {parent} unique identifier of {uid}, button
    #, text of {text}, and a call back procedure of {buton_call_back}.
    #, If {event_number} is 0, a new event number is allocated in the
    #, application; otherwise, {event_number} is used as is.


procedure destroy@button
    takes
	button button
    returns_nothing

    #: This procedure will destroy {button}.


procedure disable@button
    takes
	button button
    returns_nothing

    #: This procedure will cause {button} to be disabled.


procedure drop@button
    takes
	button button
    returns_nothing

    #: This procedure will cause {button} to be eventually destroyed
    #, the update process gets around to it.


procedure enable@button
    takes
	button button
    returns_nothing

    #: This procedure will cause {button} to be enabled.


procedure event@button
    takes
	button button
	line string
	index unsigned
    returns_nothing

    #: This procedure is will fire an event off for {button}.


procedure foreground_get@button
    takes
	button button
    returns color

    #: This procedure will return the foreground color of {button}.


procedure foreground_set@button
    takes
	button button
	foreground color
    returns_nothing

    #: This procedure will set the foreground color of {button}
    #, to {foreground}.


procedure generate_call_back_get@button
    takes
	button button
    returns string

    #: This procedure will return the generate_call_back color of {button}.


procedure generate_call_back_set@button
    takes
	button button
	generate_call_back string
    returns_nothing

    #: This procedure will set the generate_call_back color of {button}
    #, to {generate_call_back}.


procedure html_generate@button
    takes
	button button
	html_stream out_stream
	indent unsigned
    returns_nothing

    #: This procedure will output {button} as HTML to {html_stream}
    #, indented by {indent}.


procedure increment@button
    takes
	button button
    returns_nothing

    #: This procedure will increment the modification count for {button}.


procedure name_get@button
    takes
	button button
    returns string

    #: This procedure will return the name of {button}.


procedure name_set@button
    takes
	button button
	name string
    returns_nothing

    #: This procedure will set the name of {button} to {name}.


procedure nop@button
    takes
	button button
    returns_nothing

    #: This procedure does nothting.


procedure relief_get@button
    takes
	button button
    returns relief

    #: This procedure will return the relief of {button}.


procedure relief_set@button
    takes
	button button	
	relief relief
    returns_nothing

    #: This procedure will set the relief of {button} to {mode}.


procedure restore@button
    takes
	restore restore
	frame frame
    returns button

    #: This procedure will restore a button from {restore} into {frame}.
    #, The restored {button} object is returned.


procedure save@button
    takes
	button button
	save_stream out_stream
    returns_nothing

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


procedure state_get@button
    takes
	button button
    returns button_mode

    #: This procedure will return the state of {button}.


procedure state_set@button
    takes
	button button
	mode button_mode
    returns_nothing

    #: This procedure will set the state of {button} to {mode}.


procedure update@button
    takes
	master_button button
	clone_button button
    returns_nothing

    #: This procedure will update {clone_button} with the contents
    #, {master_button}.


procedure window_path_append@button
    takes
	button button
	tcl_command tcl_command
    returns_nothing

    #: This procedure will append the window path for {button}
    #, to {tcl_command}.


#: {button_mode} procedures:

procedure append@button_mode
    takes
	button_mode button_mode
	tcl_command tcl_command
    returns_nothing

    #: This procedure append {button_mode} to {tcl_command}.


procedure string_convert@button_mode
    takes
	button_mode button_mode
    returns string

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