class MiniGL::ToggleButton
This class represents a toggle button, which can be also interpreted as a check box. It is always in one of two states, given as true
or false
by its property checked
.
Attributes
Defines the state of the button (returns true
or false
).
Public Class Methods
Creates a ToggleButton
. All parameters work the same as in Button
, except for the image, img
, which now has to be composed of two columns and four rows, the first column with images for the unchecked state, and the second with images for the checked state, and for checked
, which defines the initial state of the ToggleButton
.
The action
block now will always receive a first boolean parameter corresponding to the value of checked
. So, if you want to pass parameters to the block, you should declare it like this:
b = ToggleButton.new ... { |checked, params| puts "button was checked" if checked # do something with params }
Obs.: This method accepts named parameters, but x
and y
are mandatory (also, img
is mandatory when width
and height
are not provided, and vice-versa).
MiniGL::Button::new
# File lib/minigl/forms.rb, line 480 def initialize(x, y = nil, font = nil, text = nil, img = nil, checked = false, text_color = 0, disabled_text_color = 0, over_text_color = 0, down_text_color = 0, center_x = true, center_y = true, margin_x = 0, margin_y = 0, width = nil, height = nil, params = nil, retro = nil, scale_x = 1, scale_y = 1, anchor = nil, &action) if x.is_a? Hash y = x[:y] font = x[:font] text = x[:text] img = x[:img] checked = x.fetch(:checked, false) text_color = x.fetch(:text_color, 0) disabled_text_color = x.fetch(:disabled_text_color, 0) over_text_color = x.fetch(:over_text_color, 0) down_text_color = x.fetch(:down_text_color, 0) center_x = x.fetch(:center_x, true) center_y = x.fetch(:center_y, true) margin_x = x.fetch(:margin_x, 0) margin_y = x.fetch(:margin_y, 0) width = x.fetch(:width, nil) height = x.fetch(:height, nil) params = x.fetch(:params, nil) retro = x.fetch(:retro, nil) scale_x = x.fetch(:scale_x, 1) scale_y = x.fetch(:scale_y, 1) anchor = x.fetch(:anchor, nil) x = x[:x] end super x, y, font, text, nil, text_color, disabled_text_color, over_text_color, down_text_color, center_x, center_y, margin_x, margin_y, 0, 0, params, retro, scale_x, scale_y, anchor, &action @img = if img; Res.imgs img, 2, 4, true, '.png', retro else; nil; end @w = if img; @img[0].width * @scale_x else; width * @scale_x; end @h = if img; @img[0].height * @scale_y else; height * @scale_y; end _, x, y = FormUtils.check_anchor(anchor, @anchor_offset_x, @anchor_offset_y, @w, @h) set_position(x, y) @checked = checked end
Public Instance Methods
Sets the state of the button to the value given.
Parameters:
- value
-
The state to be set (
true
for checked,false
for unchecked).
# File lib/minigl/forms.rb, line 538 def checked=(value) @action.call(value, @params) if @action && value != @checked @checked = value end
Updates the button, checking the mouse movement and buttons to define the button state.
MiniGL::Button#update
# File lib/minigl/forms.rb, line 526 def update return unless @enabled and @visible super @img_index *= 2 @img_index += 1 if @checked && !@toggling || !@checked && @toggling end
Private Instance Methods
MiniGL::Button#enqueue_action
# File lib/minigl/forms.rb, line 551 def enqueue_action super @toggling = true end
# File lib/minigl/forms.rb, line 556 def perform_action @checked = !@checked @toggling = false @action.call(@checked, @params) if @action end