glimmer-dsl-opal 0.16.2 → 0.19.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -1
- data/README.md +106 -4
- data/VERSION +1 -1
- data/lib/glimmer-dsl-opal/samples/hello/hello_arrow.rb +65 -0
- data/lib/glimmer-dsl-opal/samples/hello/hello_c_combo.rb +67 -0
- data/lib/glimmer-dsl-opal/samples/hello/hello_c_tab.rb +172 -0
- data/lib/glimmer-dsl-opal/samples/hello/hello_tab.rb +10 -8
- data/lib/glimmer-dsl-opal/samples/hello/images/denmark.png +0 -0
- data/lib/glimmer-dsl-opal/samples/hello/images/finland.png +0 -0
- data/lib/glimmer-dsl-opal/samples/hello/images/france.png +0 -0
- data/lib/glimmer-dsl-opal/samples/hello/images/germany.png +0 -0
- data/lib/glimmer-dsl-opal/samples/hello/images/italy.png +0 -0
- data/lib/glimmer-dsl-opal/samples/hello/images/mexico.png +0 -0
- data/lib/glimmer-dsl-opal/samples/hello/images/netherlands.png +0 -0
- data/lib/glimmer-dsl-opal/samples/hello/images/norway.png +0 -0
- data/lib/glimmer-dsl-opal/samples/hello/images/usa.png +0 -0
- data/lib/glimmer/dsl/opal/menu_expression.rb +3 -0
- data/lib/glimmer/swt/arrow_proxy.rb +42 -0
- data/lib/glimmer/swt/button_proxy.rb +36 -1
- data/lib/glimmer/swt/c_combo_proxy.rb +51 -0
- data/lib/glimmer/swt/c_tab_folder_proxy.rb +43 -0
- data/lib/glimmer/swt/c_tab_item_proxy.rb +96 -0
- data/lib/glimmer/swt/combo_proxy.rb +3 -0
- data/lib/glimmer/swt/menu_proxy.rb +17 -1
- data/lib/glimmer/swt/shell_proxy.rb +4 -0
- data/lib/glimmer/swt/tab_folder_proxy.rb +12 -10
- data/lib/glimmer/swt/tab_item_proxy.rb +52 -4
- data/lib/glimmer/swt/widget_proxy.rb +55 -14
- metadata +18 -2
@@ -1,10 +1,31 @@
|
|
1
|
+
# Copyright (c) 2020-2021 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
|
+
|
1
22
|
require 'glimmer/swt/composite_proxy'
|
2
23
|
|
3
24
|
module Glimmer
|
4
25
|
module SWT
|
5
26
|
class TabItemProxy < CompositeProxy
|
6
27
|
include Glimmer
|
7
|
-
attr_reader :text, :content_visible
|
28
|
+
attr_reader :text, :content_visible, :tool_tip_text, :image
|
8
29
|
|
9
30
|
def initialize(parent, args, block)
|
10
31
|
super(parent, args, block)
|
@@ -30,7 +51,33 @@ module Glimmer
|
|
30
51
|
|
31
52
|
def text=(value)
|
32
53
|
@text = value
|
33
|
-
tab_dom_element.html(@text)
|
54
|
+
tab_dom_element.find('span').html(@text)
|
55
|
+
end
|
56
|
+
|
57
|
+
def image=(value)
|
58
|
+
@image = value
|
59
|
+
if @image.is_a?(String)
|
60
|
+
tab_dom_element.find('img').attr('src', @image)
|
61
|
+
tab_dom_element.find('img').css('padding-right', '5px')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def tool_tip_text=(value)
|
66
|
+
@tool_tip_text = value
|
67
|
+
tab_dom_element.attr('title', @tool_tip_text) if !@tool_tip_text.to_s.empty?
|
68
|
+
end
|
69
|
+
|
70
|
+
def dispose
|
71
|
+
tab_index = parent.children.to_a.index(self)
|
72
|
+
tab_dom_element.remove
|
73
|
+
super
|
74
|
+
if @content_visible
|
75
|
+
@content_visible = false
|
76
|
+
parent.hide_all_tab_content
|
77
|
+
tab_to_show = parent.children.to_a[tab_index]
|
78
|
+
tab_to_show ||= parent.children.to_a[tab_index - 1]
|
79
|
+
tab_to_show&.show
|
80
|
+
end
|
34
81
|
end
|
35
82
|
|
36
83
|
def selector
|
@@ -64,8 +111,9 @@ module Glimmer
|
|
64
111
|
# This contains the clickable tab area with tab names
|
65
112
|
def tab_dom
|
66
113
|
@tab_dom ||= html {
|
67
|
-
|
68
|
-
|
114
|
+
a(href: '#', id: tab_id, class: "tab") {
|
115
|
+
img {}
|
116
|
+
span { @text }
|
69
117
|
}
|
70
118
|
}.to_s
|
71
119
|
end
|
@@ -31,8 +31,8 @@ module Glimmer
|
|
31
31
|
include Glimmer
|
32
32
|
include PropertyOwner
|
33
33
|
|
34
|
-
attr_reader :parent, :args, :path, :children, :enabled, :foreground, :background, :font, :focus, :disposed?, :rendered
|
35
|
-
attr_accessor :menu
|
34
|
+
attr_reader :parent, :args, :path, :children, :enabled, :foreground, :background, :font, :focus, :disposed?, :rendered
|
35
|
+
attr_accessor :menu, :menu_requested, :menu_x, :menu_y
|
36
36
|
alias isDisposed disposed?
|
37
37
|
alias is_disposed disposed?
|
38
38
|
alias rendered? rendered
|
@@ -112,6 +112,7 @@ module Glimmer
|
|
112
112
|
@parent = parent
|
113
113
|
@args = args
|
114
114
|
@block = block
|
115
|
+
# TODO consider changing children to an array (why is it a Set if order matters?)
|
115
116
|
@children = Set.new # TODO consider moving to composite
|
116
117
|
@enabled = true
|
117
118
|
@data = {}
|
@@ -133,17 +134,16 @@ module Glimmer
|
|
133
134
|
# Executes at the closing of a parent widget curly braces after all children/properties have been added/set
|
134
135
|
def post_add_content
|
135
136
|
if !menu.nil? && !is_a?(MenuProxy) && !is_a?(MenuItemProxy)
|
136
|
-
|
137
|
+
# TODO consider in the future retaining listener registrations to deregister on unsetting of the menu
|
138
|
+
on_mouse_move do |mouse_event|
|
139
|
+
self.menu_x = mouse_event.x
|
140
|
+
self.menu_y = mouse_event.y
|
141
|
+
end
|
142
|
+
on_mouse_down do |mouse_event|
|
137
143
|
if mouse_event.button == 3 # right-click
|
138
|
-
|
139
|
-
dom_element.css('position', 'relative')
|
140
|
-
menu&.render
|
141
|
-
menu.dom_element.css('position', 'absolute')
|
142
|
-
menu.dom_element.css('left', mouse_event.x - parent.get_layout&.margin_width.to_i) # TODO - parent.get_layout&.margin_left.to_i)
|
143
|
-
menu.dom_element.css('top', mouse_event.y - parent.get_layout&.margin_height.to_i - 5) # TODO - parent.get_layout&.margin_top.to_i)
|
144
|
-
@menu_requested = false
|
144
|
+
menu.visible = true
|
145
145
|
end
|
146
|
-
|
146
|
+
end
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
@@ -237,8 +237,8 @@ module Glimmer
|
|
237
237
|
def font=(value)
|
238
238
|
@font = value.is_a?(FontProxy) ? value : FontProxy.new(self, value)
|
239
239
|
dom_element.css('font-family', @font.name) unless @font.nil?
|
240
|
-
dom_element.css('font-style', 'italic') if @font&.style == :italic
|
241
|
-
dom_element.css('font-weight', 'bold') if @font&.style == :bold
|
240
|
+
dom_element.css('font-style', 'italic') if @font&.style == :italic || @font&.style&.to_a&.include?(:italic)
|
241
|
+
dom_element.css('font-weight', 'bold') if @font&.style == :bold || @font&.style&.to_a&.include?(:bold)
|
242
242
|
dom_element.css('font-size', "#{@font.height}px") unless @font.nil?
|
243
243
|
end
|
244
244
|
|
@@ -321,10 +321,12 @@ module Glimmer
|
|
321
321
|
end
|
322
322
|
|
323
323
|
def default_observation_request_to_event_mapping
|
324
|
+
myself = self
|
324
325
|
mouse_event_handler = -> (event_listener) {
|
325
326
|
-> (event) {
|
326
327
|
# TODO generalize this solution to all widgets that support key presses
|
327
328
|
# TODO support event.location once DOM3 is supported by opal-jquery
|
329
|
+
event.define_singleton_method(:widget) {myself}
|
328
330
|
event.define_singleton_method(:button, &event.method(:which))
|
329
331
|
event.define_singleton_method(:count) {1} # TODO support double-click count of 2 in the future by using ondblclick
|
330
332
|
event.define_singleton_method(:x, &event.method(:page_x))
|
@@ -345,6 +347,31 @@ module Glimmer
|
|
345
347
|
# event.prevent
|
346
348
|
# event.stop
|
347
349
|
# event.stop_immediate
|
350
|
+
# end
|
351
|
+
}
|
352
|
+
}
|
353
|
+
mouse_move_event_handler = -> (event_listener) {
|
354
|
+
-> (event) {
|
355
|
+
# TODO generalize this solution to all widgets that support key presses
|
356
|
+
# TODO support event.location once DOM3 is supported by opal-jquery
|
357
|
+
event.define_singleton_method(:widget) {myself}
|
358
|
+
event.define_singleton_method(:button, &event.method(:which))
|
359
|
+
event.define_singleton_method(:count) {1} # TODO support double-click count of 2 in the future by using ondblclick
|
360
|
+
event.define_singleton_method(:x, &event.method(:page_x))
|
361
|
+
event.define_singleton_method(:y, &event.method(:page_y))
|
362
|
+
doit = true
|
363
|
+
event.define_singleton_method(:doit=) do |value|
|
364
|
+
doit = value
|
365
|
+
end
|
366
|
+
event.define_singleton_method(:doit) { doit }
|
367
|
+
|
368
|
+
event_listener.call(event)
|
369
|
+
|
370
|
+
# TODO Imlement doit properly for all different kinds of events
|
371
|
+
# unless doit
|
372
|
+
# event.prevent
|
373
|
+
# event.stop
|
374
|
+
# event.stop_immediate
|
348
375
|
# end
|
349
376
|
}
|
350
377
|
}
|
@@ -352,6 +379,7 @@ module Glimmer
|
|
352
379
|
-> (event) {
|
353
380
|
# TODO generalize this solution to all widgets that support key presses
|
354
381
|
# TODO support event.location once DOM3 is supported by opal-jquery
|
382
|
+
event.define_singleton_method(:widget) {myself}
|
355
383
|
event.define_singleton_method(:button, &event.method(:which))
|
356
384
|
event.define_singleton_method(:count) {1} # TODO support double-click count of 2 in the future by using ondblclick
|
357
385
|
event.define_singleton_method(:x, &event.method(:page_x))
|
@@ -366,7 +394,6 @@ module Glimmer
|
|
366
394
|
event.prevent
|
367
395
|
event_listener.call(event)
|
368
396
|
end
|
369
|
-
|
370
397
|
# TODO Imlement doit properly for all different kinds of events
|
371
398
|
# unless doit
|
372
399
|
# event.prevent
|
@@ -382,6 +409,12 @@ module Glimmer
|
|
382
409
|
'on_focus_lost' => {
|
383
410
|
event: 'blur',
|
384
411
|
},
|
412
|
+
'on_mouse_move' => [
|
413
|
+
{
|
414
|
+
event: 'mousemove',
|
415
|
+
event_handler: mouse_move_event_handler,
|
416
|
+
},
|
417
|
+
],
|
385
418
|
'on_mouse_up' => [
|
386
419
|
{
|
387
420
|
event: 'mouseup',
|
@@ -428,6 +461,7 @@ module Glimmer
|
|
428
461
|
-> (event) {
|
429
462
|
# TODO generalize this solution to all widgets that support key presses
|
430
463
|
# TODO support event.location once DOM3 is supported by opal-jquery
|
464
|
+
event.define_singleton_method(:widget) {myself}
|
431
465
|
event.define_singleton_method(:keyCode) {event.which}
|
432
466
|
event.define_singleton_method(:key_code, &event.method(:keyCode))
|
433
467
|
event.define_singleton_method(:character) {event.which.chr}
|
@@ -464,6 +498,7 @@ module Glimmer
|
|
464
498
|
-> (event) {
|
465
499
|
# TODO generalize this solution to all widgets that support key presses
|
466
500
|
# TODO support event.location once DOM3 is supported by opal-jquery
|
501
|
+
event.define_singleton_method(:widget) {myself}
|
467
502
|
event.define_singleton_method(:keyCode) {event.which}
|
468
503
|
event.define_singleton_method(:key_code, &event.method(:keyCode))
|
469
504
|
event.define_singleton_method(:character) {event.which.chr}
|
@@ -500,6 +535,7 @@ module Glimmer
|
|
500
535
|
-> (event) {
|
501
536
|
# TODO generalize this solution to all widgets that support key presses
|
502
537
|
# TODO support event.location once DOM3 is supported by opal-jquery
|
538
|
+
event.define_singleton_method(:widget) {myself}
|
503
539
|
event.define_singleton_method(:keyCode) {event.which}
|
504
540
|
event.define_singleton_method(:key_code, &event.method(:keyCode))
|
505
541
|
event.define_singleton_method(:character) {event.which.chr}
|
@@ -536,6 +572,7 @@ module Glimmer
|
|
536
572
|
-> (event) {
|
537
573
|
# TODO generalize this solution to all widgets that support key presses
|
538
574
|
# TODO support event.location once DOM3 is supported by opal-jquery
|
575
|
+
event.define_singleton_method(:widget) {myself}
|
539
576
|
event.define_singleton_method(:keyCode) {event.which}
|
540
577
|
event.define_singleton_method(:key_code, &event.method(:keyCode))
|
541
578
|
event.define_singleton_method(:character) {event.which.chr}
|
@@ -924,7 +961,9 @@ end
|
|
924
961
|
require 'glimmer/swt/display_proxy'
|
925
962
|
require 'glimmer/swt/browser_proxy'
|
926
963
|
require 'glimmer/swt/button_proxy'
|
964
|
+
require 'glimmer/swt/arrow_proxy'
|
927
965
|
require 'glimmer/swt/combo_proxy'
|
966
|
+
require 'glimmer/swt/c_combo_proxy'
|
928
967
|
require 'glimmer/swt/checkbox_proxy'
|
929
968
|
require 'glimmer/swt/composite_proxy'
|
930
969
|
require 'glimmer/swt/dialog_proxy'
|
@@ -937,6 +976,8 @@ require 'glimmer/swt/menu_proxy'
|
|
937
976
|
require 'glimmer/swt/radio_proxy'
|
938
977
|
require 'glimmer/swt/tab_folder_proxy'
|
939
978
|
require 'glimmer/swt/tab_item_proxy'
|
979
|
+
require 'glimmer/swt/c_tab_folder_proxy'
|
980
|
+
require 'glimmer/swt/c_tab_item_proxy'
|
940
981
|
require 'glimmer/swt/table_column_proxy'
|
941
982
|
require 'glimmer/swt/table_item_proxy'
|
942
983
|
require 'glimmer/swt/table_proxy'
|
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.
|
4
|
+
version: 0.19.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AndyMaleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glimmer
|
@@ -284,8 +284,11 @@ files:
|
|
284
284
|
- lib/glimmer-dsl-opal/samples/elaborate/tic_tac_toe/board.rb
|
285
285
|
- lib/glimmer-dsl-opal/samples/elaborate/tic_tac_toe/cell.rb
|
286
286
|
- lib/glimmer-dsl-opal/samples/elaborate/weather.rb
|
287
|
+
- lib/glimmer-dsl-opal/samples/hello/hello_arrow.rb
|
287
288
|
- lib/glimmer-dsl-opal/samples/hello/hello_browser.rb
|
288
289
|
- lib/glimmer-dsl-opal/samples/hello/hello_button.rb
|
290
|
+
- lib/glimmer-dsl-opal/samples/hello/hello_c_combo.rb
|
291
|
+
- lib/glimmer-dsl-opal/samples/hello/hello_c_tab.rb
|
289
292
|
- lib/glimmer-dsl-opal/samples/hello/hello_checkbox.rb
|
290
293
|
- lib/glimmer-dsl-opal/samples/hello/hello_checkbox_group.rb
|
291
294
|
- lib/glimmer-dsl-opal/samples/hello/hello_combo.rb
|
@@ -308,6 +311,15 @@ files:
|
|
308
311
|
- lib/glimmer-dsl-opal/samples/hello/hello_table.rb
|
309
312
|
- lib/glimmer-dsl-opal/samples/hello/hello_table/baseball_park.png
|
310
313
|
- lib/glimmer-dsl-opal/samples/hello/hello_world.rb
|
314
|
+
- lib/glimmer-dsl-opal/samples/hello/images/denmark.png
|
315
|
+
- lib/glimmer-dsl-opal/samples/hello/images/finland.png
|
316
|
+
- lib/glimmer-dsl-opal/samples/hello/images/france.png
|
317
|
+
- lib/glimmer-dsl-opal/samples/hello/images/germany.png
|
318
|
+
- lib/glimmer-dsl-opal/samples/hello/images/italy.png
|
319
|
+
- lib/glimmer-dsl-opal/samples/hello/images/mexico.png
|
320
|
+
- lib/glimmer-dsl-opal/samples/hello/images/netherlands.png
|
321
|
+
- lib/glimmer-dsl-opal/samples/hello/images/norway.png
|
322
|
+
- lib/glimmer-dsl-opal/samples/hello/images/usa.png
|
311
323
|
- lib/glimmer-dsl-opal/vendor/jquery-ui-timepicker/GPL-LICENSE.txt
|
312
324
|
- lib/glimmer-dsl-opal/vendor/jquery-ui-timepicker/MIT-LICENSE.txt
|
313
325
|
- lib/glimmer-dsl-opal/vendor/jquery-ui-timepicker/jquery.ui.timepicker.css
|
@@ -370,8 +382,12 @@ files:
|
|
370
382
|
- lib/glimmer/dsl/opal/widget_listener_expression.rb
|
371
383
|
- lib/glimmer/engine.rb
|
372
384
|
- lib/glimmer/swt.rb
|
385
|
+
- lib/glimmer/swt/arrow_proxy.rb
|
373
386
|
- lib/glimmer/swt/browser_proxy.rb
|
374
387
|
- lib/glimmer/swt/button_proxy.rb
|
388
|
+
- lib/glimmer/swt/c_combo_proxy.rb
|
389
|
+
- lib/glimmer/swt/c_tab_folder_proxy.rb
|
390
|
+
- lib/glimmer/swt/c_tab_item_proxy.rb
|
375
391
|
- lib/glimmer/swt/checkbox_proxy.rb
|
376
392
|
- lib/glimmer/swt/color_proxy.rb
|
377
393
|
- lib/glimmer/swt/combo_proxy.rb
|