glimmer-dsl-libui 0.4.5 → 0.4.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dcc9fbfe0fec2f6678f0515a8471c71fef28e7e8ae7a253bf1d8906aa7b69c11
4
- data.tar.gz: 836911f22535571d796e759d20256e380e6dc3692cfd08ca13a62e053fea14ce
3
+ metadata.gz: e2f52b21e108a75ec59b380fa0d84cd116bb47423877575486ee5bc2647d7953
4
+ data.tar.gz: 2d7d9ab30e81bd1eb846dca3bddeb79509dab1e641c38b44d5d31914679ab49c
5
5
  SHA512:
6
- metadata.gz: 5378fe7b1ee1c147705b5a97ff8414cdefcc22fb7720a388b9a8de6694ec128a4bbd2d4ba535b4c6bba5e7373f98ab32264f96bfd448deb7a00b6c07aefe4c42
7
- data.tar.gz: cf83d73acf39d2be2bc16544b12466eefd38e76d37b595e9ff623c487a3296c27b1880560da7b067ea1c85b4fd28d1fd22dc9ea6a9ea1b5bc354536ccd38de0c
6
+ metadata.gz: d90045f52bd836fc18ff4aff2bc096302101651bc006a144af9f80563e171ecd4d236e85ebbb064b53374a61946185fa9aef0946b493b0ca1df967670629ac5e
7
+ data.tar.gz: 491694ae1ccdbbb5b4c7e0e3bfa30beee648f9a579dfaaa13b35ee583a6551967c441078fa83857c0e886a2991662d83d952f79b73a39e27769262c0c77b822e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.4.6
4
+
5
+ - Support `slider` `value` bidirectional data-binding (with `<=>` sign)
6
+ - Support `color_button` `color` bidirectional data-binding (with `<=>` sign)
7
+ - Support `font_button` `font` write-only unidirectional data-binding (with `<=>` sign)
8
+ - Improve examples/color_button.rb with bidirectional data-binding for `color_button` `color`
9
+ - Improve examples/histogram.rb with bidirectional data-binding for `color_button` `color`
10
+ - Improve examples/font_button.rb with bidirectional data-binding for `font_button` `font`
11
+
3
12
  ## 0.4.5
4
13
 
