freightrain 0.6.5 → 0.6.6

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/README.rdoc CHANGED
@@ -27,6 +27,7 @@ containing the application stub. To run it, cd into the directory and:
27
27
 
28
28
  'ftrain' command not working? Look here => http://stackoverflow.com/questions/909673/gems-and-ubuntu-9-04
29
29
 
30
+
30
31
  Documentation coming soon.
31
32
 
32
33
  == WHERE DO I REPORT BUGS/FEATURE REQUESTS?
@@ -38,5 +39,7 @@ Would also be very appreciated:
38
39
  === Reports about installation issues (GTK2, ruby/gnome, ftrain)
39
40
  === Reports about different platforms (could you install on OSX? Let me know!)
40
41
 
41
-
42
+ = THANKS TO:
43
+ == Jan Pliz
44
+ For his help with the qtruby bindings
42
45
 
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.6.5'
12
+ s.version = '0.6.6'
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
@@ -75,8 +75,8 @@ module Gtk
75
75
 
76
76
  def bind(options)
77
77
  if options[:property].to_s == "elements"
78
- @viewmodel = (options[:element].to_s + "_element_view_model").to_sym
79
- options[:force] = true
78
+ @viewmodel = (options[:element].to_s + "_element_view_model").to_sym
79
+ options[:force] = true
80
80
  end
81
81
  super(options)
82
82
  end
@@ -4,10 +4,10 @@ module Gtk
4
4
  class Widget
5
5
  include Freightrain::BindingBase
6
6
 
7
- def color_from_rgb(string)
8
- red = ((string[0..1].hex.to_i + 1) * 256) - 1
9
- green = ((string[2..3].hex.to_i + 1) * 256) - 1
10
- blue = ((string[4..5].hex.to_i + 1) * 256) - 1
7
+ def color_from_rgb(rgb_array)
8
+ red = rgb_array[0] * 255
9
+ green = rgb_array[1] * 255
10
+ blue = rgb_array[2] * 255
11
11
  return Gdk::Color.new(red, green, blue)
12
12
  end
13
13
 
@@ -7,10 +7,6 @@ module Freightrain
7
7
 
8
8
  attr_reader :toplevel
9
9
 
10
- def initialize
11
- @builder = Qt::UiLoader.new
12
- end
13
-
14
10
  def file_found?(file_name)
15
11
  return get_ui_files(file_name)
16
12
  end
@@ -18,12 +14,13 @@ module Freightrain
18
14
  def create_objects_from_file(file_name)
19
15
  file = Qt::File.new(get_ui_files(file_name))
20
16
  file.open(Qt::File::ReadOnly)
21
- @toplevel = @builder.load(file)
17
+ builder = Qt::UiLoader.new
18
+ @toplevel = builder.load(file)
19
+ builder.dispose
22
20
  file.close
23
- widgets = get_all_objects(@toplevel).select do |widget|
21
+ return get_all_objects(@toplevel).select do |widget|
24
22
  widget.objectName && widget.objectName != ""
25
- end.map
26
- return widgets
23
+ end
27
24
  end
28
25
 
29
26
  def create_object_accessors(widgets, view)
@@ -33,17 +30,9 @@ module Freightrain
33
30
  end
34
31
  end
35
32
 
36
- def connect_to_callback(widget, event_name, method)
37
- begin
38
- decoy_class = Class.new(Qt::Widget)
39
- decoy_class.slots("#{widget.name}()")
40
- decoy_class.send(:define_method, widget.name) do |*args|
41
- method.call(*args)
42
- end
43
- decoy = decoy_class.new
44
- widget.connect(SIGNAL(widget.get_event_signature(event_name)), decoy, widget.name.to_sym)
45
- rescue Exception => ex
46
- # p ex
33
+ def connect_to_callback(widget, event_name, callback)
34
+ widget.connect(SIGNAL(widget.get_event_signature(event_name))) do |*args|
35
+ callback.call(*args)
47
36
  end
48
37
  end
49
38
 
@@ -1,9 +1,11 @@
1
1
 
2
2
  require 'Qt4'
3
- require 'qtuitools'
3
+ require 'qtuitools' unless RUBY_PLATFORM =~ /mswin/
4
+
4
5
  require File.join(File.dirname(__FILE__), "widgets/qt_base.rb")
5
- require File.join(File.dirname(__FILE__), "widgets/qt_widget.rb")
6
6
  require File.join(File.dirname(__FILE__), "widgets/qt_abstract_button.rb")
