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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/ext/dll/tgui.dll +0 -0
  3. data/ext/so/libtgui.so +0 -0
  4. data/lib/white_gold/abi/extern_object.rb +6 -1
  5. data/lib/white_gold/abi/unpacker.rb +4 -2
  6. data/lib/white_gold/convention/bang_nest.rb +12 -2
  7. data/lib/white_gold/convention/bang_nested_caller.rb +34 -34
  8. data/lib/white_gold/convention/container_widgets.rb +29 -24
  9. data/lib/white_gold/convention/page.rb +20 -2
  10. data/lib/white_gold/convention/theme/text_styles_attribute.rb +7 -2
  11. data/lib/white_gold/convention/theme/theme_attributed.rb +1 -1
  12. data/lib/white_gold/convention/tree_node.rb +43 -0
  13. data/lib/white_gold/convention/widget_like.rb +0 -6
  14. data/lib/white_gold/dsl/backend_gui.rb +1 -0
  15. data/lib/white_gold/dsl/canvas.rb +40 -0
  16. data/lib/white_gold/dsl/chat_box.rb +1 -1
  17. data/lib/white_gold/dsl/child_window.rb +1 -1
  18. data/lib/white_gold/dsl/color.rb +5 -2
  19. data/lib/white_gold/dsl/combo_box.rb +2 -2
  20. data/lib/white_gold/dsl/container.rb +17 -11
  21. data/lib/white_gold/dsl/font.rb +5 -1
  22. data/lib/white_gold/dsl/grid.rb +3 -3
  23. data/lib/white_gold/dsl/list_box.rb +7 -11
  24. data/lib/white_gold/dsl/list_view.rb +6 -6
  25. data/lib/white_gold/dsl/menu_bar.rb +5 -48
  26. data/lib/white_gold/dsl/message_box.rb +2 -2
  27. data/lib/white_gold/dsl/panel_list_box.rb +3 -3
  28. data/lib/white_gold/dsl/sfml/circle_shape.rb +7 -0
  29. data/lib/white_gold/dsl/sfml/convex_shape.rb +15 -0
  30. data/lib/white_gold/dsl/sfml/rectangle_shape.rb +7 -0
  31. data/lib/white_gold/dsl/sfml/shape.rb +19 -0
  32. data/lib/white_gold/dsl/sfml/text.rb +22 -0
  33. data/lib/white_gold/dsl/signal/global_signal.rb +1 -1
  34. data/lib/white_gold/dsl/signal/signal.rb +1 -1
  35. data/lib/white_gold/dsl/signal/signal_animation_type.rb +1 -1
  36. data/lib/white_gold/dsl/signal/signal_bool.rb +1 -1
  37. data/lib/white_gold/dsl/signal/signal_color.rb +1 -1
  38. data/lib/white_gold/dsl/signal/signal_float.rb +1 -1
  39. data/lib/white_gold/dsl/signal/signal_int.rb +1 -1
  40. data/lib/white_gold/dsl/signal/signal_pointer.rb +1 -1
  41. data/lib/white_gold/dsl/signal/signal_range.rb +1 -1
  42. data/lib/white_gold/dsl/signal/signal_show_effect.rb +1 -1
  43. data/lib/white_gold/dsl/signal/signal_string.rb +1 -1
  44. data/lib/white_gold/dsl/signal/signal_u_int.rb +1 -1
  45. data/lib/white_gold/dsl/signal/signal_vector2f.rb +1 -1
  46. data/lib/white_gold/dsl/tab_container.rb +2 -2
  47. data/lib/white_gold/dsl/tabs.rb +2 -2
  48. data/lib/white_gold/dsl/theme.rb +1 -1
  49. data/lib/white_gold/dsl/tree_view.rb +21 -33
  50. data/lib/white_gold/dsl/widget.rb +71 -38
  51. data/lib/white_gold/generated/tgui-abi-loader.gf.rb +197 -47
  52. data/lib/white_gold/master.rb +21 -40
  53. data/lib/white_gold/tgui-abi.rb +16 -16
  54. data/lib/white_gold/version.rb +3 -0
  55. data/lib/white_gold.rb +29 -28
  56. metadata +16 -5
@@ -17,7 +17,7 @@ class WhiteGold
17
17
  @frame_delay = 1.0 / fps
18
18
  end
19
19
 
20
- def init init_page = :main_page, fps: nil, theme: nil
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
- @next_page_id = init_page
29
- load_page init_page
28
+ @initialized = true
30
29
  end
31
30
 
32
- def run init_page = :main_page, fps: nil, theme: nil, init: true
33
- self.init init_page, fps: fps, theme: theme if 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
- @gui.self_add page, "main_container"
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
- @gui.self_add page, "main_container"
69
- @current_page = page
70
- ExternObject.callback_storage = page.widget_callbacks
71
- ExternObject.global_callback_storage = page.global_callbacks
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
- @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
- 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
@@ -160,14 +160,16 @@ class ExternObject
160
160
  end
161
161
  end
162
162
 
163
- abi_packer Tgui::Abi::Vector2f do |o|
164
- case o
165
- when Array
166
- raise "Invalid array size excepted: #{2}, given: #{o.size}" if o.size != 2
167
- return o.map{ abi_pack_float _1 }
168
- else
169
- raise "Unable to make Vector2f from #{o}"
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
- abi_unpacker "SizeLayout" do |o|
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]
@@ -0,0 +1,3 @@
1
+ class WhiteGold
2
+ VERSION = "0.0.3"
3
+ end
data/lib/white_gold.rb CHANGED
@@ -1,47 +1,48 @@
1
1
  require_relative 'white_gold/master'
2
2
  include Tgui
3
3
 
4
- @wg = WhiteGold.new
4
+ @white_gold_instance = WhiteGold.new
5
5
 
6
- @wg.methods.difference(Object.instance_methods, [:respond_to?, :method_missing, :go, :[], :page]).each do |m|
7
- define_method m do |*a, **na, &b|
8
- @wg.send(m, *a, **na, &b)
9
- end
10
- end
6
+ class << self
7
+ include BangNestedCaller
8
+ include BangDef
11
9
 
12
- class << self
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 || (name.end_with?("!") && @wg.respond_to?(name))
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
- @wg.send(name, *a, **na, &b)
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
- def go page
26
- method(page).unbind.bind(@wg) if Symbol === page && !@wg.respond_to?(page)
27
- @wg.go page
28
- end
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
- @wg.init Page
40
+ @white_gold_instance.init
41
+ @white_gold_instance.load_page Page
40
42
  if $0 != 'irb'
41
43
  at_exit do
42
- go :main_page
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.2
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-02 00:00:00.000000000 Z
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: " Ruby gem for building pure ruby graphical user interface. \n Uses
28
- TGUI & SFML as a backend.\n"
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: