white_gold 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) 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 +0 -8
  5. data/lib/white_gold/abi/extern_object.rb +6 -1
  6. data/lib/white_gold/abi/unpacker.rb +4 -2
  7. data/lib/white_gold/convention/bang_nest.rb +12 -2
  8. data/lib/white_gold/convention/bang_nested_caller.rb +34 -34
  9. data/lib/white_gold/convention/container_widgets.rb +53 -51
  10. data/lib/white_gold/convention/page.rb +22 -4
  11. data/lib/white_gold/{dsl → convention}/theme/color_attribute.rb +2 -0
  12. data/lib/white_gold/{dsl → convention}/theme/outline_attribute.rb +2 -0
  13. data/lib/white_gold/convention/theme/text_styles_attribute.rb +18 -0
  14. data/lib/white_gold/{dsl → convention}/theme/texture_attribute.rb +2 -0
  15. data/lib/white_gold/{dsl → convention}/theme/theme_attributed.rb +4 -18
  16. data/lib/white_gold/{dsl → convention}/theme/theme_component.rb +14 -3
  17. data/lib/white_gold/convention/theme_attributes.rb +49 -0
  18. data/lib/white_gold/convention/tree_node.rb +43 -0
  19. data/lib/white_gold/convention/widget_like.rb +0 -6
  20. data/lib/white_gold/dsl/backend_gui.rb +1 -0
  21. data/lib/white_gold/dsl/button_base.rb +17 -2
  22. data/lib/white_gold/dsl/canvas.rb +40 -0
  23. data/lib/white_gold/dsl/chat_box.rb +12 -1
  24. data/lib/white_gold/dsl/child_window.rb +22 -1
  25. data/lib/white_gold/dsl/color.rb +5 -2
  26. data/lib/white_gold/dsl/color_picker.rb +9 -0
  27. data/lib/white_gold/dsl/combo_box.rb +30 -2
  28. data/lib/white_gold/dsl/container.rb +17 -11
  29. data/lib/white_gold/dsl/edit_box.rb +29 -0
  30. data/lib/white_gold/dsl/file_dialog.rb +17 -0
  31. data/lib/white_gold/dsl/font.rb +5 -1
  32. data/lib/white_gold/dsl/grid.rb +3 -3
  33. data/lib/white_gold/dsl/group.rb +5 -0
  34. data/lib/white_gold/dsl/knob.rb +10 -0
  35. data/lib/white_gold/dsl/label.rb +14 -0
  36. data/lib/white_gold/dsl/list_box.rb +27 -11
  37. data/lib/white_gold/dsl/list_view.rb +29 -6
  38. data/lib/white_gold/dsl/menu_bar.rb +21 -48
  39. data/lib/white_gold/dsl/message_box.rb +8 -2
  40. data/lib/white_gold/dsl/panel_list_box.rb +3 -3
  41. data/lib/white_gold/dsl/progress_bar.rb +14 -0
  42. data/lib/white_gold/dsl/radio_button.rb +25 -0
  43. data/lib/white_gold/dsl/range_slider.rb +8 -0
  44. data/lib/white_gold/dsl/scrollbar.rb +19 -0
  45. data/lib/white_gold/dsl/separator_line.rb +5 -0
  46. data/lib/white_gold/dsl/sfml/circle_shape.rb +7 -0
  47. data/lib/white_gold/dsl/sfml/convex_shape.rb +15 -0
  48. data/lib/white_gold/dsl/sfml/rectangle_shape.rb +7 -0
  49. data/lib/white_gold/dsl/sfml/shape.rb +19 -0
  50. data/lib/white_gold/dsl/sfml/text.rb +22 -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/slider.rb +15 -0
  65. data/lib/white_gold/dsl/spin_button.rb +14 -0
  66. data/lib/white_gold/dsl/tab_container.rb +2 -2
  67. data/lib/white_gold/dsl/tabs.rb +26 -2
  68. data/lib/white_gold/dsl/text_area.rb +16 -0
  69. data/lib/white_gold/dsl/theme.rb +11 -51
  70. data/lib/white_gold/dsl/tree_view.rb +41 -33
  71. data/lib/white_gold/dsl/widget.rb +81 -39
  72. data/lib/white_gold/generated/tgui-abi-loader.gf.rb +197 -47
  73. data/lib/white_gold/library/theme/light.rb +15 -3
  74. data/lib/white_gold/master.rb +21 -40
  75. data/lib/white_gold/path/object.path.rb +0 -11
  76. data/lib/white_gold/tgui-abi.rb +17 -16
  77. data/lib/white_gold/version.rb +3 -0
  78. data/lib/white_gold.rb +29 -28
  79. metadata +26 -39
  80. data/lib/white_gold/dsl/theme/button_theme.rb +0 -19
  81. data/lib/white_gold/dsl/theme/chat_box_theme.rb +0 -16
  82. data/lib/white_gold/dsl/theme/child_window_theme.rb +0 -25
  83. data/lib/white_gold/dsl/theme/color_picker_theme.rb +0 -14
  84. data/lib/white_gold/dsl/theme/combo_box_theme.rb +0 -33
  85. data/lib/white_gold/dsl/theme/common_renderer.rb +0 -7
  86. data/lib/white_gold/dsl/theme/edit_box_theme.rb +0 -34
  87. data/lib/white_gold/dsl/theme/file_dialog_theme.rb +0 -22
  88. data/lib/white_gold/dsl/theme/group_theme.rb +0 -9
  89. data/lib/white_gold/dsl/theme/knob_theme.rb +0 -15
  90. data/lib/white_gold/dsl/theme/label_theme.rb +0 -20
  91. data/lib/white_gold/dsl/theme/list_box_theme.rb +0 -25
  92. data/lib/white_gold/dsl/theme/list_view_theme.rb +0 -27
  93. data/lib/white_gold/dsl/theme/menu_bar_theme.rb +0 -21
  94. data/lib/white_gold/dsl/theme/message_box_theme.rb +0 -11
  95. data/lib/white_gold/dsl/theme/progress_bar_theme.rb +0 -19
  96. data/lib/white_gold/dsl/theme/radio_button_theme.rb +0 -30
  97. data/lib/white_gold/dsl/theme/scrollbar_theme.rb +0 -24
  98. data/lib/white_gold/dsl/theme/separator_line_theme.rb +0 -9
  99. data/lib/white_gold/dsl/theme/slider_theme.rb +0 -20
  100. data/lib/white_gold/dsl/theme/spin_button_theme.rb +0 -19
  101. data/lib/white_gold/dsl/theme/tabs_theme.rb +0 -29
  102. data/lib/white_gold/dsl/theme/text_area_theme.rb +0 -22
  103. data/lib/white_gold/dsl/theme/text_styles_attribute.rb +0 -13
  104. data/lib/white_gold/dsl/theme/tree_view_theme.rb +0 -26
  105. data/lib/white_gold/dsl/theme/widget_theme.rb +0 -12
  106. /data/lib/white_gold/{dsl → convention}/theme/boolean_attribute.rb +0 -0
  107. /data/lib/white_gold/{dsl → convention}/theme/float_attribute.rb +0 -0
  108. /data/lib/white_gold/dsl/{checkbox.rb → check_box.rb} +0 -0
