freightrain 0.6.5 → 0.6.6

Sign up to get free protection for your applications and to get access to all the features.
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