white_gold 0.0.2 → 0.0.3
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/extern_object.rb +6 -1
- data/lib/white_gold/abi/unpacker.rb +4 -2
- data/lib/white_gold/convention/bang_nest.rb +12 -2
- data/lib/white_gold/convention/bang_nested_caller.rb +34 -34
- data/lib/white_gold/convention/container_widgets.rb +29 -24
- data/lib/white_gold/convention/page.rb +20 -2
- data/lib/white_gold/convention/theme/text_styles_attribute.rb +7 -2
- data/lib/white_gold/convention/theme/theme_attributed.rb +1 -1
- data/lib/white_gold/convention/tree_node.rb +43 -0
- data/lib/white_gold/convention/widget_like.rb +0 -6
- data/lib/white_gold/dsl/backend_gui.rb +1 -0
- data/lib/white_gold/dsl/canvas.rb +40 -0
- data/lib/white_gold/dsl/chat_box.rb +1 -1
- data/lib/white_gold/dsl/child_window.rb +1 -1
- data/lib/white_gold/dsl/color.rb +5 -2
- data/lib/white_gold/dsl/combo_box.rb +2 -2
- data/lib/white_gold/dsl/container.rb +17 -11
- data/lib/white_gold/dsl/font.rb +5 -1
- data/lib/white_gold/dsl/grid.rb +3 -3
- data/lib/white_gold/dsl/list_box.rb +7 -11
- data/lib/white_gold/dsl/list_view.rb +6 -6
- data/lib/white_gold/dsl/menu_bar.rb +5 -48
- data/lib/white_gold/dsl/message_box.rb +2 -2
- data/lib/white_gold/dsl/panel_list_box.rb +3 -3
- data/lib/white_gold/dsl/sfml/circle_shape.rb +7 -0
- data/lib/white_gold/dsl/sfml/convex_shape.rb +15 -0
- data/lib/white_gold/dsl/sfml/rectangle_shape.rb +7 -0
- data/lib/white_gold/dsl/sfml/shape.rb +19 -0
- data/lib/white_gold/dsl/sfml/text.rb +22 -0
- data/lib/white_gold/dsl/signal/global_signal.rb +1 -1
- data/lib/white_gold/dsl/signal/signal.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_animation_type.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_bool.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_color.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_float.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_int.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_pointer.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_range.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_show_effect.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_string.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_u_int.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_vector2f.rb +1 -1
- data/lib/white_gold/dsl/tab_container.rb +2 -2
- data/lib/white_gold/dsl/tabs.rb +2 -2
- data/lib/white_gold/dsl/theme.rb +1 -1
- data/lib/white_gold/dsl/tree_view.rb +21 -33
- data/lib/white_gold/dsl/widget.rb +71 -38
- data/lib/white_gold/generated/tgui-abi-loader.gf.rb +197 -47
- data/lib/white_gold/master.rb +21 -40
- data/lib/white_gold/tgui-abi.rb +16 -16
- data/lib/white_gold/version.rb +3 -0
- data/lib/white_gold.rb +29 -28
- metadata +16 -5
data/lib/white_gold/master.rb
CHANGED
@@ -17,7 +17,7 @@ class WhiteGold
|
|
17
17
|
@frame_delay = 1.0 / fps
|
18
18
|
end
|
19
19
|
|
20
|
-
def init
|
20
|
+
def init fps: nil, theme: nil
|
21
21
|
@window = Window.new
|
22
22
|
@gui = Gui.new window
|
23
23
|
@preserved_pages = {}
|
@@ -25,12 +25,12 @@ class WhiteGold
|
|
25
25
|
self.fps = fps if fps
|
26
26
|
@frame_delay = 0.015 if !@frame_delay
|
27
27
|
@jobs = []
|
28
|
-
@
|
29
|
-
load_page init_page
|
28
|
+
@initialized = true
|
30
29
|
end
|
31
30
|
|
32
|
-
def run
|
33
|
-
self.init
|
31
|
+
def run page = nil, fps: nil, theme: nil
|
32
|
+
self.init fps: fps, theme: theme if !@initialized
|
33
|
+
load_page page if page
|
34
34
|
|
35
35
|
next_frame_time = Time.now
|
36
36
|
while @gui.self_active?
|
@@ -53,35 +53,33 @@ class WhiteGold
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def load_page page_id
|
56
|
-
@current_page_id = page_id
|
56
|
+
@next_page_id = @current_page_id = page_id
|
57
57
|
case page_id
|
58
58
|
when Symbol
|
59
59
|
page = @preserved_pages[page_id] = Page.new self
|
60
|
-
|
61
|
-
@current_page = page
|
62
|
-
ExternObject.callback_storage = page.widget_callbacks
|
63
|
-
ExternObject.global_callback_storage = page.global_callbacks
|
64
|
-
ExternObject.data_storage = page.custom_data
|
60
|
+
init_page page
|
65
61
|
send(page_id)
|
66
62
|
when Class
|
67
63
|
page = @preserved_pages[page_id] = page_id.new self
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
ExternObject.data_storage = page.custom_data
|
73
|
-
page.build
|
64
|
+
init_page page
|
65
|
+
page.send! do
|
66
|
+
page.build
|
67
|
+
end
|
74
68
|
when Proc
|
75
69
|
page = @preserved_pages[page_id] = Page.new self
|
76
|
-
|
77
|
-
|
78
|
-
ExternObject.callback_storage = page.widget_callbacks
|
79
|
-
ExternObject.global_callback_storage = page.global_callbacks
|
80
|
-
ExternObject.data_storage = page.custom_data
|
81
|
-
instance_exec &page_id
|
70
|
+
init_page page
|
71
|
+
page_id.call
|
82
72
|
end
|
83
73
|
end
|
84
74
|
|
75
|
+
def init_page page
|
76
|
+
@gui.self_add page, "main_container"
|
77
|
+
@current_page = page
|
78
|
+
ExternObject.callback_storage = page.widget_callbacks
|
79
|
+
ExternObject.global_callback_storage = page.global_callbacks
|
80
|
+
ExternObject.data_storage = page.custom_data
|
81
|
+
end
|
82
|
+
|
85
83
|
attr_accessor :next_page_id
|
86
84
|
attr :gui, :window
|
87
85
|
|
@@ -150,21 +148,4 @@ class WhiteGold
|
|
150
148
|
job delay: delay || delay_, repeat: do
|
151
149
|
end.on_done &b
|
152
150
|
end
|
153
|
-
|
154
|
-
def respond_to? name
|
155
|
-
super || @current_page.respond_to?(name)
|
156
|
-
end
|
157
|
-
|
158
|
-
def method_missing name, *a, **na, &b
|
159
|
-
if @current_page.respond_to? name
|
160
|
-
@current_page.send(name, *a, **na, &b)
|
161
|
-
elsif @gui.respond_to? name
|
162
|
-
@gui.send(name, *a, **na, &b)
|
163
|
-
elsif @window.respond_to? name
|
164
|
-
@window.send(name, *a, **na, &b)
|
165
|
-
else
|
166
|
-
no_method_error = "method '#{name}' missing in Page/Gui/Window"
|
167
|
-
raise no_method_error
|
168
|
-
end
|
169
|
-
end
|
170
151
|
end
|
data/lib/white_gold/tgui-abi.rb
CHANGED
@@ -160,14 +160,16 @@ class ExternObject
|
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
163
|
-
abi_packer Tgui::Abi::Vector2f do |
|
164
|
-
case
|
165
|
-
when
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
163
|
+
abi_packer Tgui::Abi::Vector2f do |*arg|
|
164
|
+
case arg.size
|
165
|
+
when 1
|
166
|
+
a = arg.first
|
167
|
+
x = y = a
|
168
|
+
when 2
|
169
|
+
x, y = *arg
|
170
|
+
else raise "Unsupported argument #{arg}"
|
170
171
|
end
|
172
|
+
[abi_pack_float(x), abi_pack_float(y)]
|
171
173
|
end
|
172
174
|
|
173
175
|
abi_packer Tgui::Abi::Vector2u do |o|
|
@@ -219,21 +221,19 @@ class ExternObject
|
|
219
221
|
o.odd?
|
220
222
|
end
|
221
223
|
|
222
|
-
|
223
|
-
[o.x, o.y]
|
224
|
-
end
|
225
|
-
|
226
|
-
abi_unpacker "PositionLayout" do |o|
|
227
|
-
[o.x, o.y]
|
228
|
-
end
|
229
|
-
|
230
|
-
abi_unpacker Tgui::Vector2f do |o|
|
224
|
+
vector2f_unpacker = proc do |o|
|
231
225
|
v = Tgui::Vector2f.new o
|
232
226
|
r = [v.x, v.y]
|
233
227
|
Util.free(o)
|
234
228
|
r
|
235
229
|
end
|
236
230
|
|
231
|
+
abi_unpacker "SizeLayout", &vector2f_unpacker
|
232
|
+
|
233
|
+
abi_unpacker "PositionLayout", &vector2f_unpacker
|
234
|
+
|
235
|
+
abi_unpacker Tgui::Vector2f, &vector2f_unpacker
|
236
|
+
|
237
237
|
abi_unpacker Tgui::Vector2u do |o|
|
238
238
|
v = Tgui::Vector2u.new o
|
239
239
|
r = [v.x, v.y]
|
data/lib/white_gold.rb
CHANGED
@@ -1,47 +1,48 @@
|
|
1
1
|
require_relative 'white_gold/master'
|
2
2
|
include Tgui
|
3
3
|
|
4
|
-
@
|
4
|
+
@white_gold_instance = WhiteGold.new
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
10
|
-
end
|
6
|
+
class << self
|
7
|
+
include BangNestedCaller
|
8
|
+
include BangDef
|
11
9
|
|
12
|
-
|
10
|
+
def go page
|
11
|
+
@white_gold_instance.go page.is_a?(Symbol) ? proc{ send(page) } : page
|
12
|
+
end
|
13
|
+
|
14
|
+
def page
|
15
|
+
@white_gold_instance.page
|
16
|
+
end
|
13
17
|
|
14
18
|
def respond_to? name
|
15
|
-
super ||
|
19
|
+
super ||
|
20
|
+
(name.end_with?("!") && bang_respond_to?(name[...-1])) ||
|
21
|
+
@white_gold_instance.page.respond_to?(name)
|
16
22
|
end
|
17
23
|
|
18
24
|
def method_missing name, *a, **na, &b
|
19
|
-
if name.end_with?
|
20
|
-
|
25
|
+
if name.end_with? "!"
|
26
|
+
bang_method_missing name[...-1], *a, **na, &b
|
27
|
+
elsif @white_gold_instance.page.respond_to? name
|
28
|
+
@white_gold_instance.page.send name, *a, **na, &b
|
21
29
|
else super
|
22
30
|
end
|
23
31
|
end
|
32
|
+
end
|
24
33
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
def page
|
31
|
-
@wg.page
|
32
|
-
end
|
33
|
-
|
34
|
-
def def! name, &b
|
35
|
-
@wg.page.class.def! name, &b
|
36
|
-
end
|
34
|
+
def! :run do |page = nil|
|
35
|
+
go page if page
|
36
|
+
@white_gold_instance.run
|
37
|
+
@white_gold_instance = nil
|
37
38
|
end
|
38
39
|
|
39
|
-
@
|
40
|
+
@white_gold_instance.init
|
41
|
+
@white_gold_instance.load_page Page
|
40
42
|
if $0 != 'irb'
|
41
43
|
at_exit do
|
42
|
-
|
43
|
-
rescue NameError
|
44
|
-
ensure
|
45
|
-
@wg.run init: false
|
44
|
+
@white_gold_instance&.run
|
46
45
|
end
|
47
|
-
end
|
46
|
+
end
|
47
|
+
|
48
|
+
BangNestedCaller.push self
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: white_gold
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Łukasz Pomietło
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fiddle
|
@@ -24,8 +24,10 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.1'
|
27
|
-
description:
|
28
|
-
|
27
|
+
description: |2
|
28
|
+
Ruby gem for building pure ruby graphical user interface.
|
29
|
+
Uses TGUI & SFML as a backend.
|
30
|
+
Dedicated to creating single-file applications and learning programming.
|
29
31
|
email: oficjalnyadreslukasza@gmail.com
|
30
32
|
executables: []
|
31
33
|
extensions: []
|
@@ -74,6 +76,7 @@ files:
|
|
74
76
|
- lib/white_gold/convention/theme/theme_attributed.rb
|
75
77
|
- lib/white_gold/convention/theme/theme_component.rb
|
76
78
|
- lib/white_gold/convention/theme_attributes.rb
|
79
|
+
- lib/white_gold/convention/tree_node.rb
|
77
80
|
- lib/white_gold/convention/unit.rb
|
78
81
|
- lib/white_gold/convention/widget_like.rb
|
79
82
|
- lib/white_gold/dsl/backend_gui.rb
|
@@ -82,6 +85,7 @@ files:
|
|
82
85
|
- lib/white_gold/dsl/box_layout_ratios.rb
|
83
86
|
- lib/white_gold/dsl/button.rb
|
84
87
|
- lib/white_gold/dsl/button_base.rb
|
88
|
+
- lib/white_gold/dsl/canvas.rb
|
85
89
|
- lib/white_gold/dsl/chat_box.rb
|
86
90
|
- lib/white_gold/dsl/check_box.rb
|
87
91
|
- lib/white_gold/dsl/child_window.rb
|
@@ -116,6 +120,11 @@ files:
|
|
116
120
|
- lib/white_gold/dsl/scrollable_panel.rb
|
117
121
|
- lib/white_gold/dsl/scrollbar.rb
|
118
122
|
- lib/white_gold/dsl/separator_line.rb
|
123
|
+
- lib/white_gold/dsl/sfml/circle_shape.rb
|
124
|
+
- lib/white_gold/dsl/sfml/convex_shape.rb
|
125
|
+
- lib/white_gold/dsl/sfml/rectangle_shape.rb
|
126
|
+
- lib/white_gold/dsl/sfml/shape.rb
|
127
|
+
- lib/white_gold/dsl/sfml/text.rb
|
119
128
|
- lib/white_gold/dsl/signal/global_signal.rb
|
120
129
|
- lib/white_gold/dsl/signal/signal.rb
|
121
130
|
- lib/white_gold/dsl/signal/signal_animation_type.rb
|
@@ -159,10 +168,12 @@ files:
|
|
159
168
|
- lib/white_gold/path/string.path.rb
|
160
169
|
- lib/white_gold/tgui-abi.rb
|
161
170
|
- lib/white_gold/tgui-config.rb
|
171
|
+
- lib/white_gold/version.rb
|
162
172
|
homepage: https://github.com/lpogic/white_gold
|
163
173
|
licenses:
|
164
174
|
- Zlib
|
165
|
-
metadata:
|
175
|
+
metadata:
|
176
|
+
documentation_uri: https://github.com/lpogic/white_gold/blob/master/doc/wiki/README.md
|
166
177
|
post_install_message:
|
167
178
|
rdoc_options: []
|
168
179
|
require_paths:
|