7
+ require File.join(File.dirname(__FILE__), "widgets/qt_calendar_widget.rb")
8
+ require File.join(File.dirname(__FILE__), "widgets/qt_layout.rb")
7
9
  require File.join(File.dirname(__FILE__), "widgets/qt_line_edit.rb")
8
10
  require File.join(File.dirname(__FILE__), "widgets/qt_label.rb")
9
11
  require File.join(File.dirname(__FILE__), "interface_builder.rb")
@@ -6,6 +6,7 @@ module Qt
6
6
  def signals
7
7
  base_list = super
8
8
  base_list[:toggled] = "toggled(bool)"
9
+ return base_list
9
10
  end
10
11
 
11
12
  end
@@ -21,6 +21,19 @@ module Qt
21
21
  return signals[event_name.to_sym] || "#{event_name}()"
22
22
  end
23
23
 
24
+ def foreground=(val)
25
+ palette = self.palette
26
+ palette.setColor(Qt::Palette.Foreground, Qt::Color.new(val[0], val[1], val[2]))
27
+ self.palette = palette
28
+ end
29
+
30
+ def background=(val)
31
+ palette = self.palette
32
+ palette.setColor(Qt::Palette.Background, Qt::Color.new(val[0], val[1], val[2]))
33
+ self.palette = palette
34
+ end
35
+
36
+
24
37
  end
25
38
 
26
39
  end
@@ -0,0 +1,21 @@
1
+
2
+ module Qt
3
+
4
+ class CalendarWidget
5
+
6
+ def signals
7
+ base_list = super
8
+ base_list[:clicked] = "clicked(QDate)"
9
+ base_list[:activated] = "activated(QDate)"
10
+ return base_list
11
+ end
12
+
13
+ def selectedDate=(value)
14
+ if value.kind_of? ::Date
15
+ super(value)
16
+ end
17
+ end
18
+
19
+ end
20
+
21
+ end
@@ -12,6 +12,10 @@ module Qt
12
12
  self.pixmap = image
13
13
  self.resize(self.pixmap.size)
14
14
  end
15
+
16
+ def text=(value)
17
+ super(value) unless value == nil
18
+ end
15
19
 
16
20
  end
17
21
 
@@ -1,9 +1,9 @@
1
1
 
2
2
  module Qt
3
3
 
4
- class Widget
5
- include Freightrain::LayoutWidget
6
-
4
+ class VBoxLayout
5
+ include Freightrain::LayoutWidget
6
+
7
7
  def setup
8
8
  @signals ||= {}
9
9
  selected_callback = @signals[:selected]
@@ -19,33 +19,17 @@ module Qt
19
19
 
20
20
  def elements=(enumerable)
21
21
  setup unless @ready
22
- delta = enumerable.length - @elements.length
23
- @height_factor = self.get_new_item.control.height unless @height_factor
24
- height = @elements.length
25
- delta.abs.times do
26
- if delta > 0
27
- item = self.get_new_item
28
- item.control.geometry = Qt::Rect.new(
29
- 0,
30
- item.control.height * height,
31
- item.control.width,
32
- item.control.height
33
- )
34
- item.control.setParent(self)
35
- item.control.show
36
- @elements << item
37
- height += 1
38
- else
39
- item = self.children.last
40
- item.control.setParent(nil)
41
- @elements.delete_if {|element| element.control == item }
42
- item.control = nil
43
- end
22
+ @elements.each do |item|
23
+ self.removeWidget(item.control)
24
+ item.control.dispose
44
25
  end
45
- self.setMinimumHeight(@elements.length * @height_factor)
46
- self.show
47
- @elements.each do |element|
48
- element.value = enumerable[@elements.index(element)]
26
+ @elements.clear
27
+ enumerable.each do |value|
28
+ item = self.get_new_item
29
+ item.value = value
30
+ self.addWidget(item.control)
31
+ item.control.show
32
+ @elements << item
49
33
  end
50
34
  end
51
35
 
@@ -74,12 +58,10 @@ module Qt
74
58
  def bind(options)
75
59
  if options[:property].to_sym == :elements
76
60
  @viewmodel = (options[:element].to_s + "_element_view_model").to_sym
77
- @signals = options[:signals]
78
61
  options[:force] = true
79
62
  end
80
63
  super(options)
81
64
  end
82
65
 
83
66
  end
