glimmer-dsl-swt 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.md +47 -0
  4. data/RUBY_VERSION +1 -0
  5. data/VERSION +1 -0
  6. data/bin/girb +10 -0
  7. data/bin/girb_runner.rb +13 -0
  8. data/bin/glimmer +5 -0
  9. data/icons/scaffold_app.icns +0 -0
  10. data/lib/ext/glimmer.rb +13 -0
  11. data/lib/ext/glimmer/config.rb +18 -0
  12. data/lib/glimmer-dsl-swt.rb +12 -0
  13. data/lib/glimmer/data_binding/list_selection_binding.rb +52 -0
  14. data/lib/glimmer/data_binding/model_binding.rb +248 -0
  15. data/lib/glimmer/data_binding/observable.rb +21 -0
  16. data/lib/glimmer/data_binding/observable_array.rb +107 -0
  17. data/lib/glimmer/data_binding/observable_model.rb +108 -0
  18. data/lib/glimmer/data_binding/observable_widget.rb +17 -0
  19. data/lib/glimmer/data_binding/observer.rb +124 -0
  20. data/lib/glimmer/data_binding/shine.rb +23 -0
  21. data/lib/glimmer/data_binding/table_items_binding.rb +56 -0
  22. data/lib/glimmer/data_binding/tree_items_binding.rb +71 -0
  23. data/lib/glimmer/data_binding/widget_binding.rb +33 -0
  24. data/lib/glimmer/dsl/swt/async_exec_expression.rb +14 -0
  25. data/lib/glimmer/dsl/swt/bind_expression.rb +37 -0
  26. data/lib/glimmer/dsl/swt/color_expression.rb +19 -0
  27. data/lib/glimmer/dsl/swt/column_properties_expression.rb +24 -0
  28. data/lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb +42 -0
  29. data/lib/glimmer/dsl/swt/custom_widget_expression.rb +39 -0
  30. data/lib/glimmer/dsl/swt/data_binding_expression.rb +34 -0
  31. data/lib/glimmer/dsl/swt/dialog_expression.rb +26 -0
  32. data/lib/glimmer/dsl/swt/display_expression.rb +19 -0
  33. data/lib/glimmer/dsl/swt/dsl.rb +34 -0
  34. data/lib/glimmer/dsl/swt/exec_expression.rb +28 -0
  35. data/lib/glimmer/dsl/swt/layout_data_expression.rb +25 -0
  36. data/lib/glimmer/dsl/swt/layout_expression.rb +27 -0
  37. data/lib/glimmer/dsl/swt/list_selection_data_binding_expression.rb +44 -0
  38. data/lib/glimmer/dsl/swt/menu_bar_expression.rb +33 -0
  39. data/lib/glimmer/dsl/swt/menu_expression.rb +32 -0
  40. data/lib/glimmer/dsl/swt/message_box_expression.rb +29 -0
  41. data/lib/glimmer/dsl/swt/observe_expression.rb +32 -0
  42. data/lib/glimmer/dsl/swt/property_expression.rb +22 -0
  43. data/lib/glimmer/dsl/swt/rgb_expression.rb +12 -0
  44. data/lib/glimmer/dsl/swt/rgba_expression.rb +12 -0
  45. data/lib/glimmer/dsl/swt/shell_expression.rb +25 -0
  46. data/lib/glimmer/dsl/swt/swt_expression.rb +25 -0
  47. data/lib/glimmer/dsl/swt/sync_exec_expression.rb +15 -0
  48. data/lib/glimmer/dsl/swt/tab_item_expression.rb +33 -0
  49. data/lib/glimmer/dsl/swt/table_items_data_binding_expression.rb +31 -0
  50. data/lib/glimmer/dsl/swt/tree_items_data_binding_expression.rb +31 -0
  51. data/lib/glimmer/dsl/swt/tree_properties_expression.rb +26 -0
  52. data/lib/glimmer/dsl/swt/widget_expression.rb +35 -0
  53. data/lib/glimmer/dsl/swt/widget_listener_expression.rb +32 -0
  54. data/lib/glimmer/launcher.rb +196 -0
  55. data/lib/glimmer/package.rb +57 -0
  56. data/lib/glimmer/rake_task.rb +62 -0
  57. data/lib/glimmer/scaffold.rb +582 -0
  58. data/lib/glimmer/swt/color_proxy.rb +53 -0
  59. data/lib/glimmer/swt/display_proxy.rb +88 -0
  60. data/lib/glimmer/swt/font_proxy.rb +72 -0
  61. data/lib/glimmer/swt/layout_data_proxy.rb +84 -0
  62. data/lib/glimmer/swt/layout_proxy.rb +82 -0
  63. data/lib/glimmer/swt/menu_proxy.rb +101 -0
  64. data/lib/glimmer/swt/message_box_proxy.rb +48 -0
  65. data/lib/glimmer/swt/packages.rb +13 -0
  66. data/lib/glimmer/swt/shell_proxy.rb +152 -0
  67. data/lib/glimmer/swt/swt_proxy.rb +106 -0
  68. data/lib/glimmer/swt/tab_item_proxy.rb +65 -0
  69. data/lib/glimmer/swt/table_proxy.rb +150 -0
  70. data/lib/glimmer/swt/tree_proxy.rb +120 -0
  71. data/lib/glimmer/swt/widget_listener_proxy.rb +34 -0
  72. data/lib/glimmer/swt/widget_proxy.rb +489 -0
  73. data/lib/glimmer/ui/custom_shell.rb +45 -0
  74. data/lib/glimmer/ui/custom_widget.rb +244 -0
  75. data/lib/glimmer/util/proc_tracker.rb +16 -0
  76. data/vendor/swt/linux/swt.jar +0 -0
  77. data/vendor/swt/mac/swt.jar +0 -0
  78. data/vendor/swt/windows/swt.jar +0 -0
  79. metadata +307 -0
