white_gold 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -29,7 +29,7 @@ module Tgui
29
29
  def block_caller &b
30
30
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP]) do |str1, str2|
31
31
  id = @widget.abi_unpack_string(str2)
32
- @widget.page.upon! @widget do
32
+ @widget.send! do
33
33
  b.(@widget.self_get_object_by_id(id), @widget)
34
34
  end
35
35
  end
@@ -55,26 +55,22 @@ module Tgui
55
55
  abi_signal :on_scroll, SignalUInt
56
56
  abi_attr :text_alignment, TextAlignment
57
57
 
58
- class Item
59
- def initialize list_box, id
60
- @list_box = list_box
61
- @id = id
62
- end
58
+ class Item < WidgetLike
63
59
 
64
60
  def object=(object)
65
- @list_box.self_objects[@id] = object
61
+ host.self_objects[id] = object
66
62
  end
67
63
 
68
64
  def object
69
- return @list_box.self_objects[@id]
65
+ return host.self_objects[id]
70
66
  end
71
67
 
72
68
  def text=(text)
73
- @list_box._abi_change_item_by_id @id, abi_pack_string(text)
69
+ host._abi_change_item_by_id id, abi_pack_string(text)
74
70
  end
75
71
 
76
72
  def remove
77
- @list_box._abi_remove_item_by_id @id
73
+ host._abi_remove_item_by_id id
78
74
  end
79
75
  end
80
76
 
@@ -84,7 +80,7 @@ module Tgui
84
80
  _abi_add_item abi_pack_string(text), abi_pack_string(id)
85
81
  item = Item.new self, id
86
82
  na[:object] ||= object
87
- upon! item, **na, &b
83
+ item.send! **na, &b
88
84
  end
89
85
 
90
86
  def remove_all
@@ -31,7 +31,7 @@ module Tgui
31
31
  class ListViewItemSignal < Tgui::SignalInt
32
32
  def block_caller &b
33
33
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT]) do |index|
34
- @widget.page.upon! @widget do
34
+ @widget.send! do
35
35
  b.(@widget.self_objects[index], @widget)
36
36
  end
37
37
  end
@@ -41,7 +41,7 @@ module Tgui
41
41
  class ListViewColumnSignal < Tgui::SignalInt
42
42
  def block_caller &b
43
43
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT]) do |index|
44
- @widget.page.upon! @widget do
44
+ @widget.send! do
45
45
  b.(@widget.columns[index], @widget)
46
46
  end
47
47
  end
@@ -93,14 +93,14 @@ module Tgui
93
93
  index = _abi_add_column
94
94
  column = Column.new self, index
95
95
  columns << column
96
- upon! column, **na, &b
96
+ column.send! **na, &b
97
97
  end
98
98
 
99
99
  def! :item do |object, **na, &b|
100
100
  self_add_object object, na[:index]
101
101
  item = Item.new self, object
102
102
  na.delete :index
103
- upon! item, **na, &b
103
+ item.send! **na, &b
104
104
  end
105
105
 
106
106
  def items=(items)
@@ -173,7 +173,7 @@ module Tgui
173
173
 
174
174
  def! :grid_lines do | **na, &b|
175
175
  lines = GridLines.new self
176
- upon! lines, **na, &b
176
+ lines.send! **na, &b
177
177
  end
178
178
 
179
179
  def grid_lines=(grid_lines)
@@ -199,7 +199,7 @@ module Tgui
199
199
 
200
200
  def! :header do |**na, &b|
201
201
  header = Header.new self
202
- upon! header, **na, &b
202
+ header.send! **na, &b
203
203
  end
204
204
 
205
205
  def header=(header)
@@ -1,4 +1,5 @@
1
1
  require_relative 'widget'
2
+ require_relative '../convention/tree_node'
2
3
  require_relative '../convention/widget_like'
3
4
  require_relative 'signal/signal_item_hierarchy'
4
5
 
@@ -29,7 +30,7 @@ module Tgui
29
30
 
30
31
  def connect &b
31
32
  on_press = Fiddle::Closure::BlockCaller.new(0, [0]) do
32
- @menu_bar.page.upon! @menu_bar do
33
+ @menu_bar.send! do
33
34
  b.(@path.last, @path, @menu_bar)
34
35
  end
35
36
  end
@@ -56,57 +57,13 @@ module Tgui
56
57
  end
57
58
  SignalItemHierarchy.fetch_path vector, loader
58
59
  object_path = @widget.self_object_path path
59
- @widget.page.upon! @widget do
60
+ @widget.send! do
60
61
  b.(object_path.last, object_path, @widget)
61
62
  end
62
63
  end
63
64
  end
64
65
  end
65
66
 
