glimmer 0.7.3 → 0.7.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.markdown +5 -5
- data/VERSION +1 -1
- data/lib/glimmer/data_binding/model_binding.rb +1 -0
- data/lib/glimmer/data_binding/observable_model.rb +1 -3
- data/lib/glimmer/data_binding/tree_items_binding.rb +1 -0
- data/lib/glimmer/dsl/swt/widget_expression.rb +8 -1
- data/lib/glimmer/swt/shell_proxy.rb +0 -3
- data/lib/glimmer/swt/tree_proxy.rb +24 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b9a101d9c4af1b6fb9aa58f816db089b0643d9928027cbfcf62af3198c75db9
|
4
|
+
data.tar.gz: 27cb07e2eb9ee19129d5a12a82e534006707884ff1541b411f03ab1ad7cc485e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b5db460b17ba88d155861a38cb8412944ca39423c2ccf6ea834ba5dabdf8708fa3fbae7ebca46de16119105504d5684a91efd0c4900740a2444d2dd69e3ccf3
|
7
|
+
data.tar.gz: 58da5246e785736c649d6d32cec412bcf4dabd7d474e842a9c78a149aef48d6893b68e157a43254462069d4e3f81f5ce51297e08f6dda7ab35e2287719059047
|
data/README.markdown
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# Glimmer 0.7.
|
1
|
+
# Glimmer 0.7.4 Beta (Desktop Development Library for Ruby)
|
2
2
|
[![Gem Version](https://badge.fury.io/rb/glimmer.svg)](http://badge.fury.io/rb/glimmer)
|
3
3
|
[![Coverage Status](https://coveralls.io/repos/github/AndyObtiva/glimmer/badge.svg?branch=master)](https://coveralls.io/github/AndyObtiva/glimmer?branch=master)
|
4
4
|
|
5
|
-
Glimmer is a native-UI cross-platform desktop development library written in Ruby. Glimmer's main innovation is a JRuby DSL that enables productive and efficient authoring of desktop application user-interfaces while relying on the robust Eclipse SWT library. Glimmer additionally innovates by having built-in data-binding support to greatly facilitate synchronizing the UI with domain models. As a result, that achieves true decoupling of object oriented components, enabling developers to solve business problems without worrying about UI concerns, or alternatively drive development UI-first, and then write clean business
|
5
|
+
Glimmer is a native-UI cross-platform desktop development library written in Ruby. Glimmer's main innovation is a JRuby DSL that enables productive and efficient authoring of desktop application user-interfaces while relying on the robust Eclipse SWT library. Glimmer additionally innovates by having built-in data-binding support to greatly facilitate synchronizing the UI with domain models. As a result, that achieves true decoupling of object oriented components, enabling developers to solve business problems without worrying about UI concerns, or alternatively drive development UI-first, and then write clean business models test-first afterwards.
|
6
6
|
|
7
7
|
## Examples
|
8
8
|
|
@@ -71,7 +71,7 @@ NOTE: Glimmer is in beta mode. Please help make better by adopting for small or
|
|
71
71
|
## Table of Contents
|
72
72
|
|
73
73
|
<!-- TOC START min:1 max:3 link:true asterisk:false update:true -->
|
74
|
-
- [Glimmer 0.7.
|
74
|
+
- [Glimmer 0.7.4 Beta (JRuby Desktop UI DSL + Data-Binding)](#glimmer-058-beta-jruby-desktop-ui-dsl--data-binding)
|
75
75
|
- [Examples](#examples)
|
76
76
|
- [Hello World](#hello-world)
|
77
77
|
- [Tic Tac Toe](#tic-tac-toe)
|
@@ -164,7 +164,7 @@ Please follow these instructions to make the `glimmer` command available on your
|
|
164
164
|
|
165
165
|
Run this command to install directly:
|
166
166
|
```
|
167
|
-
jgem install glimmer -v 0.7.
|
167
|
+
jgem install glimmer -v 0.7.4
|
168
168
|
```
|
169
169
|
|
170
170
|
`jgem` is JRuby's version of `gem` command.
|
@@ -175,7 +175,7 @@ Otherwise, you may also run `jruby -S gem install ...`
|
|
175
175
|
|
176
176
|
Add the following to `Gemfile`:
|
177
177
|
```
|
178
|
-
gem 'glimmer', '~> 0.7.
|
178
|
+
gem 'glimmer', '~> 0.7.4'
|
179
179
|
```
|
180
180
|
|
181
181
|
And, then run:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.4
|
@@ -40,9 +40,7 @@ module Glimmer
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def property_observer_hash
|
43
|
-
|
44
|
-
@property_observers = Hash.new unless @property_observers
|
45
|
-
@property_observers
|
43
|
+
@property_observers ||= Hash.new
|
46
44
|
end
|
47
45
|
|
48
46
|
def property_observer_list(property_name)
|
@@ -41,6 +41,7 @@ module Glimmer
|
|
41
41
|
|
42
42
|
def populate_tree_node(model_tree_node, parent, tree_properties)
|
43
43
|
table_item = TreeItem.new(parent, SWT::SWTProxy[:none])
|
44
|
+
table_item.setData(model_tree_node)
|
44
45
|
table_item.setText((model_tree_node && model_tree_node.send(tree_properties[:text])).to_s)
|
45
46
|
[model_tree_node && model_tree_node.send(tree_properties[:children])].flatten.to_a.compact.each do |child|
|
46
47
|
observe(child, @tree_properties[:text])
|
@@ -17,7 +17,13 @@ module Glimmer
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def interpret(parent, keyword, *args, &block)
|
20
|
-
|
20
|
+
begin
|
21
|
+
class_name = "#{keyword.camelcase(:upper)}Proxy".to_sym
|
22
|
+
widget_class = Glimmer::SWT.const_get(class_name)
|
23
|
+
rescue
|
24
|
+
widget_class = Glimmer::SWT::WidgetProxy
|
25
|
+
end
|
26
|
+
widget_class.new(keyword, parent, args)
|
21
27
|
end
|
22
28
|
end
|
23
29
|
end
|
@@ -25,3 +31,4 @@ module Glimmer
|
|
25
31
|
end
|
26
32
|
|
27
33
|
require 'glimmer/swt/widget_proxy'
|
34
|
+
require 'glimmer/swt/tree_proxy'
|
@@ -102,15 +102,12 @@ module Glimmer
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def pack_same_size
|
105
|
-
minimum_size = @swt_widget.getMinimumSize
|
106
105
|
bounds = @swt_widget.getBounds
|
107
106
|
width = @swt_widget.getBounds.width
|
108
107
|
height = @swt_widget.getBounds.height
|
109
108
|
x = @swt_widget.getBounds.x
|
110
109
|
y = @swt_widget.getBounds.y
|
111
|
-
@swt_widget.setMinimumSize(bounds.width, bounds.height)
|
112
110
|
@swt_widget.pack
|
113
|
-
@swt_widget.setMinimumSize(minimum_size)
|
114
111
|
@swt_widget.setSize(width, height)
|
115
112
|
@swt_widget.setLocation(x, y)
|
116
113
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'glimmer/swt/widget_proxy'
|
2
|
+
|
3
|
+
module Glimmer
|
4
|
+
module SWT
|
5
|
+
class TreeProxy < Glimmer::SWT::WidgetProxy
|
6
|
+
# Performs depth first search for tree items matching block condition
|
7
|
+
# Returns a Java TreeItem array to easily set as selection on org.eclipse.swt.Tree when needed
|
8
|
+
def depth_first_search(&condition)
|
9
|
+
found = []
|
10
|
+
recursive_depth_first_search(swt_widget.getItems.first, found, &condition)
|
11
|
+
found.to_java(TreeItem)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def recursive_depth_first_search(tree_item, found, &condition)
|
17
|
+
found << tree_item if condition.nil? || condition.call(tree_item)
|
18
|
+
tree_item.getItems.each do |child_tree_item|
|
19
|
+
recursive_depth_first_search(child_tree_item, found, &condition)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AndyMaleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -292,6 +292,7 @@ files:
|
|
292
292
|
- lib/glimmer/swt/shell_proxy.rb
|
293
293
|
- lib/glimmer/swt/swt_proxy.rb
|
294
294
|
- lib/glimmer/swt/tab_item_proxy.rb
|
295
|
+
- lib/glimmer/swt/tree_proxy.rb
|
295
296
|
- lib/glimmer/swt/widget_listener_proxy.rb
|
296
297
|
- lib/glimmer/swt/widget_proxy.rb
|
297
298
|
- lib/glimmer/ui/custom_shell.rb
|