white_gold 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) 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/enum.rb +1 -1
  5. data/lib/white_gold/abi/extern_object.rb +2 -2
  6. data/lib/white_gold/abi/interface/interface.rb +3 -7
  7. data/lib/white_gold/convention/container_widgets.rb +47 -87
  8. data/lib/white_gold/convention/page.rb +18 -8
  9. data/lib/white_gold/convention/theme/boolean_attribute.rb +11 -9
  10. data/lib/white_gold/convention/theme/color_attribute.rb +11 -9
  11. data/lib/white_gold/convention/theme/float_attribute.rb +11 -9
  12. data/lib/white_gold/convention/theme/outline_attribute.rb +11 -9
  13. data/lib/white_gold/convention/theme/text_styles_attribute.rb +14 -12
  14. data/lib/white_gold/convention/theme/texture_attribute.rb +14 -12
  15. data/lib/white_gold/convention/theme/theme_attributed.rb +2 -2
  16. data/lib/white_gold/convention/theme/theme_component.rb +2 -2
  17. data/lib/white_gold/convention/theme_attributes.rb +6 -2
  18. data/lib/white_gold/convention/widget/keyboard_control.rb +30 -0
  19. data/lib/white_gold/convention/widget_class_aliases.rb +24 -0
  20. data/lib/white_gold/convention/widget_like.rb +1 -4
  21. data/lib/white_gold/dsl/backend_gui.rb +5 -4
  22. data/lib/white_gold/dsl/canvas.rb +5 -5
  23. data/lib/white_gold/dsl/chat_box.rb +1 -1
  24. data/lib/white_gold/dsl/child_window.rb +2 -2
  25. data/lib/white_gold/dsl/color.rb +39 -29
  26. data/lib/white_gold/dsl/combo_box.rb +2 -2
  27. data/lib/white_gold/dsl/container.rb +1 -1
  28. data/lib/white_gold/dsl/custom_widget.rb +28 -0
  29. data/lib/white_gold/dsl/edit_box.rb +1 -2
  30. data/lib/white_gold/dsl/font.rb +4 -0
  31. data/lib/white_gold/dsl/grid.rb +34 -10
  32. data/lib/white_gold/dsl/gui.rb +14 -1
  33. data/lib/white_gold/dsl/label.rb +3 -2
  34. data/lib/white_gold/dsl/list_box.rb +2 -2
  35. data/lib/white_gold/dsl/list_view.rb +12 -12
  36. data/lib/white_gold/dsl/menu_bar.rb +4 -4
  37. data/lib/white_gold/dsl/message_box.rb +3 -3
  38. data/lib/white_gold/dsl/outline.rb +4 -0
  39. data/lib/white_gold/dsl/panel.rb +8 -0
  40. data/lib/white_gold/dsl/panel_list_box.rb +12 -3
  41. data/lib/white_gold/dsl/picture.rb +0 -2
  42. data/lib/white_gold/dsl/radio_button.rb +16 -3
  43. data/lib/white_gold/dsl/scrollable_panel.rb +7 -0
  44. data/lib/white_gold/dsl/sfml/circle_shape.rb +4 -0
  45. data/lib/white_gold/dsl/sfml/convex_shape.rb +4 -0
  46. data/lib/white_gold/dsl/sfml/rectangle_shape.rb +4 -0
  47. data/lib/white_gold/dsl/sfml/shape.rb +3 -2
  48. data/lib/white_gold/dsl/sfml/text.rb +7 -1
  49. data/lib/white_gold/dsl/signal/global_signal.rb +1 -1
  50. data/lib/white_gold/dsl/signal/signal.rb +1 -1
  51. data/lib/white_gold/dsl/signal/signal_animation_type.rb +1 -1
  52. data/lib/white_gold/dsl/signal/signal_bool.rb +4 -4
  53. data/lib/white_gold/dsl/signal/signal_color.rb +1 -1
  54. data/lib/white_gold/dsl/signal/signal_float.rb +1 -1
  55. data/lib/white_gold/dsl/signal/signal_int.rb +1 -1
  56. data/lib/white_gold/dsl/signal/signal_pointer.rb +1 -1
  57. data/lib/white_gold/dsl/signal/signal_range.rb +1 -1
  58. data/lib/white_gold/dsl/signal/signal_show_effect.rb +1 -1
  59. data/lib/white_gold/dsl/signal/signal_string.rb +1 -1
  60. data/lib/white_gold/dsl/signal/signal_u_int.rb +1 -1
  61. data/lib/white_gold/dsl/signal/signal_vector2f.rb +1 -1
  62. data/lib/white_gold/dsl/tab_container.rb +2 -2
  63. data/lib/white_gold/dsl/tabs.rb +2 -2
  64. data/lib/white_gold/dsl/texture.rb +6 -1
  65. data/lib/white_gold/dsl/theme.rb +3 -4
  66. data/lib/white_gold/dsl/toggle_button.rb +3 -0
  67. data/lib/white_gold/dsl/tree_view.rb +2 -2
  68. data/lib/white_gold/dsl/util.rb +3 -1
  69. data/lib/white_gold/dsl/widget.rb +59 -27
  70. data/lib/white_gold/dsl/window.rb +12 -2
  71. data/lib/white_gold/generated/tgui-abi-loader.gf.rb +106 -15
  72. data/lib/white_gold/library/theme/light.rb +8 -1
  73. data/lib/white_gold/master.rb +77 -44
  74. data/lib/white_gold/path/array.path.rb +9 -0
  75. data/lib/white_gold/path/object.path.rb +0 -6
  76. data/lib/white_gold/tgui-abi.rb +36 -31
  77. data/lib/white_gold/version.rb +1 -1
  78. data/lib/white_gold.rb +8 -6
  79. metadata +37 -9
  80. data/lib/white_gold/abi/reducer.rb +0 -12
  81. data/lib/white_gold/convention/bang_def.rb +0 -5
  82. data/lib/white_gold/convention/bang_nest.rb +0 -26
  83. data/lib/white_gold/convention/bang_nested_caller.rb +0 -48
  84. data/lib/white_gold/convention/proc_method_factory.rb +0 -22
