glimmer-dsl-gtk 0.0.5 → 0.0.9

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.
@@ -0,0 +1,43 @@
1
+ require 'glimmer-dsl-gtk'
2
+
3
+ include Glimmer
4
+
5
+ window {
6
+ title 'Fill Style'
7
+ default_size 256, 256
8
+
9
+ drawing_area {
10
+ paint 242.25, 242.25, 242.25
11
+
12
+ path {
13
+ rectangle 12, 12, 232, 70
14
+ path { # sub-path
15
+ arc 64, 64, 40, 0, 2*Math::PI
16
+ }
17
+ path { # sub-path
18
+ arc_negative 192, 64, 40, 0, -2*Math::PI
19
+ }
20
+
21
+ fill_rule Cairo::FILL_RULE_EVEN_ODD
22
+ line_width 6
23
+ fill 0, 178.5, 0
24
+ stroke 0, 0, 0
25
+ }
26
+
27
+ path {
28
+ rectangle 12, 12, 232, 70
29
+ path { # sub-path
30
+ arc 64, 64, 40, 0, 2*Math::PI
31
+ }
32
+ path { # sub-path
33
+ arc_negative 192, 64, 40, 0, -2*Math::PI
34
+ }
35
+
36
+ translate 0, 128
37
+ fill_rule Cairo::FILL_RULE_WINDING
38
+ line_width 6
39
+ fill 0, 0, 229.5
40
+ stroke 0, 0, 0
41
+ }
42
+ }
43
+ }.show
@@ -0,0 +1,31 @@
1
+ require 'glimmer-dsl-gtk'
2
+
3
+ include Glimmer
4
+
5
+ window {
6
+ title 'Gradient'
7
+ default_size 256, 256
8
+
9
+ drawing_area {
10
+ paint 242.25, 242.25, 242.25
11
+
12
+ # Create the Linear Pattern
13
+ rectangle(0, 0, 256, 256) {
14
+ pat = Cairo::LinearPattern.new(0.0, 0.0, 0.0, 256.0)
15
+ pat.add_color_stop_rgba(1, 0, 0, 0, 1)
16
+ pat.add_color_stop_rgba(0, 1, 1, 1, 1)
17
+
18
+ fill pat
19
+ }
20
+
21
+ # Create the radial pattern
22
+ arc(128.0, 128.0, 76.8, 0, 2 * Math::PI) {
23
+ pat = Cairo::RadialPattern.new(115.2, 102.4, 25.6,
24
+ 102.4, 102.4, 128.0)
25
+ pat.add_color_stop_rgba(0, 1, 1, 1, 1)
26
+ pat.add_color_stop_rgba(1, 0, 0, 0, 1)
27
+
28
+ fill pat
29
+ }
30
+ }
31
+ }.show
@@ -0,0 +1,28 @@
1
+ require 'glimmer-dsl-gtk'
2
+ require 'net/http'
3
+
4
+ image_content = Net::HTTP.get(URI('https://raw.githubusercontent.com/AndyObtiva/glimmer-dsl-gtk/master/images/breaking-blue-wave.png'))
5
+ image_file = File.join(Dir.home, 'breaking-blue-wave.png')
6
+ File.write(image_file, image_content)
7
+
8
+ include Glimmer
9
+
10
+ window {
11
+ title 'Image'
12
+ default_size 256, 256
13
+
14
+ drawing_area {
15
+ paint 242.25, 242.25, 242.25
16
+
17
+ image = Cairo::ImageSurface.from_png(image_file)
18
+ w = image.width
19
+ h = image.height
20
+
21
+ translate 128.0, 128.0
22
+ rotate 45*Math::PI/180
23
+ scale 256.0/w, 256.0/h
24
+ translate -0.5*w, -0.5*h
25
+
26
+ paint image, 0, 0
27
+ }
28
+ }.show
@@ -0,0 +1,37 @@
1
+ require 'glimmer-dsl-gtk'
2
+ require 'net/http'
3
+
4
+ image_content = Net::HTTP.get(URI('https://raw.githubusercontent.com/AndyObtiva/glimmer-dsl-gtk/master/images/breaking-blue-wave.png'))
5
+ image_file = File.join(Dir.home, 'breaking-blue-wave.png')
6
+ File.write(image_file, image_content)
7
+
8
+ include Glimmer
9
+
10
+ window {
11
+ title 'Image Gradient'
12
+ default_size 256, 256
13
+
14
+ drawing_area {
15
+ paint 242.25, 242.25, 242.25
16
+
17
+ image = Cairo::ImageSurface.from_png(image_file)
18
+ w = image.width
19
+ h = image.height
20
+
21
+ # Load the image as a surface pattern
22
+ pattern = Cairo::SurfacePattern.new(image)
23
+ pattern.extend = Cairo::EXTEND_REPEAT
24
+
25
+ # Set up the scale matrix
26
+ pattern.matrix = Cairo::Matrix.scale(w/256.0 * 5.0, h/256.0 * 5.0)
27
+
28
+ rectangle(0, 0, 256, 256) {
29
+ translate 128.0, 128.0
30
+ rotate Math::PI / 4
31
+ scale 1/Math.sqrt(2), 1/Math.sqrt(2)
32
+ translate -128.0, -128.0
33
+
34
+ fill pattern
35
+ }
36
+ }
37
+ }.show
@@ -0,0 +1,27 @@
1
+ require 'glimmer-dsl-gtk'
2
+
3
+ include Glimmer
4
+
5
+ window {
6
+ title 'Multi Segment Caps'
7
+ default_size 256, 256
8
+
9
+ drawing_area {
10
+ paint 242.25, 242.25, 242.25
11
+
12
+ path {
13
+ move_to 50.0, 75.0
14
+ line_to 200.0, 75.0
15
+
16
+ move_to 50.0, 125.0
17
+ line_to 200.0, 125.0
18
+
19
+ move_to 50.0, 175.0
20
+ line_to 200.0, 175.0
21
+
22
+ line_width 30
23
+ line_cap Cairo::LINE_CAP_ROUND
24
+ stroke 0, 0, 0
25
+ }
26
+ }
27
+ }.show
@@ -0,0 +1,20 @@
1
+ require 'glimmer-dsl-gtk'
2
+
3
+ include Glimmer
4
+
5
+ window {
6
+ title 'Rounded Rectangle'
7
+ default_size 256, 256
8
+
9
+ drawing_area {
10
+ paint 242.25, 242.25, 242.25
11
+
12
+ path {
13
+ rounded_rectangle(25.6, 25.6, 204.8, 204.8, 20)
14
+
15
+ fill 127.5, 127.5, 255
16
+ line_width 10.0
17
+ stroke 127.5, 0, 0, 0.5
18
+ }
19
+ }
20
+ }.show
@@ -0,0 +1,53 @@
1
+ require 'glimmer-dsl-gtk'
2
+
3
+ include Glimmer
4
+
5
+ window {
6
+ title 'Set line cap'
7
+ default_size 256, 256
8
+
9
+ drawing_area {
10
+ paint 242.25, 242.25, 242.25
11
+
12
+ # The main code
13
+ path {
14
+ move_to 64.0, 50.0
15
+ line_to 64.0, 200.0
16
+
17
+ line_cap Cairo::LINE_CAP_BUTT # default
18
+ line_width 30
19
+ stroke 0, 0, 0
20
+ }
21
+
22
+ path {
23
+ move_to 128.0, 50.0
24
+ line_to 128.0, 200.0
25
+
26
+ line_cap Cairo::LINE_CAP_ROUND
27
+ line_width 30
28
+ stroke 0, 0, 0
29
+ }
30
+
31
+ path {
32
+ move_to 192.0, 50.0
33
+ line_to 192.0, 200.0
34
+
35
+ line_cap Cairo::LINE_CAP_SQUARE
36
+ line_width 30
37
+ stroke 0, 0, 0
38
+ }
39
+
40
+ # draw helping lines */
41
+ path {
42
+ move_to 64.0, 50.0
43
+ line_to 64.0, 200.0
44
+ move_to 128.0, 50.0
45
+ line_to 128.0, 200.0
46
+ move_to 192.0, 50.0
47
+ line_to 192.0, 200.0
48
+
49
+ line_width 2.56
50
+ stroke 255, 51, 51
51
+ }
52
+ }
53
+ }.show
@@ -0,0 +1,43 @@
1
+ require 'glimmer-dsl-gtk'
2
+
3
+ include Glimmer
4
+
5
+ window {
6
+ title 'Set line join'
7
+ default_size 256, 256
8
+
9
+ drawing_area {
10
+ paint 242.25, 242.25, 242.25
11
+
12
+ # The main code
13
+ path {
14
+ move_to 76.8, 84.48
15
+ rel_line_to 51.2, -51.2
16
+ rel_line_to 51.2, 51.2
17
+
18
+ line_join Cairo::LINE_JOIN_MITER # default
19
+ line_width 40.96
20
+ stroke 0, 0, 0
21
+ }
22
+
23
+ path {
24
+ move_to 76.8, 161.28
25
+ rel_line_to 51.2, -51.2
26
+ rel_line_to 51.2, 51.2
27
+
28
+ line_join Cairo::LINE_JOIN_BEVEL
29
+ line_width 40.96
30
+ stroke 0, 0, 0
31
+ }
32
+
33
+ path {
34
+ move_to 76.8, 238.08
35
+ rel_line_to 51.2, -51.2
36
+ rel_line_to 51.2, 51.2
37
+
38
+ line_join Cairo::LINE_JOIN_ROUND
39
+ line_width 40.96
40
+ stroke 0, 0, 0
41
+ }
42
+ }
43
+ }.show
@@ -0,0 +1,46 @@
1
+ require 'glimmer-dsl-gtk'
2
+
3
+ include Glimmer
4
+
5
+ window {
6
+ title 'Text'
7
+ default_size 256, 256
8
+
9
+ drawing_area {
10
+ paint 242.25, 242.25, 242.25
11
+
12
+ font_family = OS.linux? ? 'Sans' : (OS.mac? ? 'Helvetica' : 'Arial')
13
+
14
+ # The main code
15
+ path {
16
+ move_to 10.0, 135.0
17
+ show_text 'Hello'
18
+
19
+ font_face font_family, Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_BOLD
20
+ font_size 90.0
21
+ line_width 2.56
22
+ fill 0, 0, 0
23
+ stroke 0, 0, 0
24
+ }
25
+
26
+ path {
27
+ move_to 70.0, 165.0
28
+ text_path 'void'
29
+
30
+ font_face font_family, Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_BOLD
31
+ font_size 90.0
32
+ line_width 2.56
33
+ fill 127.5, 127.5, 255
34
+ stroke 0, 0, 0
35
+ }
36
+
37
+ # draw helping lines
38
+ path {
39
+ arc 10.0, 135.0, 5.12, 0, 2*Math::PI
40
+ close_path
41
+ arc 70.0, 165.0, 5.12, 0, 2*Math::PI
42
+
43
+ fill 255, 51, 51, 0.6
44
+ }
45
+ }
46
+ }.show
@@ -36,21 +36,27 @@ class Tetris
36
36
  PREVIEW_PLAYFIELD_WIDTH = 4
