glimmer-dsl-swt 4.22.0.0 → 4.22.2.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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +207 -169
  3. data/README.md +10 -10
  4. data/RUBY_VERSION +1 -1
  5. data/VERSION +1 -1
  6. data/docs/reference/GLIMMER_COMMAND.md +21 -7
  7. data/docs/reference/GLIMMER_CONFIGURATION.md +14 -3
  8. data/docs/reference/GLIMMER_GIRB.md +1 -1
  9. data/docs/reference/GLIMMER_GUI_DSL_SYNTAX.md +743 -113
  10. data/docs/reference/GLIMMER_SAMPLES.md +22 -8
  11. data/glimmer-dsl-swt.gemspec +0 -0
  12. data/lib/ext/glimmer/config.rb +41 -24
  13. data/lib/glimmer/data_binding/observable_widget.rb +6 -6
  14. data/lib/glimmer/data_binding/widget_binding.rb +2 -1
  15. data/lib/glimmer/dsl/swt/dsl.rb +1 -1
  16. data/lib/glimmer/dsl/swt/observe_expression.rb +2 -1
  17. data/lib/glimmer/dsl/swt/shape_expression.rb +1 -0
  18. data/lib/glimmer/dsl/swt/shine_data_binding_expression.rb +3 -8
  19. data/lib/glimmer/dsl/swt/transform_expression.rb +1 -1
  20. data/lib/glimmer/launcher.rb +16 -15
  21. data/lib/glimmer/rake_task/scaffold.rb +5 -16
  22. data/lib/glimmer/swt/color_proxy.rb +5 -5
  23. data/lib/glimmer/swt/custom/drawable.rb +4 -0
  24. data/lib/glimmer/swt/custom/shape/line.rb +0 -1
  25. data/lib/glimmer/swt/custom/shape/path.rb +2 -2
  26. data/lib/glimmer/swt/custom/shape/path_segment.rb +2 -2
  27. data/lib/glimmer/swt/custom/shape/point.rb +8 -1
  28. data/lib/glimmer/swt/custom/shape.rb +171 -69
  29. data/lib/glimmer/swt/display_proxy.rb +15 -10
  30. data/lib/glimmer/swt/image_proxy.rb +5 -5
  31. data/lib/glimmer/swt/message_box_proxy.rb +5 -5
  32. data/lib/glimmer/swt/shape_listener_proxy.rb +55 -0
  33. data/lib/glimmer/swt/shell_proxy.rb +1 -0
  34. data/lib/glimmer/swt/transform_proxy.rb +3 -3
  35. data/lib/glimmer/swt/tray_proxy.rb +4 -4
  36. data/lib/glimmer/swt/widget_proxy.rb +5 -7
  37. data/lib/glimmer/ui/custom_shape.rb +34 -10
  38. data/lib/glimmer/ui/custom_widget.rb +3 -8
  39. data/lib/glimmer-dsl-swt.rb +6 -2
  40. data/samples/elaborate/klondike_solitaire/model/column_pile.rb +0 -1
  41. data/samples/elaborate/klondike_solitaire/view/column_pile.rb +3 -16
  42. data/samples/elaborate/klondike_solitaire/view/dealing_pile.rb +1 -1
  43. data/samples/elaborate/klondike_solitaire/view/dealt_pile.rb +12 -5
  44. data/samples/elaborate/klondike_solitaire/view/empty_playing_card.rb +2 -1
  45. data/samples/elaborate/klondike_solitaire/view/foundation_pile.rb +2 -2
  46. data/samples/elaborate/klondike_solitaire/view/hidden_playing_card.rb +2 -2
  47. data/samples/elaborate/klondike_solitaire/view/klondike_solitaire_menu_bar.rb +60 -0
  48. data/samples/elaborate/klondike_solitaire/view/playing_card.rb +3 -2
  49. data/samples/elaborate/klondike_solitaire.rb +13 -55
  50. data/samples/elaborate/mandelbrot_fractal.rb +3 -1
  51. data/samples/elaborate/quarto/model/game.rb +124 -0
  52. data/samples/elaborate/quarto/model/piece/cube.rb +31 -0
  53. data/samples/elaborate/quarto/model/piece/cylinder.rb +31 -0
  54. data/samples/elaborate/quarto/model/piece.rb +70 -0
  55. data/samples/elaborate/quarto/view/available_pieces_area.rb +72 -0
  56. data/samples/elaborate/quarto/view/board.rb +65 -0
  57. data/samples/elaborate/quarto/view/cell.rb +85 -0
  58. data/samples/elaborate/quarto/view/cube.rb +73 -0
  59. data/samples/elaborate/quarto/view/cylinder.rb +72 -0
  60. data/samples/elaborate/quarto/view/message_box_panel.rb +114 -0
  61. data/samples/elaborate/quarto/view/piece.rb +56 -0
  62. data/samples/elaborate/quarto/view/selected_piece_area.rb +69 -0
  63. data/samples/elaborate/quarto.rb +188 -0
  64. data/samples/hello/hello_canvas_data_binding.rb +7 -7
  65. data/samples/hello/hello_custom_widget.rb +23 -5
  66. metadata +35 -40
  67. data/bin/glimmer_runner.rb +0 -4
