glimmer-dsl-libui 0.0.10 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 709fb51692fedecbca6438b288711c2fb7f3a71cb5ce5f5f16e1a5c9629bc5fb
4
- data.tar.gz: 2706858ead6f7bf47f042be22cc40b0546706de8c4c7cfbfdf7457aeb007fa3a
3
+ metadata.gz: daf22d736dce460dde98ce6cb9d10d50433cce189b648b7b9f4fccd1a4e6cefc
4
+ data.tar.gz: 36f38bc99b47ae56d321986e9e27e3dfce18dacb3cc3f4722966c36ab329a896
5
5
  SHA512:
6
- metadata.gz: 8b501a86cf85fb6b1c488580b76336765cf1d2fbdf864edf16e3587bba80710a900a05186e0c9e3f67a667ab64fbaf3ebcf1ec54c4ebbfb8e41ddd7b77f93555
7
- data.tar.gz: 5e1f94ad2479f71d54a163d69d6c266eac9f361909e3c305e04afc073c882178ac1dba80fbc9927a7037a93593000eb469e0c7a9e0342003ced8cf349ddfd6ae
6
+ metadata.gz: 0fcd083428bfdb29db1428012a8dab67516ea5525e37aa5bdb0c7aa0b9679b78e3a01090b8ec20ca4d799b1ea48c41b0983d2570fd12a470246bb2b7fb7eae4c
7
+ data.tar.gz: b5824e2efefc6ccc319a029d4f5eadd976658c3c85bac6fe993ff6da4a9eb2cd5484ccea877b8557c49e2454ac8bb77599eb12219e1eff9fffddeda2489c67ee
data/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.0.14
4
+
5
+ - New examples/grid.rb
6
+ - Support `grid` control and child attributes of `left`, `top`, `xspan`, `yspan`, `hexpand`, `halign`, `vexpand`, and `valign`
7
+ - Smart defaults for `grid` child attributes `left` (`0`), `top` (`0`), `xspan` (`1`), `yspan` (`1`), `hexpand` (`false`), `halign` (`0`), `vexpand` (`false`), and `valign` (`0`)
8
+
9
+ ## 0.0.13
10
+
11
+ - Support examples/date_time_picker.rb
12
+ - Support `date_time_picker`, `date_picker`, and `time_picker` controls having `time`/`time=`/`set_time` property
13
+
14
+ ## 0.0.12
15
+
16
+ - Have examples/meta_example.rb allow code editing to enable experimentation and learning
17
+ - Fix issue with examples/meta_example using puts_debuggerer (a development gem)
18
+
19
+ ## 0.0.11
20
+
21
+ - New examples/basic_color.rb
22
+ - Support `color_button` `color` property
23
+ - Proper destroy of controls (deleting from parent `box`, `window`, or `group` first)
24
+ - On the Mac only, if no menu is specified, add a Quit menu item automatically to allow quitting with CMD+Q
25
+
3
26
  ## 0.0.10
4
27
 
5
28
  - Support examples/font_button.rb