@@ -1,9 +1,30 @@
1
1
  require_relative 'widget'
2
+ require_relative '../convention/tree_node'
2
3
  require_relative 'signal/signal_item_hierarchy'
3
4
 
4
5
  module Tgui
5
6
  class TreeView < Widget
6
7
 
8
+ class Theme < Widget::Theme
9
+ theme_attr :borders, :outline
10
+ theme_attr :padding, :outline
11
+ theme_attr :background_color, :color
12
+ theme_attr :background_color_hover, :color
13
+ theme_attr :selected_background_color, :color
14
+ theme_attr :selected_background_color_hover, :color
15
+ theme_attr :border_color, :color
16
+ theme_attr :text_color, :color
17
+ theme_attr :text_color_hover, :color
18
+ theme_attr :selected_text_color, :color
19
+ theme_attr :selected_text_color_hover, :color
20
+ theme_comp :scrollbar, Scrollbar::Theme
21
+ theme_attr :scrollbar_width, :float
22
+ theme_attr :texture_background, :texture
23
+ theme_attr :texture_branch_expanded, :texture
24
+ theme_attr :texture_branch_collapsed, :texture
25
+ theme_attr :texture_leaf, :texture
26
+ end
27
+
7
28
  class SignalItemHierarchy < Tgui::SignalItemHierarchy
