wxruby3-shapes 0.9.0.pre.beta.3 → 0.9.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +5 -7
  3. data/README.md +38 -6
  4. data/assets/logo.svg +339 -0
  5. data/assets/logo.xpm +60 -0
  6. data/assets/screenshot.png +0 -0
  7. data/assets/social.png +0 -0
  8. data/bin/wx-shapes +1 -1
  9. data/lib/wx/shapes/arrow_base.rb +4 -11
  10. data/lib/wx/shapes/arrows/circle_arrow.rb +22 -11
  11. data/lib/wx/shapes/arrows/circle_prong_arrow.rb +48 -0
  12. data/lib/wx/shapes/arrows/cross_bar_arrow.rb +57 -0
  13. data/lib/wx/shapes/arrows/cross_bar_circle_arrow.rb +56 -0
  14. data/lib/wx/shapes/arrows/cross_bar_prong_arrow.rb +49 -0
  15. data/lib/wx/shapes/arrows/crossed_circle.rb +46 -0
  16. data/lib/wx/shapes/arrows/cup_arrow.rb +65 -0
  17. data/lib/wx/shapes/arrows/diamond_arrow.rb +8 -13
  18. data/lib/wx/shapes/arrows/double_cross_bar_arrow.rb +27 -0
  19. data/lib/wx/shapes/arrows/filled_arrow.rb +60 -0
  20. data/lib/wx/shapes/arrows/line_arrow.rb +67 -0
  21. data/lib/wx/shapes/arrows/open_arrow.rb +22 -23
  22. data/lib/wx/shapes/arrows/prong_arrow.rb +42 -0
  23. data/lib/wx/shapes/arrows/solid_arrow.rb +21 -35
  24. data/lib/wx/shapes/arrows/square_arrow.rb +37 -0
  25. data/lib/wx/shapes/auto_layout.rb +2 -2
  26. data/lib/wx/shapes/base.rb +1 -1
  27. data/lib/wx/shapes/canvas_history.rb +20 -0
  28. data/lib/wx/shapes/connection_point.rb +10 -6
  29. data/lib/wx/shapes/diagram.rb +98 -78
  30. data/lib/wx/shapes/events.rb +8 -8
  31. data/lib/wx/shapes/printout.rb +3 -16
  32. data/lib/wx/shapes/serializable.rb +2 -436
  33. data/lib/wx/shapes/serialize/wx.rb +30 -18
  34. data/lib/wx/shapes/shape.rb +211 -168
  35. data/lib/wx/shapes/shape_canvas.rb +728 -267
  36. data/lib/wx/shapes/shape_data_object.rb +99 -18
  37. data/lib/wx/shapes/shape_handle.rb +18 -11
  38. data/lib/wx/shapes/shape_list.rb +34 -67
  39. data/lib/wx/shapes/shapes/bitmap_shape.rb +23 -24
  40. data/lib/wx/shapes/shapes/box_shape.rb +389 -0
  41. data/lib/wx/shapes/shapes/circle_shape.rb +19 -22
  42. data/lib/wx/shapes/shapes/control_shape.rb +77 -41
  43. data/lib/wx/shapes/shapes/curve_shape.rb +38 -31
  44. data/lib/wx/shapes/shapes/diamond_shape.rb +7 -17
  45. data/lib/wx/shapes/shapes/edit_text_shape.rb +6 -9
  46. data/lib/wx/shapes/shapes/ellipse_shape.rb +12 -15
  47. data/lib/wx/shapes/shapes/flex_grid_shape.rb +58 -33
  48. data/lib/wx/shapes/shapes/grid_shape.rb +259 -161
  49. data/lib/wx/shapes/shapes/line_shape.rb +155 -161
  50. data/lib/wx/shapes/shapes/manager_shape.rb +77 -0
  51. data/lib/wx/shapes/shapes/multi_sel_rect.rb +8 -8
  52. data/lib/wx/shapes/shapes/ortho_shape.rb +31 -36
  53. data/lib/wx/shapes/shapes/polygon_shape.rb +23 -29
  54. data/lib/wx/shapes/shapes/rect_shape.rb +95 -53
  55. data/lib/wx/shapes/shapes/round_ortho_shape.rb +6 -8
  56. data/lib/wx/shapes/shapes/round_rect_shape.rb +20 -24
  57. data/lib/wx/shapes/shapes/square_shape.rb +14 -17
  58. data/lib/wx/shapes/shapes/text_shape.rb +95 -53
  59. data/lib/wx/shapes/version.rb +1 -1
  60. data/lib/wx/shapes/wx.rb +16 -7
  61. data/lib/wx/wx-shapes/cmd/test.rb +1 -1
  62. data/samples/demo/arrows.json +1 -0
  63. data/samples/demo/arrows.yaml +793 -0
  64. data/samples/demo/art/HBox.xpm +22 -0
  65. data/samples/demo/art/VBox.xpm +22 -0
  66. data/samples/demo/art/logo.xpm +60 -0
  67. data/samples/demo/class.json +1 -0
  68. data/samples/demo/class.yaml +5631 -0
  69. data/samples/demo/demo.rb +301 -91
  70. data/samples/demo/dialogs.rb +1405 -0
  71. data/samples/demo/erd.json +1 -0
  72. data/samples/demo/erd.yaml +4072 -0
  73. data/samples/demo/frame_canvas.rb +409 -33
  74. data/samples/sample1/art/logo.xpm +60 -0
  75. data/samples/sample1/sample.rb +11 -11
  76. data/samples/sample2/art/logo.xpm +60 -0
  77. data/samples/sample2/sample.rb +2 -2
  78. data/samples/sample2/sample_shape.rb +15 -15
  79. data/samples/sample3/art/logo.xpm +60 -0
  80. data/samples/sample3/sample.rb +3 -3
  81. data/samples/sample4/art/logo.xpm +60 -0
  82. data/samples/sample4/sample.rb +2 -2
  83. data/tests/lib/wxapp_runner.rb +4 -0
  84. data/tests/serializer_tests.rb +8 -441
  85. data/tests/test_grid_shapes.rb +2 -2
  86. data/tests/test_serialize_xml.rb +17 -0
  87. data/tests/test_serialize_yaml.rb +2 -2
  88. metadata +78 -28
  89. data/lib/wx/shapes/serialize/core.rb +0 -40
  90. data/lib/wx/shapes/serialize/id.rb +0 -82
  91. data/lib/wx/shapes/serializer/json.rb +0 -258
  92. data/lib/wx/shapes/serializer/yaml.rb +0 -125
  93. data/samples/demo/art/sample.xpm +0 -251
  94. data/samples/sample1/art/sample.xpm +0 -251
  95. data/samples/sample2/art/sample.xpm +0 -251
  96. data/samples/sample3/art/sample.xpm +0 -251
  97. data/samples/sample4/art/sample.xpm +0 -251
