glimmer-dsl-swt 4.17.4.0 → 4.17.7.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/CHANGELOG.md +34 -0
- data/README.md +191 -29
- data/VERSION +1 -1
- data/glimmer-dsl-swt.gemspec +18 -5
- data/lib/glimmer/dsl/swt/checkbox_group_selection_data_binding_expression.rb +61 -0
- data/lib/glimmer/dsl/swt/custom_widget_expression.rb +2 -0
- data/lib/glimmer/dsl/swt/dsl.rb +2 -0
- data/lib/glimmer/dsl/swt/expand_item_expression.rb +60 -0
- data/lib/glimmer/dsl/swt/radio_group_selection_data_binding_expression.rb +61 -0
- data/lib/glimmer/dsl/swt/widget_expression.rb +1 -0
- data/lib/glimmer/swt/custom/checkbox_group.rb +160 -0
- data/lib/glimmer/swt/custom/code_text.rb +20 -13
- data/lib/glimmer/swt/custom/radio_group.rb +155 -0
- data/lib/glimmer/swt/expand_item_proxy.rb +97 -0
- data/lib/glimmer/swt/image_proxy.rb +5 -0
- data/lib/glimmer/swt/menu_proxy.rb +1 -1
- data/lib/glimmer/swt/sash_form_proxy.rb +1 -1
- data/lib/glimmer/swt/styled_text_proxy.rb +43 -0
- data/lib/glimmer/swt/tab_item_proxy.rb +1 -1
- data/lib/glimmer/swt/widget_proxy.rb +94 -35
- data/lib/glimmer/ui/custom_widget.rb +3 -0
- data/samples/elaborate/meta_sample.rb +36 -31
- data/samples/hello/hello_checkbox.rb +85 -0
- data/samples/hello/hello_checkbox_group.rb +68 -0
- data/samples/hello/hello_combo.rb +12 -12
- data/samples/hello/hello_expand_bar.rb +110 -0
- data/samples/hello/hello_list_multi_selection.rb +23 -23
- data/samples/hello/hello_list_single_selection.rb +14 -13
- data/samples/hello/hello_radio.rb +108 -0
- data/samples/hello/hello_radio_group.rb +84 -0
- data/samples/hello/hello_styled_text.rb +138 -0
- metadata +17 -4
@@ -0,0 +1,84 @@
|
|
1
|
+
# Copyright (c) 2007-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
|
+
class HelloRadioGroup
|
23
|
+
class Person
|
24
|
+
attr_accessor :gender, :age_group
|
25
|
+
|
26
|
+
def initialize
|
27
|
+
reset
|
28
|
+
end
|
29
|
+
|
30
|
+
def gender_options
|
31
|
+
['Male', 'Female']
|
32
|
+
end
|
33
|
+
|
34
|
+
def age_group_options
|
35
|
+
['Child', 'Teen', 'Adult', 'Senior']
|
36
|
+
end
|
37
|
+
|
38
|
+
def reset
|
39
|
+
self.gender = nil
|
40
|
+
self.age_group = 'Adult'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
include Glimmer
|
45
|
+
|
46
|
+
def launch
|
47
|
+
person = Person.new
|
48
|
+
|
49
|
+
shell {
|
50
|
+
text 'Hello, Radio Group!'
|
51
|
+
row_layout :vertical
|
52
|
+
|
53
|
+
label {
|
54
|
+
text 'Gender:'
|
55
|
+
font style: :bold
|
56
|
+
}
|
57
|
+
|
58
|
+
radio_group {
|
59
|
+
row_layout :horizontal
|
60
|
+
selection bind(person, :gender)
|
61
|
+
}
|
62
|
+
|
63
|
+
label {
|
64
|
+
text 'Age Group:'
|
65
|
+
font style: :bold
|
66
|
+
}
|
67
|
+
|
68
|
+
radio_group {
|
69
|
+
row_layout :horizontal
|
70
|
+
selection bind(person, :age_group)
|
71
|
+
}
|
72
|
+
|
73
|
+
button {
|
74
|
+
text 'Reset'
|
75
|
+
|
76
|
+
on_widget_selected do
|
77
|
+
person.reset
|
78
|
+
end
|
79
|
+
}
|
80
|
+
}.open
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
HelloRadioGroup.new.launch
|
@@ -0,0 +1,138 @@
|
|
1
|
+
# Copyright (c) 2007-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
|
+
verbiage = <<-MULTI_LINE_STRING
|
23
|
+
|
24
|
+
Glimmer DSL for SWT is a native-GUI cross-platform desktop development library written in JRuby,
|
25
|
+
an OS-threaded faster version of Ruby.
|
26
|
+
Glimmer's main innovation is a declarative Ruby DSL that enables productive and efficient authoring
|
27
|
+
of desktop application user-interfaces while relying on the robust Eclipse SWT library.
|
28
|
+
Glimmer additionally innovates by having built-in data-binding support, which greatly facilitates
|
29
|
+
synchronizing the GUI with domain models, thus achieving true decoupling of object oriented components
|
30
|
+
and enabling developers to solve business problems (test-first) without worrying about GUI concerns.
|
31
|
+
To get started quickly, Glimmer offers scaffolding options for Apps, Gems, and Custom Widgets.
|
32
|
+
Glimmer also includes native-executable packaging support, sorely lacking in other libraries,
|
33
|
+
thus enabling the delivery of desktop apps written in Ruby as truly native DMG/PKG/APP files on
|
34
|
+
the Mac + App Store, MSI/EXE files on Windows, and Gem Packaged Shell Scripts on Linux.
|
35
|
+
|
36
|
+
MULTI_LINE_STRING
|
37
|
+
|
38
|
+
class StyledTextPresenter
|
39
|
+
include Glimmer
|
40
|
+
attr_accessor :text, :caret_offset, :selection_count, :selection, :top_pixel
|
41
|
+
|
42
|
+
def line_index_for_offset(line_offset)
|
43
|
+
text[0..line_offset].split("\n").size
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
include Glimmer
|
48
|
+
|
49
|
+
@presenter = StyledTextPresenter.new
|
50
|
+
@presenter.text = verbiage*8
|
51
|
+
@presenter.caret_offset = 0
|
52
|
+
@presenter.selection_count = 0
|
53
|
+
@presenter.selection = Point.new(0, 0)
|
54
|
+
@presenter.top_pixel = 0
|
55
|
+
|
56
|
+
shell {
|
57
|
+
text 'Hello, Styled Text!'
|
58
|
+
|
59
|
+
composite {
|
60
|
+
@styled_text = styled_text {
|
61
|
+
layout_data :fill, :fill, true, true
|
62
|
+
text bind(@presenter, :text)
|
63
|
+
left_margin 5
|
64
|
+
top_margin 5
|
65
|
+
right_margin 5
|
66
|
+
bottom_margin 5
|
67
|
+
# caret offset scrolls text to view when out of page
|
68
|
+
caret_offset bind(@presenter, :caret_offset)
|
69
|
+
# selection_count is not needed if selection is used
|
70
|
+
selection_count bind(@presenter, :selection_count)
|
71
|
+
# selection contains both caret_offset and selection_count, but setting it does not scroll text into view if out of page
|
72
|
+
selection bind(@presenter, :selection)
|
73
|
+
# top_pixel indicates vertically what pixel scrolling is at in a long multi-page text document
|
74
|
+
top_pixel bind(@presenter, :top_pixel)
|
75
|
+
|
76
|
+
# This demonstrates how to set styles via a listener
|
77
|
+
on_line_get_style { |line_style_event|
|
78
|
+
line_offset = line_style_event.lineOffset
|
79
|
+
if @presenter.line_index_for_offset(line_offset) % 52 < 13
|
80
|
+
line_size = line_style_event.lineText.size
|
81
|
+
style_range = StyleRange.new(line_offset, line_size, color(:blue).swt_color, nil, swt(:italic))
|
82
|
+
style_range.font = Font.new(display.swt_display, 'Times New Roman', 18, swt(:normal))
|
83
|
+
line_style_event.styles = [style_range].to_java(StyleRange)
|
84
|
+
elsif @presenter.line_index_for_offset(line_offset) % 52 < 26
|
85
|
+
line_size = line_style_event.lineText.size
|
86
|
+
style_range = StyleRange.new(line_offset, line_size, color(:dark_green).swt_color, color(:yellow).swt_color, swt(:bold))
|
87
|
+
line_style_event.styles = [style_range].to_java(StyleRange)
|
88
|
+
elsif @presenter.line_index_for_offset(line_offset) % 52 < 39
|
89
|
+
line_size = line_style_event.lineText.size
|
90
|
+
style_range = StyleRange.new(line_offset, line_size, color(:red).swt_color, nil, swt(:normal))
|
91
|
+
style_range.underline = true
|
92
|
+
style_range.font = Font.new(display.swt_display, 'Arial', 16, swt(:normal))
|
93
|
+
line_style_event.styles = [style_range].to_java(StyleRange)
|
94
|
+
else
|
95
|
+
line_size = line_style_event.lineText.size
|
96
|
+
style_range = StyleRange.new(line_offset, line_size, color(:dark_magenta).swt_color, color(:cyan).swt_color, swt(:normal))
|
97
|
+
style_range.strikeout = true
|
98
|
+
line_style_event.styles = [style_range].to_java(StyleRange)
|
99
|
+
end
|
100
|
+
}
|
101
|
+
}
|
102
|
+
|
103
|
+
composite {
|
104
|
+
row_layout :horizontal
|
105
|
+
|
106
|
+
label {
|
107
|
+
text 'Caret Offset:'
|
108
|
+
}
|
109
|
+
text {
|
110
|
+
text bind(@presenter, :caret_offset, on_read: ->(o) {"%04d" % [o] })
|
111
|
+
}
|
112
|
+
label {
|
113
|
+
text 'Selection Count:'
|
114
|
+
}
|
115
|
+
text {
|
116
|
+
text bind(@presenter, :selection_count, on_read: ->(o) {"%04d" % [o] })
|
117
|
+
}
|
118
|
+
label {
|
119
|
+
text 'Selection Start:'
|
120
|
+
}
|
121
|
+
text {
|
122
|
+
text bind(@presenter, 'selection.x', on_read: ->(o) {"%04d" % [o] })
|
123
|
+
}
|
124
|
+
label {
|
125
|
+
text 'Selection End:'
|
126
|
+
}
|
127
|
+
text {
|
128
|
+
text bind(@presenter, 'selection.y', on_read: ->(o) {"%04d" % [o] })
|
129
|
+
}
|
130
|
+
label {
|
131
|
+
text 'Top Pixel:'
|
132
|
+
}
|
133
|
+
text {
|
134
|
+
text bind(@presenter, :top_pixel, on_read: ->(o) {"%04d" % [o] })
|
135
|
+
}
|
136
|
+
}
|
137
|
+
}
|
138
|
+
}.open
|
metadata
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-dsl-swt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.17.
|
4
|
+
version: 4.17.7.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-10-
|
11
|
+
date: 2020-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
15
15
|
requirements:
|
16
16
|
- - "~>"
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: 1.0.
|
18
|
+
version: 1.0.2
|
19
19
|
name: glimmer
|
20
20
|
prerelease: false
|
21
21
|
type: :runtime
|
@@ -23,7 +23,7 @@ dependencies:
|
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.0.
|
26
|
+
version: 1.0.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
@@ -345,6 +345,7 @@ files:
|
|
345
345
|
- lib/glimmer/dsl/swt/async_exec_expression.rb
|
346
346
|
- lib/glimmer/dsl/swt/bind_expression.rb
|
347
347
|
- lib/glimmer/dsl/swt/block_property_expression.rb
|
348
|
+
- lib/glimmer/dsl/swt/checkbox_group_selection_data_binding_expression.rb
|
348
349
|
- lib/glimmer/dsl/swt/color_expression.rb
|
349
350
|
- lib/glimmer/dsl/swt/column_properties_expression.rb
|
350
351
|
- lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb
|
@@ -356,6 +357,7 @@ files:
|
|
356
357
|
- lib/glimmer/dsl/swt/dnd_expression.rb
|
357
358
|
- lib/glimmer/dsl/swt/dsl.rb
|
358
359
|
- lib/glimmer/dsl/swt/exec_expression.rb
|
360
|
+
- lib/glimmer/dsl/swt/expand_item_expression.rb
|
359
361
|
- lib/glimmer/dsl/swt/font_expression.rb
|
360
362
|
- lib/glimmer/dsl/swt/image_expression.rb
|
361
363
|
- lib/glimmer/dsl/swt/layout_data_expression.rb
|
@@ -366,6 +368,7 @@ files:
|
|
366
368
|
- lib/glimmer/dsl/swt/message_box_expression.rb
|
367
369
|
- lib/glimmer/dsl/swt/observe_expression.rb
|
368
370
|
- lib/glimmer/dsl/swt/property_expression.rb
|
371
|
+
- lib/glimmer/dsl/swt/radio_group_selection_data_binding_expression.rb
|
369
372
|
- lib/glimmer/dsl/swt/rgb_expression.rb
|
370
373
|
- lib/glimmer/dsl/swt/rgba_expression.rb
|
371
374
|
- lib/glimmer/dsl/swt/shell_expression.rb
|
@@ -384,9 +387,12 @@ files:
|
|
384
387
|
- lib/glimmer/rake_task/scaffold.rb
|
385
388
|
- lib/glimmer/swt/color_proxy.rb
|
386
389
|
- lib/glimmer/swt/cursor_proxy.rb
|
390
|
+
- lib/glimmer/swt/custom/checkbox_group.rb
|
387
391
|
- lib/glimmer/swt/custom/code_text.rb
|
392
|
+
- lib/glimmer/swt/custom/radio_group.rb
|
388
393
|
- lib/glimmer/swt/display_proxy.rb
|
389
394
|
- lib/glimmer/swt/dnd_proxy.rb
|
395
|
+
- lib/glimmer/swt/expand_item_proxy.rb
|
390
396
|
- lib/glimmer/swt/font_proxy.rb
|
391
397
|
- lib/glimmer/swt/image_proxy.rb
|
392
398
|
- lib/glimmer/swt/layout_data_proxy.rb
|
@@ -398,6 +404,7 @@ files:
|
|
398
404
|
- lib/glimmer/swt/scrolled_composite_proxy.rb
|
399
405
|
- lib/glimmer/swt/shell_proxy.rb
|
400
406
|
- lib/glimmer/swt/style_constantizable.rb
|
407
|
+
- lib/glimmer/swt/styled_text_proxy.rb
|
401
408
|
- lib/glimmer/swt/swt_proxy.rb
|
402
409
|
- lib/glimmer/swt/tab_item_proxy.rb
|
403
410
|
- lib/glimmer/swt/table_column_proxy.rb
|
@@ -419,18 +426,24 @@ files:
|
|
419
426
|
- samples/elaborate/tic_tac_toe/cell.rb
|
420
427
|
- samples/elaborate/user_profile.rb
|
421
428
|
- samples/hello/hello_browser.rb
|
429
|
+
- samples/hello/hello_checkbox.rb
|
430
|
+
- samples/hello/hello_checkbox_group.rb
|
422
431
|
- samples/hello/hello_combo.rb
|
423
432
|
- samples/hello/hello_computed.rb
|
424
433
|
- samples/hello/hello_computed/contact.rb
|
425
434
|
- samples/hello/hello_custom_shell.rb
|
426
435
|
- samples/hello/hello_custom_widget.rb
|
427
436
|
- samples/hello/hello_drag_and_drop.rb
|
437
|
+
- samples/hello/hello_expand_bar.rb
|
428
438
|
- samples/hello/hello_list_multi_selection.rb
|
429
439
|
- samples/hello/hello_list_single_selection.rb
|
430
440
|
- samples/hello/hello_menu_bar.rb
|
431
441
|
- samples/hello/hello_message_box.rb
|
432
442
|
- samples/hello/hello_pop_up_context_menu.rb
|
443
|
+
- samples/hello/hello_radio.rb
|
444
|
+
- samples/hello/hello_radio_group.rb
|
433
445
|
- samples/hello/hello_sash_form.rb
|
446
|
+
- samples/hello/hello_styled_text.rb
|
434
447
|
- samples/hello/hello_tab.rb
|
435
448
|
- samples/hello/hello_world.rb
|
436
449
|
- vendor/swt/linux/swt.jar
|