white_gold 0.0.2 → 0.0.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.
Files changed (79) 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/enum.rb +1 -1
  5. data/lib/white_gold/abi/extern_object.rb +6 -1
  6. data/lib/white_gold/abi/interface/interface.rb +3 -7
  7. data/lib/white_gold/abi/unpacker.rb +4 -2
  8. data/lib/white_gold/convention/bang_def.rb +14 -0
  9. data/lib/white_gold/convention/bang_nest.rb +12 -2
  10. data/lib/white_gold/convention/bang_nested_caller.rb +65 -32
  11. data/lib/white_gold/convention/container_widgets.rb +61 -96
  12. data/lib/white_gold/convention/page.rb +28 -4
  13. data/lib/white_gold/convention/theme/boolean_attribute.rb +11 -9
  14. data/lib/white_gold/convention/theme/color_attribute.rb +11 -9
  15. data/lib/white_gold/convention/theme/float_attribute.rb +11 -9
  16. data/lib/white_gold/convention/theme/outline_attribute.rb +11 -9
  17. data/lib/white_gold/convention/theme/text_styles_attribute.rb +16 -9
  18. data/lib/white_gold/convention/theme/texture_attribute.rb +14 -12
  19. data/lib/white_gold/convention/theme/theme_attributed.rb +1 -1
  20. data/lib/white_gold/convention/theme/theme_component.rb +1 -1
  21. data/lib/white_gold/convention/theme_attributes.rb +6 -2
  22. data/lib/white_gold/convention/tree_node.rb +43 -0
  23. data/lib/white_gold/convention/widget/keyboard_control.rb +30 -0
  24. data/lib/white_gold/convention/widget_class_aliases.rb +24 -0
  25. data/lib/white_gold/convention/widget_like.rb +0 -6
  26. data/lib/white_gold/dsl/backend_gui.rb +1 -0
  27. data/lib/white_gold/dsl/canvas.rb +40 -0
  28. data/lib/white_gold/dsl/chat_box.rb +1 -1
  29. data/lib/white_gold/dsl/child_window.rb +1 -1
  30. data/lib/white_gold/dsl/color.rb +9 -4
  31. data/lib/white_gold/dsl/combo_box.rb +2 -2
  32. data/lib/white_gold/dsl/container.rb +18 -12
  33. data/lib/white_gold/dsl/custom_widget.rb +28 -0
  34. data/lib/white_gold/dsl/font.rb +5 -1
  35. data/lib/white_gold/dsl/grid.rb +37 -13
  36. data/lib/white_gold/dsl/gui.rb +10 -1
  37. data/lib/white_gold/dsl/label.rb +3 -0
  38. data/lib/white_gold/dsl/list_box.rb +7 -11
  39. data/lib/white_gold/dsl/list_view.rb +6 -6
  40. data/lib/white_gold/dsl/menu_bar.rb +5 -48
  41. data/lib/white_gold/dsl/message_box.rb +3 -3
  42. data/lib/white_gold/dsl/panel.rb +8 -0
  43. data/lib/white_gold/dsl/panel_list_box.rb +12 -3
  44. data/lib/white_gold/dsl/radio_button.rb +15 -2
  45. data/lib/white_gold/dsl/scrollable_panel.rb +7 -0
  46. data/lib/white_gold/dsl/sfml/circle_shape.rb +11 -0
  47. data/lib/white_gold/dsl/sfml/convex_shape.rb +19 -0
  48. data/lib/white_gold/dsl/sfml/rectangle_shape.rb +11 -0
  49. data/lib/white_gold/dsl/sfml/shape.rb +19 -0
  50. data/lib/white_gold/dsl/sfml/text.rb +26 -0
  51. data/lib/white_gold/dsl/signal/global_signal.rb +1 -1
  52. data/lib/white_gold/dsl/signal/signal.rb +1 -1
  53. data/lib/white_gold/dsl/signal/signal_animation_type.rb +1 -1
  54. data/lib/white_gold/dsl/signal/signal_bool.rb +1 -1
  55. data/lib/white_gold/dsl/signal/signal_color.rb +1 -1
  56. data/lib/white_gold/dsl/signal/signal_float.rb +1 -1
  57. data/lib/white_gold/dsl/signal/signal_int.rb +1 -1
  58. data/lib/white_gold/dsl/signal/signal_pointer.rb +1 -1
  59. data/lib/white_gold/dsl/signal/signal_range.rb +1 -1
  60. data/lib/white_gold/dsl/signal/signal_show_effect.rb +1 -1
  61. data/lib/white_gold/dsl/signal/signal_string.rb +1 -1
  62. data/lib/white_gold/dsl/signal/signal_u_int.rb +1 -1
  63. data/lib/white_gold/dsl/signal/signal_vector2f.rb +1 -1
  64. data/lib/white_gold/dsl/tab_container.rb +2 -2
  65. data/lib/white_gold/dsl/tabs.rb +2 -2
  66. data/lib/white_gold/dsl/theme.rb +2 -2
  67. data/lib/white_gold/dsl/toggle_button.rb +3 -0
  68. data/lib/white_gold/dsl/tree_view.rb +21 -33
  69. data/lib/white_gold/dsl/widget.rb +112 -49
  70. data/lib/white_gold/dsl/window.rb +7 -0
  71. data/lib/white_gold/generated/tgui-abi-loader.gf.rb +273 -48
  72. data/lib/white_gold/library/theme/light.rb +8 -1
  73. data/lib/white_gold/master.rb +43 -42
  74. data/lib/white_gold/path/array.path.rb +16 -0
  75. data/lib/white_gold/tgui-abi.rb +48 -38
  76. data/lib/white_gold/version.rb +3 -0
  77. data/lib/white_gold.rb +31 -28
  78. metadata +20 -6
  79. data/lib/white_gold/abi/reducer.rb +0 -12
