glimmer 0.7.5 → 0.8.1
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 +4 -4
- data/{README.markdown → README.md} +157 -105
- data/VERSION +1 -1
- data/lib/glimmer/data_binding/tree_items_binding.rb +6 -3
- data/lib/glimmer/dsl/swt/dialog_expression.rb +26 -0
- data/lib/glimmer/launcher.rb +13 -10
- data/lib/glimmer/rake_task.rb +3 -3
- data/lib/glimmer/scaffold.rb +208 -68
- data/lib/glimmer/swt/display_proxy.rb +14 -0
- data/lib/glimmer/swt/menu_proxy.rb +17 -0
- data/lib/glimmer/swt/shell_proxy.rb +16 -29
- data/lib/glimmer/swt/widget_proxy.rb +14 -0
- data/lib/glimmer/ui/custom_widget.rb +9 -6
- metadata +7 -36
@@ -16,6 +16,8 @@ module Glimmer
|
|
16
16
|
class DisplayProxy
|
17
17
|
include_package 'org.eclipse.swt.widgets'
|
18
18
|
|
19
|
+
OBSERVED_MENU_ITEMS = ['about', 'preferences']
|
20
|
+
|
19
21
|
class << self
|
20
22
|
# Returns singleton instance
|
21
23
|
def instance(*args)
|
@@ -52,6 +54,9 @@ module Glimmer
|
|
52
54
|
if observation_request.start_with?('on_event_')
|
53
55
|
constant_name = observation_request.sub(/^on_event_/, '')
|
54
56
|
SWTProxy.has_constant?(constant_name)
|
57
|
+
elsif observation_request.start_with?('on_')
|
58
|
+
event_name = observation_request.sub(/^on_/, '')
|
59
|
+
OBSERVED_MENU_ITEMS.include?(event_name)
|
55
60
|
else
|
56
61
|
false
|
57
62
|
end
|
@@ -61,6 +66,15 @@ module Glimmer
|
|
61
66
|
if observation_request.start_with?('on_event_')
|
62
67
|
constant_name = observation_request.sub(/^on_event_/, '')
|
63
68
|
add_swt_event_listener(constant_name, &block)
|
69
|
+
elsif observation_request.start_with?('on_')
|
70
|
+
event_name = observation_request.sub(/^on_/, '')
|
71
|
+
if OBSERVED_MENU_ITEMS.include?(event_name)
|
72
|
+
if OS.mac?
|
73
|
+
system_menu = swt_display.getSystemMenu
|
74
|
+
menu_item = system_menu.getItems.find {|menu_item| menu_item.getID == SWTProxy["ID_#{event_name.upcase}"]}
|
75
|
+
menu_item.addListener(SWTProxy[:Selection], &block)
|
76
|
+
end
|
77
|
+
end
|
64
78
|
end
|
65
79
|
end
|
66
80
|
|
@@ -79,6 +79,23 @@ module Glimmer
|
|
79
79
|
super(attribute_name)
|
80
80
|
end
|
81
81
|
end
|
82
|
+
|
83
|
+
def can_handle_observation_request?(observation_request, super_only: false)
|
84
|
+
super_result = super(observation_request)
|
85
|
+
if observation_request.start_with?('on_') && !super_result && !super_only
|
86
|
+
return menu_item_proxy.can_handle_observation_request?(observation_request)
|
87
|
+
else
|
88
|
+
super_result
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def handle_observation_request(observation_request, &block)
|
93
|
+
if can_handle_observation_request?(observation_request, super_only: true)
|
94
|
+
super
|
95
|
+
else
|
96
|
+
menu_item_proxy.handle_observation_request(observation_request, &block)
|
97
|
+
end
|
98
|
+
end
|
82
99
|
end
|
83
100
|
end
|
84
101
|
end
|
@@ -14,7 +14,6 @@ module Glimmer
|
|
14
14
|
|
15
15
|
WIDTH_MIN = 130
|
16
16
|
HEIGHT_MIN = 0
|
17
|
-
OBSERVED_MENU_ITEMS = ['about', 'preferences']
|
18
17
|
|
19
18
|
attr_reader :opened_before
|
20
19
|
alias opened_before? opened_before
|
@@ -47,7 +46,7 @@ module Glimmer
|
|
47
46
|
Thread.new do
|
48
47
|
sleep(0.25)
|
49
48
|
async_exec do
|
50
|
-
@swt_widget.setActive
|
49
|
+
@swt_widget.setActive unless @swt_widget.isDisposed
|
51
50
|
end
|
52
51
|
end
|
53
52
|
end
|
@@ -107,9 +106,21 @@ module Glimmer
|
|
107
106
|
height = @swt_widget.getBounds.height
|
108
107
|
x = @swt_widget.getBounds.x
|
109
108
|
y = @swt_widget.getBounds.y
|
110
|
-
|
111
|
-
|
112
|
-
|
109
|
+
if OS.windows?
|
110
|
+
minimum_size = @swt_widget.getMinimumSize
|
111
|
+
@swt_widget.setMinimumSize(bounds.width, bounds.height)
|
112
|
+
listener = on_control_resized {
|
113
|
+
@swt_widget.setSize(bounds.width, bounds.height)
|
114
|
+
@swt_widget.setLocation(bounds.x, bounds.y)
|
115
|
+
}
|
116
|
+
@swt_widget.pack
|
117
|
+
@swt_widget.removeControlListener(listener.swt_listener)
|
118
|
+
@swt_widget.setMinimumSize(minimum_size)
|
119
|
+
else
|
120
|
+
@swt_widget.pack
|
121
|
+
@swt_widget.setSize(width, height)
|
122
|
+
@swt_widget.setLocation(x, y)
|
123
|
+
end
|
113
124
|
end
|
114
125
|
|
115
126
|
def content(&block)
|
@@ -128,30 +139,6 @@ module Glimmer
|
|
128
139
|
end
|
129
140
|
end
|
130
141
|
|
131
|
-
def can_handle_observation_request?(observation_request)
|
132
|
-
result = false
|
133
|
-
if observation_request.start_with?('on_')
|
134
|
-
event_name = observation_request.sub(/^on_/, '')
|
135
|
-
result = OBSERVED_MENU_ITEMS.include?(event_name)
|
136
|
-
end
|
137
|
-
result || super
|
138
|
-
end
|
139
|
-
|
140
|
-
def handle_observation_request(observation_request, &block)
|
141
|
-
if observation_request.start_with?('on_')
|
142
|
-
event_name = observation_request.sub(/^on_/, '')
|
143
|
-
if OBSERVED_MENU_ITEMS.include?(event_name)
|
144
|
-
if OS.mac?
|
145
|
-
system_menu = DisplayProxy.instance.swt_display.getSystemMenu
|
146
|
-
menu_item = system_menu.getItems.find {|menu_item| menu_item.getID == SWTProxy["ID_#{event_name.upcase}"]}
|
147
|
-
menu_item.addListener(SWTProxy[:Selection], &block)
|
148
|
-
end
|
149
|
-
else
|
150
|
-
super
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
142
|
def add_observer(observer, property_name)
|
156
143
|
case property_name.to_s
|
157
144
|
when 'visible?' #TODO see if you must handle non-? version and/or move elsewhere
|
@@ -151,6 +151,20 @@ module Glimmer
|
|
151
151
|
observer.call(@swt_widget.getCaretPosition)
|
152
152
|
}
|
153
153
|
end,
|
154
|
+
:selection => lambda do |observer|
|
155
|
+
on_event_keydown { |event|
|
156
|
+
observer.call(@swt_widget.getSelection)
|
157
|
+
}
|
158
|
+
on_event_keyup { |event|
|
159
|
+
observer.call(@swt_widget.getSelection)
|
160
|
+
}
|
161
|
+
on_event_mousedown { |event|
|
162
|
+
observer.call(@swt_widget.getSelection)
|
163
|
+
}
|
164
|
+
on_event_mouseup { |event|
|
165
|
+
observer.call(@swt_widget.getSelection)
|
166
|
+
}
|
167
|
+
end,
|
154
168
|
:selection_count => lambda do |observer|
|
155
169
|
on_event_keydown { |event|
|
156
170
|
observer.call(@swt_widget.getSelectionCount)
|
@@ -70,7 +70,7 @@ module Glimmer
|
|
70
70
|
@custom_widget_namespaces = Set[Object, Glimmer::UI]
|
71
71
|
end
|
72
72
|
|
73
|
-
# Allows defining convenience option
|
73
|
+
# Allows defining convenience option accessors for an array of option names
|
74
74
|
# Example: `options :color1, :color2` defines `#color1` and `#color2`
|
75
75
|
# where they return the instance values `options[:color1]` and `options[:color2]`
|
76
76
|
# respectively.
|
@@ -83,23 +83,26 @@ module Glimmer
|
|
83
83
|
else
|
84
84
|
new_options = new_options.reduce({}) {|new_options_hash, new_option| new_options_hash.merge(new_option => nil)}
|
85
85
|
@options = options.merge(new_options)
|
86
|
-
|
86
|
+
def_option_attr_accessors(new_options)
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
def option(new_option,
|
90
|
+
def option(new_option, default: nil)
|
91
91
|
new_option = new_option.to_s.to_sym
|
92
|
-
new_options = {new_option =>
|
92
|
+
new_options = {new_option => default}
|
93
93
|
@options = options.merge(new_options)
|
94
|
-
|
94
|
+
def_option_attr_accessors(new_options)
|
95
95
|
end
|
96
96
|
|
97
|
-
def
|
97
|
+
def def_option_attr_accessors(new_options)
|
98
98
|
new_options.each do |option, default|
|
99
99
|
class_eval <<-end_eval, __FILE__, __LINE__
|
100
100
|
def #{option}
|
101
101
|
options[:#{option}]
|
102
102
|
end
|
103
|
+
def #{option}=(option_value)
|
104
|
+
self.options[:#{option}] = option_value
|
105
|
+
end
|
103
106
|
end_eval
|
104
107
|
end
|
105
108
|
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.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AndyMaleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,34 +150,6 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 3.5.0
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
requirement: !ruby/object:Gem::Requirement
|
155
|
-
requirements:
|
156
|
-
- - '='
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
version: 0.8.5
|
159
|
-
name: coveralls
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - '='
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: 0.8.5
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
requirement: !ruby/object:Gem::Requirement
|
169
|
-
requirements:
|
170
|
-
- - "~>"
|
171
|
-
- !ruby/object:Gem::Version
|
172
|
-
version: 0.10.0
|
173
|
-
name: simplecov
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - "~>"
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: 0.10.0
|
181
153
|
- !ruby/object:Gem::Dependency
|
182
154
|
requirement: !ruby/object:Gem::Requirement
|
183
155
|
requirements:
|
@@ -192,9 +164,7 @@ dependencies:
|
|
192
164
|
- - "~>"
|
193
165
|
- !ruby/object:Gem::Version
|
194
166
|
version: 0.8.1
|
195
|
-
description:
|
196
|
-
that enables productive and efficient authoring of desktop user-interfaces using
|
197
|
-
the robust Eclipse SWT library
|
167
|
+
description: Ruby Desktop Development GUI Library
|
198
168
|
email: andy.am@gmail.com
|
199
169
|
executables:
|
200
170
|
- glimmer
|
@@ -202,10 +172,10 @@ executables:
|
|
202
172
|
extensions: []
|
203
173
|
extra_rdoc_files:
|
204
174
|
- LICENSE.txt
|
205
|
-
- README.
|
175
|
+
- README.md
|
206
176
|
files:
|
207
177
|
- LICENSE.txt
|
208
|
-
- README.
|
178
|
+
- README.md
|
209
179
|
- RUBY_VERSION
|
210
180
|
- VERSION
|
211
181
|
- bin/girb
|
@@ -246,6 +216,7 @@ files:
|
|
246
216
|
- lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb
|
247
217
|
- lib/glimmer/dsl/swt/custom_widget_expression.rb
|
248
218
|
- lib/glimmer/dsl/swt/data_binding_expression.rb
|
219
|
+
- lib/glimmer/dsl/swt/dialog_expression.rb
|
249
220
|
- lib/glimmer/dsl/swt/display_expression.rb
|
250
221
|
- lib/glimmer/dsl/swt/dsl.rb
|
251
222
|
- lib/glimmer/dsl/swt/exec_expression.rb
|
@@ -328,5 +299,5 @@ requirements: []
|
|
328
299
|
rubygems_version: 3.0.6
|
329
300
|
signing_key:
|
330
301
|
specification_version: 4
|
331
|
-
summary: Desktop
|
302
|
+
summary: Ruby Desktop Development GUI Library
|
332
303
|
test_files: []
|