#
# $Id: toggle.icn,v 1.1 2003/08/04 17:32:42 jeffery Exp $
#
# This file is in the public domain.
#
# Author: Robert Parlett (parlett@dial.pipex.com)
#

package gui
link graphics
import lang

$include "guih.icn"

#
# This is a class for representing objects which can have an
# on-off state, in particular checkboxes, toggle buttons,
# and menu checkboxes.
#
class Toggle : Object(
   parent_check_box_group,
   is_checked_flag
   )

   #
   # This empty method may be overridden; it is invoked when the
   # object is added to a {CheckBoxGroup}.  Note that it is
   # overridden by some of the subclasses described below.
   #
   method into_cbg()
   end

   #
   # Set the parent {CheckBoxGroup}.
   # @param x   The parent {CheckBoxGroup}.
   #
   method set_parent_check_box_group(x)
      return self.parent_check_box_group := x
   end

   #
   # Succeed if the object is checked.
   #
   method is_checked()
      return \self.is_checked_flag
   end

   #
   # Return the status of the object; {1} if the object is checked,
   # {&null} otherwise.
   #
   method get_status()
      return self.is_checked_flag
   end

   #
   # Toggle the status of the object.
   #
   method toggle_is_checked()
      if /self.is_checked_flag then
         self.is_checked_flag := 1
      else
         self.is_checked_flag := &null
   end

   #
   # Set the status to checked.
   #
   method set_is_checked()
      return self.is_checked_flag := 1
   end

   #
   # Set the status to unchecked.
   #
   method clear_is_checked()
      self.is_checked_flag := &null
   end
end