glimmer-dsl-libui 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,10 +1,14 @@
1
- # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for LibUI 0.3.2
1
+ # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for LibUI 0.3.3
2
2
  ## Prerequisite-Free Ruby Desktop Development GUI Library
3
3
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-libui.svg)](http://badge.fury.io/rb/glimmer-dsl-libui)
4
4
  [![Join the chat at https://gitter.im/AndyObtiva/glimmer](https://badges.gitter.im/AndyObtiva/glimmer.svg)](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
5
5
 
6
6
  [Glimmer](https://github.com/AndyObtiva/glimmer) DSL for [LibUI](https://github.com/kojix2/LibUI) is a prerequisite-free Ruby desktop development GUI library. No need to pre-install any prerequisites. Just install the gem and have platform-independent native GUI that just works!
7
7
 
8
+ Mac | Windows | Linux
9
+ ----|---------|------
10
+ ![glimmer-dsl-libui-mac-control-gallery.png](images/glimmer-dsl-libui-mac-control-gallery.png) | ![glimmer-dsl-libui-windows-control-gallery.png](images/glimmer-dsl-libui-windows-control-gallery.png) | ![glimmer-dsl-libui-linux-control-gallery.png](images/glimmer-dsl-libui-linux-control-gallery.png)
11
+
8
12
  [LibUI](https://github.com/kojix2/LibUI) is a thin [Ruby](https://www.ruby-lang.org/en/) wrapper around [libui](https://github.com/andlabs/libui), a relatively new C GUI library that renders native controls on every platform (similar to [SWT](https://www.eclipse.org/swt/), but without the heavy weight of the [Java Virtual Machine](https://www.java.com/en/)).
9
13
 
10
14
  The main trade-off in using [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) as opposed to [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt) or [Glimmer DSL for Tk](https://github.com/AndyObtiva/glimmer-dsl-tk) is the fact that [SWT](https://www.eclipse.org/swt/) and [Tk](https://www.tcl.tk/) are more mature than mid-alpha [libui](https://github.com/andlabs/libui) as GUI toolkits. Still, if there is only a need to build a small simple application, [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) could be a good convenient choice due to having zero prerequisites beyond the dependencies included in the [Ruby gem](https://rubygems.org/gems/glimmer-dsl-libui). Also, just like [Glimmer DSL for Tk](https://github.com/AndyObtiva/glimmer-dsl-tk), its apps start instantly and have a small memory footprint. [LibUI](https://github.com/kojix2/LibUI) is a promising new GUI toolkit that might prove quite worthy in the future.
@@ -28,17 +32,9 @@ include Glimmer
28
32
  window('hello world').show
29
33
  ```
30
34
 
31
- Mac
32
-
33
- ![glimmer-dsl-libui-mac-basic-window.png](images/glimmer-dsl-libui-mac-basic-window.png)
34
-
35
- Windows
36
-
37
- ![glimmer-dsl-libui-windows-basic-window.png](images/glimmer-dsl-libui-windows-basic-window.png)
38
-
39
- Linux
40
-
41
- ![glimmer-dsl-libui-linux-basic-window.png](images/glimmer-dsl-libui-linux-basic-window.png)
35
+ Mac | Windows | Linux
36
+ ----|---------|------
37
+ ![glimmer-dsl-libui-mac-basic-window.png](images/glimmer-dsl-libui-mac-basic-window.png) | ![glimmer-dsl-libui-windows-basic-window.png](images/glimmer-dsl-libui-windows-basic-window.png) | ![glimmer-dsl-libui-linux-basic-window.png](images/glimmer-dsl-libui-linux-basic-window.png)
42
38
 
43
39
  Basic Table Progress Bar
44
40
 
@@ -77,17 +73,9 @@ window('Task Progress', 300, 200) {
77
73
  }.show
78
74
  ```
79
75
 
80
- Mac
81
-
82
- ![glimmer-dsl-libui-mac-basic-table-progress-bar.png](images/glimmer-dsl-libui-mac-basic-table-progress-bar.png)
83
-
84
- Windows
85
-
86
- ![glimmer-dsl-libui-windows-basic-table-progress-bar.png](images/glimmer-dsl-libui-windows-basic-table-progress-bar.png)
87
-
88
- Linux
89
-
90
- ![glimmer-dsl-libui-linux-basic-table-progress-bar.png](images/glimmer-dsl-libui-linux-basic-table-progress-bar.png)
76
+ Mac | Windows | Linux
77
+ ----|---------|------
78
+ ![glimmer-dsl-libui-mac-basic-table-progress-bar.png](images/glimmer-dsl-libui-mac-basic-table-progress-bar.png) | ![glimmer-dsl-libui-windows-basic-table-progress-bar.png](images/glimmer-dsl-libui-windows-basic-table-progress-bar.png) | ![glimmer-dsl-libui-linux-basic-table-progress-bar.png](images/glimmer-dsl-libui-linux-basic-table-progress-bar.png)
91
79
 
92
80
  Area Gallery
93
81
 
@@ -98,50 +86,50 @@ include Glimmer
98
86
 
99
87
  window('Area Gallery', 400, 400) {
100
88
  area {
101
- path { # declarative stable path
89
+ path { # declarative stable path (explicit path syntax for multiple shapes sharing attributes)
102
90
  square(0, 0, 100)
103
91
  square(100, 100, 400)
104
-
92
+
105
93
  fill r: 102, g: 102, b: 204
106
94
  }
107
- path { # declarative stable path
95
+
96
+ path { # declarative stable path (explicit path syntax for multiple shapes sharing attributes)
108
97
  rectangle(0, 100, 100, 400)
109
98
  rectangle(100, 0, 400, 100)
110
-
99
+
111
100
  # linear gradient (has x0, y0, x1, y1, and stops)
112
101
  fill x0: 10, y0: 10, x1: 350, y1: 350, stops: [{pos: 0.25, r: 204, g: 102, b: 204}, {pos: 0.75, r: 102, g: 102, b: 204}]
113
102
  }
114
- path { # declarative stable path
115
- polygon(100, 100, 100, 400, 400, 100, 400, 400)
116
-
103
+
104
+ polygon(100, 100, 100, 400, 400, 100, 400, 400) { # declarative stable path (implicit path syntax for a single shape nested directly under area)
117
105
  fill r: 202, g: 102, b: 104, a: 0.5
118
106
  stroke r: 0, g: 0, b: 0
119
107
  }
120
- path { # declarative stable path
121
- polybezier(0, 0, 200, 100, 100, 200, 400, 100, 300, 100, 100, 300, 100, 400, 100, 300, 300, 100, 400, 400)
122
-
108
+
109
+ polybezier(0, 0,
110
+ 200, 100, 100, 200, 400, 100,
111
+ 300, 100, 100, 300, 100, 400,
112
+ 100, 300, 300, 100, 400, 400) { # declarative stable path (implicit path syntax for a single shape nested directly under area)
123
113
  fill r: 202, g: 102, b: 204, a: 0.5
124
114
  stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
125
115
  }
126
- path { # declarative stable path
127
- polyline(100, 100, 400, 100, 100, 400, 400, 400, 0, 0)
128
116
 
117
+ polyline(100, 100, 400, 100, 100, 400, 400, 400, 0, 0) { # declarative stable path (implicit path syntax for a single shape nested directly under area)
129
118
  stroke r: 0, g: 0, b: 0, thickness: 2
130
119
  }
131
- path { # declarative stable path
132
- arc(404, 216, 190, 90, 90, false)
133
-
120
+
121
+ arc(404, 216, 190, 90, 90, false) { # declarative stable path (implicit path syntax for a single shape nested directly under area)
134
122
  # radial gradient (has an outer_radius in addition to x0, y0, x1, y1, and stops)
135
123
  fill outer_radius: 90, x0: 0, y0: 0, x1: 500, y1: 500, stops: [{pos: 0.25, r: 102, g: 102, b: 204, a: 0.5}, {pos: 0.75, r: 204, g: 102, b: 204}]
136
124
  stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
137
125
  }
138
- path { # declarative stable path
139
- circle(200, 200, 90)
140
-
126
+
127
+ circle(200, 200, 90) { # declarative stable path (implicit path syntax for a single shape nested directly under area)
141
128
  fill r: 202, g: 102, b: 204, a: 0.5
142
129
  stroke r: 0, g: 0, b: 0, thickness: 2
143
130
  }
144
- text(161, 40, 100) { # x, y, width
131
+
132
+ text(161, 40, 100) { # declarative stable text
145
133
  string('Area Gallery') {
146
134
  font family: 'Arial', size: (OS.mac? ? 14 : 11)
147
135
  color :black
@@ -199,20 +187,16 @@ window('Area Gallery', 400, 400) {
199
187
  }.show
200
188
  ```
201
189
 
202
- Mac
203
-
204
- ![glimmer-dsl-libui-mac-area-gallery.png](images/glimmer-dsl-libui-mac-area-gallery.png)
205
-
206
- Windows
207
-
208
- ![glimmer-dsl-libui-windows-area-gallery.png](images/glimmer-dsl-libui-windows-area-gallery.png)
209
-
210
- Linux
211
-
212
- ![glimmer-dsl-libui-linux-area-gallery.png](images/glimmer-dsl-libui-linux-area-gallery.png)
190
+ Mac | Windows | Linux
191
+ ----|---------|------
192
+ ![glimmer-dsl-libui-mac-area-gallery.png](images/glimmer-dsl-libui-mac-area-gallery.png) | ![glimmer-dsl-libui-windows-area-gallery.png](images/glimmer-dsl-libui-windows-area-gallery.png) | ![glimmer-dsl-libui-linux-area-gallery.png](images/glimmer-dsl-libui-linux-area-gallery.png)
213
193
 
214
194
  [Check Out Many More Examples Over Here!](#examples)
215
195
 
196
+ Mac | Windows | Linux
197
+ ----|---------|------
198
+ ![glimmer-dsl-libui-mac-tetris.png](images/glimmer-dsl-libui-mac-tetris.png) | ![glimmer-dsl-libui-windows-tetris.png](images/glimmer-dsl-libui-windows-tetris.png) | ![glimmer-dsl-libui-linux-tetris.png](images/glimmer-dsl-libui-linux-tetris.png)
199
+
216
200
  NOTE: [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) is feature-complete and in beta mode (though the C [libui](https://github.com/andlabs/libui) is still mid-alpha). Please help make better by contributing, adopting for small or low risk projects, and providing feedback. The more feedback and issues you report the better.
217
201
 
218
202
  Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interested in:
@@ -382,7 +366,7 @@ gem install glimmer-dsl-libui
382
366
  Or install via Bundler `Gemfile`:
383
367
 
384
368
  ```ruby
385
- gem 'glimmer-dsl-libui', '~> 0.3.2'
369
+ gem 'glimmer-dsl-libui', '~> 0.3.3'
386
370
  ```
387
371
 
388
372
  Add `require 'glimmer-dsl-libui'` at the top, and then `include Glimmer` into the top-level main object for testing or into an actual class for serious usage.
@@ -724,7 +708,7 @@ Learn more by checking out [examples](#examples).
724
708
 
725
709
  The `area` control is a canvas-like control for drawing paths that can be used in one of two ways:
726
710
  - Declaratively via stable paths: useful for stable paths that will not change often later on. Simply nest `path` and figures like `rectangle` and all drawing logic is generated automatically. Path proxy objects are preserved across redraws assuming there would be relatively few stable paths (mostly for decorative reasons).
727
- - Semi-declaratively via on_draw listener dynamic paths: useful for more dynamic paths that will definitely change very often. Open an `on_draw` listener block that receives a `area_draw_params` argument and nest `path` and figures like `rectangle` and all drawing logic is generated automatically. Path proxy objects are destroyed (thrown-away) at the end of drawing, thus having less memory overhead for drawing thousands of dynamic paths.
711
+ - Semi-declaratively via on_draw listener dynamic paths: useful for more dynamic paths that will definitely change very often. Open an `on_draw` listener block that receives an [`area_draw_params`](#area-draw-params) argument and nest `path` and figures like `rectangle` and all drawing logic is generated automatically. Path proxy objects are destroyed (thrown-away) at the end of drawing, thus having less memory overhead for drawing thousands of dynamic paths.
728
712
 
729
713
  Note that when nesting an `area` directly underneath `window` (without a layout control like `vertical_box`), it is automatically reparented with `vertical_box` in between the `window` and `area` since it would not show up on Linux otherwise.
730
714
 
@@ -750,19 +734,11 @@ window('Basic Area', 400, 400) {
750
734
  }.show
751
735
  ```
752
736
 
753
- Mac
754
-
755
- ![glimmer-dsl-libui-mac-basic-area.png](images/glimmer-dsl-libui-mac-basic-area.png)
737
+ Mac | Windows | Linux
738
+ ----|---------|------
739
+ ![glimmer-dsl-libui-mac-basic-area.png](images/glimmer-dsl-libui-mac-basic-area.png) | ![glimmer-dsl-libui-windows-basic-area.png](images/glimmer-dsl-libui-windows-basic-area.png) | ![glimmer-dsl-libui-linux-basic-area.png](images/glimmer-dsl-libui-linux-basic-area.png)
756
740
 
757
- Windows
758
-
759
- ![glimmer-dsl-libui-windows-basic-area.png](images/glimmer-dsl-libui-windows-basic-area.png)
760
-
761
- Linux
762
-
763
- ![glimmer-dsl-libui-linux-basic-area.png](images/glimmer-dsl-libui-linux-basic-area.png)
764
-
765
- Here is the same example using a semi-declarative `area` with `on_draw` listener that receives a `area_draw_params` argument and a dynamic path (you may copy/paste in [`girb`](#girb-glimmer-irb)):
741
+ Here is the same example using a semi-declarative `area` with `on_draw` listener that receives a [`area_draw_params`](#area-draw-params) argument and a dynamic path (you may copy/paste in [`girb`](#girb-glimmer-irb)):
766
742
 
767
743
  ```ruby
768
744
  require 'glimmer-dsl-libui'
@@ -796,26 +772,19 @@ Available nested `path` shapes:
796
772
  - `rectangle(x as Numeric, y as Numeric, width as Numeric, height as Numeric)`
797
773
  - `square(x as Numeric, y as Numeric, length as Numeric)`
798
774
  - `arc(x_center as Numeric, y_center as Numeric, radius as Numeric, start_angle as Numeric, sweep as Numeric, is_negative as Boolean)`
799
- - `line(x as Numeric, y as Numeric)`
800
- - `bezier(c1_x as Numeric, c1_y as Numeric, c2_x as Numeric, c2_y as Numeric, end_x as Numeric, end_y as Numeric)`
801
- - `polygon(point_array as Array of Arrays of Numeric or Array of Numeric)`: closed figure of lines; can receive points as [[x1, y1], [x2, y2], ...] or [x1, y1, x2, y2, ...]
802
- - `polyline(point_array as Array of Arrays of Numeric or Array of Numeric)`: open figure of lines; can receive points as [[x1, y1], [x2, y2], ...] or [x1, y1, x2, y2, ...]
803
- - `polybezier(point_array as Array of Arrays of Numeric or Array of Numeric)`: open figure of beziers; can receive points as [[start_x1, start_y1], [c1_x2, c1_y2, c2_x2, c2_y2, end_x2, end_y2], [c1_x3, c1_y3, c2_x3, c2_y3, end_x3, end_y3], ...] or [start_x1, start_y1, c1_x2, c1_y2, c2_x2, c2_y2, end_x2, end_y2, c1_x3, c1_y3, c2_x3, c2_y3, end_x3, end_y3, ...]
775
+ - `circle(x_center as Numeric, y_center as Numeric, radius as Numeric)`
776
+ - `line(x as Numeric, y as Numeric)`: must be placed in a figure (check `polyline`/`polygon` alternatives that do not require a `figure`)
777
+ - `bezier(c1_x as Numeric, c1_y as Numeric, c2_x as Numeric, c2_y as Numeric, end_x as Numeric, end_y as Numeric)`: must be placed in a figure (check `polybezier` alternative that does not require a `figure`)
778
+ - `polygon(point_array as Array of Arrays of Numeric or Array of Numeric)`: shortcut for a closed figure of lines; can receive points as [[x1, y1], [x2, y2], ...] or [x1, y1, x2, y2, ...]
779
+ - `polyline(point_array as Array of Arrays of Numeric or Array of Numeric)`: shortcut for an open figure of lines; can receive points as [[x1, y1], [x2, y2], ...] or [x1, y1, x2, y2, ...]
780
+ - `polybezier(point_array as Array of Arrays of Numeric or Array of Numeric)`: shortcut for an open figure of beziers; can receive points as [[start_x1, start_y1], [c1_x2, c1_y2, c2_x2, c2_y2, end_x2, end_y2], [c1_x3, c1_y3, c2_x3, c2_y3, end_x3, end_y3], ...] or [start_x1, start_y1, c1_x2, c1_y2, c2_x2, c2_y2, end_x2, end_y2, c1_x3, c1_y3, c2_x3, c2_y3, end_x3, end_y3, ...]
804
781
  - `figure(x=nil as Numeric, y=nil as Numeric)` (composite that can contain other shapes) (can set `closed true` to connect last point to first point automatically)
805
782
 
806
783
  Check [examples/area_gallery.rb](#area-gallery) for an overiew of all `path` shapes.
807
784
 
808
- Mac
809
-
810
- ![glimmer-dsl-libui-mac-area-gallery.png](images/glimmer-dsl-libui-mac-area-gallery.png)
811
-
812
- Windows
813
-
814
- ![glimmer-dsl-libui-windows-area-gallery.png](images/glimmer-dsl-libui-windows-area-gallery.png)
815
-
816
- Linux
817
-
818
- ![glimmer-dsl-libui-linux-area-gallery.png](images/glimmer-dsl-libui-linux-area-gallery.png)
785
+ Mac | Windows | Linux
786
+ ----|---------|------
787
+ ![glimmer-dsl-libui-mac-area-gallery.png](images/glimmer-dsl-libui-mac-area-gallery.png) | ![glimmer-dsl-libui-windows-area-gallery.png](images/glimmer-dsl-libui-windows-area-gallery.png) | ![glimmer-dsl-libui-linux-area-gallery.png](images/glimmer-dsl-libui-linux-area-gallery.png)
819
788
 
820
789
  #### Area Text
821
790
 
@@ -870,17 +839,9 @@ window('area text drawing') {
870
839
 
871
840
  You may checkout [examples/basic_draw_text.rb](#basic-draw-text) and [examples/custom_draw_text.rb](#custom-draw-text) for examples of using `text` inside `area`.
872
841
 
873
- Mac
874
-
875
- ![glimmer-dsl-libui-mac-custom-draw-text-changed.png](images/glimmer-dsl-libui-mac-custom-draw-text-changed.png)
876
-
877
- Windows
878
-
879
- ![glimmer-dsl-libui-windows-custom-draw-text-changed.png](images/glimmer-dsl-libui-windows-custom-draw-text-changed.png)
880
-
881
- Linux
882
-
883
- ![glimmer-dsl-libui-linux-custom-draw-text-changed.png](images/glimmer-dsl-libui-linux-custom-draw-text-changed.png)
842
+ Mac | Windows | Linux
843
+ ----|---------|------
844
+ ![glimmer-dsl-libui-mac-custom-draw-text-changed.png](images/glimmer-dsl-libui-mac-custom-draw-text-changed.png) | ![glimmer-dsl-libui-windows-custom-draw-text-changed.png](images/glimmer-dsl-libui-windows-custom-draw-text-changed.png) | ![glimmer-dsl-libui-linux-custom-draw-text-changed.png](images/glimmer-dsl-libui-linux-custom-draw-text-changed.png)
884
845
 
885
846
  #### Area Image
886
847
 
@@ -897,17 +858,13 @@ Given that it is very new and is not a [libui](https://github.com/andlabs/libui)
897
858
 
898
859
  Currently, it is recommended to use `image` with very small `width` and `height` values only.
899
860
 
900
- Setting a `transform` `matrix` is supported under `image` just like it is under `path` and `text` inside `area`.
861
+ Setting a [`transform` `matrix`](#area-transform-matrix) is supported under `image` just like it is under `path` and `text` inside `area`.
901
862
 
902
863
  Example of using `image` declaratively (you may copy/paste in [`girb`](#girb-glimmer-irb)):
903
864
 
904
- Mac
905
-
906
- ![glimmer-dsl-libui-mac-basic-image.png](images/glimmer-dsl-libui-mac-basic-image.png)
907
-
908
- Windows
909
-
910
- ![glimmer-dsl-libui-windows-basic-image.png](images/glimmer-dsl-libui-windows-basic-image.png)
865
+ Mac | Windows | Linux
866
+ ----|---------|------
867
+ ![glimmer-dsl-libui-mac-basic-image.png](images/glimmer-dsl-libui-mac-basic-image.png) | ![glimmer-dsl-libui-windows-basic-image.png](images/glimmer-dsl-libui-windows-basic-image.png) | ![glimmer-dsl-libui-linux-basic-image.png](images/glimmer-dsl-libui-linux-basic-image.png)
911
868
 
912
869
  ```ruby
913
870
  require 'glimmer-dsl-libui'
@@ -1374,12 +1331,124 @@ For Linux, simply package your app as a [Ruby Gem](https://guides.rubygems.org/w
1374
1331
 
1375
1332
  ## Glimmer Style Guide
1376
1333
 
1377
- - Control arguments are always wrapped by parentheses
1378
- - Control blocks are always declared with curly braces to clearly visualize hierarchical view code and separate from logic code
1379
- - Control property declarations always have arguments and never take a block
1380
- - Control property arguments are never wrapped inside parentheses
1381
- - Control listeners are always declared starting with on_ prefix and affixing listener event method name afterwards in underscored lowercase form. Their multi-line blocks have a `do; end` style.
1382
- - Pure logic multi-line blocks that do not constitute GUI DSL view elements have `do; end` style to clearly separate logic code from view code.
1334
+ **1 - Control arguments are always wrapped by parentheses.**
1335
+
1336
+ Example:
1337
+
1338
+ ```ruby
1339
+ label('Name')
1340
+ ```
1341
+
1342
+ **2 - Control blocks are always declared with curly braces to clearly visualize hierarchical view code and separate from logic code.**
1343
+
1344
+ Example:
1345
+
1346
+ ```ruby
1347
+ group('Basic Controls') {
1348
+ vertical_box {
1349
+ button('Button') {
1350
+ }
1351
+ }
1352
+ }
1353
+ ```
1354
+
1355
+ **3 - Control property declarations always have arguments that are never wrapped inside parentheses and never take a block.**
1356
+
1357
+ Example:
1358
+
1359
+ ```ruby
1360
+ spinbox(0, 100) {
1361
+ stretchy false
1362
+ value 42
1363
+ }
1364
+ ```
1365
+
1366
+ **4 - Control listeners are always declared starting with on_ prefix and affixing listener event method name afterwards in underscored lowercase form. Their multi-line blocks have a `do; end` style.**
1367
+
1368
+ Example:
1369
+
1370
+ ```ruby
1371
+ button('Click') {
1372
+ on_clicked do
1373
+ msg_box('Information', 'You clicked the button')
1374
+ end
1375
+ }
1376
+ ```
1377
+
1378
+ **5 - Iterator multi-line blocks always have `do; end` style to clearly separate logic code from view code.**
1379
+
1380
+ Example:
1381
+
1382
+ ```ruby
1383
+ @field_hash.keys.each do |field|
1384
+ label(field) {
1385
+ stretchy false
1386
+ }
1387
+
1388
+ entry {
1389
+ on_changed do |control|
1390
+ @field_hash[field] = control.text
1391
+ end
1392
+ }
1393
+ end
1394
+ ```
1395
+
1396
+ **6 - In a widget's content block, attributes are declared first, with layout management attributes on top (e.g. `stretchy false`); an empty line separates attributes from nested widgets and listeners following afterwards.**
1397
+
1398
+ Example:
1399
+
1400
+ ```ruby
1401
+ group('Numbers') {
1402
+ stretchy false
1403
+
1404
+ vertical_box {
1405
+ spinbox(0, 100) {
1406
+ stretchy false
1407
+ value 42
1408
+
1409
+ on_changed do |s|
1410
+ puts "New Spinbox value: #{s.value}"
1411
+ $stdout.flush # for Windows
1412
+ end
1413
+ }
1414
+ }
1415
+ }
1416
+ ```
1417
+
1418
+ **7 - Unlike attributes, nested widgets with a content block and listeners are always separated from each other by an empty line to make readability easier except where it helps to group two widgets together (e.g. label and described entry).**
1419
+
1420
+ Example:
1421
+
1422
+ ```ruby
1423
+ area {
1424
+ path { # needs an empty line afterwards
1425
+ square(0, 0, 100) # does not have a content block, so no empty line is needed
1426
+ square(100, 100, 400) # does not have a content block, so no empty line is needed
1427
+
1428
+ fill r: 102, g: 102, b: 204
1429
+ }
1430
+
1431
+ path { # needs an empty line afterwards
1432
+ rectangle(0, 100, 100, 400) # does not have a content block, so no empty line is needed
1433
+ rectangle(100, 0, 400, 100) # does not have a content block, so no empty line is needed
1434
+
1435
+ fill x0: 10, y0: 10, x1: 350, y1: 350, stops: [{pos: 0.25, r: 204, g: 102, b: 204}, {pos: 0.75, r: 102, g: 102, b: 204}]
1436
+ }
1437
+
1438
+ polygon(100, 100, 100, 400, 400, 100, 400, 400) { # needs an empty line afterwards
1439
+ fill r: 202, g: 102, b: 104, a: 0.5 # attributes do not need an empty line separator
1440
+ stroke r: 0, g: 0, b: 0 # attributes do not need an empty line separator
1441
+ }
1442
+
1443
+ on_mouse_up do |area_mouse_event| # needs an empty line afterwards
1444
+ puts 'mouse up'
1445
+ end
1446
+
1447
+ on_key_up do |area_key_event| # needs an empty line afterwards
1448
+ puts 'key up'
1449
+ end
1450
+ }
1451
+ ```
1383
1452
 
1384
1453
  ## Examples
1385
1454
 
@@ -1401,17 +1470,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
1401
1470
  ruby -r glimmer-dsl-libui -e "require 'examples/meta_example'"
1402
1471
  ```
1403
1472
 
1404
- Mac
1405
-
1406
- ![glimmer-dsl-libui-mac-meta-example.png](images/glimmer-dsl-libui-mac-meta-example.png)
1407
-
1408
- Windows
1409
-
1410
- ![glimmer-dsl-libui-windows-meta-example.png](images/glimmer-dsl-libui-windows-meta-example.png)
1411
-
1412
- Linux
1413
-
1414
- ![glimmer-dsl-libui-linux-meta-example.png](images/glimmer-dsl-libui-linux-meta-example.png)
1473
+ Mac | Windows | Linux
1474
+ ----|---------|------
1475
+ ![glimmer-dsl-libui-mac-meta-example.png](images/glimmer-dsl-libui-mac-meta-example.png) | ![glimmer-dsl-libui-windows-meta-example.png](images/glimmer-dsl-libui-windows-meta-example.png) | ![glimmer-dsl-libui-linux-meta-example.png](images/glimmer-dsl-libui-linux-meta-example.png)
1415
1476
 
1416
1477
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
1417
1478
 
@@ -1569,17 +1630,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
1569
1630
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_window'"
1570
1631
  ```
1571
1632
 
1572
- Mac
1573
-
1574
- ![glimmer-dsl-libui-mac-basic-window.png](images/glimmer-dsl-libui-mac-basic-window.png)
1575
-
1576
- Windows
1577
-
1578
- ![glimmer-dsl-libui-windows-basic-window.png](images/glimmer-dsl-libui-windows-basic-window.png)
1579
-
1580
- Linux
1581
-
1582
- ![glimmer-dsl-libui-linux-basic-window.png](images/glimmer-dsl-libui-linux-basic-window.png)
1633
+ Mac | Windows | Linux
1634
+ ----|---------|------
1635
+ ![glimmer-dsl-libui-mac-basic-window.png](images/glimmer-dsl-libui-mac-basic-window.png) | ![glimmer-dsl-libui-windows-basic-window.png](images/glimmer-dsl-libui-windows-basic-window.png) | ![glimmer-dsl-libui-linux-basic-window.png](images/glimmer-dsl-libui-linux-basic-window.png)
1583
1636
 
1584
1637
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
1585
1638
 
@@ -1652,20 +1705,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
1652
1705
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_button'"
1653
1706
  ```
1654
1707
 
1655
- Mac
1656
-
1657
- ![glimmer-dsl-libui-mac-basic-button.png](images/glimmer-dsl-libui-mac-basic-button.png)
1658
- ![glimmer-dsl-libui-mac-basic-button-msg-box.png](images/glimmer-dsl-libui-mac-basic-button-msg-box.png)
1659
-
1660
- Windows
1661
-
1662
- ![glimmer-dsl-libui-windows-basic-button.png](images/glimmer-dsl-libui-windows-basic-button.png)
1663
- ![glimmer-dsl-libui-windows-basic-button-msg-box.png](images/glimmer-dsl-libui-windows-basic-button-msg-box.png)
1664
-
1665
- Linux
1666
-
1667
- ![glimmer-dsl-libui-linux-basic-button.png](images/glimmer-dsl-libui-linux-basic-button.png)
1668
- ![glimmer-dsl-libui-linux-basic-button-msg-box.png](images/glimmer-dsl-libui-linux-basic-button-msg-box.png)
1708
+ Mac | Windows | Linux
1709
+ ----|---------|------
1710
+ ![glimmer-dsl-libui-mac-basic-button.png](images/glimmer-dsl-libui-mac-basic-button.png) ![glimmer-dsl-libui-mac-basic-button-msg-box.png](images/glimmer-dsl-libui-mac-basic-button-msg-box.png) | ![glimmer-dsl-libui-windows-basic-button.png](images/glimmer-dsl-libui-windows-basic-button.png) ![glimmer-dsl-libui-windows-basic-button-msg-box.png](images/glimmer-dsl-libui-windows-basic-button-msg-box.png) | ![glimmer-dsl-libui-linux-basic-button.png](images/glimmer-dsl-libui-linux-basic-button.png) ![glimmer-dsl-libui-linux-basic-button-msg-box.png](images/glimmer-dsl-libui-linux-basic-button-msg-box.png)
1669
1711
 
1670
1712
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
1671
1713
 
@@ -1734,20 +1776,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
1734
1776
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_entry'"
1735
1777
  ```
1736
1778
 
1737
- Mac
1738
-
1739
- ![glimmer-dsl-libui-mac-basic-entry.png](images/glimmer-dsl-libui-mac-basic-entry.png)
1740
- ![glimmer-dsl-libui-mac-basic-entry-msg-box.png](images/glimmer-dsl-libui-mac-basic-entry-msg-box.png)
1741
-
1742
- Windows
1743
-
1744
- ![glimmer-dsl-libui-windows-basic-entry.png](images/glimmer-dsl-libui-windows-basic-entry.png)
1745
- ![glimmer-dsl-libui-windows-basic-entry-msg-box.png](images/glimmer-dsl-libui-windows-basic-entry-msg-box.png)
1746
-
1747
- Linux
1748
-
1749
- ![glimmer-dsl-libui-linux-basic-entry.png](images/glimmer-dsl-libui-linux-basic-entry.png)
1750
- ![glimmer-dsl-libui-linux-basic-entry-msg-box.png](images/glimmer-dsl-libui-linux-basic-entry-msg-box.png)
1779
+ Mac | Windows | Linux
1780
+ ----|---------|------
1781
+ ![glimmer-dsl-libui-mac-basic-entry.png](images/glimmer-dsl-libui-mac-basic-entry.png) ![glimmer-dsl-libui-mac-basic-entry-msg-box.png](images/glimmer-dsl-libui-mac-basic-entry-msg-box.png) | ![glimmer-dsl-libui-windows-basic-entry.png](images/glimmer-dsl-libui-windows-basic-entry.png) ![glimmer-dsl-libui-windows-basic-entry-msg-box.png](images/glimmer-dsl-libui-windows-basic-entry-msg-box.png) | ![glimmer-dsl-libui-linux-basic-entry.png](images/glimmer-dsl-libui-linux-basic-entry.png) ![glimmer-dsl-libui-linux-basic-entry-msg-box.png](images/glimmer-dsl-libui-linux-basic-entry-msg-box.png)
1751
1782
 
1752
1783
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
1753
1784
 
@@ -1840,17 +1871,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
1840
1871
  ruby -r glimmer-dsl-libui -e "require 'examples/simple_notepad'"
1841
1872
  ```
1842
1873
 
1843
- Mac
1844
-
1845
- ![glimmer-dsl-libui-mac-simple-notepad.png](images/glimmer-dsl-libui-mac-simple-notepad.png)
1846
-
1847
- Windows
1848
-
1849
- ![glimmer-dsl-libui-windows-simple-notepad.png](images/glimmer-dsl-libui-windows-simple-notepad.png)
1850
-
1851
- Linux
1852
-
1853
- ![glimmer-dsl-libui-linux-simple-notepad.png](images/glimmer-dsl-libui-linux-simple-notepad.png)
1874
+ Mac | Windows | Linux
1875
+ ----|---------|------
1876
+ ![glimmer-dsl-libui-mac-simple-notepad.png](images/glimmer-dsl-libui-mac-simple-notepad.png) | ![glimmer-dsl-libui-windows-simple-notepad.png](images/glimmer-dsl-libui-windows-simple-notepad.png) | ![glimmer-dsl-libui-linux-simple-notepad.png](images/glimmer-dsl-libui-linux-simple-notepad.png)
1854
1877
 
1855
1878
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
1856
1879
 
@@ -1916,20 +1939,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
1916
1939
  ruby -r glimmer-dsl-libui -e "require 'examples/midi_player'"
1917
1940
  ```
1918
1941
 
1919
- Mac
1920
-
1921
- ![glimmer-dsl-libui-mac-midi-player.png](images/glimmer-dsl-libui-mac-midi-player.png)
1922
- ![glimmer-dsl-libui-mac-midi-player-msg-box.png](images/glimmer-dsl-libui-mac-midi-player-msg-box.png)
1923
-
1924
- Windows
1925
-
1926
- ![glimmer-dsl-libui-windows-midi-player.png](images/glimmer-dsl-libui-windows-midi-player.png)
1927
- ![glimmer-dsl-libui-windows-midi-player-msg-box.png](images/glimmer-dsl-libui-windows-midi-player-msg-box.png)
1928
-
1929
- Linux
1930
-
1931
- ![glimmer-dsl-libui-linux-midi-player.png](images/glimmer-dsl-libui-linux-midi-player.png)
1932
- ![glimmer-dsl-libui-linux-midi-player-msg-box.png](images/glimmer-dsl-libui-linux-midi-player-msg-box.png)
1942
+ Mac | Windows | Linux
1943
+ ----|---------|------
1944
+ ![glimmer-dsl-libui-mac-midi-player.png](images/glimmer-dsl-libui-mac-midi-player.png) ![glimmer-dsl-libui-mac-midi-player-msg-box.png](images/glimmer-dsl-libui-mac-midi-player-msg-box.png) | ![glimmer-dsl-libui-windows-midi-player.png](images/glimmer-dsl-libui-windows-midi-player.png) ![glimmer-dsl-libui-windows-midi-player-msg-box.png](images/glimmer-dsl-libui-windows-midi-player-msg-box.png) | ![glimmer-dsl-libui-linux-midi-player.png](images/glimmer-dsl-libui-linux-midi-player.png) ![glimmer-dsl-libui-linux-midi-player-msg-box.png](images/glimmer-dsl-libui-linux-midi-player-msg-box.png)
1933
1945
 
1934
1946
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
1935
1947
 
@@ -2139,17 +2151,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
2139
2151
  ruby -r glimmer-dsl-libui -e "require 'examples/control_gallery'"
2140
2152
  ```
2141
2153
 
2142
- Mac
2143
-
2144
- ![glimmer-dsl-libui-mac-control-gallery.png](images/glimmer-dsl-libui-mac-control-gallery.png)
2145
-
2146
- Windows
2147
-
2148
- ![glimmer-dsl-libui-windows-control-gallery.png](images/glimmer-dsl-libui-windows-control-gallery.png)
2149
-
2150
- Linux
2151
-
2152
- ![glimmer-dsl-libui-linux-control-gallery.png](images/glimmer-dsl-libui-linux-control-gallery.png)
2154
+ Mac | Windows | Linux
2155
+ ----|---------|------
2156
+ ![glimmer-dsl-libui-mac-control-gallery.png](images/glimmer-dsl-libui-mac-control-gallery.png) | ![glimmer-dsl-libui-windows-control-gallery.png](images/glimmer-dsl-libui-windows-control-gallery.png) | ![glimmer-dsl-libui-linux-control-gallery.png](images/glimmer-dsl-libui-linux-control-gallery.png)
2153
2157
 
2154
2158
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
2155
2159
 
@@ -2533,20 +2537,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
2533
2537
  ruby -r glimmer-dsl-libui -e "require 'examples/font_button'"
2534
2538
  ```
2535
2539
 
2536
- Mac
2537
-
2538
- ![glimmer-dsl-libui-mac-font-button.png](images/glimmer-dsl-libui-mac-font-button.png)
2539
- ![glimmer-dsl-libui-mac-font-button-selection.png](images/glimmer-dsl-libui-mac-font-button-selection.png)
2540
-
2541
- Windows
2542
-
2543
- ![glimmer-dsl-libui-windows-font-button.png](images/glimmer-dsl-libui-windows-font-button.png)
2544
- ![glimmer-dsl-libui-windows-font-button-selection.png](images/glimmer-dsl-libui-windows-font-button-selection.png)
2545
-
2546
- Linux
2547
-
2548
- ![glimmer-dsl-libui-linux-font-button.png](images/glimmer-dsl-libui-linux-font-button.png)
2549
- ![glimmer-dsl-libui-linux-font-button-selection.png](images/glimmer-dsl-libui-linux-font-button-selection.png)
2540
+ Mac | Windows | Linux
2541
+ ----|---------|------
2542
+ ![glimmer-dsl-libui-mac-font-button.png](images/glimmer-dsl-libui-mac-font-button.png) ![glimmer-dsl-libui-mac-font-button-selection.png](images/glimmer-dsl-libui-mac-font-button-selection.png) | ![glimmer-dsl-libui-windows-font-button.png](images/glimmer-dsl-libui-windows-font-button.png) ![glimmer-dsl-libui-windows-font-button-selection.png](images/glimmer-dsl-libui-windows-font-button-selection.png) | ![glimmer-dsl-libui-linux-font-button.png](images/glimmer-dsl-libui-linux-font-button.png) ![glimmer-dsl-libui-linux-font-button-selection.png](images/glimmer-dsl-libui-linux-font-button-selection.png)
2550
2543
 
2551
2544
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
2552
2545
 
@@ -2622,20 +2615,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
2622
2615
  ruby -r glimmer-dsl-libui -e "require 'examples/color_button'"
2623
2616
  ```
2624
2617
 
2625
- Mac
2626
-
2627
- ![glimmer-dsl-libui-mac-color-button.png](images/glimmer-dsl-libui-mac-color-button.png)
2628
- ![glimmer-dsl-libui-mac-color-button-selection.png](images/glimmer-dsl-libui-mac-color-button-selection.png)
2629
-
2630
- Windows
2631
-
2632
- ![glimmer-dsl-libui-windows-color-button.png](images/glimmer-dsl-libui-windows-color-button.png)
2633
- ![glimmer-dsl-libui-windows-color-button-selection.png](images/glimmer-dsl-libui-windows-color-button-selection.png)
2634
-
2635
- Linux
2636
-
2637
- ![glimmer-dsl-libui-linux-color-button.png](images/glimmer-dsl-libui-linux-color-button.png)
2638
- ![glimmer-dsl-libui-linux-color-button-selection.png](images/glimmer-dsl-libui-linux-color-button-selection.png)
2618
+ Mac | Windows | Linux
2619
+ ----|---------|------
2620
+ ![glimmer-dsl-libui-mac-color-button.png](images/glimmer-dsl-libui-mac-color-button.png) ![glimmer-dsl-libui-mac-color-button-selection.png](images/glimmer-dsl-libui-mac-color-button-selection.png) | ![glimmer-dsl-libui-windows-color-button.png](images/glimmer-dsl-libui-windows-color-button.png) ![glimmer-dsl-libui-windows-color-button-selection.png](images/glimmer-dsl-libui-windows-color-button-selection.png) | ![glimmer-dsl-libui-linux-color-button.png](images/glimmer-dsl-libui-linux-color-button.png) ![glimmer-dsl-libui-linux-color-button-selection.png](images/glimmer-dsl-libui-linux-color-button-selection.png)
2639
2621
 
2640
2622
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
2641
2623
 
@@ -2672,17 +2654,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
2672
2654
  ruby -r glimmer-dsl-libui -e "require 'examples/date_time_picker'"
2673
2655
  ```
2674
2656
 
2675
- Mac
2676
-
2677
- ![glimmer-dsl-libui-mac-date-time-picker.png](images/glimmer-dsl-libui-mac-date-time-picker.png)
2678
-
2679
- Windows
2680
-
2681
- ![glimmer-dsl-libui-windows-date-time-picker.png](images/glimmer-dsl-libui-windows-date-time-picker.png)
2682
-
2683
- Linux
2684
-
2685
- ![glimmer-dsl-libui-linux-date-time-picker.png](images/glimmer-dsl-libui-linux-date-time-picker.png)
2657
+ Mac | Windows | Linux
2658
+ ----|---------|------
2659
+ ![glimmer-dsl-libui-mac-date-time-picker.png](images/glimmer-dsl-libui-mac-date-time-picker.png) | ![glimmer-dsl-libui-windows-date-time-picker.png](images/glimmer-dsl-libui-windows-date-time-picker.png) | ![glimmer-dsl-libui-linux-date-time-picker.png](images/glimmer-dsl-libui-linux-date-time-picker.png)
2686
2660
 
2687
2661
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
2688
2662
 
@@ -2766,23 +2740,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
2766
2740
  ruby -r glimmer-dsl-libui -e "require 'examples/grid'"
2767
2741
  ```
2768
2742
 
2769
- Mac
2770
-
2771
- ![glimmer-dsl-libui-mac-grid-span.png](images/glimmer-dsl-libui-mac-grid-span.png)
2772
- ![glimmer-dsl-libui-mac-grid-expand.png](images/glimmer-dsl-libui-mac-grid-expand.png)
2773
- ![glimmer-dsl-libui-mac-grid-align.png](images/glimmer-dsl-libui-mac-grid-align.png)
2774
-
2775
- Windows
2776
-
2777
- ![glimmer-dsl-libui-windows-grid-span.png](images/glimmer-dsl-libui-windows-grid-span.png)
2778
- ![glimmer-dsl-libui-windows-grid-expand.png](images/glimmer-dsl-libui-windows-grid-expand.png)
2779
- ![glimmer-dsl-libui-windows-grid-align.png](images/glimmer-dsl-libui-windows-grid-align.png)
2780
-
2781
- Linux
2782
-
2783
- ![glimmer-dsl-libui-linux-grid-span.png](images/glimmer-dsl-libui-linux-grid-span.png)
2784
- ![glimmer-dsl-libui-linux-grid-expand.png](images/glimmer-dsl-libui-linux-grid-expand.png)
2785
- ![glimmer-dsl-libui-linux-grid-align.png](images/glimmer-dsl-libui-linux-grid-align.png)
2743
+ Mac | Windows | Linux
2744
+ ----|---------|------
2745
+ ![glimmer-dsl-libui-mac-grid-span.png](images/glimmer-dsl-libui-mac-grid-span.png) ![glimmer-dsl-libui-mac-grid-expand.png](images/glimmer-dsl-libui-mac-grid-expand.png) ![glimmer-dsl-libui-mac-grid-align.png](images/glimmer-dsl-libui-mac-grid-align.png) | ![glimmer-dsl-libui-windows-grid-span.png](images/glimmer-dsl-libui-windows-grid-span.png) ![glimmer-dsl-libui-windows-grid-expand.png](images/glimmer-dsl-libui-windows-grid-expand.png) ![glimmer-dsl-libui-windows-grid-align.png](images/glimmer-dsl-libui-windows-grid-align.png) | ![glimmer-dsl-libui-linux-grid-span.png](images/glimmer-dsl-libui-linux-grid-span.png) ![glimmer-dsl-libui-linux-grid-expand.png](images/glimmer-dsl-libui-linux-grid-expand.png) ![glimmer-dsl-libui-linux-grid-align.png](images/glimmer-dsl-libui-linux-grid-align.png)
2786
2746
 
2787
2747
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
2788
2748
 
@@ -2795,16 +2755,16 @@ window('Grid') {
2795
2755
  tab {
2796
2756
  tab_item('Span') {
2797
2757
  grid {
2798
- 4.times { |top_value|
2799
- 4.times { |left_value|
2758
+ 4.times do |top_value|
2759
+ 4.times do |left_value|
2800
2760
  label("(#{left_value}, #{top_value}) xspan1\nyspan1") {
2801
2761
  left left_value
2802
2762
  top top_value
2803
2763
  hexpand true
2804
2764
  vexpand true
2805
2765
  }
2806
- }
2807
- }
2766
+ end
2767
+ end
2808
2768
  label("(0, 4) xspan2\nyspan1 more text fits horizontally") {
2809
2769
  left 0
2810
2770
  top 4
@@ -2911,20 +2871,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
2911
2871
  ruby -r glimmer-dsl-libui -e "require 'examples/form'"
2912
2872
  ```
2913
2873
 
2914
- Mac
2915
-
2916
- ![glimmer-dsl-libui-mac-form.png](images/glimmer-dsl-libui-mac-form.png)
2917
- ![glimmer-dsl-libui-mac-form-msg-box.png](images/glimmer-dsl-libui-mac-form-msg-box.png)
2918
-
2919
- Windows
2920
-
2921
- ![glimmer-dsl-libui-windows-form.png](images/glimmer-dsl-libui-windows-form.png)
2922
- ![glimmer-dsl-libui-windows-form-msg-box.png](images/glimmer-dsl-libui-windows-form-msg-box.png)
2923
-
2924
- Linux
2925
-
2926
- ![glimmer-dsl-libui-linux-form.png](images/glimmer-dsl-libui-linux-form.png)
2927
- ![glimmer-dsl-libui-linux-form-msg-box.png](images/glimmer-dsl-libui-linux-form-msg-box.png)
2874
+ Mac | Windows | Linux
2875
+ ----|---------|------
2876
+ ![glimmer-dsl-libui-mac-form.png](images/glimmer-dsl-libui-mac-form.png) ![glimmer-dsl-libui-mac-form-msg-box.png](images/glimmer-dsl-libui-mac-form-msg-box.png) | ![glimmer-dsl-libui-windows-form.png](images/glimmer-dsl-libui-windows-form.png) ![glimmer-dsl-libui-windows-form-msg-box.png](images/glimmer-dsl-libui-windows-form-msg-box.png) | ![glimmer-dsl-libui-linux-form.png](images/glimmer-dsl-libui-linux-form.png) ![glimmer-dsl-libui-linux-form-msg-box.png](images/glimmer-dsl-libui-linux-form-msg-box.png)
2928
2877
 
2929
2878
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
2930
2879
 
@@ -2982,17 +2931,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
2982
2931
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_table'"
2983
2932
  ```
2984
2933
 
2985
- Mac
2986
-
2987
- ![glimmer-dsl-libui-mac-basic-table.png](images/glimmer-dsl-libui-mac-basic-table.png)
2988
-
2989
- Windows
2990
-
2991
- ![glimmer-dsl-libui-windows-basic-table.png](images/glimmer-dsl-libui-windows-basic-table.png)
2992
-
2993
- Linux
2994
-
2995
- ![glimmer-dsl-libui-linux-basic-table.png](images/glimmer-dsl-libui-linux-basic-table.png)
2934
+ Mac | Windows | Linux
2935
+ ----|---------|------
2936
+ ![glimmer-dsl-libui-mac-basic-table.png](images/glimmer-dsl-libui-mac-basic-table.png) | ![glimmer-dsl-libui-windows-basic-table.png](images/glimmer-dsl-libui-windows-basic-table.png) | ![glimmer-dsl-libui-linux-basic-table.png](images/glimmer-dsl-libui-linux-basic-table.png)
2996
2937
 
2997
2938
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
2998
2939
 
@@ -3106,23 +3047,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
3106
3047
  ruby -r glimmer-dsl-libui -e "require 'examples/editable_table'"
3107
3048
  ```
3108
3049
 
3109
- Mac
3110
-
3111
- ![glimmer-dsl-libui-mac-editable-table.png](images/glimmer-dsl-libui-mac-editable-table.png)
3112
- ![glimmer-dsl-libui-mac-editable-table-editing.png](images/glimmer-dsl-libui-mac-editable-table-editing.png)
3113
- ![glimmer-dsl-libui-mac-editable-table-edited.png](images/glimmer-dsl-libui-mac-editable-table-edited.png)
3114
-
3115
- Windows
3116
-
3117
- ![glimmer-dsl-libui-windows-editable-table.png](images/glimmer-dsl-libui-windows-editable-table.png)
3118
- ![glimmer-dsl-libui-windows-editable-table-editing.png](images/glimmer-dsl-libui-windows-editable-table-editing.png)
3119
- ![glimmer-dsl-libui-windows-editable-table-edited.png](images/glimmer-dsl-libui-windows-editable-table-edited.png)
3120
-
3121
- Linux
3122
-
3123
- ![glimmer-dsl-libui-linux-editable-table.png](images/glimmer-dsl-libui-linux-editable-table.png)
3124
- ![glimmer-dsl-libui-linux-editable-table-editing.png](images/glimmer-dsl-libui-linux-editable-table-editing.png)
3125
- ![glimmer-dsl-libui-linux-editable-table-edited.png](images/glimmer-dsl-libui-linux-editable-table-edited.png)
3050
+ Mac | Windows | Linux
3051
+ ----|---------|------
3052
+ ![glimmer-dsl-libui-mac-editable-table.png](images/glimmer-dsl-libui-mac-editable-table.png) ![glimmer-dsl-libui-mac-editable-table-editing.png](images/glimmer-dsl-libui-mac-editable-table-editing.png) ![glimmer-dsl-libui-mac-editable-table-edited.png](images/glimmer-dsl-libui-mac-editable-table-edited.png) | ![glimmer-dsl-libui-windows-editable-table.png](images/glimmer-dsl-libui-windows-editable-table.png) ![glimmer-dsl-libui-windows-editable-table-editing.png](images/glimmer-dsl-libui-windows-editable-table-editing.png) ![glimmer-dsl-libui-windows-editable-table-edited.png](images/glimmer-dsl-libui-windows-editable-table-edited.png) | ![glimmer-dsl-libui-linux-editable-table.png](images/glimmer-dsl-libui-linux-editable-table.png) ![glimmer-dsl-libui-linux-editable-table-editing.png](images/glimmer-dsl-libui-linux-editable-table-editing.png) ![glimmer-dsl-libui-linux-editable-table-edited.png](images/glimmer-dsl-libui-linux-editable-table-edited.png)
3126
3053
 
3127
3054
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
3128
3055
 
@@ -3180,20 +3107,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
3180
3107
  ruby -r glimmer-dsl-libui -e "require 'examples/editable_column_table'"
3181
3108
  ```
3182
3109
 
3183
- Mac
3184
-
3185
- ![glimmer-dsl-libui-mac-editable-column-table-editing.png](images/glimmer-dsl-libui-mac-editable-column-table-editing.png)
3186
- ![glimmer-dsl-libui-mac-editable-column-table-edited.png](images/glimmer-dsl-libui-mac-editable-column-table-edited.png)
3187
-
3188
- Windows
3189
-
3190
- ![glimmer-dsl-libui-windows-editable-column-table-editing.png](images/glimmer-dsl-libui-windows-editable-column-table-editing.png)
3191
- ![glimmer-dsl-libui-windows-editable-column-table-edited.png](images/glimmer-dsl-libui-windows-editable-column-table-edited.png)
3192
-
3193
- Linux
3194
-
3195
- ![glimmer-dsl-libui-linux-editable-column-table-editing.png](images/glimmer-dsl-libui-linux-editable-column-table-editing.png)
3196
- ![glimmer-dsl-libui-linux-editable-column-table-edited.png](images/glimmer-dsl-libui-linux-editable-column-table-edited.png)
3110
+ Mac | Windows | Linux
3111
+ ----|---------|------
3112
+ ![glimmer-dsl-libui-mac-editable-column-table-editing.png](images/glimmer-dsl-libui-mac-editable-column-table-editing.png) ![glimmer-dsl-libui-mac-editable-column-table-edited.png](images/glimmer-dsl-libui-mac-editable-column-table-edited.png) | ![glimmer-dsl-libui-windows-editable-column-table-editing.png](images/glimmer-dsl-libui-windows-editable-column-table-editing.png) ![glimmer-dsl-libui-windows-editable-column-table-edited.png](images/glimmer-dsl-libui-windows-editable-column-table-edited.png) | ![glimmer-dsl-libui-linux-editable-column-table-editing.png](images/glimmer-dsl-libui-linux-editable-column-table-editing.png) ![glimmer-dsl-libui-linux-editable-column-table-edited.png](images/glimmer-dsl-libui-linux-editable-column-table-edited.png)
3197
3113
 
3198
3114
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
3199
3115
 
@@ -3247,17 +3163,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
3247
3163
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_table_image'"
3248
3164
  ```
3249
3165
 
3250
- Mac
3251
-
3252
- ![glimmer-dsl-libui-mac-basic-table-image.png](images/glimmer-dsl-libui-mac-basic-table-image.png)
3253
-
3254
- Windows
3255
-
3256
- ![glimmer-dsl-libui-windows-basic-table-image.png](images/glimmer-dsl-libui-windows-basic-table-image.png)
3257
-
3258
- Linux
3259
-
3260
- ![glimmer-dsl-libui-linux-basic-table-image.png](images/glimmer-dsl-libui-linux-basic-table-image.png)
3166
+ Mac | Windows | Linux
3167
+ ----|---------|------
3168
+ ![glimmer-dsl-libui-mac-basic-table-image.png](images/glimmer-dsl-libui-mac-basic-table-image.png) | ![glimmer-dsl-libui-windows-basic-table-image.png](images/glimmer-dsl-libui-windows-basic-table-image.png) | ![glimmer-dsl-libui-linux-basic-table-image.png](images/glimmer-dsl-libui-linux-basic-table-image.png)
3261
3169
 
3262
3170
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
3263
3171
 
@@ -3438,17 +3346,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
3438
3346
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_table_image_text'"
3439
3347
  ```
3440
3348
 
3441
- Mac
3442
-
3443
- ![glimmer-dsl-libui-mac-basic-table-image-text.png](images/glimmer-dsl-libui-mac-basic-table-image-text.png)
3444
-
3445
- Windows
3446
-
3447
- ![glimmer-dsl-libui-windows-basic-table-image-text.png](images/glimmer-dsl-libui-windows-basic-table-image-text.png)
3448
-
3449
- Linux
3450
-
3451
- ![glimmer-dsl-libui-linux-basic-table-image-text.png](images/glimmer-dsl-libui-linux-basic-table-image-text.png)
3349
+ Mac | Windows | Linux
3350
+ ----|---------|------
3351
+ ![glimmer-dsl-libui-mac-basic-table-image-text.png](images/glimmer-dsl-libui-mac-basic-table-image-text.png) | ![glimmer-dsl-libui-windows-basic-table-image-text.png](images/glimmer-dsl-libui-windows-basic-table-image-text.png) | ![glimmer-dsl-libui-linux-basic-table-image-text.png](images/glimmer-dsl-libui-linux-basic-table-image-text.png)
3452
3352
 
3453
3353
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
3454
3354
 
@@ -3548,20 +3448,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
3548
3448
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_table_button'"
3549
3449
  ```
3550
3450
 
3551
- Mac
3552
-
3553
- ![glimmer-dsl-libui-mac-basic-table-button.png](images/glimmer-dsl-libui-mac-basic-table-button.png)
3554
- ![glimmer-dsl-libui-mac-basic-table-button-deleted.png](images/glimmer-dsl-libui-mac-basic-table-button-deleted.png)
3555
-
3556
- Windows
3557
-
3558
- ![glimmer-dsl-libui-windows-basic-table-button.png](images/glimmer-dsl-libui-windows-basic-table-button.png)
3559
- ![glimmer-dsl-libui-windows-basic-table-button-deleted.png](images/glimmer-dsl-libui-windows-basic-table-button-deleted.png)
3560
-
3561
- Linux
3562
-
3563
- ![glimmer-dsl-libui-linux-basic-table-button.png](images/glimmer-dsl-libui-linux-basic-table-button.png)
3564
- ![glimmer-dsl-libui-linux-basic-table-button-deleted.png](images/glimmer-dsl-libui-linux-basic-table-button-deleted.png)
3451
+ Mac | Windows | Linux
3452
+ ----|---------|------
3453
+ ![glimmer-dsl-libui-mac-basic-table-button.png](images/glimmer-dsl-libui-mac-basic-table-button.png) ![glimmer-dsl-libui-mac-basic-table-button-deleted.png](images/glimmer-dsl-libui-mac-basic-table-button-deleted.png) | ![glimmer-dsl-libui-windows-basic-table-button.png](images/glimmer-dsl-libui-windows-basic-table-button.png) ![glimmer-dsl-libui-windows-basic-table-button-deleted.png](images/glimmer-dsl-libui-windows-basic-table-button-deleted.png) | ![glimmer-dsl-libui-linux-basic-table-button.png](images/glimmer-dsl-libui-linux-basic-table-button.png) ![glimmer-dsl-libui-linux-basic-table-button-deleted.png](images/glimmer-dsl-libui-linux-basic-table-button-deleted.png)
3565
3454
 
3566
3455
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
3567
3456
 
@@ -3615,17 +3504,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
3615
3504
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_table_checkbox'"
3616
3505
  ```
3617
3506
 
3618
- Mac
3619
-
3620
- ![glimmer-dsl-libui-mac-basic-table-checkbox.png](images/glimmer-dsl-libui-mac-basic-table-checkbox.png)
3621
-
3622
- Windows
3623
-
3624
- ![glimmer-dsl-libui-windows-basic-table-checkbox.png](images/glimmer-dsl-libui-windows-basic-table-checkbox.png)
3625
-
3626
- Linux
3627
-
3628
- ![glimmer-dsl-libui-linux-basic-table-checkbox.png](images/glimmer-dsl-libui-linux-basic-table-checkbox.png)
3507
+ Mac | Windows | Linux
3508
+ ----|---------|------
3509
+ ![glimmer-dsl-libui-mac-basic-table-checkbox.png](images/glimmer-dsl-libui-mac-basic-table-checkbox.png) | ![glimmer-dsl-libui-windows-basic-table-checkbox.png](images/glimmer-dsl-libui-windows-basic-table-checkbox.png) | ![glimmer-dsl-libui-linux-basic-table-checkbox.png](images/glimmer-dsl-libui-linux-basic-table-checkbox.png)
3629
3510
 
3630
3511
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
3631
3512
 
@@ -3671,17 +3552,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
3671
3552
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_table_checkbox_text'"
3672
3553
  ```
3673
3554
 
3674
- Mac
3675
-
3676
- ![glimmer-dsl-libui-mac-basic-table-checkbox-text.png](images/glimmer-dsl-libui-mac-basic-table-checkbox-text.png)
3677
-
3678
- Windows
3679
-
3680
- ![glimmer-dsl-libui-windows-basic-table-checkbox-text.png](images/glimmer-dsl-libui-windows-basic-table-checkbox-text.png)
3681
-
3682
- Linux
3683
-
3684
- ![glimmer-dsl-libui-linux-basic-table-checkbox-text.png](images/glimmer-dsl-libui-linux-basic-table-checkbox-text.png)
3555
+ Mac | Windows | Linux
3556
+ ----|---------|------
3557
+ ![glimmer-dsl-libui-mac-basic-table-checkbox-text.png](images/glimmer-dsl-libui-mac-basic-table-checkbox-text.png) | ![glimmer-dsl-libui-windows-basic-table-checkbox-text.png](images/glimmer-dsl-libui-windows-basic-table-checkbox-text.png) | ![glimmer-dsl-libui-linux-basic-table-checkbox-text.png](images/glimmer-dsl-libui-linux-basic-table-checkbox-text.png)
3685
3558
 
3686
3559
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
3687
3560
 
@@ -3727,17 +3600,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
3727
3600
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_table_progress_bar'"
3728
3601
  ```
3729
3602
 
3730
- Mac
3731
-
3732
- ![glimmer-dsl-libui-mac-basic-table-progress-bar.png](images/glimmer-dsl-libui-mac-basic-table-progress-bar.png)
3733
-
3734
- Windows
3735
-
3736
- ![glimmer-dsl-libui-windows-basic-table-progress-bar.png](images/glimmer-dsl-libui-windows-basic-table-progress-bar.png)
3737
-
3738
- Linux
3739
-
3740
- ![glimmer-dsl-libui-linux-basic-table-progress-bar.png](images/glimmer-dsl-libui-linux-basic-table-progress-bar.png)
3603
+ Mac | Windows | Linux
3604
+ ----|---------|------
3605
+ ![glimmer-dsl-libui-mac-basic-table-progress-bar.png](images/glimmer-dsl-libui-mac-basic-table-progress-bar.png) | ![glimmer-dsl-libui-windows-basic-table-progress-bar.png](images/glimmer-dsl-libui-windows-basic-table-progress-bar.png) | ![glimmer-dsl-libui-linux-basic-table-progress-bar.png](images/glimmer-dsl-libui-linux-basic-table-progress-bar.png)
3741
3606
 
3742
3607
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
3743
3608
 
@@ -3792,17 +3657,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
3792
3657
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_table_color'"
3793
3658
  ```
3794
3659
 
3795
- Mac
3796
-
3797
- ![glimmer-dsl-libui-mac-basic-table-color.png](images/glimmer-dsl-libui-mac-basic-table-color.png)
3798
-
3799
- Windows
3800
-
3801
- ![glimmer-dsl-libui-windows-basic-table-color.png](images/glimmer-dsl-libui-windows-basic-table-color.png)
3802
-
3803
- Linux
3804
-
3805
- ![glimmer-dsl-libui-linux-basic-table-color.png](images/glimmer-dsl-libui-linux-basic-table-color.png)
3660
+ Mac | Windows | Linux
3661
+ ----|---------|------
3662
+ ![glimmer-dsl-libui-mac-basic-table-color.png](images/glimmer-dsl-libui-mac-basic-table-color.png) | ![glimmer-dsl-libui-windows-basic-table-color.png](images/glimmer-dsl-libui-windows-basic-table-color.png) | ![glimmer-dsl-libui-linux-basic-table-color.png](images/glimmer-dsl-libui-linux-basic-table-color.png)
3806
3663
 
3807
3664
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
3808
3665
 
@@ -3896,23 +3753,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
3896
3753
  ruby -r glimmer-dsl-libui -e "require 'examples/form_table'"
3897
3754
  ```
3898
3755
 
3899
- Mac
3900
-
3901
- ![glimmer-dsl-libui-mac-form-table.png](images/glimmer-dsl-libui-mac-form-table.png)
3902
- ![glimmer-dsl-libui-mac-form-table-contact-entered.png](images/glimmer-dsl-libui-mac-form-table-contact-entered.png)
3903
- ![glimmer-dsl-libui-mac-form-table-filtered.png](images/glimmer-dsl-libui-mac-form-table-filtered.png)
3904
-
3905
- Windows
3906
-
3907
- ![glimmer-dsl-libui-windows-form-table.png](images/glimmer-dsl-libui-windows-form-table.png)
3908
- ![glimmer-dsl-libui-windows-form-table-contact-entered.png](images/glimmer-dsl-libui-windows-form-table-contact-entered.png)
3909
- ![glimmer-dsl-libui-windows-form-table-filtered.png](images/glimmer-dsl-libui-windows-form-table-filtered.png)
3910
-
3911
- Linux
3912
-
3913
- ![glimmer-dsl-libui-linux-form-table.png](images/glimmer-dsl-libui-linux-form-table.png)
3914
- ![glimmer-dsl-libui-linux-form-table-contact-entered.png](images/glimmer-dsl-libui-linux-form-table-contact-entered.png)
3915
- ![glimmer-dsl-libui-linux-form-table-filtered.png](images/glimmer-dsl-libui-linux-form-table-filtered.png)
3756
+ Mac | Windows | Linux
3757
+ ----|---------|------
3758
+ ![glimmer-dsl-libui-mac-form-table.png](images/glimmer-dsl-libui-mac-form-table.png) ![glimmer-dsl-libui-mac-form-table-contact-entered.png](images/glimmer-dsl-libui-mac-form-table-contact-entered.png) ![glimmer-dsl-libui-mac-form-table-filtered.png](images/glimmer-dsl-libui-mac-form-table-filtered.png) | ![glimmer-dsl-libui-windows-form-table.png](images/glimmer-dsl-libui-windows-form-table.png) ![glimmer-dsl-libui-windows-form-table-contact-entered.png](images/glimmer-dsl-libui-windows-form-table-contact-entered.png) ![glimmer-dsl-libui-windows-form-table-filtered.png](images/glimmer-dsl-libui-windows-form-table-filtered.png) | ![glimmer-dsl-libui-linux-form-table.png](images/glimmer-dsl-libui-linux-form-table.png) ![glimmer-dsl-libui-linux-form-table-contact-entered.png](images/glimmer-dsl-libui-linux-form-table-contact-entered.png) ![glimmer-dsl-libui-linux-form-table-filtered.png](images/glimmer-dsl-libui-linux-form-table-filtered.png)
3916
3759
 
3917
3760
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
3918
3761
 
@@ -3939,15 +3782,19 @@ window('Contacts', 600, 600) { |w|
3939
3782
  @name_entry = entry {
3940
3783
  label 'Name'
3941
3784
  }
3785
+
3942
3786
  @email_entry = entry {
3943
3787
  label 'Email'
3944
3788
  }
3789
+
3945
3790
  @phone_entry = entry {
3946
3791
  label 'Phone'
3947
3792
  }
3793
+
3948
3794
  @city_entry = entry {
3949
3795
  label 'City'
3950
3796
  }
3797
+
3951
3798
  @state_entry = entry {
3952
3799
  label 'State'
3953
3800
  }
@@ -4024,17 +3871,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
4024
3871
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_area'"
4025
3872
  ```
4026
3873
 
4027
- Mac
4028
-
4029
- ![glimmer-dsl-libui-mac-basic-area.png](images/glimmer-dsl-libui-mac-basic-area.png)
4030
-
4031
- Windows
4032
-
4033
- ![glimmer-dsl-libui-windows-basic-area.png](images/glimmer-dsl-libui-windows-basic-area.png)
4034
-
4035
- Linux
4036
-
4037
- ![glimmer-dsl-libui-linux-basic-area.png](images/glimmer-dsl-libui-linux-basic-area.png)
3874
+ Mac | Windows | Linux
3875
+ ----|---------|------
3876
+ ![glimmer-dsl-libui-mac-basic-area.png](images/glimmer-dsl-libui-mac-basic-area.png) | ![glimmer-dsl-libui-windows-basic-area.png](images/glimmer-dsl-libui-windows-basic-area.png) | ![glimmer-dsl-libui-linux-basic-area.png](images/glimmer-dsl-libui-linux-basic-area.png)
4038
3877
 
4039
3878
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
4040
3879
 
@@ -4150,29 +3989,18 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
4150
3989
  ruby -r glimmer-dsl-libui -e "require 'examples/dynamic_area'"
4151
3990
  ```
4152
3991
 
4153
- Mac
3992
+ Mac | Windows | Linux
3993
+ ----|---------|------
3994
+ ![glimmer-dsl-libui-mac-dynamic-area.png](images/glimmer-dsl-libui-mac-dynamic-area.png) ![glimmer-dsl-libui-mac-dynamic-area-updated.png](images/glimmer-dsl-libui-mac-dynamic-area-updated.png) | ![glimmer-dsl-libui-windows-dynamic-area.png](images/glimmer-dsl-libui-windows-dynamic-area.png) ![glimmer-dsl-libui-windows-dynamic-area-updated.png](images/glimmer-dsl-libui-windows-dynamic-area-updated.png) | ![glimmer-dsl-libui-linux-dynamic-area.png](images/glimmer-dsl-libui-linux-dynamic-area.png) ![glimmer-dsl-libui-linux-dynamic-area-updated.png](images/glimmer-dsl-libui-linux-dynamic-area-updated.png)
4154
3995
 
4155
- ![glimmer-dsl-libui-mac-dynamic-area.png](images/glimmer-dsl-libui-mac-dynamic-area.png)
4156
- ![glimmer-dsl-libui-mac-dynamic-area-updated.png](images/glimmer-dsl-libui-mac-dynamic-area-updated.png)
4157
-
4158
- Windows
4159
-
4160
- ![glimmer-dsl-libui-windows-dynamic-area.png](images/glimmer-dsl-libui-windows-dynamic-area.png)
4161
- ![glimmer-dsl-libui-windows-dynamic-area-updated.png](images/glimmer-dsl-libui-windows-dynamic-area-updated.png)
4162
-
4163
- Linux
4164
-
4165
- ![glimmer-dsl-libui-linux-dynamic-area.png](images/glimmer-dsl-libui-linux-dynamic-area.png)
4166
- ![glimmer-dsl-libui-linux-dynamic-area-updated.png](images/glimmer-dsl-libui-linux-dynamic-area-updated.png)
4167
-
4168
- New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
3996
+ New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
4169
3997
 
4170
3998
  ```ruby
4171
3999
  require 'glimmer-dsl-libui'
4172
4000
 
4173
4001
  include Glimmer
4174
4002
 
4175
- window('Dynamic Area', 240, 500) {
4003
+ window('Dynamic Area', 240, 600) {
4176
4004
  margined true
4177
4005
 
4178
4006
  vertical_box {
@@ -4258,9 +4086,7 @@ window('Dynamic Area', 240, 500) {
4258
4086
 
4259
4087
  @area = area {
4260
4088
  on_draw do |area_draw_params|
4261
- path { # a dynamic path is added semi-declaratively inside on_draw block
4262
- rectangle(@x_spinbox.value, @y_spinbox.value, @width_spinbox.value, @height_spinbox.value)
4263
-
4089
+ rectangle(@x_spinbox.value, @y_spinbox.value, @width_spinbox.value, @height_spinbox.value) { # a dynamic path is added semi-declaratively inside on_draw block
4264
4090
  fill r: @red_spinbox.value, g: @green_spinbox.value, b: @blue_spinbox.value, a: @alpha_spinbox.value / 100.0
4265
4091
  }
4266
4092
  end
@@ -4328,7 +4154,7 @@ window('Dynamic Area', 240, 600) {
4328
4154
  value 102
4329
4155
 
4330
4156
  on_changed do
4331
- @path.fill[:r] = @red_spinbox.value # updating hash properties automatically triggers area.queue_redraw_all
4157
+ @rectangle.fill[:r] = @red_spinbox.value # updating hash properties automatically triggers area.queue_redraw_all
4332
4158
  end
4333
4159
  }
4334
4160
 
@@ -4337,7 +4163,7 @@ window('Dynamic Area', 240, 600) {
4337
4163
  value 102
4338
4164
 
4339
4165
  on_changed do
4340
- @path.fill[:g] = @green_spinbox.value # updating hash properties automatically triggers area.queue_redraw_all
4166
+ @rectangle.fill[:g] = @green_spinbox.value # updating hash properties automatically triggers area.queue_redraw_all
4341
4167
  end
4342
4168
  }
4343
4169
 
@@ -4346,7 +4172,7 @@ window('Dynamic Area', 240, 600) {
4346
4172
  value 204
4347
4173
 
4348
4174
  on_changed do
4349
- @path.fill[:b] = @blue_spinbox.value # updating hash properties automatically triggers area.queue_redraw_all
4175
+ @rectangle.fill[:b] = @blue_spinbox.value # updating hash properties automatically triggers area.queue_redraw_all
4350
4176
  end
4351
4177
  }
4352
4178
 
@@ -4355,15 +4181,13 @@ window('Dynamic Area', 240, 600) {
4355
4181
  value 100
4356
4182
 
4357
4183
  on_changed do
4358
- @path.fill[:a] = @alpha_spinbox.value / 100.0 # updating hash properties automatically triggers area.queue_redraw_all
4184
+ @rectangle.fill[:a] = @alpha_spinbox.value / 100.0 # updating hash properties automatically triggers area.queue_redraw_all
4359
4185
  end
4360
4186
  }
4361
4187
  }
4362
4188
 
4363
4189
  area {
4364
- @path = path { # stable path
4365
- @rectangle = rectangle(@x_spinbox.value, @y_spinbox.value, @width_spinbox.value, @height_spinbox.value)
4366
-
4190
+ @rectangle = rectangle(@x_spinbox.value, @y_spinbox.value, @width_spinbox.value, @height_spinbox.value) { # stable path
4367
4191
  fill r: @red_spinbox.value, g: @green_spinbox.value, b: @blue_spinbox.value, a: @alpha_spinbox.value / 100.0
4368
4192
  }
4369
4193
  }
@@ -4387,17 +4211,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
4387
4211
  ruby -r glimmer-dsl-libui -e "require 'examples/area_gallery'"
4388
4212
  ```
4389
4213
 
4390
- Mac
4391
-
4392
- ![glimmer-dsl-libui-mac-area-gallery.png](images/glimmer-dsl-libui-mac-area-gallery.png)
4393
-
4394
- Windows
4395
-
4396
- ![glimmer-dsl-libui-windows-area-gallery.png](images/glimmer-dsl-libui-windows-area-gallery.png)
4397
-
4398
- Linux
4399
-
4400
- ![glimmer-dsl-libui-linux-area-gallery.png](images/glimmer-dsl-libui-linux-area-gallery.png)
4214
+ Mac | Windows | Linux
4215
+ ----|---------|------
4216
+ ![glimmer-dsl-libui-mac-area-gallery.png](images/glimmer-dsl-libui-mac-area-gallery.png) | ![glimmer-dsl-libui-windows-area-gallery.png](images/glimmer-dsl-libui-windows-area-gallery.png) | ![glimmer-dsl-libui-linux-area-gallery.png](images/glimmer-dsl-libui-linux-area-gallery.png)
4401
4217
 
4402
4218
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
4403
4219
 
@@ -4408,50 +4224,50 @@ include Glimmer
4408
4224
 
4409
4225
  window('Area Gallery', 400, 400) {
4410
4226
  area {
4411
- path { # declarative stable path
4227
+ path { # declarative stable path (explicit path syntax for multiple shapes sharing attributes)
4412
4228
  square(0, 0, 100)
4413
4229
  square(100, 100, 400)
4414
-
4230
+
4415
4231
  fill r: 102, g: 102, b: 204
4416
4232
  }
4417
- path { # declarative stable path
4233
+
4234
+ path { # declarative stable path (explicit path syntax for multiple shapes sharing attributes)
4418
4235
  rectangle(0, 100, 100, 400)
4419
4236
  rectangle(100, 0, 400, 100)
4420
-
4237
+
4421
4238
  # linear gradient (has x0, y0, x1, y1, and stops)
4422
4239
  fill x0: 10, y0: 10, x1: 350, y1: 350, stops: [{pos: 0.25, r: 204, g: 102, b: 204}, {pos: 0.75, r: 102, g: 102, b: 204}]
4423
4240
  }
4424
- path { # declarative stable path
4425
- polygon(100, 100, 100, 400, 400, 100, 400, 400)
4426
-
4241
+
4242
+ polygon(100, 100, 100, 400, 400, 100, 400, 400) { # declarative stable path (implicit path syntax for a single shape nested directly under area)
4427
4243
  fill r: 202, g: 102, b: 104, a: 0.5
4428
4244
  stroke r: 0, g: 0, b: 0
4429
4245
  }
4430
- path { # declarative stable path
4431
- polybezier(0, 0, 200, 100, 100, 200, 400, 100, 300, 100, 100, 300, 100, 400, 100, 300, 300, 100, 400, 400)
4432
-
4246
+
4247
+ polybezier(0, 0,
4248
+ 200, 100, 100, 200, 400, 100,
4249
+ 300, 100, 100, 300, 100, 400,
4250
+ 100, 300, 300, 100, 400, 400) { # declarative stable path (implicit path syntax for a single shape nested directly under area)
4433
4251
  fill r: 202, g: 102, b: 204, a: 0.5
4434
4252
  stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
4435
4253
  }
4436
- path { # declarative stable path
4437
- polyline(100, 100, 400, 100, 100, 400, 400, 400, 0, 0)
4438
4254
 
4255
+ polyline(100, 100, 400, 100, 100, 400, 400, 400, 0, 0) { # declarative stable path (implicit path syntax for a single shape nested directly under area)
4439
4256
  stroke r: 0, g: 0, b: 0, thickness: 2
4440
4257
  }
4441
- path { # declarative stable path
4442
- arc(404, 216, 190, 90, 90, false)
4443
-
4258
+
4259
+ arc(404, 216, 190, 90, 90, false) { # declarative stable path (implicit path syntax for a single shape nested directly under area)
4444
4260
  # radial gradient (has an outer_radius in addition to x0, y0, x1, y1, and stops)
4445
4261
  fill outer_radius: 90, x0: 0, y0: 0, x1: 500, y1: 500, stops: [{pos: 0.25, r: 102, g: 102, b: 204, a: 0.5}, {pos: 0.75, r: 204, g: 102, b: 204}]
4446
4262
  stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
4447
4263
  }
4448
- path { # declarative stable path
4449
- circle(200, 200, 90)
4450
-
4264
+
4265
+ circle(200, 200, 90) { # declarative stable path (implicit path syntax for a single shape nested directly under area)
4451
4266
  fill r: 202, g: 102, b: 204, a: 0.5
4452
4267
  stroke r: 0, g: 0, b: 0, thickness: 2
4453
4268
  }
4454
- text(161, 40, 100) { # x, y, width
4269
+
4270
+ text(161, 40, 100) { # declarative stable text
4455
4271
  string('Area Gallery') {
4456
4272
  font family: 'Arial', size: (OS.mac? ? 14 : 11)
4457
4273
  color :black
@@ -4518,12 +4334,13 @@ include Glimmer
4518
4334
 
4519
4335
  window('Area Gallery', 400, 400) {
4520
4336
  area {
4521
- path { # declarative stable path
4337
+ path { # declarative stable path with explicit attributes (explicit path syntax for multiple shapes sharing attributes)
4522
4338
  square {
4523
4339
  x 0
4524
4340
  y 0
4525
4341
  length 100
4526
4342
  }
4343
+
4527
4344
  square {
4528
4345
  x 100
4529
4346
  y 100
@@ -4532,13 +4349,15 @@ window('Area Gallery', 400, 400) {
4532
4349
 
4533
4350
  fill r: 102, g: 102, b: 204
4534
4351
  }
4535
- path { # declarative stable path
4352
+
4353
+ path { # declarative stable path with explicit attributes (explicit path syntax for multiple shapes sharing attributes)
4536
4354
  rectangle {
4537
4355
  x 0
4538
4356
  y 100
4539
4357
  width 100
4540
4358
  height 400
4541
4359
  }
4360
+
4542
4361
  rectangle {
4543
4362
  x 100
4544
4363
  y 0
@@ -4549,115 +4368,114 @@ window('Area Gallery', 400, 400) {
4549
4368
  # linear gradient (has x0, y0, x1, y1, and stops)
4550
4369
  fill x0: 10, y0: 10, x1: 350, y1: 350, stops: [{pos: 0.25, r: 204, g: 102, b: 204}, {pos: 0.75, r: 102, g: 102, b: 204}]
4551
4370
  }
4552
- path { # declarative stable path
4553
- figure {
4371
+
4372
+ figure { # declarative stable path with explicit attributes (implicit path syntax for a single shape nested directly under area)
4373
+ x 100
4374
+ y 100
4375
+
4376
+ line {
4554
4377
  x 100
4378
+ y 400
4379
+ }
4380
+
4381
+ line {
4382
+ x 400
4555
4383
  y 100
4556
-
4557
- line {
4558
- x 100
4559
- y 400
4560
- }
4561
- line {
4562
- x 400
4563
- y 100
4564
- }
4565
- line {
4566
- x 400
4567
- y 400
4568
- }
4569
-
4570
- closed true
4384
+ }
4385
+
4386
+ line {
4387
+ x 400
4388
+ y 400
4571
4389
  }
4572
4390
 
4391
+ closed true # polygon figure is closed (last point forms a line with first point)
4573
4392
  fill r: 202, g: 102, b: 104, a: 0.5
4574
4393
  stroke r: 0, g: 0, b: 0
4575
4394
  }
4576
- path { # declarative stable path
4577
- figure {
4578
- x 0
4579
- y 0
4580
-
4581
- bezier {
4582
- c1_x 200
4583
- c1_y 100
4584
- c2_x 100
4585
- c2_y 200
4586
- end_x 400
4587
- end_y 100
4588
- }
4589
- bezier {
4590
- c1_x 300
4591
- c1_y 100
4592
- c2_x 100
4593
- c2_y 300
4594
- end_x 100
4595
- end_y 400
4596
- }
4597
- bezier {
4598
- c1_x 100
4599
- c1_y 300
4600
- c2_x 300
4601
- c2_y 100
4602
- end_x 400
4603
- end_y 400
4604
- }
4395
+
4396
+ figure { # declarative stable path with explicit attributes (implicit path syntax for a single shape nested directly under area)
4397
+ x 0
4398
+ y 0
4399
+
4400
+ bezier {
4401
+ c1_x 200
4402
+ c1_y 100
4403
+ c2_x 100
4404
+ c2_y 200
4405
+ end_x 400
4406
+ end_y 100
4605
4407
  }
4606
-
4408
+
4409
+ bezier {
4410
+ c1_x 300
4411
+ c1_y 100
4412
+ c2_x 100
4413
+ c2_y 300
4414
+ end_x 100
4415
+ end_y 400
4416
+ }
4417
+
4418
+ bezier {
4419
+ c1_x 100
4420
+ c1_y 300
4421
+ c2_x 300
4422
+ c2_y 100
4423
+ end_x 400
4424
+ end_y 400
4425
+ }
4426
+
4607
4427
  fill r: 202, g: 102, b: 204, a: 0.5
4608
4428
  stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
4609
4429
  }
4610
- path { # declarative stable path
4611
- polyline(100, 100, 400, 100, 100, 400, 400, 400, 0, 0)
4612
- figure {
4613
- x 100
4430
+
4431
+ figure { # declarative stable path with explicit attributes (implicit path syntax for a single shape nested directly under area)
4432
+ x 100
4433
+ y 100
4434
+
4435
+ line {
4436
+ x 400
4614
4437
  y 100
4615
-
4616
- line {
4617
- x 400
4618
- y 100
4619
- }
4620
- line {
4621
- x 100
4622
- y 400
4623
- }
4624
- line {
4625
- x 400
4626
- y 400
4627
- }
4628
- line {
4629
- x 0
4630
- y 0
4631
- }
4632
4438
  }
4633
-
4439
+
4440
+ line {
4441
+ x 100
4442
+ y 400
4443
+ }
4444
+
4445
+ line {
4446
+ x 400
4447
+ y 400
4448
+ }
4449
+
4450
+ line {
4451
+ x 0
4452
+ y 0
4453
+ }
4454
+
4634
4455
  stroke r: 0, g: 0, b: 0, thickness: 2
4635
4456
  }
4636
- path { # declarative stable path
4637
- arc {
4638
- x_center 404
4639
- y_center 216
4640
- radius 190
4641
- start_angle 90
4642
- sweep 90
4643
- is_negative false
4644
- }
4645
-
4457
+
4458
+ arc { # declarative stable path with explicit attributes (implicit path syntax for a single shape nested directly under area)
4459
+ x_center 404
4460
+ y_center 216
4461
+ radius 190
4462
+ start_angle 90
4463
+ sweep 90
4464
+ is_negative false
4646
4465
  # radial gradient (has an outer_radius in addition to x0, y0, x1, y1, and stops)
4647
4466
  fill outer_radius: 90, x0: 0, y0: 0, x1: 500, y1: 500, stops: [{pos: 0.25, r: 102, g: 102, b: 204, a: 0.5}, {pos: 0.75, r: 204, g: 102, b: 204}]
4648
4467
  stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
4649
4468
  }
4650
- path { # declarative stable path
4651
- circle {
4652
- x_center 200
4653
- y_center 200
4654
- radius 90
4655
- }
4656
-
4469
+
4470
+ circle { # declarative stable path with explicit attributes (implicit path syntax for a single shape nested directly under area)
4471
+ x_center 200
4472
+ y_center 200
4473
+ radius 90
4657
4474
  fill r: 202, g: 102, b: 204, a: 0.5
4658
4475
  stroke r: 0, g: 0, b: 0, thickness: 2
4659
4476
  }
4660
- text {
4477
+
4478
+ text { # declarative stable text with explicit attributes
4661
4479
  x 161
4662
4480
  y 40
4663
4481
  width 100
@@ -4731,50 +4549,50 @@ include Glimmer
4731
4549
  window('Area Gallery', 400, 400) {
4732
4550
  area {
4733
4551
  on_draw do |area_draw_params|
4734
- path { # a dynamic path is added semi-declaratively inside on_draw block
4552
+ path { # dynamic path, added semi-declaratively inside on_draw block
4735
4553
  square(0, 0, 100)
4736
4554
  square(100, 100, 400)
4737
-
4555
+
4738
4556
  fill r: 102, g: 102, b: 204
4739
4557
  }
4740
- path { # a dynamic path is added semi-declaratively inside on_draw block
4558
+
4559
+ path { # dynamic path, added semi-declaratively inside on_draw block
4741
4560
  rectangle(0, 100, 100, 400)
4742
4561
  rectangle(100, 0, 400, 100)
4743
-
4562
+
4744
4563
  # linear gradient (has x0, y0, x1, y1, and stops)
4745
4564
  fill x0: 10, y0: 10, x1: 350, y1: 350, stops: [{pos: 0.25, r: 204, g: 102, b: 204}, {pos: 0.75, r: 102, g: 102, b: 204}]
4746
4565
  }
4747
- path { # a dynamic path is added semi-declaratively inside on_draw block
4748
- polygon(100, 100, 100, 400, 400, 100, 400, 400)
4749
-
4566
+
4567
+ polygon(100, 100, 100, 400, 400, 100, 400, 400) { # dynamic path, added semi-declaratively inside on_draw block
4750
4568
  fill r: 202, g: 102, b: 104, a: 0.5
4751
4569
  stroke r: 0, g: 0, b: 0
4752
4570
  }
4753
- path { # a dynamic path is added semi-declaratively inside on_draw block
4754
- polybezier(0, 0, 200, 100, 100, 200, 400, 100, 300, 100, 100, 300, 100, 400, 100, 300, 300, 100, 400, 400)
4755
-
4571
+
4572
+ polybezier(0, 0,
4573
+ 200, 100, 100, 200, 400, 100,
4574
+ 300, 100, 100, 300, 100, 400,
4575
+ 100, 300, 300, 100, 400, 400) { # dynamic path, added semi-declaratively inside on_draw block
4756
4576
  fill r: 202, g: 102, b: 204, a: 0.5
4757
4577
  stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
4758
4578
  }
4759
- path { # a dynamic path is added semi-declaratively inside on_draw block
4760
- polyline(100, 100, 400, 100, 100, 400, 400, 400, 0, 0)
4761
4579
 
4580
+ polyline(100, 100, 400, 100, 100, 400, 400, 400, 0, 0) { # dynamic path, added semi-declaratively inside on_draw block
4762
4581
  stroke r: 0, g: 0, b: 0, thickness: 2
4763
4582
  }
4764
- path { # a dynamic path is added semi-declaratively inside on_draw block
4765
- arc(404, 216, 190, 90, 90, false)
4766
-
4583
+
4584
+ arc(404, 216, 190, 90, 90, false) { # dynamic path, added semi-declaratively inside on_draw block
4767
4585
  # radial gradient (has an outer_radius in addition to x0, y0, x1, y1, and stops)
4768
4586
  fill outer_radius: 90, x0: 0, y0: 0, x1: 500, y1: 500, stops: [{pos: 0.25, r: 102, g: 102, b: 204, a: 0.5}, {pos: 0.75, r: 204, g: 102, b: 204}]
4769
4587
  stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
4770
4588
  }
4771
- path { # a dynamic path is added semi-declaratively inside on_draw block
4772
- circle(200, 200, 90)
4773
-
4589
+
4590
+ circle(200, 200, 90) { # dynamic path, added semi-declaratively inside on_draw block
4774
4591
  fill r: 202, g: 102, b: 204, a: 0.5
4775
4592
  stroke r: 0, g: 0, b: 0, thickness: 2
4776
4593
  }
4777
- text(161, 40, 100) { # x, y, width
4594
+
4595
+ text(161, 40, 100) { # dynamic text added semi-declaratively inside on_draw block
4778
4596
  string('Area Gallery') {
4779
4597
  font family: 'Arial', size: (OS.mac? ? 14 : 11)
4780
4598
  color :black
@@ -4843,12 +4661,13 @@ include Glimmer
4843
4661
  window('Area Gallery', 400, 400) {
4844
4662
  area {
4845
4663
  on_draw do |area_draw_params|
4846
- path { # a dynamic path is added semi-declaratively inside on_draw block
4664
+ path { # dynamic path, added semi-declaratively inside on_draw block
4847
4665
  square {
4848
4666
  x 0
4849
4667
  y 0
4850
4668
  length 100
4851
4669
  }
4670
+
4852
4671
  square {
4853
4672
  x 100
4854
4673
  y 100
@@ -4857,13 +4676,15 @@ window('Area Gallery', 400, 400) {
4857
4676
 
4858
4677
  fill r: 102, g: 102, b: 204
4859
4678
  }
4860
- path { # a dynamic path is added semi-declaratively inside on_draw block
4679
+
4680
+ path { # dynamic path, added semi-declaratively inside on_draw block
4861
4681
  rectangle {
4862
4682
  x 0
4863
4683
  y 100
4864
4684
  width 100
4865
4685
  height 400
4866
4686
  }
4687
+
4867
4688
  rectangle {
4868
4689
  x 100
4869
4690
  y 0
@@ -4874,115 +4695,114 @@ window('Area Gallery', 400, 400) {
4874
4695
  # linear gradient (has x0, y0, x1, y1, and stops)
4875
4696
  fill x0: 10, y0: 10, x1: 350, y1: 350, stops: [{pos: 0.25, r: 204, g: 102, b: 204}, {pos: 0.75, r: 102, g: 102, b: 204}]
4876
4697
  }
4877
- path { # a dynamic path is added semi-declaratively inside on_draw block
4878
- figure {
4698
+
4699
+ figure { # dynamic path, added semi-declaratively inside on_draw block
4700
+ x 100
4701
+ y 100
4702
+
4703
+ line {
4879
4704
  x 100
4705
+ y 400
4706
+ }
4707
+
4708
+ line {
4709
+ x 400
4880
4710
  y 100
4881
-
4882
- line {
4883
- x 100
4884
- y 400
4885
- }
4886
- line {
4887
- x 400
4888
- y 100
4889
- }
4890
- line {
4891
- x 400
4892
- y 400
4893
- }
4894
-
4895
- closed true
4711
+ }
4712
+
4713
+ line {
4714
+ x 400
4715
+ y 400
4896
4716
  }
4897
4717
 
4718
+ closed true # polygon figure is closed (last point forms a line with first point)
4898
4719
  fill r: 202, g: 102, b: 104, a: 0.5
4899
4720
  stroke r: 0, g: 0, b: 0
4900
4721
  }
4901
- path { # a dynamic path is added semi-declaratively inside on_draw block
4902
- figure {
4903
- x 0
4904
- y 0
4905
-
4906
- bezier {
4907
- c1_x 200
4908
- c1_y 100
4909
- c2_x 100
4910
- c2_y 200
4911
- end_x 400
4912
- end_y 100
4913
- }
4914
- bezier {
4915
- c1_x 300
4916
- c1_y 100
4917
- c2_x 100
4918
- c2_y 300
4919
- end_x 100
4920
- end_y 400
4921
- }
4922
- bezier {
4923
- c1_x 100
4924
- c1_y 300
4925
- c2_x 300
4926
- c2_y 100
4927
- end_x 400
4928
- end_y 400
4929
- }
4722
+
4723
+ figure { # dynamic path, added semi-declaratively inside on_draw block
4724
+ x 0
4725
+ y 0
4726
+
4727
+ bezier {
4728
+ c1_x 200
4729
+ c1_y 100
4730
+ c2_x 100
4731
+ c2_y 200
4732
+ end_x 400
4733
+ end_y 100
4930
4734
  }
4931
-
4735
+
4736
+ bezier {
4737
+ c1_x 300
4738
+ c1_y 100
4739
+ c2_x 100
4740
+ c2_y 300
4741
+ end_x 100
4742
+ end_y 400
4743
+ }
4744
+
4745
+ bezier {
4746
+ c1_x 100
4747
+ c1_y 300
4748
+ c2_x 300
4749
+ c2_y 100
4750
+ end_x 400
4751
+ end_y 400
4752
+ }
4753
+
4932
4754
  fill r: 202, g: 102, b: 204, a: 0.5
4933
4755
  stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
4934
4756
  }
4935
- path { # a dynamic path is added semi-declaratively inside on_draw block
4936
- polyline(100, 100, 400, 100, 100, 400, 400, 400, 0, 0)
4937
- figure {
4938
- x 100
4757
+
4758
+ figure { # dynamic path, added semi-declaratively inside on_draw block
4759
+ x 100
4760
+ y 100
4761
+
4762
+ line {
4763
+ x 400
4939
4764
  y 100
4940
-
4941
- line {
4942
- x 400
4943
- y 100
4944
- }
4945
- line {
4946
- x 100
4947
- y 400
4948
- }
4949
- line {
4950
- x 400
4951
- y 400
4952
- }
4953
- line {
4954
- x 0
4955
- y 0
4956
- }
4957
4765
  }
4958
-
4766
+
4767
+ line {
4768
+ x 100
4769
+ y 400
4770
+ }
4771
+
4772
+ line {
4773
+ x 400
4774
+ y 400
4775
+ }
4776
+
4777
+ line {
4778
+ x 0
4779
+ y 0
4780
+ }
4781
+
4959
4782
  stroke r: 0, g: 0, b: 0, thickness: 2
4960
4783
  }
4961
- path { # a dynamic path is added semi-declaratively inside on_draw block
4962
- arc {
4963
- x_center 404
4964
- y_center 216
4965
- radius 190
4966
- start_angle 90
4967
- sweep 90
4968
- is_negative false
4969
- }
4970
-
4784
+
4785
+ arc { # dynamic path, added semi-declaratively inside on_draw block
4786
+ x_center 404
4787
+ y_center 216
4788
+ radius 190
4789
+ start_angle 90
4790
+ sweep 90
4791
+ is_negative false
4971
4792
  # radial gradient (has an outer_radius in addition to x0, y0, x1, y1, and stops)
4972
4793
  fill outer_radius: 90, x0: 0, y0: 0, x1: 500, y1: 500, stops: [{pos: 0.25, r: 102, g: 102, b: 204, a: 0.5}, {pos: 0.75, r: 204, g: 102, b: 204}]
4973
4794
  stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
4974
4795
  }
4975
- path { # a dynamic path is added semi-declaratively inside on_draw block
4976
- circle {
4977
- x_center 200
4978
- y_center 200
4979
- radius 90
4980
- }
4981
-
4796
+
4797
+ circle { # dynamic path, added semi-declaratively inside on_draw block
4798
+ x_center 200
4799
+ y_center 200
4800
+ radius 90
4982
4801
  fill r: 202, g: 102, b: 204, a: 0.5
4983
4802
  stroke r: 0, g: 0, b: 0, thickness: 2
4984
4803
  }
4985
- text {
4804
+
4805
+ text { # dynamic path, added semi-declaratively inside on_draw block
4986
4806
  x 161
4987
4807
  y 40
4988
4808
  width 100
@@ -5063,13 +4883,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
5063
4883
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_image'"
5064
4884
  ```
5065
4885
 
5066
- Mac
5067
-
5068
- ![glimmer-dsl-libui-mac-basic-image.png](images/glimmer-dsl-libui-mac-basic-image.png)
5069
-
5070
- Windows
5071
-
5072
- ![glimmer-dsl-libui-windows-basic-image.png](images/glimmer-dsl-libui-windows-basic-image.png)
4886
+ Mac | Windows | Linux
4887
+ ----|---------|------
4888
+ ![glimmer-dsl-libui-mac-basic-image.png](images/glimmer-dsl-libui-mac-basic-image.png) | ![glimmer-dsl-libui-windows-basic-image.png](images/glimmer-dsl-libui-windows-basic-image.png) | ![glimmer-dsl-libui-linux-basic-image.png](images/glimmer-dsl-libui-linux-basic-image.png)
5073
4889
 
5074
4890
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
5075
4891
 
@@ -5257,17 +5073,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
5257
5073
  ruby -r glimmer-dsl-libui -e "require 'examples/histogram'"
5258
5074
  ```
5259
5075
 
5260
- Mac
5261
-
5262
- ![glimmer-dsl-libui-mac-histogram.png](images/glimmer-dsl-libui-mac-histogram.png)
5263
-
5264
- Windows
5265
-
5266
- ![glimmer-dsl-libui-windows-histogram.png](images/glimmer-dsl-libui-windows-histogram.png)
5267
-
5268
- Linux
5269
-
5270
- ![glimmer-dsl-libui-linux-histogram.png](images/glimmer-dsl-libui-linux-histogram.png)
5076
+ Mac | Windows | Linux
5077
+ ----|---------|------
5078
+ ![glimmer-dsl-libui-mac-histogram.png](images/glimmer-dsl-libui-mac-histogram.png) | ![glimmer-dsl-libui-windows-histogram.png](images/glimmer-dsl-libui-windows-histogram.png) | ![glimmer-dsl-libui-linux-histogram.png](images/glimmer-dsl-libui-linux-histogram.png)
5271
5079
 
5272
5080
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
5273
5081
 
@@ -5595,19 +5403,46 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
5595
5403
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_transform'"
5596
5404
  ```
5597
5405
 
5598
- Mac
5406
+ Mac | Windows | Linux
5407
+ ----|---------|------
5408
+ ![glimmer-dsl-libui-mac-basic-transform.png](images/glimmer-dsl-libui-mac-basic-transform.png) | ![glimmer-dsl-libui-windows-basic-transform.png](images/glimmer-dsl-libui-windows-basic-transform.png) | ![glimmer-dsl-libui-linux-basic-transform.png](images/glimmer-dsl-libui-linux-basic-transform.png)
5599
5409
 
5600
- ![glimmer-dsl-libui-mac-basic-transform.png](images/glimmer-dsl-libui-mac-basic-transform.png)
5601
-
5602
- Windows
5410
+ New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
5603
5411
 
5604
- ![glimmer-dsl-libui-windows-basic-transform.png](images/glimmer-dsl-libui-windows-basic-transform.png)
5412
+ ```ruby
5413
+ require 'glimmer-dsl-libui'
5605
5414
 
5606
- Linux
5415
+ include Glimmer
5607
5416
 
5608
- ![glimmer-dsl-libui-linux-basic-transform.png](images/glimmer-dsl-libui-linux-basic-transform.png)
5417
+ window('Basic Transform', 350, 350) {
5418
+ area {
5419
+ square(0, 0, 350) {
5420
+ fill r: 255, g: 255, b: 0
5421
+ }
5422
+ 40.times do |n|
5423
+ square(0, 0, 100) {
5424
+ fill r: [255 - n*5, 0].max, g: [n*5, 255].min, b: 0, a: 0.5
5425
+ stroke :black, thickness: 2
5426
+
5427
+ transform {
5428
+ unless OS.windows?
5429
+ skew 0.15, 0.15
5430
+ translate 50, 50
5431
+ end
5432
+ rotate 100, 100, -9 * n
5433
+ scale 1.1, 1.1
5434
+ if OS.windows?
5435
+ skew 0.15, 0.15
5436
+ translate 50, 50
5437
+ end
5438
+ }
5439
+ }
5440
+ end
5441
+ }
5442
+ }.show
5443
+ ```
5609
5444
 
5610
- New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
5445
+ New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version 2:
5611
5446
 
5612
5447
  ```ruby
5613
5448
  require 'glimmer-dsl-libui'
@@ -5627,11 +5462,18 @@ window('Basic Transform', 350, 350) {
5627
5462
 
5628
5463
  fill r: [255 - n*5, 0].max, g: [n*5, 255].min, b: 0, a: 0.5
5629
5464
  stroke :black, thickness: 2
5465
+
5630
5466
  transform {
5631
- skew 0.15, 0.15
5632
- translate 50, 50
5467
+ unless OS.windows?
5468
+ skew 0.15, 0.15
5469
+ translate 50, 50
5470
+ end
5633
5471
  rotate 100, 100, -9 * n
5634
5472
  scale 1.1, 1.1
5473
+ if OS.windows?
5474
+ skew 0.15, 0.15
5475
+ translate 50, 50
5476
+ end
5635
5477
  }
5636
5478
  }
5637
5479
  end
@@ -5655,20 +5497,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
5655
5497
  ruby -r glimmer-dsl-libui -e "require 'examples/login'"
5656
5498
  ```
5657
5499
 
5658
- Mac
5659
-
5660
- ![glimmer-dsl-libui-mac-login.png](images/glimmer-dsl-libui-mac-login.png)
5661
- ![glimmer-dsl-libui-mac-login-logged-in.png](images/glimmer-dsl-libui-mac-login-logged-in.png)
5662
-
5663
- Windows
5664
-
5665
- ![glimmer-dsl-libui-windows-login.png](images/glimmer-dsl-libui-windows-login.png)
5666
- ![glimmer-dsl-libui-windows-login-logged-in.png](images/glimmer-dsl-libui-windows-login-logged-in.png)
5667
-
5668
- Linux
5669
-
5670
- ![glimmer-dsl-libui-linux-login.png](images/glimmer-dsl-libui-linux-login.png)
5671
- ![glimmer-dsl-libui-linux-login-logged-in.png](images/glimmer-dsl-libui-linux-login-logged-in.png)
5500
+ Mac | Windows | Linux
5501
+ ----|---------|------
5502
+ ![glimmer-dsl-libui-mac-login.png](images/glimmer-dsl-libui-mac-login.png) ![glimmer-dsl-libui-mac-login-logged-in.png](images/glimmer-dsl-libui-mac-login-logged-in.png) | ![glimmer-dsl-libui-windows-login.png](images/glimmer-dsl-libui-windows-login.png) ![glimmer-dsl-libui-windows-login-logged-in.png](images/glimmer-dsl-libui-windows-login-logged-in.png) | ![glimmer-dsl-libui-linux-login.png](images/glimmer-dsl-libui-linux-login.png) ![glimmer-dsl-libui-linux-login-logged-in.png](images/glimmer-dsl-libui-linux-login-logged-in.png)
5672
5503
 
5673
5504
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
5674
5505
 
@@ -5736,20 +5567,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
5736
5567
  ruby -r glimmer-dsl-libui -e "require 'examples/timer'"
5737
5568
  ```
5738
5569
 
5739
- Mac
5740
-
5741
- ![glimmer-dsl-libui-mac-timer.png](images/glimmer-dsl-libui-mac-timer.png)
5742
- ![glimmer-dsl-libui-mac-timer-in-progress.png](images/glimmer-dsl-libui-mac-timer-in-progress.png)
5743
-
5744
- Windows
5745
-
5746
- ![glimmer-dsl-libui-windows-timer.png](images/glimmer-dsl-libui-windows-timer.png)
5747
- ![glimmer-dsl-libui-windows-timer-in-progress.png](images/glimmer-dsl-libui-windows-timer-in-progress.png)
5748
-
5749
- Linux
5750
-
5751
- ![glimmer-dsl-libui-linux-timer.png](images/glimmer-dsl-libui-linux-timer.png)
5752
- ![glimmer-dsl-libui-linux-timer-in-progress.png](images/glimmer-dsl-libui-linux-timer-in-progress.png)
5570
+ Mac | Windows | Linux
5571
+ ----|---------|------
5572
+ ![glimmer-dsl-libui-mac-timer.png](images/glimmer-dsl-libui-mac-timer.png) ![glimmer-dsl-libui-mac-timer-in-progress.png](images/glimmer-dsl-libui-mac-timer-in-progress.png) | ![glimmer-dsl-libui-windows-timer.png](images/glimmer-dsl-libui-windows-timer.png) ![glimmer-dsl-libui-windows-timer-in-progress.png](images/glimmer-dsl-libui-windows-timer-in-progress.png) | ![glimmer-dsl-libui-linux-timer.png](images/glimmer-dsl-libui-linux-timer.png) ![glimmer-dsl-libui-linux-timer-in-progress.png](images/glimmer-dsl-libui-linux-timer-in-progress.png)
5753
5573
 
5754
5574
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
5755
5575
 
@@ -5905,23 +5725,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
5905
5725
  ruby -r glimmer-dsl-libui -e "require 'examples/color_the_circles'"
5906
5726
  ```
5907
5727
 
5908
- Mac
5909
-
5910
- ![glimmer-dsl-libui-mac-color-the-circles.png](images/glimmer-dsl-libui-mac-color-the-circles.png)
5911
- ![glimmer-dsl-libui-mac-color-the-circles-lost.png](images/glimmer-dsl-libui-mac-color-the-circles-lost.png)
5912
- ![glimmer-dsl-libui-mac-color-the-circles-won.png](images/glimmer-dsl-libui-mac-color-the-circles-won.png)
5913
-
5914
- Windows
5915
-
5916
- ![glimmer-dsl-libui-windows-color-the-circles.png](images/glimmer-dsl-libui-windows-color-the-circles.png)
5917
- ![glimmer-dsl-libui-windows-color-the-circles-lost.png](images/glimmer-dsl-libui-windows-color-the-circles-lost.png)
5918
- ![glimmer-dsl-libui-windows-color-the-circles-won.png](images/glimmer-dsl-libui-windows-color-the-circles-won.png)
5919
-
5920
- Linux
5921
-
5922
- ![glimmer-dsl-libui-linux-color-the-circles.png](images/glimmer-dsl-libui-linux-color-the-circles.png)
5923
- ![glimmer-dsl-libui-linux-color-the-circles-lost.png](images/glimmer-dsl-libui-linux-color-the-circles-lost.png)
5924
- ![glimmer-dsl-libui-linux-color-the-circles-won.png](images/glimmer-dsl-libui-linux-color-the-circles-won.png)
5728
+ Mac | Windows | Linux
5729
+ ----|---------|------
5730
+ ![glimmer-dsl-libui-mac-color-the-circles.png](images/glimmer-dsl-libui-mac-color-the-circles.png) ![glimmer-dsl-libui-mac-color-the-circles-lost.png](images/glimmer-dsl-libui-mac-color-the-circles-lost.png) ![glimmer-dsl-libui-mac-color-the-circles-won.png](images/glimmer-dsl-libui-mac-color-the-circles-won.png) | ![glimmer-dsl-libui-windows-color-the-circles.png](images/glimmer-dsl-libui-windows-color-the-circles.png) ![glimmer-dsl-libui-windows-color-the-circles-lost.png](images/glimmer-dsl-libui-windows-color-the-circles-lost.png) ![glimmer-dsl-libui-windows-color-the-circles-won.png](images/glimmer-dsl-libui-windows-color-the-circles-won.png) | ![glimmer-dsl-libui-linux-color-the-circles.png](images/glimmer-dsl-libui-linux-color-the-circles.png) ![glimmer-dsl-libui-linux-color-the-circles-lost.png](images/glimmer-dsl-libui-linux-color-the-circles-lost.png) ![glimmer-dsl-libui-linux-color-the-circles-won.png](images/glimmer-dsl-libui-linux-color-the-circles-won.png)
5925
5731
 
5926
5732
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
5927
5733
 
@@ -5955,15 +5761,17 @@ class ColorTheCircles
5955
5761
 
5956
5762
  def register_observers
5957
5763
  observer = Glimmer::DataBinding::Observer.proc do |new_score|
5958
- @score_label.text = new_score.to_s
5959
- if new_score == -20
5960
- @game_over = true
5961
- msg_box('You Lost!', 'Sorry! Your score reached -20')
5962
- restart_game
5963
- elsif new_score == 0
5964
- @game_over = true
5965
- msg_box('You Won!', 'Congratulations! Your score reached 0')
5966
- restart_game
5764
+ Glimmer::LibUI.queue_main do
5765
+ @score_label.text = new_score.to_s
5766
+ if new_score == -20
5767
+ @game_over = true
5768
+ msg_box('You Lost!', 'Sorry! Your score reached -20')
5769
+ restart_game
5770
+ elsif new_score == 0
5771
+ @game_over = true
5772
+ msg_box('You Won!', 'Congratulations! Your score reached 0')
5773
+ restart_game
5774
+ end
5967
5775
  end
5968
5776
  end
5969
5777
  observer.observe(self, :score) # automatically enhances self to become Glimmer::DataBinding::ObservableModel and notify observer on score attribute changes
@@ -6127,9 +5935,7 @@ class ColorTheCircles
6127
5935
  }
6128
5936
 
6129
5937
  @circles_data.each do |circle_data|
6130
- path {
6131
- circle_data[:circle] = circle(*circle_data[:args])
6132
-
5938
+ circle_data[:circle] = circle(*circle_data[:args]) {
6133
5939
  fill circle_data[:fill]
6134
5940
  stroke circle_data[:stroke]
6135
5941
  }
@@ -6164,17 +5970,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
6164
5970
  ruby -r glimmer-dsl-libui -e "require 'examples/basic_draw_text'"
6165
5971
  ```
6166
5972
 
6167
- Mac
6168
-
6169
- ![glimmer-dsl-libui-mac-basic-draw-text.png](images/glimmer-dsl-libui-mac-basic-draw-text.png)
6170
-
6171
- Windows
6172
-
6173
- ![glimmer-dsl-libui-windows-basic-draw-text.png](images/glimmer-dsl-libui-windows-basic-draw-text.png)
6174
-
6175
- Linux
6176
-
6177
- ![glimmer-dsl-libui-linux-basic-draw-text.png](images/glimmer-dsl-libui-linux-basic-draw-text.png)
5973
+ Mac | Windows | Linux
5974
+ ----|---------|------
5975
+ ![glimmer-dsl-libui-mac-basic-draw-text.png](images/glimmer-dsl-libui-mac-basic-draw-text.png) | ![glimmer-dsl-libui-windows-basic-draw-text.png](images/glimmer-dsl-libui-windows-basic-draw-text.png) | ![glimmer-dsl-libui-linux-basic-draw-text.png](images/glimmer-dsl-libui-linux-basic-draw-text.png)
6178
5976
 
6179
5977
  [LibUI](https://github.com/kojix2/LibUI) Original Version:
6180
5978
 
@@ -6450,20 +6248,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
6450
6248
  ruby -r glimmer-dsl-libui -e "require 'examples/custom_draw_text'"
6451
6249
  ```
6452
6250
 
6453
- Mac
6454
-
6455
- ![glimmer-dsl-libui-mac-custom-draw-text.png](images/glimmer-dsl-libui-mac-custom-draw-text.png)
6456
- ![glimmer-dsl-libui-mac-custom-draw-text-changed.png](images/glimmer-dsl-libui-mac-custom-draw-text-changed.png)
6457
-
6458
- Windows
6459
-
6460
- ![glimmer-dsl-libui-windows-custom-draw-text.png](images/glimmer-dsl-libui-windows-custom-draw-text.png)
6461
- ![glimmer-dsl-libui-windows-custom-draw-text-changed.png](images/glimmer-dsl-libui-windows-custom-draw-text-changed.png)
6462
-
6463
- Linux
6464
-
6465
- ![glimmer-dsl-libui-linux-custom-draw-text.png](images/glimmer-dsl-libui-linux-custom-draw-text.png)
6466
- ![glimmer-dsl-libui-linux-custom-draw-text-changed.png](images/glimmer-dsl-libui-linux-custom-draw-text-changed.png)
6251
+ Mac | Windows | Linux
6252
+ ----|---------|------
6253
+ ![glimmer-dsl-libui-mac-custom-draw-text.png](images/glimmer-dsl-libui-mac-custom-draw-text.png) ![glimmer-dsl-libui-mac-custom-draw-text-changed.png](images/glimmer-dsl-libui-mac-custom-draw-text-changed.png) | ![glimmer-dsl-libui-windows-custom-draw-text.png](images/glimmer-dsl-libui-windows-custom-draw-text.png) ![glimmer-dsl-libui-windows-custom-draw-text-changed.png](images/glimmer-dsl-libui-windows-custom-draw-text-changed.png) | ![glimmer-dsl-libui-linux-custom-draw-text.png](images/glimmer-dsl-libui-linux-custom-draw-text.png) ![glimmer-dsl-libui-linux-custom-draw-text-changed.png](images/glimmer-dsl-libui-linux-custom-draw-text-changed.png)
6467
6254
 
6468
6255
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
6469
6256
 
@@ -6670,17 +6457,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
6670
6457
  ruby -r glimmer-dsl-libui -e "require 'examples/method_based_custom_keyword'"
6671
6458
  ```
6672
6459
 
6673
- Mac
6674
-
6675
- ![glimmer-dsl-libui-mac-method-based-custom-keyword.png](images/glimmer-dsl-libui-mac-method-based-custom-keyword.png)
6676
-
6677
- Windows
6678
-
6679
- ![glimmer-dsl-libui-windows-method-based-custom-keyword.png](images/glimmer-dsl-libui-windows-method-based-custom-keyword.png)
6680
-
6681
- Linux
6682
-
6683
- ![glimmer-dsl-libui-linux-method-based-custom-keyword.png](images/glimmer-dsl-libui-linux-method-based-custom-keyword.png)
6460
+ Mac | Windows | Linux
6461
+ ----|---------|------
6462
+ ![glimmer-dsl-libui-mac-method-based-custom-keyword.png](images/glimmer-dsl-libui-mac-method-based-custom-keyword.png) | ![glimmer-dsl-libui-windows-method-based-custom-keyword.png](images/glimmer-dsl-libui-windows-method-based-custom-keyword.png) | ![glimmer-dsl-libui-linux-method-based-custom-keyword.png](images/glimmer-dsl-libui-linux-method-based-custom-keyword.png)
6684
6463
 
6685
6464
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
6686
6465
 
@@ -6802,29 +6581,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
6802
6581
  ruby -r glimmer-dsl-libui -e "require 'examples/tetris'"
6803
6582
  ```
6804
6583
 
6805
- Mac
6806
-
6807
- ![glimmer-dsl-libui-mac-tetris.png](images/glimmer-dsl-libui-mac-tetris.png)
6808
-
6809
- ![glimmer-dsl-libui-mac-tetris-game-over.png](images/glimmer-dsl-libui-mac-tetris-game-over.png)
6810
-
6811
- ![glimmer-dsl-libui-mac-tetris-high-scores.png](images/glimmer-dsl-libui-mac-tetris-high-scores.png)
6812
-
6813
- Windows
6814
-
6815
- ![glimmer-dsl-libui-windows-tetris.png](images/glimmer-dsl-libui-windows-tetris.png)
6816
-
6817
- ![glimmer-dsl-libui-windows-tetris-game-over.png](images/glimmer-dsl-libui-windows-tetris-game-over.png)
6818
-
6819
- ![glimmer-dsl-libui-windows-tetris-high-scores.png](images/glimmer-dsl-libui-windows-tetris-high-scores.png)
6820
-
6821
- Linux
6822
-
6823
- ![glimmer-dsl-libui-linux-tetris.png](images/glimmer-dsl-libui-linux-tetris.png)
6824
-
6825
- ![glimmer-dsl-libui-linux-tetris-game-over.png](images/glimmer-dsl-libui-linux-tetris-game-over.png)
6826
-
6827
- ![glimmer-dsl-libui-linux-tetris-high-scores.png](images/glimmer-dsl-libui-linux-tetris-high-scores.png)
6584
+ Mac | Windows | Linux
6585
+ ----|---------|------
6586
+ ![glimmer-dsl-libui-mac-tetris.png](images/glimmer-dsl-libui-mac-tetris.png) ![glimmer-dsl-libui-mac-tetris-game-over.png](images/glimmer-dsl-libui-mac-tetris-game-over.png) ![glimmer-dsl-libui-mac-tetris-high-scores.png](images/glimmer-dsl-libui-mac-tetris-high-scores.png) | ![glimmer-dsl-libui-windows-tetris.png](images/glimmer-dsl-libui-windows-tetris.png) ![glimmer-dsl-libui-windows-tetris-game-over.png](images/glimmer-dsl-libui-windows-tetris-game-over.png) ![glimmer-dsl-libui-windows-tetris-high-scores.png](images/glimmer-dsl-libui-windows-tetris-high-scores.png) | ![glimmer-dsl-libui-linux-tetris.png](images/glimmer-dsl-libui-linux-tetris.png) ![glimmer-dsl-libui-linux-tetris-game-over.png](images/glimmer-dsl-libui-linux-tetris-game-over.png) ![glimmer-dsl-libui-linux-tetris-high-scores.png](images/glimmer-dsl-libui-linux-tetris-high-scores.png)
6828
6587
 
6829
6588
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
6830
6589
 
@@ -6984,6 +6743,8 @@ class Tetris
6984
6743
  end
6985
6744
  }
6986
6745
  radio_menu_item('Rotate Left on Up Arrow') {
6746
+ checked true
6747
+
6987
6748
  on_clicked do
6988
6749
  @game.rotate_left_on_up = true
6989
6750
  end
@@ -7032,34 +6793,31 @@ class Tetris
7032
6793
  bevel_pixel_size = 0.16 * block_size.to_f
7033
6794
  color = Glimmer::LibUI.interpret_color(Model::Block::COLOR_CLEAR)
7034
6795
  area {
7035
- block[:background_square] = path {
7036
- square(0, 0, block_size)
7037
-
6796
+ block[:background_square] = square(0, 0, block_size) {
7038
6797
  fill color
7039
6798
  }
7040
- block[:top_bevel_edge] = path {
7041
- polygon(0, 0, block_size, 0, block_size - bevel_pixel_size, bevel_pixel_size, bevel_pixel_size, bevel_pixel_size)
7042
-
6799
+
6800
+ block[:top_bevel_edge] = polygon {
6801
+ point_array 0, 0, block_size, 0, block_size - bevel_pixel_size, bevel_pixel_size, bevel_pixel_size, bevel_pixel_size
7043
6802
  fill r: color[:r] + 4*BEVEL_CONSTANT, g: color[:g] + 4*BEVEL_CONSTANT, b: color[:b] + 4*BEVEL_CONSTANT
7044
6803
  }
7045
- block[:right_bevel_edge] = path {
7046
- polygon(block_size, 0, block_size - bevel_pixel_size, bevel_pixel_size, block_size - bevel_pixel_size, block_size - bevel_pixel_size, block_size, block_size)
7047
-
6804
+
6805
+ block[:right_bevel_edge] = polygon {
6806
+ point_array block_size, 0, block_size - bevel_pixel_size, bevel_pixel_size, block_size - bevel_pixel_size, block_size - bevel_pixel_size, block_size, block_size
7048
6807
  fill r: color[:r] - BEVEL_CONSTANT, g: color[:g] - BEVEL_CONSTANT, b: color[:b] - BEVEL_CONSTANT
7049
6808
  }
7050
- block[:bottom_bevel_edge] = path {
7051
- polygon(block_size, block_size, 0, block_size, bevel_pixel_size, block_size - bevel_pixel_size, block_size - bevel_pixel_size, block_size - bevel_pixel_size)
7052
-
6809
+
6810
+ block[:bottom_bevel_edge] = polygon {
6811
+ point_array block_size, block_size, 0, block_size, bevel_pixel_size, block_size - bevel_pixel_size, block_size - bevel_pixel_size, block_size - bevel_pixel_size
7053
6812
  fill r: color[:r] - BEVEL_CONSTANT, g: color[:g] - BEVEL_CONSTANT, b: color[:b] - BEVEL_CONSTANT
7054
6813
  }
7055
- block[:left_bevel_edge] = path {
7056
- polygon(0, 0, 0, block_size, bevel_pixel_size, block_size - bevel_pixel_size, bevel_pixel_size, bevel_pixel_size)
7057
-
6814
+
6815
+ block[:left_bevel_edge] = polygon {
6816
+ point_array 0, 0, 0, block_size, bevel_pixel_size, block_size - bevel_pixel_size, bevel_pixel_size, bevel_pixel_size
7058
6817
  fill r: color[:r] - BEVEL_CONSTANT, g: color[:g] - BEVEL_CONSTANT, b: color[:b] - BEVEL_CONSTANT
7059
6818
  }
7060
- block[:border_square] = path {
7061
- square(0, 0, block_size)
7062
-
6819
+
6820
+ block[:border_square] = square(0, 0, block_size) {
7063
6821
  stroke COLOR_GRAY
7064
6822
  }
7065
6823
 
@@ -7219,35 +6977,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
7219
6977
  ruby -r glimmer-dsl-libui -e "require 'examples/tic_tac_toe'"
7220
6978
  ```
7221
6979
 
7222
- Mac
7223
-
7224
- ![glimmer-dsl-libui-mac-tic-tac-toe.png](images/glimmer-dsl-libui-mac-tic-tac-toe.png)
7225
-
7226
- ![glimmer-dsl-libui-mac-tic-tac-toe-player-o-wins.png](images/glimmer-dsl-libui-mac-tic-tac-toe-player-o-wins.png)
7227
-
7228
- ![glimmer-dsl-libui-mac-tic-tac-toe-player-x-wins.png](images/glimmer-dsl-libui-mac-tic-tac-toe-player-x-wins.png)
7229
-
7230
- ![glimmer-dsl-libui-mac-tic-tac-toe-draw.png](images/glimmer-dsl-libui-mac-tic-tac-toe-draw.png)
7231
-
7232
- Windows
7233
-
7234
- ![glimmer-dsl-libui-windows-tic-tac-toe.png](images/glimmer-dsl-libui-windows-tic-tac-toe.png)
7235
-
7236
- ![glimmer-dsl-libui-windows-tic-tac-toe-player-o-wins.png](images/glimmer-dsl-libui-windows-tic-tac-toe-player-o-wins.png)
7237
-
7238
- ![glimmer-dsl-libui-windows-tic-tac-toe-player-x-wins.png](images/glimmer-dsl-libui-windows-tic-tac-toe-player-x-wins.png)
7239
-
7240
- ![glimmer-dsl-libui-windows-tic-tac-toe-draw.png](images/glimmer-dsl-libui-windows-tic-tac-toe-draw.png)
7241
-
7242
- Linux
7243
-
7244
- ![glimmer-dsl-libui-linux-tic-tac-toe.png](images/glimmer-dsl-libui-linux-tic-tac-toe.png)
7245
-
7246
- ![glimmer-dsl-libui-linux-tic-tac-toe-player-o-wins.png](images/glimmer-dsl-libui-linux-tic-tac-toe-player-o-wins.png)
7247
-
7248
- ![glimmer-dsl-libui-linux-tic-tac-toe-player-x-wins.png](images/glimmer-dsl-libui-linux-tic-tac-toe-player-x-wins.png)
7249
-
7250
- ![glimmer-dsl-libui-linux-tic-tac-toe-draw.png](images/glimmer-dsl-libui-linux-tic-tac-toe-draw.png)
6980
+ Mac | Windows | Linux
6981
+ ----|---------|------
6982
+ ![glimmer-dsl-libui-mac-tic-tac-toe.png](images/glimmer-dsl-libui-mac-tic-tac-toe.png) ![glimmer-dsl-libui-mac-tic-tac-toe-player-o-wins.png](images/glimmer-dsl-libui-mac-tic-tac-toe-player-o-wins.png) ![glimmer-dsl-libui-mac-tic-tac-toe-player-x-wins.png](images/glimmer-dsl-libui-mac-tic-tac-toe-player-x-wins.png) ![glimmer-dsl-libui-mac-tic-tac-toe-draw.png](images/glimmer-dsl-libui-mac-tic-tac-toe-draw.png) | ![glimmer-dsl-libui-windows-tic-tac-toe.png](images/glimmer-dsl-libui-windows-tic-tac-toe.png) ![glimmer-dsl-libui-windows-tic-tac-toe-player-o-wins.png](images/glimmer-dsl-libui-windows-tic-tac-toe-player-o-wins.png) ![glimmer-dsl-libui-windows-tic-tac-toe-player-x-wins.png](images/glimmer-dsl-libui-windows-tic-tac-toe-player-x-wins.png) ![glimmer-dsl-libui-windows-tic-tac-toe-draw.png](images/glimmer-dsl-libui-windows-tic-tac-toe-draw.png) | ![glimmer-dsl-libui-linux-tic-tac-toe.png](images/glimmer-dsl-libui-linux-tic-tac-toe.png) ![glimmer-dsl-libui-linux-tic-tac-toe-player-o-wins.png](images/glimmer-dsl-libui-linux-tic-tac-toe-player-o-wins.png) ![glimmer-dsl-libui-linux-tic-tac-toe-player-x-wins.png](images/glimmer-dsl-libui-linux-tic-tac-toe-player-x-wins.png) ![glimmer-dsl-libui-linux-tic-tac-toe-draw.png](images/glimmer-dsl-libui-linux-tic-tac-toe-draw.png)
7251
6983
 
7252
6984
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
7253
6985
 
@@ -7299,14 +7031,12 @@ class TicTacToe
7299
7031
 
7300
7032
  3.times.map do |column|
7301
7033
  area {
7302
- path {
7303
- square(0, 0, 60)
7304
-
7034
+ square(0, 0, 60) {
7305
7035
  stroke :black, thickness: 2
7306
7036
  }
7307
7037
  text(23, 19) {
7308
7038
  @cells[row] << string('') {
7309
- font family: 'Arial', size: 20
7039
+ font family: 'Arial', size: OS.mac? ? 20 : 16
7310
7040
  }
7311
7041
  }
7312
7042
  on_mouse_up do
@@ -7357,23 +7087,9 @@ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/
7357
7087
  ruby -r glimmer-dsl-libui -e "require 'examples/snake'"
7358
7088
  ```
7359
7089
 
7360
- Mac
7361
-
7362
- ![glimmer-dsl-libui-mac-snake.png](images/glimmer-dsl-libui-mac-snake.png)
7363
-
7364
- ![glimmer-dsl-libui-mac-snake-game-over.png](images/glimmer-dsl-libui-mac-snake-game-over.png)
7365
-
7366
- Windows
7367
-
7368
- ![glimmer-dsl-libui-windows-snake.png](images/glimmer-dsl-libui-windows-snake.png)
7369
-
7370
- ![glimmer-dsl-libui-windows-snake-game-over.png](images/glimmer-dsl-libui-windows-snake-game-over.png)
7371
-
7372
- Linux
7373
-
7374
- ![glimmer-dsl-libui-linux-snake.png](images/glimmer-dsl-libui-linux-snake.png)
7375
-
7376
- ![glimmer-dsl-libui-linux-snake-game-over.png](images/glimmer-dsl-libui-linux-snake-game-over.png)
7090
+ Mac | Windows | Linux
7091
+ ----|---------|------
7092
+ ![glimmer-dsl-libui-mac-snake.png](images/glimmer-dsl-libui-mac-snake.png) ![glimmer-dsl-libui-mac-snake-game-over.png](images/glimmer-dsl-libui-mac-snake-game-over.png) | ![glimmer-dsl-libui-windows-snake.png](images/glimmer-dsl-libui-windows-snake.png) ![glimmer-dsl-libui-windows-snake-game-over.png](images/glimmer-dsl-libui-windows-snake-game-over.png) | ![glimmer-dsl-libui-linux-snake.png](images/glimmer-dsl-libui-linux-snake.png) ![glimmer-dsl-libui-linux-snake-game-over.png](images/glimmer-dsl-libui-linux-snake-game-over.png)
7377
7093
 
7378
7094
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
7379
7095