glimmer-dsl-swt 4.22.0.0 → 4.22.2.0

Sign up to get free protection for your applications and to get access to all the features.
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