white_gold 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/ext/dll/openal32.dll +0 -0
- data/ext/dll/sfml-audio-2.dll +0 -0
- data/ext/dll/sfml-graphics-2.dll +0 -0
- data/ext/dll/sfml-network-2.dll +0 -0
- data/ext/dll/sfml-system-2.dll +0 -0
- data/ext/dll/sfml-window-2.dll +0 -0
- data/ext/dll/tgui.dll +0 -0
- data/ext/so/libsfml-audio.so +0 -0
- data/ext/so/libsfml-graphics.so +0 -0
- data/ext/so/libsfml-network.so +0 -0
- data/ext/so/libsfml-system.so +0 -0
- data/ext/so/libsfml-window.so +0 -0
- data/ext/so/libtgui.so +0 -0
- data/lib/white_gold/abi/alias.rb +50 -0
- data/lib/white_gold/abi/enum.rb +43 -0
- data/lib/white_gold/abi/extern_object.rb +180 -0
- data/lib/white_gold/abi/interface/interface.rb +114 -0
- data/lib/white_gold/abi/interface/interface_collection_out.rb +29 -0
- data/lib/white_gold/abi/interface/interface_composed_out.rb +28 -0
- data/lib/white_gold/abi/interface/interface_single_out.rb +19 -0
- data/lib/white_gold/abi/packer.rb +28 -0
- data/lib/white_gold/abi/reducer.rb +12 -0
- data/lib/white_gold/abi/unpacker.rb +27 -0
- data/lib/white_gold/convention/api_child.rb +30 -0
- data/lib/white_gold/convention/bang_def.rb +5 -0
- data/lib/white_gold/convention/bang_nest.rb +16 -0
- data/lib/white_gold/convention/bang_nested_caller.rb +48 -0
- data/lib/white_gold/convention/bool_property.rb +13 -0
- data/lib/white_gold/convention/boolean.rb +2 -0
- data/lib/white_gold/convention/club.rb +26 -0
- data/lib/white_gold/convention/container_widgets.rb +181 -0
- data/lib/white_gold/convention/page.rb +96 -0
- data/lib/white_gold/convention/proc_method_factory.rb +22 -0
- data/lib/white_gold/convention/unit.rb +22 -0
- data/lib/white_gold/convention/widget_like.rb +146 -0
- data/lib/white_gold/dsl/backend_gui.rb +37 -0
- data/lib/white_gold/dsl/bitmap_button.rb +11 -0
- data/lib/white_gold/dsl/box_layout.rb +47 -0
- data/lib/white_gold/dsl/box_layout_ratios.rb +13 -0
- data/lib/white_gold/dsl/button.rb +10 -0
- data/lib/white_gold/dsl/button_base.rb +18 -0
- data/lib/white_gold/dsl/chat_box.rb +65 -0
- data/lib/white_gold/dsl/checkbox.rb +6 -0
- data/lib/white_gold/dsl/child_window.rb +47 -0
- data/lib/white_gold/dsl/clickable_widget.rb +15 -0
- data/lib/white_gold/dsl/color.rb +124 -0
- data/lib/white_gold/dsl/color_picker.rb +12 -0
- data/lib/white_gold/dsl/combo_box.rb +135 -0
- data/lib/white_gold/dsl/container.rb +95 -0
- data/lib/white_gold/dsl/edit_box.rb +38 -0
- data/lib/white_gold/dsl/file_dialog.rb +86 -0
- data/lib/white_gold/dsl/font.rb +23 -0
- data/lib/white_gold/dsl/grid.rb +131 -0
- data/lib/white_gold/dsl/group.rb +6 -0
- data/lib/white_gold/dsl/gui.rb +16 -0
- data/lib/white_gold/dsl/horizontal_layout.rb +6 -0
- data/lib/white_gold/dsl/horizontal_wrap.rb +6 -0
- data/lib/white_gold/dsl/knob.rb +16 -0
- data/lib/white_gold/dsl/label.rb +21 -0
- data/lib/white_gold/dsl/list_box.rb +125 -0
- data/lib/white_gold/dsl/list_view.rb +239 -0
- data/lib/white_gold/dsl/menu_bar.rb +252 -0
- data/lib/white_gold/dsl/message_box.rb +90 -0
- data/lib/white_gold/dsl/outline.rb +52 -0
- data/lib/white_gold/dsl/panel.rb +16 -0
- data/lib/white_gold/dsl/panel_list_box.rb +83 -0
- data/lib/white_gold/dsl/picture.rb +12 -0
- data/lib/white_gold/dsl/progress_bar.rb +19 -0
- data/lib/white_gold/dsl/radio_button.rb +18 -0
- data/lib/white_gold/dsl/radio_button_group.rb +14 -0
- data/lib/white_gold/dsl/range_slider.rb +15 -0
- data/lib/white_gold/dsl/rich_text_label.rb +6 -0
- data/lib/white_gold/dsl/scrollable_panel.rb +53 -0
- data/lib/white_gold/dsl/scrollbar.rb +28 -0
- data/lib/white_gold/dsl/separator_line.rb +6 -0
- data/lib/white_gold/dsl/signal/global_signal.rb +33 -0
- data/lib/white_gold/dsl/signal/signal.rb +44 -0
- data/lib/white_gold/dsl/signal/signal_animation_type.rb +16 -0
- data/lib/white_gold/dsl/signal/signal_bool.rb +16 -0
- data/lib/white_gold/dsl/signal/signal_color.rb +16 -0
- data/lib/white_gold/dsl/signal/signal_float.rb +16 -0
- data/lib/white_gold/dsl/signal/signal_int.rb +16 -0
- data/lib/white_gold/dsl/signal/signal_item.rb +6 -0
- data/lib/white_gold/dsl/signal/signal_item_hierarchy.rb +9 -0
- data/lib/white_gold/dsl/signal/signal_panel_list_box_item.rb +7 -0
- data/lib/white_gold/dsl/signal/signal_pointer.rb +15 -0
- data/lib/white_gold/dsl/signal/signal_range.rb +15 -0
- data/lib/white_gold/dsl/signal/signal_show_effect.rb +17 -0
- data/lib/white_gold/dsl/signal/signal_string.rb +16 -0
- data/lib/white_gold/dsl/signal/signal_typed_int_bool_ptr.rb +15 -0
- data/lib/white_gold/dsl/signal/signal_typed_size_t.rb +6 -0
- data/lib/white_gold/dsl/signal/signal_u_int.rb +16 -0
- data/lib/white_gold/dsl/signal/signal_vector2f.rb +14 -0
- data/lib/white_gold/dsl/slider.rb +26 -0
- data/lib/white_gold/dsl/spin_button.rb +24 -0
- data/lib/white_gold/dsl/spin_control.rb +15 -0
- data/lib/white_gold/dsl/subwidget_container.rb +9 -0
- data/lib/white_gold/dsl/tab_container.rb +121 -0
- data/lib/white_gold/dsl/tabs.rb +91 -0
- data/lib/white_gold/dsl/text_area.rb +34 -0
- data/lib/white_gold/dsl/texture.rb +53 -0
- data/lib/white_gold/dsl/theme/boolean_attribute.rb +13 -0
- data/lib/white_gold/dsl/theme/button_theme.rb +19 -0
- data/lib/white_gold/dsl/theme/chat_box_theme.rb +16 -0
- data/lib/white_gold/dsl/theme/child_window_theme.rb +25 -0
- data/lib/white_gold/dsl/theme/color_attribute.rb +13 -0
- data/lib/white_gold/dsl/theme/color_picker_theme.rb +14 -0
- data/lib/white_gold/dsl/theme/combo_box_theme.rb +33 -0
- data/lib/white_gold/dsl/theme/common_renderer.rb +7 -0
- data/lib/white_gold/dsl/theme/edit_box_theme.rb +34 -0
- data/lib/white_gold/dsl/theme/file_dialog_theme.rb +22 -0
- data/lib/white_gold/dsl/theme/float_attribute.rb +13 -0
- data/lib/white_gold/dsl/theme/group_theme.rb +9 -0
- data/lib/white_gold/dsl/theme/knob_theme.rb +15 -0
- data/lib/white_gold/dsl/theme/label_theme.rb +20 -0
- data/lib/white_gold/dsl/theme/list_box_theme.rb +25 -0
- data/lib/white_gold/dsl/theme/list_view_theme.rb +27 -0
- data/lib/white_gold/dsl/theme/menu_bar_theme.rb +21 -0
- data/lib/white_gold/dsl/theme/message_box_theme.rb +11 -0
- data/lib/white_gold/dsl/theme/outline_attribute.rb +13 -0
- data/lib/white_gold/dsl/theme/progress_bar_theme.rb +19 -0
- data/lib/white_gold/dsl/theme/radio_button_theme.rb +30 -0
- data/lib/white_gold/dsl/theme/scrollbar_theme.rb +24 -0
- data/lib/white_gold/dsl/theme/separator_line_theme.rb +9 -0
- data/lib/white_gold/dsl/theme/slider_theme.rb +20 -0
- data/lib/white_gold/dsl/theme/spin_button_theme.rb +19 -0
- data/lib/white_gold/dsl/theme/tabs_theme.rb +29 -0
- data/lib/white_gold/dsl/theme/text_area_theme.rb +22 -0
- data/lib/white_gold/dsl/theme/text_styles_attribute.rb +13 -0
- data/lib/white_gold/dsl/theme/texture_attribute.rb +17 -0
- data/lib/white_gold/dsl/theme/theme_attributed.rb +51 -0
- data/lib/white_gold/dsl/theme/theme_component.rb +23 -0
- data/lib/white_gold/dsl/theme/tree_view_theme.rb +26 -0
- data/lib/white_gold/dsl/theme/widget_theme.rb +12 -0
- data/lib/white_gold/dsl/theme.rb +144 -0
- data/lib/white_gold/dsl/toggle_button.rb +10 -0
- data/lib/white_gold/dsl/tool_tip.rb +21 -0
- data/lib/white_gold/dsl/tree_view.rb +186 -0
- data/lib/white_gold/dsl/util.rb +17 -0
- data/lib/white_gold/dsl/vertical_layout.rb +6 -0
- data/lib/white_gold/dsl/widget.rb +279 -0
- data/lib/white_gold/dsl/window.rb +16 -0
- data/lib/white_gold/generated/tgui-abi-loader.gf.rb +1813 -0
- data/lib/white_gold/library/theme/light.rb +111 -0
- data/lib/white_gold/master.rb +170 -0
- data/lib/white_gold/path/kernel.path.rb +3 -0
- data/lib/white_gold/path/numeric.path.rb +9 -0
- data/lib/white_gold/path/object.path.rb +22 -0
- data/lib/white_gold/path/string.path.rb +5 -0
- data/lib/white_gold/tgui-abi.rb +255 -0
- data/lib/white_gold/tgui-config.rb +20 -0
- data/lib/white_gold.rb +47 -0
- metadata +209 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative '../../abi/extern_object'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class Signal < ExternObject
|
5
|
+
|
6
|
+
def initialize pointer, widget
|
7
|
+
super(pointer:, autofree: false)
|
8
|
+
@widget = widget
|
9
|
+
end
|
10
|
+
|
11
|
+
def block_caller &b
|
12
|
+
Fiddle::Closure::BlockCaller.new(0, [0]) do
|
13
|
+
@widget.page.upon! @widget do
|
14
|
+
b.(@widget)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def connect &b
|
20
|
+
block_caller = self.block_caller &b
|
21
|
+
id = _abi_connect(block_caller)
|
22
|
+
@@callback_storage[id] = block_caller
|
23
|
+
return id
|
24
|
+
end
|
25
|
+
|
26
|
+
def disconnect id
|
27
|
+
success = _abi_disconnect(id)
|
28
|
+
@@callback_storage.delete(id) if success
|
29
|
+
return success
|
30
|
+
end
|
31
|
+
|
32
|
+
abi_attr :enabled?
|
33
|
+
|
34
|
+
def suppress
|
35
|
+
enabled_before = enabled?
|
36
|
+
self.enabled = false
|
37
|
+
if block_given?
|
38
|
+
yield
|
39
|
+
self.enabled = true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SignalAnimationType < Signal
|
5
|
+
|
6
|
+
def block_caller
|
7
|
+
block_caller = Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT]) do |animation_type|
|
8
|
+
at = @widget.abi_unpack AnimationType, animation_type
|
9
|
+
@widget.page.upon! @widget do
|
10
|
+
b.(at, @widget)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SignalBoolean < Signal
|
5
|
+
|
6
|
+
def block_caller &b
|
7
|
+
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT]) do |int|
|
8
|
+
b = @widget.abi_unpack Boolean, int
|
9
|
+
@widget.page.upon! @widget do
|
10
|
+
b.(b, @widget)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SignalColor < Signal
|
5
|
+
|
6
|
+
def block_caller &b
|
7
|
+
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |ptr|
|
8
|
+
c = @widget.abi_unpack Color, ptr
|
9
|
+
@widget.page.upon! @widget do
|
10
|
+
b.(c, @widget)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SignalFloat < Signal
|
5
|
+
|
6
|
+
def block_caller &b
|
7
|
+
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_FLOAT]) do |float|
|
8
|
+
f = @widget.abi_unpack_float float
|
9
|
+
@widget.page.upon! @widget do
|
10
|
+
b.(f, @widget)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SignalInt < Signal
|
5
|
+
|
6
|
+
def block_caller &b
|
7
|
+
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |int|
|
8
|
+
i = @widget.abi_unpack_integer int
|
9
|
+
@widget.page.upon! @widget do
|
10
|
+
b.(i, @widget)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SignalPointer < Signal
|
5
|
+
|
6
|
+
def block_caller &b
|
7
|
+
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |pointer|
|
8
|
+
@widget.page.upon! @widget do
|
9
|
+
b.(pointer, @widget)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SignalRange < Signal
|
5
|
+
|
6
|
+
def block_caller &b
|
7
|
+
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_FLOAT, Fiddle::TYPE_FLOAT]) do |min, max|
|
8
|
+
@widget.page.upon! @widget do
|
9
|
+
b.(min..max, @widget)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SignalShowEffect < Signal
|
5
|
+
|
6
|
+
def block_caller &b
|
7
|
+
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT, Fiddle::TYPE_INT]) do |show_effect_type, shown|
|
8
|
+
effect_type = @widget.abi_unpack ShowEffectType, show_effect_type
|
9
|
+
shown = @widget.abi_unpack Boolean, shown
|
10
|
+
@widget.page.upon! @widget do
|
11
|
+
b.(effect_type, shown, @widget)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SignalString < Signal
|
5
|
+
|
6
|
+
def block_caller &b
|
7
|
+
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |str|
|
8
|
+
string = @widget.abi_unpack_string(str)
|
9
|
+
@widget.page.upon! @widget do
|
10
|
+
b.(string, @widget)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
require_relative '../../convention/bool_property'
|
3
|
+
|
4
|
+
module Tgui
|
5
|
+
class SignalTypedIntBoolPtr < Signal
|
6
|
+
def connect &b
|
7
|
+
block_caller = Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP]) do |index, ptr|
|
8
|
+
b.(index, BoolProperty.new(ptr))
|
9
|
+
end
|
10
|
+
id = _abi_connect(@pointer, block_caller)
|
11
|
+
@@callback_storage[id] = block_caller
|
12
|
+
return id
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SignalUInt < Signal
|
5
|
+
|
6
|
+
def block_caller &b
|
7
|
+
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT]) do |uint|
|
8
|
+
int = @widget.abi_unpack Integer, uint
|
9
|
+
@widget.page.upon! @widget do
|
10
|
+
b.(int, @widget)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'signal'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SignalVector2f < Signal
|
5
|
+
def block_caller &b
|
6
|
+
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP]) do |ptr|
|
7
|
+
vector = @widget.abi_unpack Vector2f, ptr
|
8
|
+
@widget.page.upon! @widget do
|
9
|
+
b.(vector, @widget)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'widget'
|
2
|
+
require_relative 'signal/signal_float'
|
3
|
+
|
4
|
+
module Tgui
|
5
|
+
class Slider < Widget
|
6
|
+
|
7
|
+
abi_attr :min, Float, :minimum
|
8
|
+
abi_attr :max, Float, :maximum
|
9
|
+
abi_attr :value, Float
|
10
|
+
abi_attr :step, Float
|
11
|
+
abi_attr :vertical?, Boolean, :vertical_scroll
|
12
|
+
|
13
|
+
def horizontal=(horizontal)
|
14
|
+
self.vertical = !horizontal
|
15
|
+
end
|
16
|
+
|
17
|
+
def horizontal?
|
18
|
+
!vertical?
|
19
|
+
end
|
20
|
+
|
21
|
+
abi_attr :inverted?, Boolean, :inverted_direction
|
22
|
+
abi_attr :scrollable?, Boolean, :change_value_on_scroll
|
23
|
+
abi_signal :on_value_change, SignalFloat
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require_relative 'clickable_widget'
|
2
|
+
require_relative 'signal/signal_float'
|
3
|
+
|
4
|
+
module Tgui
|
5
|
+
class SpinButton < ClickableWidget
|
6
|
+
|
7
|
+
abi_attr :min, Float, :minimum
|
8
|
+
abi_attr :max, Float, :maximum
|
9
|
+
abi_attr :value, Float
|
10
|
+
abi_attr :step, Float
|
11
|
+
abi_attr :vertical?, Boolean, :vertical_scroll
|
12
|
+
|
13
|
+
def horizontal=(horizontal)
|
14
|
+
self.vertical = !horizontal
|
15
|
+
end
|
16
|
+
|
17
|
+
def horizontal?
|
18
|
+
!vertical?
|
19
|
+
end
|
20
|
+
|
21
|
+
abi_signal :on_value_change, SignalFloat
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'subwidget_container'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class SpinControl < SubwidgetContainer
|
5
|
+
|
6
|
+
abi_attr :min, Float, :minimum
|
7
|
+
abi_attr :max, Float, :maximum
|
8
|
+
abi_attr :value, Float
|
9
|
+
abi_attr :step, Float
|
10
|
+
abi_attr :decimals, Integer, :decimal_places
|
11
|
+
abi_attr :wide_arrows?
|
12
|
+
abi_signal :on_value_change, SignalFloat
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require_relative 'container'
|
2
|
+
require_relative 'tabs'
|
3
|
+
|
4
|
+
module Tgui
|
5
|
+
class TabContainer < Container
|
6
|
+
|
7
|
+
class Tabs < Tgui::Tabs
|
8
|
+
def initialize tabs_container, pointer
|
9
|
+
super(pointer:)
|
10
|
+
@tabs_container = tabs_container
|
11
|
+
end
|
12
|
+
|
13
|
+
abi_enum "TabAlign", :top, :bottom
|
14
|
+
|
15
|
+
|
16
|
+
def alignment=(alignment)
|
17
|
+
@tabs_container._abi_set_tab_alignment @tabs_container.abi_pack(TabAlign, alignment)
|
18
|
+
end
|
19
|
+
|
20
|
+
def alignment
|
21
|
+
@tabs_container.abi_unpack(TabAlign, @tabs_container._abi_get_tab_alignment)
|
22
|
+
end
|
23
|
+
|
24
|
+
def fixed_size=(size)
|
25
|
+
@tabs_container._abi_set_fixed_size @tabs_container.abi_pack_float(size)
|
26
|
+
end
|
27
|
+
|
28
|
+
def fixed_size
|
29
|
+
@tabs_container.abi_unpack_float(@tabs_container._abi_get_fixed_size)
|
30
|
+
end
|
31
|
+
|
32
|
+
def height=(height)
|
33
|
+
@tabs_container._abi_set_tabs_height @tabs_container.abi_pack("Layout", h)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class TabPanel < Panel
|
38
|
+
|
39
|
+
def initialize tab_container, index, panel_pointer
|
40
|
+
super(pointer: panel_pointer)
|
41
|
+
@tab_container = tab_container
|
42
|
+
@index = index
|
43
|
+
end
|
44
|
+
|
45
|
+
def text=(text)
|
46
|
+
@tab_container.change_tab_text @index, @tab_container.abi_pack_string(text)
|
47
|
+
end
|
48
|
+
|
49
|
+
def text
|
50
|
+
@tab_container.abi_unpack_string(@tab_container.tab_text @index)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def objects
|
55
|
+
tabs.objects
|
56
|
+
end
|
57
|
+
|
58
|
+
def format=(format)
|
59
|
+
tabs.format = format
|
60
|
+
end
|
61
|
+
|
62
|
+
def format
|
63
|
+
tabs.format
|
64
|
+
end
|
65
|
+
|
66
|
+
def! :tab do |object, index: nil, **na, &b|
|
67
|
+
text = object.then(&format)
|
68
|
+
if !index
|
69
|
+
panel_pointer = _abi_add_tab abi_pack_string(text), abi_pack_boolean(false)
|
70
|
+
index = _abi_get_index panel_pointer
|
71
|
+
else
|
72
|
+
index = abi_pack_integer index
|
73
|
+
panel_pointer = _abi_insert_tab index, abi_pack_string(text), abi_pack_boolean(false)
|
74
|
+
end
|
75
|
+
objects.insert index, object
|
76
|
+
tab_panel = TabPanel.new self, index, panel_pointer
|
77
|
+
tab_panel.page = page
|
78
|
+
upon! tab_panel, **na, &b
|
79
|
+
end
|
80
|
+
|
81
|
+
def [](object)
|
82
|
+
index = objects.index object
|
83
|
+
if index
|
84
|
+
panel_pointer = _abi_get_panel
|
85
|
+
TabPanel.new(self, index, panel_pointer).tap do |tp|
|
86
|
+
tp.page = page
|
87
|
+
end
|
88
|
+
else
|
89
|
+
nil
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def! :tabs do |**na, &b|
|
94
|
+
tabs = Tabs.new self, _abi_get_tabs
|
95
|
+
tabs.page = page
|
96
|
+
upon! tabs, **na, &b
|
97
|
+
end
|
98
|
+
|
99
|
+
def remove object
|
100
|
+
index = objects.index object
|
101
|
+
if index && _abi_remove_tab(index)
|
102
|
+
objects.delete_at index
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def selected=(selected)
|
107
|
+
index = objects.index selected
|
108
|
+
if index
|
109
|
+
_abi_select index
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def selected
|
114
|
+
index = _abi_get_selected_index
|
115
|
+
index >= 0 ? objects[index] : nil
|
116
|
+
end
|
117
|
+
|
118
|
+
abi_signal :on_selection_change, Signal
|
119
|
+
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require_relative 'widget'
|
2
|
+
require_relative '../convention/widget_like'
|
3
|
+
require_relative 'signal/signal'
|
4
|
+
|
5
|
+
module Tgui
|
6
|
+
class Tabs < Widget
|
7
|
+
|
8
|
+
class Tab < WidgetLike
|
9
|
+
|
10
|
+
abi_def :text=, :change_text, id: 0, String => nil
|
11
|
+
abi_def :text, :get_, id: 0, nil => String
|
12
|
+
abi_attr :visible?, Boolean, :tab_, id: 0
|
13
|
+
abi_attr :enabled?, Boolean, :tab_, id: 0
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
api_attr :objects do
|
18
|
+
[]
|
19
|
+
end
|
20
|
+
api_attr :format do
|
21
|
+
:to_s
|
22
|
+
end
|
23
|
+
|
24
|
+
abi_attr :auto_size?
|
25
|
+
abi_def :deselect
|
26
|
+
abi_def :tab_height=, :set_, Float => nil
|
27
|
+
abi_attr :max_tab_width, Float, :maximum_tab_width
|
28
|
+
abi_attr :min_tab_width, Float, :minimum_tab_width
|
29
|
+
|
30
|
+
def! :tab do |object, index: nil, **na, &b|
|
31
|
+
text = object.then(&format)
|
32
|
+
if !index
|
33
|
+
index = _abi_add abi_pack_string(text), abi_pack_boolean(false)
|
34
|
+
else
|
35
|
+
index = abi_pack_integer(index)
|
36
|
+
_abi_insert index, abi_pack_string(text), abi_pack_boolean(false)
|
37
|
+
end
|
38
|
+
objects.insert index, object
|
39
|
+
tab = Tab.new self, index
|
40
|
+
upon! tab, **na, &b
|
41
|
+
end
|
42
|
+
|
43
|
+
def remove object
|
44
|
+
index = objects.index object
|
45
|
+
if index && abi_unpack_bool(_abi_remove(index))
|
46
|
+
objects.delete_at index
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def remove_all
|
51
|
+
_abi_remove_all
|
52
|
+
self.objects = []
|
53
|
+
end
|
54
|
+
|
55
|
+
def selected=(selected)
|
56
|
+
index = objects.index selected
|
57
|
+
if index
|
58
|
+
_abi_select index
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def selected
|
63
|
+
index = abi_unpack_integer _abi_get_selected_index
|
64
|
+
index >= 0 ? objects[index] : nil
|
65
|
+
end
|
66
|
+
|
67
|
+
def [](object)
|
68
|
+
index = objects.index object
|
69
|
+
index ? Tab.new(self, index) : nil
|
70
|
+
end
|
71
|
+
|
72
|
+
def items
|
73
|
+
objects
|
74
|
+
end
|
75
|
+
|
76
|
+
class SignalTabSelect < Signal
|
77
|
+
|
78
|
+
def block_caller &b
|
79
|
+
Fiddle::Closure::BlockCaller.new(0, [0]) do
|
80
|
+
@widget.page.upon! @widget do
|
81
|
+
b.(@widget.selected, @widget)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
abi_signal :on_tab_select, SignalTabSelect
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative 'widget'
|
2
|
+
require_relative 'scrollbar'
|
3
|
+
require_relative 'signal/signal'
|
4
|
+
require_relative 'signal/signal_string'
|
5
|
+
|
6
|
+
module Tgui
|
7
|
+
class TextArea < Widget
|
8
|
+
|
9
|
+
abi_attr :text, String
|
10
|
+
abi_def :add_text, String => nil
|
11
|
+
abi_attr :default_text, String
|
12
|
+
abi_def :selected_text=, :set_, Range => nil
|
13
|
+
abi_def :selected_text, :get_, nil => String
|
14
|
+
abi_def :selection_start, :get_, nil => Integer
|
15
|
+
abi_def :selection_end, :get_, nil => Integer
|
16
|
+
abi_def :text_limit, :maximum_characters, nil => Integer
|
17
|
+
abi_attr :tab_string, String
|
18
|
+
abi_attr :caret_position, Integer
|
19
|
+
abi_def :caret_line, nil => Integer
|
20
|
+
abi_def :caret_column, nil => Integer
|
21
|
+
abi_attr :read_only?
|
22
|
+
abi_enum Scrollbar::Policy
|
23
|
+
abi_attr :vertical_scrollbar_policy, Scrollbar::Policy
|
24
|
+
abi_attr :horizontal_scrollbar_policy, Scrollbar::Policy
|
25
|
+
abi_attr :vertical_scrollbar_value, Integer
|
26
|
+
abi_attr :horizontal_scrollbar_value, Integer
|
27
|
+
abi_def :lines_count, nil => Integer
|
28
|
+
abi_def :monospace_boost=, :set_monospace_font_optimization, Boolean => nil
|
29
|
+
abi_signal :on_text_change, SignalString
|
30
|
+
abi_signal :on_selection_change, Signal
|
31
|
+
abi_signal :on_caret_change, Signal, :on_caret_position_change
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require_relative '../abi/extern_object'
|
2
|
+
require_relative 'color'
|
3
|
+
|
4
|
+
module Tgui
|
5
|
+
class Texture < ExternObject
|
6
|
+
def self.from *arg
|
7
|
+
case arg.size
|
8
|
+
when 1
|
9
|
+
a = arg.first
|
10
|
+
case a
|
11
|
+
when Texture
|
12
|
+
return a
|
13
|
+
when String
|
14
|
+
id = Util.expand_path a
|
15
|
+
prx = pry = prw = prh = mpx = mpy = mpw = mph = 0
|
16
|
+
smooth = Texture.default_smooth
|
17
|
+
else raise "Unsupported argument #{arg}"
|
18
|
+
end
|
19
|
+
when 2..10
|
20
|
+
id = Util.expand_path arg[0]
|
21
|
+
prx = arg[1] || 0
|
22
|
+
pry = arg[2] || 0
|
23
|
+
prw = arg[3] || 0
|
24
|
+
prh = arg[4] || 0
|
25
|
+
mpx = arg[5] || 0
|
26
|
+
mpy = arg[6] || 0
|
27
|
+
mpw = arg[7] || 0
|
28
|
+
mph = arg[8] || 0
|
29
|
+
smooth = arg[9] || Texture.default_smooth
|
30
|
+
else raise "Unsupported argument #{arg}"
|
31
|
+
end
|
32
|
+
Texture.new id, prx, pry, prw, prh, mpx, mpy, mpw, mph, smooth
|
33
|
+
end
|
34
|
+
|
35
|
+
abi_def :id, :get_, nil => String
|
36
|
+
abi_def :image_size, :get_, nil => Vector2u
|
37
|
+
abi_def :part_rect, :get_, nil => UIntRect
|
38
|
+
abi_def :smooth?, nil => Boolean
|
39
|
+
abi_attr :color, Color
|
40
|
+
|
41
|
+
def to_theme
|
42
|
+
"#{id} Part(#{part_rect.join(",")})"
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.default_smooth=(smooth)
|
46
|
+
_abi_set_default_smooth smooth
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.default_smooth
|
50
|
+
_abi_get_default_smooth
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|