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 +1 -1
- data/lib/extensions/gtk/interface_builder.rb +9 -3
- data/lib/freightrain/binding/freight_binding.rb +3 -3
- data/lib/freightrain/{dialog_extension.rb → viewmodels/dialog_extension.rb} +0 -0
- data/lib/freightrain/{freight_view_model.rb → viewmodels/freight_view_model.rb} +4 -4
- data/lib/freightrain/views/callback_wrapper.rb +20 -0
- data/lib/freightrain/{freight_view.rb → views/freight_view.rb} +6 -0
- data/lib/freightrain/{interface_builder.rb → views/interface_builder.rb} +3 -4
- metadata +7 -6
data/Rakefile
CHANGED
@@ -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
|
|
File without changes
|
@@ -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
|
-
|
15
|
-
|
16
|
-
|
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.
|
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-
|
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/
|
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
|