white_gold 0.0.2 → 0.0.3
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/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:
|