white_gold 0.0.3 → 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/interface/interface.rb +3 -7
- data/lib/white_gold/convention/bang_def.rb +14 -0
- data/lib/white_gold/convention/bang_nest.rb +1 -1
- data/lib/white_gold/convention/bang_nested_caller.rb +55 -22
- data/lib/white_gold/convention/container_widgets.rb +46 -86
- data/lib/white_gold/convention/page.rb +10 -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 +14 -12
- 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/widget/keyboard_control.rb +30 -0
- data/lib/white_gold/convention/widget_class_aliases.rb +24 -0
- 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 +1 -1
- data/lib/white_gold/dsl/color.rb +4 -2
- 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/grid.rb +34 -10
- 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 +2 -2
- data/lib/white_gold/dsl/list_view.rb +6 -6
- 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/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 +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/text.rb +4 -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 +2 -2
- data/lib/white_gold/dsl/widget.rb +53 -23
- data/lib/white_gold/dsl/window.rb +7 -0
- data/lib/white_gold/generated/tgui-abi-loader.gf.rb +76 -1
- data/lib/white_gold/library/theme/light.rb +8 -1
- data/lib/white_gold/master.rb +30 -10
- data/lib/white_gold/path/array.path.rb +16 -0
- data/lib/white_gold/tgui-abi.rb +32 -22
- data/lib/white_gold/version.rb +1 -1
- data/lib/white_gold.rb +3 -1
- metadata +6 -3
- data/lib/white_gold/abi/reducer.rb +0 -12
@@ -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
|
-
attribute.
|
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
|
@@ -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
|
@@ -29,6 +29,10 @@ module Tgui
|
|
29
29
|
|
30
30
|
attr_accessor :page
|
31
31
|
|
32
|
+
def window
|
33
|
+
page.window
|
34
|
+
end
|
35
|
+
|
32
36
|
abi_attr :text_size, Integer
|
33
37
|
abi_attr :enabled?
|
34
38
|
|
@@ -36,34 +40,40 @@ module Tgui
|
|
36
40
|
self.enabled = !disabled
|
37
41
|
end
|
38
42
|
|
39
|
-
def! :
|
43
|
+
def! :theme do |seed = VOID, **na, &b|
|
40
44
|
seed = page.custom_renderers[self] if seed == VOID
|
41
45
|
if !na.empty? || b
|
42
|
-
seed
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
46
|
+
if seed.is_a?(String) && seed =~ /_\d+/
|
47
|
+
page.theme.attributes[seed].host! **na, &b
|
48
|
+
page.theme.self_commit
|
49
|
+
else
|
50
|
+
seed = page.theme.custom! self.class::Theme, seed, **na, &b
|
51
|
+
page.custom_renderers[self] = seed
|
52
|
+
end
|
53
|
+
elsif seed
|
47
54
|
page.custom_renderers[self] = seed
|
48
55
|
end
|
49
|
-
|
56
|
+
self_set_renderer seed
|
50
57
|
end
|
51
58
|
|
52
|
-
def
|
53
|
-
case
|
59
|
+
def theme=(theme)
|
60
|
+
case theme
|
54
61
|
when Hash
|
55
|
-
|
62
|
+
api_bang_theme **theme
|
56
63
|
when Proc
|
57
|
-
|
64
|
+
api_bang_theme &theme
|
58
65
|
else
|
59
|
-
page.custom_renderers[self] =
|
60
|
-
|
66
|
+
page.custom_renderers[self] = theme
|
67
|
+
self_set_renderer theme
|
61
68
|
end
|
62
69
|
end
|
63
70
|
|
64
|
-
abi_def :
|
71
|
+
abi_def :self_set_renderer, :set_renderer, proc.self_theme_name => nil
|
65
72
|
|
66
73
|
abi_attr :focused?
|
74
|
+
def! :focus do |focus = VOID|
|
75
|
+
self.focused = focus
|
76
|
+
end
|
67
77
|
abi_attr :focusable?
|
68
78
|
abi_signal :on_position_change, Tgui::SignalVector2f
|
69
79
|
abi_signal :on_size_change, Tgui::SignalVector2f
|
@@ -99,7 +109,7 @@ module Tgui
|
|
99
109
|
if block_given?
|
100
110
|
tooltip = ToolTip.new
|
101
111
|
tooltip.page = page
|
102
|
-
|
112
|
+
scope! tooltip, **na, &b
|
103
113
|
_abi_set_tool_tip tooltip.widget if tooltip.widget
|
104
114
|
else
|
105
115
|
widget = _abi_get_tool_tip
|
@@ -198,14 +208,14 @@ module Tgui
|
|
198
208
|
end
|
199
209
|
|
200
210
|
def! :navigation do |**na, &b|
|
201
|
-
|
211
|
+
scope! navigation, **na, &b
|
202
212
|
end
|
203
213
|
|
204
214
|
def navigation
|
205
215
|
Navigation.new self, nil
|
206
216
|
end
|
207
217
|
|
208
|
-
abi_enum "KeyCode",
|
218
|
+
abi_enum "KeyCode", :a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k,
|
209
219
|
:l, :m, :n, :o, :p, :q, :r, :s, :t, :u, :v, :w, :x, :y, :z,
|
210
220
|
:num0, :num1, :num2, :num3, :num4, :num5, :num6, :num7, :num8, :num9,
|
211
221
|
:escape, :left_control, :left_shift, :left_alt, :left_system,
|
@@ -258,10 +268,30 @@ module Tgui
|
|
258
268
|
|
259
269
|
def! :robot do |**na, &b|
|
260
270
|
robot = Robot.new self
|
261
|
-
|
271
|
+
scope! robot, **na, &b if block_given?
|
262
272
|
robot
|
263
273
|
end
|
264
274
|
|
275
|
+
def! :messagebox do |*a, **na, &b|
|
276
|
+
page.api_bang_messagebox *a, **na, &b
|
277
|
+
end
|
278
|
+
|
279
|
+
def! :msg do |text, **buttons|
|
280
|
+
buttons["OK"] = nil if buttons.empty?
|
281
|
+
buttons = buttons.map do |k, v|
|
282
|
+
procedure = proc do |o, b, w|
|
283
|
+
v&.call
|
284
|
+
w.close true
|
285
|
+
end
|
286
|
+
[k, procedure]
|
287
|
+
end
|
288
|
+
page.api_bang_messagebox text:, position: :center, label_alignment: :center, buttons: buttons
|
289
|
+
end
|
290
|
+
|
291
|
+
def! :page do |*a, **na, &b|
|
292
|
+
page.host! *a, **na, &b
|
293
|
+
end
|
294
|
+
|
265
295
|
def self.api_attr name, &init
|
266
296
|
define_method "#{name}=" do |value|
|
267
297
|
@@data_storage[Widget.get_unshared(@pointer).to_i][name] = value
|
@@ -302,14 +332,14 @@ module Tgui
|
|
302
332
|
class << self
|
303
333
|
include ApiChild
|
304
334
|
|
305
|
-
def
|
306
|
-
case
|
335
|
+
def self_theme_name widget, theme = nil
|
336
|
+
case theme
|
307
337
|
when Module
|
308
|
-
|
338
|
+
theme.name.split("::").last
|
309
339
|
when nil, false, VOID
|
310
|
-
|
340
|
+
self_theme_name widget, widget.class
|
311
341
|
else
|
312
|
-
|
342
|
+
theme.to_s
|
313
343
|
end
|
314
344
|
end
|
315
345
|
|
@@ -11,6 +11,13 @@ module Tgui
|
|
11
11
|
end
|
12
12
|
abi_def :open?
|
13
13
|
abi_def :title=, String => nil
|
14
|
+
abi_attr :size, Vector2u
|
15
|
+
abi_attr :position, Vector2u
|
16
|
+
abi_def :has_focus?, nil => Boolean
|
17
|
+
abi_def :request_focus
|
18
|
+
def! :request_focus do
|
19
|
+
request_focus
|
20
|
+
end
|
14
21
|
|
15
22
|
end
|
16
23
|
end
|
@@ -36,10 +36,16 @@ module Tgui
|
|
36
36
|
extern 'int ABI_SignalTypedIntBoolPtr_connect(SignalTypedIntBoolPtr* self, void(*f)(int, bool*))'
|
37
37
|
extern 'int ABI_SignalTypedSizeT_connect(SignalTypedSizeT* self, void(*f)(int))'
|
38
38
|
extern 'int ABI_SignalPanelListBoxItem_connect(SignalPanelListBoxItem* self, void(*f)(const char32_t*))'
|
39
|
-
extern 'void* ABI_Window_new()'
|
39
|
+
extern 'void* ABI_Window_new(int width, int height, int style)'
|
40
40
|
extern 'void ABI_Window_close(sf::WindowBase* self)'
|
41
41
|
extern 'int ABI_Window_isOpen(sf::WindowBase* self)'
|
42
42
|
extern 'void ABI_Window_setTitle(sf::WindowBase* self, char* title)'
|
43
|
+
extern 'void ABI_Window_setSize(sf::WindowBase* self, int width, int height)'
|
44
|
+
extern 'void* ABI_Window_getSize(sf::WindowBase* self)'
|
45
|
+
extern 'void ABI_Window_setPosition(sf::WindowBase* self, int x, int y)'
|
46
|
+
extern 'void* ABI_Window_getPosition(sf::WindowBase* self)'
|
47
|
+
extern 'void ABI_Window_requestFocus(sf::WindowBase* self)'
|
48
|
+
extern 'int ABI_Window_hasFocus(sf::WindowBase* self)'
|
43
49
|
extern 'void ABI_BackendGui_setTextSize(BackendGui* self, int textSize)'
|
44
50
|
extern 'int ABI_BackendGui_getTextSize(BackendGui* self)'
|
45
51
|
extern 'void ABI_BackendGui_setAbsoluteView(BackendGui* self, int x, int y, int w, int h)'
|
@@ -76,6 +82,7 @@ module Tgui
|
|
76
82
|
extern 'void ABI_Gui_setClearColor(Gui* self, Color* color)'
|
77
83
|
extern 'void ABI_Gui_setClipboard(Gui* self, char* text)'
|
78
84
|
extern 'void* ABI_Gui_getClipboard(Gui* self)'
|
85
|
+
extern 'void* ABI_Gui_getScreenSize(Gui* self)'
|
79
86
|
extern 'void ABI_STATIC_Theme_setDefault(char* theme)'
|
80
87
|
extern 'void* ABI_STATIC_Theme_getDefault()'
|
81
88
|
extern 'void ABI_STATIC_Theme_finalizer(std::shared_ptr<Theme>* pointer)'
|
@@ -825,16 +832,20 @@ module Tgui
|
|
825
832
|
extern 'void* ABI_Shape_getOrigin(sf::Shape* self)'
|
826
833
|
extern 'int ABI_CircleShape_getPointCount(sf::CircleShape* self)'
|
827
834
|
extern 'void* ABI_CircleShape_new()'
|
835
|
+
extern 'void ABI_STATIC_CircleShape_delete(sf::CircleShape* self)'
|
828
836
|
extern 'void ABI_CircleShape_setRadius(sf::CircleShape* self, float radius)'
|
829
837
|
extern 'float ABI_CircleShape_getRadius(sf::CircleShape* self)'
|
830
838
|
extern 'void ABI_CircleShape_setPointCount(sf::CircleShape* self, int pointCount)'
|
831
839
|
extern 'void* ABI_RectangleShape_new()'
|
840
|
+
extern 'void ABI_STATIC_RectangleShape_delete(sf::RectangleShape* self)'
|
832
841
|
extern 'void ABI_RectangleShape_setSize(sf::RectangleShape* self, float width, float height)'
|
833
842
|
extern 'void* ABI_RectangleShape_getSize(sf::RectangleShape* self)'
|
834
843
|
extern 'void* ABI_ConvexShape_new()'
|
844
|
+
extern 'void ABI_STATIC_ConvexShape_delete(sf::ConvexShape* self)'
|
835
845
|
extern 'void ABI_ConvexShape_setPoint(sf::ConvexShape* self, int index, float x, float y)'
|
836
846
|
extern 'void ABI_ConvexShape_setPointCount(sf::ConvexShape* self, int pointCount)'
|
837
847
|
extern 'void* ABI_Text_new()'
|
848
|
+
extern 'void ABI_STATIC_Text_delete(sf::Text* self)'
|
838
849
|
extern 'void ABI_Text_setString(sf::Text* self, char* string)'
|
839
850
|
extern 'void* ABI_Text_getString(sf::Text* self)'
|
840
851
|
extern 'void ABI_Text_setFont(sf::Text* self, Font* font)'
|
@@ -861,6 +872,31 @@ module Tgui
|
|
861
872
|
extern 'void ABI_Text_setOrigin(sf::Text* self, float x, float y)'
|
862
873
|
extern 'void* ABI_Text_getOrigin(sf::Text* self)'
|
863
874
|
extern 'void* ABI_Text_findCharacterPos(sf::Text* self, int index)'
|
875
|
+
extern 'void* ABI_CustomWidget_new()'
|
876
|
+
extern 'void ABI_CustomWidget_implPositionChanged(CustomWidgetForBindings::Ptr* self, void(*f)(float x, float y))'
|
877
|
+
extern 'void ABI_CustomWidget_implSizeChanged(CustomWidgetForBindings::Ptr* self, void(*f)(float width, float height))'
|
878
|
+
extern 'void ABI_CustomWidget_implVisibleChanged(CustomWidgetForBindings::Ptr* self, void(*f)(int visible))'
|
879
|
+
extern 'void ABI_CustomWidget_implEnableChanged(CustomWidgetForBindings::Ptr* self, void(*f)(int enable))'
|
880
|
+
extern 'void ABI_CustomWidget_implFocusChanged(CustomWidgetForBindings::Ptr* self, void(*f)(int focus))'
|
881
|
+
extern 'void ABI_CustomWidget_implCanGainFocus(CustomWidgetForBindings::Ptr* self, int(*f)(void))'
|
882
|
+
extern 'void ABI_CustomWidget_implGetFullSize(CustomWidgetForBindings::Ptr* self, float(*f)(void))'
|
883
|
+
extern 'void ABI_CustomWidget_implGetWidgetOffset(CustomWidgetForBindings::Ptr* self, float(*f)(void))'
|
884
|
+
extern 'void ABI_CustomWidget_implUpdateTimeFunction(CustomWidgetForBindings::Ptr* self, int(*f)(int time))'
|
885
|
+
extern 'void ABI_CustomWidget_implMouseOnWidget(CustomWidgetForBindings::Ptr* self, int(*f)(float x, float y))'
|
886
|
+
extern 'void ABI_CustomWidget_implLeftMousePressed(CustomWidgetForBindings::Ptr* self, int(*f)(float x, float y))'
|
887
|
+
extern 'void ABI_CustomWidget_implLeftMouseReleased(CustomWidgetForBindings::Ptr* self, void(*f)(float x, float y))'
|
888
|
+
extern 'void ABI_CustomWidget_implRightMousePressed(CustomWidgetForBindings::Ptr* self, void(*f)(float x, float y))'
|
889
|
+
extern 'void ABI_CustomWidget_implRightMouseReleased(CustomWidgetForBindings::Ptr* self, void(*f)(float x, float y))'
|
890
|
+
extern 'void ABI_CustomWidget_implMouseMoved(CustomWidgetForBindings::Ptr* self, void(*f)(float x, float y))'
|
891
|
+
extern 'void ABI_CustomWidget_implKeyPressed(CustomWidgetForBindings::Ptr* self, void(*f)(int key, int alt, int control, int shift, int system))'
|
892
|
+
extern 'void ABI_CustomWidget_implTextEntered(CustomWidgetForBindings::Ptr* self, void(*f)(int character))'
|
893
|
+
extern 'void ABI_CustomWidget_implScrolled(CustomWidgetForBindings::Ptr* self, int(*f)(float delta, float x, float y, int touch))'
|
894
|
+
extern 'void ABI_CustomWidget_implMouseNoLongerOnWidget(CustomWidgetForBindings::Ptr* self, void(*f)(void))'
|
895
|
+
extern 'void ABI_CustomWidget_implLeftMouseButtonNoLongerDown(CustomWidgetForBindings::Ptr* self, void(*f)(void))'
|
896
|
+
extern 'void ABI_CustomWidget_implMouseEnteredWidget(CustomWidgetForBindings::Ptr* self, void(*f)(void))'
|
897
|
+
extern 'void ABI_CustomWidget_implMouseLeftWidget(CustomWidgetForBindings::Ptr* self, void(*f)(void))'
|
898
|
+
extern 'void ABI_CustomWidget_implRendererChanged(CustomWidgetForBindings::Ptr* self, int(*f)(const char32_t* property))'
|
899
|
+
extern 'void ABI_CustomWidget_implDrawFunction(CustomWidgetForBindings::Ptr* self, void(*f)(BackendRenderTarget* target, RenderStates* states))'
|
864
900
|
end
|
865
901
|
|
866
902
|
class Util
|
@@ -961,6 +997,12 @@ module Tgui
|
|
961
997
|
def _abi_close(*a); Abi.call_arg_map! a; Abi.ABI_Window_close(@pointer, *a); end
|
962
998
|
def _abi_is_open(*a); Abi.call_arg_map! a; Abi.ABI_Window_isOpen(@pointer, *a); end
|
963
999
|
def _abi_set_title(*a); Abi.call_arg_map! a; Abi.ABI_Window_setTitle(@pointer, *a); end
|
1000
|
+
def _abi_set_size(*a); Abi.call_arg_map! a; Abi.ABI_Window_setSize(@pointer, *a); end
|
1001
|
+
def _abi_get_size(*a); Abi.call_arg_map! a; Abi.ABI_Window_getSize(@pointer, *a); end
|
1002
|
+
def _abi_set_position(*a); Abi.call_arg_map! a; Abi.ABI_Window_setPosition(@pointer, *a); end
|
1003
|
+
def _abi_get_position(*a); Abi.call_arg_map! a; Abi.ABI_Window_getPosition(@pointer, *a); end
|
1004
|
+
def _abi_request_focus(*a); Abi.call_arg_map! a; Abi.ABI_Window_requestFocus(@pointer, *a); end
|
1005
|
+
def _abi_has_focus(*a); Abi.call_arg_map! a; Abi.ABI_Window_hasFocus(@pointer, *a); end
|
964
1006
|
end
|
965
1007
|
|
966
1008
|
class BackendGui
|
@@ -1006,6 +1048,7 @@ module Tgui
|
|
1006
1048
|
def _abi_set_clear_color(*a); Abi.call_arg_map! a; Abi.ABI_Gui_setClearColor(@pointer, *a); end
|
1007
1049
|
def _abi_set_clipboard(*a); Abi.call_arg_map! a; Abi.ABI_Gui_setClipboard(@pointer, *a); end
|
1008
1050
|
def _abi_get_clipboard(*a); Abi.call_arg_map! a; Abi.ABI_Gui_getClipboard(@pointer, *a); end
|
1051
|
+
def _abi_get_screen_size(*a); Abi.call_arg_map! a; Abi.ABI_Gui_getScreenSize(@pointer, *a); end
|
1009
1052
|
end
|
1010
1053
|
|
1011
1054
|
class Theme
|
@@ -1914,6 +1957,7 @@ module Tgui
|
|
1914
1957
|
class CircleShape
|
1915
1958
|
def _abi_get_point_count(*a); Abi.call_arg_map! a; Abi.ABI_CircleShape_getPointCount(@pointer, *a); end
|
1916
1959
|
def initialize(*a, pointer: nil); Abi.call_arg_map! a; super(pointer: pointer || Abi.ABI_CircleShape_new(*a)); end
|
1960
|
+
def self._abi_delete(*a); Abi.call_arg_map! a; Abi.ABI_STATIC_CircleShape_delete(*a); end
|
1917
1961
|
def _abi_set_radius(*a); Abi.call_arg_map! a; Abi.ABI_CircleShape_setRadius(@pointer, *a); end
|
1918
1962
|
def _abi_get_radius(*a); Abi.call_arg_map! a; Abi.ABI_CircleShape_getRadius(@pointer, *a); end
|
1919
1963
|
def _abi_set_point_count(*a); Abi.call_arg_map! a; Abi.ABI_CircleShape_setPointCount(@pointer, *a); end
|
@@ -1921,18 +1965,21 @@ module Tgui
|
|
1921
1965
|
|
1922
1966
|
class RectangleShape
|
1923
1967
|
def initialize(*a, pointer: nil); Abi.call_arg_map! a; super(pointer: pointer || Abi.ABI_RectangleShape_new(*a)); end
|
1968
|
+
def self._abi_delete(*a); Abi.call_arg_map! a; Abi.ABI_STATIC_RectangleShape_delete(*a); end
|
1924
1969
|
def _abi_set_size(*a); Abi.call_arg_map! a; Abi.ABI_RectangleShape_setSize(@pointer, *a); end
|
1925
1970
|
def _abi_get_size(*a); Abi.call_arg_map! a; Abi.ABI_RectangleShape_getSize(@pointer, *a); end
|
1926
1971
|
end
|
1927
1972
|
|
1928
1973
|
class ConvexShape
|
1929
1974
|
def initialize(*a, pointer: nil); Abi.call_arg_map! a; super(pointer: pointer || Abi.ABI_ConvexShape_new(*a)); end
|
1975
|
+
def self._abi_delete(*a); Abi.call_arg_map! a; Abi.ABI_STATIC_ConvexShape_delete(*a); end
|
1930
1976
|
def _abi_set_point(*a); Abi.call_arg_map! a; Abi.ABI_ConvexShape_setPoint(@pointer, *a); end
|
1931
1977
|
def _abi_set_point_count(*a); Abi.call_arg_map! a; Abi.ABI_ConvexShape_setPointCount(@pointer, *a); end
|
1932
1978
|
end
|
1933
1979
|
|
1934
1980
|
class Text
|
1935
1981
|
def initialize(*a, pointer: nil); Abi.call_arg_map! a; super(pointer: pointer || Abi.ABI_Text_new(*a)); end
|
1982
|
+
def self._abi_delete(*a); Abi.call_arg_map! a; Abi.ABI_STATIC_Text_delete(*a); end
|
1936
1983
|
def _abi_set_string(*a); Abi.call_arg_map! a; Abi.ABI_Text_setString(@pointer, *a); end
|
1937
1984
|
def _abi_get_string(*a); Abi.call_arg_map! a; Abi.ABI_Text_getString(@pointer, *a); end
|
1938
1985
|
def _abi_set_font(*a); Abi.call_arg_map! a; Abi.ABI_Text_setFont(@pointer, *a); end
|
@@ -1960,4 +2007,32 @@ module Tgui
|
|
1960
2007
|
def _abi_get_origin(*a); Abi.call_arg_map! a; Abi.ABI_Text_getOrigin(@pointer, *a); end
|
1961
2008
|
def _abi_find_character_pos(*a); Abi.call_arg_map! a; Abi.ABI_Text_findCharacterPos(@pointer, *a); end
|
1962
2009
|
end
|
2010
|
+
|
2011
|
+
class CustomWidget
|
2012
|
+
def initialize(*a, pointer: nil); Abi.call_arg_map! a; super(pointer: pointer || Abi.ABI_CustomWidget_new(*a)); end
|
2013
|
+
def _abi_impl_position_changed(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implPositionChanged(@pointer, *a); end
|
2014
|
+
def _abi_impl_size_changed(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implSizeChanged(@pointer, *a); end
|
2015
|
+
def _abi_impl_visible_changed(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implVisibleChanged(@pointer, *a); end
|
2016
|
+
def _abi_impl_enable_changed(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implEnableChanged(@pointer, *a); end
|
2017
|
+
def _abi_impl_focus_changed(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implFocusChanged(@pointer, *a); end
|
2018
|
+
def _abi_impl_can_gain_focus(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implCanGainFocus(@pointer, *a); end
|
2019
|
+
def _abi_impl_get_full_size(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implGetFullSize(@pointer, *a); end
|
2020
|
+
def _abi_impl_get_widget_offset(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implGetWidgetOffset(@pointer, *a); end
|
2021
|
+
def _abi_impl_update_time_function(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implUpdateTimeFunction(@pointer, *a); end
|
2022
|
+
def _abi_impl_mouse_on_widget(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implMouseOnWidget(@pointer, *a); end
|
2023
|
+
def _abi_impl_left_mouse_pressed(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implLeftMousePressed(@pointer, *a); end
|
2024
|
+
def _abi_impl_left_mouse_released(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implLeftMouseReleased(@pointer, *a); end
|
2025
|
+
def _abi_impl_right_mouse_pressed(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implRightMousePressed(@pointer, *a); end
|
2026
|
+
def _abi_impl_right_mouse_released(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implRightMouseReleased(@pointer, *a); end
|
2027
|
+
def _abi_impl_mouse_moved(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implMouseMoved(@pointer, *a); end
|
2028
|
+
def _abi_impl_key_pressed(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implKeyPressed(@pointer, *a); end
|
2029
|
+
def _abi_impl_text_entered(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implTextEntered(@pointer, *a); end
|
2030
|
+
def _abi_impl_scrolled(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implScrolled(@pointer, *a); end
|
2031
|
+
def _abi_impl_mouse_no_longer_on_widget(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implMouseNoLongerOnWidget(@pointer, *a); end
|
2032
|
+
def _abi_impl_left_mouse_button_no_longer_down(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implLeftMouseButtonNoLongerDown(@pointer, *a); end
|
2033
|
+
def _abi_impl_mouse_entered_widget(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implMouseEnteredWidget(@pointer, *a); end
|
2034
|
+
def _abi_impl_mouse_left_widget(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implMouseLeftWidget(@pointer, *a); end
|
2035
|
+
def _abi_impl_renderer_changed(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implRendererChanged(@pointer, *a); end
|
2036
|
+
def _abi_impl_draw_function(*a); Abi.call_arg_map! a; Abi.ABI_CustomWidget_implDrawFunction(@pointer, *a); end
|
2037
|
+
end
|
1963
2038
|
end
|
@@ -41,7 +41,7 @@ editbox! do
|
|
41
41
|
selected_text_background_color! 157, 185, 240
|
42
42
|
end
|
43
43
|
|
44
|
-
|
44
|
+
textarea! do
|
45
45
|
background_color! 220
|
46
46
|
default_text_color! 100
|
47
47
|
caret_width! 2
|
@@ -59,6 +59,9 @@ combobox! do
|
|
59
59
|
arrow_background_color_hover! 200
|
60
60
|
end
|
61
61
|
|
62
|
+
label! do
|
63
|
+
end
|
64
|
+
|
62
65
|
listbox! do
|
63
66
|
background_color! 240
|
64
67
|
background_color_hover! 220
|
@@ -76,6 +79,10 @@ menu! do
|
|
76
79
|
separator_side_padding! 2
|
77
80
|
end
|
78
81
|
|
82
|
+
panel! do
|
83
|
+
background_color! 235
|
84
|
+
end
|
85
|
+
|
79
86
|
progressbar! do
|
80
87
|
borders! 1
|
81
88
|
end
|
data/lib/white_gold/master.rb
CHANGED
@@ -17,8 +17,14 @@ class WhiteGold
|
|
17
17
|
@frame_delay = 1.0 / fps
|
18
18
|
end
|
19
19
|
|
20
|
-
def init fps: nil, theme: nil
|
21
|
-
|
20
|
+
def init fps: nil, theme: nil, window_size: nil, window_style: nil
|
21
|
+
eo = ExternObject.new pointer: nil, autofree: false # object for packing
|
22
|
+
if window_size == :fullscreen
|
23
|
+
window_style = :fullscreen
|
24
|
+
window_size = nil
|
25
|
+
end
|
26
|
+
window_size ||= [800, 600]
|
27
|
+
@window = Window.new *eo.abi_pack(Vector2u, *window_size), *eo.abi_pack(ExternObject::WindowStyle, *(window_style || :default))
|
22
28
|
@gui = Gui.new window
|
23
29
|
@preserved_pages = {}
|
24
30
|
Theme.default = theme if theme
|
@@ -28,8 +34,8 @@ class WhiteGold
|
|
28
34
|
@initialized = true
|
29
35
|
end
|
30
36
|
|
31
|
-
def run page = nil, fps: nil, theme: nil
|
32
|
-
self.init fps: fps, theme: theme if !@initialized
|
37
|
+
def run page = nil, fps: nil, theme: nil, window_size: nil, window_style: nil
|
38
|
+
self.init fps: fps, theme: theme, window_size: window_size, window_style: window_style if !@initialized
|
33
39
|
load_page page if page
|
34
40
|
|
35
41
|
next_frame_time = Time.now
|
@@ -39,6 +45,8 @@ class WhiteGold
|
|
39
45
|
if @current_page_id != @next_page_id
|
40
46
|
if @current_page_id
|
41
47
|
page = @preserved_pages[@current_page_id]
|
48
|
+
BangNestedCaller.pop
|
49
|
+
BangNestedCaller.close_scope page
|
42
50
|
@gui.self_remove page
|
43
51
|
page.disconnect
|
44
52
|
@preserved_pages.delete(@current_page_id)
|
@@ -62,22 +70,23 @@ class WhiteGold
|
|
62
70
|
when Class
|
63
71
|
page = @preserved_pages[page_id] = page_id.new self
|
64
72
|
init_page page
|
65
|
-
page.
|
66
|
-
page.build
|
67
|
-
end
|
73
|
+
page.build
|
68
74
|
when Proc
|
69
75
|
page = @preserved_pages[page_id] = Page.new self
|
70
76
|
init_page page
|
71
|
-
page_id
|
77
|
+
page.instance_eval &page_id
|
72
78
|
end
|
73
79
|
end
|
74
80
|
|
75
81
|
def init_page page
|
76
82
|
@gui.self_add page, "main_container"
|
83
|
+
@gui.page = page
|
77
84
|
@current_page = page
|
78
85
|
ExternObject.callback_storage = page.widget_callbacks
|
79
86
|
ExternObject.global_callback_storage = page.global_callbacks
|
80
87
|
ExternObject.data_storage = page.custom_data
|
88
|
+
BangNestedCaller.open_scope page
|
89
|
+
BangNestedCaller.push page
|
81
90
|
end
|
82
91
|
|
83
92
|
attr_accessor :next_page_id
|
@@ -99,6 +108,7 @@ class WhiteGold
|
|
99
108
|
@repeat = repeat
|
100
109
|
@job = b
|
101
110
|
@result = NO_RESULT
|
111
|
+
@counter = 0
|
102
112
|
self.run if run
|
103
113
|
end
|
104
114
|
|
@@ -112,6 +122,7 @@ class WhiteGold
|
|
112
122
|
def on_done &b
|
113
123
|
@on_done = b
|
114
124
|
b.(@result) if @thread && !@thread.alive?
|
125
|
+
self
|
115
126
|
end
|
116
127
|
|
117
128
|
def audit
|
@@ -121,6 +132,7 @@ class WhiteGold
|
|
121
132
|
else
|
122
133
|
@on_done.(@result) if @on_done
|
123
134
|
if @repeat
|
135
|
+
@counter += 1
|
124
136
|
run
|
125
137
|
return true
|
126
138
|
else
|
@@ -128,14 +140,22 @@ class WhiteGold
|
|
128
140
|
end
|
129
141
|
end
|
130
142
|
else
|
131
|
-
return
|
143
|
+
return !!@job
|
132
144
|
end
|
133
145
|
end
|
134
146
|
|
135
147
|
def finish result = NO_RESULT
|
136
|
-
@
|
148
|
+
@thread.kill
|
137
149
|
@result = result if result != NO_RESULT
|
138
150
|
end
|
151
|
+
|
152
|
+
attr :counter
|
153
|
+
attr_accessor :repeat
|
154
|
+
|
155
|
+
def cancel
|
156
|
+
@thread.kill
|
157
|
+
@thread = @job = nil
|
158
|
+
end
|
139
159
|
end
|
140
160
|
|
141
161
|
def job delay: nil, repeat: false, &b
|