data/README.md CHANGED
@@ -1,4 +1,4 @@
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.0.10
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.0.14
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
  [![Maintainability](https://api.codeclimate.com/v1/badges/ce2853efdbecf6ebdc73/maintainability)](https://codeclimate.com/github/AndyObtiva/glimmer-dsl-libui/maintainability)
@@ -43,7 +43,7 @@ Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interes
43
43
 
44
44
  ## Table of Contents
45
45
 
46
- - [Glimmer DSL for LibUI 0.0.10](#-glimmer-dsl-for-libui-0010)
46
+ - [Glimmer DSL for LibUI 0.0.14](#-glimmer-dsl-for-libui-0014)
47
47
  - [Glimmer GUI DSL Concepts](#glimmer-gui-dsl-concepts)
48
48
  - [Usage](#usage)
49
49
  - [API](#api)
@@ -53,6 +53,7 @@ Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interes
53
53
  - [Extra Dialogs](#extra-dialogs)
54
54
  - [Extra Operations](#extra-operations)
55
55
  - [Smart Defaults and Conventions](#smart-defaults-and-conventions)
56
+ - [API Gotchas](#api-gotchas)
56
57
  - [Original API](#original-api)
57
58
  - [Glimmer Style Guide](#glimmer-style-guide)
58
59
  - [Girb (Glimmer IRB)](#girb-glimmer-irb)
@@ -64,6 +65,9 @@ Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interes
64
65
  - [Midi Player](#midi-player)
65
66
  - [Control Gallery](#control-gallery)
66
67
  - [Font Button](#font-button)
68
+ - [Color Button](#color-button)
69
+ - [Date Time Picker](#date-time-picker)
70
+ - [Grid](#grid)
67
71
  - [Contributing to glimmer-dsl-libui](#contributing-to-glimmer-dsl-libui)
68
72
  - [Help](#help)
69
73
  - [Issues](#issues)
@@ -151,7 +155,7 @@ gem install glimmer-dsl-libui
151
155
  Or install via Bundler `Gemfile`:
152
156
 
153
157
  ```ruby
154
- gem 'glimmer-dsl-libui', '~> 0.0.10'
158
+ gem 'glimmer-dsl-libui', '~> 0.0.14'
155
159
  ```
156
160
 
157
161
  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.
@@ -185,7 +189,7 @@ Any control returned by a [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) keyword d
185
189
  Example (you may copy/paste in [`girb`](#girb-glimmer-irb)):
186
190
 
187
191
  ```ruby
188
- w = window('hello world', 300, 200, 1)
192
+ w = window('hello world')
189
193
  puts w.title # => hello world
190
194
  w.title = 'howdy'
191
195
  puts w.title # => howdy
@@ -198,7 +202,7 @@ Controls are wrapped as Ruby proxy objects, having a `#libui` method to obtain t
198
202
  Example (you may copy/paste in [`girb`](#girb-glimmer-irb)):
199
203
 
200
204
  ```ruby
201
- w = window('hello world', 300, 200, 1) # => #<Glimmer::LibUI::WindowProxy:0x00007fde4ea39fb0
205
+ w = window('hello world') # => #<Glimmer::LibUI::WindowProxy:0x00007fde4ea39fb0
202
206
  w.libui # => #<Fiddle::Pointer:0x00007fde53997980 ptr=0x00007fde51352a60 size=0 free=0x0000000000000000>
203
207
  ```
204
208
 
@@ -210,12 +214,13 @@ Control(Args) | Properties | Listeners
210
214
  `button(text as String)` | `text` (`String`) | `on_clicked`
211
215
  `checkbox(text as String)` | `checked` (Boolean), `text` (`String`) | `on_toggled`
212
216
  `combobox` | `items` (`Array` of `String`), `selected` (`Integer`) | `on_selected`
213
- `color_button` | `color` (r `Numeric`, g `Numeric`, b `Numeric`, a `Numeric`) | `on_changed`
214
- `date_picker` | `time` (`LibUI::FFI::TM`) | `on_changed`
215
- `date_time_picker` | `time` (`LibUI::FFI::TM`) | `on_changed`
217
+ `color_button` | `color` (Array of `red` as `Float`, `green` as `Float`, `blue` as `Float`, `alpha` as `Float`), `red` as `Float`, `green` as `Float`, `blue` as `Float`, `alpha` as `Float` | `on_changed`
218
+ `date_picker` | `time` (`Hash` of keys: `sec` as `Integer`, `min` as `Integer`, `hour` as `Integer`, `mday` as `Integer`, `mon` as `Integer`, `year` as `Integer`, `wday` as `Integer`, `yday` as `Integer`, `dst` as Boolean) | `on_changed`
219
+ `date_time_picker` | `time` (`Hash` of keys: `sec` as `Integer`, `min` as `Integer`, `hour` as `Integer`, `mday` as `Integer`, `mon` as `Integer`, `year` as `Integer`, `wday` as `Integer`, `yday` as `Integer`, `dst` as Boolean) | `on_changed`
216
220
  `editable_combobox` | `items` (`Array` of `String`), `text` (`String`) | `on_changed`
217
221
  `entry` | `read_only` (Boolean), `text` (`String`) | `on_changed`
218
- `font_button` | `font` [read-only] (`Hash` of keys: `:family`, `:size`, `:weight`, `:italic`, `:stretch`) | `on_changed`
222
+ `font_button` | `font` [read-only] (`Hash` of keys: `:family`, `:size`, `:weight`, `:italic`, `:stretch`), `family` as `String`, `size` as `Float`, `weight` as `Integer`, `italic` as `Integer`, `stretch` as `Integer` | `on_changed`
223
+ `grid` | `padded` (Boolean) | None
219
224
  `group(text as String)` | `margined` (Boolean), `title` (`String`) | None
220
225
  `horizontal_box` | `padded` (Boolean) | None
221
226
  `horizontal_separator` | None | None
@@ -234,7 +239,7 @@ Control(Args) | Properties | Listeners
234
239
  `spinbox(min as Numeric, max as Numeric)` | `value` (`Numeric`) | `on_changed`
235
240
  `tab` | `margined` (Boolean), `num_pages` (`Integer`) | None
236
241
  `tab_item(name as String)` | `index` [read-only] (`Integer`), `margined` (Boolean), `name` [read-only] (`String`) | None
237
- `time_picker` | `time` (`LibUI::FFI::TM`) | `on_changed`
242
+ `time_picker` | `time` (`Hash` of keys: `sec` as `Integer`, `min` as `Integer`, `hour` as `Integer`, `mday` as `Integer`, `mon` as `Integer`, `year` as `Integer`, `wday` as `Integer`, `yday` as `Integer`, `dst` as Boolean) | `on_changed`
238
243
  `vertical_box` | `padded` (Boolean) | None
239
244
  `window(title as String, width as Integer, height as Integer, has_menubar as Boolean)` | `borderless` (Boolean), `content_size` (width `Numeric`, height `Numeric`), `fullscreen` (Boolean), `margined` (Boolean), `title` (`String`) | `on_closing`, `on_content_size_changed`
240
245
 
@@ -245,7 +250,15 @@ Control(Args) | Properties | Listeners
245
250
  - `parent` (`Fiddle::Pointer`)
246
251
  - `toplevel` [read-only] (Boolean)
247
252
  - `visible` (Boolean)
248
- - `stretchy` [dsl-only] (Boolean): available in [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) when nested under `horizontal_box` or `vertical_box`
253
+ - `stretchy` [dsl-only] (Boolean) [default=`true`]: available in [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) when nested under `horizontal_box` or `vertical_box`
254
+ - `left` [dsl-only] (`Integer`) [default=`0`]: available in [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) when nested under `grid`
255
+ - `top` [dsl-only] (`Integer`) [default=`0`]: available in [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) when nested under `grid`
256
+ - `xspan` [dsl-only] (`Integer`) [default=`1`]: available in [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) when nested under `grid`
257
+ - `yspan` [dsl-only] (`Integer`) [default=`1`]: available in [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) when nested under `grid`
258
+ - `hexpand` [dsl-only] (Boolean) [default=`false`]: available in [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) when nested under `grid`
259
+ - `halign` [dsl-only] (`Integer`) [default=`0`]: available in [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) when nested under `grid`
260
+ - `vexpand` [dsl-only] (Boolean) [default=`false`]: available in [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) when nested under `grid`
261
+ - `valign` [dsl-only] (`Integer`) [default=`0`]: available in [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) when nested under `grid`
249
262
 
250
263
  ### Common Control Operations
251
264
  - `destroy`
@@ -267,7 +280,7 @@ Control(Args) | Properties | Listeners
267
280
 
268
281
  ### Smart Defaults and Conventions
269
282
 
270
- - `horizontal_box` and `vertical_box` controls have `padded` as `true` upon instantiation to ensure more user-friendly GUI by default
283
+ - `horizontal_box`, `vertical_box`, and `grid` controls have `padded` as `true` upon instantiation to ensure more user-friendly GUI by default
271
284
  - `group` controls have `margined` as `true` upon instantiation to ensure more user-friendly GUI by default
272
285
  - All controls nested under a `horizontal_box` or `vertical_box` have `stretchy` property (passed to `box_append` method) as `true` by default (filling maximum space)
273
286
  - `window` constructor args can be left off and have the following defaults when unspecified: `title` as `'Glimmer'`, `width` as `150`, `height` as `150`, and `has_menubar` as `true`)
@@ -278,7 +291,17 @@ Control(Args) | Properties | Listeners
278
291
  - All boolean property readers return `true` or `false` in Ruby instead of the [libui](https://github.com/andlabs/libui) original `0` or `1` in C.
279
292
  - All boolean property writers accept `true`/`false` in addition to `1`/`0` in Ruby
280
293
  - All string property readers return a `String` object in Ruby instead of the [libui](https://github.com/andlabs/libui) Fiddle pointer object.
281
- - Automatically allocate font descriptors upon instantiating `font_button` controls and free font descriptors when destorying `font_button` controls
294
+ - Automatically allocate font descriptors upon instantiating `font_button` controls and free them when destorying `font_button` controls
295
+ - Automatically allocate color value pointers upon instantiating `color_button` controls and free them when destorying `color_button` controls
296
+ - On the Mac, if no `menu` items were added, an automatic `quit_menu_item` is added to enable quitting with CTRL+Q
297
+ - When destroying a control nested under a `horizontal_box` or `vertical_box`, it is automatically deleted from the box's children
298
+ - When destroying a control nested under a `window` or `group`, it is automatically unset as their child to allow successful destruction
299
+ - For `date_time_picker`, `date_picker`, and `time_picker`, make sure `time` hash values for `mon`, `wday`, and `yday` are 1-based instead of [libui](https://github.com/andlabs/libui) original 0-based values, and return `dst` as Boolean instead of `isdst` as `1`/`0`
300
+ - Smart defaults for `grid` child attributes are `left` (`0`), `top` (`0`), `xspan` (`1`), `yspan` (`1`), `hexpand` (`false`), `halign` (`0`), `vexpand` (`false`), and `valign` (`0`)
301
+
302
+ ### API Gotchas
303
+
304
+ There is no proper was to destroy `grid` children due to [libui](https://github.com/andlabs/libui) not offering any API for deleting them from `grid` (no `grid_delete` similar to `box_delete` for `horizontal_box` and `vertical_box`)
282
305
 
283
306
  ### Original API
284
307
 
@@ -287,7 +310,7 @@ check out the [libui C headers](https://github.com/andlabs/libui/blob/master/ui.
287
310
 
288
311
  ## Glimmer Style Guide
289
312
 
290
- - Control arguments are always wrapped inside parentheses
313
+ - Control arguments are always wrapped by parentheses
291
314
  - Control blocks are always declared with curly braces to clearly visualize hierarchical view code and separate from logic code
292
315
  - Control property declarations always have arguments and never take a block
293
316
  - Control property arguments are never wrapped inside parentheses
@@ -308,9 +331,9 @@ Gotcha: On the Mac, when you close a window opened in `girb`, it remains open un
308
331
 
309
332
  ## Examples
310
333
 
311
- These examples include reimplementions of the examples in the [LibUI](https://github.com/kojix2/LibUI) project utilizing the [Glimmer GUI DSL](#glimmer-gui-dsl-concepts).
334
+ These examples include reimplementions of the examples in the [LibUI](https://github.com/kojix2/LibUI) project utilizing the [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) as well as brand new examples.
312
335
 
313
- To browse all examples, simply launch the [Meta-Example](examples/meta_example.rb), which lists all examples and displays each example's code when selected.
336
+ To browse all examples, simply launch the [Meta-Example](examples/meta_example.rb), which lists all examples and displays each example's code when selected. It also enables code editing to facilitate experimentation and learning.
314
337
 
315
338
  [examples/meta_example.rb](examples/meta_example.rb)
316
339
 
@@ -334,7 +357,7 @@ Linux
334
357
 
335
358
  ![glimmer-dsl-libui-linux-meta-example.png](images/glimmer-dsl-libui-linux-meta-example.png)
336
359
 
337
- [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
360
+ New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
338
361
 
339
362
  ```ruby
340
363
  require 'glimmer-dsl-libui'
@@ -357,11 +380,11 @@ class MetaExample
357
380
  File.join(File.expand_path('.', __dir__), "#{example.underscore}.rb")
358
381
  end
359
382
 
383
+ def glimmer_dsl_libui_file
384
+ File.expand_path('../lib/glimmer-dsl-libui', __dir__)
385
+ end
386
+
360
387
  def launch
361
- menu('File') {
362
- quit_menu_item
363
- }
364
-
365
388
  window('Meta-Example', 700, 500) { |w|
366
389
  margined true
367
390
 
@@ -380,13 +403,20 @@ class MetaExample
380
403
  stretchy false
381
404
 
382
405
  on_clicked do
383
- system "ruby -r puts_debuggerer -r #{File.expand_path('../lib/glimmer-dsl-libui', __dir__)} #{file_path_for(@examples[@rbs.selected])}"
406
+ begin
407
+ meta_example_file = File.join(Dir.home, '.meta_example.rb')
408
+ File.write(meta_example_file, @nwme.text)
409
+ result = `ruby -r #{glimmer_dsl_libui_file} #{meta_example_file} 2>&1`
410
+ msg_box(w, 'Error Running Example', result) if result.include?('error')
411
+ rescue => e
412
+ puts 'Unable to write code changes! Running original example...'
413
+ system "ruby -r #{glimmer_dsl_libui_file} #{file_path_for(@examples[@rbs.selected])}"
414
+ end
384
415
  end
385
416
  }
386
417
  }
387
418
  vertical_box {
388
419
  @nwme = non_wrapping_multiline_entry {
389
- read_only true
390
420
  text File.read(file_path_for(@examples[@rbs.selected]))
391
421
  }
392
422
  }
@@ -480,7 +510,7 @@ ruby -r glimmer-dsl-libui -e "require 'examples/basic_button'"
480
510
  Mac
481
511
 
482
512
  ![glimmer-dsl-libui-mac-basic-button.png](images/glimmer-dsl-libui-mac-basic-button.png)
483
- ![glimmer-dsl-libui-mac-basic-button-msg-box.png](images/glimmer-dsl-libui-basic-button-msg-box.png)
513
+ ![glimmer-dsl-libui-mac-basic-button-msg-box.png](images/glimmer-dsl-libui-mac-basic-button-msg-box.png)
484
514
 
485
515
  Linux
486
516
 
@@ -1422,7 +1452,240 @@ window('hello world', 300, 200) {
1422
1452
  puts 'Bye Bye'
1423
1453
  end
1424
1454
  }.show
1455
+ ```
1456
+
1457
+ ### Color Button
1458
+
1459
+ [examples/color_button.rb](examples/color_button.rb)
1460
+
1461
+ Run with this command from the root of the project if you cloned the project:
1462
+
1463
+ ```
1464
+ ruby -r './lib/glimmer-dsl-libui' examples/color_button.rb
1465
+ ```
1466
+
1467
+ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/glimmer-dsl-libui):
1468
+
1469
+ ```
1470
+ ruby -r glimmer-dsl-libui -e "require 'examples/color_button'"
1471
+ ```
1472
+
1473
+ Mac
1474
+
1475
+ ![glimmer-dsl-libui-mac-color-button.png](images/glimmer-dsl-libui-mac-color-button.png)
1476
+ ![glimmer-dsl-libui-mac-color-button-selection.png](images/glimmer-dsl-libui-mac-color-button-selection.png)
1477
+
1478
+ Linux
1479
+
1480
+ ![glimmer-dsl-libui-linux-color-button.png](images/glimmer-dsl-libui-linux-color-button.png)
1481
+ ![glimmer-dsl-libui-linux-color-button-selection.png](images/glimmer-dsl-libui-linux-color-button-selection.png)
1482
+
1483
+ New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
1484
+
1485
+ ```ruby
1486
+ require 'glimmer-dsl-libui'
1487
+
1488
+ include Glimmer
1489
+
1490
+ window('color button', 230) {
1491
+ color_button { |cb|
1492
+ on_changed do
1493
+ rgba = cb.color
1494
+ p rgba
1495
+ end
1496
+ }
1497
+ }.show
1498
+ ```
1499
+
1500
+ ### Date Time Picker
1501
+
1502
+ [examples/date_time_picker.rb](examples/date_time_picker.rb)
1503
+
1504
+ Run with this command from the root of the project if you cloned the project:
1505
+
1506
+ ```
1507
+ ruby -r './lib/glimmer-dsl-libui' examples/date_time_picker.rb
1508
+ ```
1509
+
1510
+ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/glimmer-dsl-libui):
1511
+
1512
+ ```
1513
+ ruby -r glimmer-dsl-libui -e "require 'examples/date_time_picker'"
1514
+ ```
1515
+
1516
+ Mac
1517
+
1518
+ ![glimmer-dsl-libui-mac-date-time-picker.png](images/glimmer-dsl-libui-mac-date-time-picker.png)
1519
+
1520
+ Linux
1521
+
1522
+ ![glimmer-dsl-libui-linux-date-time-picker.png](images/glimmer-dsl-libui-linux-date-time-picker.png)
1523
+
1524
+ [LibUI](https://github.com/kojix2/LibUI) Original Version:
1525
+
1526
+ ```ruby
1527
+ require 'libui'
1528
+
1529
+ UI = LibUI
1530
+
1531
+ UI.init
1532
+
1533
+ vbox = UI.new_vertical_box
1534
+
1535
+ date_time_picker = UI.new_date_time_picker
1536
+
1537
+ time = UI::FFI::TM.malloc
1538
+
1539
+ UI.date_time_picker_on_changed(date_time_picker) do
1540
+ UI.date_time_picker_time(date_time_picker, time)
1541
+ p sec: time.tm_sec,
1542
+ min: time.tm_min,
1543
+ hour: time.tm_hour,
1544
+ mday: time.tm_mday,
1545
+ mon: time.tm_mon,
1546
+ year: time.tm_year,
1547
+ wday: time.tm_wday,
1548
+ yday: time.tm_yday,
1549
+ isdst: time.tm_isdst
1550
+ end
1551
+ UI.box_append(vbox, date_time_picker, 1)
1552
+
1553
+ main_window = UI.new_window('Date Time Pickers', 300, 200, 1)
1554
+ UI.window_on_closing(main_window) do
1555
+ puts 'Bye Bye'
1556
+ UI.control_destroy(main_window)
1557
+ UI.quit
1558
+ 0
1559
+ end
1560
+ UI.window_set_child(main_window, vbox)
1561
+ UI.control_show(main_window)
1562
+
1563
+ UI.main
1564
+ UI.quit
1565
+ ```
1566
+
1567
+ [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
1568
+
1569
+ ```ruby
1570
+ require 'glimmer-dsl-libui'
1571
+
1572
+ include Glimmer
1573
+
1574
+ window('Date Time Pickers', 300, 200) {
1575
+ vertical_box {
1576
+ date_time_picker { |dtp|
1577
+ on_changed do
1578
+ time = dtp.time
1579
+ p time
1580
+ end
1581
+ }
1582
+ }
1583
+
1584
+ on_closing do
1585
+ puts 'Bye Bye'
1586
+ end
1587
+ }.show
1588
+ ```
1589
+
1590
+ ### Grid
1591
+
1592
+ [examples/grid.rb](examples/grid.rb)
1593
+
1594
+ Run with this command from the root of the project if you cloned the project:
1595
+
1596
+ ```
1597
+ ruby -r './lib/glimmer-dsl-libui' examples/grid.rb
1598
+ ```
1599
+
1600
+ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/glimmer-dsl-libui):
1601
+
1602
+ ```
1603
+ ruby -r glimmer-dsl-libui -e "require 'examples/grid'"
1604
+ ```
1605
+
1606
+ Mac
1607
+
1608
+ ![glimmer-dsl-libui-mac-grid-spanning.png](images/glimmer-dsl-libui-mac-grid-spanning.png)
1609
+ ![glimmer-dsl-libui-mac-grid-expanding.png](images/glimmer-dsl-libui-mac-grid-expanding.png)
1610
+
1611
+ Linux
1612
+
1613
+ ![glimmer-dsl-libui-linux-grid-spanning.png](images/glimmer-dsl-libui-linux-grid-spanning.png)
1614
+ ![glimmer-dsl-libui-linux-grid-expanding.png](images/glimmer-dsl-libui-linux-grid-expanding.png)
1615
+
1616
+ New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
1617
+
1618
+ ```ruby
1619
+ require 'glimmer-dsl-libui'
1620
+
1621
+ include Glimmer
1425
1622
 
1623
+ window('Grid') {
1624
+ tab {
1625
+ tab_item('Spanning') {
1626
+ grid {
1627
+ 4.times { |left_value|
1628
+ 4.times { |top_value|
1629
+ label("(#{left_value}, #{top_value}) xspan1\nyspan1") {
1630
+ left left_value
1631
+ top top_value
1632
+ hexpand true
1633
+ vexpand true
1634
+ }
1635
+ }
1636
+ }
1637
+ label("(0, 4) xspan2\nyspan1 more text fits horizontally") {
1638
+ left 0
1639
+ top 4
1640
+ xspan 2
1641
+ }
1642
+ label("(2, 4) xspan2\nyspan1 more text fits horizontally") {
1643
+ left 2
1644
+ top 4
1645
+ xspan 2
1646
+ }
1647
+ label("(0, 5) xspan1\nyspan2\nmore text\nfits vertically") {
1648
+ left 0
1649
+ top 5
1650
+ yspan 2
1651
+ }
1652
+ label("(0, 7) xspan1\nyspan2\nmore text\nfits vertically") {
1653
+ left 0
1654
+ top 7
1655
+ yspan 2
1656
+ }
1657
+ label("(1, 5) xspan3\nyspan4 a lot more text fits horizontally than before\nand\neven\na lot\nmore text\nfits vertically\nthan\nbefore") {
1658
+ left 1
1659
+ top 5
1660
+ xspan 3
1661
+ yspan 4
1662
+ }
1663
+ }
1664
+ }
1665
+ tab_item('Expanding') {
1666
+ grid {
1667
+ label("(0, 0) hexpand/vexpand\nall available horizontal space is taken\nand\nall\navailable\nvertical\nspace\nis\ntaken") {
1668
+ left 0
1669
+ top 0
1670
+ hexpand true
1671
+ vexpand true
1672
+ }
1673
+ label("(1, 0)") {
1674
+ left 1
1675
+ top 0
1676
+ }
1677
+ label("(0, 1)") {
1678
+ left 0
1679
+ top 1
1680
+ }
1681
+ label("(1, 1)") {
1682
+ left 1
1683
+ top 1
1684
+ }
1685
+ }
1686
+ }
1687
+ }
1688
+ }.show
1426
1689
  ```
1427
1690
 
1428
1691
  ## Contributing to glimmer-dsl-libui
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.10
1
+ 0.0.14
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'glimmer-dsl-libui'
4
+
5
+ include Glimmer
6
+
7
+ window('color button', 230) {
8
+ color_button { |cb|
9
+ on_changed do
10
+ rgba = cb.color
11
+ p rgba
12
+ end
13
+ }
14
+ }.show
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'glimmer-dsl-libui'
4
+
5
+ include Glimmer
6
+
7
+ window('Date Time Pickers', 300, 200) {
8
+ vertical_box {
9
+ date_time_picker { |dtp|
10
+ on_changed do
11
+ time = dtp.time
12
+ p time
13
+ end
14
+ }
15
+ }
16
+
17
+ on_closing do
18
+ puts 'Bye Bye'
19
+ end
20
+ }.show
data/examples/grid.rb ADDED
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'glimmer-dsl-libui'
4
+
5
+ include Glimmer
6
+
7
+ window('Grid') {
8
+ tab {
9
+ tab_item('Spanning') {
10
+ grid {
11
+ 4.times { |left_value|
12
+ 4.times { |top_value|
13
+ label("(#{left_value}, #{top_value}) xspan1\nyspan1") {
14
+ left left_value
15
+ top top_value
16
+ hexpand true
17
+ vexpand true
18
+ }
19
+ }
20
+ }
21
+ label("(0, 4) xspan2\nyspan1 more text fits horizontally") {
22
+ left 0
23
+ top 4
24
+ xspan 2
25
+ }
26
+ label("(2, 4) xspan2\nyspan1 more text fits horizontally") {
27
+ left 2
28
+ top 4
29
+ xspan 2
30
+ }
31
+ label("(0, 5) xspan1\nyspan2\nmore text\nfits vertically") {
32
+ left 0
33
+ top 5
34
+ yspan 2
35
+ }
36
+ label("(0, 7) xspan1\nyspan2\nmore text\nfits vertically") {
37
+ left 0
38
+ top 7
39
+ yspan 2
40
+ }
41
+ label("(1, 5) xspan3\nyspan4 a lot more text fits horizontally than before\nand\neven\na lot\nmore text\nfits vertically\nthan\nbefore") {
42
+ left 1
43
+ top 5
44
+ xspan 3
45
+ yspan 4
46
+ }
47
+ }
48
+ }
49
+ tab_item('Expanding') {
50
+ grid {
51
+ label("(0, 0) hexpand/vexpand\nall available horizontal space is taken\nand\nall\navailable\nvertical\nspace\nis\ntaken") {
52
+ left 0
53
+ top 0
54
+ hexpand true
55
+ vexpand true
56
+ }
57
+ label("(1, 0)") {
58
+ left 1
59
+ top 0
60
+ }
61
+ label("(0, 1)") {
62
+ left 0
63
+ top 1
64
+ }
65
+ label("(1, 1)") {
66
+ left 1
67
+ top 1
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }.show
@@ -20,11 +20,11 @@ class MetaExample
20
20
  File.join(File.expand_path('.', __dir__), "#{example.underscore}.rb")
21
21
  end
22
22
 
23
+ def glimmer_dsl_libui_file
24
+ File.expand_path('../lib/glimmer-dsl-libui', __dir__)
25
+ end
26
+
23
27
  def launch
24
- menu('File') {
25
- quit_menu_item
26
- }
27
-
28
28
  window('Meta-Example', 700, 500) { |w|
29
29
  margined true
30
30
 
@@ -43,13 +43,20 @@ class MetaExample
43
43
  stretchy false
44
44
 
45
45
  on_clicked do
46
- system "ruby -r puts_debuggerer -r #{File.expand_path('../lib/glimmer-dsl-libui', __dir__)} #{file_path_for(@examples[@rbs.selected])}"
46
+ begin
47
+ meta_example_file = File.join(Dir.home, '.meta_example.rb')
48
+ File.write(meta_example_file, @nwme.text)
49
+ result = `ruby -r #{glimmer_dsl_libui_file} #{meta_example_file} 2>&1`
50
+ msg_box(w, 'Error Running Example', result) if result.include?('error')
51
+ rescue => e
52
+ puts 'Unable to write code changes! Running original example...'
53
+ system "ruby -r #{glimmer_dsl_libui_file} #{file_path_for(@examples[@rbs.selected])}"
54
+ end
47
55
  end
48
56
  }
49
57
  }
50
58
  vertical_box {
51
59
  @nwme = non_wrapping_multiline_entry {
52
- read_only true
53
60
  text File.read(file_path_for(@examples[@rbs.selected]))
54
61
  }
55
62
  }
Binary file
@@ -29,12 +29,22 @@ module Glimmer
29
29
  def post_initialize_child(child)
30
30
  child.stretchy = true if child.stretchy.nil?
31
31
  ::LibUI.box_append(@libui, child.libui, ControlProxy.boolean_to_integer(child.stretchy))
32
+ children << child
32
33
  end
33
34
 
34
35
  def libui_api_keyword
35
36
  'box'
36
37
  end
37
38
 
39
+ def children
40
+ @children ||= []
41
+ end
42
+
43
+ def destroy_child(child)
44
+ ::LibUI.send("box_delete", @libui, children.index(child))
45
+ ControlProxy.all_control_proxies.delete(child)
46
+ end
47
+
38
48
  private
39
49
 
40
50
  def build_control
@@ -0,0 +1,64 @@
1
+ # Copyright (c) 2021 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer/libui/control_proxy'
23
+
24
+ module Glimmer
25
+ module LibUI
26
+ # Proxy for LibUI color button objects
27
+ #
28
+ # Follows the Proxy Design Pattern
29
+ class ColorButtonProxy < ControlProxy
30
+ def color
31
+ @red ||= Fiddle::Pointer.malloc(8) # double
32
+ @green ||= Fiddle::Pointer.malloc(8) # double
33
+ @blue ||= Fiddle::Pointer.malloc(8) # double
34
+ @alpha ||= Fiddle::Pointer.malloc(8) # double
35
+ ::LibUI.color_button_color(@libui, @red, @green, @blue, @alpha)
36
+ [@red[0, 8].unpack1('d') * 255.0, @green[0, 8].unpack1('d') * 255.0, @blue[0, 8].unpack1('d') * 255.0, @alpha[0, 8].unpack1('d')]
37
+ end
38
+
39
+ def red
40
+ color[0]
41
+ end
42
+
43
+ def green
44
+ color[1]
45
+ end
46
+
47
+ def blue
48
+ color[2]
49
+ end
50
+
51
+ def alpha
52
+ color[3]
53
+ end
54
+
55
+ def destroy
56
+ Fiddle.free @red unless @red.nil?
57
+ Fiddle.free @green unless @green.nil?
58
+ Fiddle.free @blue unless @blue.nil?
59
+ Fiddle.free @alpha unless @alpha.nil?
60
+ super
61
+ end
62
+ end
63
+ end
64
+ end
@@ -52,7 +52,7 @@ module Glimmer
52
52
  end
53
53
 
54
54
  def main_window_proxy
55
- all_control_proxies.find {|c| c.is_a?(WindowProxy)}
55
+ all_control_proxies.find {|c| c.is_a?(Glimmer::LibUI::WindowProxy)}
56
56
  end
57
57
 
58
58
  def integer_to_boolean(int)
@@ -62,6 +62,10 @@ module Glimmer
62
62
  def boolean_to_integer(bool)
63
63
  bool.nil? ? nil : (bool ? 1 : 0)
64
64
  end
65
+
66
+ def menu_proxies
67
+ all_control_proxies.select {|c| c.keyword == 'menu' }
68
+ end
65
69
  end
66
70
 
67
71
  BOOLEAN_PROPERTIES = %w[
@@ -167,7 +171,7 @@ module Glimmer
167
171
  ::LibUI.send("#{libui_api_keyword}_#{method_name}", @libui, *args)
168
172
  elsif ::LibUI.respond_to?("control_#{method_name.to_s.sub(/\?$/, '')}") && args.empty?
169
173
  property = method_name.to_s.sub(/\?$/, '')
170
- value = ::LibUI.send("control_#{method_name.to_s.sub(/\?$/, '')}", @libui, *args)
174
+ value = ::LibUI.send("control_#{property}", @libui, *args)
171
175
  handle_string_property(property, handle_boolean_property(property, value))
172
176
  elsif ::LibUI.respond_to?("control_set_#{method_name.to_s.sub(/=$/, '')}")
173
177
  property = method_name.to_s.sub(/=$/, '')
@@ -198,6 +202,23 @@ module Glimmer
198
202
  @keyword
199
203
  end
200
204
 
205
+ def destroy
206
+ if parent_proxy.nil?
207
+ default_destroy
208
+ else
209
+ parent_proxy.destroy_child(self)
210
+ end
211
+ end
212
+
213
+ def destroy_child(child)
214
+ child.default_destroy
215
+ end
216
+
217
+ def default_destroy
218
+ send_to_libui('destroy')
219
+ ControlProxy.all_control_proxies.delete(self)
220
+ end
221
+
201
222
  def enabled(value = nil)
202
223
  if value.nil?
203
224
  @enabled
@@ -229,11 +250,6 @@ module Glimmer
229
250
  alias set_visible visible
230
251
  alias visible= visible
231
252
 
232
- def destroy
233
- send_to_libui('destroy')
234
- self.class.all_control_proxies.delete(self)
235
- end
236
-
237
253
  private
238
254
 
239
255
  def build_control
@@ -27,6 +27,13 @@ module Glimmer
27
27
  #
28
28
  # Follows the Proxy Design Pattern
29
29
  class DatePickerProxy < DateTimePickerProxy
30
+ def time(value = nil)
31
+ if value.nil?
32
+ super.slice(:mday, :mon, :year, :wday, :yday)
33
+ else
34
+ super
35
+ end
36
+ end
30
37
  end
31
38
  end
32
39
  end
@@ -30,6 +30,39 @@ module Glimmer
30
30
  def libui_api_keyword
31
31
  'date_time_picker'
32
32
  end
33
+
34
+ def time(value = nil)
35
+ @time ||= ::LibUI::FFI::TM.malloc
36
+ ::LibUI.date_time_picker_time(@libui, @time)
37
+ if value.nil?
38
+ {
39
+ sec: @time.tm_sec,
40
+ min: @time.tm_min,
41
+ hour: @time.tm_hour,
42
+ mday: @time.tm_mday,
43
+ mon: @time.tm_mon + 1,
44
+ year: @time.tm_year + 1900,
45
+ wday: @time.tm_wday + 1,
46
+ yday: @time.tm_yday + 1,
47
+ dst: @time.tm_isdst == 1
48
+ }
49
+ else
50
+ @time.tm_sec = value[:sec] unless value[:sec].nil?
51
+ @time.tm_min = value[:min] unless value[:min].nil?
52
+ @time.tm_hour = value[:hour] unless value[:hour].nil?
53
+ @time.tm_mday = value[:mday] unless value[:mday].nil?
54
+ @time.tm_mon = value[:mon] - 1 unless value[:mon].nil?
55
+ @time.tm_year = value[:year] - 1900 unless value[:year].nil?
56
+ ::LibUI.date_time_picker_set_time(@libui, @time)
57
+ end
58
+ end
59
+ alias set_time time
60
+ alias time= time
61
+
62
+ def destroy
63
+ Fiddle.free @time unless @time.nil?
64
+ super
65
+ end
33
66
  end
34
67
  end
35
68
  end
@@ -39,6 +39,26 @@ module Glimmer
39
39
  }
40
40
  end
41
41
 
42
+ def family
43
+ font[:family]
44
+ end
45
+
46
+ def size
47
+ font[:size]
48
+ end
49
+
50
+ def weight
51
+ font[:weight]
52
+ end
53
+
54
+ def italic
55
+ font[:italic]
56
+ end
57
+
58
+ def stretch
59
+ font[:stretch]
60
+ end
61
+
42
62
  def destroy
43
63
  ::LibUI.free_font_button_font(@font_descriptor) unless @font_descriptor.nil?
44
64
  super
@@ -0,0 +1,52 @@
1
+ # Copyright (c) 2021 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer/libui/control_proxy'
23
+
24
+ module Glimmer
25
+ module LibUI
26
+ class GridProxy < ControlProxy
27
+ APPEND_PROPERTIES = %w[left top xspan yspan hexpand halign vexpand valign]
28
+
29
+ def post_initialize_child(child)
30
+ child.left = 0 if child.left.nil?
31
+ child.top = 0 if child.top.nil?
32
+ child.xspan = 1 if child.xspan.nil?
33
+ child.yspan = 1 if child.yspan.nil?
34
+ child.hexpand = false if child.hexpand.nil?
35
+ child.halign = 0 if child.halign.nil?
36
+ child.vexpand = false if child.vexpand.nil?
37
+ child.valign = 0 if child.valign.nil?
38
+ ::LibUI.grid_append(@libui, child.libui, child.left, child.top, child.xspan, child.yspan, ControlProxy.boolean_to_integer(child.hexpand), child.halign, ControlProxy.boolean_to_integer(child.vexpand), child.valign)
39
+ end
40
+
41
+ # Note that there is no proper destroy_child(child) method for GridProxy due to libui not offering any API for it (no grid_delete)
42
+
43
+ private
44
+
45
+ def build_control
46
+ super.tap do
47
+ self.padded = true
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -31,6 +31,11 @@ module Glimmer
31
31
  ::LibUI.group_set_child(@libui, child.libui)
32
32
  end
33
33
 
34
+ def destroy_child(child)
35
+ ::LibUI.send("group_set_child", @libui, nil)
36
+ super
37
+ end
38
+
34
39
  private
35
40
 
36
41
  def build_control
@@ -27,6 +27,13 @@ module Glimmer
27
27
  #
28
28
  # Follows the Proxy Design Pattern
29
29
  class TimePickerProxy < DateTimePickerProxy
30
+ def time(value = nil)
31
+ if value.nil?
32
+ super.slice(:sec, :min, :hour)
33
+ else
34
+ super
35
+ end
36
+ end
30
37
  end
31
38
  end
32
39
  end
@@ -35,9 +35,14 @@ module Glimmer
35
35
  def post_initialize_child(child)
36
36
  ::LibUI.window_set_child(@libui, child.libui)
37
37
  end
38
+
39
+ def destroy_child(child)
40
+ ::LibUI.send("window_set_child", @libui, nil)
41
+ super
42
+ end
38
43
 
39
44
  def show
40
- send_to_libui('show')
45
+ super
41
46
  unless @shown_at_least_once
42
47
  @shown_at_least_once = true
43
48
  ::LibUI.main
@@ -64,6 +69,10 @@ module Glimmer
64
69
  private
65
70
 
66
71
  def build_control
72
+ if OS.mac? && ControlProxy.menu_proxies.empty?
73
+ menu_proxy = ControlProxy.create('menu', nil, [''])
74
+ quit_menu_item_proxy = ControlProxy.create('quit_menu_item', menu_proxy, [])
75
+ end
67
76
  construction_args = @args.dup
68
77
  construction_args[0] = DEFAULT_TITLE if construction_args.size == 0
69
78
  construction_args[1] = DEFAULT_WIDTH if construction_args.size == 1
@@ -26,6 +26,7 @@ require 'glimmer'
26
26
  # require 'logging'
27
27
  # require 'puts_debuggerer' if ENV['pd'].to_s.downcase == 'true'
28
28
  # require 'super_module'
29
+ require 'os'
29
30
  require 'libui'
30
31
 
31
32
  # Internal requires
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-libui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-20 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer
@@ -24,6 +24,26 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.1.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: os
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.0
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: 2.0.0
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.0.0
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: 2.0.0
27
47
  - !ruby/object:Gem::Dependency
28
48
  name: libui
29
49
  requirement: !ruby/object:Gem::Requirement
@@ -164,8 +184,11 @@ files:
164
184
  - examples/basic_entry.rb
165
185
  - examples/basic_window.rb
166
186
  - examples/basic_window2.rb
187
+ - examples/color_button.rb
167
188
  - examples/control_gallery.rb
189
+ - examples/date_time_picker.rb
168
190
  - examples/font_button.rb
191
+ - examples/grid.rb
169
192
  - examples/meta_example.rb
170
193
  - examples/midi_player.rb
171
194
  - examples/simple_notepad.rb
@@ -182,12 +205,14 @@ files:
182
205
  - lib/glimmer/libui/about_menu_item_proxy.rb
183
206
  - lib/glimmer/libui/box.rb
184
207
  - lib/glimmer/libui/check_menu_item_proxy.rb
208
+ - lib/glimmer/libui/color_button_proxy.rb
185
209
  - lib/glimmer/libui/combobox_proxy.rb
186
210
  - lib/glimmer/libui/control_proxy.rb
187
211
  - lib/glimmer/libui/date_picker_proxy.rb
188
212
  - lib/glimmer/libui/date_time_picker_proxy.rb
189
213
  - lib/glimmer/libui/editable_combobox_proxy.rb
190
214
  - lib/glimmer/libui/font_button_proxy.rb
215
+ - lib/glimmer/libui/grid_proxy.rb
191
216
  - lib/glimmer/libui/group_proxy.rb
192
217
  - lib/glimmer/libui/horizontal_box_proxy.rb
193
218
  - lib/glimmer/libui/menu_item_proxy.rb