@@ -0,0 +1,69 @@
1
+ # Copyright (c) 2007-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
+
22
+ # require_relative 'piece'
23
+
24
+ class Quarto
25
+ module View
26
+ class SelectedPieceArea
27
+ include Glimmer::UI::CustomShape
28
+
29
+ options :game
30
+ option :location_x, default: 0
31
+ option :location_y, default: 0
32
+
33
+ attr_reader :selected_piece
34
+
35
+ body {
36
+ rectangle(location_x, location_y, PIECES_AREA_WIDTH, SELECTED_PIECE_AREA_HEIGHT) {
37
+ background COLOR_WOOD
38
+
39
+ rectangle(0, 0, :max, :max, round: true) { # border
40
+ foreground :black
41
+ line_width 2
42
+ }
43
+
44
+ text('Selected Piece', 15, 10) {
45
+ font height: 18, style: :bold
46
+ }
47
+
48
+ on_drop do |drop_event|
49
+ dragged_piece = drop_event.dragged_shape
50
+ if dragged_piece.parent.get_data('custom_shape').is_a?(AvailablePiecesArea)
51
+ model = dragged_piece.get_data('custom_shape').model
52
+ dragged_piece.dispose
53
+ body_root.content {
54
+ @selected_piece = piece(game: game, model: model, location_x: 15, location_y: 15 + 25)
55
+ }
56
+ game.select_piece(model)
57
+ else
58
+ drop_event.doit = false
59
+ end
60
+ end
61
+ }
62
+ }
63
+
64
+ def reset_selected_piece
65
+ @selected_piece&.dispose
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,188 @@
1
+ # Copyright (c) 2007-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
+
22
+ require 'glimmer-dsl-swt'
23
+ require 'yaml'
24
+
25
+ require_relative 'quarto/model/game'
26
+ require_relative 'quarto/view/board'
27
+ require_relative 'quarto/view/available_pieces_area'
28
+ require_relative 'quarto/view/selected_piece_area'
29
+ require_relative 'quarto/view/message_box_panel'
30
+
31
+ class Quarto
32
+ include Glimmer::UI::CustomShell
33
+
34
+ BOARD_DIAMETER = 430
35
+ PIECES_AREA_WIDTH = 252
36
+ AVAILABLE_PIECES_AREA_HEIGHT = 295
37
+ SELECTED_PIECE_AREA_HEIGHT = 124
38
+ CELL_DIAMETER = 68
39
+ CELL_LINE_WIDTH = 5
40
+ CELL_MARGIN = 7
41
+ SHELL_MARGIN = 15
42
+ AREA_MARGIN = 10
43
+ ROW_COUNT = 4
44
+ COLUMN_COUNT = 4
45
+ COLOR_WOOD = rgb(239, 196, 156)
46
+ COLOR_AREA = rgb(206, 188, 170)
47
+ COLOR_LIGHT_WOOD = rgb(254, 187, 120)
48
+ COLOR_DARK_WOOD = rgb(204, 108, 58)
49
+ FILE_QUARTO_CONFIG = File.join(Dir.home, '.quarto')
50
+
51
+ before_body do
52
+ load_quarto_config
53
+ @game = Model::Game.new
54
+
55
+ observe(@game, :current_move) do |new_move|
56
+ perform_current_move
57
+ end
58
+
59
+ observe(@game, :over) do |game_over_status|
60
+ if game_over_status
61
+ game_over_message = "Game Over! "
62
+ game_over_message += @game.winner_player_number.nil? ? "Draw!" : "Player #{@game.winner_player_number} wins!"
63
+ body_root.content {
64
+ @open_message_box_panel&.close
65
+ @open_message_box_panel = message_box_panel(
66
+ message: game_over_message,
67
+ background_color: COLOR_LIGHT_WOOD,
68
+ text_font: {height: 16}
69
+ ) {
70
+ on_closed do
71
+ restart_game
72
+ end
73
+ }
74
+ }
75
+ end
76
+ end
77
+ end
78
+
79
+ after_body do
80
+ perform_current_move
81
+ end
82
+
83
+ body {
84
+ shell(:shell_trim, (:double_buffered unless OS.mac?)) {
85
+ text 'Glimmer Quarto'
86
+ minimum_size BOARD_DIAMETER + AREA_MARGIN + PIECES_AREA_WIDTH + SHELL_MARGIN*2 + (OS.linux? ? 52 : (OS.windows? ? 16 : 0)), BOARD_DIAMETER + 24 + SHELL_MARGIN*2 + (OS.linux? ? 96 : (OS.windows? ? 32 : 0))
87
+ maximum_size BOARD_DIAMETER + AREA_MARGIN + PIECES_AREA_WIDTH + SHELL_MARGIN*2 + (OS.linux? ? 52 : (OS.windows? ? 16 : 0)), BOARD_DIAMETER + 24 + SHELL_MARGIN*2 + (OS.linux? ? 96 : (OS.windows? ? 32 : 0))
88
+ background COLOR_WOOD
89
+
90
+ quarto_menu_bar
91
+
92
+ @board = board(game: @game, location_x: SHELL_MARGIN, location_y: SHELL_MARGIN)
93
+
94
+ @available_pieces_area = available_pieces_area(game: @game, location_x: SHELL_MARGIN + BOARD_DIAMETER + AREA_MARGIN, location_y: SHELL_MARGIN)
95
+ @selected_piece_area = selected_piece_area(game: @game, location_x: SHELL_MARGIN + BOARD_DIAMETER + AREA_MARGIN, location_y: SHELL_MARGIN + AVAILABLE_PIECES_AREA_HEIGHT + AREA_MARGIN)
96
+ }
97
+ }
98
+
99
+ def quarto_menu_bar
100
+ menu_bar {
101
+ menu {
102
+ text 'Game'
103
+
104
+ menu_item {
105
+ text 'Restart'
106
+
107
+ on_widget_selected do
108
+ restart_game
109
+ end
110
+ }
111
+
112
+ menu_item {
113
+ text 'Exit'
114
+
115
+ on_widget_selected do
116
+ exit(0)
117
+ end
118
+ }
119
+ }
120
+ menu {
121
+ text 'Help'
122
+
123
+ menu_item(:check) {
124
+ text 'Help Pop-Ups Enabled'
125
+ selection <=> [self, :help_pop_ups_enabled]
126
+ }
127
+ }
128
+ }
129
+ end
130
+
131
+ def help_pop_ups_enabled
132
+ @quarto_config[:help_pop_ups_enabled]
133
+ end
134
+ alias help_pop_ups_enabled? help_pop_ups_enabled
135
+
136
+ def help_pop_ups_enabled=(new_value)
137
+ @quarto_config[:help_pop_ups_enabled] = new_value
138
+ save_quarto_config
139
+ end
140
+
141
+ def load_quarto_config
142
+ @quarto_config = YAML.load(File.read(FILE_QUARTO_CONFIG)) rescue {}
143
+ @quarto_config[:help_pop_ups_enabled] = true if @quarto_config[:help_pop_ups_enabled].nil?
144
+ @quarto_config
145
+ end
146
+
147
+ def save_quarto_config
148
+ File.write(FILE_QUARTO_CONFIG, YAML.dump(@quarto_config))
149
+ rescue => e
150
+ puts "Unable to save quarto config file to: #{@quarto_config}"
151
+ end
152
+
153
+ def perform_current_move
154
+ verbiage = nil
155
+ case @game.current_move
156
+ when :select_piece
157
+ @available_pieces_area.pieces.each {|piece| piece.drag_source = true}
158
+ verbiage = "Player #{@game.current_player_number} must drag a piece to the Selected Piece\narea for the other player to place on the board!"
159
+ when :place_piece
160
+ @available_pieces_area.pieces.each {|piece| piece.drag_source = false}
161
+ @selected_piece_area.selected_piece.drag_source = true
162
+ verbiage = "Player #{@game.current_player_number} must drag the selected piece to the board\nin order to place it!"
163
+ end
164
+ body_root.text = "Glimmer Quarto | Player #{@game.current_player_number} #{@game.current_move.to_s.split('_').map(&:capitalize).join(' ')}"
165
+ if help_pop_ups_enabled?
166
+ async_exec do
167
+ body_root.content {
168
+ @open_message_box_panel&.close
169
+ @open_message_box_panel = message_box_panel(
170
+ message: verbiage,
171
+ background_color: COLOR_LIGHT_WOOD,
172
+ text_font: {height: 16}
173
+ )
174
+ }
175
+ body_root.redraw
176
+ end
177
+ end
178
+ end
179
+
180
+ def restart_game
181
+ @available_pieces_area.reset_pieces
182
+ @selected_piece_area.reset_selected_piece
183
+ @board.reset_cells
184
+ @game.restart
185
+ end
186
+ end
187
+
188
+ Quarto.launch
@@ -195,13 +195,13 @@ class HelloCanvasDataBinding
195
195
  background :white
