glimmer 0.7.3 → 0.7.4

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: 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