glimmer-dsl-opal 0.1.0 → 0.2.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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +195 -167
  4. data/VERSION +1 -1
  5. data/lib/glimmer-dsl-opal.rb +24 -7
  6. data/lib/glimmer-dsl-opal/ext/exception.rb +5 -0
  7. data/lib/glimmer-dsl-opal/missing/net/http.rb +17 -0
  8. data/lib/glimmer-dsl-opal/missing/uri.rb +26 -0
  9. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/contact_manager.rb +0 -0
  10. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/contact_manager/contact.rb +0 -0
  11. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/contact_manager/contact_manager_presenter.rb +0 -0
  12. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/contact_manager/contact_repository.rb +24 -99
  13. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/login.rb +0 -0
  14. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/tic_tac_toe.rb +0 -0
  15. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/tic_tac_toe/board.rb +0 -0
  16. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/tic_tac_toe/cell.rb +0 -0
  17. data/lib/{samples → glimmer-dsl-opal/samples}/hello/hello_browser.rb +0 -0
  18. data/lib/glimmer-dsl-opal/samples/hello/hello_combo.rb +63 -0
  19. data/lib/{samples → glimmer-dsl-opal/samples}/hello/hello_computed.rb +0 -0
  20. data/lib/{samples → glimmer-dsl-opal/samples}/hello/hello_computed/contact.rb +0 -0
  21. data/lib/glimmer-dsl-opal/samples/hello/hello_custom_shell.rb +155 -0
  22. data/lib/glimmer-dsl-opal/samples/hello/hello_custom_widget.rb +86 -0
  23. data/lib/{samples → glimmer-dsl-opal/samples}/hello/hello_list_multi_selection.rb +0 -0
  24. data/lib/{samples → glimmer-dsl-opal/samples}/hello/hello_list_single_selection.rb +0 -0
  25. data/lib/glimmer-dsl-opal/samples/hello/hello_tab.rb +50 -0
  26. data/lib/glimmer-dsl-opal/samples/hello/hello_world.rb +29 -0
  27. data/lib/{jquery.js → glimmer-dsl-opal/vendor/jquery.js} +0 -0
  28. data/lib/glimmer/data_binding/ext/observable_model.rb +1 -1
  29. data/lib/glimmer/dsl/opal/async_exec_expression.rb +2 -2
  30. data/lib/glimmer/dsl/opal/color_expression.rb +38 -0
  31. data/lib/glimmer/dsl/opal/custom_widget_expression.rb +57 -0
  32. data/lib/glimmer/dsl/opal/dsl.rb +7 -0
  33. data/lib/glimmer/dsl/opal/font_expression.rb +47 -0
  34. data/lib/glimmer/dsl/opal/property_expression.rb +5 -2
  35. data/lib/glimmer/dsl/opal/rgb_expression.rb +32 -0
  36. data/lib/glimmer/dsl/opal/rgba_expression.rb +32 -0
  37. data/lib/glimmer/dsl/opal/swt_expression.rb +46 -0
  38. data/lib/glimmer/dsl/opal/widget_expression.rb +2 -1
  39. data/lib/glimmer/dsl/opal/widget_listener_expression.rb +16 -3
  40. data/lib/glimmer/swt.rb +499 -0
  41. data/lib/glimmer/swt/browser_proxy.rb +1 -1
  42. data/lib/glimmer/swt/button_proxy.rb +2 -2
  43. data/lib/glimmer/swt/color_proxy.rb +119 -0
  44. data/lib/glimmer/swt/combo_proxy.rb +10 -9
  45. data/lib/glimmer/swt/composite_proxy.rb +8 -8
  46. data/lib/glimmer/{opal → swt}/display_proxy.rb +3 -1
  47. data/lib/glimmer/swt/fill_layout_proxy.rb +84 -0
  48. data/lib/glimmer/swt/font_proxy.rb +79 -0
  49. data/lib/glimmer/swt/grid_layout_proxy.rb +34 -4
  50. data/lib/glimmer/swt/label_proxy.rb +7 -3
  51. data/lib/glimmer/swt/layout_proxy.rb +15 -13
  52. data/lib/glimmer/swt/list_proxy.rb +17 -12
  53. data/lib/glimmer/swt/message_box_proxy.rb +4 -7
  54. data/lib/glimmer/swt/row_layout_proxy.rb +105 -0
  55. data/lib/glimmer/swt/shell_proxy.rb +32 -22
  56. data/lib/glimmer/swt/style_constantizable.rb +154 -0
  57. data/lib/glimmer/swt/swt_proxy.rb +53 -0
  58. data/lib/glimmer/swt/tab_folder_proxy.rb +8 -8
  59. data/lib/glimmer/swt/tab_item_proxy.rb +15 -32
  60. data/lib/glimmer/swt/table_proxy.rb +0 -18
  61. data/lib/glimmer/swt/widget_proxy.rb +140 -39
  62. data/lib/glimmer/ui/custom_shell.rb +73 -0
  63. data/lib/glimmer/ui/custom_widget.rb +290 -0
  64. data/lib/glimmer/util/proc_tracker.rb +39 -0
  65. metadata +88 -57
  66. data/lib/glimmer/opal/element_proxy.rb +0 -312
  67. data/lib/samples/elaborate/launch +0 -6
  68. data/lib/samples/hello/hello_combo.rb +0 -34
  69. data/lib/samples/hello/hello_tab.rb +0 -24
  70. data/lib/samples/hello/hello_world.rb +0 -8
  71. data/lib/samples/hello/launch +0 -10
  72. data/lib/samples/launch +0 -4