37
37
  PREVIEW_PLAYFIELD_HEIGHT = 2
38
38
  SCORE_MULTIPLIER = {1 => 40, 2 => 100, 3 => 300, 4 => 1200}
39
+ UP_ARROW_ACTIONS = %i[instant_down rotate_right rotate_left]
40
+ SPEEDS = %i[snail sloth turtle rabbit gorilla bear horse gazelle cheetah falcon]
41
+ SPEED_INITIAL_DELAYS = SPEEDS.each_with_index.inject({}) {|hash, speed_index_pair| hash.merge(speed_index_pair.first => 1.1 - speed_index_pair.last*(0.1)) }
39
42
 
40
43
  attr_reader :playfield_width, :playfield_height
41
- attr_accessor :game_over, :paused, :preview_tetromino, :lines, :score, :level, :high_scores, :beeping, :added_high_score, :show_high_scores, :up_arrow_action
44
+ attr_accessor :game_over, :paused, :preview_tetromino, :lines, :score, :level, :high_scores, :beeping, :added_high_score, :show_high_scores, :up_arrow_action, :show_preview_tetromino, :initial_delay
42
45
  alias game_over? game_over
43
46
  alias paused? paused
44
47
  alias beeping? beeping
45
48
  alias added_high_score? added_high_score
