rugui 1.6.0 → 2.0.0.beta2

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.
Files changed (54) hide show
  1. data/README.rdoc +48 -23
  2. data/Rakefile +3 -10
  3. data/bin/rugui +4 -1
  4. data/lib/rugui/base_view.rb +5 -5
  5. data/lib/rugui/configuration.rb +1 -29
  6. data/lib/rugui/entity_registration_support.rb +17 -2
  7. data/lib/rugui/framework_adapters/GTK.rb +15 -32
  8. data/lib/rugui/framework_adapters/Qt4.rb +22 -3
  9. data/lib/rugui/generators/rugui/rugui_generator.rb +3 -9
  10. data/lib/rugui/generators/rugui/templates/Gemfile.tt +20 -0
  11. data/lib/rugui/generators/rugui/templates/Rakefile +0 -4
  12. data/lib/rugui/generators/rugui/templates/app/main.rb +1 -1
  13. data/lib/rugui/generators/rugui/templates/config/boot.rb +5 -78
  14. data/lib/rugui/generators/rugui/templates/config/environment.rb.tt +7 -7
  15. data/lib/rugui/generators/rugui/templates/framework_specific/gtk/app/resources/xml/main_view.xml +43 -0
  16. data/lib/rugui/generators/rugui/templates/spec/spec_helper.rb +0 -2
  17. data/lib/rugui/initializer.rb +3 -60
  18. data/lib/rugui/observable_property_support.rb +5 -1
  19. data/lib/rugui/property_changed_support.rb +1 -1
  20. data/lib/rugui/signal_support.rb +2 -2
  21. data/lib/rugui/tasks/rugui.rb +1 -1
  22. data/lib/rugui/tasks/runner_application.rake +1 -1
  23. data/lib/rugui/tasks/spec_application.rake +5 -44
  24. data/lib/rugui/tasks/spec_framework.rake +3 -25
  25. data/lib/rugui/version.rb +1 -7
  26. data/lib/rugui.rb +0 -3
  27. data/spec/framework/base_controller_spec.rb +7 -14
  28. data/spec/framework/base_model_spec.rb +1 -3
  29. data/spec/framework/base_view_helper_spec.rb +1 -3
  30. data/spec/framework/base_view_spec.rb +2 -5
  31. data/spec/framework/log_support_spec.rb +2 -2
  32. data/spec/framework/observable_property_proxy_spec.rb +13 -14
  33. data/spec/framework/observable_property_support_spec.rb +8 -10
  34. data/spec/framework/property_observer_spec.rb +20 -22
  35. data/spec/helpers/controllers.rb +3 -3
  36. data/spec/helpers/helper_manager.rb +9 -0
  37. data/spec/helpers/observables.rb +40 -52
  38. data/spec/helpers/views.rb +15 -15
  39. data/spec/resource_files/my_other_view.xml +53 -0
  40. data/spec/resource_files/my_view.xml +53 -0
  41. data/spec/spec_helper.rb +9 -3
  42. metadata +98 -84
  43. data/lib/rugui/gem_builder.rb +0 -21
  44. data/lib/rugui/gem_dependency.rb +0 -282
  45. data/lib/rugui/generators/rugui/templates/framework_specific/gtk/app/resources/glade/main_view.glade +0 -33
  46. data/lib/rugui/generators/rugui/templates/spec/rcov.opts +0 -1
  47. data/lib/rugui/generators/rugui/templates/spec/spec.opts +0 -4
  48. data/lib/rugui/generators/rugui/templates/test/test_helper.rb +0 -12
  49. data/lib/rugui/plugin/loader.rb +0 -77
  50. data/lib/rugui/tasks/gems_application.rake +0 -71
  51. data/lib/rugui/tasks/test_application.rake +0 -77
  52. data/lib/rugui/vendor_gem_source_index.rb +0 -140
  53. data/spec/rcov.opts +0 -1
  54. data/spec/spec.opts +0 -5
@@ -1,7 +1,7 @@
1
1
  # Defines some observables and custom types used in specs.
2
2
 
3
3
  class FakeObservable < RuGUI::BaseObject
