Skip to content
Snippets Groups Projects
FXRadioButton.rb 2.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • module Fox
      #
      # A radio button is a tri-state button.  Normally, it is either
      # +TRUE+ or +FALSE+; a third state +MAYBE+ may be set to indicate that no selection
      # has been made yet by the user, or that the state is ambiguous.
      # When pressed, the radio button sets its state to +TRUE+ and sends a +SEL_COMMAND+
      # message to its target, with the message data set to the state of the radio button.
      # A group of radio buttons can be made mutually exclusive by linking them
      # to a common data target (i.e. an instance of FXDataTarget).
      # Alternatively, an application can implement a common +SEL_UPDATE+ handler to
      # check and uncheck radio buttons as appropriate.
      #
      # === Events
      #
      # The following messages are sent by FXRadioButton to its target:
      #
      # +SEL_COMMAND+::		sent when the radio button is pressed.
      # +SEL_KEYPRESS+::		sent when a key goes down; the message data is an FXEvent instance.
      # +SEL_KEYRELEASE+::		sent when a key goes up; the message data is an FXEvent instance.
      # +SEL_LEFTBUTTONPRESS+::	sent when the left mouse button goes down; the message data is an FXEvent instance.
      # +SEL_LEFTBUTTONRELEASE+::	sent when the left mouse button goes up; the message data is an FXEvent instance.
      #
      # === RadioButton flags
      #
      # +RADIOBUTTON_AUTOGRAY+::	Automatically gray out when not updated
      # +RADIOBUTTON_AUTOHIDE+::	Automatically hide when not updated
      # +RADIOBUTTON_NORMAL+::	<tt>JUSTIFY_NORMAL|ICON_BEFORE_TEXT</tt>
      #
      class FXRadioButton < FXLabel
    
        # Radio button state, one of +TRUE+, +FALSE+ or +MAYBE+ [Integer]
        attr_accessor :checkState
        
        # Radio button style [Integer]
        attr_accessor :radioButtonStyle
        
        # Radio ball color [FXColor]
        attr_accessor :radioColor
        
        # Radio disk color [FXColor]
        attr_accessor :diskColor
    
        #
        # Construct new radio button
        #
        def initialize(parent, text, target=nil, selector=0, opts=RADIOBUTTON_NORMAL, x=0, y=0, width=0, height=0, padLeft=DEFAULT_PAD, padRight=DEFAULT_PAD, padTop=DEFAULT_PAD, padBottom=DEFAULT_PAD) # :yields: theRadioButton
        end
    
        #
        # Return +true+ if the radio button state is +TRUE+
        #
        def checked?
          self.checkState == Fox::TRUE
        end
        
        #
        # Return +true+ if the radio button state is +FALSE+
        #
        def unchecked?
          self.checkState == Fox::FALSE
        end
    
        #
        # Return +true+ if the radio button state is +MAYBE+
        #
        def maybe?
          self.checkState == Fox::MAYBE
        end
      end
    end