84
-
85
- end
67
+ end
@@ -0,0 +1,11 @@
1
+
2
+ #TODO: implement
3
+ module Freightrain
4
+ module Toolkit
5
+
6
+ module DialogHelper
7
+
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,62 @@
1
+
2
+ module Freightrain
3
+ module Toolkit
4
+
5
+ class InterfaceBuilder
6
+
7
+ attr_reader :toplevel
8
+
9
+ def file_found?(file_name)
10
+ return get_xrc_files(file_name)
11
+ end
12
+
13
+ def get_xrc_files(file_name)
14
+ search_path = File.join(
15
+ Freightrain.app_path,
16
+ "views",
17
+ "**",
18
+ file_name.to_convention + ".xrc")
19
+ results = Dir.glob(search_path)
20
+ return results.first
21
+ end
22
+
23
+ def create_objects_from_file(file_name)
24
+ builder = Wx::XmlResource.new(get_xrc_files(file_name))
25
+ toplevel_name = get_toplevel_name(file_name)
26
+ @toplevel = builder.load_frame(nil, toplevel_name)
27
+ return get_all_objects(@toplevel)
28
+ end
29
+
30
+ def create_object_accessors(widgets, view)
31
+ widgets.each do |widget|
32
+ view.instance_eval "def #{name}; @widgets.select { |w| w.name == '#{widget.name}' }.first ;end;"
33
+ end
34
+ end
35
+
36
+ def connect_to_callback(widget, event_name, callback)
37
+ # widget.connect(SIGNAL(widget.get_event_signature(event_name))) do |*args|
38
+ # callback.call(*args)
39
+ # end
40
+ end
41
+
42
+ def control
43
+ return @toplevel
44
+ end
45
+
46
+ private
47
+ def get_all_objects(parent, objects = [])
48
+ objects << parent
49
+ parent.get_children.each do |child|
50
+ get_all_objects(child, objects)
51
+ end
52
+ return objects
53
+ end
54
+
55
+ def get_toplevel_name(file_name)
56
+ return "my_frame"
57
+ end
58
+
59
+ end
60
+
61
+ end
62
+ end
@@ -0,0 +1,33 @@
1
+
2
+ require 'wx'
3
+
4
+ require File.join(File.dirname(__FILE__), "interface_builder.rb")
5
+ require File.join(File.dirname(__FILE__), "dialog_helper.rb")
6
+
7
+ module Freightrain
8
+
9
+ module Toolkit
10
+
11
+ class WxApp < Wx::App
12
+
13
+ def initialize(&block)
14
+ super
15
+ @startup = block
16
+ end
17
+
18
+ def on_init
19
+ @startup.call
20
+ end
21
+
22
+ end
23
+
24
+ def self.start_main_loop
25
+ app = WxApp.new do
26
+ yield
27
+ end
28
+ app.main_loop
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -19,7 +19,7 @@ module Freightrain
19
19
  end
20
20
 
21
21
  def bindings
22
- return widgets.each.map { |widget| widget.bindings }.flatten
22
+ return widgets.map { |widget| widget.bindings }.flatten
23
23
  end
24
24
 
25
25
  def commit
@@ -7,9 +7,6 @@ module Freightrain
7
7
  extend SignalHost
8
8
  extend ContainerHookable
9
9
 
10
- # attr_reader :widgets
11
-
12
- #TODO: CRITICAL make it toolkit-agnostic
13
10
  def widgets
14
11
  return @widgets.select { |widget| widget.kind_of? BindingBase }
15
12
  end
@@ -47,7 +44,7 @@ module Freightrain
47
44
  load_from_file(self.class.name, @builder)
48
45
  end
49
46
  hook_to_layout_widgets()
50
- load_bindings_from_file(@widgets)
47
+ load_bindings_from_file(@widgets)
51
48
  end
52
49
 
53
50
  def hook_to_layout_widgets
metadata CHANGED
@@ -1,12 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freightrain
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 6
8
- - 5
9
- version: 0.6.5
4
+ version: 0.6.6
10
5
  platform: ruby
11
6
  authors:
12
7
  - Andrea Dallera
@@ -14,37 +9,29 @@ autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
11
 
17
- date: 2010-05-17 00:00:00 +02:00
12
+ date: 2010-05-27 00:00:00 +02:00
18
13
  default_executable:
19
14
  dependencies:
20
15
  - !ruby/object:Gem::Dependency
21
16
  name: require_all
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
24
20
  requirements:
25
21
  - - ">="
26
22
  - !ruby/object:Gem::Version
27
- segments:
28
- - 1
29
- - 1
30
- - 0
31
23
  version: 1.1.0
32
- type: :runtime
33
- version_requirements: *id001
24
+ version:
34
25
  - !ruby/object:Gem::Dependency
35
26
  name: needle
36
- prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
38
30
  requirements:
39
31
  - - ">="
40
32
  - !ruby/object:Gem::Version