4
- attr_accessor :property_changed_message
4
+ attr_accessor :property_changed_message
5
5
 
6
6
  def framework_adapter
7
7
  framework_adapter_for('BaseController')
@@ -14,24 +14,16 @@ end
14
14
 
15
15
  class AnotherFakeObserver < RuGUI::BaseObject
16
16
  attr_accessor :property_updated_message
17
-
18
- def value_to_s(value)
19
- if value.is_a?(Hash)
20
- value.keys.sort
21
- else
22
- value
23
- end
24
- end
25
-
17
+
26
18
  def property_updated(observable, property, new_value, old_value)
27
-
28
- @property_updated_message = "#{observable} property #{property} changed from #{value_to_s(old_value)} to #{value_to_s(new_value)}"
19
+
20
+ @property_updated_message = "#{observable} property #{property} changed from #{old_value.inspect} to #{new_value.inspect}"
29
21
  end
30
22
  end
31
23
 
32
24
  class AnotherFakeObservable < RuGUI::BaseObject
33
25
  include RuGUI::ObservablePropertySupport
34
-
26
+
35
27
  observable_property :my_observable_property
36
28
  observable_property :my_array_observable_property, :initial_value => []
37
29
  observable_property :my_hash_observable_property, :initial_value => {}
@@ -39,19 +31,23 @@ class AnotherFakeObservable < RuGUI::BaseObject
39
31
  observable_property :resetable_observable_property, :reset_value => "some_reset_value"
40
32
  observable_property :initialized_and_resetable_observable_property, :initial_value => "some_initial_value", :reset_value => "some_reset_value"
41
33
  observable_property :core_observable_property, :core => true, :initial_value => "some_initial_value"
42
-
34
+
43
35
  def to_s
44
36
  self.class.name
45
37
  end
38
+
39
+ def inspect
40
+ to_s
41
+ end
46
42
  end
47
43
 
48
44
  class SomeOtherFakeObservable < RuGUI::BaseObject
49
45
  include RuGUI::ObservablePropertySupport
50
-
46
+
51
47
  observable_property :another_observable_property, :initial_value => "some_other_initial_value"
52
48
  observable_property :first_core_observable_property, :core => true, :initial_value => "first"
53
49
  observable_property :second_core_observable_property, :core => true, :initial_value => "second"
54
-
50
+
55
51
  def to_s
56
52
  self.class.name
57
53
  end
@@ -59,9 +55,9 @@ end
59
55
 
60
56
  class CustomTypeFakeObservable < RuGUI::BaseObject
61
57
  include RuGUI::ObservablePropertySupport
62
-
58
+
63
59
  observable_property :custom_type_observable_property, :core => true, :initial_value => AnotherFakeObservable.new
64
-
60
+
65
61
  def to_s
66
62
  self.class.name
67
63
  end
@@ -69,10 +65,10 @@ end
69
65
 
70
66
  class ResetPreventedFakeObservable < RuGUI::BaseObject
71
67
  include RuGUI::ObservablePropertySupport
72
-
68
+
73
69
  observable_property :reset_prevented_observable_property, :prevent_reset => true
74
70
  observable_property :reset_prevented_with_reset_value_observable_property, :reset_value => 'foo', :prevent_reset => true
75
-
71
+
76
72
  def to_s
77
73
  self.class.name
78
74
  end
@@ -80,10 +76,10 @@ end
80
76
 
81
77
  class BooleanPropertiesFakeObservable < RuGUI::BaseObject
82
78
  include RuGUI::ObservablePropertySupport
83
-
79
+
84
80
  observable_property :boolean_observable_property, :boolean => true
85
81
  observable_property :non_boolean_observable_property
86
-
82
+
87
83
  def to_s
88
84
  self.class.name
89
85
  end
@@ -91,10 +87,10 @@ end
91
87
 
92
88
  class ParentFakeObservable < RuGUI::BaseObject
93
89
  include RuGUI::ObservablePropertySupport
94
-
90
+
95
91
  observable_property :my_own_observable_property
96
92
  observable_property :child_observable_property
