glimmer-dsl-libui 0.1.7 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -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(@libui, child.libui, child.left, child.top, child.xspan, child.yspan, Glimmer::LibUI.boolean_to_integer(child.hexpand), child.halign, Glimmer::LibUI.boolean_to_integer(child.vexpand), child.valign)
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
- case @stroke && @stroke[:cap].to_s
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
- case @stroke && @stroke[:join].to_s
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
- case draw_brush_args[:type]
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
@@ -29,6 +29,7 @@ require 'glimmer'
29
29
  require 'color'
30
30
  require 'os'
31
31
  require 'array_include_methods'
32
+ require 'facets/hash/stringify_keys'
32
33
  require 'libui'
33
34
 
34
35
  # Internal requires
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.7
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-01 00:00:00.000000000 Z
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.0
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.0
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.10
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.10
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