glimmer-dsl-tk 0.0.14 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/README.md +68 -10
- data/VERSION +1 -1
- data/glimmer-dsl-tk.gemspec +0 -0
- data/lib/glimmer/tk/root_proxy.rb +1 -3
- data/lib/glimmer/tk/widget_proxy.rb +22 -0
- data/samples/hello/hello_button.rb +52 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12e68b40c6fb5c056f778d8864b88a01adb69ee4c0fe4273cc007a7d8d589cb9
|
4
|
+
data.tar.gz: 16281eeb0be0b1556390c42504f82d879ae6e13f427875215454f8a5d8949706
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07ec8746537d220b0b768715f29f5796543f497c1054c55796b8a23ae0ac83c4007d545d378b3ac7896893f68a1a2f2d0b11a0bbd002254cddb5369d7d6a5653
|
7
|
+
data.tar.gz: aae794b82923901cd227d899fa914978e168fb8c35ff8433ccda048d7845e346aa9b74b001d91cc7779dcbe588cad46817fac48aa7c3ec3be1332ebf9ce80852
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,22 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.0.15
|
4
|
+
|
5
|
+
- Update Hello, Button! to demo all button attributes
|
6
|
+
- Support `button` `image` attribute (accepting image arguments: `subsample`, `zoom`, `from`, `to`, `shrink`, `compositingrule` to automatically process image)
|
7
|
+
- Update `root` `iconphoto` support to accept image arguments: `subsample`, `zoom`, `from`, `to`, `shrink`, `compositingrule` to automatically process image
|
8
|
+
- Support `button` `compound` attribute (`'center', 'top', 'bottom', 'left', 'right'`)
|
9
|
+
- Support `button` `default` attribute (`'active'` or `'normal'`)
|
10
|
+
|
11
|
+
## 0.0.14
|
12
|
+
|
13
|
+
- Hello, Button!
|
14
|
+
|
15
|
+
## 0.0.13
|
16
|
+
|
17
|
+
- Hello, Message Box!
|
18
|
+
- Support `message_box`
|
19
|
+
|
3
20
|
## 0.0.12
|
4
21
|
|
5
22
|
- Upgrade to glimmer 2.3.0
|
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 Tk 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 Tk 0.0.15
|
2
2
|
## MRI Ruby Desktop Development GUI Library
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/glimmer-dsl-tk.svg)](http://badge.fury.io/rb/glimmer-dsl-tk)
|
4
4
|
[![Coverage Status](https://coveralls.io/repos/github/AndyObtiva/glimmer-dsl-tk/badge.svg?branch=master)](https://coveralls.io/github/AndyObtiva/glimmer-dsl-tk?branch=master)
|
@@ -29,7 +29,13 @@ The trade-off is that while [SWT](https://www.eclipse.org/swt/) provides a pleth
|
|
29
29
|
Glimmer code (from [samples/hello/hello_world.rb](samples/hello/hello_world.rb)):
|
30
30
|
|
31
31
|
```ruby
|
32
|
+
require 'glimmer-dsl-tk'
|
33
|
+
|
34
|
+
include Glimmer
|
35
|
+
|
32
36
|
root {
|
37
|
+
title 'Hello, World!'
|
38
|
+
|
33
39
|
label {
|
34
40
|
text 'Hello, World!'
|
35
41
|
}
|
@@ -81,7 +87,7 @@ gem install glimmer-dsl-tk
|
|
81
87
|
|
82
88
|
Add the following to `Gemfile`:
|
83
89
|
```
|
84
|
-
gem 'glimmer-dsl-tk', '~> 0.0.
|
90
|
+
gem 'glimmer-dsl-tk', '~> 0.0.15'
|
85
91
|
```
|
86
92
|
|
87
93
|
And, then run:
|
@@ -169,9 +175,9 @@ root {
|
|
169
175
|
|
170
176
|
### Supported Widgets
|
171
177
|
|
172
|
-
keyword(args) | attributes | listeners/events
|
178
|
+
keyword(args) | attributes | listeners / events / bindings / callbacks
|
173
179
|
------------- | ---------- | ---------
|
174
|
-
`button` | `text` | `command`
|
180
|
+
`button` | `text`, `image`, `compound` (`'center', 'top', 'bottom', 'left', 'right'`), `default` (`'active', 'normal'`) | `command`
|
175
181
|
`entry` | `width`, `text` | None
|
176
182
|
`frame(text: )` | None | None
|
177
183
|
`label` | `text` | None
|
@@ -363,9 +369,13 @@ More details can be found in the [Hello, Combobox!](#hello-combobox) sample belo
|
|
363
369
|
Glimmer code (from [samples/hello/hello_world.rb](samples/hello/hello_world.rb)):
|
364
370
|
|
365
371
|
```ruby
|
372
|
+
require 'glimmer-dsl-tk'
|
373
|
+
|
366
374
|
include Glimmer
|
367
375
|
|
368
376
|
root {
|
377
|
+
title 'Hello, World!'
|
378
|
+
|
369
379
|
label {
|
370
380
|
text 'Hello, World!'
|
371
381
|
}
|
@@ -381,7 +391,7 @@ ruby -r glimmer-dsl-tk -e "require 'samples/hello/hello_world'"
|
|
381
391
|
Alternatively, run from cloned project without [glimmer-dsl-tk](https://rubygems.org/gems/glimmer-dsl-tk) gem installed:
|
382
392
|
|
383
393
|
```
|
384
|
-
ruby -
|
394
|
+
ruby -r ./lib/glimmer-dsl-tk.rb ./samples/hello/hello_world.rb
|
385
395
|
```
|
386
396
|
|
387
397
|
Glimmer app:
|
@@ -408,12 +418,60 @@ class HelloButton
|
|
408
418
|
root {
|
409
419
|
title 'Hello, Button!'
|
410
420
|
|
411
|
-
|
412
|
-
|
421
|
+
frame {
|
422
|
+
grid row: 0, column: 0
|
413
423
|
|
414
|
-
|
415
|
-
|
424
|
+
label {
|
425
|
+
grid pady: 15
|
426
|
+
text 'Text Button'
|
416
427
|
}
|
428
|
+
|
429
|
+
button {
|
430
|
+
text <= [self, :count, on_read: ->(value) { "Click To Increment: #{value} " }]
|
431
|
+
default 'active'
|
432
|
+
|
433
|
+
command {
|
434
|
+
self.count += 1
|
435
|
+
}
|
436
|
+
}
|
437
|
+
}
|
438
|
+
|
439
|
+
frame {
|
440
|
+
grid row: 0, column: 1
|
441
|
+
|
442
|
+
label {
|
443
|
+
grid pady: 15
|
444
|
+
text 'Image Button'
|
445
|
+
}
|
446
|
+
|
447
|
+
button {
|
448
|
+
image File.expand_path('../../icons/glimmer.png', __dir__), subsample: 5
|
449
|
+
|
450
|
+
command {
|
451
|
+
message_box(title: 'Image Button', message: 'Image Button Clicked!')
|
452
|
+
}
|
453
|
+
}
|
454
|
+
}
|
455
|
+
|
456
|
+
frame {
|
457
|
+
grid row: 0, column: 2
|
458
|
+
|
459
|
+
label {
|
460
|
+
grid pady: 15
|
461
|
+
text 'Text Image Buttons'
|
462
|
+
}
|
463
|
+
|
464
|
+
['center', 'top', 'bottom', 'left', 'right'].each do |compound_option|
|
465
|
+
button {
|
466
|
+
image File.expand_path('../../icons/glimmer.png', __dir__), subsample: 5
|
467
|
+
text 'Text Image Button'
|
468
|
+
compound compound_option
|
469
|
+
|
470
|
+
command {
|
471
|
+
message_box(title: 'Text Image Button', message: 'Text Image Button Clicked!', detail: "(#{compound_option})")
|
472
|
+
}
|
473
|
+
}
|
474
|
+
end
|
417
475
|
}
|
418
476
|
}.open
|
419
477
|
end
|
@@ -431,7 +489,7 @@ ruby -r glimmer-dsl-tk -e "require 'samples/hello/hello_button'"
|
|
431
489
|
Alternatively, run from cloned project without [glimmer-dsl-tk](https://rubygems.org/gems/glimmer-dsl-tk) gem installed:
|
432
490
|
|
433
491
|
```
|
434
|
-
ruby -
|
492
|
+
ruby -r ./lib/glimmer-dsl-tk.rb ./samples/hello/hello_button.rb
|
435
493
|
```
|
436
494
|
|
437
495
|
Glimmer app:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.15
|
data/glimmer-dsl-tk.gemspec
CHANGED
Binary file
|
@@ -45,9 +45,7 @@ module Glimmer
|
|
45
45
|
|
46
46
|
def set_attribute(attribute, *args)
|
47
47
|
if attribute.to_s == 'iconphoto'
|
48
|
-
|
49
|
-
args[0] = ::TkPhotoImage.new(file: args.first)
|
50
|
-
end
|
48
|
+
args[0..-1] = [image_argument(args)]
|
51
49
|
super
|
52
50
|
else
|
53
51
|
super
|
@@ -157,6 +157,12 @@ module Glimmer
|
|
157
157
|
|
158
158
|
def widget_custom_attribute_mapping
|
159
159
|
@widget_custom_attribute_mapping ||= {
|
160
|
+
::Tk::Tile::TButton => {
|
161
|
+
'image' => {
|
162
|
+
getter: {name: 'image', invoker: lambda { |widget, args| @tk.textvariable&.value }},
|
163
|
+
setter: {name: 'image=', invoker: lambda { |widget, args| @tk['image'] = image_argument(args) }},
|
164
|
+
},
|
165
|
+
},
|
160
166
|
::Tk::Tile::TCombobox => {
|
161
167
|
'text' => {
|
162
168
|
getter: {name: 'text', invoker: lambda { |widget, args| @tk.textvariable&.value }},
|
@@ -210,6 +216,22 @@ module Glimmer
|
|
210
216
|
}
|
211
217
|
end
|
212
218
|
|
219
|
+
def image_argument(args)
|
220
|
+
if args.first.is_a?(::TkPhotoImage)
|
221
|
+
args.first
|
222
|
+
else
|
223
|
+
image_args = {}
|
224
|
+
image_args.merge!(file: args.first.to_s) if args.first.is_a?(String)
|
225
|
+
the_image = ::TkPhotoImage.new(image_args)
|
226
|
+
if args.last.is_a?(Hash)
|
227
|
+
processed_image = ::TkPhotoImage.new
|
228
|
+
processed_image.copy(the_image, args.last)
|
229
|
+
the_image = processed_image
|
230
|
+
end
|
231
|
+
the_image
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
213
235
|
def add_observer(observer, attribute)
|
214
236
|
attribute_listener_installers = @tk.class.ancestors.map {|ancestor| widget_attribute_listener_installers[ancestor]}.compact
|
215
237
|
widget_listener_installers = attribute_listener_installers.map{|installer| installer[attribute.to_s]}.compact if !attribute_listener_installers.empty?
|
@@ -34,12 +34,60 @@ class HelloButton
|
|
34
34
|
root {
|
35
35
|
title 'Hello, Button!'
|
36
36
|
|
37
|
-
|
38
|
-
|
37
|
+
frame {
|
38
|
+
grid row: 0, column: 0
|
39
39
|
|
40
|
-
|
41
|
-
|
40
|
+
label {
|
41
|
+
grid pady: 15
|
42
|
+
text 'Text Button'
|
42
43
|
}
|
44
|
+
|
45
|
+
button {
|
46
|
+
text <= [self, :count, on_read: ->(value) { "Click To Increment: #{value} " }]
|
47
|
+
default 'active'
|
48
|
+
|
49
|
+
command {
|
50
|
+
self.count += 1
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
frame {
|
56
|
+
grid row: 0, column: 1
|
57
|
+
|
58
|
+
label {
|
59
|
+
grid pady: 15
|
60
|
+
text 'Image Button'
|
61
|
+
}
|
62
|
+
|
63
|
+
button {
|
64
|
+
image File.expand_path('../../icons/glimmer.png', __dir__), subsample: 5
|
65
|
+
|
66
|
+
command {
|
67
|
+
message_box(title: 'Image Button', message: 'Image Button Clicked!')
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
frame {
|
73
|
+
grid row: 0, column: 2
|
74
|
+
|
75
|
+
label {
|
76
|
+
grid pady: 15
|
77
|
+
text 'Text Image Buttons'
|
78
|
+
}
|
79
|
+
|
80
|
+
['center', 'top', 'bottom', 'left', 'right'].each do |compound_option|
|
81
|
+
button {
|
82
|
+
image File.expand_path('../../icons/glimmer.png', __dir__), subsample: 5
|
83
|
+
text 'Text Image Button'
|
84
|
+
compound compound_option
|
85
|
+
|
86
|
+
command {
|
87
|
+
message_box(title: 'Text Image Button', message: 'Text Image Button Clicked!', detail: "(#{compound_option})")
|
88
|
+
}
|
89
|
+
}
|
90
|
+
end
|
43
91
|
}
|
44
92
|
}.open
|
45
93
|
end
|