97
-
93
+
98
94
  def to_s
99
95
  self.class.name
100
96
  end
@@ -102,9 +98,9 @@ end
102
98
 
103
99
  class ChildFakeObservable < RuGUI::BaseObject
104
100
  include RuGUI::ObservablePropertySupport
105
-
101
+
106
102
  observable_property :my_observable_property, :core => true
107
-
103
+
108
104
  def to_s
109
105
  self.class.name
110
106
  end
@@ -112,9 +108,9 @@ end
112
108
 
113
109
  class FakeObservableForPropertyObserverTest < RuGUI::BaseObject
114
110
  include RuGUI::ObservablePropertySupport
115
-
111
+
116
112
  observable_property :my_observable_property
117
-
113
+
118
114
  def to_s
119
115
  self.class.name
120
116
  end
@@ -122,9 +118,9 @@ end
122
118
 
123
119
  class FakeNamedObservableTest < RuGUI::BaseObject
124
120
  include RuGUI::ObservablePropertySupport
125
-
121
+
126
122
  observable_property :my_observable_property
127
-
123
+
128
124
  def to_s
129
125
  self.class.name
130
126
  end
@@ -132,7 +128,7 @@ end
132
128
 
133
129
  class FakeObserverForPropertyObserverTest < RuGUI::BaseObject
134
130
  include RuGUI::PropertyObserver
135
-
131
+
136
132
  attr_accessor :property_updated_message
137
133
  attr_accessor :class_specific_method_called_message
138
134
  attr_accessor :instance_specific_method_called_message
@@ -140,19 +136,19 @@ class FakeObserverForPropertyObserverTest < RuGUI::BaseObject
140
136
  attr_accessor :observable
141
137
  attr_accessor :named_observable
142
138
  attr_accessor :fake_named_observable_test
143
-
139
+
144
140
  attr_accessor :property_changed_counter
145
-
141
+
146
142
  def initialize
147
143
  @observable = FakeObservableForPropertyObserverTest.new
148
144
  @observable.register_observer(self)
149
-
145
+
150
146
  @named_observable = FakeObservableForPropertyObserverTest.new
151
147
  @named_observable.register_observer(self, 'named_observable')
152
-
148
+
153
149
  @fake_named_observable_test = FakeNamedObservableTest.new
154
150
  @fake_named_observable_test.register_observer(self, 'fake_named_observable_test')
155
-
151
+
156
152
  @property_changed_counter = 0
157
153
  end
158
154
 
@@ -160,26 +156,18 @@ class FakeObserverForPropertyObserverTest < RuGUI::BaseObject
160
156
  framework_adapter_for('BaseController')
161
157
  end
162
158
 
163
- def value_to_s(value)
164
- if value.is_a?(Hash)
165
- value.keys.sort
166
- else
167
- value
168
- end
169
- end
170
-
171
159
  def property_my_observable_property_changed(observable, new_value, old_value)
172
- @property_updated_message = "#{observable} property my_observable_property changed from #{value_to_s(old_value)} to #{value_to_s(new_value)}"
160
+ @property_updated_message = "#{observable} property my_observable_property changed from #{old_value.inspect} to #{new_value.inspect}"
173
161
  end
174
-
162
+
175
163
  def property_fake_observable_for_property_observer_test_my_observable_property_changed(observable, new_value, old_value)
176
164
  @class_specific_method_called_message = "Property my_observable_property changed, called from class specific method"
177
165
  end
178
-
166
+
179
167
  def property_named_observable_my_observable_property_changed(observable, new_value, old_value)
180
168
  @instance_specific_method_called_message = "Property my_observable_property changed, called from named instance specific method"
181
169
  end
182
-
170
+
183
171
  def property_fake_named_observable_test_my_observable_property_changed(observable, new_value, old_value)
184
172
  @property_changed_counter += 1
185
173
  end
@@ -191,19 +179,19 @@ class CustomType < RuGUI::BaseObject
191
179
  def custom_method
192
180
  "foo"
193
181
  end
194
-
182
+
195
183
  def custom_method_with_parameters(first_param, second_param, *args)
