freightrain 0.5.14 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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