white_gold 0.0.3 → 0.1.0
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 +2 -2
- data/lib/white_gold/abi/interface/interface.rb +3 -7
- data/lib/white_gold/convention/container_widgets.rb +47 -87
- data/lib/white_gold/convention/page.rb +18 -8
- 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 +14 -12
- data/lib/white_gold/convention/theme/texture_attribute.rb +14 -12
- data/lib/white_gold/convention/theme/theme_attributed.rb +2 -2
- data/lib/white_gold/convention/theme/theme_component.rb +2 -2
- data/lib/white_gold/convention/theme_attributes.rb +6 -2
- 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 +1 -4
- data/lib/white_gold/dsl/backend_gui.rb +5 -4
- data/lib/white_gold/dsl/canvas.rb +5 -5
- data/lib/white_gold/dsl/chat_box.rb +1 -1
- data/lib/white_gold/dsl/child_window.rb +2 -2
- data/lib/white_gold/dsl/color.rb +39 -29
- data/lib/white_gold/dsl/combo_box.rb +2 -2
- data/lib/white_gold/dsl/container.rb +1 -1
- data/lib/white_gold/dsl/custom_widget.rb +28 -0
- data/lib/white_gold/dsl/edit_box.rb +1 -2
- data/lib/white_gold/dsl/font.rb +4 -0
- data/lib/white_gold/dsl/grid.rb +34 -10
- data/lib/white_gold/dsl/gui.rb +14 -1
- data/lib/white_gold/dsl/label.rb +3 -2
- data/lib/white_gold/dsl/list_box.rb +2 -2
- data/lib/white_gold/dsl/list_view.rb +12 -12
- data/lib/white_gold/dsl/menu_bar.rb +4 -4
- data/lib/white_gold/dsl/message_box.rb +3 -3
- data/lib/white_gold/dsl/outline.rb +4 -0
- 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/picture.rb +0 -2
- data/lib/white_gold/dsl/radio_button.rb +16 -3
- data/lib/white_gold/dsl/scrollable_panel.rb +7 -0
- data/lib/white_gold/dsl/sfml/circle_shape.rb +4 -0
- data/lib/white_gold/dsl/sfml/convex_shape.rb +4 -0
- data/lib/white_gold/dsl/sfml/rectangle_shape.rb +4 -0
- data/lib/white_gold/dsl/sfml/shape.rb +3 -2
- data/lib/white_gold/dsl/sfml/text.rb +7 -1
- 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 +4 -4
- 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/texture.rb +6 -1
- data/lib/white_gold/dsl/theme.rb +3 -4
- data/lib/white_gold/dsl/toggle_button.rb +3 -0
- data/lib/white_gold/dsl/tree_view.rb +2 -2
- data/lib/white_gold/dsl/util.rb +3 -1
- data/lib/white_gold/dsl/widget.rb +59 -27
- data/lib/white_gold/dsl/window.rb +12 -2
- data/lib/white_gold/generated/tgui-abi-loader.gf.rb +106 -15
- data/lib/white_gold/library/theme/light.rb +8 -1
- data/lib/white_gold/master.rb +77 -44
- data/lib/white_gold/path/array.path.rb +9 -0
- data/lib/white_gold/path/object.path.rb +0 -6
- data/lib/white_gold/tgui-abi.rb +36 -31
- data/lib/white_gold/version.rb +1 -1
- data/lib/white_gold.rb +8 -6
- metadata +37 -9
- data/lib/white_gold/abi/reducer.rb +0 -12
- data/lib/white_gold/convention/bang_def.rb +0 -5
- data/lib/white_gold/convention/bang_nest.rb +0 -26
- data/lib/white_gold/convention/bang_nested_caller.rb +0 -48
- data/lib/white_gold/convention/proc_method_factory.rb +0 -22
@@ -1,9 +1,10 @@
|
|
1
1
|
require_relative '../../abi/extern_object'
|
2
|
-
require_relative '
|
2
|
+
require_relative '../color'
|
3
|
+
require_relative '../texture'
|
3
4
|
|
4
5
|
module Tgui
|
5
6
|
class Shape < ExternObject
|
6
|
-
include
|
7
|
+
include Extree
|
7
8
|
|
8
9
|
abi_attr :texture, Texture
|
9
10
|
abi_attr :radius, Float
|
@@ -1,8 +1,10 @@
|
|
1
1
|
require_relative '../../abi/extern_object'
|
2
|
+
require_relative '../font'
|
3
|
+
require_relative '../color'
|
2
4
|
|
3
5
|
module Tgui
|
4
6
|
class Text < ExternObject
|
5
|
-
include
|
7
|
+
include Extree
|
6
8
|
|
7
9
|
abi_attr :string, String
|
8
10
|
abi_attr :font, Font
|
@@ -18,5 +20,9 @@ module Tgui
|
|
18
20
|
abi_attr :rotation, Float
|
19
21
|
abi_attr :scale, Vector2f
|
20
22
|
abi_attr :origin, Vector2f
|
23
|
+
|
24
|
+
def self.finalizer pointer
|
25
|
+
_abi_delete pointer
|
26
|
+
end
|
21
27
|
end
|
22
28
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require_relative 'signal'
|
2
2
|
|
3
3
|
module Tgui
|
4
|
-
class
|
4
|
+
class SignalBool < Signal
|
5
5
|
|
6
6
|
def block_caller &b
|
7
7
|
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT]) do |int|
|
8
|
-
|
9
|
-
@widget.
|
10
|
-
b.(
|
8
|
+
bool = @widget.abi_unpack Boolean, int
|
9
|
+
@widget.host! do
|
10
|
+
b.(bool, @widget)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
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
|
@@ -3,6 +3,11 @@ require_relative 'color'
|
|
3
3
|
|
4
4
|
module Tgui
|
5
5
|
class Texture < ExternObject
|
6
|
+
|
7
|
+
def self.finalizer pointer
|
8
|
+
_abi_delete pointer
|
9
|
+
end
|
10
|
+
|
6
11
|
def self.from *arg
|
7
12
|
case arg.size
|
8
13
|
when 1
|
@@ -33,7 +38,7 @@ module Tgui
|
|
33
38
|
end
|
34
39
|
|
35
40
|
abi_def :id, :get_, nil => String
|
36
|
-
abi_def :image_size, :get_, nil =>
|
41
|
+
abi_def :image_size, :get_, nil => Vector2i
|
37
42
|
abi_def :part_rect, :get_, nil => UIntRect
|
38
43
|
abi_def :smooth?, nil => Boolean
|
39
44
|
abi_attr :color, Color
|
data/lib/white_gold/dsl/theme.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
require 'tempfile'
|
2
2
|
require_relative '../abi/extern_object'
|
3
|
-
require_relative '../convention/bang_nest'
|
4
3
|
require_relative '../convention/theme/theme_attributed'
|
5
4
|
|
6
5
|
module Tgui
|
7
6
|
class Theme < ExternObject
|
8
|
-
include
|
7
|
+
include Extree
|
9
8
|
extend ThemeAttributed
|
10
9
|
|
11
10
|
class << self
|
@@ -70,7 +69,7 @@ module Tgui
|
|
70
69
|
self.next_renderer_id = renderer_id = next_renderer_id.next
|
71
70
|
attribute = type.new(seed, renderer_id)
|
72
71
|
attributes[attribute.name] = attribute
|
73
|
-
attribute.
|
72
|
+
attribute.host! **na, &b
|
74
73
|
self_commit
|
75
74
|
renderer_id
|
76
75
|
end
|
@@ -97,7 +96,7 @@ module Tgui
|
|
97
96
|
_abi_load @source if @source
|
98
97
|
end
|
99
98
|
custom_rendered&.each do |widget, renderer|
|
100
|
-
widget.
|
99
|
+
widget.self_set_renderer renderer
|
101
100
|
end
|
102
101
|
end
|
103
102
|
end
|
@@ -34,7 +34,7 @@ module Tgui
|
|
34
34
|
end
|
35
35
|
SignalItemHierarchy.fetch_path vector, loader
|
36
36
|
object_path = @widget.self_tree.path_str_to_object *path
|
37
|
-
@widget.
|
37
|
+
@widget.host! do
|
38
38
|
b.(object_path.last, object_path, @widget)
|
39
39
|
end
|
40
40
|
end
|
@@ -176,7 +176,7 @@ module Tgui
|
|
176
176
|
self_tree[*new_path, grow: true].text = _3
|
177
177
|
end
|
178
178
|
item = Item.new self, new_path
|
179
|
-
|
179
|
+
scope! item, **na, &b
|
180
180
|
end
|
181
181
|
|
182
182
|
def self_change_item path, text, **na, &b
|
data/lib/white_gold/dsl/util.rb
CHANGED
@@ -3,7 +3,9 @@ require_relative '../abi/extern_object'
|
|
3
3
|
module Tgui
|
4
4
|
class Util < ExternObject
|
5
5
|
|
6
|
-
abi_static :
|
6
|
+
abi_static :delete_vector2f
|
7
|
+
abi_static :delete_vector2i
|
8
|
+
abi_static :delete_u_int_rect
|
7
9
|
|
8
10
|
def self.expand_path path, exist: true
|
9
11
|
if !path.match?(/^\w:\//) # TODO UNIX
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require_relative '../abi/extern_object'
|
2
|
-
require_relative '../convention/bang_nest'
|
3
2
|
require_relative '../convention/unit'
|
4
3
|
require_relative '../convention/widget_like'
|
5
4
|
require_relative '../convention/api_child'
|
@@ -15,8 +14,7 @@ require_relative 'tool_tip'
|
|
15
14
|
|
16
15
|
module Tgui
|
17
16
|
class Widget < ExternObject
|
18
|
-
include
|
19
|
-
extend BangDef
|
17
|
+
include Extree
|
20
18
|
|
21
19
|
class Theme < ThemeComponent
|
22
20
|
|
@@ -29,6 +27,10 @@ module Tgui
|
|
29
27
|
|
30
28
|
attr_accessor :page
|
31
29
|
|
30
|
+
def window
|
31
|
+
page.window
|
32
|
+
end
|
33
|
+
|
32
34
|
abi_attr :text_size, Integer
|
33
35
|
abi_attr :enabled?
|
34
36
|
|
@@ -36,34 +38,43 @@ module Tgui
|
|
36
38
|
self.enabled = !disabled
|
37
39
|
end
|
38
40
|
|
39
|
-
def! :
|
41
|
+
def! :theme do |seed = VOID, **na, &b|
|
40
42
|
seed = page.custom_renderers[self] if seed == VOID
|
41
43
|
if !na.empty? || b
|
42
|
-
seed
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
if seed.is_a?(String) && seed =~ /_\d+/
|
45
|
+
page.theme.attributes[seed].host! **na, &b
|
46
|
+
page.theme.self_commit
|
47
|
+
else
|
48
|
+
seed = page.theme.custom! self.class::Theme, seed, **na, &b
|
49
|
+
page.custom_renderers[self] = seed
|
50
|
+
end
|
51
|
+
elsif seed
|
47
52
|
page.custom_renderers[self] = seed
|
48
53
|
end
|
49
|
-
|
54
|
+
self_set_renderer seed
|
50
55
|
end
|
51
56
|
|
52
|
-
def
|
53
|
-
case
|
57
|
+
def theme=(theme)
|
58
|
+
case theme
|
54
59
|
when Hash
|
55
|
-
|
60
|
+
send! :theme, **theme
|
56
61
|
when Proc
|
57
|
-
|
62
|
+
send! :theme, &theme
|
58
63
|
else
|
59
|
-
page.custom_renderers[self] =
|
60
|
-
|
64
|
+
page.custom_renderers[self] = theme
|
65
|
+
self_set_renderer theme
|
61
66
|
end
|
62
67
|
end
|
63
68
|
|
64
|
-
abi_def :
|
69
|
+
abi_def :self_set_renderer, :set_renderer, proc.self_theme_name => nil
|
65
70
|
|
66
71
|
abi_attr :focused?
|
72
|
+
def! :focus do |focus = VOID|
|
73
|
+
self.focused = focus
|
74
|
+
end
|
75
|
+
def! :unfocus do
|
76
|
+
self.focused = false
|
77
|
+
end
|
67
78
|
abi_attr :focusable?
|
68
79
|
abi_signal :on_position_change, Tgui::SignalVector2f
|
69
80
|
abi_signal :on_size_change, Tgui::SignalVector2f
|
@@ -99,7 +110,7 @@ module Tgui
|
|
99
110
|
if block_given?
|
100
111
|
tooltip = ToolTip.new
|
101
112
|
tooltip.page = page
|
102
|
-
|
113
|
+
scope! tooltip, **na, &b
|
103
114
|
_abi_set_tool_tip tooltip.widget if tooltip.widget
|
104
115
|
else
|
105
116
|
widget = _abi_get_tool_tip
|
@@ -113,12 +124,13 @@ module Tgui
|
|
113
124
|
abi_attr :mouse_cursor, CursorType
|
114
125
|
abi_def :draggable?, :is_widget_, nil => Boolean
|
115
126
|
abi_def :mouse_down?, nil => Boolean
|
127
|
+
abi_attr :ignore_mouse_events?, Boolean, :get_
|
116
128
|
|
117
129
|
abi_enum "ShowEffectType", :fade, :scale, :slide_to_right, :slide_to_left, :slide_to_bottom,
|
118
130
|
:slide_to_top, slide_from_left: :slide_to_right, slide_from_right: :slide_to_left,
|
119
131
|
slide_from_top: :slide_to_bottom, slide_from_bottom: :slide_to_top
|
120
132
|
|
121
|
-
def visible=(a)
|
133
|
+
def visible=(a = true)
|
122
134
|
if a.is_a? Array
|
123
135
|
if a[0]
|
124
136
|
show *a[1..]
|
@@ -198,14 +210,14 @@ module Tgui
|
|
198
210
|
end
|
199
211
|
|
200
212
|
def! :navigation do |**na, &b|
|
201
|
-
|
213
|
+
scope! navigation, **na, &b
|
202
214
|
end
|
203
215
|
|
204
216
|
def navigation
|
205
217
|
Navigation.new self, nil
|
206
218
|
end
|
207
219
|
|
208
|
-
abi_enum "KeyCode",
|
220
|
+
abi_enum "KeyCode", :a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k,
|
209
221
|
:l, :m, :n, :o, :p, :q, :r, :s, :t, :u, :v, :w, :x, :y, :z,
|
210
222
|
:num0, :num1, :num2, :num3, :num4, :num5, :num6, :num7, :num8, :num9,
|
211
223
|
:escape, :left_control, :left_shift, :left_alt, :left_system,
|
@@ -258,10 +270,30 @@ module Tgui
|
|
258
270
|
|
259
271
|
def! :robot do |**na, &b|
|
260
272
|
robot = Robot.new self
|
261
|
-
|
273
|
+
scope! robot, **na, &b if block_given?
|
262
274
|
robot
|
263
275
|
end
|
264
276
|
|
277
|
+
def! :messagebox do |*a, **na, &b|
|
278
|
+
page.send! :messagebox, *a, **na, &b
|
279
|
+
end
|
280
|
+
|
281
|
+
def! :msg do |text, **buttons|
|
282
|
+
buttons["OK"] = nil if buttons.empty?
|
283
|
+
buttons = buttons.map do |k, v|
|
284
|
+
procedure = proc do |o, b, w|
|
285
|
+
v&.call
|
286
|
+
w.close true
|
287
|
+
end
|
288
|
+
[k, procedure]
|
289
|
+
end
|
290
|
+
page.send! :messagebox, text:, position: :center, label_alignment: :center, buttons: buttons
|
291
|
+
end
|
292
|
+
|
293
|
+
def! :page do |*a, **na, &b|
|
294
|
+
page.host! *a, **na, &b
|
295
|
+
end
|
296
|
+
|
265
297
|
def self.api_attr name, &init
|
266
298
|
define_method "#{name}=" do |value|
|
267
299
|
@@data_storage[Widget.get_unshared(@pointer).to_i][name] = value
|
@@ -302,14 +334,14 @@ module Tgui
|
|
302
334
|
class << self
|
303
335
|
include ApiChild
|
304
336
|
|
305
|
-
def
|
306
|
-
case
|
337
|
+
def self_theme_name widget, theme = nil
|
338
|
+
case theme
|
307
339
|
when Module
|
308
|
-
|
340
|
+
theme.name.split("::").last
|
309
341
|
when nil, false, VOID
|
310
|
-
|
342
|
+
self_theme_name widget, widget.class
|
311
343
|
else
|
312
|
-
|
344
|
+
theme.to_s
|
313
345
|
end
|
314
346
|
end
|
315
347
|
|
@@ -1,9 +1,12 @@
|
|
1
1
|
require_relative '../abi/extern_object'
|
2
|
-
require_relative '../convention/bang_nest'
|
3
2
|
|
4
3
|
module Tgui
|
5
4
|
class Window < ExternObject
|
6
|
-
include
|
5
|
+
include Extree
|
6
|
+
|
7
|
+
def self.finalizer(pointer)
|
8
|
+
_abi_delete pointer
|
9
|
+
end
|
7
10
|
|
8
11
|
abi_def :close
|
9
12
|
def! :close do
|
@@ -11,6 +14,13 @@ module Tgui
|
|
11
14
|
end
|
12
15
|
abi_def :open?
|
13
16
|
abi_def :title=, String => nil
|
17
|
+
abi_attr :size, Vector2i
|
18
|
+
abi_attr :position, Vector2i
|
19
|
+
abi_def :has_focus?, nil => Boolean
|
20
|
+
abi_def :request_focus
|
21
|
+
def! :request_focus do
|
22
|
+
request_focus
|
23
|
+
end
|
14
24
|
|
15
25
|
end
|
16
26
|
end
|