196
184
  "#{first_param}, #{second_param}, #{args.join(', ')}"
197
185
  end
198
-
186
+
199
187
  def change_custom_property(new_value)
200
188
  @custom_property = new_value
201
189
  end
202
-
190
+
203
191
  def ==(obj)
204
192
  obj.is_a?(CustomType) and obj.custom_property == self.custom_property
205
193
  end
206
-
194
+
207
195
  def to_s
208
196
  self.custom_property
209
197
  end
@@ -6,31 +6,31 @@ class MyView < RuGUI::BaseView
6
6
  include InitializeHooksHelper
7
7
 
8
8
  use_builder
9
- builder_file File.join(File.dirname(__FILE__), '..', 'resource_files', 'my_view.glade')
9
+ builder_file File.join(File.dirname(__FILE__), '..', 'resource_files', 'my_view.xml')
10
10
  root :top_window
11
-
11
+
12
12
  attr_accessor :message
13
-
13
+
14
14
  def setup_view_helpers
15
15
  register_helper :my_view_helper, :my_other_view_helper_instance
16
16
  end
17
-
17
+
18
18
  def on_button_above_clicked(widget)
19
19
  @message = "#{self.class} button above clicked."
20
20
  end
21
-
21
+
22
22
  def on_button_below_clicked(widget)
23
23
  @message = "#{self.class} button below clicked."
24
24
  end
25
-
25
+
26
26
  def on_top_window_delete_event(widget, event)
27
27
  @message = "#{self.class} top window deleted."
28
28
  end
29
-
29
+
30
30
  def property_message_changed(observable, new_value, old_value)
31
31
  @message = "#{observable.class.name} property message changed from #{old_value} to #{new_value}"
32
32
  end
33
-
33
+
34
34
  def property_my_other_view_helper_instance_message_changed(observable, new_value, old_value)
35
35
  @message = "Property message of my_other_view_helper_instance changed from #{old_value} to #{new_value}"
36
36
  end
@@ -38,11 +38,11 @@ end
38
38
 
39
39
  class MyChildView < MyView
40
40
  root :vertical_container
41
-
41
+
42
42
  def on_button_above_clicked(widget)
43
43
  @message = "#{self.class} button above clicked."
44
44
  end
45
-
45
+
46
46
  def on_button_below_clicked(widget)
47
47
  @message = "#{self.class} button below clicked."
48
48
  end
@@ -50,19 +50,19 @@ end
50
50
 
51
51
  class MyOtherView < RuGUI::BaseView
52
52
  use_builder
53
- builder_file File.join(File.dirname(__FILE__), '..', 'resource_files', 'my_other_view.glade')
53
+ builder_file File.join(File.dirname(__FILE__), '..', 'resource_files', 'my_other_view.xml')
54
54
  root :top_window
55
-
55
+
56
56
  attr_accessor :message
57
-
57
+
58
58
  def on_button_right_clicked(widget)
59
59
  @message = "#{self.class} button right clicked."
60
60
  end
61
-
61
+
62
62
  def on_button_left_clicked(widget)
63
63
  @message = "#{self.class} button left clicked."
64
64
  end
65
-
65
+
66
66
  def on_top_window_delete_event(widget, event)
67
67
  @message = "#{self.class} top window deleted."
68
68
  end