@@ -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
@@ -40,40 +40,40 @@ module Tgui
40
40
  self.enabled = !disabled
41
41
  end
42
42
 
43
- def theme_comp
44
- :widget
45
- end
46
-
47
- def! :renderer do |seed = VOID, **na, &b|
43
+ def! :theme do |seed = VOID, **na, &b|
48
44
  seed = page.custom_renderers[self] if seed == VOID
49
45
  if !na.empty? || b
50
- upon! page.theme do
51
- seed = custom! self.class::Theme, seed, **na, &b
46
+ if seed.is_a?(String) && seed =~ /_\d+/
47
+ page.theme.attributes[seed].host! **na, &b
48
+ page.theme.self_commit
49
+ else
50
+ seed = page.theme.custom! self.class::Theme, seed, **na, &b
51
+ page.custom_renderers[self] = seed
52
52
  end
53
- page.custom_renderers[self] = seed
54
- elsif !seed
55
- page.custom_renderers.delete self
56
- else
53
+ elsif seed
57
54
  page.custom_renderers[self] = seed
58
55
  end
59
- self.self_renderer = seed
56
+ self_set_renderer seed
60
57
  end
61
58
 
62
- def renderer=(renderer)
63
- case renderer
59
+ def theme=(theme)
60
+ case theme
64
61
  when Hash
65
- api_bang_renderer **renderer
62
+ api_bang_theme **theme
66
63
  when Proc
67
- api_bang_renderer &renderer
64
+ api_bang_theme &theme
68
65
  else
69
- page.custom_renderers[self] = renderer
70
- self.self_renderer = renderer
66
+ page.custom_renderers[self] = theme
67
+ self_set_renderer theme
71
68
  end
72
69
  end
73
70
 
74
- abi_def :self_renderer=, :set_renderer, proc.self_renderer => nil
71
+ abi_def :self_set_renderer, :set_renderer, proc.self_theme_name => nil
75
72
 
76
73
  abi_attr :focused?
74
+ def! :focus do |focus = VOID|
75
+ self.focused = focus
76
+ end
77
77
  abi_attr :focusable?
78
78
  abi_signal :on_position_change, Tgui::SignalVector2f
79
79
  abi_signal :on_size_change, Tgui::SignalVector2f
@@ -99,6 +99,9 @@ module Tgui
99
99
  size[0]
100
100
  end
101
101
 
102
+ abi_enum "AutoLayout", :disabled, :top, :left, :right, :bottom, :leftmost, :rightmost, :fill
103
+
104
+ abi_attr :auto_layout, AutoLayout
102
105
  abi_def :can_gain_focus?, :can_gain_focus, nil => Boolean
103
106
  abi_def :container?, nil => Boolean
104
107
 
@@ -106,7 +109,7 @@ module Tgui
106
109
  if block_given?
107
110
  tooltip = ToolTip.new
108
111
  tooltip.page = page
109
- upon! tooltip, **na, &b
112
+ scope! tooltip, **na, &b
110
113
  _abi_set_tool_tip tooltip.widget if tooltip.widget
111
114
  else
112
115
  widget = _abi_get_tool_tip
@@ -155,12 +158,12 @@ module Tgui
155
158
  end
156
159
  end
157
160
 
158
- def pack_animation_time o
161
+ def self_pack_animation_time o
159
162
  o ? o.to_i : 1000
160
163
  end
161
164
 
162
- abi_def :move, :move_with_animation, ["SizeLayout", :pack_animation_time] => nil
163
- abi_def :resize, :resize_with_animation, ["PositionLayout", :pack_animation_time] => nil
165
+ abi_def :move, :move_with_animation, ["SizeLayout", :self_pack_animation_time] => nil
166
+ abi_def :resize, :resize_with_animation, ["PositionLayout", :self_pack_animation_time] => nil
164
167
 
165
168
  abi_enum "AnimationType", :move, :resize, :opacity
166
169
 
@@ -168,7 +171,51 @@ module Tgui
168
171
  abi_def :front, :move_to_
169
172
  abi_def :back, :move_to_
170
173
 
