class Fidgit::ComboBox
Constants
- ARROW_IMAGE
Public Class Methods
new(options = {}, &block)
click to toggle source
@param (see Button#initialize) @option (see Button#initialize) @option options [] :value
Calls superclass method
Fidgit::Button::new
# File lib/fidgit/elements/combo_box.rb, line 40 def initialize(options = {}, &block) options = { background_color: default(:background_color), border_color: default(:border_color), }.merge! options @value = options[:value] @hover_index = 0 @menu = MenuPane.new(show: false) do subscribe :selected do |widget, value| self.value = value end end @@arrow ||= Gosu::Image[ARROW_IMAGE] super('', options) rect.height = [height, font.height + padding_top + padding_bottom].max rect.width = [width, font.height * 4 + padding_left + padding_right].max end
Public Instance Methods
clear()
click to toggle source
# File lib/fidgit/elements/combo_box.rb, line 92 def clear self.text = "" self.icon = nil @menu.clear end
draw()
click to toggle source
Calls superclass method
# File lib/fidgit/elements/combo_box.rb, line 78 def draw super size = height / @@arrow.width.to_f @@arrow.draw x + width - height, y, z, size, size end
index()
click to toggle source
# File lib/fidgit/elements/combo_box.rb, line 14 def index; @menu.index(@value) end
index=(index)
click to toggle source
# File lib/fidgit/elements/combo_box.rb, line 29 def index=(index) if index.between?(0, @menu.size - 1) self.value = @menu[index].value end index end
item(text, value, options = {}, &block)
click to toggle source
# File lib/fidgit/elements/combo_box.rb, line 64 def item(text, value, options = {}, &block) item = @menu.item(text, value, options, &block) # Force text to be updated if the item added has the same value. if item.value == @value self.text = item.text self.icon = item.icon end recalc item end
value()
click to toggle source
# File lib/fidgit/elements/combo_box.rb, line 15 def value; @value; end
value=(value)
click to toggle source
# File lib/fidgit/elements/combo_box.rb, line 17 def value=(value) if @value != value @value = value item = @menu.find(@value) self.text = item.text self.icon = item.icon publish :changed, @value end value end
Protected Instance Methods
layout()
click to toggle source
Calls superclass method
# File lib/fidgit/elements/combo_box.rb, line 99 def layout super # Max width of all items + allow size for the arrow. rect.width = [@menu.width + height, min_width].max nil end
post_init_block(&block)
click to toggle source
Any combo-box passed a block will allow you access to its methods.
# File lib/fidgit/elements/combo_box.rb, line 111 def post_init_block(&block) with(&block) end