41
- segments:
42
- - 1
43
- - 3
44
- - 0
45
33
  version: 1.3.0
46
- type: :runtime
47
- version_requirements: *id002
34
+ version:
48
35
  description: ruby desktop development made easy
49
36
  email: andrea@andreadallera.com
50
37
  executables:
@@ -57,70 +44,74 @@ files:
57
44
  - README.rdoc
58
45
  - Rakefile
59
46
  - bin/ftrain
60
- - lib/scaffolding/commands/triad.rb
61
- - lib/scaffolding/commands/app.rb
47
+ - lib/freightrain.rb
62
48
  - lib/scaffolding/scaffolding.rb
63
49
  - lib/scaffolding/generator.rb
64
- - lib/scaffolding/templates/view_bnd.ftt
65
50
  - lib/scaffolding/templates/view_toplevel.ftt
66
- - lib/scaffolding/templates/view_toplevel_glade.ftt
67
51
  - lib/scaffolding/templates/view_model.ftt
68
- - lib/scaffolding/templates/view_control_glade.ftt
69
52
  - lib/scaffolding/templates/viewmodel_toplevel.ftt
70
- - lib/scaffolding/templates/view.ftt
53
+ - lib/scaffolding/templates/view_toplevel_glade.ftt
54
+ - lib/scaffolding/templates/view_control_glade.ftt
71
55
  - lib/scaffolding/templates/application.ftt
72
- - lib/freightrain/binding/converters/boolean_converter.rb
56
+ - lib/scaffolding/templates/view_bnd.ftt
57
+ - lib/scaffolding/templates/view.ftt
58
+ - lib/scaffolding/commands/triad.rb
59
+ - lib/scaffolding/commands/app.rb
60
+ - lib/extensions/wx/interface_builder.rb
61
+ - lib/extensions/wx/wx_bootstrapper.rb
62
+ - lib/extensions/wx/dialog_helper.rb
63
+ - lib/extensions/gtk/interface_builder.rb
64
+ - lib/extensions/gtk/dialog_helper.rb
65
+ - lib/extensions/gtk/widgets/gtk_toggle_button.rb
66
+ - lib/extensions/gtk/widgets/gtk_toggle_tool_button.rb
67
+ - lib/extensions/gtk/widgets/gtk_treeview.rb
68
+ - lib/extensions/gtk/widgets/gtk_widget.rb
69
+ - lib/extensions/gtk/widgets/gtk_image.rb
70
+ - lib/extensions/gtk/widgets/gtk_treeviewcolumn.rb
71
+ - lib/extensions/gtk/widgets/gtk_calendar.rb
72
+ - lib/extensions/gtk/widgets/gtk_layout.rb
73
+ - lib/extensions/gtk/widgets/gtk_combo_box.rb
74
+ - lib/extensions/gtk/widgets/gtk_statusicon.rb
75
+ - lib/extensions/gtk/gtk_bootstrapper.rb
76
+ - lib/extensions/qt/interface_builder.rb
77
+ - lib/extensions/qt/dialog_helper.rb
78
+ - lib/extensions/qt/widgets/qt_calendar_widget.rb
79
+ - lib/extensions/qt/widgets/qt_abstract_button.rb
80
+ - lib/extensions/qt/widgets/qt_base.rb
81
+ - lib/extensions/qt/widgets/qt_layout.rb
82
+ - lib/extensions/qt/widgets/qt_line_edit.rb
83
+ - lib/extensions/qt/widgets/qt_label.rb
84
+ - lib/extensions/qt/qt_bootstrapper.rb
85
+ - lib/freightrain/testhelpers/auto_stubber.rb
86
+ - lib/freightrain/viewmodels/dialog_extension.rb
87
+ - lib/freightrain/viewmodels/freight_view_model.rb
88
+ - lib/freightrain/ioc/container.rb
89
+ - lib/freightrain/ioc/container_hookable.rb
90
+ - lib/freightrain/testhelpers.rb
91
+ - lib/freightrain/string_patch.rb
92
+ - lib/freightrain/regions/freight_region.rb
93
+ - lib/freightrain/regions/region_host.rb
94
+ - lib/freightrain/services/freight_service.rb
95
+ - lib/freightrain/services/service_host.rb
73
96
  - lib/freightrain/binding/converters/float_converter.rb
74
- - lib/freightrain/binding/converters/integer_converter.rb
75
- - lib/freightrain/binding/converters/default_converter.rb
97
+ - lib/freightrain/binding/converters/boolean_converter.rb
76
98
  - lib/freightrain/binding/converters/converter_factory.rb