171
- abi_enum "KeyCode", nil, :a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k,
174
+ class Navigation < WidgetLike
175
+
176
+ def left=(widget)
177
+ host._abi_set_navigation host.abi_pack(Widget, widget), host.abi_pack_integer(0)
178
+ end
179
+
180
+ def left
181
+ abi_unpack(Widget, host._abi_get_navigation(host.abi_pack_integer(0)))
182
+ end
183
+
184
+ def right=(widget)
185
+ host._abi_set_navigation host.abi_pack(Widget, widget), host.abi_pack_integer(1)
186
+ end
187
+
188
+ def right
189
+ host.abi_unpack(Widget, host._abi_get_navigation(host.abi_pack_integer(1)))
190
+ end
191
+
192
+ def up=(widget)
193
+ host._abi_set_navigation host.abi_pack(Widget, widget), host.abi_pack_integer(2)
194
+ end
195
+
196
+ def up
197
+ host.abi_unpack(Widget, host._abi_get_navigation(host.abi_pack_integer(2)))
198
+ end
199
+
200
+ def down=(widget)
201
+ host._abi_set_navigation host.abi_pack(Widget, widget), host.abi_pack_integer(3)
202
+ end
203
+
204
+ def down
205
+ host.abi_unpack(Widget, host._abi_get_navigation(host.abi_pack_integer(3)))
206
+ end
207
+
208
+ end
209
+
210
+ def! :navigation do |**na, &b|
211
+ scope! navigation, **na, &b
212
+ end
213
+
214
+ def navigation
215
+ Navigation.new self, nil
216
+ end
217
+
218
+ abi_enum "KeyCode", :a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k,
172
219
  :l, :m, :n, :o, :p, :q, :r, :s, :t, :u, :v, :w, :x, :y, :z,
173
220
  :num0, :num1, :num2, :num3, :num4, :num5, :num6, :num7, :num8, :num9,
174
221
  :escape, :left_control, :left_shift, :left_alt, :left_system,
@@ -221,14 +268,28 @@ module Tgui
221
268
 
222
269
  def! :robot do |**na, &b|
223
270
  robot = Robot.new self
224
- upon! robot, **na, &b if block_given?
271
+ scope! robot, **na, &b if block_given?
225
272
  robot
226
273
  end
227
-
228
- def flags=(flags)
229
- flags.each do |f|
230
- send("#{f}=", true)
274
+
275
+ def! :messagebox do |*a, **na, &b|
276
+ page.api_bang_messagebox *a, **na, &b
277
+ end
278
+
279
+ def! :msg do |text, **buttons|
280
+ buttons["OK"] = nil if buttons.empty?
281
+ buttons = buttons.map do |k, v|
282
+ procedure = proc do |o, b, w|
283
+ v&.call
284
+ w.close true
285
+ end
286
+ [k, procedure]
231
287
  end
288
+ page.api_bang_messagebox text:, position: :center, label_alignment: :center, buttons: buttons
289
+ end
290
+
291
+ def! :page do |*a, **na, &b|
292
+ page.host! *a, **na, &b
232
293
  end
233
294
 
234
295
  def self.api_attr name, &init
@@ -243,40 +304,42 @@ module Tgui
243
304
  end
244
305
  end
245
306
 
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
307
  def self_cast_up widget, type = nil, equip: true
259
308
  return nil if widget.null?
260
309
  type = abi_unpack_string(Widget.get_type widget) if !type
261
310
  casted = Tgui.const_get(type).new pointer: widget
262
- equip_child_widget casted if equip
311
+ self_equip_child_widget casted if equip
263
312
  casted
264
313
  end
265
314
 
315
+ abi_packer Widget do |o|
316
+ o = o.first if o.is_a? Array
317
+ case o
318
+ when Widget
319
+ o
320
+ else
321
+ raise "Unable to make Widget from #{o}(#{o.class})"
322
+ end
323
+ end
324
+
325
+ abi_unpacker Widget do |o|
326
+ self_cast_up o
327
+ end
328
+
266
329
  abi_static :get_type
267
330
  abi_static :get_unshared
268
331
 
269
332
  class << self
270
333
  include ApiChild
271
334
 
272
- def self_renderer widget, renderer
273
- case renderer
335
+ def self_theme_name widget, theme = nil
336
+ case theme
274
337
  when Module
275
- renderer.name.split("::").last
338
+ theme.name.split("::").last
276
339
  when nil, false, VOID
277
- self_renderer widget, widget.class
340
+ self_theme_name widget, widget.class
278
341
  else
279
- renderer.to_s
342
+ theme.to_s
280
343
  end
281
344
  end
282
345
 
@@ -11,6 +11,13 @@ module Tgui
11
11
  end
12
12
  abi_def :open?
13
13
  abi_def :title=, String => nil
14
+ abi_attr :size, Vector2u
15
+ abi_attr :position, Vector2u
16
+ abi_def :has_focus?, nil => Boolean
17
+ abi_def :request_focus
18
+ def! :request_focus do
19
+ request_focus
20
+ end
14
21
 
15
22
  end
16
23
  end