glimmer-dsl-libui 0.1.7 → 0.1.11
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/CHANGELOG.md +35 -0
- data/README.md +430 -13
- data/VERSION +1 -1
- data/examples/area_gallery.rb +48 -0
- data/examples/area_gallery2.rb +48 -0
- data/examples/area_gallery3.rb +48 -0
- data/examples/area_gallery4.rb +48 -0
- data/examples/control_gallery.rb +1 -1
- data/examples/form_table.rb +20 -0
- data/examples/grid.rb +38 -2
- data/examples/login.rb +45 -0
- data/glimmer-dsl-libui.gemspec +0 -0
- data/lib/glimmer/libui/control_proxy/area_proxy/scrolling_area_proxy.rb +40 -0
- data/lib/glimmer/libui/control_proxy/area_proxy.rb +111 -27
- data/lib/glimmer/libui/control_proxy/entry_proxy/password_entry_proxy.rb +36 -0
- data/lib/glimmer/libui/control_proxy/entry_proxy/search_entry_proxy.rb +36 -0
- data/lib/glimmer/libui/control_proxy/entry_proxy.rb +39 -0
- data/lib/glimmer/libui/control_proxy/grid_proxy.rb +12 -1
- data/lib/glimmer/libui/control_proxy/path_proxy.rb +3 -30
- data/lib/glimmer/libui/control_proxy.rb +34 -1
- data/lib/glimmer/libui.rb +17 -0
- data/lib/glimmer-dsl-libui.rb +1 -0
- metadata +11 -6
@@ -36,7 +36,18 @@ module Glimmer
|
|
36
36
|
child.halign = 0 if child.halign.nil?
|
37
37
|
child.vexpand = false if child.vexpand.nil?
|
38
38
|
child.valign = 0 if child.valign.nil?
|
39
|
-
::LibUI.grid_append(
|
39
|
+
::LibUI.grid_append(
|
40
|
+
@libui,
|
41
|
+
child.libui,
|
42
|
+
child.left,
|
43
|
+
child.top,
|
44
|
+
child.xspan,
|
45
|
+
child.yspan,
|
46
|
+
Glimmer::LibUI.boolean_to_integer(child.hexpand),
|
47
|
+
Glimmer::LibUI.enum_symbol_to_value(:align, child.halign),
|
48
|
+
Glimmer::LibUI.boolean_to_integer(child.vexpand),
|
49
|
+
Glimmer::LibUI.enum_symbol_to_value(:align, child.valign)
|
50
|
+
)
|
40
51
|
children << child
|
41
52
|
end
|
42
53
|
|
@@ -128,25 +128,11 @@ module Glimmer
|
|
128
128
|
end
|
129
129
|
|
130
130
|
def draw_line_cap
|
131
|
-
|
132
|
-
when 'round'
|
133
|
-
1
|
134
|
-
when 'square'
|
135
|
-
2
|
136
|
-
else # 'flat'
|
137
|
-
0
|
138
|
-
end
|
131
|
+
Glimmer::LibUI.enum_symbol_to_value(:draw_line_cap, @stroke && @stroke[:cap])
|
139
132
|
end
|
140
133
|
|
141
134
|
def draw_line_join
|
142
|
-
|
143
|
-
when 'round'
|
144
|
-
1
|
145
|
-
when 'bevel'
|
146
|
-
2
|
147
|
-
else # 'miter'
|
148
|
-
0
|
149
|
-
end
|
135
|
+
Glimmer::LibUI.enum_symbol_to_value(:draw_line_join, @stroke && @stroke[:join])
|
150
136
|
end
|
151
137
|
|
152
138
|
def destroy
|
@@ -165,20 +151,7 @@ module Glimmer
|
|
165
151
|
end
|
166
152
|
|
167
153
|
def init_draw_brush(draw_brush, draw_brush_args)
|
168
|
-
|
169
|
-
when Integer
|
170
|
-
draw_brush.Type = draw_brush_args[:type]
|
171
|
-
when :solid, 'solid'
|
172
|
-
draw_brush.Type = 0
|
173
|
-
when :linear_gradient, 'linear_gradient'
|
174
|
-
draw_brush.Type = 1
|
175
|
-
when :radial_gradient, 'radial_gradient'
|
176
|
-
draw_brush.Type = 2
|
177
|
-
when :image, 'image'
|
178
|
-
draw_brush.Type = 3
|
179
|
-
else
|
180
|
-
draw_brush.Type = 0
|
181
|
-
end
|
154
|
+
draw_brush.Type = Glimmer::LibUI.enum_symbol_to_value(:draw_brush_type, draw_brush_args[:type])
|
182
155
|
draw_brush.R = (draw_brush_args[:r] || draw_brush_args[:red]).to_f / 255.0
|
183
156
|
draw_brush.G = (draw_brush_args[:g] || draw_brush_args[:green]).to_f / 255.0
|
184
157
|
draw_brush.B = (draw_brush_args[:b] || draw_brush_args[:blue]).to_f / 255.0
|
@@ -141,7 +141,8 @@ module Glimmer
|
|
141
141
|
|
142
142
|
def can_handle_listener?(listener_name)
|
143
143
|
::LibUI.respond_to?("#{libui_api_keyword}_#{listener_name}") ||
|
144
|
-
::LibUI.respond_to?("control_#{listener_name}")
|
144
|
+
::LibUI.respond_to?("control_#{listener_name}") ||
|
145
|
+
has_custom_listener?(listener_name)
|
145
146
|
end
|
146
147
|
|
147
148
|
def handle_listener(listener_name, &listener)
|
@@ -150,6 +151,34 @@ module Glimmer
|
|
150
151
|
::LibUI.send("#{libui_api_keyword}_#{listener_name}", @libui, &safe_listener)
|
151
152
|
elsif ::LibUI.respond_to?("control_#{listener_name}")
|
152
153
|
::LibUI.send("control_#{listener_name}", @libui, &safe_listener)
|
154
|
+
elsif has_custom_listener?(listener_name)
|
155
|
+
handle_custom_listener(listener_name, &listener)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
def has_custom_listener?(listener_name)
|
160
|
+
listener_name = listener_name.to_s
|
161
|
+
custom_listeners.include?(listener_name) || custom_listener_aliases.stringify_keys.keys.include?(listener_name)
|
162
|
+
end
|
163
|
+
|
164
|
+
def custom_listeners
|
165
|
+
self.class.constants.include?(:LISTENERS) ? self.class::LISTENERS : []
|
166
|
+
end
|
167
|
+
|
168
|
+
def custom_listener_aliases
|
169
|
+
self.class.constants.include?(:LISTENER_ALIASES) ? self.class::LISTENER_ALIASES : {}
|
170
|
+
end
|
171
|
+
|
172
|
+
def handle_custom_listener(listener_name, &listener)
|
173
|
+
listener_name = listener_name.to_s
|
174
|
+
listener_name = custom_listener_aliases.stringify_keys[listener_name] || listener_name
|
175
|
+
instance_variable_name = "@#{listener_name}_procs"
|
176
|
+
instance_variable_set(instance_variable_name, []) if instance_variable_get(instance_variable_name).nil?
|
177
|
+
if listener.nil?
|
178
|
+
instance_variable_get(instance_variable_name)
|
179
|
+
else
|
180
|
+
instance_variable_get(instance_variable_name) << listener
|
181
|
+
listener
|
153
182
|
end
|
154
183
|
end
|
155
184
|
|
@@ -160,6 +189,7 @@ module Glimmer
|
|
160
189
|
(append_properties.include?(method_name.to_s.sub(/\?$/, '')) && BOOLEAN_PROPERTIES.include?(method_name.to_s.sub(/\?$/, ''))) ||
|
161
190
|
append_properties.include?(method_name.to_s.sub(/=$/, ''))
|
162
191
|
) ||
|
192
|
+
can_handle_listener?(method_name.to_s) ||
|
163
193
|
super(method_name, true)
|
164
194
|
end
|
165
195
|
|
@@ -178,6 +208,8 @@ module Glimmer
|
|
178
208
|
elsif append_properties.include?(method_name.to_s) ||
|
179
209
|
append_properties.include?(method_name.to_s.sub(/(=|\?)$/, ''))
|
180
210
|
append_property(method_name, *args)
|
211
|
+
elsif can_handle_listener?(method_name.to_s)
|
212
|
+
handle_listener(method_name.to_s, &block)
|
181
213
|
else
|
182
214
|
super
|
183
215
|
end
|
@@ -248,6 +280,7 @@ module Glimmer
|
|
248
280
|
if value.nil?
|
249
281
|
@enabled
|
250
282
|
elsif value != @enabled
|
283
|
+
@enabled = value == 1 || value
|
251
284
|
if value == 1 || value
|
252
285
|
send_to_libui('enable')
|
253
286
|
else
|
data/lib/glimmer/libui.rb
CHANGED
@@ -87,6 +87,23 @@ module Glimmer
|
|
87
87
|
end
|
88
88
|
value
|
89
89
|
end
|
90
|
+
|
91
|
+
# Returns ruby underscored symbols for enum values starting with enum name (camelcase, e.g. 'ext_key')
|
92
|
+
def enum_symbols(enum_name)
|
93
|
+
enum_name = enum_name.to_s.underscore.to_sym
|
94
|
+
@enum_symbols ||= {}
|
95
|
+
@enum_symbols[enum_name] ||= ::LibUI.constants.select { |c| c.to_s.start_with?(enum_name.to_s.camelcase(:upper)) }.map { |c| c.to_s.underscore.sub("#{enum_name}_", '').to_sym }
|
96
|
+
end
|
97
|
+
|
98
|
+
def enum_symbol_to_value(enum_name, enum_symbol, default_index: 0)
|
99
|
+
if enum_symbol.is_a?(Integer)
|
100
|
+
enum_symbol
|
101
|
+
elsif enum_symbols(enum_name).include?(enum_symbol.to_s.to_sym)
|
102
|
+
::LibUI.const_get("#{enum_name}_#{enum_symbol}".camelcase(:upper))
|
103
|
+
else
|
104
|
+
enum_symbol_to_value(enum_name, enum_symbols(enum_name)[default_index])
|
105
|
+
end
|
106
|
+
end
|
90
107
|
end
|
91
108
|
end
|
92
109
|
end
|
data/lib/glimmer-dsl-libui.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-dsl-libui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-10-
|
11
|
+
date: 2021-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glimmer
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.2.
|
19
|
+
version: 2.2.2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.2.
|
26
|
+
version: 2.2.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: os
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,14 +64,14 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: 0.0.
|
67
|
+
version: 0.0.11
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0.0.
|
74
|
+
version: 0.0.11
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: juwelier
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -238,6 +238,7 @@ files:
|
|
238
238
|
- examples/form_table.rb
|
239
239
|
- examples/grid.rb
|
240
240
|
- examples/histogram.rb
|
241
|
+
- examples/login.rb
|
241
242
|
- examples/meta_example.rb
|
242
243
|
- examples/midi_player.rb
|
243
244
|
- examples/simple_notepad.rb
|
@@ -256,6 +257,7 @@ files:
|
|
256
257
|
- lib/glimmer/libui.rb
|
257
258
|
- lib/glimmer/libui/control_proxy.rb
|
258
259
|
- lib/glimmer/libui/control_proxy/area_proxy.rb
|
260
|
+
- lib/glimmer/libui/control_proxy/area_proxy/scrolling_area_proxy.rb
|
259
261
|
- lib/glimmer/libui/control_proxy/box.rb
|
260
262
|
- lib/glimmer/libui/control_proxy/box/horizontal_box_proxy.rb
|
261
263
|
- lib/glimmer/libui/control_proxy/box/vertical_box_proxy.rb
|
@@ -278,6 +280,9 @@ files:
|
|
278
280
|
- lib/glimmer/libui/control_proxy/editable_column.rb
|
279
281
|
- lib/glimmer/libui/control_proxy/editable_combobox_proxy.rb
|
280
282
|
- lib/glimmer/libui/control_proxy/enableable_column.rb
|
283
|
+
- lib/glimmer/libui/control_proxy/entry_proxy.rb
|
284
|
+
- lib/glimmer/libui/control_proxy/entry_proxy/password_entry_proxy.rb
|
285
|
+
- lib/glimmer/libui/control_proxy/entry_proxy/search_entry_proxy.rb
|
281
286
|
- lib/glimmer/libui/control_proxy/font_button_proxy.rb
|
282
287
|
- lib/glimmer/libui/control_proxy/form_proxy.rb
|
283
288
|
- lib/glimmer/libui/control_proxy/grid_proxy.rb
|