glimmer-dsl-swt 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Gem Version](https://badge.fury.io/rb/glimmer-dsl-swt.svg)](http://badge.fury.io/rb/glimmer-dsl-swt)
|
3
3
|
[![Travis CI](https://travis-ci.com/AndyObtiva/glimmer-dsl-swt.svg?branch=master)](https://travis-ci.com/github/AndyObtiva/glimmer-dsl-swt)
|
4
4
|
[![Coverage Status](https://coveralls.io/repos/github/AndyObtiva/glimmer-dsl-swt/badge.svg?branch=master)](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
|