glimmer-dsl-libui 0.1.2 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|