49
+ alias show_preview_tetromino? show_preview_tetromino
46
50
 
47
51
  def initialize(playfield_width = PLAYFIELD_WIDTH, playfield_height = PLAYFIELD_HEIGHT)
52
+ @initial_delay = SPEED_INITIAL_DELAYS[:snail]
48
53
  @playfield_width = playfield_width
49
54
  @playfield_height = playfield_height
50
55
  @high_scores = []
51
56
  @show_high_scores = false
52
57
  @beeping = true
53
58
  @up_arrow_action = :rotate_left
59
+ @show_preview_tetromino = true
54
60
  load_high_scores!
55
61
  end
56
62
 
@@ -200,47 +206,35 @@ class Tetris
200
206
  end
201
207
 
202
208
  def delay
203
- [1.1 - (level.to_i * 0.1), 0.001].max
209
+ [@initial_delay - (level.to_i * 0.1), 0.001].max
204
210
  end
205
211
 
206
212
  def beep
207
213
  @beeper&.call if beeping
208
214
  end
209
215
 
210
- def instant_down_on_up=(value)
211
- self.up_arrow_action = :instant_down if value
212
- end
213
-
214
- def instant_down_on_up
215
- self.up_arrow_action == :instant_down
216
- end
217
-
218
- def instant_down_on_up!
219
- self.up_arrow_action = :instant_down
220
- end
221
-
222
- def rotate_right_on_up=(value)
223
- self.up_arrow_action = :rotate_right if value
224
- end
225
-
226
- def rotate_right_on_up
227
- self.up_arrow_action == :rotate_right
228
- end
229
-
230
- def rotate_right_on_up!
231
- self.up_arrow_action = :rotate_right
232
- end
233
-
234
- def rotate_left_on_up=(value)
235
- self.up_arrow_action = :rotate_left if value
236
- end
237
-
238
- def rotate_left_on_up
239
- self.up_arrow_action == :rotate_left
216
+ SPEED_INITIAL_DELAYS.each do |speed, speed_initial_day|
217
+ define_method("speed_#{speed}=") do |is_true|
218
+ self.initial_delay = speed_initial_day if is_true
219
+ end
220
+
221
+ define_method("speed_#{speed}") do
222
+ self.initial_delay == speed_initial_day
223
+ end
240
224
  end