@@ -0,0 +1,73 @@
1
+ # Copyright (c) 2020 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer/error'
23
+
24
+ module Glimmer
25
+ module UI
26
+ module CustomShell
27
+ include Glimmer::UI::CustomWidget
28
+
29
+ class << self
30
+ def included(klass)
31
+ klass.extend(CustomWidget::ClassMethods)
32
+ klass.include(Glimmer)
33
+ Glimmer::UI::CustomWidget.add_custom_widget_namespaces_for(klass)
34
+ end
35
+ end
36
+
37
+ def initialize(parent, args, options, &content)
38
+ super
39
+ raise Error, 'Invalid custom shell body root! Must be a shell or another custom shell.' unless body_root.is_a?(Glimmer::SWT::ShellProxy)
40
+ end
41
+
42
+ # Classes may override
43
+ def open
44
+ body_root.open
45
+ end
46
+
47
+ # DO NOT OVERRIDE. JUST AN ALIAS FOR `#open`. OVERRIDE `#open` INSTEAD.
48
+ def show
49
+ open
50
+ end
51
+
52
+ def close
53
+ body_root.close
54
+ end
55
+
56
+ def hide
57
+ body_root.hide
58
+ end
59
+
60
+ def visible?
61
+ body_root.visible?
62
+ end
63
+
64
+ def center
65
+ body_root.center
66
+ end
67
+
68
+ def start_event_loop
69
+ body_root.start_event_loop
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,290 @@
1
+ # Copyright (c) 2020 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer'
23
+ require 'glimmer/error'
24
+ require 'glimmer/swt/display_proxy'
25
+ require 'glimmer/util/proc_tracker'
26
+ require 'glimmer/data_binding/observer'
27
+ require 'glimmer/data_binding/observable_model'
28
+
29
+ module Glimmer
30
+ module UI
31
+ module CustomWidget
32
+ include DataBinding::ObservableModel
33
+
34
+ module ClassMethods
35
+ # Allows defining convenience option accessors for an array of option names
36
+ # Example: `options :color1, :color2` defines `#color1` and `#color2`
37
+ # where they return the instance values `options[:color1]` and `options[:color2]`
38
+ # respectively.
39
+ # Can be called multiple times to set more options additively.
40
+ # When passed no arguments, it returns list of all option names captured so far
41
+ def options(*new_options)
42
+ new_options = new_options.compact.map(&:to_s).map(&:to_sym)
43
+ if new_options.empty?
44
+ @options ||= {} # maps options to defaults
45
+ else
46
+ new_options = new_options.reduce({}) {|new_options_hash, new_option| new_options_hash.merge(new_option => nil)}
47
+ @options = options.merge(new_options)
48
+ def_option_attr_accessors(new_options)
49
+ end
50
+ end
51
+
52
+ def option(new_option, default: nil)
53
+ new_option = new_option.to_s.to_sym
54
+ new_options = {new_option => default}
55
+ '@options = options.merge(new_options)'
56
+ @options = options.merge(new_options)
57
+ 'def_option_attr_accessors(new_options)'
58
+ def_option_attr_accessors(new_options)
59
+ end
60
+
61
+ def def_option_attr_accessors(new_options)
62
+ new_options.each do |option, default|
63
+ # TODO fix this in Opal by switching to define_method
64
+ define_method(option) do
65
+ options[:"#{option}"]
66
+ end
67
+ define_method("#{option}=") do |option_value|
68
+ self.options[:"#{option}"] = option_value
69
+ end
70
+ end
71
+ end
72
+
73
+ def before_body(&block)
74
+ @before_body_blocks ||= []
75
+ @before_body_blocks << block
76
+ end
77
+
78
+ def body(&block)
79
+ @body_block = block
80
+ end
81
+
82
+ def after_body(&block)
83
+ @after_body_blocks ||= []
84
+ @after_body_blocks << block
85
+ end
86
+ end
87
+
88
+ class << self
89
+ def included(klass)
90
+ klass.extend(ClassMethods)
91
+ unless klass.name.include?('Glimmer::UI::CustomShell')
92
+ klass.include(Glimmer)
93
+ Glimmer::UI::CustomWidget.add_custom_widget_namespaces_for(klass)
94
+ end
95
+ end
96
+
97
+ def for(underscored_custom_widget_name)
98
+ extracted_namespaces = underscored_custom_widget_name.
99
+ to_s.
100
+ split(/__/).map do |namespace|
101
+ namespace.camelcase(:upper)
102
+ end
103
+ custom_widget_namespaces.each do |base|
104
+ extracted_namespaces.reduce(base) do |result, namespace|
105
+ if !result.constants.include?(namespace)
106
+ namespace = result.constants.detect {|c| c.to_s.upcase == namespace.to_s.upcase } || namespace
107
+ end
108
+ begin
109
+ constant = result.const_get(namespace)
110
+ return constant if constant.ancestors.include?(Glimmer::UI::CustomWidget)
111
+ constant
112
+ rescue => e
113
+ # Glimmer::Config.logger.debug {"#{e.message}\n#{e.backtrace.join("\n")}"}
114
+ result
115
+ end
116
+ end
117
+ end
118
+ raise "#{underscored_custom_widget_name} has no custom widget class!"
119
+ rescue => e
120
+ Glimmer::Config.logger.debug {e.message}
121
+ Glimmer::Config.logger.debug {"#{e.message}\n#{e.backtrace.join("\n")}"}
122
+ nil
123
+ end
124
+
125
+ def add_custom_widget_namespaces_for(klass)
126
+ Glimmer::UI::CustomWidget.namespaces_for_class(klass).drop(1).each do |namespace|
127
+ Glimmer::UI::CustomWidget.custom_widget_namespaces << namespace
128
+ end
129
+ end
130
+
131
+ def namespaces_for_class(m)
132
+ return [m] if m.name.nil?
133
+ namespace_constants = m.name.split(/::/).map(&:to_sym)
134
+ namespace_constants.reduce([Object]) do |output, namespace_constant|
135
+ output += [output.last.const_get(namespace_constant)]
136
+ end[1..-1].uniq.reverse
137
+ end
138
+
139
+ def custom_widget_namespaces
140
+ @custom_widget_namespaces ||= reset_custom_widget_namespaces
141
+ end
142
+
143
+ def reset_custom_widget_namespaces
144
+ @custom_widget_namespaces = Set[Object, Glimmer::UI]
145
+ end
146
+
147
+ end
148
+ # <- end of class methods
149
+
150
+
151
+ attr_reader :body_root, :parent, :options, :swt_style
152
+
153
+ def initialize(parent, args, options, &content)
154
+ @parent = parent
155
+ options = args.delete_at(-1) if args.is_a?(Array) && args.last.is_a?(Hash)
156
+ if args.is_a?(Hash)
157
+ options = args
158
+ args = []
159
+ end
160
+ @args = args
161
+ @swt_style = SWT::SWTProxy[*args]
162
+ options ||= {}
163
+ @options = self.class.options.merge(options)
164
+ @content = Util::ProcTracker.new(content) if content
165
+ execute_hooks('before_body')
166
+ body_block = self.class.instance_variable_get("@body_block")
167
+ raise Glimmer::Error, 'Invalid custom widget for having no body! Please define body block!' if body_block.nil?
168
+ @body_root = instance_exec(&body_block)
169
+ raise Glimmer::Error, 'Invalid custom widget for having an empty body! Please fill body block!' if @body_root.nil?
170
+ execute_hooks('after_body')
171
+ end
172
+
173
+ # Subclasses may override to perform post initialization work on an added child
174
+ def post_initialize_child(child)
175
+ # No Op by default
176
+ end
177
+
178
+ def can_handle_observation_request?(observation_request)
179
+ observation_request = observation_request.to_s
180
+ result = false
181
+ if observation_request.start_with?('on_updated_')
182
+ property = observation_request.sub(/^on_updated_/, '')
183
+ result = can_add_observer?(property)
184
+ end
185
+ result || body_root&.can_handle_observation_request?(observation_request)
186
+ end
187
+
188
+ def handle_observation_request(observation_request, &block)
189
+ observation_request = observation_request.to_s
190
+ if observation_request.start_with?('on_updated_')
191
+ property = observation_request.sub(/^on_updated_/, '') # TODO look into eliminating duplication from above
192
+ add_observer(DataBinding::Observer.proc(&block), property) if can_add_observer?(property)
193
+ else
194
+ body_root.handle_observation_request(observation_request, &block)
195
+ end
196
+ end
197
+
198
+ def can_add_observer?(attribute_name)
199
+ has_instance_method?(attribute_name) || has_instance_method?("#{attribute_name}?") || @body_root.can_add_observer?(attribute_name)
200
+ end
201
+
202
+ def add_observer(observer, attribute_name)
203
+ if has_instance_method?(attribute_name)
204
+ super
205
+ else
206
+ @body_root.add_observer(observer, attribute_name)
207
+ end
208
+ end
209
+
210
+ def has_attribute?(attribute_name, *args)
211
+ has_instance_method?(attribute_setter(attribute_name)) ||
212
+ @body_root.has_attribute?(attribute_name, *args)
213
+ end
214
+
215
+ def set_attribute(attribute_name, *args)
216
+ if has_instance_method?(attribute_setter(attribute_name))
217
+ send(attribute_setter(attribute_name), *args)
218
+ else
219
+ @body_root.set_attribute(attribute_name, *args)
220
+ end
221
+ end
222
+
223
+ # This method ensures it has an instance method not coming from Glimmer DSL
224
+ def has_instance_method?(method_name)
225
+ respond_to?(method_name) and
226
+ !body_root&.respond_to?(method_name) and
227
+ !method(method_name)&.source_location&.first&.include?('glimmer/dsl/engine.rb') and
228
+ !method(method_name)&.source_location&.first&.include?('glimmer/swt/widget_proxy.rb')
229
+ end
230
+
231
+ def get_attribute(attribute_name)
232
+ if has_instance_method?(attribute_name)
233
+ send(attribute_name)
234
+ else
235
+ @body_root.get_attribute(attribute_name)
236
+ end
237
+ end
238
+
239
+ def attribute_setter(attribute_name)
240
+ "#{attribute_name}="
241
+ end
242
+
243
+ def has_style?(symbol)
244
+ @args.include?(symbol) # not a very solid implementation. Bring SWT constants eventually
245
+ end
246
+
247
+ def async_exec(&block)
248
+ SWT::DisplayProxy.instance.async_exec(&block)
249
+ end
250
+
251
+ # sync_exec kept for API compatibility reasons
252
+ def sync_exec(&block)
253
+ SWT::DisplayProxy.instance.async_exec(&block)
254
+ end
255
+
256
+ # Returns content block if used as an attribute reader (no args)
257
+ # Otherwise, if a block is passed, it adds it as content to this custom widget
258
+ def content(&block)
259
+ if block_given?
260
+ body_root.content(&block)
261
+ else
262
+ @content
263
+ end
264
+ end
265
+
266
+ def method_missing(method, *args, &block)
267
+ if can_handle_observation_request?(method)
268
+ handle_observation_request(method, &block)
269
+ else
270
+ body_root.send(method, *args, &block)
271
+ end
272
+ end
273
+
274
+ alias local_respond_to? respond_to?
275
+ def respond_to?(method, *args, &block)
276
+ super or
277
+ can_handle_observation_request?(method) or
278
+ body_root.respond_to?(method, *args, &block)
279
+ end
280
+
281
+ private
282
+
283
+ def execute_hooks(hook_name)
284
+ self.class.instance_variable_get("@#{hook_name}_blocks")&.each do |hook_block|
285
+ instance_exec(&hook_block)
286
+ end
287
+ end
288
+ end
289
+ end
290
+ end
@@ -0,0 +1,39 @@
1
+ # Copyright (c) 2020 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'delegate'
23
+
24
+ module Glimmer
25
+ module Util
26
+ class ProcTracker < DelegateClass(Proc)
27
+ def initialize(proc)
28
+ super(proc)
29
+ end
30
+ def call(*args)
31
+ __getobj__.call(*args)
32
+ @called = true
33
+ end
34
+ def called?
35
+ !!@called
36
+ end
37
+ end
38
+ end
39
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-opal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-23 00:00:00.000000000 Z
11
+ date: 2020-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer
@@ -16,28 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.9.5
19
+ version: 1.0.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.9.5
26
+ version: 1.0.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: glimmer-dsl-xml
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.0
33
+ version: 1.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: glimmer-dsl-css
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.1.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: opal-async
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.0
34
62
  type: :runtime
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: 0.1.0
68
+ version: 1.2.0
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: puts_debuggerer
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -72,6 +100,20 @@ dependencies:
72
100
  - - "<"