@@ -1,440 +1,6 @@
1
- # Wx::SF::Serializer - shape serializer module
1
+ # Wx::SF - shape serializer module
2
2
  # Copyright (c) M.J.N. Corino, The Netherlands
3
3
 
4
- require 'set'
4
+ require 'firm'
5
5
 
6
- module Wx::SF
7
-
8
- module Serializable
9
-
10
- class Property
11
- def initialize(klass, prop, proc=nil, force: false, handler: nil, &block)
12
- ::Kernel.raise ArgumentError, "Invalid property id [#{prop}]" unless ::String === prop || ::Symbol === prop
13
- ::Kernel.raise ArgumentError, "Duplicate property id [#{prop}]" if klass.has_serializer_property?(prop)
14
- @klass = klass
15
- @id = prop.to_sym
16
- @forced = force
17
- if block || handler
18
- if handler
19
- ::Kernel.raise ArgumentError,
20
- "Invalid property handler #{handler} for #{prop}" unless ::Proc === handler || ::Symbol === handler
21
- if handler.is_a?(::Proc)
22
- ::Kernel.raise ArgumentError, "Invalid property block #{proc} for #{prop}" unless block.arity == -3
23
- @getter = ->(obj) { handler.call(@id, obj) }
24
- @setter = ->(obj, val) { handler.call(@id, obj, val) }
25
- else
26
- @getter = ->(obj) { obj.send(handler, @id) }
27
- @setter = ->(obj, val) { obj.send(handler, @id, val) }
28
- end
29
- else
30
- # any property block MUST accept 2 or 3 args; property name, instance and value (for setter)
31
- ::Kernel.raise ArgumentError, "Invalid property block #{proc} for #{prop}" unless block.arity == -3
32
- @getter = ->(obj) { block.call(@id, obj) }
33
- @setter = ->(obj, val) { block.call(@id, obj, val) }
34
- end
35
- elsif proc
36
- ::Kernel.raise ArgumentError,
37
- "Invalid property proc #{proc} for #{prop}" unless ::Proc === proc || ::Symbol === proc
38
- if ::Proc === proc
39
- # any property proc should be callable with a single arg (instance)
40
- @getter = proc
41
- # a property proc combining getter/setter functionality should accept a single or more args (instance + value)
42
- @setter = (proc.arity == -2) ? proc : nil
43
- else
44
- @getter = ->(obj) { obj.send(proc) }
45
- @setter = ->(obj, val) { obj.send(proc, val) }
46
- end
47
- end
48
- end
49
-
50
- attr_reader :id
51
-
52
- def serialize(obj, data, excludes)
53
- unless excludes.include?(@id)
54
- val = getter.call(obj)
55
- unless Serializable === val && val.serialize_disabled? && !@forced
56
- data[@id] = case val
57
- when ::Array
58
- val.select { |elem| !(Serializable === elem && elem.serialize_disabled?) }
59
- when ::Set
60
- ::Set.new(val.select { |elem| !(Serializable === elem && elem.serialize_disabled?) })
61
- else
62
- val
63
- end
64
- end
65
- end
66
- end
67
-
68
- def deserialize(obj, data)
69
- if data.has_key?(@id)
70
- setter.call(obj, data[@id])
71
- end
72
- end
73
-
74
- def get(obj)
75
- getter.call(obj)
76
- end
77
-
78
- def get_method(id)
79
- begin
80
- @klass.instance_method(id)
81
- rescue NameError
82
- nil
83
- end
84
- end
85
- private :get_method
86
-
87
- def getter
88
- unless @getter
89
- inst_meth = get_method(@id)
90
- inst_meth = get_method("get_#{@id}") unless inst_meth
91
- if inst_meth
92
- @getter = ->(obj) { inst_meth.bind(obj).call }
93
- else
94
- return self.method(:getter_fail)
95
- end
96
- end
97
- @getter
98
- end
99
- private :getter
100
-
101
- def setter
102
- unless @setter
103
- inst_meth = get_method("#{@id}=")
104
- inst_meth = get_method("set_#{@id}") unless inst_meth
105
- unless inst_meth
106
- im = get_method(@id)
107
- if im && im.arity == -1
108
- inst_meth = im
109
- else
110
- inst_meth = nil
111
- end
112
- end
113
- if inst_meth
114
- @setter = ->(obj, val) { inst_meth.bind(obj).call(val) }
115
- else
116
- return self.method(:setter_noop)
117
- end
118
- end
119
- @setter
120
- end
121
- private :setter
122
-
123
- def getter_fail(obj)
124
- ::Kernel.raise RuntimeError, "Missing getter for property #{@id} of #{@klass}"
125
- end
126
- private :getter_fail
127
-
128
- def setter_noop(_, _)
129
- # do nothing
130
- end
131
- private :setter_noop
132
- end
133
-
134
- # Serializable unique ids.
135
- # This class makes sure to maintain uniqueness across serialization/deserialization cycles
136
- # and keeps all shared instances within a single (serialized/deserialized) object set in
137
- # sync.
138
- class ID; end
139
-
140
- class << self
141
-
142
- def serializables
143
- @serializables ||= ::Set.new
144
- end
145
-
146
- def formatters
147
- @formatters ||= {}
148
- end
149
- private :formatters
150
-
151
- # Registers a serialization formatting engine
152
- # @param [Symbol,String] format format id
153
- # @param [Object] engine formatting engine
154
- def register(format, engine)
155
- if formatters.has_key?(format.to_s.downcase)
156
- ::Kernel.raise ArgumentError,
157
- "Duplicate serialization formatter registration for #{format}"
158
- end
159
- formatters[format.to_s.downcase] = engine
160
- end
161
-
162
- # Return a serialization formatting engine
163
- # @param [Symbol,String] format format id
164
- # @return [Object] formatting engine
165
- def [](format)
166
- formatters[format.to_s.downcase]
167
- end
168
-
169
- def default_format
170
- @default_format ||= :json
171
- end
172
-
173
- def default_format=(format)
174
- @default_format = format
175
- end
176
-
177
- end
178
-
179
- # Mixin module for classes that get Wx::SF::Serializable included.
180
- # This module is used to extend the class methods of the serializable class.
181
- module SerializeClassMethods
182
-
183
- # Adds (a) serializable property(-ies) for instances of his class (and derived classes)
184
- # @overload property(*props, force: false)
185
- # Specifies one or more serialized properties.
186
- # The serialization framework will determine the availability of setter and getter methods
187
- # automatically by looking for methods <code>"#{prop_id}=(v)"</code>, <code>"set_#{prop_id}(v)"</code> or <code>"#{prop}(v)"</code>
188
- # for setters and <code>"#{prop_id}()"</code> or <code>"get_#{prop_id}"</code> for getters.
189
- # @param [Symbol,String] props one or more ids of serializable properties
190
- # @param [Boolean] force overrides any #disable_serialize for the properties specified
191
- # @overload property(hash, force: false)
192
- # Specifies one or more serialized properties with associated setter/getter method ids/procs/lambda-s.
193
- # @example
194
- # property(
195
- # prop_a: ->(obj, *val) {
196
- # obj.my_prop_a_setter(val.first) unless val.empty?
197
- # obj.my_prop_a_getter
198
- # },
199
- # prop_b: Proc.new { |obj, *val|
200
- # obj.my_prop_b_setter(val.first) unless val.empty?
201
- # obj.my_prop_b_getter
202
- # },
203
- # prop_c: :serialization_method)
204
- # Procs with setter support MUST accept 1 or 2 arguments (1 for getter, 2 for setter).
205
- # @note Use `*val` to specify the optional value argument for setter requests instead of `val=nil`
206
- # to be able to support setting explicit nil values.
207
- # @param [Hash] hash a hash of pairs of property ids and getter/setter procs
208
- # @param [Boolean] force overrides any #disable_serialize for the properties specified
209
- # @overload property(*props, force: false, handler: nil, &block)
210
- # Specifies one or more serialized properties with a getter/setter handler proc/method/block.
211
- # The getter/setter proc or block should accept either 2 (property id and object for getter) or 3 arguments
212
- # (property id, object and value for setter) and is assumed to handle getter/setter requests
213
- # for all specified properties.
214
- # The getter/setter method should accept either 1 (property id for getter) or 2 arguments
215
- # (property id and value for setter) and is assumed to handle getter/setter requests
216
- # for all specified properties.
217
- # @example
218
- # property(:property_a, :property_b, :property_c) do |id, obj, *val|
219
- # case id
220
- # when :property_a
221
- # ...
222
- # when :property_b
223
- # ...
224
- # when :property_c
225
- # ...
226
- # end
227
- # end
228
- # @note Use `*val` to specify the optional value argument for setter requests instead of `val=nil`
229
- # to be able to support setting explicit nil values.
230
- # @param [Symbol,String] props one or more ids of serializable properties
231
- # @param [Boolean] force overrides any #disable_serialize for the properties specified
232
- # @yieldparam [Symbol,String] id property id
233
- # @yieldparam [Object] obj object instance
234
- # @yieldparam [Object] val optional property value to set in case of setter request
235
- def property(*props, **kwargs, &block)
236
- forced = !!kwargs.delete(:force)
237
- if block || kwargs[:handler]
238
- props.each do |prop|
239
- serializer_properties << Property.new(self, prop, force: forced, handler: kwargs[:handler], &block)
240
- end
241
- else
242
- props.flatten.each do |prop|
243
- if ::Hash === prop
244
- prop.each_pair do |pn, pp|
245
- serializer_properties << Property.new(self, pn, pp, force: forced)
246
- end
247
- else
248
- serializer_properties << Property.new(self, prop, force: forced)
249
- end
250
- end
251
- unless kwargs.empty?
252
- kwargs.each_pair do |pn, pp|
253
- serializer_properties << Property.new(self, pn, pp, force: forced)
254
- end
255
- end
256
- end
257
- end
258
- alias :properties :property
259
- alias :contains :property
260
-
261
- # excludes a serializable property for instances of this class
262
- # (mostly/only useful to exclude properties from base classes which
263
- # do not require serialization for derived class)
264
- def excluded_property(*props)
265
- excluded_serializer_properties.merge props.flatten.collect { |prop| prop.to_s }
266
- end
267
- alias :excluded_properties :excluded_property
268
- alias :excludes :excluded_property
269
-
270
- # Creates a new instance for subsequent deserialization and optionally initialize
271
- # it using the given data hash.
272
- # The default implementation creates a new instance using the default constructor
273
- # (no arguments, no initialization) and leaves the initialization to a subsequent call
274
- # to the instance method #from_serialized(data).
275
- # Classes that do not support a default constructor can override this class method and
276
- # implement a custom creation scheme.
277
- # @param [Hash] _data hash containing deserialized property data (symbol keys)
278
- # @return [Object] the newly created object
279
- def create_for_deserialize(_data)
280
- self.new
281
- end
282
-
283
- end
284
-
285
- # Mixin module for classes that get Wx::SF::Serializable included.
286
- # This module is used to extend the instance methods of the serializable class.
287
- module SerializeInstanceMethods
288
-
289
- # Serialize this object
290
- # @overload serialize(pretty: false, format: Serializable.default_format)
291
- # @param [Boolean] pretty if true specifies to generate pretty formatted output if possible
292
- # @param [Symbol,String] format specifies output format
293
- # @return [String] serialized data
294
- # @overload serialize(io, pretty: false, format: Serializable.default_format)
295
- # @param [IO] io output stream to write serialized data to
296
- # @param [Boolean] pretty if true specifies to generate pretty formatted output if possible
297
- # @param [Symbol,String] format specifies output format
298
- # @return [IO]
299
- def serialize(io = nil, pretty: false, format: Serializable.default_format)
300
- Serializable[format].dump(self, io, pretty: pretty)
301
- end
302
-
303
- # Returns true if regular serialization for this object has been disabled, false otherwise (default).
304
- # Disabled serialization can be overridden for single objects (not objects maintained in property containers
305
- # like arrays and sets).
306
- # @return [Boolean]
307
- def serialize_disabled?
308
- !!@serialize_disabled # true for any value but false
309
- end
310
-
311
- # Disables serialization for this object as a single property or as part of a property container
312
- # (array or set).
313
- # @return [void]
314
- def disable_serialize
315
- # by default unset (nil) so serializing enabled
316
- @serialize_disabled = true
317
- end
318
-
319
- # @!method for_serialize(hash, excludes = Set.new)
320
- # Serializes the properties of a serializable instance to the given hash
321
- # except when the property id is included in excludes.
322
- # @param [Hash] hash property serialization hash
323
- # @param [Set] excludes set with excluded property ids
324
- # @return [Hash] property serialization hash
325
-
326
- # @!method from_serialized(hash)
327
- # Restores the properties of a deserialized instance.
328
- # @param [Hash] hash deserialized properties hash
329
- # @return [self]
330
-
331
- end
332
-
333
- # Serialize the given object
334
- # @overload serialize(obj, pretty: false, format: Serializable.default_format)
335
- # @param [Object] obj object to serialize
336
- # @param [Boolean] pretty if true specifies to generate pretty formatted output if possible
337
- # @param [Symbol,String] format specifies output format
338
- # @return [String] serialized data
339
- # @overload serialize(obj, io, pretty: false, format: Serializable.default_format)
340
- # @param [Object] obj object to serialize
341
- # @param [IO] io output stream to write serialized data to
342
- # @param [Boolean] pretty if true specifies to generate pretty formatted output if possible
343
- # @param [Symbol,String] format specifies output format
344
- # @return [IO]
345
- def self.serialize(obj, io = nil, pretty: false, format: Serializable.default_format)
346
- self[format].dump(obj, io, pretty: pretty)
347
- end
348
-
349
- # Deserializes object from source data
350
- # @param [IO,String] source source data (stream)
351
- # @param [Symbol, String] format data format of source
352
- # @return [Object] deserialized object
353
- def self.deserialize(source, format: Serializable.default_format)
354
- self[format].load(::IO === source || source.respond_to?(:read) ? source.read : source)
355
- end
356
-
357
- def self.included(base)
358
- ::Kernel.raise RuntimeError, "#{self} should only be included in classes" if base.instance_of?(::Module)
359
-
360
- # register as serializable class
361
- Serializable.serializables << base
362
-
363
- return if base == Serializable::ID # special case which does not need the rest
364
-
365
- # provide serialized property definition support
366
-
367
- # provide serialized classes with their own serialized properties (exclusion) list
368
- base.singleton_class.class_eval do
369
- def serializer_properties
370
- @serializer_props ||= []
371
- end
372
- def excluded_serializer_properties
373
- @excluded_serializer_props ||= ::Set.new
374
- end
375
- end
376
- # add class methods
377
- base.extend(SerializeClassMethods)
378
-
379
- # add instance property (de-)serialization methods for base class
380
- base.class_eval <<~__CODE
381
- def for_serialize(hash, excludes = ::Set.new)
382
- hash[:'@explicit'] = true if serialize_disabled? # mark explicit serialize overriding disabling
383
- #{base.name}.serializer_properties.each { |prop, h| prop.serialize(self, hash, excludes) }
384
- hash
385
- end
386
- protected :for_serialize
387
-
388
- def from_serialized(hash)
389
- disable_serialize if hash[:'@explicit'] # re-instate serialization disabling
390
- #{base.name}.serializer_properties.each { |prop| prop.deserialize(self, hash) }
391
- self
392
- end
393
- protected :from_serialized
394
-
395
- def self.has_serializer_property?(id)
396
- self.serializer_properties.any? { |p| p.id == id.to_sym }
397
- end
398
- __CODE
399
- # add inheritance support
400
- base.class_eval do
401
- def self.inherited(derived)
402
- # add instance property (de-)serialization methods for derived classes
403
- derived.class_eval <<~__CODE
404
- module SerializerMethods
405
- def for_serialize(hash, excludes = ::Set.new)
406
- hash = super(hash, excludes | #{derived.name}.excluded_serializer_properties)
407
- #{derived.name}.serializer_properties.each { |prop| prop.serialize(self, hash, excludes) }
408
- hash
409
- end
410
- protected :for_serialize
411
-
412
- def from_serialized(hash)
413
- #{derived.name}.serializer_properties.each { |prop| prop.deserialize(self, hash) }
414
- super(hash)
415
- end
416
- protected :from_serialized
417
- end
418
- include SerializerMethods
419
- __CODE
420
- derived.class_eval do
421
- def self.has_serializer_property?(id)
422
- self.serializer_properties.any? { |p| p.id == id.to_sym } || self.superclass.has_serializer_property?(id)
423
- end
424
- end
425
-
426
- # register as serializable class
427
- Serializable.serializables << derived
428
- end
429
- end
430
-
431
- # add instance serialization method
432
- base.include(SerializeInstanceMethods)
433
- end
434
-
435
- end # module Serializable
436
-
437
- end # module Wx::SF
438
-
439
- Dir[File.join(__dir__, 'serializer', '*.rb')].each { |fnm| require "wx/shapes/serializer/#{File.basename(fnm)}" }
440
6
  Dir[File.join(__dir__, 'serialize', '*.rb')].each { |fnm| require "wx/shapes/serialize/#{File.basename(fnm)}" }
@@ -3,7 +3,7 @@
3
3
 
4
4
  class Wx::Point
5
5
 
6
- include Wx::SF::Serializable
6
+ include FIRM::Serializable
7
7
 
8
8
  properties :x, :y
9
9
 
@@ -11,7 +11,7 @@ end
11
11
 
12
12
  class Wx::RealPoint
13
13
 
14
- include Wx::SF::Serializable
14
+ include FIRM::Serializable
15
15
 
16
16
  properties :x, :y
17
17
 
@@ -19,7 +19,7 @@ end
19
19
 
20
20
  class Wx::Size
21
21
 
22
- include Wx::SF::Serializable
22
+ include FIRM::Serializable
23
23
 
24
24
  properties :width, :height
25
25
 
@@ -27,7 +27,7 @@ end
27
27
 
28
28
  class Wx::Rect
29
29
 
30
- include Wx::SF::Serializable
30
+ include FIRM::Serializable
31
31
 
32
32
  properties :x, :y, :width, :height
33
33
 
@@ -35,19 +35,19 @@ end
35
35
 
36
36
  class Wx::Enum
37
37
 
38
- include Wx::SF::Serializable
38
+ include FIRM::Serializable
39
39
 
40
- property :value => ->(enum) { enum.to_i }
40
+ property value: ->(enum) { enum.to_i }
41
41
 
42
- def self.create_for_deserialize(data)
43
- self.new(data[:value] || 0)
42
+ def init_from_serialized(data)
43
+ self.__send__(:initialize, data[:value] || 0)
44
44
  end
45
45
 
46
46
  end
47
47
 
48
48
  class Wx::Colour
49
49
 
50
- include Wx::SF::Serializable
50
+ include FIRM::Serializable
51
51
 
52
52
  property :colour => ->(col, *val) { col.set(*val.first) unless val.empty?; [col.red, col.green, col.blue, col.alpha] }
53
53
 
@@ -56,15 +56,19 @@ end
56
56
  # need to add this Enum explicitly as it was initially defined before we extended the Wx::Enum class above
57
57
  class Wx::BrushStyle
58
58
 
59
- property :value => ->(enum) { enum.to_i }
59
+ include FIRM::Serializable
60
60
 
61
- include Wx::SF::Serializable
61
+ property value: ->(enum) { enum.to_i }
62
+
63
+ def init_from_serialized(data)
64
+ self.__send__(:initialize, data[:value] || 0)
65
+ end
62
66
 
63
67
  end
64
68
 
65
69
  class Wx::Brush
66
70
 
67
- include Wx::SF::Serializable
71
+ include FIRM::Serializable
68
72
 
69
73
  property :colour, :style
70
74
 
@@ -73,15 +77,19 @@ end
73
77
  # need to add this Enum explicitly as it was initially defined before we extended the Wx::Enum class above
74
78
  class Wx::PenStyle
75
79
 
76
- property :value => ->(enum) { enum.to_i }
80
+ include FIRM::Serializable
81
+
82
+ property value: ->(enum) { enum.to_i }
77
83
 
78
- include Wx::SF::Serializable
84
+ def init_from_serialized(data)
85
+ self.__send__(:initialize, data[:value] || 0)
86
+ end
79
87
 
80
88
  end
81
89
 
82
90
  class Wx::Pen
83
91
 
84
- include Wx::SF::Serializable
92
+ include FIRM::Serializable
85
93
 
86
94
  property :colour, :width, :style
87
95
 
@@ -89,7 +97,7 @@ end
89
97
 
90
98
  class Wx::Font
91
99
 
92
- include Wx::SF::Serializable
100
+ include FIRM::Serializable
93
101
 
94
102
  property font_info: ->(font, *info) { font.set_native_font_info_user_desc(info.shift) unless info.empty?; font.get_native_font_info_user_desc }
95
103
 
@@ -97,8 +105,12 @@ end
97
105
 
98
106
  class Wx::BitmapType
99
107
 
100
- property :value => ->(enum) { enum.to_i }
108
+ include FIRM::Serializable
109
+
110
+ property value: ->(enum) { enum.to_i }
101
111
 
102
- include Wx::SF::Serializable
112
+ def init_from_serialized(data)
113
+ self.__send__(:initialize, data[:value] || 0)
114
+ end
103
115
 
104
116
  end