196
196
 
197
197
  line {
198
- x1 <=> [self, :x1_value]
199
- y1 <=> [self, :y1_value]
200
- x2 <=> [self, :x2_value]
201
- y2 <=> [self, :y2_value]
202
- foreground <=> [self, :foreground_value, computed_by: [:foreground_red, :foreground_green, :foreground_blue]]
203
- line_width <=> [self, :line_width_value]
204
- line_style <=> [self, :line_style_value]
198
+ x1 <= [self, :x1_value]
199
+ y1 <= [self, :y1_value]
200
+ x2 <= [self, :x2_value]
201
+ y2 <= [self, :y2_value]
202
+ foreground <= [self, :foreground_value, computed_by: [:foreground_red, :foreground_green, :foreground_blue]]
203
+ line_width <= [self, :line_width_value]
204
+ line_style <= [self, :line_style_value]
205
205
  }
206
206
  }
207
207
  }
@@ -32,11 +32,24 @@ class GreetingLabel
32
32
  option :greeting, default: 'Hello'
33
33
 
34
34
  # internal attribute (not a custom widget option)
35
- attr_accessor :color
35
+ attr_accessor :label_color
36
+
37
+ def can_handle_observation_request?(event, &block)
38
+ event.to_s == 'on_color_changed' || super
39
+ end
40
+
41
+ def handle_observation_request(event, &block)
42
+ if event.to_s == 'on_color_changed'
43
+ @color_changed_handlers ||= []
44
+ @color_changed_handlers << block
45
+ else
46
+ super
47
+ end
48
+ end
36
49
 