66
- class TreeNode
67
- def initialize text
68
- @text = text
69
- @nodes = {}
70
- end
71
-
72
- attr_accessor :text
73
- attr :nodes
74
-
75
- def [](*path, grow: false)
76
- if grow
77
- path.reduce(self){|node, o| node.nodes[o] ||= TreeNode.new(nil) }
78
- else
79
- path.reduce(self){|node, o| node&.nodes[o] }
80
- end
81
- end
82
-
83
- def cut *path, last
84
- self[*path].nodes.delete last
85
- end
86
-
87
- def cut_branches *path
88
- self[*path].nodes = {}
89
- end
90
-
91
- def path_str_to_object *path
92
- object_path = []
93
- path.reduce self do |node, str|
94
- o, node = *node.nodes.find{|k, v| v.text == str }
95
- object_path << o
96
- node
97
- end
98
- object_path
99
- end
100
-
101
- def path_object_to_str *path
102
- str_path = []
103
- path.reduce self do |node, o|
104
- node[o].tap{ str_path << _1.text }
105
- end
106
- str_path
107
- end
108
- end
109
-
110
67
  api_attr :self_tree do
111
68
  TreeNode.new nil
112
69
  end
@@ -122,7 +79,7 @@ module Tgui
122
79
  host._abi_add_menu_item _1, _2
123
80
  end
124
81
  item = Item.new host, item_path
125
- upon! item, **na, &b
82
+ item.send! **na, &b
126
83
  end
127
84
 
128
85
  def! :separator do
@@ -208,7 +165,7 @@ module Tgui
208
165
  self_tree[object, grow: true].text = text
209
166
  _abi_add_menu abi_pack_string(text)
210
167
  item = Menu.new self, object
211
- upon! item, **na, &b
168
+ item.send! **na, &b
212
169
  end
213
170
 
214
171
  def items=(items)
@@ -37,7 +37,7 @@ module Tgui
37
37
  end
38
38
 
39
39
  def press_signal_execute
40
- host.page.upon! host do
40
+ host.send! do
41
41
  @on_press_callbacks.each do |c|
42
42
  c.(id, self, host)
43
43
  end
@@ -52,7 +52,7 @@ module Tgui
52
52
  _abi_add_button abi_pack_string(text)
53
53
  button = Button.new self, object
54
54
  self_buttons[text] = button
55
- upon! button, **na, &b
55
+ button.send! **na, &b
56
56
  end
57
57
 
58
58
  def [](object)
@@ -8,7 +8,7 @@ module Tgui
8
8
  class SignalPanelListBoxItem < Tgui::SignalPanelListBoxItem
9
9
  def block_caller &b
10
10
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |id|
11
- @widget.page.upon! @widget do
11
+ @widget.send! do
12
12
  b.(@widget.self_objects.key(@widget.abi_unpack_string(id)), @widget)
13
13
  end
14
14
  end
@@ -22,7 +22,7 @@ module Tgui
22
22
  panel = Panel.new pointer: _abi_add_item(id, abi_pack_integer(index))
23
23
  panel.page = page
24
24
  self_objects[object] = id
25
- upon! panel, **na, &b
25
+ panel.send! **na, &b
26
26
  end
27
27
 
28
28
  def [](object)
@@ -71,7 +71,7 @@ module Tgui
71
71
  def! :template do |**na, &b|
72
72
  panel = Panel.new(pointer: _abi_get_panel_template)
73
73
  panel.page = page
74
- upon! panel, **na, &b
74
+ panel.send! **na, &b
75
75
  end
76
76
 
77
77
  # internal
@@ -0,0 +1,7 @@
1
+ require_relative 'shape'
2
+
3
+ module Tgui
4
+ class CircleShape < Shape
5
+ abi_attr :radius, Float
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ require_relative 'shape'
2
+
3
+ module Tgui
4
+ class ConvexShape < Shape
5
+ def initialized
6
+ @point_count = 0
7
+ end
8
+
9
+ def! :point do |x, y|
10
+ _abi_set_point_count @point_count + 1
11
+ _abi_set_point @point_count, *abi_pack(Vector2f, x, y)
12
+ @point_count += 1
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ require_relative 'shape'
2
+
3
+ module Tgui
4
+ class RectangleShape < Shape
5
+ abi_attr :size, Vector2f
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ require_relative '../../abi/extern_object'
2
+ require_relative '../../convention/bang_nest'
3
+
4
+ module Tgui
5
+ class Shape < ExternObject
6
+ include BangNest
7
+
8
+ abi_attr :texture, Texture
9
+ abi_attr :radius, Float
10
+ abi_attr :point_count, Integer
11
+ abi_attr :color, Color, :fill_color
12
+ abi_attr :border_color, Color, :outline_color
13
+ abi_attr :border, Float, :outline_thickness
14
+ abi_attr :position, Vector2f
15
+ abi_attr :rotation, Float
16
+ abi_attr :scale, Vector2f
17
+ abi_attr :origin, Vector2f
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ require_relative '../../abi/extern_object'
2
+
3
+ module Tgui
4
+ class Text < ExternObject
5
+ include BangNest
6
+
7
+ abi_attr :string, String
8
+ abi_attr :font, Font
9
+ abi_attr :character_size, Integer
10
+ abi_attr :line_spacing, Float
11
+ abi_attr :letter_spacing, Float
12
+ abi_attr :style, TextStyles
13
+ abi_attr :color, Color, :fill_color
14
+ abi_attr :border_color, Color, :outline_color
15
+ abi_attr :border, Float, :outline_thickness
16
+ abi_def :character_position, :find_character_pos, Integer => Vector2f
17
+ abi_attr :position, Vector2f
18
+ abi_attr :rotation, Float
19
+ abi_attr :scale, Vector2f
20
+ abi_attr :origin, Vector2f
21
+ end
22
+ end
@@ -6,7 +6,7 @@ module Tgui
6
6
 
