glimmer-dsl-libui 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +123 -6
- data/VERSION +1 -1
- data/examples/grid.rb +72 -0
- data/glimmer-dsl-libui.gemspec +0 -0
- data/lib/glimmer/libui/grid_proxy.rb +52 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: daf22d736dce460dde98ce6cb9d10d50433cce189b648b7b9f4fccd1a4e6cefc
|
4
|
+
data.tar.gz: 36f38bc99b47ae56d321986e9e27e3dfce18dacb3cc3f4722966c36ab329a896
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fcd083428bfdb29db1428012a8dab67516ea5525e37aa5bdb0c7aa0b9679b78e3a01090b8ec20ca4d799b1ea48c41b0983d2570fd12a470246bb2b7fb7eae4c
|
7
|
+
data.tar.gz: b5824e2efefc6ccc319a029d4f5eadd976658c3c85bac6fe993ff6da4a9eb2cd5484ccea877b8557c49e2454ac8bb77599eb12219e1eff9fffddeda2489c67ee
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
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
|
+
|
3
9
|
## 0.0.13
|
4
10
|
|
5
11
|
- Support examples/date_time_picker.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.
|
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
|
[](http://badge.fury.io/rb/glimmer-dsl-libui)
|
4
4
|
[](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.
|
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)
|
@@ -66,6 +67,7 @@ Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interes
|
|
66
67
|
- [Font Button](#font-button)
|
67
68
|
- [Color Button](#color-button)
|
68
69
|
- [Date Time Picker](#date-time-picker)
|
70
|
+
- [Grid](#grid)
|
69
71
|
- [Contributing to glimmer-dsl-libui](#contributing-to-glimmer-dsl-libui)
|
70
72
|
- [Help](#help)
|
71
73
|
- [Issues](#issues)
|
@@ -153,7 +155,7 @@ gem install glimmer-dsl-libui
|
|
153
155
|
Or install via Bundler `Gemfile`:
|
154
156
|
|
155
157
|
```ruby
|
156
|
-
gem 'glimmer-dsl-libui', '~> 0.0.
|
158
|
+
gem 'glimmer-dsl-libui', '~> 0.0.14'
|
157
159
|
```
|
158
160
|
|
159
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.
|
@@ -218,6 +220,7 @@ Control(Args) | Properties | Listeners
|
|
218
220
|
`editable_combobox` | `items` (`Array` of `String`), `text` (`String`) | `on_changed`
|
219
221
|
`entry` | `read_only` (Boolean), `text` (`String`) | `on_changed`
|
220
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
|
221
224
|
`group(text as String)` | `margined` (Boolean), `title` (`String`) | None
|
222
225
|
`horizontal_box` | `padded` (Boolean) | None
|
223
226
|
`horizontal_separator` | None | None
|
@@ -247,7 +250,15 @@ Control(Args) | Properties | Listeners
|
|
247
250
|
- `parent` (`Fiddle::Pointer`)
|
248
251
|
- `toplevel` [read-only] (Boolean)
|
249
252
|
- `visible` (Boolean)
|
250
|
-
- `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`
|
251
262
|
|
252
263
|
### Common Control Operations
|
253
264
|
- `destroy`
|
@@ -269,7 +280,7 @@ Control(Args) | Properties | Listeners
|
|
269
280
|
|
270
281
|
### Smart Defaults and Conventions
|
271
282
|
|
272
|
-
- `horizontal_box` and `
|
283
|
+
- `horizontal_box`, `vertical_box`, and `grid` controls have `padded` as `true` upon instantiation to ensure more user-friendly GUI by default
|
273
284
|
- `group` controls have `margined` as `true` upon instantiation to ensure more user-friendly GUI by default
|
274
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)
|
275
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`)
|
@@ -286,6 +297,11 @@ Control(Args) | Properties | Listeners
|
|
286
297
|
- When destroying a control nested under a `horizontal_box` or `vertical_box`, it is automatically deleted from the box's children
|
287
298
|
- When destroying a control nested under a `window` or `group`, it is automatically unset as their child to allow successful destruction
|
288
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`)
|
289
305
|
|
290
306
|
### Original API
|
291
307
|
|
@@ -1548,7 +1564,7 @@ UI.main
|
|
1548
1564
|
UI.quit
|
1549
1565
|
```
|
1550
1566
|
|
1551
|
-
|
1567
|
+
[Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
|
1552
1568
|
|
1553
1569
|
```ruby
|
1554
1570
|
require 'glimmer-dsl-libui'
|
@@ -1571,6 +1587,107 @@ window('Date Time Pickers', 300, 200) {
|
|
1571
1587
|
}.show
|
1572
1588
|
```
|
1573
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
|
+

|
1609
|
+

|
1610
|
+
|
1611
|
+
Linux
|
1612
|
+
|
1613
|
+

|
1614
|
+

|
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
|
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
|
1689
|
+
```
|
1690
|
+
|
1574
1691
|
## Contributing to glimmer-dsl-libui
|
1575
1692
|
|
1576
1693
|
- Check out the latest master to make sure the feature hasn't been
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.14
|
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
|
data/glimmer-dsl-libui.gemspec
CHANGED
Binary file
|
@@ -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
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-dsl-libui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
@@ -188,6 +188,7 @@ files:
|
|
188
188
|
- examples/control_gallery.rb
|
189
189
|
- examples/date_time_picker.rb
|
190
190
|
- examples/font_button.rb
|
191
|
+
- examples/grid.rb
|
191
192
|
- examples/meta_example.rb
|
192
193
|
- examples/midi_player.rb
|
193
194
|
- examples/simple_notepad.rb
|
@@ -211,6 +212,7 @@ files:
|
|
211
212
|
- lib/glimmer/libui/date_time_picker_proxy.rb
|
212
213
|
- lib/glimmer/libui/editable_combobox_proxy.rb
|
213
214
|
- lib/glimmer/libui/font_button_proxy.rb
|
215
|
+
- lib/glimmer/libui/grid_proxy.rb
|
214
216
|
- lib/glimmer/libui/group_proxy.rb
|
215
217
|
- lib/glimmer/libui/horizontal_box_proxy.rb
|
216
218
|
- lib/glimmer/libui/menu_item_proxy.rb
|