freightrain 0.5.14 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ require 'rake/testtask'
9
9
 
10
10
  spec = Gem::Specification.new do |s|
11
11
  s.name = 'freightrain'
12
- s.version = '0.5.14'
12
+ s.version = '0.6.0'
13
13
  s.add_dependency('require_all', '>= 1.1.0')
14
14
  s.add_dependency('needle', '>= 1.3.0')
15
15
  s.has_rdoc = false
@@ -30,9 +30,15 @@ module Freightrain
30
30
  end
31
31
  end
32
32
 
33
- def connect_signals()
34
- @builder.connect_signals do |signal|
35
- yield(signal)
33
+ # def connect_signals()
34
+ # @builder.connect_signals do |signal|
35
+ # yield(signal)
36
+ # end
37
+ # end
38
+
39
+ def connect_to_callback(widget, event_name, method)
40
+ widget.signal_connect(event_name) do |instance, *args|
41
+ method.call(*args)
36
42
  end
37
43
  end
38
44
 
@@ -22,9 +22,9 @@ module Freightrain
22
22
  @cache = value
23
23
  end
24
24
  rescue Exception => ex
25
- p "#{@widget.name} - update"
26
- p ex.message
27
- p @path
25
+ # p "#{@widget.name} - update"
26
+ # p ex.message
27
+ # p @path
28
28
  end
29
29
  end
30
30
 
@@ -19,10 +19,10 @@ module Freightrain
19
19
  end
20
20
 
21
21
  def self.new(*args, &block)
22
- viewmodel = allocate
23
- viewmodel.bootstrap
24
- viewmodel.send(:initialize, *args, &block)
25
- return viewmodel
22
+ @viewmodel = allocate
23
+ @viewmodel.bootstrap
24
+ @viewmodel.send(:initialize, *args, &block)
25
+ return @viewmodel
26
26
  end
27
27
 
28
28
  def bootstrap
@@ -0,0 +1,20 @@
1
+
2
+ class CallbackWrapper
3
+
4
+ attr_reader :method
5
+
6
+ def initialize(method)
7
+ @method = method
8
+ end
9
+
10
+ def matches_widget?(widget)
11
+ method_target_and_event = @method.name.sub("on_", "")
12
+ return method_target_and_event.scan(/^#{widget.name}/).any?
13
+ end
14
+
15
+ def event_name(widget)
16
+ event_name = @method.name.split(widget.name)[1]
17
+ return event_name.sub("_", "").gsub("_", "-")
18
+ end
19
+
20
+ end
@@ -13,6 +13,12 @@ module Freightrain
13
13
  return @widgets.select { |widget| widget.kind_of? BindingBase }
14
14
  end
15
15
 
16
+ def get_all_callbacks
17
+ return self.methods.select do |method_name|
18
+ method_name =~ /^on_/i
19
+ end.map { |method_name| CallbackWrapper.new(method(method_name)) }
20
+ end
21
+
16
22
  def self.container_options
17
23
  return {:model => :prototype}
18
24
  end
@@ -11,10 +11,9 @@ module Freightrain
11
11
  if builder.file_found?(file_name)
12
12
  @widgets = builder.create_objects_from_file(file_name)
13
13
  builder.create_object_accessors(@widgets, self)
14
- builder.connect_signals do |signal|
15
- if self.respond_to? signal
16
- method(signal)
17
- end
14
+ self.get_all_callbacks.each do |callback|
15
+ target = @widgets.select { |widget| callback.matches_widget?(widget)}.first
16
+ builder.connect_to_callback(target, callback.event_name(target), callback.method) if target
18
17
  end
19
18
  end
20
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freightrain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.14
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrea Dallera
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-03-21 00:00:00 +01:00
12
+ date: 2010-03-26 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -82,19 +82,20 @@ files:
82
82
  - lib/freightrain/binding/converters/default_converter.rb
83
83
  - lib/freightrain/binding/converters/float_converter.rb
84
84
  - lib/freightrain/binding/converters/converter_factory.rb
85
- - lib/freightrain/interface_builder.rb
85
+ - lib/freightrain/views/interface_builder.rb
86
+ - lib/freightrain/views/freight_view.rb
87
+ - lib/freightrain/views/callback_wrapper.rb
86
88
  - lib/freightrain/testhelpers/container_helpers.rb
87
89
  - lib/freightrain/string_patch.rb
88
- - lib/freightrain/dialog_extension.rb
89
90
  - lib/freightrain/regions/region_host.rb
90
91
  - lib/freightrain/regions/freight_region.rb
91
- - lib/freightrain/freight_view_model.rb
92
92
  - lib/freightrain/services/service_host.rb
93
93
  - lib/freightrain/services/freight_service.rb
94
94
  - lib/freightrain/testhelpers.rb
95
95
  - lib/freightrain/ioc/container.rb
96
96
  - lib/freightrain/ioc/container_hookable.rb
97
- - lib/freightrain/freight_view.rb
97
+ - lib/freightrain/viewmodels/dialog_extension.rb
98
+ - lib/freightrain/viewmodels/freight_view_model.rb
98
99
  - lib/freightrain/auto_requirer.rb
99
100
  - lib/freightrain/bootstrapper.rb
100
101
  - lib/freightrain/signals/freight_signal.rb