white_gold 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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