241
225
 
242
- def rotate_left_on_up!
243
- self.up_arrow_action = :rotate_left
226
+ UP_ARROW_ACTIONS.each do |up_arrow_action_symbol|
227
+ define_method("#{up_arrow_action_symbol}_on_up=") do |is_true|
228
+ self.up_arrow_action = up_arrow_action_symbol if is_true
229
+ end
230
+
231
+ define_method("#{up_arrow_action_symbol}_on_up") do
232
+ self.up_arrow_action == up_arrow_action_symbol
233
+ end
234
+
235
+ define_method("#{up_arrow_action_symbol}_on_up!") do
236
+ self.up_arrow_action = up_arrow_action_symbol
237
+ end
244
238
  end
245
239
 
246
240
  def reset_tetrominoes
@@ -94,17 +94,32 @@ class Tetris
94
94
 
95
95
  Model::Game::PREVIEW_PLAYFIELD_HEIGHT.times do |row|
96
96
  Model::Game::PREVIEW_PLAYFIELD_WIDTH.times do |column|
97
- observe(@game.preview_playfield[row][column], :color) do |new_color|
98
- color = new_color
97
+ preview_updater = proc do
99
98
  block = @preview_playfield_blocks[row][column]
100
- block[:background_square].fill = color
101
- block[:top_bevel_edge].fill = [color[0] + 4*BEVEL_CONSTANT, color[1] + 4*BEVEL_CONSTANT, color[2] + 4*BEVEL_CONSTANT]
102
- block[:right_bevel_edge].fill = [color[0] - BEVEL_CONSTANT, color[1] - BEVEL_CONSTANT, color[2] - BEVEL_CONSTANT]
103
- block[:bottom_bevel_edge].fill = [color[0] - BEVEL_CONSTANT, color[1] - BEVEL_CONSTANT, color[2] - BEVEL_CONSTANT]
104
- block[:left_bevel_edge].fill = [color[0] - BEVEL_CONSTANT, color[1] - BEVEL_CONSTANT, color[2] - BEVEL_CONSTANT]
105
- block[:border_square].stroke = new_color == Model::Block::COLOR_CLEAR ? COLOR_GRAY : color
99
+ if @game.show_preview_tetromino?
100
+ new_color = @game.preview_playfield[row][column].color
101
+ block[:background_square].fill = new_color
102
+ block[:top_bevel_edge].fill = [new_color[0] + 4*BEVEL_CONSTANT, new_color[1] + 4*BEVEL_CONSTANT, new_color[2] + 4*BEVEL_CONSTANT]
103
+ block[:right_bevel_edge].fill = [new_color[0] - BEVEL_CONSTANT, new_color[1] - BEVEL_CONSTANT, new_color[2] - BEVEL_CONSTANT]
104
+ block[:bottom_bevel_edge].fill = [new_color[0] - BEVEL_CONSTANT, new_color[1] - BEVEL_CONSTANT, new_color[2] - BEVEL_CONSTANT]
105
+ block[:left_bevel_edge].fill = [new_color[0] - BEVEL_CONSTANT, new_color[1] - BEVEL_CONSTANT, new_color[2] - BEVEL_CONSTANT]
106
+ block[:border_square].stroke = new_color == Model::Block::COLOR_CLEAR ? COLOR_GRAY : new_color
107
+ @next_label.text = 'Next'
108
+ else
109
+ transparent_color = [0, 0, 0, 0]
110
+ block[:background_square].fill = transparent_color
111
+ block[:top_bevel_edge].fill = transparent_color
112
+ block[:right_bevel_edge].fill = transparent_color
113
+ block[:bottom_bevel_edge].fill = transparent_color
114
+ block[:left_bevel_edge].fill = transparent_color
115
+ block[:border_square].stroke = transparent_color
116
+ @next_label.text = ''
117
+ end
106
118
  block[:drawing_area].queue_draw
