freightrain 0.6.0 → 0.6.1
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 +1 -1
- data/lib/extensions/gtk/interface_builder.rb +8 -9
- data/lib/freightrain/signals/signal_host.rb +15 -7
- data/lib/freightrain/viewmodels/freight_view_model.rb +4 -4
- data/lib/freightrain/views/callback_wrapper.rb +4 -6
- data/lib/freightrain/views/freight_view.rb +3 -3
- data/lib/freightrain/views/interface_builder.rb +2 -2
- metadata +2 -2
data/Rakefile
CHANGED
@@ -15,10 +15,11 @@ module Freightrain
|
|
15
15
|
|
16
16
|
def create_objects_from_file(file_name)
|
17
17
|
@builder.add_from_file(get_glade_file(file_name))
|
18
|
-
|
19
|
-
|
18
|
+
objects = @builder.objects
|
19
|
+
if objects.first.respond_to? :toplevel
|
20
|
+
@control = objects.first.toplevel
|
20
21
|
end
|
21
|
-
return
|
22
|
+
return objects.select do |obj|
|
22
23
|
obj.respond_to? :name
|
23
24
|
end
|
24
25
|
end
|
@@ -30,16 +31,14 @@ module Freightrain
|
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
33
|
-
# def connect_signals()
|
34
|
-
# @builder.connect_signals do |signal|
|
35
|
-
# yield(signal)
|
36
|
-
# end
|
37
|
-
# end
|
38
|
-
|
39
34
|
def connect_to_callback(widget, event_name, method)
|
35
|
+
begin
|
40
36
|
widget.signal_connect(event_name) do |instance, *args|
|
41
37
|
method.call(*args)
|
42
38
|
end
|
39
|
+
rescue Exception => ex
|
40
|
+
#TODO:handle this
|
41
|
+
end
|
43
42
|
end
|
44
43
|
|
45
44
|
def get_glade_file(file_name)
|
@@ -18,13 +18,22 @@ module Freightrain
|
|
18
18
|
|
19
19
|
def create_signals
|
20
20
|
@signals = {}
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
signals = self.class.instance_variable_get(:@signals)
|
22
|
+
signals ||= {}
|
23
|
+
signals.keys.each do |signal|
|
24
|
+
create_forward_method(signals[signal][:forwards], signal) if signals[signal]
|
24
25
|
@signals[signal] = FreightSignal.new
|
25
26
|
end
|
26
27
|
end
|
27
28
|
|
29
|
+
def create_forward_method(target_description, signal)
|
30
|
+
target = target_description.split(".")[0]
|
31
|
+
event = target_description.split(".")[1]
|
32
|
+
self.class.send(:define_method, "#{target}_on_#{event}") do
|
33
|
+
fire signal.to_sym
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
28
37
|
def hook_to_signals(host, prefix = nil)
|
29
38
|
@signals.each do |signal_key, signal|
|
30
39
|
method_name = "on_#{signal_key}"
|
@@ -32,14 +41,13 @@ module Freightrain
|
|
32
41
|
signal.connect(host.method(method_name)) if host.respond_to?(method_name)
|
33
42
|
end
|
34
43
|
end
|
35
|
-
|
36
44
|
|
37
45
|
end
|
38
46
|
end
|
39
47
|
|
40
|
-
def signal(signal_name)
|
41
|
-
@signals ||=
|
42
|
-
@signals
|
48
|
+
def signal(signal_name, options = nil)
|
49
|
+
@signals ||= {}
|
50
|
+
@signals[signal_name.to_sym] = options
|
43
51
|
end
|
44
52
|
|
45
53
|
end
|
@@ -19,10 +19,10 @@ module Freightrain
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.new(*args, &block)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
return
|
22
|
+
viewmodel = allocate
|
23
|
+
viewmodel.bootstrap
|
24
|
+
viewmodel.send(:initialize, *args, &block)
|
25
|
+
return viewmodel
|
26
26
|
end
|
27
27
|
|
28
28
|
def bootstrap
|
@@ -7,14 +7,12 @@ class CallbackWrapper
|
|
7
7
|
@method = method
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
11
|
-
|
12
|
-
return method_target_and_event.scan(/^#{widget.name}/).any?
|
10
|
+
def target
|
11
|
+
return @method.name.split("_on_")[0]
|
13
12
|
end
|
14
13
|
|
15
|
-
def
|
16
|
-
|
17
|
-
return event_name.sub("_", "").gsub("_", "-")
|
14
|
+
def event
|
15
|
+
return @method.name.split("_on_")[1].gsub("_", "-")
|
18
16
|
end
|
19
17
|
|
20
18
|
end
|
@@ -15,7 +15,7 @@ module Freightrain
|
|
15
15
|
|
16
16
|
def get_all_callbacks
|
17
17
|
return self.methods.select do |method_name|
|
18
|
-
method_name =~
|
18
|
+
method_name =~ /_on_/i
|
19
19
|
end.map { |method_name| CallbackWrapper.new(method(method_name)) }
|
20
20
|
end
|
21
21
|
|
@@ -32,6 +32,7 @@ module Freightrain
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def initialize()
|
35
|
+
create_signals
|
35
36
|
@widgets = []
|
36
37
|
if(Freightrain.toolkit)
|
37
38
|
self.class.instance_eval("include Toolkit::DialogHelper")
|
@@ -39,8 +40,7 @@ module Freightrain
|
|
39
40
|
load_from_file(self.class.name, @builder)
|
40
41
|
end
|
41
42
|
hook_to_layout_widgets()
|
42
|
-
load_bindings_from_file(@widgets)
|
43
|
-
create_signals
|
43
|
+
load_bindings_from_file(@widgets)
|
44
44
|
end
|
45
45
|
|
46
46
|
def hook_to_layout_widgets
|
@@ -12,8 +12,8 @@ module Freightrain
|
|
12
12
|
@widgets = builder.create_objects_from_file(file_name)
|
13
13
|
builder.create_object_accessors(@widgets, self)
|
14
14
|
self.get_all_callbacks.each do |callback|
|
15
|
-
target = @widgets.select { |widget| callback.
|
16
|
-
builder.connect_to_callback(target, callback.
|
15
|
+
target = @widgets.select { |widget| callback.target == widget.name }.first
|
16
|
+
builder.connect_to_callback(target, callback.event, callback.method) if target
|
17
17
|
end
|
18
18
|
end
|
19
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.6.
|
4
|
+
version: 0.6.1
|
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-31 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|