glimmer-dsl-swt 4.17.3.0 → 4.17.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 Person
23
+ attr_accessor :gender, :age_group
24
+
25
+ def initialize
26
+ reset
27
+ end
28
+
29
+ def gender_options
30
+ ['Male', 'Female']
31
+ end
32
+
33
+ def age_group_options
34
+ ['Child', 'Teen', 'Adult', 'Senior']
35
+ end
36
+
37
+ def reset
38
+ self.gender = nil
39
+ self.age_group = 'Adult'
40
+ end
41
+ end
42
+
43
+ class HelloRadioGroup
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,137 @@
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 SashFormPresenter
23
+ include Glimmer
24
+
25
+ attr_accessor :sash_width, :orientation, :orientation_style
26
+
27
+ def initialize
28
+ @sash_width = 10
29
+ self.orientation = 'horizontal'
30
+ end
31
+
32
+ def orientation_options
33
+ ['horizontal', 'vertical']
34
+ end
35
+
36
+ def orientation=(value)
37
+ @orientation = value
38
+ self.orientation_style = swt(@orientation)
39
+ end
40
+ end
41
+
42
+ @presenter = SashFormPresenter.new
43
+
44
+ include Glimmer
45
+
46
+ shell {
47
+ grid_layout 1, false
48
+ minimum_size 740, 0
49
+ text 'Hello, Sash Form!'
50
+
51
+ @sash_form = sash_form {
52
+ layout_data(:fill, :fill, true, true) {
53
+ height_hint 200
54
+ }
55
+ sash_width bind(@presenter, :sash_width)
56
+ orientation bind(@presenter, :orientation_style)
57
+ weights 1, 2
58
+
59
+ @green_label = label {
60
+ text 'Hello, (resize >>)'
61
+ background :dark_green
62
+ foreground :white
63
+ font height: 30
64
+ }
65
+
66
+ @red_label = label {
67
+ text '(<< resize) Sash Form!'
68
+ background :red
69
+ foreground :white
70
+ font height: 30
71
+ }
72
+ }
73
+
74
+ composite {
75
+ layout_data(:fill, :fill, true, true)
76
+ grid_layout 2, true
77
+
78
+ label {
79
+ layout_data(:right, :center, true, false)
80
+ text 'Sash Width:'
81
+ font height: 16
82
+ }
83
+ spinner {
84
+ layout_data(:fill, :center, true, false) {
85
+ width_hint 100
86
+ }
87
+ selection bind(@presenter, :sash_width)
88
+ font height: 16
89
+ }
90
+
91
+ label {
92
+ layout_data(:right, :center, true, false)
93
+ text 'Orientation:'
94
+ font height: 16
95
+ }
96
+ combo(:read_only, :border) {
97
+ layout_data(:fill, :center, true, false) {
98
+ width_hint 100
99
+ }
100
+ selection bind(@presenter, :orientation)
101
+ font height: 16
102
+ }
103
+
104
+ button {
105
+ layout_data(:fill, :center, true, false)
106
+ text 'Maximize Green Label'
107
+ foreground :dark_green
108
+ font height: 16
109
+
110
+ on_widget_selected {
111
+ @sash_form.maximized_control = @green_label.swt_widget
112
+ }
113
+ }
114
+ button {
115
+ layout_data(:fill, :center, true, false)
116
+ text 'Maximize Red Label'
117
+ foreground :red
118
+ font height: 16
119
+
120
+ on_widget_selected {
121
+ @sash_form.maximized_control = @red_label.swt_widget
122
+ }
123
+ }
124
+
125
+ button {
126
+ layout_data(:fill, :center, true, false) {
127
+ horizontal_span 2
128
+ }
129
+ text 'Maximize None'
130
+ font height: 16
131
+
132
+ on_widget_selected {
133
+ @sash_form.maximized_control = nil
134
+ }
135
+ }
136
+ }
137
+ }.open
@@ -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.3.0
4
+ version: 4.17.6.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-18 00:00:00.000000000 Z
11
+ date: 2020-10-28 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.1
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.1
26
+ version: 1.0.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
@@ -185,21 +185,21 @@ dependencies:
185
185
  requirements:
186
186
  - - ">="
187
187
  - !ruby/object:Gem::Version
188
- version: 0.6.0
188
+ version: 3.23.0
189
189
  - - "<"
190
190
  - !ruby/object:Gem::Version
191
- version: 2.0.0
192
- name: tty-markdown
191
+ version: 4.0.0
192
+ name: rouge
193
193
  prerelease: false
194
194
  type: :runtime
195
195
  version_requirements: !ruby/object:Gem::Requirement
196
196
  requirements:
197
197
  - - ">="
198
198
  - !ruby/object:Gem::Version
199
- version: 0.6.0
199
+ version: 3.23.0
200
200
  - - "<"
201
201
  - !ruby/object:Gem::Version
202
- version: 2.0.0
202
+ version: 4.0.0
203
203
  - !ruby/object:Gem::Dependency