@@ -0,0 +1,53 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <interface>
3
+ <!-- interface-requires gtk+ 2.6 -->
4
+ <!-- interface-naming-policy toplevel-contextual -->
5
+ <object class="GtkWindow" id="top_window">
6
+ <property name="can_focus">False</property>
7
+ <signal name="delete-event" handler="on_top_window_delete_event" swapped="no"/>
8
+ <child>
9
+ <object class="GtkHBox" id="horizontal_container">
10
+ <property name="visible">True</property>
11
+ <property name="can_focus">False</property>
12
+ <child>
13
+ <object class="GtkButton" id="button_left">
14
+ <property name="visible">True</property>
15
+ <property name="can_focus">True</property>
16
+ <property name="receives_default">True</property>
17
+ <signal name="clicked" handler="on_button_left_clicked" swapped="no"/>
18
+ </object>
19
+ <packing>
20
+ <property name="expand">True</property>
21
+ <property name="fill">True</property>
22
+ <property name="position">0</property>
23
+ </packing>
24
+ </child>
25
+ <child>
26
+ <object class="GtkLabel" id="label">
27
+ <property name="visible">True</property>
28
+ <property name="can_focus">False</property>
29
+ <property name="label" translatable="yes">A label in the middle</property>
30
+ </object>
31
+ <packing>
32
+ <property name="expand">True</property>
33
+ <property name="fill">True</property>
34
+ <property name="position">1</property>
35
+ </packing>
36
+ </child>
37
+ <child>
38
+ <object class="GtkButton" id="button_right">
39
+ <property name="visible">True</property>
40
+ <property name="can_focus">True</property>
41
+ <property name="receives_default">True</property>
42
+ <signal name="clicked" handler="on_button_right_clicked" swapped="no"/>
43
+ </object>
44
+ <packing>
45
+ <property name="expand">True</property>
46
+ <property name="fill">True</property>
47
+ <property name="position">2</property>
48
+ </packing>
49
+ </child>
50
+ </object>
51
+ </child>
52
+ </object>
53
+ </interface>
@@ -0,0 +1,53 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <interface>
3
+ <!-- interface-requires gtk+ 2.6 -->
4
+ <!-- interface-naming-policy toplevel-contextual -->
5
+ <object class="GtkWindow" id="top_window">
6
+ <property name="can_focus">False</property>
7
+ <signal name="delete-event" handler="on_top_window_delete_event" swapped="no"/>
8
+ <child>
9
+ <object class="GtkVBox" id="vertical_container">
10
+ <property name="visible">True</property>
11
+ <property name="can_focus">False</property>
12
+ <child>
13
+ <object class="GtkButton" id="button_above">
14
+ <property name="visible">True</property>
15
+ <property name="can_focus">True</property>
16
+ <property name="receives_default">True</property>
17
+ <signal name="clicked" handler="on_button_above_clicked" swapped="no"/>
18
+ </object>
19
+ <packing>
20
+ <property name="expand">True</property>
21
+ <property name="fill">True</property>
22
+ <property name="position">0</property>
23
+ </packing>
24
+ </child>
25
+ <child>
26
+ <object class="GtkLabel" id="label">
27
+ <property name="visible">True</property>
28
+ <property name="can_focus">False</property>
29
+ <property name="label" translatable="yes">Some label in the middle</property>
30
+ </object>
31
+ <packing>
32
+ <property name="expand">True</property>
33
+ <property name="fill">True</property>
34
+ <property name="position">1</property>
35
+ </packing>
36
+ </child>
37
+ <child>
38
+ <object class="GtkButton" id="button_below">
39
+ <property name="visible">True</property>
40
+ <property name="can_focus">True</property>
41
+ <property name="receives_default">True</property>
42
+ <signal name="clicked" handler="on_button_below_clicked" swapped="no"/>
43
+ </object>
44
+ <packing>
45
+ <property name="expand">True</property>
46
+ <property name="fill">True</property>
47
+ <property name="position">2</property>
48
+ </packing>
49
+ </child>
50
+ </object>
51
+ </child>
52
+ </object>
53
+ </interface>
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
- require 'rubygems'
2
- require 'spec'
1
+ require 'bundler/setup'
2
+
3
+ Bundler.require(:default, :test)
3
4
 
4
5
  $:.unshift File.join(File.dirname(__FILE__),'..','lib')
5
6
 
@@ -10,6 +11,11 @@ APPLICATION_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(APPLICATION_RO
10
11
 
11
12
  RuGUI::Initializer.run { |config| config.logger[:level] = :error }
12
13
 
13
- Spec::Runner.configure do |config|
14
+ Dir["spec/helpers/**/*.rb"].each { |file| load file }
15
+
16
+ RSpec.configure do |config|
14
17
  # No configuration here yet.
18
+ config.before(:each) do
19
+ HelperManager.clear!
20
+ end
15
21
  end