73
101
  - !ruby/object:Gem::Version
74
102
  version: 14.0.0
103
+ - !ruby/object:Gem::Dependency
104
+ name: rake-tui
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
75
117
  - !ruby/object:Gem::Dependency
76
118
  name: jeweler
77
119
  requirement: !ruby/object:Gem::Requirement
@@ -140,20 +182,6 @@ dependencies:
140
182
  - - "~>"
141
183
  - !ruby/object:Gem::Version
142
184
  version: 1.1.2
143
- - !ruby/object:Gem::Dependency
144
- name: opal-async
145
- requirement: !ruby/object:Gem::Requirement
146
- requirements:
147
- - - "~>"
148
- - !ruby/object:Gem::Version
149
- version: 1.1.0
150
- type: :development
151
- prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- requirements:
154
- - - "~>"
155
- - !ruby/object:Gem::Version
156
- version: 1.1.0
157
185
  - !ruby/object:Gem::Dependency
158
186
  name: opal-jquery
159
187
  requirement: !ruby/object:Gem::Requirement
@@ -168,20 +196,6 @@ dependencies:
168
196
  - - "~>"
169
197
  - !ruby/object:Gem::Version
170
198
  version: 0.4.4
171
- - !ruby/object:Gem::Dependency
172
- name: glimmer-dsl-opal
173
- requirement: !ruby/object:Gem::Requirement
174
- requirements:
175
- - - ">="
176
- - !ruby/object:Gem::Version
177
- version: '0'
178
- type: :development
179
- prerelease: false
180
- version_requirements: !ruby/object:Gem::Requirement
181
- requirements:
182
- - - ">="
183
- - !ruby/object:Gem::Version
184
- version: '0'
185
199
  description: Glimmer DSL for Opal (Web GUI Adapter for Desktop Apps)
