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 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
- sudo apt-get install libruby1.8 ruby1.8-dev
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
@@ -8,7 +8,7 @@ require 'rake/testtask'
8
8
 
9
9
  spec = Gem::Specification.new do |s|
10
10
  s.name = 'freightrain'
11
- s.version = '0.8.0'
11
+ s.version = '0.8.1'
12
12
  s.add_dependency('require_all', '>= 1.1.0')
13
13
  s.has_rdoc = false
14
14
  s.homepage = "http://github.com/bolthar/freightrain"
@@ -33,6 +33,10 @@ module Freightrain
33
33
  Gtk.main_quit
34
34
  end
35
35
 
36
+ def self.default_builder
37
+ return :glade
38
+ end
39
+
36
40
  end
37
41
 
38
- end
42
+ end
@@ -8,7 +8,7 @@ module Gtk
8
8
  @defaults = {} unless @defaults
9
9
  return @defaults
10
10
  end
11
-
11
+
12
12
  #made for easier compatibility (other toolkits use show/hide)
13
13
  def show
14
14
  self.visible = true
@@ -20,7 +20,11 @@ module Freightrain
20
20
  yield
21
21
  app.exec
22
22
  end
23
+
24
+ def self.default_toolkit
25
+ return :none
26
+ end
23
27
 
24
28
  end
25
29
 
26
- end
30
+ end
@@ -30,6 +30,10 @@ module Freightrain
30
30
  app.main_loop
31
31
  end
32
32
 
33
+ def self.default_toolkit
34
+ return :none
35
+ end
36
+
33
37
  end
34
38
 
35
- end
39
+ end
@@ -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
- @builder = Freightrain.get_interface_builder
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.0
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-01-21 00:00:00.000000000 Z
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: &7535040 !ruby/object:Gem::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: *7535040
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-dev/auto_stubber.rb
36
- - lib/freightrain/services/freight_service.rb
37
- - lib/freightrain/services/service_host.rb
38
- - lib/freightrain/signals/signal_host.rb
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/regions/freight_region.rb
41
- - lib/freightrain/regions/region_host.rb
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/string_patch.rb
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/elements/freight_element_view_model.rb
49
- - lib/freightrain/bootstrapper.rb
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/binding_base.rb
57
+ - lib/freightrain/binding/binding_host.rb
59
58
  - lib/freightrain/binding/binding_loader.rb
60
- - lib/freightrain/binding/converters/float_converter.rb
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/binding/binding_host.rb
66
- - lib/freightrain.rb
67
- - lib/scaffolding/scaffolding.rb
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/qt/qt_bootstrapper.rb
88
- - lib/extensions/gtk/widgets/gtk_widget.rb
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/gtk_treeview.rb
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/gtk_toggle_tool_button.rb
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/extensions/wx/wx_bootstrapper.rb
102
- - lib/extensions/wx/widgets/wx_panel.rb
103
- - lib/extensions/wx/widgets/wx_object.rb
104
- - lib/extensions/wx/interface_builder.rb
105
- - lib/extensions/wx/dialog_helper.rb
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.10
127
+ rubygems_version: 1.8.17
127
128
  signing_key:
128
129
  specification_version: 3
129
130
  summary: ruby desktop development made easy