class Fidgit::Container
A container that contains Elements. @abstract
Public Class Methods
new(options = {})
click to toggle source
@param (see Element#initialize)
@option (see Element#initialize)
Calls superclass method
# File lib/fidgit/elements/container.rb, line 25 def initialize(options = {}) options[:border_color] = default(:debug, :border_color) if Fidgit.debug_mode? @children = [] super(options) end
Public Instance Methods
add(element)
click to toggle source
# File lib/fidgit/elements/container.rb, line 33 def add(element) element.send :parent=, self @children.push element recalc nil end
clear()
click to toggle source
# File lib/fidgit/elements/container.rb, line 140 def clear @children.each {|child| child.send :parent=, nil } @children.clear recalc nil end
color_picker(options = {}, &block)
click to toggle source
Create a color picker within the container.
# File lib/fidgit/elements/container.rb, line 63 def color_picker(options = {}, &block) ColorPicker.new({parent: self}.merge!(options), &block) end
color_well(options = {}, &block)
click to toggle source
Create a color well within the container.
# File lib/fidgit/elements/container.rb, line 68 def color_well(options = {}, &block) ColorWell.new({parent: self}.merge!(options), &block) end
combo_box(options = {}, &block)
click to toggle source
# File lib/fidgit/elements/container.rb, line 72 def combo_box(options = {}, &block) ComboBox.new({parent: self}.merge!(options), &block) end
file_browser(type, options = {}, &block)
click to toggle source
# File lib/fidgit/elements/container.rb, line 76 def file_browser(type, options = {}, &block) FileBrowser.new(type, {parent: self}.merge!(options), &block) end
grid(options = {}, &block)
click to toggle source
Pack elements within the block in a grid (matrix) formation.
# File lib/fidgit/elements/container.rb, line 112 def grid(options = {}, &block) Grid.new({ parent: self }.merge!(options), &block) end
group(options = {}, &block)
click to toggle source
# File lib/fidgit/elements/container.rb, line 80 def group(options = {}, &block) Group.new({parent: self}.merge!(options), &block) end
hit_element(x, y)
click to toggle source
Returns the element within this container that was hit, @return [Element, nil] The element hit, otherwise nil.
# File lib/fidgit/elements/container.rb, line 157 def hit_element(x, y) @children.reverse_each do |child| case child when Container, Composite if element = child.hit_element(x, y) return element end else return child if child.hit?(x, y) end end self if hit?(x, y) end
horizontal(options = {}, &block)
click to toggle source
Pack elements within the block horizontally.
# File lib/fidgit/elements/container.rb, line 100 def horizontal(options = {}, &block) Horizontal.new({ parent: self }.merge!(options), &block) end
image_frame(image, options = {}, &block)
click to toggle source
Create an icon.
# File lib/fidgit/elements/container.rb, line 85 def image_frame(image, options = {}, &block) ImageFrame.new(image, {parent: self}.merge!(options), &block) end
insert(position, element)
click to toggle source
# File lib/fidgit/elements/container.rb, line 49 def insert(position, element) @children.insert position, element element.send :parent=, self recalc nil end
label(text, options = {})
click to toggle source
Create a label within the container.
# File lib/fidgit/elements/container.rb, line 90 def label(text, options = {}) Label.new(text, {parent: self}.merge!(options)) end
list(options = {}, &block)
click to toggle source
# File lib/fidgit/elements/container.rb, line 94 def list(options = {}, &block) List.new({parent: self}.merge!(options), &block) end
remove(element)
click to toggle source
# File lib/fidgit/elements/container.rb, line 41 def remove(element) @children.delete element element.send :parent=, nil recalc nil end
scroll_area(options = {}, &block)
click to toggle source
# File lib/fidgit/elements/container.rb, line 120 def scroll_area(options = {}, &block) ScrollArea.new({parent: self}.merge!(options), &block) end
scroll_window(options = {}, &block)
click to toggle source
# File lib/fidgit/elements/container.rb, line 124 def scroll_window(options = {}, &block) ScrollWindow.new({parent: self}.merge!(options), &block) end
slider(options = {}, &block)
click to toggle source
# File lib/fidgit/elements/container.rb, line 128 def slider(options = {}, &block) Slider.new({parent: self}.merge!(options), &block) end
text_area(options = {}, &block)
click to toggle source
# File lib/fidgit/elements/container.rb, line 132 def text_area(options = {}, &block) TextArea.new({parent: self}.merge!(options), &block) end
to_s()
click to toggle source
# File lib/fidgit/elements/container.rb, line 188 def to_s "#{super} [#{@children.size} #{@children.size == 1 ? 'child' : 'children'}]" end
update()
click to toggle source
# File lib/fidgit/elements/container.rb, line 149 def update @children.each { |c| c.update } nil end
vertical(options = {}, &block)
click to toggle source
Pack elements within the blockvertically.
# File lib/fidgit/elements/container.rb, line 106 def vertical(options = {}, &block) Vertical.new({ parent: self }.merge!(options), &block) end
write_tree(indent = "", index = 0)
click to toggle source
# File lib/fidgit/elements/container.rb, line 193 def write_tree(indent = "", index = 0) puts self indent = indent + " " @children.each.with_index do |element, i| print "#{indent}#{i}: " case element when Container element.write_tree(indent) else puts element end end end
x=(value)
click to toggle source
Calls superclass method
# File lib/fidgit/elements/container.rb, line 12 def x=(value) @children.each {|c| c.x += value - x } super(value) end
y=(value)
click to toggle source
Calls superclass method
# File lib/fidgit/elements/container.rb, line 17 def y=(value) @children.each {|c| c.y += value - y } super(value) end
Protected Instance Methods
draw_foreground()
click to toggle source
# File lib/fidgit/elements/container.rb, line 173 def draw_foreground @children.each {|c| c.draw } font.draw self.class.name, x, y, z if Fidgit.debug_mode? nil end
post_init_block(&block)
click to toggle source
Any container passed a block will allow you access to its methods.
# File lib/fidgit/elements/container.rb, line 183 def post_init_block(&block) with(&block) end