5
14
  - Support `spinbox` `value` bidirectional data-binding (with `<=>` sign)
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.4.5
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.4.6
2
2
  ## Prerequisite-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
  [![Join the chat at https://gitter.im/AndyObtiva/glimmer](https://badges.gitter.im/AndyObtiva/glimmer.svg)](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@@ -373,7 +373,7 @@ gem install glimmer-dsl-libui
373
373
  Or install via Bundler `Gemfile`:
374
374
 
375
375
  ```ruby
376
- gem 'glimmer-dsl-libui', '~> 0.4.5'
376
+ gem 'glimmer-dsl-libui', '~> 0.4.6'
377
377
  ```
378
378
 
379
379
  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.
@@ -1382,11 +1382,14 @@ Data-binding supports utilizing the [MVP (Model View Presenter)](https://en.wiki
1382
1382
  ![MVP](https://www.researchgate.net/profile/Gilles-Perrouin/publication/320249584/figure/fig8/AS:668260987068418@1536337243385/Model-view-presenter-architecture.png)
1383
1383
 
1384
1384
  [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) supports bidirectional (two-way) data-binding of the following controls/properties via the `<=>` operator (indicating data is moving in both directions between View and Model):
1385
- - `entry` `text` property
1386
- - `multiline_entry` `text` property
1387
- - `non_wrapping_multiline_entry` `text` property
1388
- - `search_entry` `text` property
1389
- - `spinbox` `value` property
1385
+ - `color_button`: `color`
1386
+ - `entry`: `text`
1387
+ - `font_button`: `font`
1388
+ - `multiline_entry`: `text`
1389
+ - `non_wrapping_multiline_entry`: `text`
1390
+ - `search_entry`: `text`
1391
+ - `slider`: `value`
1392
+ - `spinbox`: `value`
1390
1393
 
1391
1394
  Example of bidirectional data-binding:
1392
1395
 
@@ -1875,7 +1878,7 @@ Example:
1875
1878
 
1876
1879
  ## Examples
1877
1880
 
1878
- The following 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.
1881
+ The following examples include reimplementions of the examples in the [LibUI](https://github.com/kojix2/LibUI) project utilizing the [Glimmer GUI DSL](#glimmer-gui-dsl-concepts) (with and without data-binding) as well as brand new examples.
1879
1882
 
1880
1883
  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.
1881
1884
 
@@ -2490,7 +2493,33 @@ UI.quit
2490
2493
 
2491
2494
  ```
2492
2495
 
2493
- [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
2496
+ [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version (with [data-binding](#data-binding)):
2497
+
2498
+ ```ruby
2499
+ require 'glimmer-dsl-libui'
2500
+
2501
+ class FontButton
2502
+ include Glimmer
2503
+
2504
+ attr_accessor :font_descriptor
2505
+
2506
+ def launch
2507
+ window('hello world', 300, 200) {
2508
+ font_button {
2509
+ font <=> [self, :font_descriptor, after_write: -> { p font_descriptor }]
2510
+ }
2511
+
2512
+ on_closing do
2513
+ puts 'Bye Bye'
2514
+ end
2515
+ }.show
2516
+ end
2517
+ end
2518
+
2519
+ FontButton.new.launch
2520
+ ```
2521
+
2522
+ [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version 2 (without [data-binding](#data-binding)):
2494
2523
 
2495
2524
  ```ruby
2496
2525
  require 'glimmer-dsl-libui'
@@ -2531,7 +2560,33 @@ Mac | Windows | Linux
2531
2560
  ----|---------|------
2532
2561
  ![glimmer-dsl-libui-mac-color-button.png](images/glimmer-dsl-libui-mac-color-button.png) ![glimmer-dsl-libui-mac-color-button-selection.png](images/glimmer-dsl-libui-mac-color-button-selection.png) | ![glimmer-dsl-libui-windows-color-button.png](images/glimmer-dsl-libui-windows-color-button.png) ![glimmer-dsl-libui-windows-color-button-selection.png](images/glimmer-dsl-libui-windows-color-button-selection.png) | ![glimmer-dsl-libui-linux-color-button.png](images/glimmer-dsl-libui-linux-color-button.png) ![glimmer-dsl-libui-linux-color-button-selection.png](images/glimmer-dsl-libui-linux-color-button-selection.png)
2533
2562
 
2534
- New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
2563
+ New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version (with [data-binding](#data-binding)):
2564
+
2565
+ ```ruby
2566
+ require 'glimmer-dsl-libui'
2567
+
2568
+ class ColorButton
2569
+ include Glimmer
2570
+
2571
+ attr_accessor :selected_color
2572
+
2573
+ def initialize
2574
+ @selected_color = :blue
2575
+ end
2576
+
2577
+ def launch
2578
+ window('color button', 240) {
2579
+ color_button {
2580
+ color <=> [self, :selected_color, after_write: ->(color) {p color}]
2581
+ }
2582
+ }.show
2583
+ end
2584
+ end
2585
+
2586
+ ColorButton.new.launch
2587
+ ```
2588
+
2589
+ New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version 2 (without [data-binding](#data-binding)):
2535
2590
 
2536
2591
  ```ruby
2537
2592
  require 'glimmer-dsl-libui'
@@ -6975,12 +7030,7 @@ class Histogram
6975
7030
 
6976
7031
  color_button { |cb|
6977
7032
  stretchy false
6978
- color COLOR_BLUE
6979
-
6980
- on_changed do
6981
- @histogram_color = cb.color
6982
- @area.queue_redraw_all
6983
- end
7033
+ color <=> [self, :histogram_color, after_write: -> { @area.queue_redraw_all }]
6984
7034
  }
6985
7035
  }
6986
7036
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.5
1
+ 0.4.6
@@ -1,16 +1,21 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'glimmer-dsl-libui'
4
2
 
5
- include Glimmer
3
+ class ColorButton
4
+ include Glimmer
5
+
6
+ attr_accessor :selected_color
7
+
8
+ def initialize
9
+ @selected_color = :blue
10
+ end
11
+
12
+ def launch
13
+ window('color button', 240) {
14
+ color_button {
15
+ color <=> [self, :selected_color, after_write: ->(color) {p color}]
16
+ }
17
+ }.show
18
+ end
19
+ end
6
20
 
7
- window('color button', 240) {
8
- color_button { |cb|
9
- color :blue
10
-
11
- on_changed do
12
- rgba = cb.color
13
- p rgba
14
- end
15
- }
16
- }.show
21
+ ColorButton.new.launch
@@ -0,0 +1,14 @@
1
+ require 'glimmer-dsl-libui'
2
+
3
+ include Glimmer
4
+
5
+ window('color button', 240) {
6
+ color_button { |cb|
7
+ color :blue
8
+
9
+ on_changed do
10
+ rgba = cb.color
11
+ p rgba
12
+ end
13
+ }
14
+ }.show
@@ -2,17 +2,22 @@
2
2
 
3
3
  require 'glimmer-dsl-libui'
4
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
- }
5
+ class FontButton
6
+ include Glimmer
7
+
8
+ attr_accessor :font_descriptor
14
9
 
15
- on_closing do
16
- puts 'Bye Bye'
10
+ def launch
11
+ window('hello world', 300, 200) {
12
+ font_button {
13
+ font <=> [self, :font_descriptor, after_write: -> { p font_descriptor }]
14
+ }
15
+
16
+ on_closing do
17
+ puts 'Bye Bye'
18
+ end
19
+ }.show
17
20
  end
18
- }.show
21
+ end
22
+
23
+ FontButton.new.launch
@@ -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
@@ -71,12 +71,7 @@ class Histogram
71
71
 
72
72
  color_button { |cb|
73
73
  stretchy false
74
- color COLOR_BLUE
75
-
76
- on_changed do
77
- @histogram_color = cb.color
78
- @area.queue_redraw_all
79
- end
74
+ color <=> [self, :histogram_color, after_write: -> { @area.queue_redraw_all }]
80
75
  }
81
76
  }
82
77
 
Binary file
@@ -113,6 +113,11 @@ module Glimmer
113
113
  Fiddle.free @alpha unless @alpha.nil?
114
114
  super
115
115
  end
116
+
117
+ def data_bind(property, model_binding)
118
+ super
119
+ handle_listener('on_changed') { model_binding.call(color) } if property == 'color'
120
+ end
116
121
  end
117
122
  end
118
123
  end
@@ -64,6 +64,10 @@ module Glimmer
64
64
  ::LibUI.free_font_button_font(@font_descriptor) unless @font_descriptor.nil?
65
65
  super
66
66
  end
67
+
68
+ def data_bind(property, model_binding)
69
+ handle_listener('on_changed') { model_binding.call(font) } if property == 'font'
70
+ end
67
71
  end
68
72
  end
69
73
  end
@@ -0,0 +1,38 @@
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 ControlProxy
27
+ # Proxy for LibUI slider objects
28
+ #
29
+ # Follows the Proxy Design Pattern
30
+ class SliderProxy < ControlProxy
31
+ def data_bind(property, model_binding)
32
+ super
33
+ handle_listener('on_changed') { model_binding.call(value) } if property == 'value'
34
+ end
35
+ end
36
+ end
37
+ end
38
+ 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.4.5
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
@@ -247,6 +247,7 @@ files:
247
247
  - examples/basic_window2.rb
248
248
  - examples/button_counter.rb
249
249
  - examples/color_button.rb
250
+ - examples/color_button2.rb
250
251
  - examples/color_the_circles.rb
251
252
  - examples/control_gallery.rb
252
253
  - examples/custom_draw_text.rb
@@ -259,6 +260,7 @@ files:
259
260
  - examples/editable_column_table.rb
260
261
  - examples/editable_table.rb
261
262
  - examples/font_button.rb
263
+ - examples/font_button2.rb
262
264
  - examples/form.rb
263
265
  - examples/form2.rb
264
266
  - examples/form_table.rb
@@ -370,6 +372,7 @@ files:
370
372
  - lib/glimmer/libui/control_proxy/open_type_tag_proxy.rb
371
373
  - lib/glimmer/libui/control_proxy/path_proxy.rb
372
374
  - lib/glimmer/libui/control_proxy/radio_buttons_proxy.rb
375
+ - lib/glimmer/libui/control_proxy/slider_proxy.rb
373
376
  - lib/glimmer/libui/control_proxy/spinbox_proxy.rb
374
377
  - lib/glimmer/libui/control_proxy/tab_item_proxy.rb
375
378
  - lib/glimmer/libui/control_proxy/table_proxy.rb