freightrain 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +17 -14
- data/Rakefile +1 -1
- data/lib/extensions/gtk/gtk_bootstrapper.rb +5 -1
- data/lib/extensions/gtk/widgets/gtk_widget.rb +1 -1
- data/lib/extensions/qt/qt_bootstrapper.rb +5 -1
- data/lib/extensions/wx/wx_bootstrapper.rb +5 -1
- data/lib/freightrain/views/code_interface_builder.rb +55 -0
- data/lib/freightrain/views/freight_view.rb +18 -1
- data/lib/freightrain/views/interface_builder.rb +4 -1
- metadata +55 -54
data/README.rdoc
CHANGED
@@ -9,20 +9,34 @@ Freightrain is a MVVM (model/view/viewmodel) framework for developing desktop ap
|
|
9
9
|
|
10
10
|
If you plan to use the gtk+ extensions (the best supported at the moment), you should also have the gtk2 gem installed. Before installing the gem you should also have the dev library for pango, cairo, glib and gtk2 installed. On ubuntu you can get all you need with:
|
11
11
|
|
12
|
-
sudo apt-get install libgtk2.0-dev
|
13
|
-
|
12
|
+
sudo apt-get install libgtk2.0-dev libruby1.9 ruby1.9-dev
|
13
|
+
|
14
14
|
gem install gtk2
|
15
15
|
|
16
16
|
When you're done with that you can install freightrain with:
|
17
17
|
|
18
18
|
gem install freightrain
|
19
19
|
|
20
|
+
== QUICK START
|
21
|
+
|
22
|
+
gem install freightrain
|
23
|
+
|
24
|
+
gem install gtk2
|
25
|
+
|
26
|
+
ftrain app testapp
|
27
|
+
|
28
|
+
cd testapp
|
29
|
+
|
30
|
+
ruby testapp.rb
|
31
|
+
|
32
|
+
|
33
|
+
after that, you should see an empty window.
|
20
34
|
|
21
35
|
== HOW DO I USE IT?
|
36
|
+
|
22
37
|
There are small examples in the /examples repository folder. There is also a tutorial (under construction, by Eric Cunningham) here : http://sites.google.com/site/freightrainlib
|
23
38
|
|
24
39
|
An up to date larger example : http://github.com/bolthar/intersect
|
25
|
-
Note that the project is currently in ALPHA state. Use it in production at your own risk :-)
|
26
40
|
|
27
41
|
After installing the freightrain gem using the above instructions, to get a working stub open a terminal and type in:
|
28
42
|
ftrain app my_app
|
@@ -34,17 +48,6 @@ this should pop up an empty window with the title 'my_app'.
|
|
34
48
|
|
35
49
|
'ftrain' command not working? Look here => http://stackoverflow.com/questions/909673/gems-and-ubuntu-9-04
|
36
50
|
|
37
|
-
Documentation coming soon.
|
38
|
-
|
39
|
-
== WHERE DO I REPORT BUGS/FEATURE REQUESTS?
|
40
|
-
|
41
|
-
andrea@andreadallera.com
|
42
|
-
|
43
|
-
Would also be very appreciated:
|
44
|
-
|
45
|
-
=== Reports about installation issues (GTK2, ruby/gnome, ftrain)
|
46
|
-
=== Reports about different platforms (could you install on OSX? Let me know!)
|
47
|
-
|
48
51
|
= THANKS TO:
|
49
52
|
== Jan Pliz
|
50
53
|
For his help with the qtruby bindings
|
data/Rakefile
CHANGED
@@ -0,0 +1,55 @@
|
|
1
|
+
|
2
|
+
module Freightrain
|
3
|
+
|
4
|
+
class CodeInterfaceBuilder
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@builder = Freightrain.get_interface_builder
|
8
|
+
end
|
9
|
+
|
10
|
+
def file_found?(file_name)
|
11
|
+
return get_code_definition_file(file_name)
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_objects_from_file(file_name)
|
15
|
+
code_widgets = eval_script(file_found?(file_name))
|
16
|
+
code_widgets.each do |k, v|
|
17
|
+
v.builder_name = k
|
18
|
+
end #HACK - gtk only
|
19
|
+
@widgets = code_widgets.values
|
20
|
+
@builder.instance_variable_set(:@control, @widgets.first.toplevel) ##HACK: breaking toolkit agnostic
|
21
|
+
return @widgets
|
22
|
+
end
|
23
|
+
|
24
|
+
def connect_to_callback(widget, event_name, method)
|
25
|
+
@builder.connect_to_callback(widget, event_name, method)
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_object_accessors(widgets, view)
|
29
|
+
@builder.create_object_accessors(widgets,view)
|
30
|
+
end
|
31
|
+
|
32
|
+
def control
|
33
|
+
return @builder.control
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
def get_code_definition_file(file_name)
|
38
|
+
search_path = File.join(
|
39
|
+
Freightrain.app_path,
|
40
|
+
"views",
|
41
|
+
"**",
|
42
|
+
file_name.to_convention + ".rb.def")
|
43
|
+
results = Dir.glob(search_path)
|
44
|
+
return results.first
|
45
|
+
end
|
46
|
+
|
47
|
+
def eval_script(file_name)
|
48
|
+
widgets = {}
|
49
|
+
eval(File.read(file_name), binding)
|
50
|
+
return widgets
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
@@ -35,12 +35,29 @@ module Freightrain
|
|
35
35
|
return control.toplevel
|
36
36
|
end
|
37
37
|
|
38
|
+
def self.builder(config_value)
|
39
|
+
@builder_to_use = config_value
|
40
|
+
end
|
41
|
+
|
42
|
+
def builder
|
43
|
+
return self.class.instance_variable_get(:@builder_to_use) || Freightrain::Toolkit.default_builder
|
44
|
+
end
|
45
|
+
|
46
|
+
def define_interface
|
47
|
+
#none by default
|
48
|
+
end
|
49
|
+
|
38
50
|
def initialize()
|
39
51
|
create_signals
|
52
|
+
define_interface
|
40
53
|
@widgets = []
|
41
54
|
if(Freightrain.toolkit)
|
42
55
|
self.class.instance_eval("include Toolkit::DialogHelper")
|
43
|
-
|
56
|
+
if builder != :none
|
57
|
+
@builder = Freightrain.get_interface_builder
|
58
|
+
else
|
59
|
+
@builder = CodeInterfaceBuilder.new
|
60
|
+
end
|
44
61
|
load_from_file(self.class.name, @builder)
|
45
62
|
end
|
46
63
|
hook_to_layout_widgets()
|
@@ -12,11 +12,14 @@ 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
|
+
p callback.target, callback.event, callback.method
|
15
16
|
target = @widgets.select { |widget| callback.target == widget.name }.first
|
17
|
+
p @widgets
|
18
|
+
p target
|
16
19
|
builder.connect_to_callback(target, callback.event, callback.method) if target
|
17
20
|
end
|
18
21
|
end
|
19
22
|
end
|
20
23
|
|
21
24
|
end
|
22
|
-
end
|
25
|
+
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.8.
|
4
|
+
version: 0.8.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-03-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: require_all
|
16
|
-
requirement: &
|
16
|
+
requirement: &15146200 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 1.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *15146200
|
25
25
|
description: ruby desktop development made easy
|
26
26
|
email: andrea@andreadallera.com
|
27
27
|
executables:
|
@@ -32,77 +32,78 @@ files:
|
|
32
32
|
- README.rdoc
|
33
33
|
- Rakefile
|
34
34
|
- bin/ftrain
|
35
|
-
- lib/freightrain
|
36
|
-
- lib/freightrain/
|
37
|
-
- lib/freightrain/
|
38
|
-
- lib/freightrain/
|
35
|
+
- lib/freightrain/viewmodels/freight_view_model.rb
|
36
|
+
- lib/freightrain/viewmodels/dialog_extension.rb
|
37
|
+
- lib/freightrain/auto_requirer.rb
|
38
|
+
- lib/freightrain/string_patch.rb
|
39
|
+
- lib/freightrain/bootstrapper.rb
|
39
40
|
- lib/freightrain/signals/freight_signal.rb
|
40
|
-
- lib/freightrain/
|
41
|
-
- lib/freightrain/
|
41
|
+
- lib/freightrain/signals/signal_host.rb
|
42
|
+
- lib/freightrain/views/freight_view.rb
|
43
|
+
- lib/freightrain/views/code_interface_builder.rb
|
44
|
+
- lib/freightrain/views/interface_builder.rb
|
45
|
+
- lib/freightrain/views/callback_wrapper.rb
|
46
|
+
- lib/freightrain/services/service_host.rb
|
47
|
+
- lib/freightrain/services/freight_service.rb
|
42
48
|
- lib/freightrain/ioc/container.rb
|
43
49
|
- lib/freightrain/ioc/registry.rb
|
44
50
|
- lib/freightrain/ioc/container_hookable.rb
|
45
|
-
- lib/freightrain/
|
51
|
+
- lib/freightrain/elements/freight_element_view_model.rb
|
46
52
|
- lib/freightrain/elements/layout_widget.rb
|
47
53
|
- lib/freightrain/elements/freight_element_view.rb
|
48
|
-
- lib/freightrain/
|
49
|
-
- lib/freightrain/
|
50
|
-
- lib/freightrain/auto_requirer.rb
|
51
|
-
- lib/freightrain/views/interface_builder.rb
|
52
|
-
- lib/freightrain/views/freight_view.rb
|
53
|
-
- lib/freightrain/views/callback_wrapper.rb
|
54
|
-
- lib/freightrain/viewmodels/freight_view_model.rb
|
55
|
-
- lib/freightrain/viewmodels/dialog_extension.rb
|
56
|
-
- lib/freightrain/freight_color.rb
|
54
|
+
- lib/freightrain/regions/freight_region.rb
|
55
|
+
- lib/freightrain/regions/region_host.rb
|
57
56
|
- lib/freightrain/binding/freight_binding.rb
|
58
|
-
- lib/freightrain/binding/
|
57
|
+
- lib/freightrain/binding/binding_host.rb
|
59
58
|
- lib/freightrain/binding/binding_loader.rb
|
60
|
-
- lib/freightrain/binding/
|
61
|
-
- lib/freightrain/binding/converters/boolean_converter.rb
|
59
|
+
- lib/freightrain/binding/binding_base.rb
|
62
60
|
- lib/freightrain/binding/converters/converter_factory.rb
|
61
|
+
- lib/freightrain/binding/converters/boolean_converter.rb
|
62
|
+
- lib/freightrain/binding/converters/float_converter.rb
|
63
63
|
- lib/freightrain/binding/converters/integer_converter.rb
|
64
64
|
- lib/freightrain/binding/converters/default_converter.rb
|
65
|
-
- lib/freightrain/
|
66
|
-
- lib/
|
67
|
-
- lib/
|
68
|
-
- lib/scaffolding/commands/triad.rb
|
69
|
-
- lib/scaffolding/commands/app.rb
|
70
|
-
- lib/scaffolding/templates/view_bnd.ftt
|
71
|
-
- lib/scaffolding/templates/view_toplevel.ftt
|
72
|
-
- lib/scaffolding/templates/view_model.ftt
|
73
|
-
- lib/scaffolding/templates/viewmodel_toplevel.ftt
|
74
|
-
- lib/scaffolding/templates/view_control_glade.ftt
|
75
|
-
- lib/scaffolding/templates/view.ftt
|
76
|
-
- lib/scaffolding/templates/view_toplevel_glade.ftt
|
77
|
-
- lib/scaffolding/templates/application.ftt
|
78
|
-
- lib/scaffolding/generator.rb
|
79
|
-
- lib/extensions/qt/widgets/qt_base.rb
|
65
|
+
- lib/freightrain/freight_color.rb
|
66
|
+
- lib/extensions/qt/qt_bootstrapper.rb
|
67
|
+
- lib/extensions/qt/interface_builder.rb
|
80
68
|
- lib/extensions/qt/widgets/qt_line_edit.rb
|
69
|
+
- lib/extensions/qt/widgets/qt_layout.rb
|
70
|
+
- lib/extensions/qt/widgets/qt_abstract_button.rb
|
71
|
+
- lib/extensions/qt/widgets/qt_base.rb
|
81
72
|
- lib/extensions/qt/widgets/qt_label.rb
|
82
73
|
- lib/extensions/qt/widgets/qt_calendar_widget.rb
|
83
|
-
- lib/extensions/qt/widgets/qt_abstract_button.rb
|
84
|
-
- lib/extensions/qt/widgets/qt_layout.rb
|
85
|
-
- lib/extensions/qt/interface_builder.rb
|
86
74
|
- lib/extensions/qt/dialog_helper.rb
|
87
|
-
- lib/extensions/
|
88
|
-
- lib/extensions/
|
75
|
+
- lib/extensions/wx/interface_builder.rb
|
76
|
+
- lib/extensions/wx/wx_bootstrapper.rb
|
77
|
+
- lib/extensions/wx/widgets/wx_panel.rb
|
78
|
+
- lib/extensions/wx/widgets/wx_object.rb
|
79
|
+
- lib/extensions/wx/dialog_helper.rb
|
80
|
+
- lib/extensions/gtk/interface_builder.rb
|
81
|
+
- lib/extensions/gtk/widgets/gtk_combo_box.rb
|
89
82
|
- lib/extensions/gtk/widgets/gtk_image.rb
|
90
|
-
- lib/extensions/gtk/widgets/
|
91
|
-
- lib/extensions/gtk/widgets/gtk_calendar.rb
|
83
|
+
- lib/extensions/gtk/widgets/gtk_widget.rb
|
92
84
|
- lib/extensions/gtk/widgets/gtk_toggle_button.rb
|
93
|
-
- lib/extensions/gtk/widgets/
|
85
|
+
- lib/extensions/gtk/widgets/gtk_calendar.rb
|
94
86
|
- lib/extensions/gtk/widgets/gtk_layout.rb
|
87
|
+
- lib/extensions/gtk/widgets/gtk_treeview.rb
|
88
|
+
- lib/extensions/gtk/widgets/gtk_toggle_tool_button.rb
|
95
89
|
- lib/extensions/gtk/widgets/gtk_statusicon.rb
|
96
|
-
- lib/extensions/gtk/widgets/gtk_combo_box.rb
|
97
90
|
- lib/extensions/gtk/widgets/gtk_treeviewcolumn.rb
|
98
|
-
- lib/extensions/gtk/interface_builder.rb
|
99
91
|
- lib/extensions/gtk/gtk_bootstrapper.rb
|
100
92
|
- lib/extensions/gtk/dialog_helper.rb
|
101
|
-
- lib/
|
102
|
-
- lib/
|
103
|
-
- lib/
|
104
|
-
- lib/
|
105
|
-
- lib/
|
93
|
+
- lib/freightrain-dev/auto_stubber.rb
|
94
|
+
- lib/freightrain.rb
|
95
|
+
- lib/scaffolding/generator.rb
|
96
|
+
- lib/scaffolding/commands/app.rb
|
97
|
+
- lib/scaffolding/commands/triad.rb
|
98
|
+
- lib/scaffolding/scaffolding.rb
|
99
|
+
- lib/scaffolding/templates/view_toplevel_glade.ftt
|
100
|
+
- lib/scaffolding/templates/view.ftt
|
101
|
+
- lib/scaffolding/templates/view_toplevel.ftt
|
102
|
+
- lib/scaffolding/templates/viewmodel_toplevel.ftt
|
103
|
+
- lib/scaffolding/templates/application.ftt
|
104
|
+
- lib/scaffolding/templates/view_control_glade.ftt
|
105
|
+
- lib/scaffolding/templates/view_bnd.ftt
|
106
|
+
- lib/scaffolding/templates/view_model.ftt
|
106
107
|
homepage: http://github.com/bolthar/freightrain
|
107
108
|
licenses: []
|
108
109
|
post_install_message:
|
@@ -123,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
124
|
version: '0'
|
124
125
|
requirements: []
|
125
126
|
rubyforge_project:
|
126
|
-
rubygems_version: 1.8.
|
127
|
+
rubygems_version: 1.8.17
|
127
128
|
signing_key:
|
128
129
|
specification_version: 3
|
129
130
|
summary: ruby desktop development made easy
|