186
200
  email: andy.am@gmail.com
187
201
  executables: []
@@ -196,6 +210,28 @@ files:
196
210
  - README.md
197
211
  - VERSION
198
212
  - lib/glimmer-dsl-opal.rb
213
+ - lib/glimmer-dsl-opal/ext/exception.rb
214
+ - lib/glimmer-dsl-opal/missing/net/http.rb
215
+ - lib/glimmer-dsl-opal/missing/uri.rb
216
+ - lib/glimmer-dsl-opal/samples/elaborate/contact_manager.rb
217
+ - lib/glimmer-dsl-opal/samples/elaborate/contact_manager/contact.rb
218
+ - lib/glimmer-dsl-opal/samples/elaborate/contact_manager/contact_manager_presenter.rb
219
+ - lib/glimmer-dsl-opal/samples/elaborate/contact_manager/contact_repository.rb
220
+ - lib/glimmer-dsl-opal/samples/elaborate/login.rb
221
+ - lib/glimmer-dsl-opal/samples/elaborate/tic_tac_toe.rb
222
+ - lib/glimmer-dsl-opal/samples/elaborate/tic_tac_toe/board.rb
223
+ - lib/glimmer-dsl-opal/samples/elaborate/tic_tac_toe/cell.rb
224
+ - lib/glimmer-dsl-opal/samples/hello/hello_browser.rb
225
+ - lib/glimmer-dsl-opal/samples/hello/hello_combo.rb
226
+ - lib/glimmer-dsl-opal/samples/hello/hello_computed.rb
227
+ - lib/glimmer-dsl-opal/samples/hello/hello_computed/contact.rb
228
+ - lib/glimmer-dsl-opal/samples/hello/hello_custom_shell.rb
229
+ - lib/glimmer-dsl-opal/samples/hello/hello_custom_widget.rb
230
+ - lib/glimmer-dsl-opal/samples/hello/hello_list_multi_selection.rb
231
+ - lib/glimmer-dsl-opal/samples/hello/hello_list_single_selection.rb
232
+ - lib/glimmer-dsl-opal/samples/hello/hello_tab.rb
233
+ - lib/glimmer-dsl-opal/samples/hello/hello_world.rb
234
+ - lib/glimmer-dsl-opal/vendor/jquery.js
199
235
  - lib/glimmer/data_binding/element_binding.rb