107
119
  end
120
+
121
+ observe(@game.preview_playfield[row][column], :color, &preview_updater)
122
+ observe(@game, :show_preview_tetromino, &preview_updater)
108
123
  end
109
124
  end
110
125
 
@@ -150,6 +165,16 @@ class Tetris
150
165
 
151
166
  menu_item(label: 'View') { |mi|
152
167
  m = menu {
168
+ check_menu_item(label: 'Show Next Block Preview') {
169
+ active @game.show_preview_tetromino?
170
+
171
+ on(:activate) do
172
+ @game.show_preview_tetromino = !@game.show_preview_tetromino?
173
+ end
174
+ }
175
+
176
+ separator_menu_item
177
+
153
178
  menu_item(label: 'Show High Scores') {
154
179
  on(:activate) do
155
180
  show_high_score_dialog
@@ -165,6 +190,27 @@ class Tetris
165
190
  mi.submenu = m.gtk
166
191
  }
167
192
 
193
+ menu_item(label: 'Speed') { |mi|
194
+ m = menu {
195
+ rmi = radio_menu_item(nil, Model::Game::SPEEDS.first.to_s.capitalize) {
196
+ active true
197
+
198
+ on(:activate) do
199
+ @game.send("speed_#{Model::Game::SPEEDS.first}=", true)
200
+ end
201
+ }
202
+
203
+ Model::Game::SPEEDS.drop(1).each do |speed|
204
+ radio_menu_item(rmi.group, speed.to_s.capitalize) {
205
+ on(:activate) do
206
+ @game.send("speed_#{speed}=", true)
207
+ end
208
+ }
209
+ end
210
+ }
211
+ mi.submenu = m.gtk
212
+ }
213
+
168
214
  menu_item(label: 'Options') { |mi|
169
215
  m = menu {
170
216
  rmi = radio_menu_item(nil, 'Instant Down on Up') {
@@ -189,7 +235,7 @@ class Tetris
189
235
  mi.submenu = m.gtk
190
236
  }
191
237
 
192
- menu_item(label: 'Options') { |mi|
238
+ menu_item(label: 'Help') { |mi|
193
239
  m = menu {
194
240
  menu_item(label: 'About') {
195
241
  on(:activate) do
@@ -205,6 +251,7 @@ class Tetris
205
251
  def score_board
206
252
  box(:vertical) {
207
253
  label
254
+ @next_label = label('Next')
208
255
  @preview_playfield_blocks = playfield(playfield_width: Model::Game::PREVIEW_PLAYFIELD_WIDTH, playfield_height: Model::Game::PREVIEW_PLAYFIELD_HEIGHT, block_size: BLOCK_SIZE)
209
256
 
210
257
  label
@@ -278,29 +325,29 @@ class Tetris
278
325
  def start_moving_tetrominos_down
279
326
  unless @tetrominos_start_moving_down
280
327
  @tetrominos_start_moving_down = true
281
- GLib::Timeout.add(@game.delay*1000) do
328
+ tetromino_move = proc do
282
329
  @game.down! if !@game.game_over? && !@game.paused?
283
- true
330
+ GLib::Timeout.add(@game.delay*1000, &tetromino_move)
331
+ false # do not repeat
284
332
  end
333
+ GLib::Timeout.add(@game.delay*1000, &tetromino_move)
285
334
  end
286
335
  end
287
336
 
288
337
  def show_game_over_dialog
289
- message_dialog(@main_window) { |md|
338
+ @game.paused = true
339
+ message_dialog(parent: @main_window) { |md|
290
340
  title 'Game Over!'
291
341
  text "Score: #{@game.high_scores.first.score}\nLines: #{@game.high_scores.first.lines}\nLevel: #{@game.high_scores.first.level}"
292
342
 
293
343
  on(:response) do
344
+ @game.restart!
294
345
  md.destroy
295
346
  end
296
347
  }.show
297
-
298
- @game.restart!
299
- false
300
348
  end
301
349
 
302
350
  def show_high_score_dialog
303
- game_paused = !!@game.paused
304
351
  @game.paused = true
305
352
 
306
353
  if @game.high_scores.empty?
@@ -311,20 +358,19 @@ class Tetris
311
358
  end.join("\n")
312
359
  end
313
360
 
314
- message_dialog(@main_window) { |md|
361
+ message_dialog(parent: @main_window) { |md|
315
362
  title 'High Scores'
316
363
  text high_scores_string
317
364
 
318
365
  on(:response) do
366
+ @game.paused = false
319
367
  md.destroy
320
368
  end
321
369
  }.show
322
-
323
- @game.paused = game_paused
324
370
  end
325
371
 
326
372
  def show_about_dialog
327
- message_dialog(@main_window) { |md|
373
+ message_dialog(parent: @main_window) { |md|
328
374
  title 'About'
329
375
  text "Glimmer Tetris\n\nGlimmer DSL for GTK\n\nElaborate Sample\n\nCopyright (c) 2021-2022 Andy Maleh"
330
376
 
@@ -4,7 +4,7 @@ include Glimmer
4
4
 
5
5
  application('org.glimmer.hello-application') {
6
6
  on(:activate) do |app|
7
- application_window(app) {
7
+ application_window(app) { |aw|
8
8
  title 'Widget Gallery'
9
9
 
10
10
  notebook { |n|
@@ -46,13 +46,24 @@ application('org.glimmer.hello-application') {
46
46
  spacing 10
47
47
 
48
48
  label('Button')
49
- button('Push Me')
49
+ button(label: 'Push Me') {
50
+ on(:clicked) do
51
+ message_dialog(parent: aw) { |md|
52
+ title 'Information'
53
+ text 'You clicked the button'
54
+
55
+ on(:response) do
56
+ md.destroy
57
+ end
58
+ }.show
59
+ end
60
+ }
50
61
 
51
62
  label('Radio Button')
52
63
  box(:horizontal) {
53
- rb = radio_button('One')
54
- radio_button(rb, 'Two')
55
- radio_button(rb, 'Three')
64
+ rb = radio_button(label: 'One')
65
+ radio_button(label: 'Two', member: rb)
66
+ radio_button(label: 'Three', member: rb)
56
67
  }
57
68
 
58
69
  label('Check Button')
@@ -74,12 +85,12 @@ application('org.glimmer.hello-application') {
74
85
  spacing 10
75
86
 
76
87
  label('Horizontal Scale')
77
- h_scale(1, 100, 1) {
88
+ scale(:horizontal, 1, 100, 1) {
78
89
  visible true
79
90
  }
80
91
 
81
92
  label('Vertical Scale')
82
- v_scale(1, 100, 1) {
93
+ scale(:vertical, 1, 100, 1) {
83
94
  visible true
84
95
  height_request 200
85
96
  }
@@ -5,9 +5,9 @@ include Glimmer
5
5
  window { |w|
6
6
  title 'Hello, Button!'
7
7
 
8
- button('Button') {
8
+ button(label: 'Button') {
9
9
  on(:clicked) do
10
- message_dialog(w) { |md|
10
+ message_dialog(parent: w) { |md|
11
11
  title 'Information'
12
12
  text 'You clicked the button'
13
13
 
@@ -14,9 +14,9 @@ window { |w|
14
14
  end
15
15
  }
16
16
 
17
- button('Button') {
17
+ button(label: 'Button') {
18
18
  on(:clicked) do
19
- message_dialog(w) { |md|
19
+ message_dialog(parent: w) { |md|
20
20
  title 'You entered'
21
21
  text e.text
22
22