glimmer-dsl-swt 0.1.0

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 (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: []