37
50
  before_body do
38
51
  @font = {height: 24, style: :bold}
39
- @color = :black
52
+ @label_color = :black
40
53
  end
41
54
 
42
55
  after_body do
@@ -44,7 +57,8 @@ class GreetingLabel
44
57
 
45
58
  Thread.new {
46
59
  colors.cycle { |color|
47
- self.color = color
60
+ self.label_color = color
61
+ @color_changed_handlers&.each {|handler| handler.call(color)}
48
62
  sleep(1)
49
63
  }
50
64
  }
@@ -55,7 +69,7 @@ class GreetingLabel
55
69
  label(swt_style) {
56
70
  text "#{greeting}, #{name}!"
57
71
  font @font
58
- foreground <=> [self, :color]
72
+ foreground <=> [self, :label_color]
59
73
  }
60
74
  }
61
75
 
@@ -82,5 +96,9 @@ shell {
82
96
  }
83
97
 
84
98
  # the colors option cycles between colors for the label foreground every second
85
- greeting_label(:center, name: 'Mary', greeting: 'Aloha', colors: [:red, :dark_green, :blue])
99
+ greeting_label(:center, name: 'Mary', greeting: 'Aloha', colors: [:red, :dark_green, :blue]) {
100
+ on_color_changed do |color|
101
+ puts "Label color changed: #{color}"
102
+ end
103
+ }
86
104
  }.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.22.0.0