200
236
  - lib/glimmer/data_binding/ext/observable_model.rb
201
237
  - lib/glimmer/data_binding/list_selection_binding.rb
@@ -203,29 +239,38 @@ files:
203
239
  - lib/glimmer/data_binding/table_items_binding.rb
204
240
  - lib/glimmer/dsl/opal/async_exec_expression.rb
205
241
  - lib/glimmer/dsl/opal/bind_expression.rb
242
+ - lib/glimmer/dsl/opal/color_expression.rb
206
243
  - lib/glimmer/dsl/opal/column_properties_expression.rb
207
244
  - lib/glimmer/dsl/opal/combo_selection_data_binding_expression.rb
245
+ - lib/glimmer/dsl/opal/custom_widget_expression.rb
208
246
  - lib/glimmer/dsl/opal/data_binding_expression.rb
209
247
  - lib/glimmer/dsl/opal/dsl.rb
248
+ - lib/glimmer/dsl/opal/font_expression.rb
210
249
  - lib/glimmer/dsl/opal/layout_data_expression.rb
211
250
  - lib/glimmer/dsl/opal/layout_expression.rb
212
251
  - lib/glimmer/dsl/opal/list_selection_data_binding_expression.rb
213
252
  - lib/glimmer/dsl/opal/message_box_expression.rb