@@ -29,7 +29,7 @@ module Tgui
29
29
  'float y'
30
30
  ]
31
31
 
32
- Vector2u = struct [
32
+ Vector2i = struct [
33
33
  'int x',
34
34
  'int y'
35
35
  ]
@@ -43,7 +43,7 @@ module Tgui
43
43
  end
44
44
 
45
45
  Vector2f = Abi::Vector2f
46
- Vector2u = Abi::Vector2u
46
+ Vector2i = Abi::Vector2i
47
47
  UIntRect = Abi::UIntRect
48
48
  end
49
49
 
@@ -56,6 +56,8 @@ class ExternObject
56
56
  :size_bottom_left, :size_top_right, :size_horizontal, :size_vertical,
57
57
  :crosshair, :help, :not_allowed
58
58
 
59
+ abi_bit_enum "WindowStyle", :none, :titlebar, :resize, :close, :fullscreen, :topmost, default: 7
60
+
59
61
  end
60
62
 
61
63
  def each_file_ancestor base, dir, &b
@@ -69,21 +71,20 @@ def each_file_ancestor base, dir, &b
69
71
  end
70
72
  end
71
73
 
72
- each_file_ancestor File.dirname(__FILE__), "dsl" do |dsl_file|
73
- require_relative dsl_file
74
+ each_file_ancestor File.dirname(__FILE__), "dsl" do |file|
75
+ require_relative file
76
+ end
77
+ each_file_ancestor File.dirname(__FILE__), "convention/widget" do |file|
78
+ require_relative file
74
79
  end
75
80
 
76
81
  # ABI loader should be required after dsl directory files because of class hierarchy
77
82
  require_relative 'generated/tgui-abi-loader.gf'
83
+ require_relative 'convention/widget_class_aliases'
78
84
  require_relative 'convention/container_widgets'
79
85
  require_relative 'convention/theme_attributes'
80
86
 
81
87
  class ExternObject
82
- class << self
83
- def finalizer pointer
84
- Tgui::Util.free(pointer)
85
- end
86
- end
87
88
 
88
89
  abi_packer Object do |o|
89
90
  o = o.first if o.is_a? Array
@@ -155,7 +156,7 @@ class ExternObject
155
156
  when Numeric then Unit.nominate o
156
157
  when :center then "(parent.innersize - size) / 2"
157
158
  when :begin then "0"
158
- when :end then "parent.innersize - size / 2"
159
+ when :end then "parent.innersize - size"
159
160
  else raise "Invalid value `#{o}` given"
160
161
  end
161
162
  end
@@ -172,24 +173,29 @@ class ExternObject
172
173
  [abi_pack_float(x), abi_pack_float(y)]
173
174
  end
174
175
 
175
- abi_packer Tgui::Abi::Vector2u do |o|
176
- case o
177
- when Array
178
- raise "Invalid array size excepted: #{2}, given: #{o.size}" if o.size != 2
179
- return o.map{ abi_pack_integer _1 }
180
- else
181
- raise "Unable to make Vector2u from #{o}"
176
+ abi_packer Tgui::Abi::Vector2i do |*arg|
177
+ case arg.size
178
+ when 1
179
+ a = arg.first
180
+ x = y = a
181
+ when 2
182
+ x, y = *arg
183
+ else raise "Unsupported argument #{arg}"
182
184
  end
185
+ [abi_pack_integer(x), abi_pack_integer(y)]
183
186
  end
184
187
 
185
- abi_packer Tgui::Abi::UIntRect do |o|
186
- case o
187
- when Array
188
- raise "Invalid array size excepted: #{4}, given: #{o.size}" if o.size != 4
189
- return o.map{ abi_pack_integer _1 }
190
- else
191
- raise "Unable to make UIntRect from #{o}"
188
+ abi_packer Tgui::Abi::UIntRect do |*arg|
189
+ case arg.size
190
+ when 1
191
+ a = [arg.first] * 4
192
+ when 2
193
+ a = [arg[0], arg[0], arg[1], arg[1]]
194
+ when 4
195
+ a = arg
196
+ else raise "Unsupported argument #{arg}"
192
197
  end
198
+ a.map{ abi_pack_integer _1 }
193
199
  end
194
200
 
195
201
  abi_packer Tgui::Color
@@ -201,11 +207,10 @@ class ExternObject
201
207
  a = []
202
208
  (0..).each do |i|
203
209
  i *= 4
204
- ch = (o[i]) | (o[i + 1] << 8) | (o[i + 2] << 16) | (o[i + 3] << 24)
210
+ ch = (o[i] & 0xFF) | ((o[i + 1] & 0xFF) << 8) | ((o[i + 2] & 0xFF) << 16) | ((o[i + 3] & 0xFF) << 24)
205
211
  break if ch == 0
206
212
  a << ch
207
213
  end
208
- raise "deleted string!" if a[0] == 572653601
209
214
  a.pack("N*").encode("UTF-8", "UTF-32BE")
210
215
  end
211
216
 
@@ -224,7 +229,7 @@ class ExternObject
224
229
  vector2f_unpacker = proc do |o|
225
230
  v = Tgui::Vector2f.new o
226
231
  r = [v.x, v.y]
227
- Util.free(o)
232
+ Tgui::Util.delete_vector2f(o)
228
233
  r
229
234
  end
230
235
 
@@ -234,17 +239,17 @@ class ExternObject
234
239
 
235
240
  abi_unpacker Tgui::Vector2f, &vector2f_unpacker
236
241
 
237
- abi_unpacker Tgui::Vector2u do |o|
238
- v = Tgui::Vector2u.new o
242
+ abi_unpacker Tgui::Vector2i do |o|
243
+ v = Tgui::Vector2i.new o
239
244
  r = [v.x, v.y]
240
- Util.free(o)
245
+ Tgui::Util.delete_vector2i(o)
241
246
  r
242
247
  end
243
248
 
244
249
  abi_unpacker Tgui::UIntRect do |o|
245
250
  v = Tgui::UIntRect.new o
246
251
  r = [v.left, v.top, v.width, v.height]
247
- Util.free(o)
252
+ Tgui::Util.delete_u_int_rect(o)
248
253
  r
249
254
  end
250
255
 
@@ -1,3 +1,3 @@
1
1
  class WhiteGold
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/white_gold.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  require_relative 'white_gold/master'
2
+ require_relative 'white_gold/path/array.path'
2
3
  include Tgui
3
4
 
4
5
  @white_gold_instance = WhiteGold.new
5
6
 
6
7
  class << self
7
- include BangNestedCaller
8
- include BangDef
8
+ include Extree
9
9
 
10
10
  def go page
11
11
  @white_gold_instance.go page.is_a?(Symbol) ? proc{ send(page) } : page
@@ -17,19 +17,20 @@ class << self
17
17
 
18
18
  def respond_to? name
19
19
  super ||
20
- (name.end_with?("!") && bang_respond_to?(name[...-1])) ||
20
+ (name.end_with?("!") && extree_respond_to?(name[...-1])) ||
21
21
  @white_gold_instance.page.respond_to?(name)
22
22
  end
23
23
 
24
24
  def method_missing name, *a, **na, &b
25
25
  if name.end_with? "!"
26
- bang_method_missing name[...-1], *a, **na, &b
26
+ extree_method_missing name[...-1], *a, **na, &b
27
27
  elsif @white_gold_instance.page.respond_to? name
28
28
  @white_gold_instance.page.send name, *a, **na, &b
29
29
  else super
30
30
  end
31
31
  end
32
32
  end
33
+ extend Extree::Branch
33
34
 
34
35
  def! :run do |page = nil|
35
36
  go page if page
@@ -37,7 +38,7 @@ def! :run do |page = nil|
37
38
  @white_gold_instance = nil
38
39
  end
39
40
 
40
- @white_gold_instance.init
41
+ @white_gold_instance.init window_size: $window_size, window_style: $window_style
41
42
  @white_gold_instance.load_page Page
42
43
  if $0 != 'irb'
43
44
  at_exit do
@@ -45,4 +46,5 @@ if $0 != 'irb'
45
46
  end
46
47
  end
47
48
 
48
- BangNestedCaller.push self
49
+ Extree::Seed.open_scope self
50
+ Extree::Seed.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.3
4
+ version: 0.1.0
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-14 00:00:00.000000000 Z
11
+ date: 2024-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fiddle
@@ -24,10 +24,38 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: extree
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: procify
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.1'
27
55
  description: |2
28
56
  Ruby gem for building pure ruby graphical user interface.
29
57
  Uses TGUI & SFML as a backend.
30
- Dedicated to creating single-file applications and learning programming.
58
+ Dedicated to creating simple applications and learning programming.
31
59
  email: oficjalnyadreslukasza@gmail.com
32
60
  executables: []
33
61
  extensions: []
@@ -55,18 +83,13 @@ files:
55
83
  - lib/white_gold/abi/interface/interface_composed_out.rb
56
84
  - lib/white_gold/abi/interface/interface_single_out.rb
57
85
  - lib/white_gold/abi/packer.rb
58
- - lib/white_gold/abi/reducer.rb
59
86
  - lib/white_gold/abi/unpacker.rb
60
87
  - lib/white_gold/convention/api_child.rb
61
- - lib/white_gold/convention/bang_def.rb
62
- - lib/white_gold/convention/bang_nest.rb
63
- - lib/white_gold/convention/bang_nested_caller.rb
64
88
  - lib/white_gold/convention/bool_property.rb
65
89
  - lib/white_gold/convention/boolean.rb
66
90
  - lib/white_gold/convention/club.rb
67
91
  - lib/white_gold/convention/container_widgets.rb
68
92
  - lib/white_gold/convention/page.rb
69
- - lib/white_gold/convention/proc_method_factory.rb
70
93
  - lib/white_gold/convention/theme/boolean_attribute.rb
71
94
  - lib/white_gold/convention/theme/color_attribute.rb
72
95
  - lib/white_gold/convention/theme/float_attribute.rb
@@ -78,6 +101,8 @@ files:
78
101
  - lib/white_gold/convention/theme_attributes.rb
79
102
  - lib/white_gold/convention/tree_node.rb
80
103
  - lib/white_gold/convention/unit.rb
104
+ - lib/white_gold/convention/widget/keyboard_control.rb
105
+ - lib/white_gold/convention/widget_class_aliases.rb
81
106
  - lib/white_gold/convention/widget_like.rb
82
107
  - lib/white_gold/dsl/backend_gui.rb
83
108
  - lib/white_gold/dsl/bitmap_button.rb
@@ -94,6 +119,7 @@ files:
94
119
  - lib/white_gold/dsl/color_picker.rb
95
120
  - lib/white_gold/dsl/combo_box.rb
96
121
  - lib/white_gold/dsl/container.rb
122
+ - lib/white_gold/dsl/custom_widget.rb
97
123
  - lib/white_gold/dsl/edit_box.rb
98
124
  - lib/white_gold/dsl/file_dialog.rb
99
125
  - lib/white_gold/dsl/font.rb
@@ -162,6 +188,7 @@ files:
162
188
  - lib/white_gold/generated/tgui-abi-loader.gf.rb
163
189
  - lib/white_gold/library/theme/light.rb
164
190
  - lib/white_gold/master.rb
191
+ - lib/white_gold/path/array.path.rb
165
192
  - lib/white_gold/path/kernel.path.rb
166
193
  - lib/white_gold/path/numeric.path.rb
167
194
  - lib/white_gold/path/object.path.rb
@@ -174,6 +201,7 @@ licenses:
174
201
  - Zlib
175
202
  metadata:
176
203
  documentation_uri: https://github.com/lpogic/white_gold/blob/master/doc/wiki/README.md
204
+ homepage_uri: https://github.com/lpogic/white_gold
177
205
  post_install_message:
178
206
  rdoc_options: []
179
207
  require_paths:
@@ -189,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
217
  - !ruby/object:Gem::Version
190
218
  version: '0'
191
219
  requirements: []
192
- rubygems_version: 3.4.22
220
+ rubygems_version: 3.5.6
193
221
  signing_key:
194
222
  specification_version: 4
195
223
  summary: TGUI based Ruby gem for quick native application developing
@@ -1,12 +0,0 @@
1
- class Reducer
2
- def initialize reduction, &block
3
- @reduction = reduction
4
- @block = block
5
- end
6
-
7
- def call *a
8
- block.call *a
9
- end
10
-
11
- attr :reduction
12
- end
@@ -1,5 +0,0 @@
1
- module BangDef
2
- def def! name, &b
3
- define_method "api_bang_#{name}", &b
4
- end
5
- end
@@ -1,26 +0,0 @@
1
- require_relative 'bang_nested_caller'
2
-
3
- module BangNest
4
- include BangNestedCaller
5
-
6
- def respond_to? name
7
- super || (name.end_with?("!") && bang_respond_to?(name[...-1]))
8
- end
9
-
10
- def method_missing name, *a, **na, &b
11
- if name.end_with? "!"
12
- bang_method_missing name[...-1], *a, **na, &b
13
- else super
14
- end
15
- end
16
-
17
- def send! *a, **na, &b
18
- a.each do |k|
19
- send("#{k}=", true)
20
- end
21
- na.each do |k, v|
22
- send("#{k}=", v)
23
- end
24
- super(&b)
25
- end
26
- end
@@ -1,48 +0,0 @@
1
- module BangNestedCaller
2
-
3
- @@bang_stack = []
4
-
5
- def self!
6
- @@bang_stack.last
7
- end
8
-
9
- def bang_respond_to? name
10
- top = @@bang_stack.include?(self) ? @@bang_stack.last : self
11
- top.respond_to?("#{name}=") || top.respond_to?("api_bang_#{name}")
12
- end
13
-
14
- def bang_send name, *a, **na, &b
15
- top = @@bang_stack.last
16
- api_bang_name = "api_bang_#{name}".to_sym
17
- return top.send(api_bang_name, *a, **na, &b) if top.respond_to? api_bang_name
18
- setter = "#{name}=".to_sym
19
- if top.respond_to? setter
20
- return top.send(setter, a) if !a.empty?
21
- return top.send(setter, na) if !na.empty?
22
- return top.send(setter, b) if block_given?
23
- return top.send(setter)
24
- end
25
- no_method_error = NoMethodError.new("bang method missing `#{name}!` for #{top.class}")
26
- raise no_method_error
27
- end
28
-
29
- def bang_method_missing name, *a, **na, &b
30
- if @@bang_stack.include?(self)
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
38
- end
39
-
40
- def send! &b
41
- if b
42
- @@bang_stack.push self
43
- b.call self
44
- @@bang_stack.pop
45
- end
46
- self
47
- end
48
- end
@@ -1,22 +0,0 @@
1
- class ProcMethodFactory
2
- def initialize source
3
- @source = source
4
- end
5
-
6
- def method_missing name, *curry
7
- proc do |*a, **na, &b|
8
- method = @source.method name
9
- arity = method.arity
10
- a = [*curry, *a]
11
- if arity >= 0
12
- @source.send(name, *a[...arity], **na, &b)
13
- else
14
- @source.send(name, *a, **na, &b)
15
- end
16
- end
17
- end
18
-
19
- def respond_to? name
20
- @source.respond_to? name
21
- end
22
- end