204
204
  requirement: !ruby/object:Gem::Requirement
205
205
  requirements:
@@ -356,6 +356,7 @@ files:
356
356
  - lib/glimmer/dsl/swt/dnd_expression.rb
357
357
  - lib/glimmer/dsl/swt/dsl.rb
358
358
  - lib/glimmer/dsl/swt/exec_expression.rb
359
+ - lib/glimmer/dsl/swt/expand_item_expression.rb
359
360
  - lib/glimmer/dsl/swt/font_expression.rb
360
361
  - lib/glimmer/dsl/swt/image_expression.rb
361
362
  - lib/glimmer/dsl/swt/layout_data_expression.rb
@@ -366,6 +367,7 @@ files:
366
367
  - lib/glimmer/dsl/swt/message_box_expression.rb
367
368
  - lib/glimmer/dsl/swt/observe_expression.rb
368
369
  - lib/glimmer/dsl/swt/property_expression.rb
370
+ - lib/glimmer/dsl/swt/radio_group_selection_data_binding_expression.rb
369
371
  - lib/glimmer/dsl/swt/rgb_expression.rb
370
372
  - lib/glimmer/dsl/swt/rgba_expression.rb
371
373
  - lib/glimmer/dsl/swt/shell_expression.rb
@@ -381,12 +383,14 @@ files:
381
383
  - lib/glimmer/rake_task.rb
382
384
  - lib/glimmer/rake_task/list.rb
383
385
  - lib/glimmer/rake_task/package.rb
384
- - lib/glimmer/rake_task/sample.rb
385
386
  - lib/glimmer/rake_task/scaffold.rb
386
387
  - lib/glimmer/swt/color_proxy.rb
387
388
  - lib/glimmer/swt/cursor_proxy.rb
389
+ - lib/glimmer/swt/custom/code_text.rb
390
+ - lib/glimmer/swt/custom/radio_group.rb
388
391
  - lib/glimmer/swt/display_proxy.rb
389
392
  - lib/glimmer/swt/dnd_proxy.rb
393
+ - lib/glimmer/swt/expand_item_proxy.rb
390
394
  - lib/glimmer/swt/font_proxy.rb
391
395
  - lib/glimmer/swt/image_proxy.rb
392
396
  - lib/glimmer/swt/layout_data_proxy.rb
@@ -394,9 +398,11 @@ files:
394
398
  - lib/glimmer/swt/menu_proxy.rb
395
399
  - lib/glimmer/swt/message_box_proxy.rb
396
400
  - lib/glimmer/swt/packages.rb
401
+ - lib/glimmer/swt/sash_form_proxy.rb
397
402
  - lib/glimmer/swt/scrolled_composite_proxy.rb
398
403
  - lib/glimmer/swt/shell_proxy.rb
399
404
  - lib/glimmer/swt/style_constantizable.rb
405
+ - lib/glimmer/swt/styled_text_proxy.rb
400
406
  - lib/glimmer/swt/swt_proxy.rb
401
407
  - lib/glimmer/swt/tab_item_proxy.rb
402
408
  - lib/glimmer/swt/table_column_proxy.rb
@@ -412,22 +418,29 @@ files:
412
418
  - samples/elaborate/contact_manager/contact_manager_presenter.rb
413
419
  - samples/elaborate/contact_manager/contact_repository.rb
414
420
  - samples/elaborate/login.rb
421
+ - samples/elaborate/meta_sample.rb
415
422
  - samples/elaborate/tic_tac_toe.rb
416
423
  - samples/elaborate/tic_tac_toe/board.rb
417
424
  - samples/elaborate/tic_tac_toe/cell.rb
418
425
  - samples/elaborate/user_profile.rb
419
426
  - samples/hello/hello_browser.rb
427
+ - samples/hello/hello_checkbox.rb
420
428
  - samples/hello/hello_combo.rb
421
429
  - samples/hello/hello_computed.rb
422
430
  - samples/hello/hello_computed/contact.rb
423
431
  - samples/hello/hello_custom_shell.rb
424
432
  - samples/hello/hello_custom_widget.rb
425
433
  - samples/hello/hello_drag_and_drop.rb
434
+ - samples/hello/hello_expand_bar.rb
426
435
  - samples/hello/hello_list_multi_selection.rb
427
436
  - samples/hello/hello_list_single_selection.rb
428
437
  - samples/hello/hello_menu_bar.rb
429
438
  - samples/hello/hello_message_box.rb
430
439
  - samples/hello/hello_pop_up_context_menu.rb
440
+ - samples/hello/hello_radio.rb
441
+ - samples/hello/hello_radio_group.rb
442
+ - samples/hello/hello_sash_form.rb
443
+ - samples/hello/hello_styled_text.rb
431
444
  - samples/hello/hello_tab.rb
432
445
  - samples/hello/hello_world.rb
433
446
  - vendor/swt/linux/swt.jar