214
253
  - lib/glimmer/dsl/opal/observe_expression.rb
215
254
  - lib/glimmer/dsl/opal/property_expression.rb
255
+ - lib/glimmer/dsl/opal/rgb_expression.rb
256
+ - lib/glimmer/dsl/opal/rgba_expression.rb
216
257
  - lib/glimmer/dsl/opal/shell_expression.rb
258
+ - lib/glimmer/dsl/opal/swt_expression.rb
217
259
  - lib/glimmer/dsl/opal/table_column_expression.rb
218
260
  - lib/glimmer/dsl/opal/table_expression.rb
219
261
  - lib/glimmer/dsl/opal/table_items_data_binding_expression.rb
220
262
  - lib/glimmer/dsl/opal/widget_expression.rb
221
263
  - lib/glimmer/dsl/opal/widget_listener_expression.rb
222
- - lib/glimmer/opal/display_proxy.rb
223
- - lib/glimmer/opal/element_proxy.rb
264
+ - lib/glimmer/swt.rb
224
265
  - lib/glimmer/swt/browser_proxy.rb
225
266
  - lib/glimmer/swt/button_proxy.rb
267
+ - lib/glimmer/swt/color_proxy.rb
226
268
  - lib/glimmer/swt/combo_proxy.rb
227
269
  - lib/glimmer/swt/composite_proxy.rb
