glimmer-dsl-libui 0.0.12 → 0.0.13
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 +5 -0
- data/README.md +100 -10
- data/VERSION +1 -1
- data/examples/date_time_picker.rb +20 -0
- data/glimmer-dsl-libui.gemspec +0 -0
- data/lib/glimmer/libui/date_picker_proxy.rb +7 -0
- data/lib/glimmer/libui/date_time_picker_proxy.rb +33 -0
- data/lib/glimmer/libui/time_picker_proxy.rb +7 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19ebb3b2df3f14388664e392c4fbac8b121c6adf5638e78ddf308c7455c76c02
|
4
|
+
data.tar.gz: a631ed4518643c2d05ff39568f3fad815aa8729b01e1ee45ace9162bc9cf93be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e0fccb89ce28c472c65cabc9ff1a6044cb19c3277e960e726ea7f642ccc2861f12b6c4ec1d31a562f7d05ce64a92dcb5696a544b9dd4a2ebad25e2cd82dd61b
|
7
|
+
data.tar.gz: 4429a478c94b4105c079ddcda93b247271bae083a5b6c3b91e9c76c895a3273b27fced8d37262555b5139a0a19c98e63224eee3eb9ac44d89d379db151fa72ae
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.0.13
|
4
|
+
|
5
|
+
- Support examples/date_time_picker.rb
|
6
|
+
- Support `date_time_picker`, `date_picker`, and `time_picker` controls having `time`/`time=`/`set_time` property
|
7
|
+
|
3
8
|
## 0.0.12
|
4
9
|
|
5
10
|
- Have examples/meta_example.rb allow code editing to enable experimentation and learning
|
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.13
|
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.13](#-glimmer-dsl-for-libui-0013)
|
47
47
|
- [Glimmer GUI DSL Concepts](#glimmer-gui-dsl-concepts)
|
48
48
|
- [Usage](#usage)
|
49
49
|
- [API](#api)
|
@@ -65,6 +65,7 @@ Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interes
|
|
65
65
|
- [Control Gallery](#control-gallery)
|
66
66
|
- [Font Button](#font-button)
|
67
67
|
- [Color Button](#color-button)
|
68
|
+
- [Date Time Picker](#date-time-picker)
|
68
69
|
- [Contributing to glimmer-dsl-libui](#contributing-to-glimmer-dsl-libui)
|
69
70
|
- [Help](#help)
|
70
71
|
- [Issues](#issues)
|
@@ -152,7 +153,7 @@ gem install glimmer-dsl-libui
|
|
152
153
|
Or install via Bundler `Gemfile`:
|
153
154
|
|
154
155
|
```ruby
|
155
|
-
gem 'glimmer-dsl-libui', '~> 0.0.
|
156
|
+
gem 'glimmer-dsl-libui', '~> 0.0.13'
|
156
157
|
```
|
157
158
|
|
158
159
|
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.
|
@@ -186,7 +187,7 @@ Any control returned by a [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) keyword d
|
|
186
187
|
Example (you may copy/paste in [`girb`](#girb-glimmer-irb)):
|
187
188
|
|
188
189
|
```ruby
|
189
|
-
w = window('hello world'
|
190
|
+
w = window('hello world')
|
190
191
|
puts w.title # => hello world
|
191
192
|
w.title = 'howdy'
|
192
193
|
puts w.title # => howdy
|
@@ -199,7 +200,7 @@ Controls are wrapped as Ruby proxy objects, having a `#libui` method to obtain t
|
|
199
200
|
Example (you may copy/paste in [`girb`](#girb-glimmer-irb)):
|
200
201
|
|
201
202
|
```ruby
|
202
|
-
w = window('hello world'
|
203
|
+
w = window('hello world') # => #<Glimmer::LibUI::WindowProxy:0x00007fde4ea39fb0
|
203
204
|
w.libui # => #<Fiddle::Pointer:0x00007fde53997980 ptr=0x00007fde51352a60 size=0 free=0x0000000000000000>
|
204
205
|
```
|
205
206
|
|
@@ -212,8 +213,8 @@ Control(Args) | Properties | Listeners
|
|
212
213
|
`checkbox(text as String)` | `checked` (Boolean), `text` (`String`) | `on_toggled`
|
213
214
|
`combobox` | `items` (`Array` of `String`), `selected` (`Integer`) | `on_selected`
|
214
215
|
`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`
|
215
|
-
`date_picker` | `time` (`
|
216
|
-
`date_time_picker` | `time` (`
|
216
|
+
`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`
|
217
|
+
`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`
|
217
218
|
`editable_combobox` | `items` (`Array` of `String`), `text` (`String`) | `on_changed`
|
218
219
|
`entry` | `read_only` (Boolean), `text` (`String`) | `on_changed`
|
219
220
|
`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`
|
@@ -235,7 +236,7 @@ Control(Args) | Properties | Listeners
|
|
235
236
|
`spinbox(min as Numeric, max as Numeric)` | `value` (`Numeric`) | `on_changed`
|
236
237
|
`tab` | `margined` (Boolean), `num_pages` (`Integer`) | None
|
237
238
|
`tab_item(name as String)` | `index` [read-only] (`Integer`), `margined` (Boolean), `name` [read-only] (`String`) | None
|
238
|
-
`time_picker` | `time` (`
|
239
|
+
`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`
|
239
240
|
`vertical_box` | `padded` (Boolean) | None
|
240
241
|
`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`
|
241
242
|
|
@@ -284,6 +285,7 @@ Control(Args) | Properties | Listeners
|
|
284
285
|
- On the Mac, if no `menu` items were added, an automatic `quit_menu_item` is added to enable quitting with CTRL+Q
|
285
286
|
- When destroying a control nested under a `horizontal_box` or `vertical_box`, it is automatically deleted from the box's children
|
286
287
|
- When destroying a control nested under a `window` or `group`, it is automatically unset as their child to allow successful destruction
|
288
|
+
- 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`
|
287
289
|
|
288
290
|
### Original API
|
289
291
|
|
@@ -1465,8 +1467,6 @@ Linux
|
|
1465
1467
|
New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
|
1466
1468
|
|
1467
1469
|
```ruby
|
1468
|
-
# frozen_string_literal: true
|
1469
|
-
|
1470
1470
|
require 'glimmer-dsl-libui'
|
1471
1471
|
|
1472
1472
|
include Glimmer
|
@@ -1481,6 +1481,96 @@ window('color button', 230) {
|
|
1481
1481
|
}.show
|
1482
1482
|
```
|
1483
1483
|
|
1484
|
+
### Date Time Picker
|
1485
|
+
|
1486
|
+
[examples/date_time_picker.rb](examples/date_time_picker.rb)
|
1487
|
+
|
1488
|
+
Run with this command from the root of the project if you cloned the project:
|
1489
|
+
|
1490
|
+
```
|
1491
|
+
ruby -r './lib/glimmer-dsl-libui' examples/date_time_picker.rb
|
1492
|
+
```
|
1493
|
+
|
1494
|
+
Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/glimmer-dsl-libui):
|
1495
|
+
|
1496
|
+
```
|
1497
|
+
ruby -r glimmer-dsl-libui -e "require 'examples/date_time_picker'"
|
1498
|
+
```
|
1499
|
+
|
1500
|
+
Mac
|
1501
|
+
|
1502
|
+

|
1503
|
+
|
1504
|
+
Linux
|
1505
|
+
|
1506
|
+

|
1507
|
+
|
1508
|
+
[LibUI](https://github.com/kojix2/LibUI) Original Version:
|
1509
|
+
|
1510
|
+
```ruby
|
1511
|
+
require 'libui'
|
1512
|
+
|
1513
|
+
UI = LibUI
|
1514
|
+
|
1515
|
+
UI.init
|
1516
|
+
|
1517
|
+
vbox = UI.new_vertical_box
|
1518
|
+
|
1519
|
+
date_time_picker = UI.new_date_time_picker
|
1520
|
+
|
1521
|
+
time = UI::FFI::TM.malloc
|
1522
|
+
|
1523
|
+
UI.date_time_picker_on_changed(date_time_picker) do
|
1524
|
+
UI.date_time_picker_time(date_time_picker, time)
|
1525
|
+
p sec: time.tm_sec,
|
1526
|
+
min: time.tm_min,
|
1527
|
+
hour: time.tm_hour,
|
1528
|
+
mday: time.tm_mday,
|
1529
|
+
mon: time.tm_mon,
|
1530
|
+
year: time.tm_year,
|
1531
|
+
wday: time.tm_wday,
|
1532
|
+
yday: time.tm_yday,
|
1533
|
+
isdst: time.tm_isdst
|
1534
|
+
end
|
1535
|
+
UI.box_append(vbox, date_time_picker, 1)
|
1536
|
+
|
1537
|
+
main_window = UI.new_window('Date Time Pickers', 300, 200, 1)
|
1538
|
+
UI.window_on_closing(main_window) do
|
1539
|
+
puts 'Bye Bye'
|
1540
|
+
UI.control_destroy(main_window)
|
1541
|
+
UI.quit
|
1542
|
+
0
|
1543
|
+
end
|
1544
|
+
UI.window_set_child(main_window, vbox)
|
1545
|
+
UI.control_show(main_window)
|
1546
|
+
|
1547
|
+
UI.main
|
1548
|
+
UI.quit
|
1549
|
+
```
|
1550
|
+
|
1551
|
+
New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
|
1552
|
+
|
1553
|
+
```ruby
|
1554
|
+
require 'glimmer-dsl-libui'
|
1555
|
+
|
1556
|
+
include Glimmer
|
1557
|
+
|
1558
|
+
window('Date Time Pickers', 300, 200) {
|
1559
|
+
vertical_box {
|
1560
|
+
date_time_picker { |dtp|
|
1561
|
+
on_changed do
|
1562
|
+
time = dtp.time
|
1563
|
+
p time
|
1564
|
+
end
|
1565
|
+
}
|
1566
|
+
}
|
1567
|
+
|
1568
|
+
on_closing do
|
1569
|
+
puts 'Bye Bye'
|
1570
|
+
end
|
1571
|
+
}.show
|
1572
|
+
```
|
1573
|
+
|
1484
1574
|
## Contributing to glimmer-dsl-libui
|
1485
1575
|
|
1486
1576
|
- Check out the latest master to make sure the feature hasn't been
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.13
|
@@ -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/glimmer-dsl-libui.gemspec
CHANGED
Binary file
|
@@ -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
|
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.
|
4
|
+
version: 0.0.13
|
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-
|
11
|
+
date: 2021-09-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glimmer
|
@@ -186,6 +186,7 @@ files:
|
|
186
186
|
- examples/basic_window2.rb
|
187
187
|
- examples/color_button.rb
|
188
188
|
- examples/control_gallery.rb
|
189
|
+
- examples/date_time_picker.rb
|
189
190
|
- examples/font_button.rb
|
190
191
|
- examples/meta_example.rb
|
191
192
|
- examples/midi_player.rb
|