white_gold 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ef8367abb4fbdbbcab9b6fb824a8660bbe43e60ff818dfb4838205a1ff4c97c
|
4
|
+
data.tar.gz: ffda1d2acecfd09228b7650cf08142d7c5bdb8efc5113e33dd66b2a111be887a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b201a718db038a62788d2e3a89e51adb692fee0667c79037ae331c97f18f4b4756a02048ae82b7fb33204ab423b02088406b7f4e62b76ee849ff5f59c0113182
|
7
|
+
data.tar.gz: af5a2ee75a76096a46bd4c6d0b8f28058ca45eb04d1e213c2d686822be1a109d4bded3eddcfca902d0a18d032ba0f4c3ec07c3bb111c40567dad63206e22482c
|
data/ext/dll/tgui.dll
CHANGED
Binary file
|
data/ext/so/libtgui.so
CHANGED
Binary file
|
data/lib/white_gold/abi/enum.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require_relative '../reducer'
|
2
|
-
|
3
1
|
module Interface
|
4
2
|
|
5
3
|
def self.abi_const_string_method_suffix str
|
@@ -8,17 +6,15 @@ module Interface
|
|
8
6
|
|
9
7
|
def self.parse_packer packer
|
10
8
|
case packer
|
11
|
-
when Proc
|
9
|
+
when Proc
|
12
10
|
packer
|
13
11
|
when Array
|
14
12
|
packers = packer.map{ parse_packer _1 }
|
15
13
|
proc do |host, *a|
|
16
|
-
|
17
|
-
packers.map do |packer|
|
14
|
+
packers.zip(a).map do |packer, arg|
|
18
15
|
case packer
|
19
|
-
when Proc then packer.call host, *
|
16
|
+
when Proc then packer.call host, *arg
|
20
17
|
when nil then ai.next
|
21
|
-
when Reducer then packer.call host, *(0..packer.reduction).map{ ai.next }
|
22
18
|
else packer
|
23
19
|
end
|
24
20
|
end.flatten
|
@@ -1,5 +1,19 @@
|
|
1
|
+
require_relative 'bang_nested_caller'
|
2
|
+
|
1
3
|
module BangDef
|
2
4
|
def def! name, &b
|
3
5
|
define_method "api_bang_#{name}", &b
|
4
6
|
end
|
7
|
+
|
8
|
+
@@redef_index = 0
|
9
|
+
|
10
|
+
def redef! name, &b
|
11
|
+
@@redef_index = index = @@redef_index.next
|
12
|
+
old = "api_bang_#{index}_#{name}"
|
13
|
+
news = "api_bang_#{name}"
|
14
|
+
alias_method old, news
|
15
|
+
define_method news do |*a, **na, &bl|
|
16
|
+
b.call old, *a, **na, &bl
|
17
|
+
end
|
18
|
+
end
|
5
19
|
end
|
@@ -1,19 +1,51 @@
|
|
1
1
|
module BangNestedCaller
|
2
|
+
API_BANG_PREFIX = "api_bang_".freeze
|
2
3
|
|
3
4
|
@@bang_stack = []
|
5
|
+
@@bang_roots = []
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def stack
|
9
|
+
@@bang_stack
|
10
|
+
end
|
11
|
+
|
12
|
+
def roots
|
13
|
+
@@bang_roots
|
14
|
+
end
|
15
|
+
|
16
|
+
def current root
|
17
|
+
@@bang_roots.include?(root) ? @@bang_stack.last : root
|
18
|
+
end
|
19
|
+
|
20
|
+
def push object
|
21
|
+
@@bang_stack.push object
|
22
|
+
end
|
23
|
+
|
24
|
+
def pop
|
25
|
+
@@bang_stack.pop
|
26
|
+
end
|
27
|
+
|
28
|
+
def open_scope object
|
29
|
+
@@bang_roots << object
|
30
|
+
end
|
31
|
+
|
32
|
+
def close_scope object
|
33
|
+
@@bang_roots.delete_at @@bang_roots.index(object)
|
34
|
+
end
|
35
|
+
end
|
4
36
|
|
5
37
|
def self!
|
6
|
-
|
38
|
+
BangNestedCaller.current self
|
7
39
|
end
|
8
40
|
|
9
41
|
def bang_respond_to? name
|
10
|
-
top =
|
11
|
-
top.respond_to?("#{name}=") || top.respond_to?("
|
42
|
+
top = BangNestedCaller.current self
|
43
|
+
top.respond_to?("#{name}=") || top.respond_to?("#{API_BANG_PREFIX}#{name}")
|
12
44
|
end
|
13
45
|
|
14
|
-
def
|
15
|
-
top =
|
16
|
-
api_bang_name = "
|
46
|
+
def bang_method_missing name, *a, **na, &b
|
47
|
+
top = BangNestedCaller.current self
|
48
|
+
api_bang_name = "#{API_BANG_PREFIX}#{name}".to_sym
|
17
49
|
return top.send(api_bang_name, *a, **na, &b) if top.respond_to? api_bang_name
|
18
50
|
setter = "#{name}=".to_sym
|
19
51
|
if top.respond_to? setter
|
@@ -26,23 +58,24 @@ module BangNestedCaller
|
|
26
58
|
raise no_method_error
|
27
59
|
end
|
28
60
|
|
29
|
-
def
|
30
|
-
|
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
|
37
|
-
end
|
61
|
+
def send! method, *a, **na, &b
|
62
|
+
send "api_bang_#{method}", *a, **na, &b
|
38
63
|
end
|
39
64
|
|
40
|
-
def
|
41
|
-
if b
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
65
|
+
def host! &b
|
66
|
+
return self if !b
|
67
|
+
BangNestedCaller.push self
|
68
|
+
result = b.call self
|
69
|
+
BangNestedCaller.pop
|
70
|
+
result
|
71
|
+
end
|
72
|
+
|
73
|
+
def scope! scoped = nil, *a, **na, &b
|
74
|
+
scoped ||= self
|
75
|
+
BangNestedCaller.open_scope self
|
76
|
+
scoped.host! *a, **na, &b
|
77
|
+
BangNestedCaller.close_scope self
|
78
|
+
scoped
|
47
79
|
end
|
80
|
+
|
48
81
|
end
|
@@ -6,45 +6,46 @@ module Tgui
|
|
6
6
|
bitmap_button: Tgui::BitmapButton,
|
7
7
|
button: Tgui::Button,
|
8
8
|
canvas: Tgui::Canvas,
|
9
|
-
chatbox: Tgui::
|
10
|
-
checkbox: Tgui::
|
9
|
+
chatbox: Tgui::Chatbox,
|
10
|
+
checkbox: Tgui::Checkbox,
|
11
11
|
child_window: Tgui::ChildWindow,
|
12
12
|
color_picker: Tgui::ColorPicker,
|
13
|
-
combobox: Tgui::
|
14
|
-
editbox: Tgui::
|
13
|
+
combobox: Tgui::Combobox,
|
14
|
+
editbox: Tgui::Editbox,
|
15
15
|
file_dialog: Tgui::FileDialog,
|
16
16
|
grid: Tgui::Grid,
|
17
17
|
group: Tgui::Group,
|
18
|
-
|
19
|
-
|
18
|
+
hlayout: Tgui::Hlayout,
|
19
|
+
hwrap: Tgui::Hwrap,
|
20
20
|
knob: Tgui::Knob,
|
21
21
|
label: Tgui::Label,
|
22
|
-
listbox: Tgui::
|
23
|
-
listview: Tgui::
|
24
|
-
menu: Tgui::
|
25
|
-
messagebox: Tgui::MessageBox,
|
22
|
+
listbox: Tgui::Listbox,
|
23
|
+
listview: Tgui::Listview,
|
24
|
+
menu: Tgui::Menu,
|
26
25
|
panel: Tgui::Panel,
|
27
|
-
panel_listbox: Tgui::
|
28
|
-
panel_tabs: Tgui::
|
29
|
-
progressbar: Tgui::
|
30
|
-
|
31
|
-
|
26
|
+
panel_listbox: Tgui::PanelListbox,
|
27
|
+
panel_tabs: Tgui::PanelTabs,
|
28
|
+
progressbar: Tgui::Progressbar,
|
29
|
+
radio: Tgui::RadioButton,
|
30
|
+
radio_group: Tgui::RadioGroup,
|
32
31
|
range_slider: Tgui::RangeSlider,
|
33
|
-
fancy_label: Tgui::
|
32
|
+
fancy_label: Tgui::FancyLabel,
|
34
33
|
scrollbar: Tgui::Scrollbar,
|
35
|
-
separator: Tgui::
|
34
|
+
separator: Tgui::Separator,
|
36
35
|
slider: Tgui::Slider,
|
37
|
-
|
38
|
-
|
36
|
+
spinner: Tgui::Spinner,
|
37
|
+
spinbox: Tgui::Spinbox,
|
39
38
|
tabs: Tgui::Tabs,
|
40
|
-
textarea: Tgui::
|
39
|
+
textarea: Tgui::Textarea,
|
41
40
|
toggle_button: Tgui::ToggleButton,
|
42
|
-
treeview: Tgui::
|
43
|
-
|
41
|
+
treeview: Tgui::Treeview,
|
42
|
+
vlayout: Tgui::Vlayout,
|
44
43
|
}.freeze
|
45
44
|
|
46
45
|
UNORDINARY_WIDGETS = {
|
47
|
-
|
46
|
+
messagebox: Tgui::Messagebox,
|
47
|
+
picture: Tgui::Picture,
|
48
|
+
keyboard_control: Tgui::KeyboardControl
|
48
49
|
}
|
49
50
|
|
50
51
|
def self.widget_set
|
@@ -54,40 +55,12 @@ module Tgui
|
|
54
55
|
module WidgetOwner
|
55
56
|
extend BangDef
|
56
57
|
|
57
|
-
def self_common_widget_nest widget, *keys, id: nil, **na, &b
|
58
|
-
club_params = {}
|
59
|
-
Enumerator.new do |e|
|
60
|
-
cl = widget.class
|
61
|
-
while cl != Object
|
62
|
-
e << cl
|
63
|
-
cl = cl.superclass
|
64
|
-
end
|
65
|
-
e << Object
|
66
|
-
end.to_a.reverse!.each do |key|
|
67
|
-
if key == widget.class
|
68
|
-
club = page.club key
|
69
|
-
club.join id if id
|
70
|
-
else
|
71
|
-
club = page.club key, create_on_missing: false
|
72
|
-
end
|
73
|
-
club_params.merge! club.params if club
|
74
|
-
end
|
75
|
-
|
76
|
-
keys.each do |key|
|
77
|
-
club = page.club key
|
78
|
-
club.join id if id
|
79
|
-
club_params.merge! club.params
|
80
|
-
end
|
81
|
-
|
82
|
-
widget.send! **club_params, **na, &b
|
83
|
-
end
|
84
|
-
|
85
58
|
def self_child_methods
|
86
59
|
## TO OPTIMIZE
|
87
60
|
methods.filter{ _1.start_with? ApiChild::API_CHILD_PREFIX }
|
88
61
|
end
|
89
62
|
|
90
|
-
def
|
63
|
+
def self_equip_widget widget
|
91
64
|
widget.page = page
|
92
65
|
parent = self
|
93
66
|
self_child_methods.each do |method|
|
@@ -99,10 +72,10 @@ module Tgui
|
|
99
72
|
end
|
100
73
|
|
101
74
|
ORDINARY_WIDGETS.each do |m, c|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
75
|
+
def! m do |*a, **na, &b|
|
76
|
+
widget = c.new
|
77
|
+
add! widget
|
78
|
+
scope! widget, *a, **na, &b
|
106
79
|
end
|
107
80
|
end
|
108
81
|
|
@@ -117,35 +90,23 @@ module Tgui
|
|
117
90
|
)
|
118
91
|
transparent = na[:transparent] || false
|
119
92
|
pic = Tgui::Picture.new texture, transparent
|
120
|
-
|
121
|
-
|
93
|
+
add! pic
|
94
|
+
scope! pic, *a, **na.except(:url, :part_rect, :smooth, :transparent), &b
|
122
95
|
end
|
123
96
|
|
124
|
-
|
125
|
-
radio = RadioButton.new
|
126
|
-
self_equip_child_widget radio
|
127
|
-
radio.object = object
|
128
|
-
na[:text] ||= object.to_s
|
129
|
-
self_common_widget_equip radio, *a, **na, &b
|
130
|
-
end
|
131
|
-
|
132
|
-
def! :msg do |text, **buttons|
|
133
|
-
buttons["OK"] = nil if buttons.empty?
|
134
|
-
api_bang_message_box text:, position: :center, label_alignment: :center, buttons: (buttons.map do |k, v|
|
135
|
-
procedure = proc do |o, b, w|
|
136
|
-
v&.call
|
137
|
-
w.close true
|
138
|
-
end
|
139
|
-
[k, procedure]
|
140
|
-
end)
|
141
|
-
end
|
142
|
-
|
143
|
-
@@auto_button_name = "Button0"
|
97
|
+
@@auto_btn_name = "Button0"
|
144
98
|
|
145
99
|
def! :btn do |text = nil, **na, &on_press|
|
146
|
-
text = @@
|
100
|
+
text = @@auto_btn_name = @@auto_btn_name.next if !text
|
147
101
|
api_bang_button text:, on_press:, **na
|
148
102
|
end
|
103
|
+
|
104
|
+
def! :keyboard_control do |*a, focus: true, **na, &b|
|
105
|
+
keyboard_control = KeyboardControl.new
|
106
|
+
add! keyboard_control
|
107
|
+
keyboard_control.focus! if focus
|
108
|
+
scope! keyboard_control, *a, **na, &b
|
109
|
+
end
|
149
110
|
end
|
150
111
|
|
151
112
|
class Container
|
@@ -153,17 +114,16 @@ module Tgui
|
|
153
114
|
|
154
115
|
@@auto_widget_id = "@/"
|
155
116
|
|
156
|
-
def
|
117
|
+
def! :add do |widget|
|
118
|
+
self_equip_widget widget
|
157
119
|
@@auto_widget_id = id = @@auto_widget_id.next
|
158
|
-
|
159
|
-
self_common_widget_nest widget, *keys, id:, **na, &b
|
120
|
+
self_add widget, id
|
160
121
|
end
|
161
|
-
|
162
122
|
end
|
163
123
|
|
164
124
|
class TabContainer
|
165
125
|
|
166
|
-
def
|
126
|
+
def self_add widget, name
|
167
127
|
raise NoMethodError.new("Widget can't be added to TabContainer directly. Add it to TabContainer panel instead.")
|
168
128
|
end
|
169
129
|
|
@@ -174,9 +134,9 @@ module Tgui
|
|
174
134
|
|
175
135
|
attr :widget
|
176
136
|
|
177
|
-
def
|
137
|
+
def! :add do |widget, *keys, **na, &b|
|
178
138
|
@widget = widget
|
179
|
-
|
139
|
+
scope! widget, *keys, **na, &b
|
180
140
|
end
|
181
141
|
end
|
182
142
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require_relative "club"
|
2
2
|
|
3
|
-
class Page < Tgui::
|
3
|
+
class Page < Tgui::Panel
|
4
4
|
|
5
5
|
def initialize tgui
|
6
6
|
super()
|
@@ -97,11 +97,11 @@ class Page < Tgui::Group
|
|
97
97
|
theme = self.theme
|
98
98
|
if seed
|
99
99
|
theme.reset_attributes
|
100
|
-
|
101
|
-
|
100
|
+
scope! theme do
|
101
|
+
eval File.read(Tgui::Theme.loadpath(seed))
|
102
102
|
end
|
103
103
|
end
|
104
|
-
|
104
|
+
scope! theme, **na, &b
|
105
105
|
theme.self_commit @custom_renderers
|
106
106
|
end
|
107
107
|
|
@@ -111,4 +111,10 @@ class Page < Tgui::Group
|
|
111
111
|
theme.source = path
|
112
112
|
theme.self_commit @custom_renderers
|
113
113
|
end
|
114
|
+
|
115
|
+
def! :messagebox do |*a, **na, &b|
|
116
|
+
messagebox = MessageBox.new
|
117
|
+
add! messagebox
|
118
|
+
scope! messagebox, *a, **na, &b
|
119
|
+
end
|
114
120
|
end
|
@@ -1,13 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module Tgui
|
2
|
+
class BooleanAttribute
|
3
|
+
def initialize name, value
|
4
|
+
@name = name
|
5
|
+
@value = value[0]
|
6
|
+
end
|
6
7
|
|
7
|
-
|
8
|
-
|
8
|
+
attr :name
|
9
|
+
attr :value
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
def to_theme
|
12
|
+
"#{name} = #{value};"
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
@@ -1,15 +1,17 @@
|
|
1
1
|
require_relative '../../dsl/color'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
module Tgui
|
4
|
+
class ColorAttribute
|
5
|
+
def initialize name, value
|
6
|
+
@name = name
|
7
|
+
@value = Color.from *value
|
8
|
+
end
|
8
9
|
|
9
|
-
|
10
|
-
|
10
|
+
attr :name
|
11
|
+
attr :value
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
def to_theme
|
14
|
+
"#{name} = #{value.to_s};"
|
15
|
+
end
|
14
16
|
end
|
15
17
|
end
|
@@ -1,13 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module Tgui
|
2
|
+
class FloatAttribute
|
3
|
+
def initialize name, value
|
4
|
+
@name = name
|
5
|
+
@value = value[0]
|
6
|
+
end
|
6
7
|
|
7
|
-
|
8
|
-
|
8
|
+
attr :name
|
9
|
+
attr :value
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
def to_theme
|
12
|
+
"#{name} = #{value};"
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
@@ -1,15 +1,17 @@
|
|
1
1
|
require_relative '../../dsl/outline'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
module Tgui
|
4
|
+
class OutlineAttribute
|
5
|
+
def initialize name, value
|
6
|
+
@name = name
|
7
|
+
@value = Outline.from *value
|
8
|
+
end
|
8
9
|
|
9
|
-
|
10
|
-
|
10
|
+
attr :name
|
11
|
+
attr :value
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
def to_theme
|
14
|
+
"#{name} = #{value.to_s};"
|
15
|
+
end
|
14
16
|
end
|
15
17
|
end
|
@@ -1,18 +1,20 @@
|
|
1
1
|
require_relative '../../abi/extern_object'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
attr :name
|
14
|
+
attr :value
|
14
15
|
|
15
|
-
|
16
|
-
|
16
|
+
def to_theme
|
17
|
+
"#{name} = #{value};"
|
18
|
+
end
|
17
19
|
end
|
18
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,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
|