glimmer-dsl-libui 0.1.2 → 0.1.6
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 +55 -0
- data/README.md +1127 -65
- data/VERSION +1 -1
- data/examples/area_gallery.rb +50 -0
- data/examples/area_gallery2.rb +111 -0
- data/examples/area_gallery3.rb +52 -0
- data/examples/area_gallery4.rb +113 -0
- data/examples/basic_area2.rb +1 -1
- data/examples/basic_button.rb +2 -2
- data/examples/basic_entry.rb +2 -2
- data/examples/basic_table_progress_bar.rb +13 -3
- data/examples/basic_transform.rb +27 -0
- data/examples/control_gallery.rb +3 -3
- data/examples/dynamic_area.rb +1 -1
- data/examples/form.rb +2 -2
- data/examples/histogram.rb +118 -0
- data/examples/meta_example.rb +71 -20
- data/examples/midi_player.rb +8 -10
- data/glimmer-dsl-libui.gemspec +0 -0
- data/lib/glimmer/dsl/libui/control_expression.rb +1 -3
- data/lib/glimmer/dsl/libui/dsl.rb +1 -0
- data/lib/glimmer/dsl/libui/file_expression.rb +5 -1
- data/lib/glimmer/dsl/libui/property_expression.rb +5 -1
- data/lib/glimmer/{libui/box.rb → dsl/libui/shape_expression.rb} +26 -29
- data/lib/glimmer/dsl/libui/tab_item_expression.rb +2 -2
- data/lib/glimmer/libui/control_proxy/area_proxy.rb +117 -0
- data/lib/glimmer/libui/{menu_item_proxy.rb → control_proxy/box/horizontal_box_proxy.rb} +9 -12
- data/lib/glimmer/libui/{vertical_box_proxy.rb → control_proxy/box/vertical_box_proxy.rb} +10 -6
- data/lib/glimmer/libui/control_proxy/box.rb +61 -0
- data/lib/glimmer/libui/{button_proxy.rb → control_proxy/button_proxy.rb} +14 -12
- data/lib/glimmer/libui/{checkbox_proxy.rb → control_proxy/checkbox_proxy.rb} +14 -12
- data/lib/glimmer/libui/control_proxy/color_button_proxy.rb +118 -0
- data/lib/glimmer/libui/control_proxy/column/button_column_proxy.rb +76 -0
- data/lib/glimmer/libui/control_proxy/column/checkbox_column_proxy.rb +46 -0
- data/lib/glimmer/libui/control_proxy/column/checkbox_text_column_proxy.rb +80 -0
- data/lib/glimmer/libui/{radio_buttons_proxy.rb → control_proxy/column/image_column_proxy.rb} +14 -13
- data/lib/glimmer/libui/control_proxy/column/image_text_column_proxy.rb +48 -0
- data/lib/glimmer/libui/{progress_bar_column_proxy.rb → control_proxy/column/progress_bar_column_proxy.rb} +14 -10
- data/lib/glimmer/libui/control_proxy/column/text_column_proxy.rb +46 -0
- data/lib/glimmer/libui/control_proxy/column.rb +55 -0
- data/lib/glimmer/libui/{checkbox_column_proxy.rb → control_proxy/combobox_proxy.rb} +16 -13
- data/lib/glimmer/libui/control_proxy/date_time_picker_proxy/date_picker_proxy.rb +43 -0
- data/lib/glimmer/libui/control_proxy/date_time_picker_proxy/time_picker_proxy.rb +43 -0
- data/lib/glimmer/libui/control_proxy/date_time_picker_proxy.rb +72 -0
- data/lib/glimmer/libui/control_proxy/dual_column.rb +40 -0
- data/lib/glimmer/libui/control_proxy/editable_column.rb +46 -0
- data/lib/glimmer/libui/control_proxy/editable_combobox_proxy.rb +45 -0
- data/lib/glimmer/libui/{dual_column.rb → control_proxy/enableable_column.rb} +18 -10
- data/lib/glimmer/libui/control_proxy/font_button_proxy.rb +70 -0
- data/lib/glimmer/libui/{form_proxy.rb → control_proxy/form_proxy.rb} +26 -24
- data/lib/glimmer/libui/{grid_proxy.rb → control_proxy/grid_proxy.rb} +29 -27
- data/lib/glimmer/libui/{group_proxy.rb → control_proxy/group_proxy.rb} +24 -22
- data/lib/glimmer/libui/{image_part_proxy.rb → control_proxy/image_part_proxy.rb} +20 -18
- data/lib/glimmer/libui/{image_proxy.rb → control_proxy/image_proxy.rb} +32 -30
- data/lib/glimmer/libui/{combobox_proxy.rb → control_proxy/label_proxy.rb} +13 -13
- data/lib/glimmer/libui/control_proxy/matrix_proxy.rb +147 -0
- data/lib/glimmer/libui/{editable_column.rb → control_proxy/menu_item_proxy/about_menu_item_proxy.rb} +13 -16
- data/lib/glimmer/libui/control_proxy/menu_item_proxy/check_menu_item_proxy.rb +41 -0
- data/lib/glimmer/libui/{preferences_menu_item_proxy.rb → control_proxy/menu_item_proxy/preferences_menu_item_proxy.rb} +11 -9
- data/lib/glimmer/libui/control_proxy/menu_item_proxy/quit_menu_item_proxy.rb +66 -0
- data/lib/glimmer/libui/control_proxy/menu_item_proxy/separator_menu_item_proxy.rb +41 -0
- data/lib/glimmer/libui/control_proxy/menu_item_proxy.rb +45 -0
- data/lib/glimmer/libui/{editable_combobox_proxy.rb → control_proxy/menu_proxy.rb} +13 -13
- data/lib/glimmer/libui/{horizontal_box_proxy.rb → control_proxy/message_box/msg_box_error_proxy.rb} +9 -6
- data/lib/glimmer/libui/{multiline_entry_proxy.rb → control_proxy/message_box/msg_box_proxy.rb} +8 -6
- data/lib/glimmer/libui/{check_menu_item_proxy.rb → control_proxy/message_box.rb} +11 -10
- data/lib/glimmer/libui/control_proxy/multiline_entry_proxy/non_wrapping_multiline_entry_proxy.rb +34 -0
- data/lib/glimmer/libui/{image_column_proxy.rb → control_proxy/multiline_entry_proxy.rb} +10 -11
- data/lib/glimmer/libui/control_proxy/path_proxy.rb +169 -0
- data/lib/glimmer/libui/control_proxy/radio_buttons_proxy.rb +45 -0
- data/lib/glimmer/libui/{button_column_proxy.rb → control_proxy/tab_item_proxy.rb} +37 -40
- data/lib/glimmer/libui/control_proxy/table_proxy.rb +182 -0
- data/lib/glimmer/libui/control_proxy/transformable.rb +74 -0
- data/lib/glimmer/libui/control_proxy/window_proxy.rb +128 -0
- data/lib/glimmer/libui/control_proxy.rb +41 -22
- data/lib/glimmer/libui/{enableable_column.rb → parent.rb} +7 -15
- data/lib/glimmer/libui/shape/arc.rb +43 -0
- data/lib/glimmer/libui/{date_picker_proxy.rb → shape/bezier.rb} +8 -9
- data/lib/glimmer/libui/{quit_menu_item_proxy.rb → shape/figure.rb} +24 -32
- data/lib/glimmer/libui/{non_wrapping_multiline_entry_proxy.rb → shape/line.rb} +11 -5
- data/lib/glimmer/libui/{time_picker_proxy.rb → shape/rectangle.rb} +8 -9
- data/lib/glimmer/libui/{about_menu_item_proxy.rb → shape/square.rb} +9 -8
- data/lib/glimmer/libui/shape.rb +145 -0
- data/lib/glimmer/libui.rb +92 -0
- data/lib/glimmer-dsl-libui.rb +2 -0
- metadata +82 -48
- data/lib/glimmer/libui/area_proxy.rb +0 -105
- data/lib/glimmer/libui/checkbox_text_column_proxy.rb +0 -76
- data/lib/glimmer/libui/color_button_proxy.rb +0 -64
- data/lib/glimmer/libui/column.rb +0 -51
- data/lib/glimmer/libui/date_time_picker_proxy.rb +0 -68
- data/lib/glimmer/libui/font_button_proxy.rb +0 -68
- data/lib/glimmer/libui/image_text_column_proxy.rb +0 -44
- data/lib/glimmer/libui/label_proxy.rb +0 -41
- data/lib/glimmer/libui/menu_proxy.rb +0 -41
- data/lib/glimmer/libui/path_proxy.rb +0 -167
- data/lib/glimmer/libui/rectangle_proxy.rb +0 -100
- data/lib/glimmer/libui/separator_menu_item_proxy.rb +0 -37
- data/lib/glimmer/libui/tab_item_proxy.rb +0 -67
- data/lib/glimmer/libui/table_proxy.rb +0 -180
- data/lib/glimmer/libui/text_column_proxy.rb +0 -42
- data/lib/glimmer/libui/window_proxy.rb +0 -119
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.6
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'glimmer-dsl-libui'
|
|
2
|
+
|
|
3
|
+
include Glimmer
|
|
4
|
+
|
|
5
|
+
window('Area Gallery', 400, 400) {
|
|
6
|
+
area {
|
|
7
|
+
path { # declarative stable path
|
|
8
|
+
square(0, 0, 100)
|
|
9
|
+
square(100, 100, 400)
|
|
10
|
+
|
|
11
|
+
fill r: 102, g: 102, b: 204
|
|
12
|
+
}
|
|
13
|
+
path { # declarative stable path
|
|
14
|
+
rectangle(0, 100, 100, 400)
|
|
15
|
+
rectangle(100, 0, 400, 100)
|
|
16
|
+
|
|
17
|
+
fill r: 204, g: 102, b: 204
|
|
18
|
+
}
|
|
19
|
+
path { # declarative stable path
|
|
20
|
+
figure(100, 100) {
|
|
21
|
+
line(100, 400)
|
|
22
|
+
line(400, 100)
|
|
23
|
+
line(400, 400)
|
|
24
|
+
|
|
25
|
+
closed true
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
fill r: 202, g: 102, b: 104, a: 0.5
|
|
29
|
+
stroke r: 0, g: 0, b: 0
|
|
30
|
+
}
|
|
31
|
+
path { # declarative stable path
|
|
32
|
+
figure(0, 0) {
|
|
33
|
+
bezier(200, 100, 100, 200, 400, 100)
|
|
34
|
+
bezier(300, 100, 100, 300, 100, 400)
|
|
35
|
+
bezier(100, 300, 300, 100, 400, 400)
|
|
36
|
+
|
|
37
|
+
closed true
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
fill r: 202, g: 102, b: 204, a: 0.5
|
|
41
|
+
stroke thickness: 2, r: 0, g: 0, b: 0
|
|
42
|
+
}
|
|
43
|
+
path { # declarative stable path
|
|
44
|
+
arc(200, 200, 90, 0, 360, false)
|
|
45
|
+
|
|
46
|
+
fill r: 202, g: 102, b: 204, a: 0.5
|
|
47
|
+
stroke thickness: 2, r: 0, g: 0, b: 0
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}.show
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
require 'glimmer-dsl-libui'
|
|
2
|
+
|
|
3
|
+
include Glimmer
|
|
4
|
+
|
|
5
|
+
window('Area Gallery', 400, 400) {
|
|
6
|
+
area {
|
|
7
|
+
path { # declarative stable path
|
|
8
|
+
square {
|
|
9
|
+
x 0
|
|
10
|
+
y 0
|
|
11
|
+
length 100
|
|
12
|
+
}
|
|
13
|
+
square {
|
|
14
|
+
x 100
|
|
15
|
+
y 100
|
|
16
|
+
length 400
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
fill r: 102, g: 102, b: 204
|
|
20
|
+
}
|
|
21
|
+
path { # declarative stable path
|
|
22
|
+
rectangle {
|
|
23
|
+
x 0
|
|
24
|
+
y 100
|
|
25
|
+
width 100
|
|
26
|
+
height 400
|
|
27
|
+
}
|
|
28
|
+
rectangle {
|
|
29
|
+
x 100
|
|
30
|
+
y 0
|
|
31
|
+
width 400
|
|
32
|
+
height 100
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
fill r: 204, g: 102, b: 204
|
|
36
|
+
}
|
|
37
|
+
path { # declarative stable path
|
|
38
|
+
figure {
|
|
39
|
+
x 100
|
|
40
|
+
y 100
|
|
41
|
+
|
|
42
|
+
line {
|
|
43
|
+
x 100
|
|
44
|
+
y 400
|
|
45
|
+
}
|
|
46
|
+
line {
|
|
47
|
+
x 400
|
|
48
|
+
y 100
|
|
49
|
+
}
|
|
50
|
+
line {
|
|
51
|
+
x 400
|
|
52
|
+
y 400
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
closed true
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
fill r: 202, g: 102, b: 104, a: 0.5
|
|
59
|
+
stroke r: 0, g: 0, b: 0
|
|
60
|
+
}
|
|
61
|
+
path { # declarative stable path
|
|
62
|
+
figure {
|
|
63
|
+
x 0
|
|
64
|
+
y 0
|
|
65
|
+
|
|
66
|
+
bezier {
|
|
67
|
+
c1_x 200
|
|
68
|
+
c1_y 100
|
|
69
|
+
c2_x 100
|
|
70
|
+
c2_y 200
|
|
71
|
+
end_x 400
|
|
72
|
+
end_y 100
|
|
73
|
+
}
|
|
74
|
+
bezier {
|
|
75
|
+
c1_x 300
|
|
76
|
+
c1_y 100
|
|
77
|
+
c2_x 100
|
|
78
|
+
c2_y 300
|
|
79
|
+
end_x 100
|
|
80
|
+
end_y 400
|
|
81
|
+
}
|
|
82
|
+
bezier {
|
|
83
|
+
c1_x 100
|
|
84
|
+
c1_y 300
|
|
85
|
+
c2_x 300
|
|
86
|
+
c2_y 100
|
|
87
|
+
end_x 400
|
|
88
|
+
end_y 400
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
closed true
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
fill r: 202, g: 102, b: 204, a: 0.5
|
|
95
|
+
stroke thickness: 2, r: 0, g: 0, b: 0
|
|
96
|
+
}
|
|
97
|
+
path { # declarative stable path
|
|
98
|
+
arc {
|
|
99
|
+
x_center 200
|
|
100
|
+
y_center 200
|
|
101
|
+
radius 90
|
|
102
|
+
start_angle 0
|
|
103
|
+
sweep 360
|
|
104
|
+
is_negative false
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
fill r: 202, g: 102, b: 204, a: 0.5
|
|
108
|
+
stroke thickness: 2, r: 0, g: 0, b: 0
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}.show
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'glimmer-dsl-libui'
|
|
2
|
+
|
|
3
|
+
include Glimmer
|
|
4
|
+
|
|
5
|
+
window('Area Gallery', 400, 400) {
|
|
6
|
+
area {
|
|
7
|
+
on_draw do |area_draw_params|
|
|
8
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
9
|
+
square(0, 0, 100)
|
|
10
|
+
square(100, 100, 400)
|
|
11
|
+
|
|
12
|
+
fill r: 102, g: 102, b: 204
|
|
13
|
+
}
|
|
14
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
15
|
+
rectangle(0, 100, 100, 400)
|
|
16
|
+
rectangle(100, 0, 400, 100)
|
|
17
|
+
|
|
18
|
+
fill r: 204, g: 102, b: 204
|
|
19
|
+
}
|
|
20
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
21
|
+
figure(100, 100) {
|
|
22
|
+
line(100, 400)
|
|
23
|
+
line(400, 100)
|
|
24
|
+
line(400, 400)
|
|
25
|
+
|
|
26
|
+
closed true
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
fill r: 202, g: 102, b: 104, a: 0.5
|
|
30
|
+
stroke r: 0, g: 0, b: 0
|
|
31
|
+
}
|
|
32
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
33
|
+
figure(0, 0) {
|
|
34
|
+
bezier(200, 100, 100, 200, 400, 100)
|
|
35
|
+
bezier(300, 100, 100, 300, 100, 400)
|
|
36
|
+
bezier(100, 300, 300, 100, 400, 400)
|
|
37
|
+
|
|
38
|
+
closed true
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
fill r: 202, g: 102, b: 204, a: 0.5
|
|
42
|
+
stroke thickness: 2, r: 0, g: 0, b: 0
|
|
43
|
+
}
|
|
44
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
45
|
+
arc(200, 200, 90, 0, 360, false)
|
|
46
|
+
|
|
47
|
+
fill r: 202, g: 102, b: 204, a: 0.5
|
|
48
|
+
stroke thickness: 2, r: 0, g: 0, b: 0
|
|
49
|
+
}
|
|
50
|
+
end
|
|
51
|
+
}
|
|
52
|
+
}.show
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
require 'glimmer-dsl-libui'
|
|
2
|
+
|
|
3
|
+
include Glimmer
|
|
4
|
+
|
|
5
|
+
window('Area Gallery', 400, 400) {
|
|
6
|
+
area {
|
|
7
|
+
on_draw do |area_draw_params|
|
|
8
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
9
|
+
square {
|
|
10
|
+
x 0
|
|
11
|
+
y 0
|
|
12
|
+
length 100
|
|
13
|
+
}
|
|
14
|
+
square {
|
|
15
|
+
x 100
|
|
16
|
+
y 100
|
|
17
|
+
length 400
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
fill r: 102, g: 102, b: 204
|
|
21
|
+
}
|
|
22
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
23
|
+
rectangle {
|
|
24
|
+
x 0
|
|
25
|
+
y 100
|
|
26
|
+
width 100
|
|
27
|
+
height 400
|
|
28
|
+
}
|
|
29
|
+
rectangle {
|
|
30
|
+
x 100
|
|
31
|
+
y 0
|
|
32
|
+
width 400
|
|
33
|
+
height 100
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
fill r: 204, g: 102, b: 204
|
|
37
|
+
}
|
|
38
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
39
|
+
figure {
|
|
40
|
+
x 100
|
|
41
|
+
y 100
|
|
42
|
+
|
|
43
|
+
line {
|
|
44
|
+
x 100
|
|
45
|
+
y 400
|
|
46
|
+
}
|
|
47
|
+
line {
|
|
48
|
+
x 400
|
|
49
|
+
y 100
|
|
50
|
+
}
|
|
51
|
+
line {
|
|
52
|
+
x 400
|
|
53
|
+
y 400
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
closed true
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
fill r: 202, g: 102, b: 104, a: 0.5
|
|
60
|
+
stroke r: 0, g: 0, b: 0
|
|
61
|
+
}
|
|
62
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
63
|
+
figure {
|
|
64
|
+
x 0
|
|
65
|
+
y 0
|
|
66
|
+
|
|
67
|
+
bezier {
|
|
68
|
+
c1_x 200
|
|
69
|
+
c1_y 100
|
|
70
|
+
c2_x 100
|
|
71
|
+
c2_y 200
|
|
72
|
+
end_x 400
|
|
73
|
+
end_y 100
|
|
74
|
+
}
|
|
75
|
+
bezier {
|
|
76
|
+
c1_x 300
|
|
77
|
+
c1_y 100
|
|
78
|
+
c2_x 100
|
|
79
|
+
c2_y 300
|
|
80
|
+
end_x 100
|
|
81
|
+
end_y 400
|
|
82
|
+
}
|
|
83
|
+
bezier {
|
|
84
|
+
c1_x 100
|
|
85
|
+
c1_y 300
|
|
86
|
+
c2_x 300
|
|
87
|
+
c2_y 100
|
|
88
|
+
end_x 400
|
|
89
|
+
end_y 400
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
closed true
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
fill r: 202, g: 102, b: 204, a: 0.5
|
|
96
|
+
stroke thickness: 2, r: 0, g: 0, b: 0
|
|
97
|
+
}
|
|
98
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
99
|
+
arc {
|
|
100
|
+
x_center 200
|
|
101
|
+
y_center 200
|
|
102
|
+
radius 90
|
|
103
|
+
start_angle 0
|
|
104
|
+
sweep 360
|
|
105
|
+
is_negative false
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
fill r: 202, g: 102, b: 204, a: 0.5
|
|
109
|
+
stroke thickness: 2, r: 0, g: 0, b: 0
|
|
110
|
+
}
|
|
111
|
+
end
|
|
112
|
+
}
|
|
113
|
+
}.show
|
data/examples/basic_area2.rb
CHANGED
|
@@ -8,7 +8,7 @@ window('Basic Area', 400, 400) {
|
|
|
8
8
|
vertical_box {
|
|
9
9
|
area {
|
|
10
10
|
on_draw do |area_draw_params|
|
|
11
|
-
path
|
|
11
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
12
12
|
rectangle(0, 0, 400, 400)
|
|
13
13
|
|
|
14
14
|
fill r: 102, g: 102, b: 204, a: 1.0
|
data/examples/basic_button.rb
CHANGED
|
@@ -4,10 +4,10 @@ require 'glimmer-dsl-libui'
|
|
|
4
4
|
|
|
5
5
|
include Glimmer
|
|
6
6
|
|
|
7
|
-
window('hello world', 300, 200) {
|
|
7
|
+
window('hello world', 300, 200) {
|
|
8
8
|
button('Button') {
|
|
9
9
|
on_clicked do
|
|
10
|
-
msg_box(
|
|
10
|
+
msg_box('Information', 'You clicked the button')
|
|
11
11
|
end
|
|
12
12
|
}
|
|
13
13
|
|
data/examples/basic_entry.rb
CHANGED
|
@@ -4,7 +4,7 @@ require 'glimmer-dsl-libui'
|
|
|
4
4
|
|
|
5
5
|
include Glimmer
|
|
6
6
|
|
|
7
|
-
window('Basic Entry', 300, 50) {
|
|
7
|
+
window('Basic Entry', 300, 50) {
|
|
8
8
|
horizontal_box {
|
|
9
9
|
e = entry {
|
|
10
10
|
# stretchy true # Smart default option for appending to horizontal_box
|
|
@@ -20,7 +20,7 @@ window('Basic Entry', 300, 50) { |w|
|
|
|
20
20
|
|
|
21
21
|
on_clicked do
|
|
22
22
|
text = e.text
|
|
23
|
-
msg_box(
|
|
23
|
+
msg_box('You entered', text)
|
|
24
24
|
end
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -12,13 +12,23 @@ data = [
|
|
|
12
12
|
['task 5', -1],
|
|
13
13
|
]
|
|
14
14
|
|
|
15
|
-
window('Task
|
|
16
|
-
|
|
15
|
+
window('Task Progress', 300, 200) {
|
|
16
|
+
vertical_box {
|
|
17
17
|
table {
|
|
18
18
|
text_column('Task')
|
|
19
19
|
progress_bar_column('Progress')
|
|
20
20
|
|
|
21
|
-
cell_rows data
|
|
21
|
+
cell_rows data # implicit data-binding
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
button('Mark All As Done') {
|
|
25
|
+
stretchy false
|
|
26
|
+
|
|
27
|
+
on_clicked do
|
|
28
|
+
data.each_with_index do |row_data, row|
|
|
29
|
+
data[row] = [row_data[0], 100] # automatically updates table due to implicit data-binding
|
|
30
|
+
end
|
|
31
|
+
end
|
|
22
32
|
}
|
|
23
33
|
}
|
|
24
34
|
}.show
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'glimmer-dsl-libui'
|
|
2
|
+
|
|
3
|
+
include Glimmer
|
|
4
|
+
|
|
5
|
+
window('Basic Transform', 350, 350) {
|
|
6
|
+
area {
|
|
7
|
+
path {
|
|
8
|
+
square(0, 0, 350)
|
|
9
|
+
|
|
10
|
+
fill r: 255, g: 255, b: 0
|
|
11
|
+
}
|
|
12
|
+
40.times do |n|
|
|
13
|
+
path {
|
|
14
|
+
square(0, 0, 100)
|
|
15
|
+
|
|
16
|
+
fill r: [255 - n*5, 0].max, g: [n*5, 255].min, b: 0, a: 0.5
|
|
17
|
+
stroke :black, thickness: 2
|
|
18
|
+
transform {
|
|
19
|
+
skew 0.15, 0.15
|
|
20
|
+
translate 50, 50
|
|
21
|
+
rotate 100, 100, -9 * n
|
|
22
|
+
scale 1.1, 1.1
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
end
|
|
26
|
+
}
|
|
27
|
+
}.show
|
data/examples/control_gallery.rb
CHANGED
|
@@ -7,14 +7,14 @@ include Glimmer
|
|
|
7
7
|
menu('File') {
|
|
8
8
|
menu_item('Open') {
|
|
9
9
|
on_clicked do
|
|
10
|
-
file = open_file
|
|
10
|
+
file = open_file
|
|
11
11
|
puts file unless file.nil?
|
|
12
12
|
end
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
menu_item('Save') {
|
|
16
16
|
on_clicked do
|
|
17
|
-
file = save_file
|
|
17
|
+
file = save_file
|
|
18
18
|
puts file unless file.nil?
|
|
19
19
|
end
|
|
20
20
|
}
|
|
@@ -57,7 +57,7 @@ MAIN_WINDOW = window('Control Gallery', 600, 500) {
|
|
|
57
57
|
stretchy false
|
|
58
58
|
|
|
59
59
|
on_clicked do
|
|
60
|
-
msg_box(
|
|
60
|
+
msg_box('Information', 'You clicked the button')
|
|
61
61
|
end
|
|
62
62
|
}
|
|
63
63
|
|
data/examples/dynamic_area.rb
CHANGED
|
@@ -88,7 +88,7 @@ window('Dynamic Area', 240, 600) {
|
|
|
88
88
|
|
|
89
89
|
@area = area {
|
|
90
90
|
on_draw do |area_draw_params|
|
|
91
|
-
path
|
|
91
|
+
path { # a dynamic path is added semi-declaratively inside on_draw block
|
|
92
92
|
rectangle(@x_spinbox.value, @y_spinbox.value, @width_spinbox.value, @height_spinbox.value)
|
|
93
93
|
|
|
94
94
|
fill r: @red_spinbox.value, g: @green_spinbox.value, b: @blue_spinbox.value, a: @alpha_spinbox.value / 100.0
|
data/examples/form.rb
CHANGED
|
@@ -4,7 +4,7 @@ require 'glimmer-dsl-libui'
|
|
|
4
4
|
|
|
5
5
|
include Glimmer
|
|
6
6
|
|
|
7
|
-
window('Form') {
|
|
7
|
+
window('Form') {
|
|
8
8
|
margined true
|
|
9
9
|
|
|
10
10
|
vertical_box {
|
|
@@ -20,7 +20,7 @@ window('Form') { |w|
|
|
|
20
20
|
|
|
21
21
|
button('Display Name') {
|
|
22
22
|
on_clicked do
|
|
23
|
-
msg_box(
|
|
23
|
+
msg_box('Name', "#{@first_name_entry.text} #{@last_name_entry.text}")
|
|
24
24
|
end
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# https://github.com/jamescook/libui-ruby/blob/master/example/histogram.rb
|
|
2
|
+
|
|
3
|
+
require 'glimmer-dsl-libui'
|
|
4
|
+
|
|
5
|
+
include Glimmer
|
|
6
|
+
|
|
7
|
+
X_OFF_LEFT = 20
|
|
8
|
+
Y_OFF_TOP = 20
|
|
9
|
+
X_OFF_RIGHT = 20
|
|
10
|
+
Y_OFF_BOTTOM = 20
|
|
11
|
+
POINT_RADIUS = 5
|
|
12
|
+
COLOR_BLUE = 0x1E90FF
|
|
13
|
+
|
|
14
|
+
@datapoints = 10.times.map {Random.new.rand(90)}
|
|
15
|
+
|
|
16
|
+
def graph_size(area_width, area_height)
|
|
17
|
+
graph_width = area_width - X_OFF_LEFT - X_OFF_RIGHT
|
|
18
|
+
graph_height = area_height - Y_OFF_TOP - Y_OFF_BOTTOM
|
|
19
|
+
[graph_width, graph_height]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def point_locations(width, height)
|
|
23
|
+
xincr = width / 9.0 # 10 - 1 to make the last point be at the end
|
|
24
|
+
yincr = height / 100.0
|
|
25
|
+
|
|
26
|
+
@datapoints.each_with_index.map do |value, i|
|
|
27
|
+
val = 100 - value
|
|
28
|
+
[xincr * i, yincr * val]
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# method-based custom control representing a graph path
|
|
33
|
+
def graph_path(width, height, should_extend, &block)
|
|
34
|
+
locations = point_locations(width, height)
|
|
35
|
+
path {
|
|
36
|
+
first_location = locations[0] # x and y
|
|
37
|
+
figure(first_location[0], first_location[1]) {
|
|
38
|
+
locations.each do |loc|
|
|
39
|
+
line(loc[0], loc[1])
|
|
40
|
+
end
|
|
41
|
+
if should_extend
|
|
42
|
+
line(width, height)
|
|
43
|
+
line(0, height)
|
|
44
|
+
|
|
45
|
+
closed true
|
|
46
|
+
end
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
# apply a transform to the coordinate space for this path so (0, 0) is the top-left corner of the graph
|
|
50
|
+
transform {
|
|
51
|
+
translate X_OFF_LEFT, Y_OFF_TOP
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
block.call
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
window('histogram example', 640, 480) {
|
|
59
|
+
margined true
|
|
60
|
+
|
|
61
|
+
horizontal_box {
|
|
62
|
+
vertical_box {
|
|
63
|
+
stretchy false
|
|
64
|
+
|
|
65
|
+
10.times do |i|
|
|
66
|
+
spinbox(0, 100) { |sb|
|
|
67
|
+
stretchy false
|
|
68
|
+
value @datapoints[i]
|
|
69
|
+
|
|
70
|
+
on_changed do
|
|
71
|
+
@datapoints[i] = sb.value
|
|
72
|
+
@area.queue_redraw_all
|
|
73
|
+
end
|
|
74
|
+
}
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
@color_button = color_button {
|
|
78
|
+
stretchy false
|
|
79
|
+
color COLOR_BLUE
|
|
80
|
+
|
|
81
|
+
on_changed do
|
|
82
|
+
@area.queue_redraw_all
|
|
83
|
+
end
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@area = area {
|
|
88
|
+
on_draw do |area_draw_params|
|
|
89
|
+
path {
|
|
90
|
+
rectangle(0, 0, area_draw_params[:area_width], area_draw_params[:area_height])
|
|
91
|
+
|
|
92
|
+
fill 0xFFFFFF
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
graph_width, graph_height = *graph_size(area_draw_params[:area_width], area_draw_params[:area_height])
|
|
96
|
+
|
|
97
|
+
path {
|
|
98
|
+
figure(X_OFF_LEFT, Y_OFF_TOP) {
|
|
99
|
+
line(X_OFF_LEFT, Y_OFF_TOP + graph_height)
|
|
100
|
+
line(X_OFF_LEFT + graph_width, Y_OFF_TOP + graph_height)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
stroke 0x000000, thickness: 2, miter_limit: 10
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
# now create the fill for the graph below the graph line
|
|
107
|
+
graph_path(graph_width, graph_height, true) {
|
|
108
|
+
fill @color_button.color.merge(a: 0.5)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
# now draw the histogram line
|
|
112
|
+
graph_path(graph_width, graph_height, false) {
|
|
113
|
+
stroke @color_button.color.merge(thickness: 2, miter_limit: 10)
|
|
114
|
+
}
|
|
115
|
+
end
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}.show
|