8
29
  def block_caller &b
9
30
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |vector|
@@ -12,42 +33,14 @@ module Tgui
12
33
  path << @widget.abi_unpack_string(str)
13
34
  end
14
35
  SignalItemHierarchy.fetch_path vector, loader
15
- object_path = @widget.self_tree.path_str_to_object path
16
- @widget.page.upon! @widget do
36
+ object_path = @widget.self_tree.path_str_to_object *path
37
+ @widget.send! do
17
38
  b.(object_path.last, object_path, @widget)
18
39
  end
19
40
  end
20
41
  end
21
42
  end
22
43
 
23
- class TreeNode
24
- def initialize object
25
- @object = object
26
- @nodes = {}
27
- end
28
-
29
- attr_accessor :object
30
- attr :nodes
31
-
32
- def [](*path, grow: false)
33
- if grow
34
- path.reduce(self){|node, str| node.nodes[str] ||= TreeNode.new nil }
35
- else
36
- path.reduce(self){|node, str| node&.nodes[str] }
37
- end
38
- end
39
-
40
- def cut *path, last
41
- self[*path].nodes.delete last
42
- end
43
-
44
- def path_str_to_object path
45
- objects = []
46
- path.reduce(self){|node, str| node[str].tap{|n| objects << n.object } }
47
- objects
48
- end
49
- end
50
-
51
44
  api_attr :self_tree do
52
45
  TreeNode.new nil
53
46
  end
@@ -101,6 +94,14 @@ module Tgui
101
94
  Item.new host, [*path, *path_end]
102
95
  end
103
96
 
97
+ def text=(text)
98
+ host.self_change_item path, text
99
+ end
100
+
101
+ def text
102
+ host.self_tree[*path].text
103
+ end
104
+
104
105
  def object
105
106
  path.last
106
107
  end
@@ -172,15 +173,22 @@ module Tgui
172
173
  new_path = [*path, object]
173
174
  self_path_block new_path do
174
175
  _abi_add_item _1, _2, abi_pack_boolean(true)
175
- self_tree[*_3, grow: true].object = object
176
+ self_tree[*new_path, grow: true].text = _3
176
177
  end
177
178
  item = Item.new self, new_path
178
- upon! item, **na, &b
179
+ item.send! **na, &b
180
+ end
181
+
182
+ def self_change_item path, text, **na, &b
183
+ self_path_block path do
184
+ _abi_change_item _1, _2, text
185
+ self_tree[*path].text = text
186
+ end
179
187
  end
180
188
 
181
189
  def self_path_block path, &b
182
190
  path = path.map(&format)
183
- b.(*abi_pack(String.., *path), path)
191
+ b.(*abi_pack(String.., *path), path.last)
184
192
  end
185
193
  end
186
194
  end
@@ -1,9 +1,9 @@
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'
6
- require_relative 'theme/widget_theme'
6
+ require_relative '../convention/theme/theme_component'
7
7
  require_relative 'color'
8
8
  require_relative 'outline'
9
9
  require_relative 'texture'
@@ -15,15 +15,20 @@ 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
- attr_accessor :page
22
-
23
- def window
24
- page.window
21
+ class Theme < ThemeComponent
22
+
23
+ theme_attr :opacity, :float
24
+ theme_attr :opacity_disabled, :float
25
+ theme_attr :text_size, :float
26
+ theme_attr :transparent_texture, :boolean
27
+
25
28
  end
26
29
 
30
+ attr_accessor :page
31
+
27
32
  abi_attr :text_size, Integer
28
33
  abi_attr :enabled?
29
34
 
@@ -31,16 +36,10 @@ module Tgui
31
36
  self.enabled = !disabled