7
7
  def block_caller &b
8
8
  Fiddle::Closure::BlockCaller.new(0, [0]) do
9
- @widget.page.upon! @widget do
9
+ @widget.send! do
10
10
  b.(@widget)
11
11
  end
12
12
  end
@@ -10,7 +10,7 @@ module Tgui
10
10
 
11
11
  def block_caller &b
12
12
  Fiddle::Closure::BlockCaller.new(0, [0]) do
13
- @widget.page.upon! @widget do
13
+ @widget.send! do
14
14
  b.(@widget)
15
15
  end
16
16
  end
@@ -6,7 +6,7 @@ module Tgui
6
6
  def block_caller
7
7
  block_caller = Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT]) do |animation_type|
8
8
  at = @widget.abi_unpack AnimationType, animation_type
9
- @widget.page.upon! @widget do
9
+ @widget.send! do
10
10
  b.(at, @widget)
11
11
  end
12
12
  end
@@ -6,7 +6,7 @@ module Tgui
6
6
  def block_caller &b
7
7
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT]) do |int|
8
8
  b = @widget.abi_unpack Boolean, int
9
- @widget.page.upon! @widget do
9
+ @widget.send! do
10
10
  b.(b, @widget)
11
11
  end
12
12
  end
@@ -6,7 +6,7 @@ module Tgui
6
6
  def block_caller &b
7
7
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |ptr|
8
8
  c = @widget.abi_unpack Color, ptr
9
- @widget.page.upon! @widget do
9
+ @widget.send! do
10
10
  b.(c, @widget)
11
11
  end
12
12
  end
@@ -6,7 +6,7 @@ module Tgui
6
6
  def block_caller &b
7
7
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_FLOAT]) do |float|
8
8
  f = @widget.abi_unpack_float float
9
- @widget.page.upon! @widget do
9
+ @widget.send! do
10
10
  b.(f, @widget)
11
11
  end
12
12
  end
@@ -6,7 +6,7 @@ module Tgui
6
6
  def block_caller &b
7
7
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |int|
8
8
  i = @widget.abi_unpack_integer int
9
- @widget.page.upon! @widget do
9
+ @widget.send! do
10
10
  b.(i, @widget)
11
11
  end
12
12
  end
@@ -5,7 +5,7 @@ module Tgui
5
5
 
6
6
  def block_caller &b
7
7
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |pointer|
8
- @widget.page.upon! @widget do
8
+ @widget.send! do
9
9
  b.(pointer, @widget)
10
10
  end
11
11
  end
@@ -5,7 +5,7 @@ module Tgui
5
5
 
6
6
  def block_caller &b
7
7
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_FLOAT, Fiddle::TYPE_FLOAT]) do |min, max|
8
- @widget.page.upon! @widget do
8
+ @widget.send! do
9
9
  b.(min..max, @widget)
10
10
  end
11
11
  end
@@ -7,7 +7,7 @@ module Tgui
7
7
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT, Fiddle::TYPE_INT]) do |show_effect_type, shown|
8
8
  effect_type = @widget.abi_unpack ShowEffectType, show_effect_type
9
9
  shown = @widget.abi_unpack Boolean, shown
10
- @widget.page.upon! @widget do
10
+ @widget.send! do
11
11
  b.(effect_type, shown, @widget)
12
12
  end
13
13
  end
@@ -6,7 +6,7 @@ module Tgui
6
6
  def block_caller &b
7
7
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |str|
8
8
  string = @widget.abi_unpack_string(str)
9
- @widget.page.upon! @widget do
9
+ @widget.send! do
10
10
  b.(string, @widget)