4
+ version: 4.22.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-11 00:00:00.000000000 Z
11
+ date: 2022-01-21 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: 2.5.4
18
+ version: 2.5.5
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: 2.5.4
26
+ version: 2.5.5
27
27
  - !ruby/object:Gem::Dependency
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
@@ -144,26 +144,6 @@ dependencies:
144
144
  - - "<"
145
145
  - !ruby/object:Gem::Version
146
146
  version: 2.0.0
147
- - !ruby/object:Gem::Dependency
148
- requirement: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: 2.3.0
153
- - - "<"
154
- - !ruby/object:Gem::Version
155
- version: 3.0.0
156
- name: logging
157
- prerelease: false
158
- type: :runtime
159
- version_requirements: !ruby/object:Gem::Requirement
160
- requirements:
161
- - - ">="
162
- - !ruby/object:Gem::Version
163
- version: 2.3.0
164
- - - "<"
165
- - !ruby/object:Gem::Version
166
- version: 3.0.0
167
147
  - !ruby/object:Gem::Dependency
168
148
  requirement: !ruby/object:Gem::Requirement
169
149
  requirements:
@@ -364,21 +344,22 @@ dependencies:
364
344
  version: 0.7.0
365
345
  description: Glimmer DSL for SWT (JRuby Desktop Development GUI Framework) is a native-GUI
366
346
  cross-platform desktop development library written in JRuby, an OS-threaded faster
367
- JVM version of Ruby. Glimmer's main innovation is a declarative Ruby DSL that enables
368
- productive and efficient authoring of desktop application user-interfaces by relying
369
- on the robust Eclipse SWT library. Glimmer additionally innovates by having built-in
370
- data-binding support, which greatly facilitates synchronizing the GUI with domain
371
- models, thus achieving true decoupling of object oriented components and enabling
372
- developers to solve business problems (test-first) without worrying about GUI concerns,
373
- or alternatively drive development GUI-first, and then write clean business models
374
- (test-first) afterwards. Not only does Glimmer provide a large set of GUI widgets,
375
- but it also supports drawing Canvas Graphics like Shapes and Animations. To get
376
- started quickly, Glimmer offers scaffolding options for Apps, Gems, and Custom Widgets.
377
- Glimmer also includes native-executable packaging support, sorely lacking in other
378
- libraries, thus enabling the delivery of desktop apps written in Ruby as truly native
379
- DMG/PKG/APP files on the Mac, MSI/EXE files on Windows, and DEB/RPM files on Linux.
380
- Glimmer was the first Ruby gem to bring SWT (Standard Widget Toolkit) to Ruby, thanks
381
- to creator Andy Maleh, EclipseCon/EclipseWorld/RubyConf speaker.
347
+ JVM version of Ruby. It includes SWT 4.22 (released November 24, 2021). Glimmer's
348
+ main innovation is a declarative Ruby DSL that enables productive and efficient
349
+ authoring of desktop application user-interfaces by relying on the robust Eclipse
350
+ SWT library. Glimmer additionally innovates by having built-in data-binding support,
351
+ which greatly facilitates synchronizing the GUI with domain models, thus achieving
352
+ true decoupling of object oriented components and enabling developers to solve business
353
+ problems (test-first) without worrying about GUI concerns, or alternatively drive
354
+ development GUI-first, and then write clean business models (test-first) afterwards.
355
+ Not only does Glimmer provide a large set of GUI widgets, but it also supports drawing
356
+ Canvas Graphics like Shapes and Animations. To get started quickly, Glimmer offers
357
+ scaffolding options for Apps, Gems, and Custom Widgets. Glimmer also includes native-executable
358
+ packaging support, sorely lacking in other libraries, thus enabling the delivery
359
+ of desktop apps written in Ruby as truly native DMG/PKG/APP files on the Mac, MSI/EXE
360
+ files on Windows, and DEB/RPM files on Linux. Glimmer was the first Ruby gem to
361
+ bring SWT (Standard Widget Toolkit) to Ruby, thanks to creator Andy Maleh, EclipseCon/EclipseWorld/RubyConf
362
+ speaker.
382
363
  email: andy.am@gmail.com
