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
button(text, options = {}, &block) click to toggle source

Create a button within the container.

# File lib/fidgit/elements/container.rb, line 58
def button(text, options = {}, &block)
  Button.new(text, {parent: self}.merge!(options), &block)
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
radio_button(text, value, options = {}, &block) click to toggle source
# File lib/fidgit/elements/container.rb, line 116
def radio_button(text, value, options = {}, &block)
  RadioButton.new(text, value, {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
toggle_button(text, options = {}, &block) click to toggle source
# File lib/fidgit/elements/container.rb, line 136
def toggle_button(text, options = {}, &block)
  ToggleButton.new(text, {parent: self}.merge!(options), &block)
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