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.
- checksums.yaml +4 -4
- data/ext/dll/tgui.dll +0 -0
- data/ext/so/libtgui.so +0 -0
- data/lib/white_gold/abi/extern_object.rb +6 -1
- data/lib/white_gold/abi/unpacker.rb +4 -2
- data/lib/white_gold/convention/bang_nest.rb +12 -2
- data/lib/white_gold/convention/bang_nested_caller.rb +34 -34
- data/lib/white_gold/convention/container_widgets.rb +29 -24
- data/lib/white_gold/convention/page.rb +20 -2
- data/lib/white_gold/convention/theme/text_styles_attribute.rb +7 -2
- data/lib/white_gold/convention/theme/theme_attributed.rb +1 -1
- data/lib/white_gold/convention/tree_node.rb +43 -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 +5 -2
- data/lib/white_gold/dsl/combo_box.rb +2 -2
- data/lib/white_gold/dsl/container.rb +17 -11
- data/lib/white_gold/dsl/font.rb +5 -1
- data/lib/white_gold/dsl/grid.rb +3 -3
- 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 +2 -2
- data/lib/white_gold/dsl/panel_list_box.rb +3 -3
- data/lib/white_gold/dsl/sfml/circle_shape.rb +7 -0
- data/lib/white_gold/dsl/sfml/convex_shape.rb +15 -0
- data/lib/white_gold/dsl/sfml/rectangle_shape.rb +7 -0
- data/lib/white_gold/dsl/sfml/shape.rb +19 -0
- data/lib/white_gold/dsl/sfml/text.rb +22 -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 +1 -1
- data/lib/white_gold/dsl/tree_view.rb +21 -33
- data/lib/white_gold/dsl/widget.rb +71 -38
- data/lib/white_gold/generated/tgui-abi-loader.gf.rb +197 -47
- data/lib/white_gold/master.rb +21 -40
- data/lib/white_gold/tgui-abi.rb +16 -16
- data/lib/white_gold/version.rb +3 -0
- data/lib/white_gold.rb +29 -28
- metadata +16 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6727469d73967f049141a5c7b128bfb88b5c18cb128ce7b00417e7f889648138
|
4
|
+
data.tar.gz: f30fed9fdbfc915eb0fb70fded0aabe9593991037af91253427d59b22f053913
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9373c37d6ccbbb45b973b55c92dd924ec9bc9511ee4a5b1e244859f956f9133d767b30874255535b3fd715d396fb5b96787076014fcfdd5354005973631ac7e
|
7
|
+
data.tar.gz: 240acb40c4ef8d00788e704c40eff66c93535b20d57c3973c9a04e50c18e7dae3c3fc808a1f63308700eb11efe4458dcc970033b385f922e38d72ea53e9c88f0
|
data/ext/dll/tgui.dll
CHANGED
Binary file
|
data/ext/so/libtgui.so
CHANGED
Binary file
|
@@ -17,6 +17,7 @@ class ExternObject
|
|
17
17
|
end
|
18
18
|
ObjectSpace.define_finalizer(self, cl.proc.finalizer(pointer))
|
19
19
|
end
|
20
|
+
initialized
|
20
21
|
end
|
21
22
|
|
22
23
|
def initialized
|
@@ -102,7 +103,11 @@ class ExternObject
|
|
102
103
|
getter = "#{original_name}#{name}".delete_suffix("?").to_sym
|
103
104
|
setter = "set_#{name}".delete_suffix("?").to_sym
|
104
105
|
else
|
105
|
-
|
106
|
+
if name.end_with? "?"
|
107
|
+
getter = "is_#{original_name}".to_sym
|
108
|
+
else
|
109
|
+
getter = "get_#{original_name}".to_sym
|
110
|
+
end
|
106
111
|
setter = "set_#{original_name}".to_sym
|
107
112
|
end
|
108
113
|
else
|
@@ -2,15 +2,17 @@ require_relative 'interface/interface'
|
|
2
2
|
|
3
3
|
module Unpacker
|
4
4
|
def abi_unpacker base, &body
|
5
|
+
method_name = abi_unpacker_method_name(base)
|
5
6
|
if block_given?
|
6
|
-
define_method
|
7
|
+
define_method method_name, &body
|
7
8
|
elsif base.is_a? Module
|
8
|
-
define_method
|
9
|
+
define_method method_name do |o|
|
9
10
|
base.new pointer: o
|
10
11
|
end
|
11
12
|
else
|
12
13
|
raise "..."
|
13
14
|
end
|
15
|
+
method_name
|
14
16
|
end
|
15
17
|
|
16
18
|
def abi_unpacker_method_name base
|
@@ -4,13 +4,23 @@ module BangNest
|
|
4
4
|
include BangNestedCaller
|
5
5
|
|
6
6
|
def respond_to? name
|
7
|
-
super || bang_respond_to?(name)
|
7
|
+
super || (name.end_with?("!") && bang_respond_to?(name[...-1]))
|
8
8
|
end
|
9
9
|
|
10
10
|
def method_missing name, *a, **na, &b
|
11
11
|
if name.end_with? "!"
|
12
|
-
bang_method_missing name, *a, **na, &b
|
12
|
+
bang_method_missing name[...-1], *a, **na, &b
|
13
13
|
else super
|
14
14
|
end
|
15
15
|
end
|
16
|
+
|
17
|
+
def send! *a, **na, &b
|
18
|
+
a.each do |k|
|
19
|
+
send("#{k}=", true)
|
20
|
+
end
|
21
|
+
na.each do |k, v|
|
22
|
+
send("#{k}=", v)
|
23
|
+
end
|
24
|
+
super(&b)
|
25
|
+
end
|
16
26
|
end
|
@@ -1,48 +1,48 @@
|
|
1
1
|
module BangNestedCaller
|
2
|
-
def bang_respond_to? name
|
3
|
-
name.end_with?("!") && (respond_to?("#{name[...-1]}=") || respond_to?("api_bang_#{name[...-1]}") || (@bang_target && @bang_target.respond_to?(name)))
|
4
|
-
end
|
5
|
-
|
6
|
-
def bang_method_missing name, *a, **na, &b
|
7
|
-
return @bang_target.send(name, *a, **na, &b) if @bang_target && @bang_target.respond_to?(name)
|
8
2
|
|
9
|
-
|
10
|
-
return send(api_name, *a, **na, &b) if respond_to? api_name
|
11
|
-
|
12
|
-
setter = "#{name[...-1]}=".to_sym
|
13
|
-
if respond_to? setter
|
14
|
-
return send(setter, a) if !a.empty?
|
15
|
-
return send(setter, na) if !na.empty?
|
16
|
-
return send(setter, b) if block_given?
|
17
|
-
return send(setter)
|
18
|
-
end
|
19
|
-
|
20
|
-
no_method_error = NoMethodError.new("undefined bang nested method `#{name}` for #{bang_object_stack.map(&:class).join("/")}")
|
21
|
-
raise no_method_error
|
22
|
-
end
|
3
|
+
@@bang_stack = []
|
23
4
|
|
24
5
|
def self!
|
25
|
-
|
6
|
+
@@bang_stack.last
|
26
7
|
end
|
27
8
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
stack << @bang_target if @bang_target
|
32
|
-
stack += @bang_target.bang_object_stack(false) if @bang_target&.respond_to? :bang_object_stack
|
33
|
-
return stack
|
9
|
+
def bang_respond_to? name
|
10
|
+
top = @@bang_stack.include?(self) ? @@bang_stack.last : self
|
11
|
+
top.respond_to?("#{name}=") || top.respond_to?("api_bang_#{name}")
|
34
12
|
end
|
35
13
|
|
14
|
+
def bang_send name, *a, **na, &b
|
15
|
+
top = @@bang_stack.last
|
16
|
+
api_bang_name = "api_bang_#{name}".to_sym
|
17
|
+
return top.send(api_bang_name, *a, **na, &b) if top.respond_to? api_bang_name
|
18
|
+
setter = "#{name}=".to_sym
|
19
|
+
if top.respond_to? setter
|
20
|
+
return top.send(setter, a) if !a.empty?
|
21
|
+
return top.send(setter, na) if !na.empty?
|
22
|
+
return top.send(setter, b) if block_given?
|
23
|
+
return top.send(setter)
|
24
|
+
end
|
25
|
+
no_method_error = NoMethodError.new("bang method missing `#{name}!` for #{top.class}")
|
26
|
+
raise no_method_error
|
27
|
+
end
|
36
28
|
|
37
|
-
def
|
38
|
-
|
39
|
-
|
29
|
+
def bang_method_missing name, *a, **na, &b
|
30
|
+
if @@bang_stack.include?(self)
|
31
|
+
bang_send name, *a, **na, &b
|
32
|
+
else
|
33
|
+
@@bang_stack.push self
|
34
|
+
result = bang_send name, *a, **na, &b
|
35
|
+
@@bang_stack.pop
|
36
|
+
result
|
40
37
|
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def send! &b
|
41
41
|
if b
|
42
|
-
|
43
|
-
b.call
|
44
|
-
|
42
|
+
@@bang_stack.push self
|
43
|
+
b.call self
|
44
|
+
@@bang_stack.pop
|
45
45
|
end
|
46
|
-
|
46
|
+
self
|
47
47
|
end
|
48
48
|
end
|
@@ -2,9 +2,10 @@ require_relative '../convention/api_child'
|
|
2
2
|
|
3
3
|
module Tgui
|
4
4
|
|
5
|
-
|
5
|
+
ORDINARY_WIDGETS = {
|
6
6
|
bitmap_button: Tgui::BitmapButton,
|
7
7
|
button: Tgui::Button,
|
8
|
+
canvas: Tgui::Canvas,
|
8
9
|
chatbox: Tgui::ChatBox,
|
9
10
|
checkbox: Tgui::CheckBox,
|
10
11
|
child_window: Tgui::ChildWindow,
|
@@ -25,9 +26,7 @@ module Tgui
|
|
25
26
|
panel: Tgui::Panel,
|
26
27
|
panel_listbox: Tgui::PanelListBox,
|
27
28
|
panel_tabs: Tgui::TabContainer,
|
28
|
-
picture: false,
|
29
29
|
progressbar: Tgui::ProgressBar,
|
30
|
-
radio: false,
|
31
30
|
radio_button: Tgui::RadioButton,
|
32
31
|
radio_button_group: Tgui::RadioButtonGroup,
|
33
32
|
range_slider: Tgui::RangeSlider,
|
@@ -44,10 +43,18 @@ module Tgui
|
|
44
43
|
vela: Tgui::VerticalLayout,
|
45
44
|
}.freeze
|
46
45
|
|
46
|
+
UNORDINARY_WIDGETS = {
|
47
|
+
picture: Tgui::Picture
|
48
|
+
}
|
49
|
+
|
50
|
+
def self.widget_set
|
51
|
+
{}.merge ORDINARY_WIDGETS, UNORDINARY_WIDGETS
|
52
|
+
end
|
53
|
+
|
47
54
|
module WidgetOwner
|
48
55
|
extend BangDef
|
49
56
|
|
50
|
-
def
|
57
|
+
def self_common_widget_nest widget, *keys, id: nil, **na, &b
|
51
58
|
club_params = {}
|
52
59
|
Enumerator.new do |e|
|
53
60
|
cl = widget.class
|
@@ -72,18 +79,18 @@ module Tgui
|
|
72
79
|
club_params.merge! club.params
|
73
80
|
end
|
74
81
|
|
75
|
-
|
82
|
+
widget.send! **club_params, **na, &b
|
76
83
|
end
|
77
84
|
|
78
|
-
def
|
85
|
+
def self_child_methods
|
79
86
|
## TO OPTIMIZE
|
80
87
|
methods.filter{ _1.start_with? ApiChild::API_CHILD_PREFIX }
|
81
88
|
end
|
82
89
|
|
83
|
-
def
|
90
|
+
def self_equip_child_widget widget
|
84
91
|
widget.page = page
|
85
92
|
parent = self
|
86
|
-
|
93
|
+
self_child_methods.each do |method|
|
87
94
|
widget.define_singleton_method method[ApiChild::API_CHILD_PREFIX.length..] do |*a|
|
88
95
|
parent.send(method, self, *a)
|
89
96
|
end
|
@@ -91,10 +98,10 @@ module Tgui
|
|
91
98
|
widget
|
92
99
|
end
|
93
100
|
|
94
|
-
|
101
|
+
ORDINARY_WIDGETS.each do |m, c|
|
95
102
|
if c
|
96
103
|
def! m do |*a, **na, &b|
|
97
|
-
|
104
|
+
self_common_widget_equip self_equip_child_widget(c.new), *a, **na, &b
|
98
105
|
end
|
99
106
|
end
|
100
107
|
end
|
@@ -110,16 +117,16 @@ module Tgui
|
|
110
117
|
)
|
111
118
|
transparent = na[:transparent] || false
|
112
119
|
pic = Tgui::Picture.new texture, transparent
|
113
|
-
|
114
|
-
|
120
|
+
self_equip_child_widget pic
|
121
|
+
self_common_widget_equip pic, *a, **na.except(:url, :part_rect, :smooth, :transparent), &b
|
115
122
|
end
|
116
123
|
|
117
124
|
def! :radio do |object, *a, **na, &b|
|
118
125
|
radio = RadioButton.new
|
119
|
-
|
126
|
+
self_equip_child_widget radio
|
120
127
|
radio.object = object
|
121
128
|
na[:text] ||= object.to_s
|
122
|
-
|
129
|
+
self_common_widget_equip radio, *a, **na, &b
|
123
130
|
end
|
124
131
|
|
125
132
|
def! :msg do |text, **buttons|
|
@@ -146,22 +153,20 @@ module Tgui
|
|
146
153
|
|
147
154
|
@@auto_widget_id = "@/"
|
148
155
|
|
149
|
-
def
|
156
|
+
def self_common_widget_equip widget, *keys, **na, &b
|
150
157
|
@@auto_widget_id = id = @@auto_widget_id.next
|
151
158
|
add widget, id
|
152
|
-
|
159
|
+
self_common_widget_nest widget, *keys, id:, **na, &b
|
153
160
|
end
|
154
161
|
|
155
162
|
end
|
156
163
|
|
157
164
|
class TabContainer
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
raise NoMethodError.new("Method `#{m}` should be called on Panel from TabContainer, not TabContainer itself")
|
162
|
-
end
|
163
|
-
end
|
165
|
+
|
166
|
+
def add widget, name
|
167
|
+
raise NoMethodError.new("Widget can't be added to TabContainer directly. Add it to TabContainer panel instead.")
|
164
168
|
end
|
169
|
+
|
165
170
|
end
|
166
171
|
|
167
172
|
class ToolTip
|
@@ -169,9 +174,9 @@ module Tgui
|
|
169
174
|
|
170
175
|
attr :widget
|
171
176
|
|
172
|
-
def
|
177
|
+
def self_common_widget_equip widget, *keys, **na, &b
|
173
178
|
@widget = widget
|
174
|
-
|
179
|
+
self_common_widget_nest widget, *keys, **na, &b
|
175
180
|
end
|
176
181
|
end
|
177
182
|
|
@@ -22,6 +22,24 @@ class Page < Tgui::Group
|
|
22
22
|
def build
|
23
23
|
end
|
24
24
|
|
25
|
+
def respond_to? name
|
26
|
+
super ||
|
27
|
+
(name.end_with?("!") && bang_respond_to?(name[...-1])) ||
|
28
|
+
@tgui.gui.respond_to?(name) ||
|
29
|
+
@tgui.window.respond_to?(name)
|
30
|
+
end
|
31
|
+
|
32
|
+
def method_missing name, *a, **na, &b
|
33
|
+
if name.end_with? "!"
|
34
|
+
bang_method_missing name[...-1], *a, **na, &b
|
35
|
+
elsif @tgui.gui.respond_to? name
|
36
|
+
@tgui.gui.send name, *a, **na, &b
|
37
|
+
elsif @tgui.window.respond_to? name
|
38
|
+
@tgui.window.send name, *a, **na, &b
|
39
|
+
else super
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
25
43
|
def disconnect
|
26
44
|
@global_callbacks.each do |id, signal|
|
27
45
|
signal.disconnect id
|
@@ -79,11 +97,11 @@ class Page < Tgui::Group
|
|
79
97
|
theme = self.theme
|
80
98
|
if seed
|
81
99
|
theme.reset_attributes
|
82
|
-
|
100
|
+
theme.send! do
|
83
101
|
load Tgui::Theme.loadpath(seed)
|
84
102
|
end
|
85
103
|
end
|
86
|
-
|
104
|
+
theme.send! **na, &b
|
87
105
|
theme.self_commit @custom_renderers
|
88
106
|
end
|
89
107
|
|
@@ -1,13 +1,18 @@
|
|
1
|
+
require_relative '../../abi/extern_object'
|
2
|
+
|
1
3
|
class TextStylesAttribute
|
2
4
|
def initialize name, value
|
3
5
|
@name = name
|
4
|
-
@value = value
|
6
|
+
@value = Array(value).map do |style|
|
7
|
+
raise "Invalid style #{style}" if !ExternObject::TextStyles[style]
|
8
|
+
style.to_s.upcase
|
9
|
+
end.join("|")
|
5
10
|
end
|
6
11
|
|
7
12
|
attr :name
|
8
13
|
attr :value
|
9
14
|
|
10
15
|
def to_theme
|
11
|
-
"#{name} = #{value
|
16
|
+
"#{name} = #{value};"
|
12
17
|
end
|
13
18
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class TreeNode
|
2
|
+
def initialize text
|
3
|
+
@text = text
|
4
|
+
@nodes = {}
|
5
|
+
end
|
6
|
+
|
7
|
+
attr_accessor :text
|
8
|
+
attr :nodes
|
9
|
+
|
10
|
+
def [](*path, grow: false)
|
11
|
+
if grow
|
12
|
+
path.reduce(self){|node, o| node.nodes[o] ||= TreeNode.new(nil) }
|
13
|
+
else
|
14
|
+
path.reduce(self){|node, o| node&.nodes[o] }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def cut *path, last
|
19
|
+
self[*path].nodes.delete last
|
20
|
+
end
|
21
|
+
|
22
|
+
def cut_branches *path
|
23
|
+
self[*path].nodes = {}
|
24
|
+
end
|
25
|
+
|
26
|
+
def path_str_to_object *path
|
27
|
+
object_path = []
|
28
|
+
path.reduce self do |node, str|
|
29
|
+
o, node = *node.nodes.find{|k, v| v.text == str }
|
30
|
+
object_path << o
|
31
|
+
node
|
32
|
+
end
|
33
|
+
object_path
|
34
|
+
end
|
35
|
+
|
36
|
+
def path_object_to_str *path
|
37
|
+
str_path = []
|
38
|
+
path.reduce self do |node, o|
|
39
|
+
node[o].tap{ str_path << _1.text }
|
40
|
+
end
|
41
|
+
str_path
|
42
|
+
end
|
43
|
+
end
|
@@ -31,6 +31,7 @@ module Tgui
|
|
31
31
|
abi_def :pop_mouse_cursor, :restore_override_mouse_cursor
|
32
32
|
abi_def :px_to_crd, :map_pixel_to_coords, [Integer, Integer] => [Float, Float]
|
33
33
|
abi_def :crd_to_px, :map_coords_to_pixel, [Float, Float] => [Float, Float]
|
34
|
+
abi_attr :keyboard_navigation?, Boolean, :keyboard_navigation_enabled
|
34
35
|
abi_signal :on_view_change, ViewSignal
|
35
36
|
|
36
37
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require_relative 'clickable_widget'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class Canvas < ClickableWidget
|
5
|
+
|
6
|
+
class Draw < WidgetLike
|
7
|
+
|
8
|
+
def! :fill do |*color|
|
9
|
+
host._abi_clear host.abi_pack(Color, *color)
|
10
|
+
end
|
11
|
+
|
12
|
+
def! :rectangle do |**na, &b|
|
13
|
+
shape = RectangleShape.new.send! **na, &b
|
14
|
+
host._abi_draw shape
|
15
|
+
end
|
16
|
+
|
17
|
+
def! :circle do |**na, &b|
|
18
|
+
shape = CircleShape.new.send! **na, &b
|
19
|
+
host._abi_draw shape
|
20
|
+
end
|
21
|
+
|
22
|
+
def! :convex do |**na, &b|
|
23
|
+
shape = ConvexShape.new.send! **na, &b
|
24
|
+
host._abi_draw shape
|
25
|
+
end
|
26
|
+
|
27
|
+
def! :text do |**na, &b|
|
28
|
+
text = Text.new.send! **na, &b
|
29
|
+
host._abi_draw text
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
def! :draw do |&b|
|
35
|
+
Draw.new(self, nil).send! &b
|
36
|
+
_abi_display
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
data/lib/white_gold/dsl/color.rb
CHANGED
@@ -21,6 +21,9 @@ module Tgui
|
|
21
21
|
return arg
|
22
22
|
when String
|
23
23
|
r, g, b, a = *tones_from_string(arg)
|
24
|
+
when :random
|
25
|
+
r, g, b = 5.times.map{ rand 255 }
|
26
|
+
a = 255
|
24
27
|
when Symbol
|
25
28
|
r, g, b, a = *PREDEFINED_COLORS[arg]
|
26
29
|
when Numeric
|
@@ -61,12 +64,12 @@ module Tgui
|
|
61
64
|
Color.new *Color.hsv_to_rgb(h, s, (v - shadow).clamp(0, 255)), alpha
|
62
65
|
end
|
63
66
|
|
64
|
-
def
|
67
|
+
def to_arr
|
65
68
|
[red, green, blue, alpha]
|
66
69
|
end
|
67
70
|
|
68
71
|
def to_s
|
69
|
-
"##{
|
72
|
+
"##{to_arr.map{ _1.to_s(16).ljust(2, '0') }.join}"
|
70
73
|
end
|
71
74
|
|
72
75
|
def inspect
|
@@ -37,7 +37,7 @@ module Tgui
|
|
37
37
|
def block_caller &b
|
38
38
|
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP]) do |str1, str2|
|
39
39
|
id = @widget.abi_unpack_string(str2)
|
40
|
-
@widget.
|
40
|
+
@widget.send! do
|
41
41
|
b.(@widget.self_get_object_by_id(id), @widget)
|
42
42
|
end
|
43
43
|
end
|
@@ -99,7 +99,7 @@ module Tgui
|
|
99
99
|
_abi_add_item abi_pack_string(text), abi_pack_string(id)
|
100
100
|
item = Item.new self, id
|
101
101
|
self_objects[id] = object
|
102
|
-
|
102
|
+
item.send! **na, &b
|
103
103
|
end
|
104
104
|
|
105
105
|
def selected
|
@@ -19,7 +19,7 @@ module Tgui
|
|
19
19
|
abi_def :remove, Widget => nil
|
20
20
|
|
21
21
|
def move_front widget, ceil = false
|
22
|
-
widget =
|
22
|
+
widget = abi_pack(Widget, widget)
|
23
23
|
if ceil
|
24
24
|
_abi_move_widget_to_front widget
|
25
25
|
else
|
@@ -28,7 +28,7 @@ module Tgui
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def move_back widget, floor = false
|
31
|
-
widget =
|
31
|
+
widget = abi_pack(Widget, widget)
|
32
32
|
if floor
|
33
33
|
_abi_move_widget_to_back widget
|
34
34
|
else
|
@@ -37,13 +37,21 @@ module Tgui
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def move_at index, widget
|
40
|
-
_abi_set_widget_index
|
40
|
+
_abi_set_widget_index abi_pack(Widget, widget), abi_pack_integer(index)
|
41
41
|
end
|
42
42
|
|
43
43
|
abi_def :index, :get_widget_, Widget => Integer
|
44
44
|
abi_def :focused_child, :get_, nil => Widget
|
45
45
|
abi_def :focused_leaf, :get_, nil => Widget
|
46
|
-
|
46
|
+
|
47
|
+
def leaf_at_position x, y
|
48
|
+
abi_unpack(Widget, _abi_get_widget_at_pos(api_pack_float(x), abi_pack_float(y), abi_pack_boolean(true)))
|
49
|
+
end
|
50
|
+
|
51
|
+
def child_at_position x, y
|
52
|
+
abi_unpack(Widget, _abi_get_widget_at_pos(api_pack_float(x), abi_pack_float(y), abi_pack_boolean(false)))
|
53
|
+
end
|
54
|
+
|
47
55
|
abi_def :focus_next, :focus_next_widget
|
48
56
|
abi_def :focus_previous, :focus_previous_widget
|
49
57
|
|
@@ -66,21 +74,19 @@ module Tgui
|
|
66
74
|
|
67
75
|
# internal
|
68
76
|
|
69
|
-
|
77
|
+
|
78
|
+
abi_packer Widget do |o|
|
79
|
+
o = o.first if o.is_a? Array
|
70
80
|
case o
|
71
81
|
when Symbol
|
72
82
|
self[o]
|
73
83
|
when Widget
|
74
84
|
o
|
75
85
|
else
|
76
|
-
raise "Unable to make Widget from #{o}"
|
86
|
+
raise "Unable to make Widget from #{o}(#{o.class})"
|
77
87
|
end
|
78
88
|
end
|
79
|
-
|
80
|
-
def abi_unpack_widget o
|
81
|
-
self_cast_up o
|
82
|
-
end
|
83
|
-
|
89
|
+
|
84
90
|
def self_get_widget_name a
|
85
91
|
case a
|
86
92
|
when Widget
|
data/lib/white_gold/dsl/font.rb
CHANGED
data/lib/white_gold/dsl/grid.rb
CHANGED
@@ -84,9 +84,9 @@ module Tgui
|
|
84
84
|
|
85
85
|
def add widget, id
|
86
86
|
super
|
87
|
-
_abi_set_widget_cell
|
88
|
-
_abi_set_widget_alignment
|
89
|
-
_abi_set_widget_padding
|
87
|
+
_abi_set_widget_cell abi_pack(Widget, widget), *cell
|
88
|
+
_abi_set_widget_alignment abi_pack(Widget, widget), abi_pack(Alignment, alignment) if alignment
|
89
|
+
_abi_set_widget_padding abi_pack(Widget, widget), abi_pack(Outline, *padding) if padding
|
90
90
|
if direction == :column
|
91
91
|
next_column false
|
92
92
|
else
|