270
+ - lib/glimmer/swt/display_proxy.rb
228
271
  - lib/glimmer/swt/event_listener_proxy.rb
272
+ - lib/glimmer/swt/fill_layout_proxy.rb
273
+ - lib/glimmer/swt/font_proxy.rb
229
274
  - lib/glimmer/swt/grid_layout_proxy.rb
230
275
  - lib/glimmer/swt/label_proxy.rb
231
276
  - lib/glimmer/swt/layout_data_proxy.rb
@@ -234,7 +279,10 @@ files:
234
279
  - lib/glimmer/swt/message_box_proxy.rb
235
280
  - lib/glimmer/swt/point.rb
236
281
  - lib/glimmer/swt/property_owner.rb
282
+ - lib/glimmer/swt/row_layout_proxy.rb
237
283
  - lib/glimmer/swt/shell_proxy.rb
284
+ - lib/glimmer/swt/style_constantizable.rb
285
+ - lib/glimmer/swt/swt_proxy.rb
238
286
  - lib/glimmer/swt/tab_folder_proxy.rb
239
287
  - lib/glimmer/swt/tab_item_proxy.rb
240
288
  - lib/glimmer/swt/table_column_proxy.rb
@@ -242,26 +290,9 @@ files:
242
290
  - lib/glimmer/swt/table_proxy.rb
243
291
  - lib/glimmer/swt/text_proxy.rb
244
292
  - lib/glimmer/swt/widget_proxy.rb
245
- - lib/jquery.js
246
- - lib/samples/elaborate/contact_manager.rb
247
- - lib/samples/elaborate/contact_manager/contact.rb
248
- - lib/samples/elaborate/contact_manager/contact_manager_presenter.rb
249
- - lib/samples/elaborate/contact_manager/contact_repository.rb
250
- - lib/samples/elaborate/launch
251
- - lib/samples/elaborate/login.rb
252
- - lib/samples/elaborate/tic_tac_toe.rb
253
- - lib/samples/elaborate/tic_tac_toe/board.rb
254
- - lib/samples/elaborate/tic_tac_toe/cell.rb
255
- - lib/samples/hello/hello_browser.rb
256
- - lib/samples/hello/hello_combo.rb
257
- - lib/samples/hello/hello_computed.rb
258
- - lib/samples/hello/hello_computed/contact.rb
259
- - lib/samples/hello/hello_list_multi_selection.rb
260
- - lib/samples/hello/hello_list_single_selection.rb
261
- - lib/samples/hello/hello_tab.rb
262
- - lib/samples/hello/hello_world.rb
263
- - lib/samples/hello/launch
264
- - lib/samples/launch
293
+ - lib/glimmer/ui/custom_shell.rb
294
+ - lib/glimmer/ui/custom_widget.rb
295
+ - lib/glimmer/util/proc_tracker.rb
265
296
  homepage: http://github.com/AndyObtiva/glimmer-dsl-opal
266
297
  licenses:
267
298
  - MIT
@@ -281,7 +312,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
281
312
  - !ruby/object:Gem::Version
282
313
  version: '0'
283
314
  requirements: []
284
- rubygems_version: 3.1.2
315
+ rubygems_version: 3.1.4
285
316
  signing_key:
286
317
  specification_version: 4
287
318
  summary: Glimmer DSL for Opal