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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3682b8fe5b49d283cd803bf1c3bece41e8ca38c54d75836591cdefacc3674ac0
4
- data.tar.gz: 1bfa3019ab0281f603a2e63a6044025cbb338d865cc75b3c517c7fef02429441
3
+ metadata.gz: 7b9a101d9c4af1b6fb9aa58f816db089b0643d9928027cbfcf62af3198c75db9
4
+ data.tar.gz: 27cb07e2eb9ee19129d5a12a82e534006707884ff1541b411f03ab1ad7cc485e
5
5
  SHA512:
6
- metadata.gz: 973bf3fa1920c64d8bdda424513471120790040d362f3a2b32e7f30180220a0993b65875c6dffc5e6a6efa5ae6ce030c51a94da31b9c3fba16d2fce335552049
7
- data.tar.gz: b001f5dbce277aff4ee1dbc9eb4b27a424c4b92a08a6ba98e13006a1a2bff8009cde411c88430f0f763d9acc03890cb9fac40d9bb46bfe9ad453cc576e4c2084
6
+ metadata.gz: 2b5db460b17ba88d155861a38cb8412944ca39423c2ccf6ea834ba5dabdf8708fa3fbae7ebca46de16119105504d5684a91efd0c4900740a2444d2dd69e3ccf3
7
+ data.tar.gz: 58da5246e785736c649d6d32cec412bcf4dabd7d474e842a9c78a149aef48d6893b68e157a43254462069d4e3f81f5ce51297e08f6dda7ab35e2287719059047
@@ -1,8 +1,8 @@
1
- # Glimmer 0.7.3 Beta (JRuby Desktop UI DSL + Data-Binding)
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 components test-first afterwards.
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.3 Beta (JRuby Desktop UI DSL + Data-Binding)](#glimmer-058-beta-jruby-desktop-ui-dsl--data-binding)
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.3
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.3'
178
+ gem 'glimmer', '~> 0.7.4'
179
179
  ```
180
180
 
181
181
  And, then run:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.3
1
+ 0.7.4
@@ -232,6 +232,7 @@ module Glimmer
232
232
  end
233
233
 
234
234
  def invoke_property_writer(object, property_expression, value)
235
+ return if @binding_options[:read_only]
235
236
  value = convert_on_write(value)
236
237
  if property_indexed?(property_expression)
237
238
  property_method = '[]='
@@ -40,9 +40,7 @@ module Glimmer
40
40
  end
41
41
 
42
42
  def property_observer_hash
43
- # TODO simplify with ||=
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
- Glimmer::SWT::WidgetProxy.new(keyword, parent, args)
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.3
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-16 00:00:00.000000000 Z
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