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.
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: