glimmer-dsl-libui 0.4.4 → 0.4.8
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 +36 -1
- data/README.md +932 -160
- data/VERSION +1 -1
- data/examples/button_counter.rb +2 -1
- data/examples/color_button.rb +18 -13
- data/examples/color_button2.rb +14 -0
- data/examples/date_time_picker.rb +19 -14
- data/examples/date_time_picker2.rb +20 -0
- data/examples/dynamic_area.rb +77 -90
- data/examples/dynamic_area2.rb +14 -12
- data/examples/dynamic_area3.rb +90 -0
- data/examples/dynamic_area4.rb +95 -0
- data/examples/font_button.rb +17 -12
- data/examples/font_button2.rb +18 -0
- data/examples/form_table.rb +0 -2
- data/examples/form_table2.rb +0 -2
- data/examples/histogram.rb +93 -91
- data/examples/histogram2.rb +109 -0
- data/examples/meta_example.rb +17 -6
- data/examples/midi_player.rb +5 -6
- data/examples/midi_player2.rb +83 -0
- data/examples/midi_player3.rb +84 -0
- data/examples/tetris.rb +15 -18
- data/examples/timer.rb +28 -31
- data/examples/timer2.rb +129 -0
- data/glimmer-dsl-libui.gemspec +0 -0
- data/lib/glimmer/libui/control_proxy/checkbox_proxy.rb +5 -0
- data/lib/glimmer/libui/control_proxy/color_button_proxy.rb +5 -0
- data/lib/glimmer/libui/control_proxy/combobox_proxy.rb +18 -2
- data/lib/glimmer/libui/control_proxy/date_time_picker_proxy.rb +5 -0
- data/lib/glimmer/libui/control_proxy/editable_combobox_proxy.rb +5 -0
- data/lib/glimmer/libui/control_proxy/font_button_proxy.rb +4 -0
- data/lib/glimmer/libui/control_proxy/menu_item_proxy/check_menu_item_proxy.rb +5 -0
- data/lib/glimmer/libui/control_proxy/menu_item_proxy/radio_menu_item_proxy.rb +17 -4
- data/lib/glimmer/libui/control_proxy/radio_buttons_proxy.rb +20 -0
- data/lib/glimmer/libui/control_proxy/slider_proxy.rb +38 -0
- data/lib/glimmer/libui/control_proxy/spinbox_proxy.rb +38 -0
- data/lib/glimmer/libui/control_proxy.rb +2 -2
- metadata +13 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.8
|
data/examples/button_counter.rb
CHANGED
@@ -13,7 +13,8 @@ class ButtonCounter
|
|
13
13
|
window('Hello, Button!', 190, 20) {
|
14
14
|
vertical_box {
|
15
15
|
button {
|
16
|
-
|
16
|
+
# data-bind button text to self count, converting to string on read.
|
17
|
+
text <= [self, :count, on_read: ->(count) {"Count: #{count}"}]
|
17
18
|
|
18
19
|
on_clicked do
|
19
20
|
self.count += 1
|
data/examples/color_button.rb
CHANGED
@@ -1,16 +1,21 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require 'glimmer-dsl-libui'
|
4
2
|
|
5
|
-
|
3
|
+
class ColorButton
|
4
|
+
include Glimmer
|
5
|
+
|
6
|
+
attr_accessor :selected_color
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@selected_color = :blue
|
10
|
+
end
|
11
|
+
|
12
|
+
def launch
|
13
|
+
window('color button', 240) {
|
14
|
+
color_button {
|
15
|
+
color <=> [self, :selected_color, after_write: ->(color) {p color}]
|
16
|
+
}
|
17
|
+
}.show
|
18
|
+
end
|
19
|
+
end
|
6
20
|
|
7
|
-
|
8
|
-
color_button { |cb|
|
9
|
-
color :blue
|
10
|
-
|
11
|
-
on_changed do
|
12
|
-
rgba = cb.color
|
13
|
-
p rgba
|
14
|
-
end
|
15
|
-
}
|
16
|
-
}.show
|
21
|
+
ColorButton.new.launch
|
@@ -2,19 +2,24 @@
|
|
2
2
|
|
3
3
|
require 'glimmer-dsl-libui'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
date_time_picker { |dtp|
|
10
|
-
on_changed do
|
11
|
-
time = dtp.time
|
12
|
-
p time
|
13
|
-
end
|
14
|
-
}
|
15
|
-
}
|
5
|
+
class DateTimePicker
|
6
|
+
include Glimmer
|
7
|
+
|
8
|
+
attr_accessor :picked_time
|
16
9
|
|
17
|
-
|
18
|
-
|
10
|
+
def launch
|
11
|
+
window('Date Time Pickers', 300, 200) {
|
12
|
+
vertical_box {
|
13
|
+
date_time_picker {
|
14
|
+
time <=> [self, :picked_time, after_write: ->(time) { p time }]
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
on_closing do
|
19
|
+
puts 'Bye Bye'
|
20
|
+
end
|
21
|
+
}.show
|
19
22
|
end
|
20
|
-
|
23
|
+
end
|
24
|
+
|
25
|
+
DateTimePicker.new.launch
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'glimmer-dsl-libui'
|
4
|
+
|
5
|
+
include Glimmer
|
6
|
+
|
7
|
+
window('Date Time Pickers', 300, 200) {
|
8
|
+
vertical_box {
|
9
|
+
date_time_picker { |dtp|
|
10
|
+
on_changed do
|
11
|
+
time = dtp.time
|
12
|
+
p time
|
13
|
+
end
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
on_closing do
|
18
|
+
puts 'Bye Bye'
|
19
|
+
end
|
20
|
+
}.show
|
data/examples/dynamic_area.rb
CHANGED
@@ -1,97 +1,84 @@
|
|
1
1
|
require 'glimmer-dsl-libui'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
window('Dynamic Area', 240, 600) {
|
6
|
-
margined true
|
3
|
+
class DynamicArea
|
4
|
+
include Glimmer
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
@y_spinbox = spinbox(0, 1000) {
|
26
|
-
label 'y'
|
27
|
-
value 25
|
28
|
-
|
29
|
-
on_changed do
|
30
|
-
@area.queue_redraw_all
|
31
|
-
end
|
32
|
-
}
|
33
|
-
|
34
|
-
@width_spinbox = spinbox(0, 1000) {
|
35
|
-
label 'width'
|
36
|
-
value 150
|
37
|
-
|
38
|
-
on_changed do
|
39
|
-
@area.queue_redraw_all
|
40
|
-
end
|
41
|
-
}
|
42
|
-
|
43
|
-
@height_spinbox = spinbox(0, 1000) {
|
44
|
-
label 'height'
|
45
|
-
value 150
|
46
|
-
|
47
|
-
on_changed do
|
48
|
-
@area.queue_redraw_all
|
49
|
-
end
|
50
|
-
}
|
51
|
-
|
52
|
-
@red_spinbox = spinbox(0, 255) {
|
53
|
-
label 'red'
|
54
|
-
value 102
|
55
|
-
|
56
|
-
on_changed do
|
57
|
-
@area.queue_redraw_all
|
58
|
-
end
|
59
|
-
}
|
60
|
-
|
61
|
-
@green_spinbox = spinbox(0, 255) {
|
62
|
-
label 'green'
|
63
|
-
value 102
|
64
|
-
|
65
|
-
on_changed do
|
66
|
-
@area.queue_redraw_all
|
67
|
-
end
|
68
|
-
}
|
6
|
+
attr_accessor :rectangle_x, :rectangle_y, :rectangle_width, :rectangle_height, :rectangle_red, :rectangle_green, :rectangle_blue, :rectangle_alpha
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@rectangle_x = 25
|
10
|
+
@rectangle_y = 25
|
11
|
+
@rectangle_width = 150
|
12
|
+
@rectangle_height = 150
|
13
|
+
@rectangle_red = 102
|
14
|
+
@rectangle_green = 102
|
15
|
+
@rectangle_blue = 204
|
16
|
+
@rectangle_alpha = 100
|
17
|
+
end
|
18
|
+
|
19
|
+
def launch
|
20
|
+
window('Dynamic Area', 240, 600) {
|
21
|
+
margined true
|
69
22
|
|
70
|
-
|
71
|
-
label '
|
72
|
-
|
23
|
+
vertical_box {
|
24
|
+
label('Rectangle Properties') {
|
25
|
+
stretchy false
|
26
|
+
}
|
73
27
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
28
|
+
form {
|
29
|
+
stretchy false
|
30
|
+
|
31
|
+
spinbox(0, 1000) {
|
32
|
+
label 'x'
|
33
|
+
value <=> [self, :rectangle_x, after_write: -> {@area.queue_redraw_all}]
|
34
|
+
}
|
35
|
+
|
36
|
+
spinbox(0, 1000) {
|
37
|
+
label 'y'
|
38
|
+
value <=> [self, :rectangle_y, after_write: -> {@area.queue_redraw_all}]
|
39
|
+
}
|
40
|
+
|
41
|
+
spinbox(0, 1000) {
|
42
|
+
label 'width'
|
43
|
+
value <=> [self, :rectangle_width, after_write: -> {@area.queue_redraw_all}]
|
44
|
+
}
|
45
|
+
|
46
|
+
spinbox(0, 1000) {
|
47
|
+
label 'height'
|
48
|
+
value <=> [self, :rectangle_height, after_write: -> {@area.queue_redraw_all}]
|
49
|
+
}
|
50
|
+
|
51
|
+
spinbox(0, 255) {
|
52
|
+
label 'red'
|
53
|
+
value <=> [self, :rectangle_red, after_write: -> {@area.queue_redraw_all}]
|
54
|
+
}
|
55
|
+
|
56
|
+
spinbox(0, 255) {
|
57
|
+
label 'green'
|
58
|
+
value <=> [self, :rectangle_green, after_write: -> {@area.queue_redraw_all}]
|
59
|
+
}
|
60
|
+
|
61
|
+
spinbox(0, 255) {
|
62
|
+
label 'blue'
|
63
|
+
value <=> [self, :rectangle_blue, after_write: -> {@area.queue_redraw_all}]
|
64
|
+
}
|
65
|
+
|
66
|
+
spinbox(0, 100) {
|
67
|
+
label 'alpha'
|
68
|
+
value <=> [self, :rectangle_alpha, after_write: -> {@area.queue_redraw_all}]
|
69
|
+
}
|
70
|
+
}
|
82
71
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
@area = area {
|
90
|
-
on_draw do |area_draw_params|
|
91
|
-
rectangle(@x_spinbox.value, @y_spinbox.value, @width_spinbox.value, @height_spinbox.value) { # a dynamic path is added semi-declaratively inside on_draw block
|
92
|
-
fill r: @red_spinbox.value, g: @green_spinbox.value, b: @blue_spinbox.value, a: @alpha_spinbox.value / 100.0
|
72
|
+
@area = area {
|
73
|
+
on_draw do |area_draw_params|
|
74
|
+
rectangle(rectangle_x, rectangle_y, rectangle_width, rectangle_height) { # a dynamic path is added semi-declaratively inside on_draw block
|
75
|
+
fill r: rectangle_red, g: rectangle_green, b: rectangle_blue, a: rectangle_alpha / 100.0
|
76
|
+
}
|
77
|
+
end
|
93
78
|
}
|
94
|
-
|
95
|
-
}
|
96
|
-
|
97
|
-
|
79
|
+
}
|
80
|
+
}.show
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
DynamicArea.new.launch
|
data/examples/dynamic_area2.rb
CHANGED
@@ -18,7 +18,7 @@ window('Dynamic Area', 240, 600) {
|
|
18
18
|
value 25
|
19
19
|
|
20
20
|
on_changed do
|
21
|
-
@
|
21
|
+
@area.queue_redraw_all
|
22
22
|
end
|
23
23
|
}
|
24
24
|
|
@@ -27,7 +27,7 @@ window('Dynamic Area', 240, 600) {
|
|
27
27
|
value 25
|
28
28
|
|
29
29
|
on_changed do
|
30
|
-
@
|
30
|
+
@area.queue_redraw_all
|
31
31
|
end
|
32
32
|
}
|
33
33
|
|
@@ -36,7 +36,7 @@ window('Dynamic Area', 240, 600) {
|
|
36
36
|
value 150
|
37
37
|
|
38
38
|
on_changed do
|
39
|
-
@
|
39
|
+
@area.queue_redraw_all
|
40
40
|
end
|
41
41
|
}
|
42
42
|
|
@@ -45,7 +45,7 @@ window('Dynamic Area', 240, 600) {
|
|
45
45
|
value 150
|
46
46
|
|
47
47
|
on_changed do
|
48
|
-
@
|
48
|
+
@area.queue_redraw_all
|
49
49
|
end
|
50
50
|
}
|
51
51
|
|
@@ -54,7 +54,7 @@ window('Dynamic Area', 240, 600) {
|
|
54
54
|
value 102
|
55
55
|
|
56
56
|
on_changed do
|
57
|
-
@
|
57
|
+
@area.queue_redraw_all
|
58
58
|
end
|
59
59
|
}
|
60
60
|
|
@@ -63,7 +63,7 @@ window('Dynamic Area', 240, 600) {
|
|
63
63
|
value 102
|
64
64
|
|
65
65
|
on_changed do
|
66
|
-
@
|
66
|
+
@area.queue_redraw_all
|
67
67
|
end
|
68
68
|
}
|
69
69
|
|
@@ -72,7 +72,7 @@ window('Dynamic Area', 240, 600) {
|
|
72
72
|
value 204
|
73
73
|
|
74
74
|
on_changed do
|
75
|
-
@
|
75
|
+
@area.queue_redraw_all
|
76
76
|
end
|
77
77
|
}
|
78
78
|
|
@@ -81,15 +81,17 @@ window('Dynamic Area', 240, 600) {
|
|
81
81
|
value 100
|
82
82
|
|
83
83
|
on_changed do
|
84
|
-
@
|
84
|
+
@area.queue_redraw_all
|
85
85
|
end
|
86
86
|
}
|
87
87
|
}
|
88
88
|
|
89
|
-
area {
|
90
|
-
|
91
|
-
|
92
|
-
|
89
|
+
@area = area {
|
90
|
+
on_draw do |area_draw_params|
|
91
|
+
rectangle(@x_spinbox.value, @y_spinbox.value, @width_spinbox.value, @height_spinbox.value) { # a dynamic path is added semi-declaratively inside on_draw block
|
92
|
+
fill r: @red_spinbox.value, g: @green_spinbox.value, b: @blue_spinbox.value, a: @alpha_spinbox.value / 100.0
|
93
|
+
}
|
94
|
+
end
|
93
95
|
}
|
94
96
|
}
|
95
97
|
}.show
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'glimmer-dsl-libui'
|
2
|
+
|
3
|
+
class DynamicArea
|
4
|
+
include Glimmer
|
5
|
+
|
6
|
+
attr_accessor :rectangle_x, :rectangle_y, :rectangle_width, :rectangle_height, :rectangle_red, :rectangle_green, :rectangle_blue, :rectangle_alpha
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@rectangle_x = 25
|
10
|
+
@rectangle_y = 25
|
11
|
+
@rectangle_width = 150
|
12
|
+
@rectangle_height = 150
|
13
|
+
@rectangle_red = 102
|
14
|
+
@rectangle_green = 102
|
15
|
+
@rectangle_blue = 204
|
16
|
+
@rectangle_alpha = 100
|
17
|
+
end
|
18
|
+
|
19
|
+
def rectangle_fill
|
20
|
+
{ r: rectangle_red, g: rectangle_green, b: rectangle_blue, a: rectangle_alpha / 100.0 }
|
21
|
+
end
|
22
|
+
|
23
|
+
def launch
|
24
|
+
window('Dynamic Area', 240, 600) {
|
25
|
+
margined true
|
26
|
+
|
27
|
+
vertical_box {
|
28
|
+
label('Rectangle Properties') {
|
29
|
+
stretchy false
|
30
|
+
}
|
31
|
+
|
32
|
+
form {
|
33
|
+
stretchy false
|
34
|
+
|
35
|
+
@x_spinbox = spinbox(0, 1000) {
|
36
|
+
label 'x'
|
37
|
+
value <=> [self, :rectangle_x]
|
38
|
+
}
|
39
|
+
|
40
|
+
@y_spinbox = spinbox(0, 1000) {
|
41
|
+
label 'y'
|
42
|
+
value <=> [self, :rectangle_y]
|
43
|
+
}
|
44
|
+
|
45
|
+
@width_spinbox = spinbox(0, 1000) {
|
46
|
+
label 'width'
|
47
|
+
value <=> [self, :rectangle_width]
|
48
|
+
}
|
49
|
+
|
50
|
+
@height_spinbox = spinbox(0, 1000) {
|
51
|
+
label 'height'
|
52
|
+
value <=> [self, :rectangle_height]
|
53
|
+
}
|
54
|
+
|
55
|
+
@red_spinbox = spinbox(0, 255) {
|
56
|
+
label 'red'
|
57
|
+
value <=> [self, :rectangle_red]
|
58
|
+
}
|
59
|
+
|
60
|
+
@green_spinbox = spinbox(0, 255) {
|
61
|
+
label 'green'
|
62
|
+
value <=> [self, :rectangle_green]
|
63
|
+
}
|
64
|
+
|
65
|
+
@blue_spinbox = spinbox(0, 255) {
|
66
|
+
label 'blue'
|
67
|
+
value <=> [self, :rectangle_blue]
|
68
|
+
}
|
69
|
+
|
70
|
+
@alpha_spinbox = spinbox(0, 100) {
|
71
|
+
label 'alpha'
|
72
|
+
value <=> [self, :rectangle_alpha]
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
area {
|
77
|
+
@rectangle = rectangle { # stable implicit path shape
|
78
|
+
x <= [self, :rectangle_x]
|
79
|
+
y <= [self, :rectangle_y]
|
80
|
+
width <= [self, :rectangle_width]
|
81
|
+
height <= [self, :rectangle_height]
|
82
|
+
fill <= [self, :rectangle_fill, computed_by: [:rectangle_red, :rectangle_green, :rectangle_blue, :rectangle_alpha]]
|
83
|
+
}
|
84
|
+
}
|
85
|
+
}
|
86
|
+
}.show
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
DynamicArea.new.launch
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'glimmer-dsl-libui'
|
2
|
+
|
3
|
+
include Glimmer
|
4
|
+
|
5
|
+
window('Dynamic Area', 240, 600) {
|
6
|
+
margined true
|
7
|
+
|
8
|
+
vertical_box {
|
9
|
+
label('Rectangle Properties') {
|
10
|
+
stretchy false
|
11
|
+
}
|
12
|
+
|
13
|
+
form {
|
14
|
+
stretchy false
|
15
|
+
|
16
|
+
@x_spinbox = spinbox(0, 1000) {
|
17
|
+
label 'x'
|
18
|
+
value 25
|
19
|
+
|
20
|
+
on_changed do
|
21
|
+
@rectangle.x = @x_spinbox.value # updating properties automatically triggers area.queue_redraw_all
|
22
|
+
end
|
23
|
+
}
|
24
|
+
|
25
|
+
@y_spinbox = spinbox(0, 1000) {
|
26
|
+
label 'y'
|
27
|
+
value 25
|
28
|
+
|
29
|
+
on_changed do
|
30
|
+
@rectangle.y = @y_spinbox.value # updating properties automatically triggers area.queue_redraw_all
|
31
|
+
end
|
32
|
+
}
|
33
|
+
|
34
|
+
@width_spinbox = spinbox(0, 1000) {
|
35
|
+
label 'width'
|
36
|
+
value 150
|
37
|
+
|
38
|
+
on_changed do
|
39
|
+
@rectangle.width = @width_spinbox.value # updating properties automatically triggers area.queue_redraw_all
|
40
|
+
end
|
41
|
+
}
|
42
|
+
|
43
|
+
@height_spinbox = spinbox(0, 1000) {
|
44
|
+
label 'height'
|
45
|
+
value 150
|
46
|
+
|
47
|
+
on_changed do
|
48
|
+
@rectangle.height = @height_spinbox.value # updating properties automatically triggers area.queue_redraw_all
|
49
|
+
end
|
50
|
+
}
|
51
|
+
|
52
|
+
@red_spinbox = spinbox(0, 255) {
|
53
|
+
label 'red'
|
54
|
+
value 102
|
55
|
+
|
56
|
+
on_changed do
|
57
|
+
@rectangle.fill[:r] = @red_spinbox.value # updating hash properties automatically triggers area.queue_redraw_all
|
58
|
+
end
|
59
|
+
}
|
60
|
+
|
61
|
+
@green_spinbox = spinbox(0, 255) {
|
62
|
+
label 'green'
|
63
|
+
value 102
|
64
|
+
|
65
|
+
on_changed do
|
66
|
+
@rectangle.fill[:g] = @green_spinbox.value # updating hash properties automatically triggers area.queue_redraw_all
|
67
|
+
end
|
68
|
+
}
|
69
|
+
|
70
|
+
@blue_spinbox = spinbox(0, 255) {
|
71
|
+
label 'blue'
|
72
|
+
value 204
|
73
|
+
|
74
|
+
on_changed do
|
75
|
+
@rectangle.fill[:b] = @blue_spinbox.value # updating hash properties automatically triggers area.queue_redraw_all
|
76
|
+
end
|
77
|
+
}
|
78
|
+
|
79
|
+
@alpha_spinbox = spinbox(0, 100) {
|
80
|
+
label 'alpha'
|
81
|
+
value 100
|
82
|
+
|
83
|
+
on_changed do
|
84
|
+
@rectangle.fill[:a] = @alpha_spinbox.value / 100.0 # updating hash properties automatically triggers area.queue_redraw_all
|
85
|
+
end
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
area {
|
90
|
+
@rectangle = rectangle(@x_spinbox.value, @y_spinbox.value, @width_spinbox.value, @height_spinbox.value) { # stable implicit path shape
|
91
|
+
fill r: @red_spinbox.value, g: @green_spinbox.value, b: @blue_spinbox.value, a: @alpha_spinbox.value / 100.0
|
92
|
+
}
|
93
|
+
}
|
94
|
+
}
|
95
|
+
}.show
|
data/examples/font_button.rb
CHANGED
@@ -2,17 +2,22 @@
|
|
2
2
|
|
3
3
|
require 'glimmer-dsl-libui'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
on_changed do
|
10
|
-
font_descriptor = fb.font
|
11
|
-
p font_descriptor
|
12
|
-
end
|
13
|
-
}
|
5
|
+
class FontButton
|
6
|
+
include Glimmer
|
7
|
+
|
8
|
+
attr_accessor :font_descriptor
|
14
9
|
|
15
|
-
|
16
|
-
|
10
|
+
def launch
|
11
|
+
window('hello world', 300, 200) {
|
12
|
+
font_button {
|
13
|
+
font <=> [self, :font_descriptor, after_write: -> { p font_descriptor }]
|
14
|
+
}
|
15
|
+
|
16
|
+
on_closing do
|
17
|
+
puts 'Bye Bye'
|
18
|
+
end
|
19
|
+
}.show
|
17
20
|
end
|
18
|
-
|
21
|
+
end
|
22
|
+
|
23
|
+
FontButton.new.launch
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'glimmer-dsl-libui'
|
4
|
+
|
5
|
+
include Glimmer
|
6
|
+
|
7
|
+
window('hello world', 300, 200) {
|
8
|
+
font_button { |fb|
|
9
|
+
on_changed do
|
10
|
+
font_descriptor = fb.font
|
11
|
+
p font_descriptor
|
12
|
+
end
|
13
|
+
}
|
14
|
+
|
15
|
+
on_closing do
|
16
|
+
puts 'Bye Bye'
|
17
|
+
end
|
18
|
+
}.show
|
data/examples/form_table.rb
CHANGED