white_gold 0.0.2 → 0.0.3

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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/ext/dll/tgui.dll +0 -0
  3. data/ext/so/libtgui.so +0 -0
  4. data/lib/white_gold/abi/extern_object.rb +6 -1
  5. data/lib/white_gold/abi/unpacker.rb +4 -2
  6. data/lib/white_gold/convention/bang_nest.rb +12 -2
  7. data/lib/white_gold/convention/bang_nested_caller.rb +34 -34
  8. data/lib/white_gold/convention/container_widgets.rb +29 -24
  9. data/lib/white_gold/convention/page.rb +20 -2
  10. data/lib/white_gold/convention/theme/text_styles_attribute.rb +7 -2
  11. data/lib/white_gold/convention/theme/theme_attributed.rb +1 -1
  12. data/lib/white_gold/convention/tree_node.rb +43 -0
  13. data/lib/white_gold/convention/widget_like.rb +0 -6
  14. data/lib/white_gold/dsl/backend_gui.rb +1 -0
  15. data/lib/white_gold/dsl/canvas.rb +40 -0
  16. data/lib/white_gold/dsl/chat_box.rb +1 -1
  17. data/lib/white_gold/dsl/child_window.rb +1 -1
  18. data/lib/white_gold/dsl/color.rb +5 -2
  19. data/lib/white_gold/dsl/combo_box.rb +2 -2
  20. data/lib/white_gold/dsl/container.rb +17 -11
  21. data/lib/white_gold/dsl/font.rb +5 -1
  22. data/lib/white_gold/dsl/grid.rb +3 -3
  23. data/lib/white_gold/dsl/list_box.rb +7 -11
  24. data/lib/white_gold/dsl/list_view.rb +6 -6
  25. data/lib/white_gold/dsl/menu_bar.rb +5 -48
  26. data/lib/white_gold/dsl/message_box.rb +2 -2
  27. data/lib/white_gold/dsl/panel_list_box.rb +3 -3
  28. data/lib/white_gold/dsl/sfml/circle_shape.rb +7 -0
  29. data/lib/white_gold/dsl/sfml/convex_shape.rb +15 -0
  30. data/lib/white_gold/dsl/sfml/rectangle_shape.rb +7 -0
  31. data/lib/white_gold/dsl/sfml/shape.rb +19 -0
  32. data/lib/white_gold/dsl/sfml/text.rb +22 -0
  33. data/lib/white_gold/dsl/signal/global_signal.rb +1 -1
  34. data/lib/white_gold/dsl/signal/signal.rb +1 -1
  35. data/lib/white_gold/dsl/signal/signal_animation_type.rb +1 -1
  36. data/lib/white_gold/dsl/signal/signal_bool.rb +1 -1
  37. data/lib/white_gold/dsl/signal/signal_color.rb +1 -1
  38. data/lib/white_gold/dsl/signal/signal_float.rb +1 -1
  39. data/lib/white_gold/dsl/signal/signal_int.rb +1 -1
  40. data/lib/white_gold/dsl/signal/signal_pointer.rb +1 -1
  41. data/lib/white_gold/dsl/signal/signal_range.rb +1 -1
  42. data/lib/white_gold/dsl/signal/signal_show_effect.rb +1 -1
  43. data/lib/white_gold/dsl/signal/signal_string.rb +1 -1
  44. data/lib/white_gold/dsl/signal/signal_u_int.rb +1 -1
  45. data/lib/white_gold/dsl/signal/signal_vector2f.rb +1 -1
  46. data/lib/white_gold/dsl/tab_container.rb +2 -2
  47. data/lib/white_gold/dsl/tabs.rb +2 -2
  48. data/lib/white_gold/dsl/theme.rb +1 -1
  49. data/lib/white_gold/dsl/tree_view.rb +21 -33
  50. data/lib/white_gold/dsl/widget.rb +71 -38
  51. data/lib/white_gold/generated/tgui-abi-loader.gf.rb +197 -47
  52. data/lib/white_gold/master.rb +21 -40
  53. data/lib/white_gold/tgui-abi.rb +16 -16
  54. data/lib/white_gold/version.rb +3 -0
  55. data/lib/white_gold.rb +29 -28
  56. metadata +16 -5
@@ -1,5 +1,5 @@
1
1
  require_relative '../abi/extern_object'
2
- require_relative '../convention/bang_nested_caller'
2
+ require_relative '../convention/bang_nest'
3
3
  require_relative '../convention/unit'
4
4
  require_relative '../convention/widget_like'
5
5
  require_relative '../convention/api_child'
@@ -15,7 +15,7 @@ require_relative 'tool_tip'
15
15
 
16
16
  module Tgui
17
17
  class Widget < ExternObject
18
- include BangNestedCaller
18
+ include BangNest
19
19
  extend BangDef
20
20
 
21
21
  class Theme < ThemeComponent
@@ -29,10 +29,6 @@ module Tgui
29
29
 
30
30
  attr_accessor :page
31
31
 
32
- def window
33
- page.window
34
- end
35
-
36
32
  abi_attr :text_size, Integer
37
33
  abi_attr :enabled?
38
34
 
@@ -40,16 +36,10 @@ module Tgui
40
36
  self.enabled = !disabled
41
37
  end
42
38
 
43
- def theme_comp
44
- :widget
45
- end
46
-
47
39
  def! :renderer do |seed = VOID, **na, &b|
48
40
  seed = page.custom_renderers[self] if seed == VOID
49
41
  if !na.empty? || b
50
- upon! page.theme do
51
- seed = custom! self.class::Theme, seed, **na, &b
52
- end
42
+ seed = page.theme.custom! self.class::Theme, seed, **na, &b
53
43
  page.custom_renderers[self] = seed
