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,13 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
require_relative '../../abi/extern_object'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class TextStylesAttribute
|
5
|
+
def initialize name, value
|
6
|
+
@name = name
|
7
|
+
@value = Array(value).map do |style|
|
8
|
+
raise "Invalid style #{style}" if !ExternObject::TextStyles[style]
|
9
|
+
style.to_s.upcase
|
10
|
+
end.join("|")
|
11
|
+
end
|
6
12
|
|
7
|
-
|
8
|
-
|
13
|
+
attr :name
|
14
|
+
attr :value
|
9
15
|
|
10
|
-
|
11
|
-
|
16
|
+
def to_theme
|
17
|
+
"#{name} = #{value};"
|
18
|
+
end
|
12
19
|
end
|
13
20
|
end
|
@@ -1,19 +1,21 @@
|
|
1
1
|
require_relative '../../dsl/texture'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
module Tgui
|
4
|
+
class TextureAttribute
|
5
|
+
def initialize name, value
|
6
|
+
@name = name
|
7
|
+
@value = Texture.from *value
|
8
|
+
end
|
8
9
|
|
9
|
-
|
10
|
-
|
10
|
+
attr :name
|
11
|
+
attr :value
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
def to_theme
|
14
|
+
"#{name} = #{value.to_theme};"
|
15
|
+
end
|
15
16
|
|
16
|
-
|
17
|
-
|
17
|
+
def self.base_class
|
18
|
+
Texture
|
19
|
+
end
|
18
20
|
end
|
19
21
|
end
|
@@ -26,7 +26,7 @@ module Tgui
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def to_theme
|
29
|
-
return "" if @attributes.empty? && !@custom_name
|
29
|
+
# return "" if @attributes.empty? && !@custom_name
|
30
30
|
header = @custom_name ? "#{@custom_name} : #{base_name}" : name
|
31
31
|
"#{header} {\n#{@attributes.values.map(&:to_theme).join("\n")}\n}"
|
32
32
|
end
|
@@ -22,6 +22,7 @@ module Tgui
|
|
22
22
|
|
23
23
|
theme_comp :button, ButtonBase::Theme
|
24
24
|
theme_comp :chatbox, ChatBox::Theme
|
25
|
+
theme_comp :checkbox, RadioButton::Theme
|
25
26
|
theme_comp :child_window, ChildWindow::Theme
|
26
27
|
theme_comp :color_picker, ColorPicker::Theme
|
27
28
|
theme_comp :combobox, ComboBox::Theme
|
@@ -34,6 +35,8 @@ module Tgui
|
|
34
35
|
theme_comp :listview, ListView::Theme
|
35
36
|
theme_comp :menu, MenuBar::Theme
|
36
37
|
theme_comp :messagebox, MessageBox::Theme
|
38
|
+
theme_comp :panel, Panel::Theme
|
39
|
+
theme_comp :panel_listbox, PanelListBox::Theme
|
37
40
|
theme_comp :progressbar, ProgressBar::Theme
|
38
41
|
theme_comp :radio_button, RadioButton::Theme
|
39
42
|
theme_comp :range_slider, RangeSlider::Theme
|
@@ -42,8 +45,9 @@ module Tgui
|
|
42
45
|
theme_comp :slider, Slider::Theme
|
43
46
|
theme_comp :spin_button, SpinButton::Theme
|
44
47
|
theme_comp :tabs, Tabs::Theme
|
45
|
-
theme_comp :
|
46
|
-
theme_comp :
|
48
|
+
theme_comp :textarea, TextArea::Theme
|
49
|
+
theme_comp :toggle_button, ToggleButton::Theme
|
50
|
+
theme_comp :treeview, TreeView::Theme
|
47
51
|
theme_comp :widget, Widget::Theme
|
48
52
|
end
|
49
53
|
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
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative '../../dsl/custom_widget'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class KeyboardControl < CustomWidget
|
5
|
+
|
6
|
+
api_attr :key_press_listeners do
|
7
|
+
{}
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialized
|
11
|
+
self.self_can_gain_focus = proc do
|
12
|
+
1
|
13
|
+
end
|
14
|
+
|
15
|
+
self.self_key_press = proc do |key, alt, control, shift, system|
|
16
|
+
key_symbol = KeyCode[key]
|
17
|
+
self.key_press_listeners[key_symbol]&.each do |listener|
|
18
|
+
listener.call(key_symbol, alt, control, shift, system)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def! :on_key do |*keys, &b|
|
24
|
+
keys.each do |k|
|
25
|
+
(self.key_press_listeners[k] ||= []) << b
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Tgui
|
2
|
+
Chatbox = ChatBox
|
3
|
+
Checkbox = CheckBox
|
4
|
+
Combobox = ComboBox
|
5
|
+
Editbox = EditBox
|
6
|
+
Hlayout = HorizontalLayout
|
7
|
+
Hwrap = HorizontalWrap
|
8
|
+
Listbox = ListBox
|
9
|
+
Listview = ListView
|
10
|
+
Menu = MenuBar
|
11
|
+
Messagebox = MessageBox
|
12
|
+
PanelListbox = PanelListBox
|
13
|
+
PanelTabs = TabContainer
|
14
|
+
Progressbar = ProgressBar
|
15
|
+
FancyLabel = RichTextLabel
|
16
|
+
Radio = RadioButton
|
17
|
+
RadioGroup = RadioButtonGroup
|
18
|
+
Separator = SeparatorLine
|
19
|
+
Spinner = SpinButton
|
20
|
+
Spinbox = SpinControl
|
21
|
+
Textarea = TextArea
|
22
|
+
Treeview = TreeView
|
23
|
+
Vlayout = VerticalLayout
|
24
|
+
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 = scope! RectangleShape.new, **na, &b
|
14
|
+
host._abi_draw shape
|
15
|
+
end
|
16
|
+
|
17
|
+
def! :circle do |**na, &b|
|
18
|
+
shape = scope! CircleShape.new, **na, &b
|
19
|
+
host._abi_draw shape
|
20
|
+
end
|
21
|
+
|
22
|
+
def! :convex do |**na, &b|
|
23
|
+
shape = scope! ConvexShape.new, **na, &b
|
24
|
+
host._abi_draw shape
|
25
|
+
end
|
26
|
+
|
27
|
+
def! :text do |**na, &b|
|
28
|
+
text = scope! Text.new, **na, &b
|
29
|
+
host._abi_draw text
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
def! :draw do |&b|
|
35
|
+
scope! Draw.new(self, nil), &b
|
36
|
+
_abi_display
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
data/lib/white_gold/dsl/color.rb
CHANGED
@@ -8,8 +8,10 @@ module Tgui
|
|
8
8
|
green: [0, 200, 0, 255],
|
9
9
|
blue: [0, 0, 200, 255],
|
10
10
|
yellow: [200, 200, 0, 255],
|
11
|
-
white: [
|
12
|
-
black: [0, 0, 0, 255]
|
11
|
+
white: [255, 255, 255, 255],
|
12
|
+
black: [0, 0, 0, 255],
|
13
|
+
gray: [100, 100, 100, 255],
|
14
|
+
transparent: [255, 255, 255, 0]
|
13
15
|
}
|
14
16
|
|
15
17
|
def self.from *arg
|
@@ -21,6 +23,9 @@ module Tgui
|
|
21
23
|
return arg
|
22
24
|
when String
|
23
25
|
r, g, b, a = *tones_from_string(arg)
|
26
|
+
when :random
|
27
|
+
r, g, b = 5.times.map{ rand 255 }
|
28
|
+
a = 255
|
24
29
|
when Symbol
|
25
30
|
r, g, b, a = *PREDEFINED_COLORS[arg]
|
26
31
|
when Numeric
|
@@ -61,12 +66,12 @@ module Tgui
|
|
61
66
|
Color.new *Color.hsv_to_rgb(h, s, (v - shadow).clamp(0, 255)), alpha
|
62
67
|
end
|
63
68
|
|
64
|
-
def
|
69
|
+
def to_arr
|
65
70
|
[red, green, blue, alpha]
|
66
71
|
end
|
67
72
|
|
68
73
|
def to_s
|
69
|
-
"##{
|
74
|
+
"##{to_arr.map{ _1.to_s(16).ljust(2, '0') }.join}"
|
70
75
|
end
|
71
76
|
|
72
77
|
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.host! 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
|
+
scope! item, **na, &b
|
103
103
|
end
|
104
104
|
|
105
105
|
def selected
|
@@ -12,14 +12,14 @@ module Tgui
|
|
12
12
|
return widgets
|
13
13
|
end
|
14
14
|
|
15
|
-
abi_def :add, [Object, String] => nil
|
15
|
+
abi_def :self_add, :add, [Object, String] => nil
|
16
16
|
abi_def :remove_all
|
17
17
|
abi_def :inner_size, :get_, nil => Vector2f
|
18
18
|
abi_def :child_offset, :get_, nil => Vector2f
|
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
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require_relative 'widget'
|
2
|
+
|
3
|
+
module Tgui
|
4
|
+
class CustomWidget < Widget
|
5
|
+
|
6
|
+
api_attr :callbacks do
|
7
|
+
{}
|
8
|
+
end
|
9
|
+
|
10
|
+
def self_key_press=(value)
|
11
|
+
block_caller = Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT], &value)
|
12
|
+
_abi_impl_key_pressed block_caller
|
13
|
+
self.callbacks[:self_key_press] = block_caller
|
14
|
+
end
|
15
|
+
|
16
|
+
def self_can_gain_focus=(value)
|
17
|
+
block_caller = Fiddle::Closure::BlockCaller.new(Fiddle::TYPE_INT, [0], &value)
|
18
|
+
_abi_impl_can_gain_focus block_caller
|
19
|
+
self.callbacks[:self_can_gain_focus] = block_caller
|
20
|
+
end
|
21
|
+
|
22
|
+
def self_focus_changed=(value)
|
23
|
+
block_caller = Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT], &value)
|
24
|
+
_abi_impl_focus_changed block_caller
|
25
|
+
self.callbacks[:self_focus_changed] = block_caller
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/white_gold/dsl/font.rb
CHANGED
data/lib/white_gold/dsl/grid.rb
CHANGED
@@ -27,23 +27,47 @@ module Tgui
|
|
27
27
|
abi_unpack(Outline, _abi_get_widget_padding(w))
|
28
28
|
end
|
29
29
|
|
30
|
-
abi_enum "Alignment", :center, :
|
31
|
-
top_left: :
|
32
|
-
|
33
|
-
|
30
|
+
abi_enum "Alignment", :center, :top_left, :top, :top_right, :right, :bottom_right, :bottom, :bottom_left, :left,
|
31
|
+
left_top: :top_left, right_top: :upper_right, right_bottom: :bottom_right, left_bottom: :bottom_left
|
32
|
+
|
33
|
+
abi_packer Alignment do |*arg|
|
34
|
+
case arg.size
|
35
|
+
when 1
|
36
|
+
o = arg.first
|
37
|
+
when 2
|
38
|
+
a = case arg[0]
|
39
|
+
when :begin then :left
|
40
|
+
when :end then :right
|
41
|
+
else arg[0]
|
42
|
+
end
|
43
|
+
b = case arg[1]
|
44
|
+
when :begin then :top
|
45
|
+
when :end then :bottom
|
46
|
+
else arg[1]
|
47
|
+
end
|
48
|
+
o = if a == :center && b == :center
|
49
|
+
:center
|
50
|
+
elsif a == :center
|
51
|
+
b
|
52
|
+
elsif b == :center
|
53
|
+
a
|
54
|
+
else
|
55
|
+
"#{a}_#{b}".to_sym
|
56
|
+
end
|
57
|
+
else raise "Unsupported argument #{arg}"
|
58
|
+
end
|
59
|
+
Alignment.sym_to_i o
|
60
|
+
end
|
34
61
|
|
35
62
|
api_child :alignment= do |w, alignment|
|
36
|
-
|
63
|
+
p abi_pack(Alignment, *alignment)
|
64
|
+
_abi_set_widget_alignment w, abi_pack(Alignment, *alignment)
|
37
65
|
end
|
38
66
|
|
39
67
|
api_child :alignment do |w|
|
40
68
|
abi_unpack(Alignment, _abi_get_widget_alignment(w))
|
41
69
|
end
|
42
70
|
|
43
|
-
api_child :alignment do |w|
|
44
|
-
Alignment[_abi_get_widget_alignment]
|
45
|
-
end
|
46
|
-
|
47
71
|
api_child :cell= do |w, cell|
|
48
72
|
_abi_set_widget_cell w, abi_pack_integer(cell[0]), abi_pack_integer(cell[1])
|
49
73
|
end
|
@@ -82,11 +106,11 @@ module Tgui
|
|
82
106
|
return widgets
|
83
107
|
end
|
84
108
|
|
85
|
-
def
|
109
|
+
def self_add widget, id
|
86
110
|
super
|
87
|
-
_abi_set_widget_cell
|
88
|
-
_abi_set_widget_alignment
|
89
|
-
_abi_set_widget_padding
|
111
|
+
_abi_set_widget_cell abi_pack(Widget, widget), *cell
|
112
|
+
_abi_set_widget_alignment abi_pack(Widget, widget), abi_pack(Alignment, alignment) if alignment
|
113
|
+
_abi_set_widget_padding abi_pack(Widget, widget), abi_pack(Outline, *padding) if padding
|
90
114
|
if direction == :column
|
91
115
|
next_column false
|
92
116
|
else
|
data/lib/white_gold/dsl/gui.rb
CHANGED
@@ -9,8 +9,17 @@ module Tgui
|
|
9
9
|
abi_def :self_active?, :is_active, nil => Boolean
|
10
10
|
abi_def :self_poll_events, :poll_events
|
11
11
|
abi_def :self_draw, :draw
|
12
|
-
abi_def :
|
12
|
+
abi_def :background_color=, :set_clear_color, Color => nil
|
13
13
|
abi_attr :clipboard, String
|
14
|
+
abi_def :screen_size, :get_, nil => Vector2u
|
15
|
+
|
16
|
+
attr_accessor :page
|
17
|
+
|
18
|
+
def! :messagebox do |*a, **na, &b|
|
19
|
+
messagebox = MessageBox.new
|
20
|
+
@page.send! :add, messagebox
|
21
|
+
@page.scope! messagebox, *a, **na, &b
|
22
|
+
end
|
14
23
|
|
15
24
|
end
|
16
25
|
end
|
data/lib/white_gold/dsl/label.rb
CHANGED
@@ -26,6 +26,9 @@ module Tgui
|
|
26
26
|
abi_def :ignore_mouse_events?, :ignoring_mouse_events, nil => Boolean
|
27
27
|
abi_enum "HorizontalAlignment", :left, :center, :right
|
28
28
|
abi_attr :horizontal_alignment, HorizontalAlignment
|
29
|
+
def alignment=(a)
|
30
|
+
self.horizontal_alignment = a
|
31
|
+
end
|
29
32
|
abi_enum "VerticalAlignment", :top, :center, :bottom
|
30
33
|
abi_attr :vertical_alignment, VerticalAlignment
|
31
34
|
abi_enum Scrollbar::Policy
|
@@ -29,7 +29,7 @@ module Tgui
|
|
29
29
|
def block_caller &b
|
30
30
|
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP]) do |str1, str2|
|
31
31
|
id = @widget.abi_unpack_string(str2)
|
32
|
-
@widget.
|
32
|
+
@widget.host! do
|
33
33
|
b.(@widget.self_get_object_by_id(id), @widget)
|
34
34
|
end
|
35
35
|
end
|
@@ -55,26 +55,22 @@ module Tgui
|
|
55
55
|
abi_signal :on_scroll, SignalUInt
|
56
56
|
abi_attr :text_alignment, TextAlignment
|
57
57
|
|
58
|
-
class Item
|
59
|
-
def initialize list_box, id
|
60
|
-
@list_box = list_box
|
61
|
-
@id = id
|
62
|
-
end
|
58
|
+
class Item < WidgetLike
|
63
59
|
|
64
60
|
def object=(object)
|
65
|
-
|
61
|
+
host.self_objects[id] = object
|
66
62
|
end
|
67
63
|
|
68
64
|
def object
|
69
|
-
return
|
65
|
+
return host.self_objects[id]
|
70
66
|
end
|
71
67
|
|
72
68
|
def text=(text)
|
73
|
-
|
69
|
+
host._abi_change_item_by_id id, abi_pack_string(text)
|
74
70
|
end
|
75
71
|
|
76
72
|
def remove
|
77
|
-
|
73
|
+
host._abi_remove_item_by_id id
|
78
74
|
end
|
79
75
|
end
|
80
76
|
|
@@ -84,7 +80,7 @@ module Tgui
|
|
84
80
|
_abi_add_item abi_pack_string(text), abi_pack_string(id)
|
85
81
|
item = Item.new self, id
|
86
82
|
na[:object] ||= object
|
87
|
-
|
83
|
+
scope! item, **na, &b
|
88
84
|
end
|
89
85
|
|
90
86
|
def remove_all
|
@@ -31,7 +31,7 @@ module Tgui
|
|
31
31
|
class ListViewItemSignal < Tgui::SignalInt
|
32
32
|
def block_caller &b
|
33
33
|
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT]) do |index|
|
34
|
-
@widget.
|
34
|
+
@widget.host! do
|
35
35
|
b.(@widget.self_objects[index], @widget)
|
36
36
|
end
|
37
37
|
end
|
@@ -41,7 +41,7 @@ module Tgui
|
|
41
41
|
class ListViewColumnSignal < Tgui::SignalInt
|
42
42
|
def block_caller &b
|
43
43
|
Fiddle::Closure::BlockCaller.new(0, [Fiddle::TYPE_INT]) do |index|
|
44
|
-
@widget.
|
44
|
+
@widget.host! do
|
45
45
|
b.(@widget.columns[index], @widget)
|
46
46
|
end
|
47
47
|
end
|
@@ -93,14 +93,14 @@ module Tgui
|
|
93
93
|
index = _abi_add_column
|
94
94
|
column = Column.new self, index
|
95
95
|
columns << column
|
96
|
-
|
96
|
+
scope! column, **na, &b
|
97
97
|
end
|
98
98
|
|
99
99
|
def! :item do |object, **na, &b|
|
100
100
|
self_add_object object, na[:index]
|
101
101
|
item = Item.new self, object
|
102
102
|
na.delete :index
|
103
|
-
|
103
|
+
scope! item, **na, &b
|
104
104
|
end
|
105
105
|
|
106
106
|
def items=(items)
|
@@ -173,7 +173,7 @@ module Tgui
|
|
173
173
|
|
174
174
|
def! :grid_lines do | **na, &b|
|
175
175
|
lines = GridLines.new self
|
176
|
-
|
176
|
+
scope! lines, **na, &b
|
177
177
|
end
|
178
178
|
|
179
179
|
def grid_lines=(grid_lines)
|
@@ -199,7 +199,7 @@ module Tgui
|
|
199
199
|
|
200
200
|
def! :header do |**na, &b|
|
201
201
|
header = Header.new self
|
202
|
-
|
202
|
+
scope! header, **na, &b
|
203
203
|
end
|
204
204
|
|
205
205
|
def header=(header)
|