32
37
  end
33
38
 
34
- def theme_comp
35
- :widget
36
- end
37
-
38
39
  def! :renderer do |seed = VOID, **na, &b|
39
40
  seed = page.custom_renderers[self] if seed == VOID
40
41
  if !na.empty? || b
41
- upon! page.theme do
42
- seed = custom! theme_comp, seed, **na, &b
43
- end
42
+ seed = page.theme.custom! self.class::Theme, seed, **na, &b
44
43
  page.custom_renderers[self] = seed
45
44
  elsif !seed
46
45
  page.custom_renderers.delete self
@@ -90,6 +89,9 @@ module Tgui
90
89
  size[0]
91
90
  end
92
91
 
92
+ abi_enum "AutoLayout", :disabled, :top, :left, :right, :bottom, :leftmost, :rightmost, :fill
93
+
94
+ abi_attr :auto_layout, AutoLayout
93
95
  abi_def :can_gain_focus?, :can_gain_focus, nil => Boolean
94
96
  abi_def :container?, nil => Boolean
95
97
 
@@ -97,7 +99,7 @@ module Tgui
97
99
  if block_given?
98
100
  tooltip = ToolTip.new
99
101
  tooltip.page = page
100
- upon! tooltip, **na, &b
102
+ tooltip.send! **na, &b
101
103
  _abi_set_tool_tip tooltip.widget if tooltip.widget
102
104
  else
103
105
  widget = _abi_get_tool_tip
@@ -146,12 +148,12 @@ module Tgui
146
148
  end
147
149
  end
148
150
 
149
- def pack_animation_time o
151
+ def self_pack_animation_time o
150
152
  o ? o.to_i : 1000
151
153
  end
152
154
 
153
- abi_def :move, :move_with_animation, ["SizeLayout", :pack_animation_time] => nil
154
- 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
155
157
 
156
158
  abi_enum "AnimationType", :move, :resize, :opacity
157
159
 
@@ -159,6 +161,50 @@ module Tgui
159
161
  abi_def :front, :move_to_
160
162
  abi_def :back, :move_to_
161
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
+
162
208
  abi_enum "KeyCode", nil, :a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k,
163
209
  :l, :m, :n, :o, :p, :q, :r, :s, :t, :u, :v, :w, :x, :y, :z,
164
210
  :num0, :num1, :num2, :num3, :num4, :num5, :num6, :num7, :num8, :num9,
@@ -212,15 +258,9 @@ module Tgui
212
258
 
213
259
  def! :robot do |**na, &b|
214
260
  robot = Robot.new self
215
- upon! robot, **na, &b if block_given?
261
+ robot.send! **na, &b if block_given?
216
262
  robot
217
263
  end
218
-
219
- def flags=(flags)
220
- flags.each do |f|
221
- send("#{f}=", true)
222
- end
223
- end
224
264
 
225
265
  def self.api_attr name, &init
226
266
  define_method "#{name}=" do |value|
@@ -234,33 +274,35 @@ module Tgui
234
274
  end
235
275
  end
236
276
 
237
-
238
- def respond_to? name
239
- super || bang_respond_to?(name)
240
- end
241
-
242
- def method_missing name, *a, **na, &b
243
- if name.end_with? "!"
244
- bang_method_missing name, *a, **na, &b
245
- else super
246
- end
247
- end
248
-
249
277
  def self_cast_up widget, type = nil, equip: true
250
278
  return nil if widget.null?
251
279
  type = abi_unpack_string(Widget.get_type widget) if !type
252
280
  casted = Tgui.const_get(type).new pointer: widget
253
- equip_child_widget casted if equip
281
+ self_equip_child_widget casted if equip
254
282
  casted
255
283
  end
256
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
+
257
299
  abi_static :get_type
258
300
  abi_static :get_unshared
259
301
 
260
302
  class << self
261
303
  include ApiChild
262
304
 
263
- def self_renderer widget, renderer
305
+ def self_renderer widget, renderer = nil
264
306
  case renderer
265
307
  when Module
266
308
  renderer.name.split("::").last