54
44
  elsif !seed
55
45
  page.custom_renderers.delete self
@@ -99,6 +89,9 @@ module Tgui
99
89
  size[0]
100
90
  end
101
91
 
92
+ abi_enum "AutoLayout", :disabled, :top, :left, :right, :bottom, :leftmost, :rightmost, :fill
93
+
94
+ abi_attr :auto_layout, AutoLayout
102
95
  abi_def :can_gain_focus?, :can_gain_focus, nil => Boolean
103
96
  abi_def :container?, nil => Boolean
104
97
 
@@ -106,7 +99,7 @@ module Tgui
106
99
  if block_given?
107
100
  tooltip = ToolTip.new
108
101
  tooltip.page = page
109
- upon! tooltip, **na, &b
102
+ tooltip.send! **na, &b
110
103
  _abi_set_tool_tip tooltip.widget if tooltip.widget
111
104
  else
112
105
  widget = _abi_get_tool_tip
@@ -155,12 +148,12 @@ module Tgui
155
148
  end
156
149
  end
157
150
 
158
- def pack_animation_time o
151
+ def self_pack_animation_time o
159
152
  o ? o.to_i : 1000
160
153
  end
161
154
 
162
- abi_def :move, :move_with_animation, ["SizeLayout", :pack_animation_time] => nil
163
- abi_def :resize, :resize_with_animation, ["PositionLayout", :pack_animation_time] => nil
155
+ abi_def :move, :move_with_animation, ["SizeLayout", :self_pack_animation_time] => nil
156
+ abi_def :resize, :resize_with_animation, ["PositionLayout", :self_pack_animation_time] => nil
164
157
 
165
158
  abi_enum "AnimationType", :move, :resize, :opacity
166
159
 
@@ -168,6 +161,50 @@ module Tgui
168
161
  abi_def :front, :move_to_
169
162
  abi_def :back, :move_to_
170
163
 
164
+ class Navigation < WidgetLike
165
+
166
+ def left=(widget)
167
+ host._abi_set_navigation host.abi_pack(Widget, widget), host.abi_pack_integer(0)
168
+ end
169
+
170
+ def left
171
+ abi_unpack(Widget, host._abi_get_navigation(host.abi_pack_integer(0)))
172
+ end
173
+
174
+ def right=(widget)
175
+ host._abi_set_navigation host.abi_pack(Widget, widget), host.abi_pack_integer(1)
176
+ end
177
+
178
+ def right
179
+ host.abi_unpack(Widget, host._abi_get_navigation(host.abi_pack_integer(1)))
180
+ end
181
+
182
+ def up=(widget)
183
+ host._abi_set_navigation host.abi_pack(Widget, widget), host.abi_pack_integer(2)
184
+ end
185
+
186
+ def up
187
+ host.abi_unpack(Widget, host._abi_get_navigation(host.abi_pack_integer(2)))
188
+ end
189
+
190
+ def down=(widget)
191
+ host._abi_set_navigation host.abi_pack(Widget, widget), host.abi_pack_integer(3)
192
+ end
193
+
194
+ def down
195
+ host.abi_unpack(Widget, host._abi_get_navigation(host.abi_pack_integer(3)))
196
+ end
197
+
198
+ end
199
+
200
+ def! :navigation do |**na, &b|
201
+ navigation.send! **na, &b
202
+ end
203
+
204
+ def navigation
205
+ Navigation.new self, nil
206
+ end
207
+
171
208
  abi_enum "KeyCode", nil, :a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k,
172
209
  :l, :m, :n, :o, :p, :q, :r, :s, :t, :u, :v, :w, :x, :y, :z,
173
210
  :num0, :num1, :num2, :num3, :num4, :num5, :num6, :num7, :num8, :num9,
@@ -221,15 +258,9 @@ module Tgui
221
258
 
222
259
  def! :robot do |**na, &b|
223
260
  robot = Robot.new self
224
- upon! robot, **na, &b if block_given?
261
+ robot.send! **na, &b if block_given?
225
262
  robot
226
263
  end
227
-
228
- def flags=(flags)
229
- flags.each do |f|
230
- send("#{f}=", true)
231
- end
232
- end
233
264
 
234
265
  def self.api_attr name, &init
235
266
  define_method "#{name}=" do |value|
@@ -243,33 +274,35 @@ module Tgui
243
274
  end
244
275
  end
245
276
 
246
-
247
- def respond_to? name
248
- super || bang_respond_to?(name)
249
- end
250
-
251
- def method_missing name, *a, **na, &b
252
- if name.end_with? "!"
253
- bang_method_missing name, *a, **na, &b
254
- else super
255
- end
256
- end
257
-
258
277
  def self_cast_up widget, type = nil, equip: true
259
278
  return nil if widget.null?
260
279
  type = abi_unpack_string(Widget.get_type widget) if !type
261
280
  casted = Tgui.const_get(type).new pointer: widget
262
- equip_child_widget casted if equip
281
+ self_equip_child_widget casted if equip
263
282
  casted
264
283
  end
265
284
 
285
+ abi_packer Widget do |o|
286
+ o = o.first if o.is_a? Array
287
+ case o
288
+ when Widget
289
+ o
290
+ else
291
+ raise "Unable to make Widget from #{o}(#{o.class})"
292
+ end
293
+ end
294
+
295
+ abi_unpacker Widget do |o|
296
+ self_cast_up o
297
+ end
298
+
266
299
  abi_static :get_type
267
300
  abi_static :get_unshared
268
301
 
269
302
  class << self
270
303
  include ApiChild
271
304
 
272
- def self_renderer widget, renderer
305
+ def self_renderer widget, renderer = nil
273
306
  case renderer
274
307
  when Module
275
308
  renderer.name.split("::").last