glimmer-dsl-libui 0.0.9 → 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 +24 -0
- data/README.md +269 -22
- data/VERSION +1 -1
- data/examples/color_button.rb +14 -0
- data/examples/date_time_picker.rb +20 -0
- data/examples/font_button.rb +18 -0
- data/examples/meta_example.rb +13 -2
- data/glimmer-dsl-libui.gemspec +0 -0
- data/lib/glimmer/libui/box.rb +10 -0
- data/lib/glimmer/libui/color_button_proxy.rb +64 -0
- data/lib/glimmer/libui/control_proxy.rb +23 -7
- 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/font_button_proxy.rb +68 -0
- data/lib/glimmer/libui/group_proxy.rb +5 -0
- data/lib/glimmer/libui/time_picker_proxy.rb +7 -0
- data/lib/glimmer/libui/window_proxy.rb +10 -1
- data/lib/glimmer-dsl-libui.rb +1 -0
- metadata +27 -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,29 @@
|
|
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
|
+
|
8
|
+
## 0.0.12
|
9
|
+
|
10
|
+
- Have examples/meta_example.rb allow code editing to enable experimentation and learning
|
11
|
+
- Fix issue with examples/meta_example using puts_debuggerer (a development gem)
|
12
|
+
|
13
|
+
## 0.0.11
|
14
|
+
|
15
|
+
- New examples/basic_color.rb
|
16
|
+
- Support `color_button` `color` property
|
17
|
+
- Proper destroy of controls (deleting from parent `box`, `window`, or `group` first)
|
18
|
+
- On the Mac only, if no menu is specified, add a Quit menu item automatically to allow quitting with CMD+Q
|
19
|
+
|
20
|
+
## 0.0.10
|
21
|
+
|
22
|
+
- Support examples/font_button.rb
|
23
|
+
- Support `font_button` control
|
24
|
+
- Add File -> Quit menu item to examples/meta_example.rb
|
25
|
+
- Glimmer Style Guide added to README.md
|
26
|
+
|
3
27
|
## 0.0.9
|
4
28
|
|
5
29
|
- Build a meta-example (example of examples)
|
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)
|
@@ -6,17 +6,17 @@
|
|
6
6
|
|
7
7
|
[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!
|
8
8
|
|
9
|
-
[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
|
9
|
+
[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/)).
|
10
10
|
|
11
11
|
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.
|
12
12
|
|
13
13
|
[Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) aims to provide a DSL similar to the [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt) to enable more productive desktop development in Ruby with:
|
14
|
-
- Declarative DSL syntax that visually maps to the GUI
|
14
|
+
- Declarative DSL syntax that visually maps to the GUI control hierarchy
|
15
15
|
- Convention over configuration via smart defaults and automation of low-level details
|
16
16
|
- Requiring the least amount of syntax possible to build GUI
|
17
17
|
- Bidirectional Data-Binding to declaratively wire and automatically synchronize GUI with Business Models
|
18
|
-
- Custom
|
19
|
-
- Scaffolding for new custom
|
18
|
+
- Custom Control support
|
19
|
+
- Scaffolding for new custom controls, apps, and gems
|
20
20
|
- Native-Executable packaging on Mac, Windows, and Linux.
|
21
21
|
|
22
22
|
Example:
|
@@ -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)
|
@@ -54,6 +54,7 @@ Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interes
|
|
54
54
|
- [Extra Operations](#extra-operations)
|
55
55
|
- [Smart Defaults and Conventions](#smart-defaults-and-conventions)
|
56
56
|
- [Original API](#original-api)
|
57
|
+
- [Glimmer Style Guide](#glimmer-style-guide)
|
57
58
|
- [Girb (Glimmer IRB)](#girb-glimmer-irb)
|
58
59
|
- [Examples](#examples)
|
59
60
|
- [Basic Window](#basic-window)
|
@@ -62,6 +63,9 @@ Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interes
|
|
62
63
|
- [Simple Notepad](#simple-notepad)
|
63
64
|
- [Midi Player](#midi-player)
|
64
65
|
- [Control Gallery](#control-gallery)
|
66
|
+
- [Font Button](#font-button)
|
67
|
+
- [Color Button](#color-button)
|
68
|
+
- [Date Time Picker](#date-time-picker)
|
65
69
|
- [Contributing to glimmer-dsl-libui](#contributing-to-glimmer-dsl-libui)
|
66
70
|
- [Help](#help)
|
67
71
|
- [Issues](#issues)
|
@@ -76,9 +80,9 @@ Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interes
|
|
76
80
|
|
77
81
|
The Glimmer GUI DSL provides object-oriented declarative hierarchical syntax for [LibUI](https://github.com/kojix2/LibUI) that:
|
78
82
|
- Supports smart defaults (e.g. automatic `on_closing` listener that quits `window`)
|
79
|
-
- Automates wiring of
|
83
|
+
- Automates wiring of controls (e.g. `button` is automatically set as child of `window`)
|
80
84
|
- Hides lower-level details (e.g. `LibUI.main` loop is started automatically when triggering `show` on `window`)
|
81
|
-
- Nests
|
85
|
+
- Nests controls according to their visual hierarchy
|
82
86
|
- Requires the minimum amount of syntax needed to describe an app's GUI
|
83
87
|
|
84
88
|
The Glimmer GUI DSL follows these simple concepts in mapping from [LibUI](https://github.com/kojix2/LibUI) syntax:
|
@@ -149,7 +153,7 @@ gem install glimmer-dsl-libui
|
|
149
153
|
Or install via Bundler `Gemfile`:
|
150
154
|
|
151
155
|
```ruby
|
152
|
-
gem 'glimmer-dsl-libui', '~> 0.0.
|
156
|
+
gem 'glimmer-dsl-libui', '~> 0.0.13'
|
153
157
|
```
|
154
158
|
|
155
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.
|
@@ -183,7 +187,7 @@ Any control returned by a [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) keyword d
|
|
183
187
|
Example (you may copy/paste in [`girb`](#girb-glimmer-irb)):
|
184
188
|
|
185
189
|
```ruby
|
186
|
-
w = window('hello world'
|
190
|
+
w = window('hello world')
|
187
191
|
puts w.title # => hello world
|
188
192
|
w.title = 'howdy'
|
189
193
|
puts w.title # => howdy
|
@@ -196,7 +200,7 @@ Controls are wrapped as Ruby proxy objects, having a `#libui` method to obtain t
|
|
196
200
|
Example (you may copy/paste in [`girb`](#girb-glimmer-irb)):
|
197
201
|
|
198
202
|
```ruby
|
199
|
-
w = window('hello world'
|
203
|
+
w = window('hello world') # => #<Glimmer::LibUI::WindowProxy:0x00007fde4ea39fb0
|
200
204
|
w.libui # => #<Fiddle::Pointer:0x00007fde53997980 ptr=0x00007fde51352a60 size=0 free=0x0000000000000000>
|
201
205
|
```
|
202
206
|
|
@@ -208,12 +212,12 @@ Control(Args) | Properties | Listeners
|
|
208
212
|
`button(text as String)` | `text` (`String`) | `on_clicked`
|
209
213
|
`checkbox(text as String)` | `checked` (Boolean), `text` (`String`) | `on_toggled`
|
210
214
|
`combobox` | `items` (`Array` of `String`), `selected` (`Integer`) | `on_selected`
|
211
|
-
`color_button` | `color` (
|
212
|
-
`date_picker` | `time` (`
|
213
|
-
`date_time_picker` | `time` (`
|
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`
|
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`
|
214
218
|
`editable_combobox` | `items` (`Array` of `String`), `text` (`String`) | `on_changed`
|
215
219
|
`entry` | `read_only` (Boolean), `text` (`String`) | `on_changed`
|
216
|
-
`font_button` | `font` (`
|
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`
|
217
221
|
`group(text as String)` | `margined` (Boolean), `title` (`String`) | None
|
218
222
|
`horizontal_box` | `padded` (Boolean) | None
|
219
223
|
`horizontal_separator` | None | None
|
@@ -232,7 +236,7 @@ Control(Args) | Properties | Listeners
|
|
232
236
|
`spinbox(min as Numeric, max as Numeric)` | `value` (`Numeric`) | `on_changed`
|
233
237
|
`tab` | `margined` (Boolean), `num_pages` (`Integer`) | None
|
234
238
|
`tab_item(name as String)` | `index` [read-only] (`Integer`), `margined` (Boolean), `name` [read-only] (`String`) | None
|
235
|
-
`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`
|
236
240
|
`vertical_box` | `padded` (Boolean) | None
|
237
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`
|
238
242
|
|
@@ -276,12 +280,27 @@ Control(Args) | Properties | Listeners
|
|
276
280
|
- 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.
|
277
281
|
- All boolean property writers accept `true`/`false` in addition to `1`/`0` in Ruby
|
278
282
|
- All string property readers return a `String` object in Ruby instead of the [libui](https://github.com/andlabs/libui) Fiddle pointer object.
|
283
|
+
- Automatically allocate font descriptors upon instantiating `font_button` controls and free them when destorying `font_button` controls
|
284
|
+
- Automatically allocate color value pointers upon instantiating `color_button` controls and free them when destorying `color_button` controls
|
285
|
+
- On the Mac, if no `menu` items were added, an automatic `quit_menu_item` is added to enable quitting with CTRL+Q
|
286
|
+
- When destroying a control nested under a `horizontal_box` or `vertical_box`, it is automatically deleted from the box's children
|
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`
|
279
289
|
|
280
290
|
### Original API
|
281
291
|
|
282
292
|
To learn more about the [LibUI](https://github.com/kojix2/LibUI) API exposed through [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui),
|
283
293
|
check out the [libui C headers](https://github.com/andlabs/libui/blob/master/ui.h)
|
284
294
|
|
295
|
+
## Glimmer Style Guide
|
296
|
+
|
297
|
+
- Control arguments are always wrapped by parentheses
|
298
|
+
- Control blocks are always declared with curly braces to clearly visualize hierarchical view code and separate from logic code
|
299
|
+
- Control property declarations always have arguments and never take a block
|
300
|
+
- Control property arguments are never wrapped inside parentheses
|
301
|
+
- 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.
|
302
|
+
- 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.
|
303
|
+
|
285
304
|
## Girb (Glimmer IRB)
|
286
305
|
|
287
306
|
You can run the `girb` command (`bin/girb` if you cloned the project locally):
|
@@ -296,9 +315,9 @@ Gotcha: On the Mac, when you close a window opened in `girb`, it remains open un
|
|
296
315
|
|
297
316
|
## Examples
|
298
317
|
|
299
|
-
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).
|
318
|
+
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.
|
300
319
|
|
301
|
-
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.
|
320
|
+
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.
|
302
321
|
|
303
322
|
[examples/meta_example.rb](examples/meta_example.rb)
|
304
323
|
|
@@ -322,7 +341,7 @@ Linux
|
|
322
341
|
|
323
342
|

|
324
343
|
|
325
|
-
[Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
|
344
|
+
New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
|
326
345
|
|
327
346
|
```ruby
|
328
347
|
require 'glimmer-dsl-libui'
|
@@ -345,6 +364,10 @@ class MetaExample
|
|
345
364
|
File.join(File.expand_path('.', __dir__), "#{example.underscore}.rb")
|
346
365
|
end
|
347
366
|
|
367
|
+
def glimmer_dsl_libui_file
|
368
|
+
File.expand_path('../lib/glimmer-dsl-libui', __dir__)
|
369
|
+
end
|
370
|
+
|
348
371
|
def launch
|
349
372
|
window('Meta-Example', 700, 500) { |w|
|
350
373
|
margined true
|
@@ -364,13 +387,20 @@ class MetaExample
|
|
364
387
|
stretchy false
|
365
388
|
|
366
389
|
on_clicked do
|
367
|
-
|
390
|
+
begin
|
391
|
+
meta_example_file = File.join(Dir.home, '.meta_example.rb')
|
392
|
+
File.write(meta_example_file, @nwme.text)
|
393
|
+
result = `ruby -r #{glimmer_dsl_libui_file} #{meta_example_file} 2>&1`
|
394
|
+
msg_box(w, 'Error Running Example', result) if result.include?('error')
|
395
|
+
rescue => e
|
396
|
+
puts 'Unable to write code changes! Running original example...'
|
397
|
+
system "ruby -r #{glimmer_dsl_libui_file} #{file_path_for(@examples[@rbs.selected])}"
|
398
|
+
end
|
368
399
|
end
|
369
400
|
}
|
370
401
|
}
|
371
402
|
vertical_box {
|
372
403
|
@nwme = non_wrapping_multiline_entry {
|
373
|
-
read_only true
|
374
404
|
text File.read(file_path_for(@examples[@rbs.selected]))
|
375
405
|
}
|
376
406
|
}
|
@@ -464,7 +494,7 @@ ruby -r glimmer-dsl-libui -e "require 'examples/basic_button'"
|
|
464
494
|
Mac
|
465
495
|
|
466
496
|

|
467
|
-

|
497
|
+

|
468
498
|
|
469
499
|
Linux
|
470
500
|
|
@@ -1324,6 +1354,223 @@ MAIN_WINDOW = window('Control Gallery', 600, 500) {
|
|
1324
1354
|
MAIN_WINDOW.show
|
1325
1355
|
```
|
1326
1356
|
|
1357
|
+
### Font Button
|
1358
|
+
|
1359
|
+
[examples/font_button.rb](examples/font_button.rb)
|
1360
|
+
|
1361
|
+
Run with this command from the root of the project if you cloned the project:
|
1362
|
+
|
1363
|
+
```
|
1364
|
+
ruby -r './lib/glimmer-dsl-libui' examples/font_button.rb
|
1365
|
+
```
|
1366
|
+
|
1367
|
+
Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/glimmer-dsl-libui):
|
1368
|
+
|
1369
|
+
```
|
1370
|
+
ruby -r glimmer-dsl-libui -e "require 'examples/font_button'"
|
1371
|
+
```
|
1372
|
+
|
1373
|
+
Mac
|
1374
|
+
|
1375
|
+

|
1376
|
+

|
1377
|
+
|
1378
|
+
Linux
|
1379
|
+
|
1380
|
+

|
1381
|
+

|
1382
|
+
|
1383
|
+
[LibUI](https://github.com/kojix2/LibUI) Original Version:
|
1384
|
+
|
1385
|
+
```ruby
|
1386
|
+
require 'libui'
|
1387
|
+
|
1388
|
+
UI = LibUI
|
1389
|
+
|
1390
|
+
UI.init
|
1391
|
+
|
1392
|
+
main_window = UI.new_window('hello world', 300, 200, 1)
|
1393
|
+
|
1394
|
+
font_button = UI.new_font_button
|
1395
|
+
font_descriptor = UI::FFI::FontDescriptor.malloc
|
1396
|
+
UI.font_button_on_changed(font_button) do
|
1397
|
+
UI.font_button_font(font_button, font_descriptor)
|
1398
|
+
p family: font_descriptor.Family.to_s,
|
1399
|
+
size: font_descriptor.Size,
|
1400
|
+
weight: font_descriptor.Weight,
|
1401
|
+
italic: font_descriptor.Italic,
|
1402
|
+
stretch: font_descriptor.Stretch
|
1403
|
+
end
|
1404
|
+
|
1405
|
+
UI.window_on_closing(main_window) do
|
1406
|
+
puts 'Bye Bye'
|
1407
|
+
UI.control_destroy(main_window)
|
1408
|
+
UI.quit
|
1409
|
+
0
|
1410
|
+
end
|
1411
|
+
|
1412
|
+
UI.window_set_child(main_window, font_button)
|
1413
|
+
UI.control_show(main_window)
|
1414
|
+
|
1415
|
+
UI.main
|
1416
|
+
UI.quit
|
1417
|
+
|
1418
|
+
```
|
1419
|
+
|
1420
|
+
[Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
|
1421
|
+
|
1422
|
+
```ruby
|
1423
|
+
require 'glimmer-dsl-libui'
|
1424
|
+
|
1425
|
+
include Glimmer
|
1426
|
+
|
1427
|
+
window('hello world', 300, 200) {
|
1428
|
+
font_button { |fb|
|
1429
|
+
on_changed do
|
1430
|
+
font_descriptor = fb.font
|
1431
|
+
p font_descriptor
|
1432
|
+
end
|
1433
|
+
}
|
1434
|
+
|
1435
|
+
on_closing do
|
1436
|
+
puts 'Bye Bye'
|
1437
|
+
end
|
1438
|
+
}.show
|
1439
|
+
```
|
1440
|
+
|
1441
|
+
### Color Button
|
1442
|
+
|
1443
|
+
[examples/color_button.rb](examples/color_button.rb)
|
1444
|
+
|
1445
|
+
Run with this command from the root of the project if you cloned the project:
|
1446
|
+
|
1447
|
+
```
|
1448
|
+
ruby -r './lib/glimmer-dsl-libui' examples/color_button.rb
|
1449
|
+
```
|
1450
|
+
|
1451
|
+
Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/glimmer-dsl-libui):
|
1452
|
+
|
1453
|
+
```
|
1454
|
+
ruby -r glimmer-dsl-libui -e "require 'examples/color_button'"
|
1455
|
+
```
|
1456
|
+
|
1457
|
+
Mac
|
1458
|
+
|
1459
|
+

|
1460
|
+

|
1461
|
+
|
1462
|
+
Linux
|
1463
|
+
|
1464
|
+

|
1465
|
+

|
1466
|
+
|
1467
|
+
New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
|
1468
|
+
|
1469
|
+
```ruby
|
1470
|
+
require 'glimmer-dsl-libui'
|
1471
|
+
|
1472
|
+
include Glimmer
|
1473
|
+
|
1474
|
+
window('color button', 230) {
|
1475
|
+
color_button { |cb|
|
1476
|
+
on_changed do
|
1477
|
+
rgba = cb.color
|
1478
|
+
p rgba
|
1479
|
+
end
|
1480
|
+
}
|
1481
|
+
}.show
|
1482
|
+
```
|
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
|
+
|
1327
1574
|
## Contributing to glimmer-dsl-libui
|
1328
1575
|
|
1329
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
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'glimmer-dsl-libui'
|
4
|
+
|
5
|
+
include Glimmer
|
6
|
+
|
7
|
+
window('hello world', 300, 200) {
|
8
|
+
font_button { |fb|
|
9
|
+
on_changed do
|
10
|
+
font_descriptor = fb.font
|
11
|
+
p font_descriptor
|
12
|
+
end
|
13
|
+
}
|
14
|
+
|
15
|
+
on_closing do
|
16
|
+
puts 'Bye Bye'
|
17
|
+
end
|
18
|
+
}.show
|
data/examples/meta_example.rb
CHANGED
@@ -20,6 +20,10 @@ 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
28
|
window('Meta-Example', 700, 500) { |w|
|
25
29
|
margined true
|
@@ -39,13 +43,20 @@ class MetaExample
|
|
39
43
|
stretchy false
|
40
44
|
|
41
45
|
on_clicked do
|
42
|
-
|
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
|
43
55
|
end
|
44
56
|
}
|
45
57
|
}
|
46
58
|
vertical_box {
|
47
59
|
@nwme = non_wrapping_multiline_entry {
|
48
|
-
read_only true
|
49
60
|
text File.read(file_path_for(@examples[@rbs.selected]))
|
50
61
|
}
|
51
62
|
}
|
data/glimmer-dsl-libui.gemspec
CHANGED
Binary file
|
data/lib/glimmer/libui/box.rb
CHANGED
@@ -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_#{
|
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
|
@@ -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
|
@@ -0,0 +1,68 @@
|
|
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 font button objects
|
27
|
+
#
|
28
|
+
# Follows the Proxy Design Pattern
|
29
|
+
class FontButtonProxy < ControlProxy
|
30
|
+
def font
|
31
|
+
@font_descriptor ||= ::LibUI::FFI::FontDescriptor.malloc
|
32
|
+
::LibUI.font_button_font(@libui, @font_descriptor)
|
33
|
+
{
|
34
|
+
family: @font_descriptor.Family.to_s,
|
35
|
+
size: @font_descriptor.Size,
|
36
|
+
weight: @font_descriptor.Weight,
|
37
|
+
italic: @font_descriptor.Italic,
|
38
|
+
stretch: @font_descriptor.Stretch
|
39
|
+
}
|
40
|
+
end
|
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
|
+
|
62
|
+
def destroy
|
63
|
+
::LibUI.free_font_button_font(@font_descriptor) unless @font_descriptor.nil?
|
64
|
+
super
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
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
|
-
|
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
|
data/lib/glimmer-dsl-libui.rb
CHANGED
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
|
@@ -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,7 +184,10 @@ 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
|
190
|
+
- examples/font_button.rb
|
168
191
|
- examples/meta_example.rb
|
169
192
|
- examples/midi_player.rb
|
170
193
|
- examples/simple_notepad.rb
|
@@ -181,11 +204,13 @@ files:
|
|
181
204
|
- lib/glimmer/libui/about_menu_item_proxy.rb
|
182
205
|
- lib/glimmer/libui/box.rb
|
183
206
|
- lib/glimmer/libui/check_menu_item_proxy.rb
|
207
|
+
- lib/glimmer/libui/color_button_proxy.rb
|
184
208
|
- lib/glimmer/libui/combobox_proxy.rb
|
185
209
|
- lib/glimmer/libui/control_proxy.rb
|
186
210
|
- lib/glimmer/libui/date_picker_proxy.rb
|
187
211
|
- lib/glimmer/libui/date_time_picker_proxy.rb
|
188
212
|
- lib/glimmer/libui/editable_combobox_proxy.rb
|
213
|
+
- lib/glimmer/libui/font_button_proxy.rb
|
189
214
|
- lib/glimmer/libui/group_proxy.rb
|
190
215
|
- lib/glimmer/libui/horizontal_box_proxy.rb
|
191
216
|
- lib/glimmer/libui/menu_item_proxy.rb
|