77
- - lib/freightrain/binding/freight_binding.rb
78
- - lib/freightrain/binding/binding_base.rb
79
- - lib/freightrain/binding/binding_loader.rb
99
+ - lib/freightrain/binding/converters/default_converter.rb
100
+ - lib/freightrain/binding/converters/integer_converter.rb
80
101
  - lib/freightrain/binding/binding_host.rb
81
- - lib/freightrain/views/interface_builder.rb
82
- - lib/freightrain/views/callback_wrapper.rb
83
- - lib/freightrain/views/freight_view.rb
102
+ - lib/freightrain/binding/binding_loader.rb
103
+ - lib/freightrain/binding/binding_base.rb
104
+ - lib/freightrain/binding/freight_binding.rb
84
105
  - lib/freightrain/bootstrapper.rb
85
- - lib/freightrain/string_patch.rb
86
- - lib/freightrain/regions/freight_region.rb
87
- - lib/freightrain/regions/region_host.rb
88
- - lib/freightrain/signals/freight_signal.rb
89
106
  - lib/freightrain/signals/signal_host.rb
90
- - lib/freightrain/viewmodels/freight_view_model.rb
91
- - lib/freightrain/viewmodels/dialog_extension.rb
92
- - lib/freightrain/auto_requirer.rb
93
- - lib/freightrain/testhelpers.rb
94
- - lib/freightrain/testhelpers/auto_stubber.rb
95
- - lib/freightrain/ioc/container.rb
96
- - lib/freightrain/ioc/container_hookable.rb
97
- - lib/freightrain/services/service_host.rb
98
- - lib/freightrain/services/freight_service.rb
107
+ - lib/freightrain/signals/freight_signal.rb
108
+ - lib/freightrain/elements/layout_widget.rb
99
109
  - lib/freightrain/elements/freight_element_view.rb
100
110
  - lib/freightrain/elements/freight_element_view_model.rb
101
- - lib/freightrain/elements/layout_widget.rb
102
- - lib/extensions/qt/widgets/qt_label.rb
103
- - lib/extensions/qt/widgets/qt_base.rb
104
- - lib/extensions/qt/widgets/qt_line_edit.rb
105
- - lib/extensions/qt/widgets/qt_abstract_button.rb
106
- - lib/extensions/qt/widgets/qt_widget.rb
107
- - lib/extensions/qt/interface_builder.rb
108
- - lib/extensions/qt/dialog_helper.rb
109
- - lib/extensions/qt/qt_bootstrapper.rb
110
- - lib/extensions/gtk/gtk_bootstrapper.rb
111
- - lib/extensions/gtk/widgets/gtk_calendar.rb
112
- - lib/extensions/gtk/widgets/gtk_toggle_button.rb
113
- - lib/extensions/gtk/widgets/gtk_treeviewcolumn.rb
114
- - lib/extensions/gtk/widgets/gtk_layout.rb
115
- - lib/extensions/gtk/widgets/gtk_statusicon.rb
116
- - lib/extensions/gtk/widgets/gtk_toggle_tool_button.rb
117
- - lib/extensions/gtk/widgets/gtk_widget.rb
118
- - lib/extensions/gtk/widgets/gtk_image.rb
119
- - lib/extensions/gtk/widgets/gtk_treeview.rb
120
- - lib/extensions/gtk/widgets/gtk_combo_box.rb
121
- - lib/extensions/gtk/interface_builder.rb
122
- - lib/extensions/gtk/dialog_helper.rb
123
- - lib/freightrain.rb
111
+ - lib/freightrain/views/freight_view.rb
112
+ - lib/freightrain/views/interface_builder.rb
113
+ - lib/freightrain/views/callback_wrapper.rb
114
+ - lib/freightrain/auto_requirer.rb
124
115
  has_rdoc: true
125
116
  homepage: http://github.com/bolthar/freightrain
126
117
  licenses: []
@@ -134,20 +125,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
134
125
  requirements:
135
126
  - - ">="
136
127
  - !ruby/object:Gem::Version
137
- segments:
138
- - 0
139
128
  version: "0"
129
+ version:
140
130
  required_rubygems_version: !ruby/object:Gem::Requirement
141
131
  requirements:
142
132
  - - ">="
143
133
  - !ruby/object:Gem::Version
144
- segments:
145
- - 0
146
134
  version: "0"
135
+ version:
147
136
  requirements: []
148
137
 
149
138
  rubyforge_project:
150
- rubygems_version: 1.3.6
139
+ rubygems_version: 1.3.5
151
140
  signing_key:
152
141
  specification_version: 3
153
142
  summary: ruby desktop development made easy