Class: Freightrain::FreightView

Inherits:
Object
  • Object
show all
Extended by:
ContainerHookable, SignalHost
Includes:
BindingHost, InterfaceBuilder
Defined in:
lib/freightrain/views/freight_view.rb

Direct Known Subclasses

FreightElementView

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SignalHost

extended, signal

Methods included from ContainerHookable

classes, container_options, extended, inherited, subclasses

Methods included from BindingHost

#bindings, #commit, #data_source=, #load_bindings_from_file

Methods included from InterfaceBuilder

#load_from_file

Constructor Details

#initializeFreightView

Returns a new instance of FreightView.



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/freightrain/views/freight_view.rb', line 46

def initialize()
  create_signals
  @widgets = []
  if(Freightrain.toolkit)
    self.class.instance_eval("include Toolkit::DialogHelper")
    if builder != :none
      @builder = Freightrain.get_interface_builder
    else 
      @builder = CodeInterfaceBuilder.new
    end  
    load_from_file(self.class.name, @builder)
  end
  hook_to_layout_widgets()
  load_bindings_from_file(@widgets)
end

Class Method Details

.builder(config_value) ⇒ Object



38
39
40
# File 'lib/freightrain/views/freight_view.rb', line 38

def self.builder(config_value)
  @builder_to_use = config_value
end

.container_optionsObject



20
21
22
# File 'lib/freightrain/views/freight_view.rb', line 20

def self.container_options
  return {:model => :prototype}
end

Instance Method Details

#builderObject



42
43
44
# File 'lib/freightrain/views/freight_view.rb', line 42

def builder
  return self.class.instance_variable_get(:@builder_to_use) || Freightrain::Toolkit.default_builder
end

#controlObject



24
25
26
# File 'lib/freightrain/views/freight_view.rb', line 24

def control
  return @builder.control
end

#get_all_callbacksObject



14
15
16
17
18
# File 'lib/freightrain/views/freight_view.rb', line 14

def get_all_callbacks
  return self.methods.select do |method_name|
    method_name =~ /_on_/i
  end.map { |method_name| CallbackWrapper.new(method(method_name)) }
end

#hook_to_layout_widgetsObject



62
63
64
65
66
67
68
69
70
# File 'lib/freightrain/views/freight_view.rb', line 62

def hook_to_layout_widgets
  @widgets.select{ |widget| widget.is_a? LayoutWidget }.each do |widget|
    method_prefix = widget.name + "_on_"
    self.methods.select { |method_name| method_name =~ /#{method_prefix}/}.each do |method_name|
      signal_name = method_name.to_s.sub(method_prefix, "")
      widget.add_signal_callback(signal_name.to_sym, method(method_name))
    end
  end
end

#toplevelObject



34
35
36
# File 'lib/freightrain/views/freight_view.rb', line 34

def toplevel
  return control.toplevel
end

#updateObject



28
29
30
31
32
# File 'lib/freightrain/views/freight_view.rb', line 28

def update
  @signals.values.each { |signal| signal.stifle }
  bindings.each { |binding| binding.update }
  @signals.values.each { |signal| signal.unleash }
end

#widgetsObject



10
11
12
# File 'lib/freightrain/views/freight_view.rb', line 10

def widgets
  return @widgets.select { |widget| widget.kind_of? BindingBase }
end