@@ -0,0 +1,45 @@
1
+ require 'glimmer/error'
2
+
3
+ module Glimmer
4
+ module UI
5
+ module CustomShell
6
+ include SuperModule
7
+ include Glimmer::UI::CustomWidget
8
+
9
+ def initialize(parent, *swt_constants, options, &content)
10
+ super
11
+ raise Error, 'Invalid custom shell body root! Must be a shell or another custom shell.' unless body_root.swt_widget.is_a?(org.eclipse.swt.widgets.Shell)
12
+ end
13
+
14
+ # Classes may override
15
+ def open
16
+ body_root.open
17
+ end
18
+
19
+ # DO NOT OVERRIDE. JUST AN ALIAS FOR `#open`. OVERRIDE `#open` INSTEAD.
20
+ def show
21
+ open
22
+ end
23
+
24
+ def close
25
+ body_root.close
26
+ end
27
+
28
+ def hide
29
+ body_root.hide
30
+ end
31
+
32
+ def visible?
33
+ body_root.visible?
34
+ end
35
+
36
+ def center
37
+ body_root.center
38
+ end
39
+
40
+ def start_event_loop
41
+ body_root.start_event_loop
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,244 @@
1
+ require 'glimmer'
2
+ require 'glimmer/error'
3
+ require 'glimmer/swt/swt_proxy'
4
+ require 'glimmer/swt/display_proxy'
5
+ require 'glimmer/util/proc_tracker'
6
+ require 'glimmer/data_binding/observer'
7
+ require 'glimmer/data_binding/observable_model'
8
+ require 'glimmer/data_binding/observable_widget'
9
+
10
+ module Glimmer
11
+ module UI
12
+ module CustomWidget
13
+ include SuperModule
14
+ include DataBinding::ObservableModel
15
+
16
+ super_module_included do |klass|
17
+ klass.include(Glimmer) unless klass.name.include?('Glimmer::UI::CustomShell')
18
+ klass.prepend DataBinding::ObservableWidget
19
+ Glimmer::UI::CustomWidget.add_custom_widget_namespaces_for(klass) unless klass.name.include?('Glimmer::UI::CustomShell')
20
+ end
21
+
22
+ class << self
23
+ def for(underscored_custom_widget_name)
24
+ extracted_namespaces = underscored_custom_widget_name.
25
+ to_s.
26
+ split(/__/).map do |namespace|
27
+ namespace.camelcase(:upper)
28
+ end
29
+ custom_widget_namespaces.each do |base|
30
+ extracted_namespaces.reduce(base) do |result, namespace|
31
+ if !result.constants.include?(namespace)
32
+ namespace = result.constants.detect {|c| c.to_s.upcase == namespace.to_s.upcase } || namespace
33
+ end
34
+ begin
35
+ constant = result.const_get(namespace)
36
+ return constant if constant.ancestors.include?(Glimmer::UI::CustomWidget)
37
+ constant
38
+ rescue => e
39
+ # Glimmer::Config.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
40
+ result
41
+ end
42
+ end
43
+ end
44
+ raise "#{underscored_custom_widget_name} has no custom widget class!"
45
+ rescue => e
46
+ Glimmer::Config.logger&.debug e.message
47
+ Glimmer::Config.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
48
+ nil
49
+ end
50
+
51
+ def add_custom_widget_namespaces_for(klass)
52
+ Glimmer::UI::CustomWidget.namespaces_for_class(klass).drop(1).each do |namespace|
53
+ Glimmer::UI::CustomWidget.custom_widget_namespaces << namespace
54
+ end
55
+ end
56
+
57
+ def namespaces_for_class(m)
58
+ return [m] if m.name.nil?
59
+ namespace_constants = m.name.split(/::/).map(&:to_sym)
60
+ namespace_constants.reduce([Object]) do |output, namespace_constant|
61
+ output += [output.last.const_get(namespace_constant)]
62
+ end[1..-1].uniq.reverse
63
+ end
64
+
65
+ def custom_widget_namespaces
66
+ @custom_widget_namespaces ||= reset_custom_widget_namespaces
67
+ end
68
+
69
+ def reset_custom_widget_namespaces
70
+ @custom_widget_namespaces = Set[Object, Glimmer::UI]
71
+ end
72
+
73
+ # Allows defining convenience option accessors for an array of option names
74
+ # Example: `options :color1, :color2` defines `#color1` and `#color2`
75
+ # where they return the instance values `options[:color1]` and `options[:color2]`
76
+ # respectively.
77
+ # Can be called multiple times to set more options additively.
78
+ # When passed no arguments, it returns list of all option names captured so far
79
+ def options(*new_options)
80
+ new_options = new_options.compact.map(&:to_s).map(&:to_sym)
81
+ if new_options.empty?
82
+ @options ||= {} # maps options to defaults
83
+ else
84
+ new_options = new_options.reduce({}) {|new_options_hash, new_option| new_options_hash.merge(new_option => nil)}
85
+ @options = options.merge(new_options)
86
+ def_option_attr_accessors(new_options)
87
+ end
88
+ end
89
+
90
+ def option(new_option, default: nil)
91
+ new_option = new_option.to_s.to_sym
92
+ new_options = {new_option => default}
93
+ @options = options.merge(new_options)
94
+ def_option_attr_accessors(new_options)
95
+ end
96
+
97
+ def def_option_attr_accessors(new_options)
98
+ new_options.each do |option, default|
99
+ class_eval <<-end_eval, __FILE__, __LINE__
100
+ def #{option}
101
+ options[:#{option}]
102
+ end
103
+ def #{option}=(option_value)
104
+ self.options[:#{option}] = option_value
105
+ end
106
+ end_eval
107
+ end
108
+ end
109
+
110
+ def before_body(&block)
111
+ @before_body_blocks ||= []
112
+ @before_body_blocks << block
113
+ end
114
+
115
+ def body(&block)
116
+ @body_block = block
117
+ end
118
+
119
+ def after_body(&block)
120
+ @after_body_blocks ||= []
121
+ @after_body_blocks << block
122
+ end
123
+ end
124
+
125
+ attr_reader :body_root, :swt_widget, :parent, :swt_style, :options
126
+
127
+ def initialize(parent, *swt_constants, options, &content)
128
+ @parent = parent
129
+ @swt_style = SWT::SWTProxy[*swt_constants]
130
+ options ||= {}
131
+ @options = self.class.options.merge(options)
132
+ @content = Util::ProcTracker.new(content) if content
133
+ execute_hooks('before_body')
134
+ body_block = self.class.instance_variable_get("@body_block")
135
+ raise Glimmer::Error, 'Invalid custom widget for having no body! Please define body block!' if body_block.nil?
136
+ @body_root = instance_exec(&body_block)
137
+ execute_hooks('after_body')
138
+ @swt_widget = @body_root.swt_widget
139
+ end
140
+
141
+ def can_handle_observation_request?(observation_request)
142
+ result = false
143
+ if observation_request.start_with?('on_updated_')
144
+ property = observation_request.sub(/^on_updated_/, '')
145
+ result = can_add_observer?(property)
146
+ end
147
+ result || body_root&.can_handle_observation_request?(observation_request)
148
+ end
149
+
150
+ def handle_observation_request(observation_request, &block)
151
+ if observation_request.start_with?('on_updated_')
152
+ property = observation_request.sub(/^on_updated_/, '') # TODO look into eliminating duplication from above
153
+ add_observer(DataBinding::Observer.proc(&block), property) if can_add_observer?(property)
154
+ else
155
+ body_root.handle_observation_request(observation_request, &block)
156
+ end
157
+ end
158
+
159
+ def can_add_observer?(attribute_name)
160
+ has_instance_method?(attribute_name) || respond_to?("#{attribute_name}?") || @body_root.can_add_observer?(attribute_name)
161
+ end
162
+
163
+ def add_observer(observer, attribute_name)
164
+ if has_instance_method?(attribute_name)
165
+ super
166
+ else
167
+ @body_root.add_observer(observer, attribute_name)
168
+ end
169
+ end
170
+
171
+ def has_attribute?(attribute_name, *args)
172
+ respond_to?(attribute_setter(attribute_name), args) ||
173
+ @body_root.has_attribute?(attribute_name, *args)
174
+ end
175
+
176
+ def set_attribute(attribute_name, *args)
177
+ if respond_to?(attribute_setter(attribute_name), args)
178
+ send(attribute_setter(attribute_name), *args)
179
+ else
180
+ @body_root.set_attribute(attribute_name, *args)
181
+ end
182
+ end
183
+
184
+ # This method ensures it has an instance method not coming from Glimmer DSL
185
+ def has_instance_method?(method_name)
186
+ respond_to?(method_name) && !method(method_name)&.source_location&.first&.include?('glimmer/dsl/engine.rb')
187
+ end
188
+
189
+ def get_attribute(attribute_name)
190
+ if has_instance_method?(attribute_name)
191
+ send(attribute_name)
192
+ else
193
+ @body_root.get_attribute(attribute_name)
194
+ end
195
+ end
196
+
197
+ def attribute_setter(attribute_name)
198
+ "#{attribute_name}="
199
+ end
200
+
201
+
202
+ def has_style?(style)
203
+ (swt_style & SWT::SWTProxy[style]) == SWT::SWTProxy[style]
204
+ end
205
+
206
+ # TODO see if it is worth it to eliminate duplication of async_exec/sync_exec
207
+ # delegation to DisplayProxy, via a module
208
+
209
+ def async_exec(&block)
210
+ SWT::DisplayProxy.instance.async_exec(&block)
211
+ end
212
+
213
+ def sync_exec(&block)
214
+ SWT::DisplayProxy.instance.sync_exec(&block)
215
+ end
216
+
217
+ # Returns content block if used as an attribute reader (no args)
218
+ # Otherwise, if a block is passed, it adds it as content to this custom widget
219
+ def content(&block)
220
+ if block_given?
221
+ body_root.content(&block)
222
+ else
223
+ @content
224
+ end
225
+ end
226
+
227
+ def dispose
228
+ body_root.dispose
229
+ end
230
+
231
+ def method_missing(method, *args, &block)
232
+ body_root.send(method, *args, &block)
233
+ end
234
+
235
+ private
236
+
237
+ def execute_hooks(hook_name)
238
+ self.class.instance_variable_get("@#{hook_name}_blocks")&.each do |hook_block|
239
+ instance_exec(&hook_block)
240
+ end
241
+ end
242
+ end
243
+ end
244
+ end
@@ -0,0 +1,16 @@
1
+ module Glimmer
2
+ module Util
3
+ class ProcTracker < DelegateClass(Proc)
4
+ def initialize(proc)
5
+ super(proc)
6
+ end
7
+ def call(*args)
8
+ __getobj__.call(*args)
9
+ @called = true
10
+ end
11
+ def called?
12
+ !!@called
13
+ end
14
+ end
15
+ end
16
+ end
Binary file
Binary file
metadata ADDED
@@ -0,0 +1,307 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: glimmer-dsl-swt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - AndyMaleh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-06-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: 0.9.0
19
+ name: glimmer
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.9.0
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: 1.4.1
33
+ name: super_module
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.4.1
41
+ - !ruby/object:Gem::Dependency
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.3.0
47
+ name: nested_inherited_jruby_include_package
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.3.0
55
+ - !ruby/object:Gem::Dependency
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 0.8.1
61
+ name: puts_debuggerer
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.8.1
69
+ - !ruby/object:Gem::Dependency
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.0.0
75
+ - - "<"
76
+ - !ruby/object:Gem::Version
77
+ version: 2.0.0
78
+ name: os
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 1.0.0
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: 2.0.0
89
+ - !ruby/object:Gem::Dependency
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 2.0.5
95
+ - - "<"
96
+ - !ruby/object:Gem::Version
97
+ version: 3.0.0
98
+ name: warbler
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: 2.0.5
106
+ - - "<"
107
+ - !ruby/object:Gem::Version
108
+ version: 3.0.0
109
+ - !ruby/object:Gem::Dependency
110
+ requirement: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 10.1.0
115
+ - - "<"
116
+ - !ruby/object:Gem::Version
117
+ version: 14.0.0
118
+ name: rake
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: 10.1.0
126
+ - - "<"
127
+ - !ruby/object:Gem::Version
128
+ version: 14.0.0
129
+ - !ruby/object:Gem::Dependency
130
+ requirement: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 2.3.9
135
+ - - "<"
136
+ - !ruby/object:Gem::Version
137
+ version: 3.0.0
138
+ name: jeweler
139
+ type: :runtime
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 2.3.9
146
+ - - "<"
147
+ - !ruby/object:Gem::Version
148
+ version: 3.0.0
149
+ - !ruby/object:Gem::Dependency
150
+ requirement: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: 6.2.1
155
+ - - "<"
156
+ - !ruby/object:Gem::Version
157
+ version: 7.0.0
158
+ name: rdoc
159
+ type: :runtime
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: 6.2.1
166
+ - - "<"
167
+ - !ruby/object:Gem::Version
168
+ version: 7.0.0
169
+ - !ruby/object:Gem::Dependency
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: 3.5.0
175
+ name: rspec-mocks
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: 3.5.0
183
+ - !ruby/object:Gem::Dependency
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - "~>"
187
+ - !ruby/object:Gem::Version
188
+ version: 3.5.0
189
+ name: rspec
190
+ type: :development
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - "~>"
195
+ - !ruby/object:Gem::Version
196
+ version: 3.5.0
197
+ description: Glimmer DSL for SWT (Desktop GUI)
198
+ email: andy.am@gmail.com
199
+ executables:
200
+ - glimmer
201
+ - girb
202
+ extensions: []
203
+ extra_rdoc_files:
204
+ - LICENSE.txt
205
+ - README.md
206
+ files:
207
+ - LICENSE.txt
208
+ - README.md
209
+ - RUBY_VERSION
210
+ - VERSION
211
+ - bin/girb
212
+ - bin/girb_runner.rb
213
+ - bin/glimmer
214
+ - icons/scaffold_app.icns
215
+ - lib/ext/glimmer.rb
216
+ - lib/ext/glimmer/config.rb
217
+ - lib/glimmer-dsl-swt.rb
218
+ - lib/glimmer/data_binding/list_selection_binding.rb
219
+ - lib/glimmer/data_binding/model_binding.rb
220
+ - lib/glimmer/data_binding/observable.rb
221
+ - lib/glimmer/data_binding/observable_array.rb
222
+ - lib/glimmer/data_binding/observable_model.rb
223
+ - lib/glimmer/data_binding/observable_widget.rb
224
+ - lib/glimmer/data_binding/observer.rb
225
+ - lib/glimmer/data_binding/shine.rb
226
+ - lib/glimmer/data_binding/table_items_binding.rb
227
+ - lib/glimmer/data_binding/tree_items_binding.rb
228
+ - lib/glimmer/data_binding/widget_binding.rb
229
+ - lib/glimmer/dsl/swt/async_exec_expression.rb
230
+ - lib/glimmer/dsl/swt/bind_expression.rb
231
+ - lib/glimmer/dsl/swt/color_expression.rb
232
+ - lib/glimmer/dsl/swt/column_properties_expression.rb
233
+ - lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb
234
+ - lib/glimmer/dsl/swt/custom_widget_expression.rb
235
+ - lib/glimmer/dsl/swt/data_binding_expression.rb
236
+ - lib/glimmer/dsl/swt/dialog_expression.rb
237
+ - lib/glimmer/dsl/swt/display_expression.rb
238
+ - lib/glimmer/dsl/swt/dsl.rb
239
+ - lib/glimmer/dsl/swt/exec_expression.rb
240
+ - lib/glimmer/dsl/swt/layout_data_expression.rb
241
+ - lib/glimmer/dsl/swt/layout_expression.rb
242
+ - lib/glimmer/dsl/swt/list_selection_data_binding_expression.rb
243
+ - lib/glimmer/dsl/swt/menu_bar_expression.rb
244
+ - lib/glimmer/dsl/swt/menu_expression.rb
245
+ - lib/glimmer/dsl/swt/message_box_expression.rb
246
+ - lib/glimmer/dsl/swt/observe_expression.rb
247
+ - lib/glimmer/dsl/swt/property_expression.rb
248
+ - lib/glimmer/dsl/swt/rgb_expression.rb
249
+ - lib/glimmer/dsl/swt/rgba_expression.rb
250
+ - lib/glimmer/dsl/swt/shell_expression.rb
251
+ - lib/glimmer/dsl/swt/swt_expression.rb
252
+ - lib/glimmer/dsl/swt/sync_exec_expression.rb
253
+ - lib/glimmer/dsl/swt/tab_item_expression.rb
254
+ - lib/glimmer/dsl/swt/table_items_data_binding_expression.rb
255
+ - lib/glimmer/dsl/swt/tree_items_data_binding_expression.rb
256
+ - lib/glimmer/dsl/swt/tree_properties_expression.rb
257
+ - lib/glimmer/dsl/swt/widget_expression.rb
258
+ - lib/glimmer/dsl/swt/widget_listener_expression.rb
259
+ - lib/glimmer/launcher.rb
260
+ - lib/glimmer/package.rb
261
+ - lib/glimmer/rake_task.rb
262
+ - lib/glimmer/scaffold.rb
263
+ - lib/glimmer/swt/color_proxy.rb
264
+ - lib/glimmer/swt/display_proxy.rb
265
+ - lib/glimmer/swt/font_proxy.rb
266
+ - lib/glimmer/swt/layout_data_proxy.rb
267
+ - lib/glimmer/swt/layout_proxy.rb
268
+ - lib/glimmer/swt/menu_proxy.rb
269
+ - lib/glimmer/swt/message_box_proxy.rb
270
+ - lib/glimmer/swt/packages.rb
271
+ - lib/glimmer/swt/shell_proxy.rb
272
+ - lib/glimmer/swt/swt_proxy.rb
273
+ - lib/glimmer/swt/tab_item_proxy.rb
274
+ - lib/glimmer/swt/table_proxy.rb
275
+ - lib/glimmer/swt/tree_proxy.rb
276
+ - lib/glimmer/swt/widget_listener_proxy.rb
277
+ - lib/glimmer/swt/widget_proxy.rb
278
+ - lib/glimmer/ui/custom_shell.rb
279
+ - lib/glimmer/ui/custom_widget.rb
280
+ - lib/glimmer/util/proc_tracker.rb
281
+ - vendor/swt/linux/swt.jar
282
+ - vendor/swt/mac/swt.jar
283
+ - vendor/swt/windows/swt.jar
284
+ homepage: http://github.com/AndyObtiva/glimmer-dsl-swt
285
+ licenses:
286
+ - MIT
287
+ metadata: {}
288
+ post_install_message:
289
+ rdoc_options: []
290
+ require_paths:
291
+ - lib
292
+ required_ruby_version: !ruby/object:Gem::Requirement
293
+ requirements:
294
+ - - ">="
295
+ - !ruby/object:Gem::Version
296
+ version: '0'
297
+ required_rubygems_version: !ruby/object:Gem::Requirement
298
+ requirements:
299
+ - - ">="
300
+ - !ruby/object:Gem::Version
301
+ version: '0'
302
+ requirements: []
303
+ rubygems_version: 3.0.6
304
+ signing_key:
305
+ specification_version: 4
306
+ summary: Glimmer DSL for SWT
307
+ test_files: []