glimmer-dsl-libui 0.0.15 → 0.0.16
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 +9 -0
- data/README.md +10 -10
- data/VERSION +1 -1
- data/examples/basic_entry.rb +1 -1
- data/examples/form.rb +2 -4
- data/glimmer-dsl-libui.gemspec +0 -0
- data/lib/glimmer/libui/button_proxy.rb +41 -0
- data/lib/glimmer/libui/checkbox_proxy.rb +41 -0
- data/lib/glimmer/libui/control_proxy.rb +5 -1
- data/lib/glimmer/libui/group_proxy.rb +6 -1
- data/lib/glimmer/libui/label_proxy.rb +41 -0
- data/lib/glimmer/libui/menu_proxy.rb +41 -0
- data/lib/glimmer/libui/window_proxy.rb +2 -2
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ab738eba1965fffc98860a23a44f2e1ed15c0c426ba4d21bcbb3fc4812ecde5
|
4
|
+
data.tar.gz: 2d5c195882767b63d941d9b8bad8338bc5d5ce160e97f34a9f57f5631c833fac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23e1de3b8f30f90abb605a351e6cd9302dd778da2e711f7c72c4ad39b267090bab324bd056ca3855c343781c53757af320ca67c0d4aacac4c6351f7cf4a646e8
|
7
|
+
data.tar.gz: 18f3d9b8d48bc15a342efeb38f6979e1b2516b5144a790876d931c28a2803da840f980d0d9b9cd4c96484817d4cf241d19b7b64c751229fa1ae6a236029545ac
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.0.16
|
4
|
+
|
5
|
+
- Support ability to instantiate without args and set args as properties afterwards inside block (e.g. `window { title 'Greeter'; content_size 300, 400; button {text 'Greet'; on_clicked {puts 'Hi'}} }`)
|
6
|
+
- window (was supported before, but changed default title to empty string)
|
7
|
+
- button
|
8
|
+
- checkbox
|
9
|
+
- group
|
10
|
+
- label
|
11
|
+
|
3
12
|
## 0.0.15
|
4
13
|
|
5
14
|
- New examples/form.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.16
|
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.16](#-glimmer-dsl-for-libui-0016)
|
47
47
|
- [Glimmer GUI DSL Concepts](#glimmer-gui-dsl-concepts)
|
48
48
|
- [Usage](#usage)
|
49
49
|
- [API](#api)
|
@@ -156,7 +156,7 @@ gem install glimmer-dsl-libui
|
|
156
156
|
Or install via Bundler `Gemfile`:
|
157
157
|
|
158
158
|
```ruby
|
159
|
-
gem 'glimmer-dsl-libui', '~> 0.0.
|
159
|
+
gem 'glimmer-dsl-libui', '~> 0.0.16'
|
160
160
|
```
|
161
161
|
|
162
162
|
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.
|
@@ -284,9 +284,11 @@ Control(Args) | Properties | Listeners
|
|
284
284
|
|
285
285
|
- `horizontal_box`, `vertical_box`, `grid`, and `form` controls have `padded` as `true` upon instantiation to ensure more user-friendly GUI by default
|
286
286
|
- `group` controls have `margined` as `true` upon instantiation to ensure more user-friendly GUI by default
|
287
|
-
- All controls nested under a `horizontal_box`
|
288
|
-
- `window`
|
287
|
+
- All controls nested under a `horizontal_box`, `vertical_box`, and `form` have `stretchy` property (fill maximum space) as `true` by default (passed to `box_append`/`form_append` method)
|
288
|
+
- `window` instatiation args can be left off, having the following defaults when unspecified: `title` as `''`, `width` as `150`, `height` as `150`, and `has_menubar` as `true`)
|
289
289
|
- `window` has an `on_closing` listener by default that quits application upon hitting the close button (can be overridden with a manual `on_closing` implementation that returns integer `0` for success)
|
290
|
+
- `group` has `title` property default to `''` if not specified in instantiation args, so it can be instantiated without args with `title` property specified in nested block (e.g. `group {title 'Address'; ...}`)
|
291
|
+
- `button`, `checkbox`, and `label` have `text` default to `''` if not specified in instantiation args, so they can be instantiated without args with `text` property specified in nested block (e.g. `button {text 'Greet'; on_clicked {puts 'Hello'}}`)
|
290
292
|
- `quit_menu_item` has an `on_clicked` listener by default that quits application upon selecting the quit menu item (can be overridden with a manual `on_clicked` implementation that returns integer `0` for success)
|
291
293
|
- If an `on_closing` listener was defined on `window` and it does not return an integer, default exit behavior is assumed (`window.destroy` is called followed by `LibUI.quit`, returning `0`).
|
292
294
|
- If an `on_clicked` listener was defined on `quit_menu_item` and it does not return an integer, default exit behavior is assumed (`main_window.destroy` is called followed by `LibUI.quit`, returning `0`).
|
@@ -674,7 +676,7 @@ window('Basic Entry', 300, 50) { |w|
|
|
674
676
|
}
|
675
677
|
|
676
678
|
button('Button') {
|
677
|
-
stretchy false
|
679
|
+
stretchy false # stretchy property is available when control is nested under horizontal_box
|
678
680
|
|
679
681
|
on_clicked do
|
680
682
|
text = e.text
|
@@ -1730,13 +1732,11 @@ window('Form') { |w|
|
|
1730
1732
|
vertical_box {
|
1731
1733
|
form {
|
1732
1734
|
@first_name_entry = entry {
|
1733
|
-
|
1734
|
-
label 'First Name'
|
1735
|
+
label 'First Name' # label property is available when control is nested under form
|
1735
1736
|
}
|
1736
1737
|
|
1737
1738
|
@last_name_entry = entry {
|
1738
|
-
|
1739
|
-
label 'Last Name'
|
1739
|
+
label 'Last Name' # label property is available when control is nested under form
|
1740
1740
|
}
|
1741
1741
|
}
|
1742
1742
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.16
|
data/examples/basic_entry.rb
CHANGED
data/examples/form.rb
CHANGED
@@ -10,13 +10,11 @@ window('Form') { |w|
|
|
10
10
|
vertical_box {
|
11
11
|
form {
|
12
12
|
@first_name_entry = entry {
|
13
|
-
|
14
|
-
label 'First Name'
|
13
|
+
label 'First Name' # label property is available when control is nested under form
|
15
14
|
}
|
16
15
|
|
17
16
|
@last_name_entry = entry {
|
18
|
-
|
19
|
-
label 'Last Name'
|
17
|
+
label 'Last Name' # label property is available when control is nested under form
|
20
18
|
}
|
21
19
|
}
|
22
20
|
|
data/glimmer-dsl-libui.gemspec
CHANGED
Binary file
|
@@ -0,0 +1,41 @@
|
|
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 button objects
|
27
|
+
#
|
28
|
+
# Follows the Proxy Design Pattern
|
29
|
+
class ButtonProxy < ControlProxy
|
30
|
+
DEFAULT_TEXT = ''
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def build_control
|
35
|
+
construction_args = @args.dup
|
36
|
+
construction_args[0] = DEFAULT_TEXT if construction_args.size == 0
|
37
|
+
@libui = ControlProxy.new_control(@keyword, construction_args)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
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 checkbox objects
|
27
|
+
#
|
28
|
+
# Follows the Proxy Design Pattern
|
29
|
+
class CheckboxProxy < ControlProxy
|
30
|
+
DEFAULT_TEXT = ''
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def build_control
|
35
|
+
construction_args = @args.dup
|
36
|
+
construction_args[0] = DEFAULT_TEXT if construction_args.size == 0
|
37
|
+
@libui = ControlProxy.new_control(@keyword, construction_args)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -66,6 +66,10 @@ module Glimmer
|
|
66
66
|
def menu_proxies
|
67
67
|
all_control_proxies.select {|c| c.keyword == 'menu' }
|
68
68
|
end
|
69
|
+
|
70
|
+
def new_control(keyword, args)
|
71
|
+
::LibUI.send("new_#{keyword}", *args)
|
72
|
+
end
|
69
73
|
end
|
70
74
|
|
71
75
|
BOOLEAN_PROPERTIES = %w[
|
@@ -254,7 +258,7 @@ module Glimmer
|
|
254
258
|
|
255
259
|
def build_control
|
256
260
|
@libui = if ::LibUI.respond_to?("new_#{keyword}")
|
257
|
-
|
261
|
+
ControlProxy.new_control(@keyword, @args)
|
258
262
|
elsif ::LibUI.respond_to?(keyword)
|
259
263
|
@args[0] = @args.first.libui if @args.first.is_a?(ControlProxy)
|
260
264
|
::LibUI.send(@keyword, *@args)
|
@@ -27,6 +27,8 @@ module Glimmer
|
|
27
27
|
#
|
28
28
|
# Follows the Proxy Design Pattern
|
29
29
|
class GroupProxy < ControlProxy
|
30
|
+
DEFAULT_TITLE = ''
|
31
|
+
|
30
32
|
def post_initialize_child(child)
|
31
33
|
::LibUI.group_set_child(@libui, child.libui)
|
32
34
|
end
|
@@ -39,7 +41,10 @@ module Glimmer
|
|
39
41
|
private
|
40
42
|
|
41
43
|
def build_control
|
42
|
-
|
44
|
+
construction_args = @args.dup
|
45
|
+
construction_args[0] = DEFAULT_TITLE if construction_args.size == 0
|
46
|
+
@libui = ControlProxy.new_control(@keyword, construction_args)
|
47
|
+
@libui.tap do
|
43
48
|
self.margined = true
|
44
49
|
end
|
45
50
|
end
|
@@ -0,0 +1,41 @@
|
|
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 label objects
|
27
|
+
#
|
28
|
+
# Follows the Proxy Design Pattern
|
29
|
+
class LabelProxy < ControlProxy
|
30
|
+
DEFAULT_TEXT = ''
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def build_control
|
35
|
+
construction_args = @args.dup
|
36
|
+
construction_args[0] = DEFAULT_TEXT if construction_args.size == 0
|
37
|
+
@libui = ControlProxy.new_control(@keyword, construction_args)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
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 menu objects
|
27
|
+
#
|
28
|
+
# Follows the Proxy Design Pattern
|
29
|
+
class MenuProxy < ControlProxy
|
30
|
+
DEFAULT_TEXT = ''
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def build_control
|
35
|
+
construction_args = @args.dup
|
36
|
+
construction_args[0] = DEFAULT_TEXT if construction_args.size == 0
|
37
|
+
@libui = ControlProxy.new_control(@keyword, construction_args)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -27,7 +27,7 @@ module Glimmer
|
|
27
27
|
#
|
28
28
|
# Follows the Proxy Design Pattern
|
29
29
|
class WindowProxy < ControlProxy
|
30
|
-
DEFAULT_TITLE = '
|
30
|
+
DEFAULT_TITLE = ''
|
31
31
|
DEFAULT_WIDTH = 150
|
32
32
|
DEFAULT_HEIGHT = 150
|
33
33
|
DEFAULT_HAS_MENUBAR = 1
|
@@ -79,7 +79,7 @@ module Glimmer
|
|
79
79
|
construction_args[2] = DEFAULT_HEIGHT if construction_args.size == 2
|
80
80
|
construction_args[3] = DEFAULT_HAS_MENUBAR if construction_args.size == 3
|
81
81
|
construction_args[3] = ControlProxy.boolean_to_integer(construction_args[3]) if construction_args.size == 4 && (construction_args[3].is_a?(TrueClass) || construction_args[3].is_a?(FalseClass))
|
82
|
-
@libui =
|
82
|
+
@libui = ControlProxy.new_control(@keyword, construction_args)
|
83
83
|
@libui.tap do
|
84
84
|
handle_listener('on_closing') do
|
85
85
|
destroy
|
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.16
|
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-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glimmer
|
@@ -205,7 +205,9 @@ files:
|
|
205
205
|
- lib/glimmer/dsl/libui/tab_item_expression.rb
|
206
206
|
- lib/glimmer/libui/about_menu_item_proxy.rb
|
207
207
|
- lib/glimmer/libui/box.rb
|
208
|
+
- lib/glimmer/libui/button_proxy.rb
|
208
209
|
- lib/glimmer/libui/check_menu_item_proxy.rb
|
210
|
+
- lib/glimmer/libui/checkbox_proxy.rb
|
209
211
|
- lib/glimmer/libui/color_button_proxy.rb
|
210
212
|
- lib/glimmer/libui/combobox_proxy.rb
|
211
213
|
- lib/glimmer/libui/control_proxy.rb
|
@@ -217,7 +219,9 @@ files:
|
|
217
219
|
- lib/glimmer/libui/grid_proxy.rb
|
218
220
|
- lib/glimmer/libui/group_proxy.rb
|
219
221
|
- lib/glimmer/libui/horizontal_box_proxy.rb
|
222
|
+
- lib/glimmer/libui/label_proxy.rb
|
220
223
|
- lib/glimmer/libui/menu_item_proxy.rb
|
224
|
+
- lib/glimmer/libui/menu_proxy.rb
|
221
225
|
- lib/glimmer/libui/multiline_entry_proxy.rb
|
222
226
|
- lib/glimmer/libui/non_wrapping_multiline_entry_proxy.rb
|
223
227
|
- lib/glimmer/libui/preferences_menu_item_proxy.rb
|