glimmer-dsl-libui 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +90 -7
- data/VERSION +1 -1
- data/examples/basic_entry.rb +1 -1
- data/examples/simple_notepad.rb +15 -0
- data/glimmer-dsl-libui.gemspec +0 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d8ea366932ccab5730b36184d7577cf09c23532809c153aaaa5b22a79780bde
|
4
|
+
data.tar.gz: 044c9ad6ff2b80030b70b497b4cea87efd9720c0ba167c8a96c5b5fdc60a2f03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4abd11ef0a3f79e46e20eca75bc7e0deb2555567837bdcb90d4b84022417dbb419aef1ee0a8dd1ef48ee3a52b330e63eedd1876a86ab89a4da46ffd936043b7a
|
7
|
+
data.tar.gz: 6e372ea2b1fa6263f5c1a601e583a44a52a9f619c9141af7f30cb238c2d91ae125de09078cbf384c3482fcb5fc06e4e32e0c2a61a30a2a025f6677af8b998ebf
|
data/CHANGELOG.md
CHANGED
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.3
|
2
2
|
## Dependency-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)
|
@@ -51,8 +51,8 @@ The Glimmer GUI DSL provides a declarative syntax for [LibUI](https://github.com
|
|
51
51
|
The Glimmer GUI DSL follows these simple concepts in mapping from [LibUI](https://github.com/kojix2/LibUI) syntax:
|
52
52
|
- **Control**: [LibUI](https://github.com/kojix2/LibUI) controls may be declared by lower-case underscored name (aka keyword) (e.g. `window` or `button`). Behind the scenes, they are represented by keyword methods that map to corresponding `LibUI.new_keyword` methods receiving args (e.g. `window('hello world', 300, 200, 1)`).
|
53
53
|
- **Content/Properties/Listeners Block**: Any keyword may be optionally followed by a Ruby curly-brace multi-line-block containing nested controls (content) and/or properties (attributes) (e.g. `window('hello world', 300, 200, 1) {button('greet')}`). It optionally recives one arg representing the control (e.g. `button('greet') {|b| on_clicked { puts b.text}}`)
|
54
|
-
- **Property**: Control properties may be declared inside keyword blocks with lower-case underscored name followed by property value args (e.g. `title "hello world"` inside `group`). Behind the scenes,
|
55
|
-
- **Listener**: Control listeners may be declared inside keyword blocks with listener lower-case underscored name beginning with `on_` and receiving required block handler (e.g. `on_clicked {puts 'clicked'}` inside `button`). Behind the scenes,
|
54
|
+
- **Property**: Control properties may be declared inside keyword blocks with lower-case underscored name followed by property value args (e.g. `title "hello world"` inside `group`). Behind the scenes, properties correspond to `control_set_property` methods.
|
55
|
+
- **Listener**: Control listeners may be declared inside keyword blocks with listener lower-case underscored name beginning with `on_` and receiving required block handler (e.g. `on_clicked {puts 'clicked'}` inside `button`). Behind the scenes, listeners correspond to `control_on_event` methods.
|
56
56
|
|
57
57
|
Example of an app written in [LibUI](https://github.com/kojix2/LibUI)'s procedural imperative syntax:
|
58
58
|
|
@@ -65,7 +65,11 @@ UI.init
|
|
65
65
|
|
66
66
|
main_window = UI.new_window('hello world', 300, 200, 1)
|
67
67
|
|
68
|
-
UI.
|
68
|
+
button = UI.new_button('Button')
|
69
|
+
|
70
|
+
UI.button_on_clicked(button) do
|
71
|
+
UI.msg_box(main_window, 'Information', 'You clicked the button')
|
72
|
+
end
|
69
73
|
|
70
74
|
UI.window_on_closing(main_window) do
|
71
75
|
puts 'Bye Bye'
|
@@ -74,6 +78,9 @@ UI.window_on_closing(main_window) do
|
|
74
78
|
0
|
75
79
|
end
|
76
80
|
|
81
|
+
UI.window_set_child(main_window, button)
|
82
|
+
UI.control_show(main_window)
|
83
|
+
|
77
84
|
UI.main
|
78
85
|
UI.quit
|
79
86
|
```
|
@@ -85,7 +92,13 @@ require 'glimmer-dsl-libui'
|
|
85
92
|
|
86
93
|
include Glimmer
|
87
94
|
|
88
|
-
window('hello world', 300, 200, 1) {
|
95
|
+
window('hello world', 300, 200, 1) { |w|
|
96
|
+
button('Button') {
|
97
|
+
on_clicked do
|
98
|
+
msg_box(w, 'Information', 'You clicked the button')
|
99
|
+
end
|
100
|
+
}
|
101
|
+
|
89
102
|
on_closing do
|
90
103
|
puts 'Bye Bye'
|
91
104
|
end
|
@@ -103,7 +116,7 @@ gem install glimmer-dsl-libui
|
|
103
116
|
Or install via Bundler `Gemfile`:
|
104
117
|
|
105
118
|
```ruby
|
106
|
-
gem 'glimmer-dsl-libui', '~> 0.0.
|
119
|
+
gem 'glimmer-dsl-libui', '~> 0.0.3'
|
107
120
|
```
|
108
121
|
|
109
122
|
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.
|
@@ -377,7 +390,7 @@ include Glimmer
|
|
377
390
|
window('Basic Entry', 300, 50, 1) { |w|
|
378
391
|
horizontal_box {
|
379
392
|
e = entry {
|
380
|
-
stretchy 1
|
393
|
+
# stretchy 1 # Smart default option for appending to horizontal_box
|
381
394
|
|
382
395
|
on_changed do
|
383
396
|
puts e.text
|
@@ -401,6 +414,76 @@ window('Basic Entry', 300, 50, 1) { |w|
|
|
401
414
|
}.show
|
402
415
|
```
|
403
416
|
|
417
|
+
### Simple Notepad
|
418
|
+
|
419
|
+
[examples/simple_notepad.rb](examples/simple_notepad.rb)
|
420
|
+
|
421
|
+
Run with this command from the root of the project if you cloned the project:
|
422
|
+
|
423
|
+
```
|
424
|
+
ruby -r './lib/glimmer-dsl-libui' examples/simple_notepad.rb
|
425
|
+
```
|
426
|
+
|
427
|
+
Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/glimmer-dsl-libui):
|
428
|
+
|
429
|
+
```
|
430
|
+
ruby -r glimmer-dsl-libui -e "require 'examples/simple_notepad'"
|
431
|
+
```
|
432
|
+
|
433
|
+
Mac
|
434
|
+
|
435
|
+
![glimmer-dsl-libui-simple-notepad-mac.png](images/glimmer-dsl-libui-simple-notepad-mac.png)
|
436
|
+
|
437
|
+
Linux
|
438
|
+
|
439
|
+
![glimmer-dsl-libui-simple-notepad-linux.png](images/glimmer-dsl-libui-simple-notepad-linux.png)
|
440
|
+
|
441
|
+
[LibUI](https://github.com/kojix2/LibUI) Original Version:
|
442
|
+
|
443
|
+
```ruby
|
444
|
+
require 'libui'
|
445
|
+
|
446
|
+
UI = LibUI
|
447
|
+
|
448
|
+
UI.init
|
449
|
+
|
450
|
+
main_window = UI.new_window('Notepad', 500, 300, 1)
|
451
|
+
UI.window_on_closing(main_window) do
|
452
|
+
puts 'Bye Bye'
|
453
|
+
UI.control_destroy(main_window)
|
454
|
+
UI.quit
|
455
|
+
0
|
456
|
+
end
|
457
|
+
|
458
|
+
vbox = UI.new_vertical_box
|
459
|
+
UI.window_set_child(main_window, vbox)
|
460
|
+
|
461
|
+
entry = UI.new_non_wrapping_multiline_entry
|
462
|
+
UI.box_append(vbox, entry, 1)
|
463
|
+
|
464
|
+
UI.control_show(main_window)
|
465
|
+
UI.main
|
466
|
+
UI.quit
|
467
|
+
```
|
468
|
+
|
469
|
+
[Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
|
470
|
+
|
471
|
+
```ruby
|
472
|
+
require 'glimmer-dsl-libui'
|
473
|
+
|
474
|
+
include Glimmer
|
475
|
+
|
476
|
+
window('Notepad', 500, 300, 1) {
|
477
|
+
on_closing do
|
478
|
+
puts 'Bye Bye'
|
479
|
+
end
|
480
|
+
|
481
|
+
vertical_box {
|
482
|
+
non_wrapping_multiline_entry
|
483
|
+
}
|
484
|
+
}.show
|
485
|
+
```
|
486
|
+
|
404
487
|
## Contributing to glimmer-dsl-libui
|
405
488
|
|
406
489
|
- Check out the latest master to make sure the feature hasn't been
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/examples/basic_entry.rb
CHANGED
data/glimmer-dsl-libui.gemspec
CHANGED
Binary file
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
@@ -163,6 +163,7 @@ files:
|
|
163
163
|
- examples/basic_button.rb
|
164
164
|
- examples/basic_entry.rb
|
165
165
|
- examples/basic_window.rb
|
166
|
+
- examples/simple_notepad.rb
|
166
167
|
- glimmer-dsl-libui.gemspec
|
167
168
|
- lib/glimmer-dsl-libui.rb
|
168
169
|
- lib/glimmer/dsl/libui/control_expression.rb
|