383
364
  executables:
384
365
  - glimmer
@@ -404,7 +385,6 @@ files:
404
385
  - bin/girb_runner.rb
405
386
  - bin/glimmer
406
387
  - bin/glimmer-setup
407
- - bin/glimmer_runner.rb
408
388
  - docs/reference/GLIMMER_COMMAND.md
409
389
  - docs/reference/GLIMMER_CONFIGURATION.md
410
390
  - docs/reference/GLIMMER_GIRB.md
@@ -522,6 +502,7 @@ files:
522
502
  - lib/glimmer/swt/proxy_properties.rb
523
503
  - lib/glimmer/swt/sash_form_proxy.rb
524
504
  - lib/glimmer/swt/scrolled_composite_proxy.rb
505
+ - lib/glimmer/swt/shape_listener_proxy.rb
525
506
  - lib/glimmer/swt/shell_proxy.rb
526
507
  - lib/glimmer/swt/style_constantizable.rb
527
508
  - lib/glimmer/swt/styled_text_proxy.rb
@@ -591,6 +572,7 @@ files:
591
572
  - samples/elaborate/klondike_solitaire/view/empty_playing_card.rb
592
573
  - samples/elaborate/klondike_solitaire/view/foundation_pile.rb
593
574
  - samples/elaborate/klondike_solitaire/view/hidden_playing_card.rb
575
+ - samples/elaborate/klondike_solitaire/view/klondike_solitaire_menu_bar.rb
594
576
  - samples/elaborate/klondike_solitaire/view/playing_card.rb
595
577
  - samples/elaborate/klondike_solitaire/view/tableau.rb
596
578
  - samples/elaborate/login.rb
@@ -601,6 +583,19 @@ files:
601
583
  - samples/elaborate/parking/model/parking_floor.rb
602
584
  - samples/elaborate/parking/model/parking_presenter.rb
603
585
  - samples/elaborate/parking/model/parking_spot.rb
586
+ - samples/elaborate/quarto.rb
587
+ - samples/elaborate/quarto/model/game.rb
588
+ - samples/elaborate/quarto/model/piece.rb
589
+ - samples/elaborate/quarto/model/piece/cube.rb
590
+ - samples/elaborate/quarto/model/piece/cylinder.rb
591
+ - samples/elaborate/quarto/view/available_pieces_area.rb
592
+ - samples/elaborate/quarto/view/board.rb
593
+ - samples/elaborate/quarto/view/cell.rb
594
+ - samples/elaborate/quarto/view/cube.rb
595
+ - samples/elaborate/quarto/view/cylinder.rb
596
+ - samples/elaborate/quarto/view/message_box_panel.rb
597
+ - samples/elaborate/quarto/view/piece.rb
598
+ - samples/elaborate/quarto/view/selected_piece_area.rb
604
599
  - samples/elaborate/stock_ticker.rb
605
600
  - samples/elaborate/tetris.rb
606
601
  - samples/elaborate/tetris/model/block.rb
@@ -1,4 +0,0 @@
1
- require_relative '../lib/glimmer-dsl-swt'
2
- require_relative '../lib/glimmer/launcher'
3
-
4
- Glimmer::Launcher.new(ARGV).launch