11
11
  end
12
12
  end
@@ -6,7 +6,7 @@ module Tgui
6
6
  def block_caller &b
7
7
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT]) do |uint|
8
8
  int = @widget.abi_unpack Integer, uint
9
- @widget.page.upon! @widget do
9
+ @widget.send! do
10
10
  b.(int, @widget)
11
11
  end
12
12
  end
@@ -5,7 +5,7 @@ module Tgui
5
5
  def block_caller &b
6
6
  Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |ptr|
7
7
  vector = @widget.abi_unpack Vector2f, ptr
8
- @widget.page.upon! @widget do
8
+ @widget.send! do
9
9
  b.(vector, @widget)
10
10
  end
11
11
  end
@@ -75,7 +75,7 @@ module Tgui
75
75
  objects.insert index, object
76
76
  tab_panel = TabPanel.new self, index, panel_pointer
77
77
  tab_panel.page = page
78
- upon! tab_panel, **na, &b
78
+ tab_panel.send! **na, &b
79
79
  end
80
80
 
81
81
  def [](object)
@@ -93,7 +93,7 @@ module Tgui
93
93
  def! :tabs do |**na, &b|
94
94
  tabs = Tabs.new self, _abi_get_tabs
95
95
  tabs.page = page
96
- upon! tabs, **na, &b
96
+ tabs.send! **na, &b
97
97
  end
98
98
 
99
99
  def remove object
@@ -61,7 +61,7 @@ module Tgui
61
61
  end
62
62
  objects.insert index, object
63
63
  tab = Tab.new self, index
64
- upon! tab, **na, &b
64
+ tab.send! **na, &b
65
65
  end
66
66
 
67
67
  def remove object
@@ -101,7 +101,7 @@ module Tgui
101
101
 
102
102
  def block_caller &b
103
103
  Fiddle::Closure::BlockCaller.new(0, [0]) do
104
- @widget.page.upon! @widget do
104
+ @widget.send! do
105
105
  b.(@widget.selected, @widget)
106
106
  end
107
107
  end
@@ -70,7 +70,7 @@ module Tgui
70
70
  self.next_renderer_id = renderer_id = next_renderer_id.next
71
71
  attribute = type.new(seed, renderer_id)
72
72
  attributes[attribute.name] = attribute
73
- upon! attribute, **na, &b
73
+ attribute.send! **na, &b
74
74
  self_commit
75
75
  renderer_id
76
76
  end
@@ -1,4 +1,5 @@
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
@@ -32,42 +33,14 @@ module Tgui
32
33
  path << @widget.abi_unpack_string(str)
33
34
  end
34
35
  SignalItemHierarchy.fetch_path vector, loader
35
- object_path = @widget.self_tree.path_str_to_object path
36
- @widget.page.upon! @widget do
36
+ object_path = @widget.self_tree.path_str_to_object *path
37
+ @widget.send! do
37
38
  b.(object_path.last, object_path, @widget)
38
39
  end
39
40
  end
40
41
  end
41
42
  end
42
43
 
43
- class TreeNode
44
- def initialize object
45
- @object = object
46
- @nodes = {}
47
- end
48
-
49
- attr_accessor :object
50
- attr :nodes
51
-
52
- def [](*path, grow: false)
53
- if grow
54
- path.reduce(self){|node, str| node.nodes[str] ||= TreeNode.new nil }
55
- else
56
- path.reduce(self){|node, str| node&.nodes[str] }
57
- end
58
- end
59
-
60
- def cut *path, last
61
- self[*path].nodes.delete last
62
- end
63
-
64
- def path_str_to_object path
65
- objects = []
66
- path.reduce(self){|node, str| node[str].tap{|n| objects << n.object } }
67
- objects
68
- end
69
- end
70
-
71
44
  api_attr :self_tree do
72
45
  TreeNode.new nil
73
46
  end
@@ -121,6 +94,14 @@ module Tgui
121
94
  Item.new host, [*path, *path_end]
122
95
  end
123
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
+
124
105
  def object
125
106
  path.last
126
107
  end
@@ -192,15 +173,22 @@ module Tgui
192
173
  new_path = [*path, object]
193
174
  self_path_block new_path do
194
175
  _abi_add_item _1, _2, abi_pack_boolean(true)
195
- self_tree[*_3, grow: true].object = object
176
+ self_tree[*new_path, grow: true].text = _3
196
177
  end
197
178
  item = Item.new self, new_path
198
- 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
199
187
  end
200
188
 
201
189
  def self_path_block path, &b
202
190
  path = path.map(&format)
203
- b.(*abi_pack(String.., *path), path)
191
+ b.(*abi_pack(String.., *path), path.last)
204
192
  end
205
193
  end
206
194
  end