glimmer-dsl-swt 0.3.1 → 0.4.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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/VERSION +1 -1
- data/lib/glimmer/swt/color_proxy.rb +11 -0
- data/lib/glimmer/swt/display_proxy.rb +13 -11
- data/lib/glimmer/swt/shell_proxy.rb +5 -4
- data/lib/glimmer/swt/table_proxy.rb +2 -2
- data/lib/glimmer/swt/widget_proxy.rb +37 -22
- data/lib/glimmer/ui/custom_shell.rb +1 -0
- data/lib/glimmer/ui/custom_widget.rb +8 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8dda5c40a0a65d36e4615d40f3456b80d2d990121ed63fa9f447a1d110af3a93
|
4
|
+
data.tar.gz: 4bcdc319eda7a7c3542e0d1b8caeda9329726623ae20b87236be0690dbd263c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12f2085517a77a30197dd499887e0ca55756b2a0d0ec26275be60b38d6b266722c6574256e3f9830e145763eec7cb74543b0df37932d9c751b0497c4ea277a38
|
7
|
+
data.tar.gz: bb174b6427e2814b02f4509dc4b31698ca2e28c460f2d18749c2505ec9cb0635641275a5300db0fbb7821d1fdb0cdc8474e9220d2718201073076d567b2865d0
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# <img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 /> Glimmer DSL for SWT 0.
|
1
|
+
# <img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 /> Glimmer DSL for SWT 0.4.0 (Desktop GUI)
|
2
2
|
[](http://badge.fury.io/rb/glimmer-dsl-swt)
|
3
3
|
[](https://travis-ci.com/github/AndyObtiva/glimmer-dsl-swt)
|
4
4
|
[](https://coveralls.io/github/AndyObtiva/glimmer-dsl-swt?branch=master)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
@@ -48,6 +48,17 @@ module Glimmer
|
|
48
48
|
end
|
49
49
|
@swt_color
|
50
50
|
end
|
51
|
+
|
52
|
+
def method_missing(method, *args, &block)
|
53
|
+
swt_color.send(method, *args, &block)
|
54
|
+
rescue => e
|
55
|
+
Glimmer::Config.logger&.debug "Neither ColorProxy nor #{swt_color.class.name} can handle the method ##{method}"
|
56
|
+
super
|
57
|
+
end
|
58
|
+
|
59
|
+
def respond_to?(method, *args, &block)
|
60
|
+
super || swt_color.respond_to?(method, *args, &block)
|
61
|
+
end
|
51
62
|
end
|
52
63
|
end
|
53
64
|
end
|
@@ -33,26 +33,28 @@ module Glimmer
|
|
33
33
|
|
34
34
|
def initialize(*args)
|
35
35
|
@swt_display = Display.new(*args)
|
36
|
+
@swt_display.set_data('proxy', self)
|
36
37
|
end
|
37
38
|
|
38
39
|
def dispose
|
39
40
|
@swt_display.dispose
|
40
41
|
end
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
43
|
+
def method_missing(method, *args, &block)
|
44
|
+
swt_display.send(method, *args, &block)
|
45
|
+
rescue => e
|
46
|
+
Glimmer::Config.logger&.debug "Neither DisplayProxy nor #{swt_display.class.name} can handle the method ##{method}"
|
47
|
+
super
|
45
48
|
end
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
@swt_display.syncExec(&block)
|
49
|
+
|
50
|
+
def respond_to?(method, *args, &block)
|
51
|
+
super || swt_display.respond_to?(method, *args, &block)
|
50
52
|
end
|
51
53
|
|
52
54
|
def can_handle_observation_request?(observation_request)
|
53
55
|
observation_request = observation_request.to_s
|
54
|
-
if observation_request.start_with?('
|
55
|
-
constant_name = observation_request.sub(/^
|
56
|
+
if observation_request.start_with?('on_swt_')
|
57
|
+
constant_name = observation_request.sub(/^on_swt_/, '')
|
56
58
|
SWTProxy.has_constant?(constant_name)
|
57
59
|
elsif observation_request.start_with?('on_')
|
58
60
|
event_name = observation_request.sub(/^on_/, '')
|
@@ -63,8 +65,8 @@ module Glimmer
|
|
63
65
|
end
|
64
66
|
|
65
67
|
def handle_observation_request(observation_request, &block)
|
66
|
-
if observation_request.start_with?('
|
67
|
-
constant_name = observation_request.sub(/^
|
68
|
+
if observation_request.start_with?('on_swt_')
|
69
|
+
constant_name = observation_request.sub(/^on_swt_/, '')
|
68
70
|
add_swt_event_listener(constant_name, &block)
|
69
71
|
elsif observation_request.start_with?('on_')
|
70
72
|
event_name = observation_request.sub(/^on_/, '')
|
@@ -40,9 +40,10 @@ module Glimmer
|
|
40
40
|
end
|
41
41
|
args = args.compact
|
42
42
|
@swt_widget = Shell.new(*args)
|
43
|
+
@swt_widget.set_data('proxy', self)
|
43
44
|
@swt_widget.setLayout(FillLayout.new)
|
44
45
|
@swt_widget.setMinimumSize(WIDTH_MIN, HEIGHT_MIN)
|
45
|
-
|
46
|
+
on_swt_show do
|
46
47
|
Thread.new do
|
47
48
|
sleep(0.25)
|
48
49
|
async_exec do
|
@@ -144,9 +145,9 @@ module Glimmer
|
|
144
145
|
visibility_notifier = proc do
|
145
146
|
observer.call(visible?)
|
146
147
|
end
|
147
|
-
|
148
|
-
|
149
|
-
|
148
|
+
on_swt_show(&visibility_notifier)
|
149
|
+
on_swt_hide(&visibility_notifier)
|
150
|
+
on_swt_close(&visibility_notifier)
|
150
151
|
else
|
151
152
|
super
|
152
153
|
end
|
@@ -87,7 +87,7 @@ module Glimmer
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
attr_reader :table_editor, :
|
90
|
+
attr_reader :table_editor, :table_editor_widget_proxy, :sort_property, :sort_direction, :sort_block, :sort_type, :sort_by_block, :additional_sort_properties, :editor
|
91
91
|
attr_accessor :column_properties
|
92
92
|
|
93
93
|
def initialize(underscored_widget_name, parent, args)
|
@@ -293,7 +293,7 @@ module Glimmer
|
|
293
293
|
end
|
294
294
|
|
295
295
|
content {
|
296
|
-
@table_editor_widget_proxy =
|
296
|
+
@table_editor_widget_proxy = TableProxy::editors[editor_widget][:editor_gui].call(editor_widget_args, model, model_editing_property, self)
|
297
297
|
}
|
298
298
|
@table_editor.setEditor(@table_editor_widget_proxy.swt_widget, table_item, column_index)
|
299
299
|
rescue => e
|
@@ -60,6 +60,7 @@ module Glimmer
|
|
60
60
|
styles, extra_options = extract_args(underscored_widget_name, args)
|
61
61
|
swt_widget_class = self.class.swt_widget_class_for(underscored_widget_name)
|
62
62
|
@swt_widget = swt_widget_class.new(parent.swt_widget, style(underscored_widget_name, styles), *extra_options)
|
63
|
+
@swt_widget.set_data('proxy', self)
|
63
64
|
DEFAULT_INITIALIZERS[underscored_widget_name]&.call(@swt_widget)
|
64
65
|
parent.post_initialize_child(self)
|
65
66
|
end
|
@@ -176,44 +177,44 @@ module Glimmer
|
|
176
177
|
}
|
177
178
|
end,
|
178
179
|
:caret_position => lambda do |observer|
|
179
|
-
|
180
|
+
on_swt_keydown { |event|
|
180
181
|
observer.call(@swt_widget.getCaretPosition)
|
181
182
|
}
|
182
|
-
|
183
|
+
on_swt_keyup { |event|
|
183
184
|
observer.call(@swt_widget.getCaretPosition)
|
184
185
|
}
|
185
|
-
|
186
|
+
on_swt_mousedown { |event|
|
186
187
|
observer.call(@swt_widget.getCaretPosition)
|
187
188
|
}
|
188
|
-
|
189
|
+
on_swt_mouseup { |event|
|
189
190
|
observer.call(@swt_widget.getCaretPosition)
|
190
191
|
}
|
191
192
|
end,
|
192
193
|
:selection => lambda do |observer|
|
193
|
-
|
194
|
+
on_swt_keydown { |event|
|
194
195
|
observer.call(@swt_widget.getSelection)
|
195
196
|
}
|
196
|
-
|
197
|
+
on_swt_keyup { |event|
|
197
198
|
observer.call(@swt_widget.getSelection)
|
198
199
|
}
|
199
|
-
|
200
|
+
on_swt_mousedown { |event|
|
200
201
|
observer.call(@swt_widget.getSelection)
|
201
202
|
}
|
202
|
-
|
203
|
+
on_swt_mouseup { |event|
|
203
204
|
observer.call(@swt_widget.getSelection)
|
204
205
|
}
|
205
206
|
end,
|
206
207
|
:selection_count => lambda do |observer|
|
207
|
-
|
208
|
+
on_swt_keydown { |event|
|
208
209
|
observer.call(@swt_widget.getSelectionCount)
|
209
210
|
}
|
210
|
-
|
211
|
+
on_swt_keyup { |event|
|
211
212
|
observer.call(@swt_widget.getSelectionCount)
|
212
213
|
}
|
213
|
-
|
214
|
+
on_swt_mousedown { |event|
|
214
215
|
observer.call(@swt_widget.getSelectionCount)
|
215
216
|
}
|
216
|
-
|
217
|
+
on_swt_mouseup { |event|
|
217
218
|
observer.call(@swt_widget.getSelectionCount)
|
218
219
|
}
|
219
220
|
end,
|
@@ -338,8 +339,8 @@ module Glimmer
|
|
338
339
|
|
339
340
|
def can_handle_observation_request?(observation_request)
|
340
341
|
observation_request = observation_request.to_s
|
341
|
-
if observation_request.start_with?('
|
342
|
-
constant_name = observation_request.sub(/^
|
342
|
+
if observation_request.start_with?('on_swt_')
|
343
|
+
constant_name = observation_request.sub(/^on_swt_/, '')
|
343
344
|
SWTProxy.has_constant?(constant_name)
|
344
345
|
elsif observation_request.start_with?('on_')
|
345
346
|
event = observation_request.sub(/^on_/, '')
|
@@ -357,6 +358,9 @@ module Glimmer
|
|
357
358
|
@drag_source_proxy = nil
|
358
359
|
end
|
359
360
|
end
|
361
|
+
rescue => e
|
362
|
+
Glimmer::Config.logger&.debug(e.full_message)
|
363
|
+
false
|
360
364
|
end
|
361
365
|
|
362
366
|
def can_handle_drop_observation_request?(observation_request)
|
@@ -372,8 +376,8 @@ module Glimmer
|
|
372
376
|
end
|
373
377
|
|
374
378
|
def handle_observation_request(observation_request, &block)
|
375
|
-
if observation_request.start_with?('
|
376
|
-
constant_name = observation_request.sub(/^
|
379
|
+
if observation_request.start_with?('on_swt_')
|
380
|
+
constant_name = observation_request.sub(/^on_swt_/, '')
|
377
381
|
add_swt_event_listener(constant_name, &block)
|
378
382
|
elsif observation_request.start_with?('on_')
|
379
383
|
event = observation_request.sub(/^on_/, '')
|
@@ -392,6 +396,17 @@ module Glimmer
|
|
392
396
|
Glimmer::DSL::Engine.add_content(self, Glimmer::DSL::SWT::WidgetExpression.new, &block)
|
393
397
|
end
|
394
398
|
|
399
|
+
def method_missing(method, *args, &block)
|
400
|
+
swt_widget.send(method, *args, &block)
|
401
|
+
rescue => e
|
402
|
+
Glimmer::Config.logger&.debug "Neither WidgetProxy nor #{swt_widget.class.name} can handle the method ##{method}"
|
403
|
+
super
|
404
|
+
end
|
405
|
+
|
406
|
+
def respond_to?(method, *args, &block)
|
407
|
+
super || swt_widget.respond_to?(method, *args, &block)
|
408
|
+
end
|
409
|
+
|
395
410
|
private
|
396
411
|
|
397
412
|
def style(underscored_widget_name, styles)
|
@@ -437,7 +452,7 @@ module Glimmer
|
|
437
452
|
def add_listener(underscored_listener_name, &block)
|
438
453
|
widget_add_listener_method, listener_class, listener_method = self.class.find_listener(@swt_widget.getClass, underscored_listener_name)
|
439
454
|
widget_listener_proxy = nil
|
440
|
-
safe_block = lambda { |
|
455
|
+
safe_block = lambda { |*args| block.call(*args) unless @swt_widget.isDisposed }
|
441
456
|
listener = listener_class.new(listener_method => safe_block)
|
442
457
|
@swt_widget.send(widget_add_listener_method, listener)
|
443
458
|
widget_listener_proxy = WidgetListenerProxy.new(swt_widget: @swt_widget, swt_listener: listener, widget_add_listener_method: widget_add_listener_method, swt_listener_class: listener_class, swt_listener_method: listener_method)
|
@@ -479,9 +494,9 @@ module Glimmer
|
|
479
494
|
listener_class.define_method('initialize') do |event_method_block_mapping|
|
480
495
|
@event_method_block_mapping = event_method_block_mapping
|
481
496
|
end
|
482
|
-
listener_type.getMethods.each do |event_method|
|
483
|
-
listener_class.define_method(event_method.getName) do |
|
484
|
-
@event_method_block_mapping[event_method.getName]&.call(
|
497
|
+
listener_type.getMethods.each do |event_method|
|
498
|
+
listener_class.define_method(event_method.getName) do |*args|
|
499
|
+
@event_method_block_mapping[event_method.getName]&.call(*args)
|
485
500
|
end
|
486
501
|
end
|
487
502
|
end
|
@@ -492,7 +507,7 @@ module Glimmer
|
|
492
507
|
def add_swt_event_listener(swt_constant, &block)
|
493
508
|
event_type = SWTProxy[swt_constant]
|
494
509
|
widget_listener_proxy = nil
|
495
|
-
safe_block = lambda { |
|
510
|
+
safe_block = lambda { |*args| block.call(*args) unless @swt_widget.isDisposed }
|
496
511
|
@swt_widget.addListener(event_type, &safe_block)
|
497
512
|
widget_listener_proxy = WidgetListenerProxy.new(swt_widget: @swt_widget, swt_listener: @swt_widget.getListeners(event_type).last, event_type: event_type, swt_constant: swt_constant)
|
498
513
|
end
|
@@ -579,7 +594,7 @@ module Glimmer
|
|
579
594
|
end
|
580
595
|
image_data = ImageData.new(value)
|
581
596
|
# TODO in the future, look into unregistering this listener when no longer needed
|
582
|
-
|
597
|
+
on_swt_Resize do |resize_event|
|
583
598
|
new_image_data = image_data.scaledTo(@swt_widget.getSize.x, @swt_widget.getSize.y)
|
584
599
|
@swt_widget.getBackgroundImage&.dispose
|
585
600
|
@swt_widget.setBackgroundImage(Image.new(@swt_widget.getDisplay, new_image_data))
|
@@ -8,6 +8,7 @@ module Glimmer
|
|
8
8
|
|
9
9
|
def initialize(parent, *swt_constants, options, &content)
|
10
10
|
super
|
11
|
+
@swt_widget.set_data('custom_shell', self)
|
11
12
|
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
13
|
end
|
13
14
|
|
@@ -134,8 +134,9 @@ module Glimmer
|
|
134
134
|
body_block = self.class.instance_variable_get("@body_block")
|
135
135
|
raise Glimmer::Error, 'Invalid custom widget for having no body! Please define body block!' if body_block.nil?
|
136
136
|
@body_root = instance_exec(&body_block)
|
137
|
-
execute_hooks('after_body')
|
138
137
|
@swt_widget = @body_root.swt_widget
|
138
|
+
@swt_widget.set_data('custom_widget', self)
|
139
|
+
execute_hooks('after_body')
|
139
140
|
end
|
140
141
|
|
141
142
|
def can_handle_observation_request?(observation_request)
|
@@ -159,7 +160,7 @@ module Glimmer
|
|
159
160
|
end
|
160
161
|
|
161
162
|
def can_add_observer?(attribute_name)
|
162
|
-
has_instance_method?(attribute_name) ||
|
163
|
+
has_instance_method?(attribute_name) || has_instance_method?("#{attribute_name}?") || @body_root.can_add_observer?(attribute_name)
|
163
164
|
end
|
164
165
|
|
165
166
|
def add_observer(observer, attribute_name)
|
@@ -171,12 +172,12 @@ module Glimmer
|
|
171
172
|
end
|
172
173
|
|
173
174
|
def has_attribute?(attribute_name, *args)
|
174
|
-
|
175
|
+
has_instance_method?(attribute_setter(attribute_name)) ||
|
175
176
|
@body_root.has_attribute?(attribute_name, *args)
|
176
177
|
end
|
177
178
|
|
178
179
|
def set_attribute(attribute_name, *args)
|
179
|
-
if
|
180
|
+
if has_instance_method?(attribute_setter(attribute_name))
|
180
181
|
send(attribute_setter(attribute_name), *args)
|
181
182
|
else
|
182
183
|
@body_root.set_attribute(attribute_name, *args)
|
@@ -186,6 +187,7 @@ module Glimmer
|
|
186
187
|
# This method ensures it has an instance method not coming from Glimmer DSL
|
187
188
|
def has_instance_method?(method_name)
|
188
189
|
respond_to?(method_name) &&
|
190
|
+
!swt_widget.respond_to?(method_name) &&
|
189
191
|
!method(method_name)&.source_location&.first&.include?('glimmer/dsl/engine.rb') &&
|
190
192
|
!method(method_name)&.source_location&.first&.include?('glimmer/swt/widget_proxy.rb')
|
191
193
|
end
|
@@ -202,7 +204,6 @@ module Glimmer
|
|
202
204
|
"#{attribute_name}="
|
203
205
|
end
|
204
206
|
|
205
|
-
|
206
207
|
def has_style?(style)
|
207
208
|
(swt_style & SWT::SWTProxy[style]) == SWT::SWTProxy[style]
|
208
209
|
end
|
@@ -231,7 +232,8 @@ module Glimmer
|
|
231
232
|
def method_missing(method, *args, &block)
|
232
233
|
body_root.send(method, *args, &block)
|
233
234
|
end
|
234
|
-
|
235
|
+
|
236
|
+
alias local_respond_to? respond_to?
|
235
237
|
def respond_to?(method, *args, &block)
|
236
238
|
super or
|
237
239
|
body_root.respond_to?(method, *args, &block)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-dsl-swt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.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-
|
11
|
+
date: 2020-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|