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.
- checksums.yaml +4 -4
- data/ext/dll/tgui.dll +0 -0
- data/ext/so/libtgui.so +0 -0
- data/lib/white_gold/abi/enum.rb +1 -1
- data/lib/white_gold/abi/extern_object.rb +6 -1
- data/lib/white_gold/abi/interface/interface.rb +3 -7
- data/lib/white_gold/abi/unpacker.rb +4 -2
- data/lib/white_gold/convention/bang_def.rb +14 -0
- data/lib/white_gold/convention/bang_nest.rb +12 -2
- data/lib/white_gold/convention/bang_nested_caller.rb +65 -32
- data/lib/white_gold/convention/container_widgets.rb +61 -96
- data/lib/white_gold/convention/page.rb +28 -4
- data/lib/white_gold/convention/theme/boolean_attribute.rb +11 -9
- data/lib/white_gold/convention/theme/color_attribute.rb +11 -9
- data/lib/white_gold/convention/theme/float_attribute.rb +11 -9
- data/lib/white_gold/convention/theme/outline_attribute.rb +11 -9
- data/lib/white_gold/convention/theme/text_styles_attribute.rb +16 -9
- data/lib/white_gold/convention/theme/texture_attribute.rb +14 -12
- data/lib/white_gold/convention/theme/theme_attributed.rb +1 -1
- data/lib/white_gold/convention/theme/theme_component.rb +1 -1
- data/lib/white_gold/convention/theme_attributes.rb +6 -2
- data/lib/white_gold/convention/tree_node.rb +43 -0
- data/lib/white_gold/convention/widget/keyboard_control.rb +30 -0
- data/lib/white_gold/convention/widget_class_aliases.rb +24 -0
- data/lib/white_gold/convention/widget_like.rb +0 -6
- data/lib/white_gold/dsl/backend_gui.rb +1 -0
- data/lib/white_gold/dsl/canvas.rb +40 -0
- data/lib/white_gold/dsl/chat_box.rb +1 -1
- data/lib/white_gold/dsl/child_window.rb +1 -1
- data/lib/white_gold/dsl/color.rb +9 -4
- data/lib/white_gold/dsl/combo_box.rb +2 -2
- data/lib/white_gold/dsl/container.rb +18 -12
- data/lib/white_gold/dsl/custom_widget.rb +28 -0
- data/lib/white_gold/dsl/font.rb +5 -1
- data/lib/white_gold/dsl/grid.rb +37 -13
- data/lib/white_gold/dsl/gui.rb +10 -1
- data/lib/white_gold/dsl/label.rb +3 -0
- data/lib/white_gold/dsl/list_box.rb +7 -11
- data/lib/white_gold/dsl/list_view.rb +6 -6
- data/lib/white_gold/dsl/menu_bar.rb +5 -48
- data/lib/white_gold/dsl/message_box.rb +3 -3
- data/lib/white_gold/dsl/panel.rb +8 -0
- data/lib/white_gold/dsl/panel_list_box.rb +12 -3
- data/lib/white_gold/dsl/radio_button.rb +15 -2
- data/lib/white_gold/dsl/scrollable_panel.rb +7 -0
- data/lib/white_gold/dsl/sfml/circle_shape.rb +11 -0
- data/lib/white_gold/dsl/sfml/convex_shape.rb +19 -0
- data/lib/white_gold/dsl/sfml/rectangle_shape.rb +11 -0
- data/lib/white_gold/dsl/sfml/shape.rb +19 -0
- data/lib/white_gold/dsl/sfml/text.rb +26 -0
- data/lib/white_gold/dsl/signal/global_signal.rb +1 -1
- data/lib/white_gold/dsl/signal/signal.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_animation_type.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_bool.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_color.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_float.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_int.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_pointer.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_range.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_show_effect.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_string.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_u_int.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_vector2f.rb +1 -1
- data/lib/white_gold/dsl/tab_container.rb +2 -2
- data/lib/white_gold/dsl/tabs.rb +2 -2
- data/lib/white_gold/dsl/theme.rb +2 -2
- data/lib/white_gold/dsl/toggle_button.rb +3 -0
- data/lib/white_gold/dsl/tree_view.rb +21 -33
- data/lib/white_gold/dsl/widget.rb +112 -49
- data/lib/white_gold/dsl/window.rb +7 -0
- data/lib/white_gold/generated/tgui-abi-loader.gf.rb +273 -48
- data/lib/white_gold/library/theme/light.rb +8 -1
- data/lib/white_gold/master.rb +43 -42
- data/lib/white_gold/path/array.path.rb +16 -0
- data/lib/white_gold/tgui-abi.rb +48 -38
- data/lib/white_gold/version.rb +3 -0
- data/lib/white_gold.rb +31 -28
- metadata +20 -6
- data/lib/white_gold/abi/reducer.rb +0 -12
@@ -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.
|
33
|
+
@menu_bar.host! 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.
|
60
|
+
@widget.host! 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
|
-
|
82
|
+
scope! item, **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
|
-
|
168
|
+
scope! item, **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.
|
40
|
+
host.host! 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
|
-
|
55
|
+
scope! button, **na, &b
|
56
56
|
end
|
57
57
|
|
58
58
|
def [](object)
|
@@ -73,7 +73,7 @@ module Tgui
|
|
73
73
|
self_buttons[text] = button
|
74
74
|
text
|
75
75
|
end
|
76
|
-
self_change_buttons names
|
76
|
+
self_change_buttons *names
|
77
77
|
end
|
78
78
|
|
79
79
|
def buttons
|
data/lib/white_gold/dsl/panel.rb
CHANGED
@@ -4,6 +4,14 @@ require_relative 'signal/signal_vector2f'
|
|
4
4
|
module Tgui
|
5
5
|
class Panel < Group
|
6
6
|
|
7
|
+
class Theme < Group::Theme
|
8
|
+
theme_attr :borders, :outline
|
9
|
+
theme_attr :border_color, :color
|
10
|
+
theme_attr :background_color, :color
|
11
|
+
theme_attr :texture_background, :texture
|
12
|
+
theme_attr :rounded_border_radius, :float
|
13
|
+
end
|
14
|
+
|
7
15
|
abi_signal :on_mouse_press, SignalVector2f
|
8
16
|
abi_signal :on_mouse_release, SignalVector2f
|
9
17
|
abi_signal :on_click, SignalVector2f
|
@@ -5,10 +5,19 @@ require_relative 'signal/signal_panel_list_box_item'
|
|
5
5
|
module Tgui
|
6
6
|
class PanelListBox < ScrollablePanel
|
7
7
|
|
8
|
+
class Theme < ScrollablePanel::Theme
|
9
|
+
|
10
|
+
theme_attr :items_background_color, :color
|
11
|
+
theme_attr :items_background_color_hover, :color
|
12
|
+
theme_attr :selected_items_background_color, :color
|
13
|
+
theme_attr :selected_items_background_color_hover, :color
|
14
|
+
|
15
|
+
end
|
16
|
+
|
8
17
|
class SignalPanelListBoxItem < Tgui::SignalPanelListBoxItem
|
9
18
|
def block_caller &b
|
10
19
|
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |id|
|
11
|
-
@widget.
|
20
|
+
@widget.host! do
|
12
21
|
b.(@widget.self_objects.key(@widget.abi_unpack_string(id)), @widget)
|
13
22
|
end
|
14
23
|
end
|
@@ -22,7 +31,7 @@ module Tgui
|
|
22
31
|
panel = Panel.new pointer: _abi_add_item(id, abi_pack_integer(index))
|
23
32
|
panel.page = page
|
24
33
|
self_objects[object] = id
|
25
|
-
|
34
|
+
scope! panel, **na, &b
|
26
35
|
end
|
27
36
|
|
28
37
|
def [](object)
|
@@ -71,7 +80,7 @@ module Tgui
|
|
71
80
|
def! :template do |**na, &b|
|
72
81
|
panel = Panel.new(pointer: _abi_get_panel_template)
|
73
82
|
panel.page = page
|
74
|
-
|
83
|
+
scope! panel, **na, &b
|
75
84
|
end
|
76
85
|
|
77
86
|
# internal
|
@@ -28,6 +28,10 @@ module Tgui
|
|
28
28
|
theme_attr :text_style, :text_styles
|
29
29
|
theme_attr :text_style_checked, :text_styles
|
30
30
|
end
|
31
|
+
|
32
|
+
api_attr :format do
|
33
|
+
:to_s
|
34
|
+
end
|
31
35
|
|
32
36
|
abi_attr :checked?
|
33
37
|
abi_attr :text, String
|
@@ -35,9 +39,18 @@ module Tgui
|
|
35
39
|
abi_signal :on_check, Signal
|
36
40
|
abi_signal :on_uncheck, Signal
|
37
41
|
abi_signal :on_change, SignalBoolean
|
38
|
-
|
42
|
+
|
43
|
+
def object
|
44
|
+
self_object
|
45
|
+
end
|
46
|
+
|
47
|
+
def object=(object)
|
48
|
+
self.self_object = object
|
49
|
+
self.text = object.then(&format)
|
50
|
+
end
|
51
|
+
|
52
|
+
api_attr :self_object do
|
39
53
|
nil
|
40
54
|
end
|
41
|
-
|
42
55
|
end
|
43
56
|
end
|
@@ -5,6 +5,13 @@ require_relative 'scrollbar'
|
|
5
5
|
module Tgui
|
6
6
|
class ScrollablePanel < Panel
|
7
7
|
|
8
|
+
class Theme < Panel::Theme
|
9
|
+
|
10
|
+
theme_comp :scrollbar, Tgui::Scrollbar::Theme
|
11
|
+
theme_attr :scrollbar_width, :float
|
12
|
+
|
13
|
+
end
|
14
|
+
|
8
15
|
abi_attr :content_size, Vector2f
|
9
16
|
abi_def :content_offset, :get_, nil => Vector2f
|
10
17
|
abi_def :scrollbar_width, :get_, nil => Float
|
@@ -0,0 +1,19 @@
|
|
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
|
+
|
15
|
+
def self.finalizer pointer
|
16
|
+
_abi_delete pointer
|
17
|
+
end
|
18
|
+
end
|
19
|
+
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,26 @@
|
|
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
|
+
|
22
|
+
def self.finalizer pointer
|
23
|
+
_abi_delete pointer
|
24
|
+
end
|
25
|
+
end
|
26
|
+
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.
|
10
|
+
@widget.host! do
|
11
11
|
b.(effect_type, shown, @widget)
|
12
12
|
end
|
13
13
|
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
|
-
|
78
|
+
scope! tab_panel, **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
|
-
|
96
|
+
scope! tabs, **na, &b
|
97
97
|
end
|
98
98
|
|
99
99
|
def remove object
|
data/lib/white_gold/dsl/tabs.rb
CHANGED
@@ -61,7 +61,7 @@ module Tgui
|
|
61
61
|
end
|
62
62
|
objects.insert index, object
|
63
63
|
tab = Tab.new self, index
|
64
|
-
|
64
|
+
scope! tab, **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.
|
104
|
+
@widget.host! do
|
105
105
|
b.(@widget.selected, @widget)
|
106
106
|
end
|
107
107
|
end
|
data/lib/white_gold/dsl/theme.rb
CHANGED
@@ -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
|
-
|
73
|
+
attribute.host! **na, &b
|
74
74
|
self_commit
|
75
75
|
renderer_id
|
76
76
|
end
|
@@ -97,7 +97,7 @@ module Tgui
|
|
97
97
|
_abi_load @source if @source
|
98
98
|
end
|
99
99
|
custom_rendered&.each do |widget, renderer|
|
100
|
-
widget.
|
100
|
+
widget.self_set_renderer renderer
|
101
101
|
end
|
102
102
|
end
|
103
103
|
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.
|
36
|
+
object_path = @widget.self_tree.path_str_to_object *path
|
37
|
+
@widget.host! 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[*
|
176
|
+
self_tree[*new_path, grow: true].text = _3
|
196
177
|
end
|
197
178
|
item = Item.new self, new_path
|
198
|
-
|
179
|
+
scope! item, **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
|