wxruby3-shapes 0.9.0.pre.beta.3 → 0.9.6
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.
- checksums.yaml +4 -4
 - data/INSTALL.md +5 -7
 - data/README.md +38 -6
 - data/assets/logo.svg +339 -0
 - data/assets/logo.xpm +60 -0
 - data/assets/screenshot.png +0 -0
 - data/assets/social.png +0 -0
 - data/bin/wx-shapes +1 -1
 - data/lib/wx/shapes/arrow_base.rb +4 -11
 - data/lib/wx/shapes/arrows/circle_arrow.rb +22 -11
 - data/lib/wx/shapes/arrows/circle_prong_arrow.rb +48 -0
 - data/lib/wx/shapes/arrows/cross_bar_arrow.rb +57 -0
 - data/lib/wx/shapes/arrows/cross_bar_circle_arrow.rb +56 -0
 - data/lib/wx/shapes/arrows/cross_bar_prong_arrow.rb +49 -0
 - data/lib/wx/shapes/arrows/crossed_circle.rb +46 -0
 - data/lib/wx/shapes/arrows/cup_arrow.rb +65 -0
 - data/lib/wx/shapes/arrows/diamond_arrow.rb +8 -13
 - data/lib/wx/shapes/arrows/double_cross_bar_arrow.rb +27 -0
 - data/lib/wx/shapes/arrows/filled_arrow.rb +60 -0
 - data/lib/wx/shapes/arrows/line_arrow.rb +67 -0
 - data/lib/wx/shapes/arrows/open_arrow.rb +22 -23
 - data/lib/wx/shapes/arrows/prong_arrow.rb +42 -0
 - data/lib/wx/shapes/arrows/solid_arrow.rb +21 -35
 - data/lib/wx/shapes/arrows/square_arrow.rb +37 -0
 - data/lib/wx/shapes/auto_layout.rb +2 -2
 - data/lib/wx/shapes/base.rb +1 -1
 - data/lib/wx/shapes/canvas_history.rb +20 -0
 - data/lib/wx/shapes/connection_point.rb +10 -6
 - data/lib/wx/shapes/diagram.rb +98 -78
 - data/lib/wx/shapes/events.rb +8 -8
 - data/lib/wx/shapes/printout.rb +3 -16
 - data/lib/wx/shapes/serializable.rb +2 -436
 - data/lib/wx/shapes/serialize/wx.rb +30 -18
 - data/lib/wx/shapes/shape.rb +211 -168
 - data/lib/wx/shapes/shape_canvas.rb +728 -267
 - data/lib/wx/shapes/shape_data_object.rb +99 -18
 - data/lib/wx/shapes/shape_handle.rb +18 -11
 - data/lib/wx/shapes/shape_list.rb +34 -67
 - data/lib/wx/shapes/shapes/bitmap_shape.rb +23 -24
 - data/lib/wx/shapes/shapes/box_shape.rb +389 -0
 - data/lib/wx/shapes/shapes/circle_shape.rb +19 -22
 - data/lib/wx/shapes/shapes/control_shape.rb +77 -41
 - data/lib/wx/shapes/shapes/curve_shape.rb +38 -31
 - data/lib/wx/shapes/shapes/diamond_shape.rb +7 -17
 - data/lib/wx/shapes/shapes/edit_text_shape.rb +6 -9
 - data/lib/wx/shapes/shapes/ellipse_shape.rb +12 -15
 - data/lib/wx/shapes/shapes/flex_grid_shape.rb +58 -33
 - data/lib/wx/shapes/shapes/grid_shape.rb +259 -161
 - data/lib/wx/shapes/shapes/line_shape.rb +155 -161
 - data/lib/wx/shapes/shapes/manager_shape.rb +77 -0
 - data/lib/wx/shapes/shapes/multi_sel_rect.rb +8 -8
 - data/lib/wx/shapes/shapes/ortho_shape.rb +31 -36
 - data/lib/wx/shapes/shapes/polygon_shape.rb +23 -29
 - data/lib/wx/shapes/shapes/rect_shape.rb +95 -53
 - data/lib/wx/shapes/shapes/round_ortho_shape.rb +6 -8
 - data/lib/wx/shapes/shapes/round_rect_shape.rb +20 -24
 - data/lib/wx/shapes/shapes/square_shape.rb +14 -17
 - data/lib/wx/shapes/shapes/text_shape.rb +95 -53
 - data/lib/wx/shapes/version.rb +1 -1
 - data/lib/wx/shapes/wx.rb +16 -7
 - data/lib/wx/wx-shapes/cmd/test.rb +1 -1
 - data/samples/demo/arrows.json +1 -0
 - data/samples/demo/arrows.yaml +793 -0
 - data/samples/demo/art/HBox.xpm +22 -0
 - data/samples/demo/art/VBox.xpm +22 -0
 - data/samples/demo/art/logo.xpm +60 -0
 - data/samples/demo/class.json +1 -0
 - data/samples/demo/class.yaml +5631 -0
 - data/samples/demo/demo.rb +301 -91
 - data/samples/demo/dialogs.rb +1405 -0
 - data/samples/demo/erd.json +1 -0
 - data/samples/demo/erd.yaml +4072 -0
 - data/samples/demo/frame_canvas.rb +409 -33
 - data/samples/sample1/art/logo.xpm +60 -0
 - data/samples/sample1/sample.rb +11 -11
 - data/samples/sample2/art/logo.xpm +60 -0
 - data/samples/sample2/sample.rb +2 -2
 - data/samples/sample2/sample_shape.rb +15 -15
 - data/samples/sample3/art/logo.xpm +60 -0
 - data/samples/sample3/sample.rb +3 -3
 - data/samples/sample4/art/logo.xpm +60 -0
 - data/samples/sample4/sample.rb +2 -2
 - data/tests/lib/wxapp_runner.rb +4 -0
 - data/tests/serializer_tests.rb +8 -441
 - data/tests/test_grid_shapes.rb +2 -2
 - data/tests/test_serialize_xml.rb +17 -0
 - data/tests/test_serialize_yaml.rb +2 -2
 - metadata +78 -28
 - data/lib/wx/shapes/serialize/core.rb +0 -40
 - data/lib/wx/shapes/serialize/id.rb +0 -82
 - data/lib/wx/shapes/serializer/json.rb +0 -258
 - data/lib/wx/shapes/serializer/yaml.rb +0 -125
 - data/samples/demo/art/sample.xpm +0 -251
 - data/samples/sample1/art/sample.xpm +0 -251
 - data/samples/sample2/art/sample.xpm +0 -251
 - data/samples/sample3/art/sample.xpm +0 -251
 - data/samples/sample4/art/sample.xpm +0 -251
 
| 
         @@ -6,26 +6,22 @@ module Wx::SF 
     | 
|
| 
       6 
6 
     | 
    
         
             
              # Class encapsulating rounded rectangle. It extends the basic rectangular shape.
         
     | 
| 
       7 
7 
     | 
    
         
             
              class RoundRectShape < RectShape
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
      
 9 
     | 
    
         
            +
                # Default values
         
     | 
| 
      
 10 
     | 
    
         
            +
                module DEFAULT
         
     | 
| 
      
 11 
     | 
    
         
            +
                  # Default corner radius
         
     | 
| 
      
 12 
     | 
    
         
            +
                  RADIUS = 20
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
       10 
14 
     | 
    
         | 
| 
       11 
15 
     | 
    
         
             
                property :radius
         
     | 
| 
       12 
16 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
                #  
     | 
| 
       14 
     | 
    
         
            -
                # 
     | 
| 
       15 
     | 
    
         
            -
                # @ 
     | 
| 
       16 
     | 
    
         
            -
                # 
     | 
| 
       17 
     | 
    
         
            -
                # 
     | 
| 
       18 
     | 
    
         
            -
                 
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                def initialize(*args)
         
     | 
| 
       22 
     | 
    
         
            -
                  if args.empty?
         
     | 
| 
       23 
     | 
    
         
            -
                    super
         
     | 
| 
       24 
     | 
    
         
            -
                    @radius = RADIUS
         
     | 
| 
       25 
     | 
    
         
            -
                  else
         
     | 
| 
       26 
     | 
    
         
            -
                    pos, size, @radius, diagram = args
         
     | 
| 
       27 
     | 
    
         
            -
                    super(pos, size, diagram)
         
     | 
| 
       28 
     | 
    
         
            -
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
                # Constructor.
         
     | 
| 
      
 18 
     | 
    
         
            +
                # @param [Wx::RealPoint,Wx::Point] pos Initial position
         
     | 
| 
      
 19 
     | 
    
         
            +
                # @param [Wx::RealPoint,Wx::Size,Wx::Point] size Initial size
         
     | 
| 
      
 20 
     | 
    
         
            +
                # @param [Float] radius Corner radius
         
     | 
| 
      
 21 
     | 
    
         
            +
                # @param [Wx::SF::Diagram] diagram parent diagram
         
     | 
| 
      
 22 
     | 
    
         
            +
                def initialize(pos = Shape::DEFAULT::POSITION, size = RectShape::DEFAULT::SIZE, radius: DEFAULT::RADIUS, diagram: nil)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  super(pos, size, diagram: diagram)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  @radius = radius
         
     | 
| 
       29 
25 
     | 
    
         
             
                end
         
     | 
| 
       30 
26 
     | 
    
         | 
| 
       31 
27 
     | 
    
         
             
                # Access (get/set) radius.
         
     | 
| 
         @@ -73,8 +69,8 @@ module Wx::SF 
     | 
|
| 
       73 
69 
     | 
    
         
             
                    super
         
     | 
| 
       74 
70 
     | 
    
         
             
                    return
         
     | 
| 
       75 
71 
     | 
    
         
             
                  end
         
     | 
| 
       76 
     | 
    
         
            -
                  dc.with_pen( 
     | 
| 
       77 
     | 
    
         
            -
                    dc.with_brush( 
     | 
| 
      
 72 
     | 
    
         
            +
                  dc.with_pen(border) do
         
     | 
| 
      
 73 
     | 
    
         
            +
                    dc.with_brush(fill) do
         
     | 
| 
       78 
74 
     | 
    
         
             
                      dc.draw_rounded_rectangle(get_absolute_position.to_point, @rect_size.to_size, @radius)
         
     | 
| 
       79 
75 
     | 
    
         
             
                    end
         
     | 
| 
       80 
76 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -88,8 +84,8 @@ module Wx::SF 
     | 
|
| 
       88 
84 
     | 
    
         
             
                    super
         
     | 
| 
       89 
85 
     | 
    
         
             
                    return
         
     | 
| 
       90 
86 
     | 
    
         
             
                  end
         
     | 
| 
       91 
     | 
    
         
            -
                  dc.with_pen(Wx::Pen.new( 
     | 
| 
       92 
     | 
    
         
            -
                    dc.with_brush( 
     | 
| 
      
 87 
     | 
    
         
            +
                  dc.with_pen(Wx::Pen.new(hover_colour, 1)) do
         
     | 
| 
      
 88 
     | 
    
         
            +
                    dc.with_brush(fill) do
         
     | 
| 
       93 
89 
     | 
    
         
             
                      dc.draw_rounded_rectangle(get_absolute_position.to_point, @rect_size.to_size, @radius)
         
     | 
| 
       94 
90 
     | 
    
         
             
                    end
         
     | 
| 
       95 
91 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -104,8 +100,8 @@ module Wx::SF 
     | 
|
| 
       104 
100 
     | 
    
         
             
                    super
         
     | 
| 
       105 
101 
     | 
    
         
             
                    return
         
     | 
| 
       106 
102 
     | 
    
         
             
                  end
         
     | 
| 
       107 
     | 
    
         
            -
                  dc.with_pen(Wx::Pen.new( 
     | 
| 
       108 
     | 
    
         
            -
                    dc.with_brush( 
     | 
| 
      
 103 
     | 
    
         
            +
                  dc.with_pen(Wx::Pen.new(hover_colour, 2)) do
         
     | 
| 
      
 104 
     | 
    
         
            +
                    dc.with_brush(fill) do
         
     | 
| 
       109 
105 
     | 
    
         
             
                      dc.draw_rounded_rectangle(get_absolute_position.to_point, @rect_size.to_size, @radius)
         
     | 
| 
       110 
106 
     | 
    
         
             
                    end
         
     | 
| 
       111 
107 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -118,7 +114,7 @@ module Wx::SF 
     | 
|
| 
       118 
114 
     | 
    
         
             
                    super
         
     | 
| 
       119 
115 
     | 
    
         
             
                    return
         
     | 
| 
       120 
116 
     | 
    
         
             
                  end
         
     | 
| 
       121 
     | 
    
         
            -
                  if  
     | 
| 
      
 117 
     | 
    
         
            +
                  if fill.style != Wx::BrushStyle::BRUSHSTYLE_TRANSPARENT
         
     | 
| 
       122 
118 
     | 
    
         
             
                    dc.with_pen(Wx::TRANSPARENT_PEN) do
         
     | 
| 
       123 
119 
     | 
    
         
             
                      dc.with_brush(get_parent_canvas.get_shadow_fill) do
         
     | 
| 
       124 
120 
     | 
    
         
             
                        dc.draw_rounded_rectangle((get_absolute_position + get_parent_canvas.get_shadow_offset).to_point,
         
     | 
| 
         @@ -7,22 +7,19 @@ module Wx::SF 
     | 
|
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
              class SquareShape < RectShape
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
      
 10 
     | 
    
         
            +
                # Default values
         
     | 
| 
      
 11 
     | 
    
         
            +
                module DEFAULT
         
     | 
| 
      
 12 
     | 
    
         
            +
                  # Default square size
         
     | 
| 
      
 13 
     | 
    
         
            +
                  SIZE = 100.0
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
       10 
15 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                # 
     | 
| 
       13 
     | 
    
         
            -
                # @ 
     | 
| 
       14 
     | 
    
         
            -
                # 
     | 
| 
       15 
     | 
    
         
            -
                # 
     | 
| 
       16 
     | 
    
         
            -
                 
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                def initialize(*args)
         
     | 
| 
       19 
     | 
    
         
            -
                  if args.empty?
         
     | 
| 
       20 
     | 
    
         
            -
                    super
         
     | 
| 
       21 
     | 
    
         
            -
                    set_rect_size(100,100)
         
     | 
| 
       22 
     | 
    
         
            -
                  else
         
     | 
| 
       23 
     | 
    
         
            -
                    pos, sz, diagram = args
         
     | 
| 
       24 
     | 
    
         
            -
                    super(pos, Wx::RealPoint.new(sz, sz), diagram)
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                # Constructor.
         
     | 
| 
      
 18 
     | 
    
         
            +
                # @param [Wx::RealPoint,Wx::Point] pos Initial position
         
     | 
| 
      
 19 
     | 
    
         
            +
                # @param [Float] size Initial size
         
     | 
| 
      
 20 
     | 
    
         
            +
                # @param [Wx::SF::Diagram] diagram parent diagram
         
     | 
| 
      
 21 
     | 
    
         
            +
                def initialize(pos = Shape::DEFAULT::POSITION, size = DEFAULT::SIZE, diagram: nil)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  super(pos, Wx::RealPoint.new(size, size), diagram: diagram)
         
     | 
| 
       26 
23 
     | 
    
         
             
                end
         
     | 
| 
       27 
24 
     | 
    
         | 
| 
       28 
25 
     | 
    
         
             
                # Get shape's center. Default implementation does nothing. The function can be overridden if necessary.
         
     | 
| 
         @@ -56,7 +53,7 @@ module Wx::SF 
     | 
|
| 
       56 
53 
     | 
    
         
             
                # @param [Shape::Handle] handle Reference to dragged handle
         
     | 
| 
       57 
54 
     | 
    
         
             
                # @see #on_handle
         
     | 
| 
       58 
55 
     | 
    
         
             
                def do_on_handle(handle)
         
     | 
| 
       59 
     | 
    
         
            -
                   
     | 
| 
      
 56 
     | 
    
         
            +
                  prev_x, prev_y = @rect_size
         
     | 
| 
       60 
57 
     | 
    
         | 
| 
       61 
58 
     | 
    
         
             
                  # perform standard operations
         
     | 
| 
       62 
59 
     | 
    
         
             
                  case handle.type
         
     | 
| 
         @@ -75,7 +72,7 @@ module Wx::SF 
     | 
|
| 
       75 
72 
     | 
    
         
             
                  end
         
     | 
| 
       76 
73 
     | 
    
         | 
| 
       77 
74 
     | 
    
         
             
                  # calculate common size and some auxiliary values
         
     | 
| 
       78 
     | 
    
         
            -
                  if ( 
     | 
| 
      
 75 
     | 
    
         
            +
                  if (prev_x < @rect_size.x) || (prev_y < @rect_size.y)
         
     | 
| 
       79 
76 
     | 
    
         
             
                    if @rect_size.x >= @rect_size.y
         
     | 
| 
       80 
77 
     | 
    
         
             
                      maxsize = @rect_size.x
         
     | 
| 
       81 
78 
     | 
    
         
             
                    else
         
     | 
| 
         @@ -9,50 +9,61 @@ module Wx::SF 
     | 
|
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                # default values
         
     | 
| 
       11 
11 
     | 
    
         
             
                module DEFAULT
         
     | 
| 
       12 
     | 
    
         
            -
                   
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 13 
     | 
    
         
            +
                    # Default value of TextShape @font data member.
         
     | 
| 
      
 14 
     | 
    
         
            +
                    def font; begin; @font = Wx::SWISS_FONT.dup; @font.point_size = 12; end unless @font; @font; end
         
     | 
| 
      
 15 
     | 
    
         
            +
                    # Default value of TextShape @text_color data member.
         
     | 
| 
      
 16 
     | 
    
         
            +
                    def text_color; @txtclr ||= Wx::BLACK.dup; end
         
     | 
| 
      
 17 
     | 
    
         
            +
                    # Standard value of TextShape @fill data member
         
     | 
| 
      
 18 
     | 
    
         
            +
                    def text_fill; @text_fill ||= Wx::TRANSPARENT_BRUSH.dup; end
         
     | 
| 
      
 19 
     | 
    
         
            +
                    # Standard value of TextShape @border data member
         
     | 
| 
      
 20 
     | 
    
         
            +
                    def text_border; @text_border ||= Wx::TRANSPARENT_PEN.dup; end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                  TEXT = 'Text'
         
     | 
| 
       18 
23 
     | 
    
         
             
                end
         
     | 
| 
       19 
24 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                property : 
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                #  
     | 
| 
       25 
     | 
    
         
            -
                # 
     | 
| 
       26 
     | 
    
         
            -
                # 
     | 
| 
       27 
     | 
    
         
            -
                # 
     | 
| 
       28 
     | 
    
         
            -
                 
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                   
     | 
| 
       31 
     | 
    
         
            -
                   
     | 
| 
       32 
     | 
    
         
            -
                    super
         
     | 
| 
       33 
     | 
    
         
            -
                  else
         
     | 
| 
       34 
     | 
    
         
            -
                    pos, txt, diagram = args
         
     | 
| 
       35 
     | 
    
         
            -
                    super(pos, Wx::RealPoint.new, diagram)
         
     | 
| 
       36 
     | 
    
         
            -
                  end
         
     | 
| 
       37 
     | 
    
         
            -
                  @font = DEFAULT::FONT
         
     | 
| 
       38 
     | 
    
         
            -
                  @font.set_point_size(12)
         
     | 
| 
      
 25 
     | 
    
         
            +
                property :text
         
     | 
| 
      
 26 
     | 
    
         
            +
                property({ text_colour: :serialize_text_colour,
         
     | 
| 
      
 27 
     | 
    
         
            +
                           font: :serialize_text_font }, optional: true)
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                # Constructor.
         
     | 
| 
      
 30 
     | 
    
         
            +
                # @param [Wx::RealPoint,Wx::Point] pos Initial position
         
     | 
| 
      
 31 
     | 
    
         
            +
                # @param [String] txt Text content
         
     | 
| 
      
 32 
     | 
    
         
            +
                # @param [Wx::SF::Diagram] diagram parent diagram
         
     | 
| 
      
 33 
     | 
    
         
            +
                def initialize(pos = Shape::DEFAULT::POSITION, txt = DEFAULT::TEXT, diagram: nil)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  super(pos, Wx::RealPoint.new, diagram: diagram)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  @font = nil
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @scaled_font = nil
         
     | 
| 
       39 
37 
     | 
    
         | 
| 
       40 
38 
     | 
    
         
             
                  @line_height = 12
         
     | 
| 
       41 
39 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
                  @text_color =  
     | 
| 
       43 
     | 
    
         
            -
                  @text = txt 
     | 
| 
      
 40 
     | 
    
         
            +
                  @text_color = nil
         
     | 
| 
      
 41 
     | 
    
         
            +
                  @text = txt
         
     | 
| 
       44 
42 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
                  @fill = Wx::TRANSPARENT_BRUSH
         
     | 
| 
       46 
     | 
    
         
            -
                  @border = Wx::TRANSPARENT_PEN
         
     | 
| 
       47 
43 
     | 
    
         
             
                  @rect_size = Wx::RealPoint.new
         
     | 
| 
       48 
44 
     | 
    
         | 
| 
       49 
45 
     | 
    
         
             
                  update_rect_size
         
     | 
| 
       50 
46 
     | 
    
         
             
                end
         
     | 
| 
       51 
47 
     | 
    
         | 
| 
       52 
48 
     | 
    
         
             
                # Set text font.
         
     | 
| 
       53 
     | 
    
         
            -
                # @ 
     | 
| 
       54 
     | 
    
         
            -
                 
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
                # @overload set_text_font(font)
         
     | 
| 
      
 50 
     | 
    
         
            +
                #   @param [Wx::Font] font
         
     | 
| 
      
 51 
     | 
    
         
            +
                # @overload set_text_font(font_info)
         
     | 
| 
      
 52 
     | 
    
         
            +
                #   @param [Wx::FontInfo] font_info
         
     | 
| 
      
 53 
     | 
    
         
            +
                # @overload set_text_font(pointSize, family, style, weight, underline=false, faceName=(''), encoding=Wx::FontEncoding::FONTENCODING_DEFAULT)
         
     | 
| 
      
 54 
     | 
    
         
            +
                #   @param pointSize [Integer]  Size in points. See {Wx::Font#initialize}.
         
     | 
| 
      
 55 
     | 
    
         
            +
                #   @param family [Wx::FontFamily]  The font family. See {Wx::Font#initialize}.
         
     | 
| 
      
 56 
     | 
    
         
            +
                #   @param style [Wx::FontStyle]  One of {Wx::FontStyle::FONTSTYLE_NORMAL}, {Wx::FontStyle::FONTSTYLE_SLANT} and {Wx::FontStyle::FONTSTYLE_ITALIC}. See {Wx::Font#initialize}.
         
     | 
| 
      
 57 
     | 
    
         
            +
                #   @param weight [Wx::FontWeight]  Font weight. One of the {Wx::FontWeight} enumeration values. See {Wx::Font#initialize}.
         
     | 
| 
      
 58 
     | 
    
         
            +
                #   @param underline [Boolean]  The value can be true or false. See {Wx::Font#initialize}.
         
     | 
| 
      
 59 
     | 
    
         
            +
                #   @param faceName [String]  An optional string specifying the face name to be used. See {Wx::Font#initialize}.
         
     | 
| 
      
 60 
     | 
    
         
            +
                #   @param encoding [Wx::FontEncoding]  An encoding which may be one of the enumeration values of {Wx::FontEncoding}. See {Wx::Font#initialize}.
         
     | 
| 
      
 61 
     | 
    
         
            +
                def set_font(*args)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  @font = if args.size == 1 && Wx::Font === args.first
         
     | 
| 
      
 63 
     | 
    
         
            +
                            args.first
         
     | 
| 
      
 64 
     | 
    
         
            +
                          else
         
     | 
| 
      
 65 
     | 
    
         
            +
                            Wx::Font.new(*args)
         
     | 
| 
      
 66 
     | 
    
         
            +
                          end
         
     | 
| 
       56 
67 
     | 
    
         
             
                  update_rect_size
         
     | 
| 
       57 
68 
     | 
    
         
             
                end
         
     | 
| 
       58 
69 
     | 
    
         
             
                alias :font= :set_font
         
     | 
| 
         @@ -60,7 +71,7 @@ module Wx::SF 
     | 
|
| 
       60 
71 
     | 
    
         
             
                # Get text font.
         
     | 
| 
       61 
72 
     | 
    
         
             
                # @return [Wx::Font] Font
         
     | 
| 
       62 
73 
     | 
    
         
             
                def get_font
         
     | 
| 
       63 
     | 
    
         
            -
                  @font
         
     | 
| 
      
 74 
     | 
    
         
            +
                  @font || (@diagram&.shape_canvas ? @diagram.shape_canvas.text_font : DEFAULT.font)
         
     | 
| 
       64 
75 
     | 
    
         
             
                end
         
     | 
| 
       65 
76 
     | 
    
         
             
                alias :font :get_font
         
     | 
| 
       66 
77 
     | 
    
         | 
| 
         @@ -79,23 +90,36 @@ module Wx::SF 
     | 
|
| 
       79 
90 
     | 
    
         
             
                end
         
     | 
| 
       80 
91 
     | 
    
         
             
                alias :text :get_text
         
     | 
| 
       81 
92 
     | 
    
         | 
| 
      
 93 
     | 
    
         
            +
                # Get current fill style.
         
     | 
| 
      
 94 
     | 
    
         
            +
                # @return [Wx::Brush] Current brush
         
     | 
| 
      
 95 
     | 
    
         
            +
                def get_fill
         
     | 
| 
      
 96 
     | 
    
         
            +
                  @fill || (@diagram&.shape_canvas ? @diagram.shape_canvas.text_fill : DEFAULT.text_fill)
         
     | 
| 
      
 97 
     | 
    
         
            +
                end
         
     | 
| 
      
 98 
     | 
    
         
            +
                alias :fill :get_fill
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                # Get current border style.
         
     | 
| 
      
 101 
     | 
    
         
            +
                # @return [Wx::Pen] Current pen
         
     | 
| 
      
 102 
     | 
    
         
            +
                def get_border
         
     | 
| 
      
 103 
     | 
    
         
            +
                  @border || (@diagram&.shape_canvas ? @diagram.shape_canvas.text_border : DEFAULT.text_border)
         
     | 
| 
      
 104 
     | 
    
         
            +
                end
         
     | 
| 
      
 105 
     | 
    
         
            +
                alias :border :get_border
         
     | 
| 
       82 
106 
     | 
    
         | 
| 
       83 
107 
     | 
    
         
             
                # Set text color.
         
     | 
| 
       84 
     | 
    
         
            -
                # @param [Wx::Colour] col Text color
         
     | 
| 
      
 108 
     | 
    
         
            +
                # @param [Wx::Colour,String,Symbol] col Text color
         
     | 
| 
       85 
109 
     | 
    
         
             
                def set_text_colour(col)
         
     | 
| 
       86 
     | 
    
         
            -
                  @text_color = col
         
     | 
| 
      
 110 
     | 
    
         
            +
                  @text_color = Wx::Colour === col ? col : Wx::Colour.new(col)
         
     | 
| 
       87 
111 
     | 
    
         
             
                end
         
     | 
| 
       88 
112 
     | 
    
         
             
                alias :text_colour= :set_text_colour
         
     | 
| 
       89 
113 
     | 
    
         | 
| 
       90 
114 
     | 
    
         
             
                # Get text color.
         
     | 
| 
       91 
115 
     | 
    
         
             
                # @return [Wx::Colour] Current text color
         
     | 
| 
       92 
116 
     | 
    
         
             
                def get_text_colour
         
     | 
| 
       93 
     | 
    
         
            -
                  @text_color
         
     | 
| 
      
 117 
     | 
    
         
            +
                  @text_color || (@diagram&.shape_canvas ? @diagram.shape_canvas.text_colour : DEFAULT.text_color)
         
     | 
| 
       94 
118 
     | 
    
         
             
                end
         
     | 
| 
       95 
119 
     | 
    
         
             
                alias :text_colour :get_text_colour
         
     | 
| 
       96 
120 
     | 
    
         | 
| 
       97 
121 
     | 
    
         
             
                # Update shape (align all child shapes and resize it to fit them)
         
     | 
| 
       98 
     | 
    
         
            -
                def update
         
     | 
| 
      
 122 
     | 
    
         
            +
                def update(recurse = true)
         
     | 
| 
       99 
123 
     | 
    
         
             
                  update_rect_size
         
     | 
| 
       100 
124 
     | 
    
         
             
                  super
         
     | 
| 
       101 
125 
     | 
    
         
             
                end
         
     | 
| 
         @@ -106,13 +130,14 @@ module Wx::SF 
     | 
|
| 
       106 
130 
     | 
    
         
             
                  w = -1
         
     | 
| 
       107 
131 
     | 
    
         
             
                  h = -1
         
     | 
| 
       108 
132 
     | 
    
         
             
                  if get_parent_canvas
         
     | 
| 
      
 133 
     | 
    
         
            +
                    cur_font = @scaled_font || font
         
     | 
| 
       109 
134 
     | 
    
         
             
                    if ShapeCanvas.gc_enabled?
         
     | 
| 
       110 
135 
     | 
    
         
             
                      Wx::GraphicsContext.draw_on(get_parent_canvas) do |gc|
         
     | 
| 
       111 
136 
     | 
    
         
             
                        # calculate text extent
         
     | 
| 
       112 
137 
     | 
    
         
             
                        hd = -1
         
     | 
| 
       113 
138 
     | 
    
         
             
                        e = 0
         
     | 
| 
       114 
139 
     | 
    
         | 
| 
       115 
     | 
    
         
            -
                        gc.set_font( 
     | 
| 
      
 140 
     | 
    
         
            +
                        gc.set_font(cur_font, Wx::BLACK)
         
     | 
| 
       116 
141 
     | 
    
         | 
| 
       117 
142 
     | 
    
         
             
                        # we must use split string to inspect all lines of possible multiline text
         
     | 
| 
       118 
143 
     | 
    
         
             
                        h = 0
         
     | 
| 
         @@ -127,7 +152,7 @@ module Wx::SF 
     | 
|
| 
       127 
152 
     | 
    
         
             
                      end
         
     | 
| 
       128 
153 
     | 
    
         
             
                    else
         
     | 
| 
       129 
154 
     | 
    
         
             
                      get_parent_canvas.paint do |dc|
         
     | 
| 
       130 
     | 
    
         
            -
                        dc.set_font( 
     | 
| 
      
 155 
     | 
    
         
            +
                        dc.set_font(cur_font)
         
     | 
| 
       131 
156 
     | 
    
         
             
                        w, h, @line_height = dc.get_multi_line_text_extent(@text)
         
     | 
| 
       132 
157 
     | 
    
         
             
                        dc.set_font(Wx::NULL_FONT)
         
     | 
| 
       133 
158 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -160,8 +185,6 @@ module Wx::SF 
     | 
|
| 
       160 
185 
     | 
    
         
             
                # @param [Float] x Horizontal scale factor
         
     | 
| 
       161 
186 
     | 
    
         
             
                # @param [Float] y Vertical scale factor
         
     | 
| 
       162 
187 
     | 
    
         
             
                def scale_rectangle(x, y)
         
     | 
| 
       163 
     | 
    
         
            -
            	    s = 1.0
         
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
       165 
188 
     | 
    
         
             
                  if x == 1.0
         
     | 
| 
       166 
189 
     | 
    
         
             
                    s = y
         
     | 
| 
       167 
190 
     | 
    
         
             
                  elsif y == 1.0
         
     | 
| 
         @@ -172,10 +195,17 @@ module Wx::SF 
     | 
|
| 
       172 
195 
     | 
    
         
             
                    s = y
         
     | 
| 
       173 
196 
     | 
    
         
             
                  end
         
     | 
| 
       174 
197 
     | 
    
         | 
| 
       175 
     | 
    
         
            -
                   
     | 
| 
      
 198 
     | 
    
         
            +
                  cur_font = @scaled_font || font
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
                  size = cur_font.get_point_size * s
         
     | 
| 
       176 
201 
     | 
    
         
             
                  size = 5 if size < 5
         
     | 
| 
       177 
202 
     | 
    
         | 
| 
       178 
     | 
    
         
            -
                   
     | 
| 
      
 203 
     | 
    
         
            +
                  if size == font.point_size
         
     | 
| 
      
 204 
     | 
    
         
            +
                    @scaled_font = nil
         
     | 
| 
      
 205 
     | 
    
         
            +
                  else
         
     | 
| 
      
 206 
     | 
    
         
            +
                    @scaled_font ||= font.dup
         
     | 
| 
      
 207 
     | 
    
         
            +
                    @scaled_font.set_point_size(size.to_i) unless size == @scaled_font.get_point_size
         
     | 
| 
      
 208 
     | 
    
         
            +
                  end
         
     | 
| 
       179 
209 
     | 
    
         
             
                  update_rect_size
         
     | 
| 
       180 
210 
     | 
    
         
             
                end
         
     | 
| 
       181 
211 
     | 
    
         | 
| 
         @@ -235,7 +265,7 @@ module Wx::SF 
     | 
|
| 
       235 
265 
     | 
    
         | 
| 
       236 
266 
     | 
    
         
             
            	  # Draw the shape in the highlighted mode (another shape is dragged over this
         
     | 
| 
       237 
267 
     | 
    
         
             
                # shape and this shape will accept the dragged one if it will be dropped on it).
         
     | 
| 
       238 
     | 
    
         
            -
                # The function can be overridden if  
     | 
| 
      
 268 
     | 
    
         
            +
                # The function can be overridden if necessary.
         
     | 
| 
       239 
269 
     | 
    
         
             
            	  # @param [Wx::DC] dc Reference to device context where the shape will be drawn to
         
     | 
| 
       240 
270 
     | 
    
         
             
                def draw_highlighted(dc)
         
     | 
| 
       241 
271 
     | 
    
         
             
                  super
         
     | 
| 
         @@ -277,7 +307,7 @@ module Wx::SF 
     | 
|
| 
       277 
307 
     | 
    
         
             
                end
         
     | 
| 
       278 
308 
     | 
    
         | 
| 
       279 
309 
     | 
    
         
             
                # Event handler called during dragging of the right shape handle.
         
     | 
| 
       280 
     | 
    
         
            -
                # The function can be overridden if  
     | 
| 
      
 310 
     | 
    
         
            +
                # The function can be overridden if necessary.
         
     | 
| 
       281 
311 
     | 
    
         
             
            	  # @param [Shape::Handle] handle Reference to dragged shape handle
         
     | 
| 
       282 
312 
     | 
    
         
             
                def on_right_handle(handle)
         
     | 
| 
       283 
313 
     | 
    
         
             
                  # HINT: overload it for custom actions...
         
     | 
| 
         @@ -286,7 +316,7 @@ module Wx::SF 
     | 
|
| 
       286 
316 
     | 
    
         
             
                end
         
     | 
| 
       287 
317 
     | 
    
         | 
| 
       288 
318 
     | 
    
         
             
                # Event handler called during dragging of the bottom shape handle.
         
     | 
| 
       289 
     | 
    
         
            -
                # The function can be overridden if  
     | 
| 
      
 319 
     | 
    
         
            +
                # The function can be overridden if necessary.
         
     | 
| 
       290 
320 
     | 
    
         
             
            	  # @param [Shape::Handle] handle Reference to dragged shape handle
         
     | 
| 
       291 
321 
     | 
    
         
             
                def on_bottom_handle(handle)
         
     | 
| 
       292 
322 
     | 
    
         
             
                  # HINT: overload it for custom actions...
         
     | 
| 
         @@ -297,10 +327,10 @@ module Wx::SF 
     | 
|
| 
       297 
327 
     | 
    
         
             
            	  # Draw text shape.
         
     | 
| 
       298 
328 
     | 
    
         
             
            	  # @param [Wx::DC] dc Device context where the text shape will be drawn to
         
     | 
| 
       299 
329 
     | 
    
         
             
                def draw_text_content(dc)
         
     | 
| 
       300 
     | 
    
         
            -
                  dc.with_brush( 
     | 
| 
       301 
     | 
    
         
            -
                    dc.set_background_mode(Wx::BrushStyle::BRUSHSTYLE_TRANSPARENT)
         
     | 
| 
       302 
     | 
    
         
            -
                    dc.set_text_foreground( 
     | 
| 
       303 
     | 
    
         
            -
                    dc.with_font(@font) do
         
     | 
| 
      
 330 
     | 
    
         
            +
                  dc.with_brush(fill) do
         
     | 
| 
      
 331 
     | 
    
         
            +
                    dc.set_background_mode(Wx::BrushStyle::BRUSHSTYLE_TRANSPARENT.to_i)
         
     | 
| 
      
 332 
     | 
    
         
            +
                    dc.set_text_foreground(text_colour)
         
     | 
| 
      
 333 
     | 
    
         
            +
                    dc.with_font(@scaled_font || font) do
         
     | 
| 
       304 
334 
     | 
    
         
             
                      pos = get_absolute_position
         
     | 
| 
       305 
335 
     | 
    
         
             
                      # draw all text lines
         
     | 
| 
       306 
336 
     | 
    
         
             
                      @text.split("\n").each_with_index do |line, i|
         
     | 
| 
         @@ -310,15 +340,27 @@ module Wx::SF 
     | 
|
| 
       310 
340 
     | 
    
         
             
                  end
         
     | 
| 
       311 
341 
     | 
    
         
             
                end
         
     | 
| 
       312 
342 
     | 
    
         | 
| 
      
 343 
     | 
    
         
            +
                # (de-)serialize text colour; allows for nil values
         
     | 
| 
      
 344 
     | 
    
         
            +
                def serialize_text_colour(*val)
         
     | 
| 
      
 345 
     | 
    
         
            +
                  @text_color = val.first unless val.empty?
         
     | 
| 
      
 346 
     | 
    
         
            +
                  @text_color
         
     | 
| 
      
 347 
     | 
    
         
            +
                end
         
     | 
| 
      
 348 
     | 
    
         
            +
             
     | 
| 
      
 349 
     | 
    
         
            +
                # (de-)serialize text colour; allows for nil values
         
     | 
| 
      
 350 
     | 
    
         
            +
                def serialize_text_font(*val)
         
     | 
| 
      
 351 
     | 
    
         
            +
                  @font = val.first unless val.empty?
         
     | 
| 
      
 352 
     | 
    
         
            +
                  @font
         
     | 
| 
      
 353 
     | 
    
         
            +
                end
         
     | 
| 
      
 354 
     | 
    
         
            +
             
     | 
| 
       313 
355 
     | 
    
         
             
                # Deserialize attributes and recalculate rectangle size afterwards.
         
     | 
| 
       314 
     | 
    
         
            -
                # @param [Hash] data
         
     | 
| 
       315 
356 
     | 
    
         
             
                # @return [self]
         
     | 
| 
       316 
     | 
    
         
            -
                def  
     | 
| 
       317 
     | 
    
         
            -
                  super
         
     | 
| 
      
 357 
     | 
    
         
            +
                def deserialize_finalize
         
     | 
| 
       318 
358 
     | 
    
         
             
                  update_rect_size
         
     | 
| 
       319 
359 
     | 
    
         
             
                  self
         
     | 
| 
       320 
360 
     | 
    
         
             
                end
         
     | 
| 
       321 
361 
     | 
    
         | 
| 
      
 362 
     | 
    
         
            +
                define_deserialize_finalizer :deserialize_finalize
         
     | 
| 
      
 363 
     | 
    
         
            +
             
     | 
| 
       322 
364 
     | 
    
         
             
              end
         
     | 
| 
       323 
365 
     | 
    
         | 
| 
       324 
366 
     | 
    
         
             
            end
         
     | 
    
        data/lib/wx/shapes/version.rb
    CHANGED
    
    
    
        data/lib/wx/shapes/wx.rb
    CHANGED
    
    | 
         @@ -3,17 +3,15 @@ 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            module Wx
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
              class  
     | 
| 
      
 6 
     | 
    
         
            +
              class RealPoint
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
                # Returns distance from this point to given point.
         
     | 
| 
       9 
     | 
    
         
            -
                # @param [Wx::RealPoint,Wx::Point,Array(Integer,Integer)] pt2
         
     | 
| 
      
 9 
     | 
    
         
            +
                # @param [Wx::RealPoint,Wx::Point,Array(Integer,Integer),Array(Float,Float)] pt2
         
     | 
| 
       10 
10 
     | 
    
         
             
                # @return [Float] distance to given point
         
     | 
| 
       11 
11 
     | 
    
         
             
                def distance_to(pt2)
         
     | 
| 
       12 
     | 
    
         
            -
                   
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                   
     | 
| 
       15 
     | 
    
         
            -
                    to_x = pt2.x; to_y = pt2.y
         
     | 
| 
       16 
     | 
    
         
            -
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                  to_x, to_y = pt2
         
     | 
| 
      
 13 
     | 
    
         
            +
                  to_x = to_x.to_f
         
     | 
| 
      
 14 
     | 
    
         
            +
                  to_y = to_y.to_f
         
     | 
| 
       17 
15 
     | 
    
         
             
                  Math.sqrt((to_x - self.x)*(to_x - self.x) + (to_y - self.y)*(to_y - self.y))
         
     | 
| 
       18 
16 
     | 
    
         
             
                end
         
     | 
| 
       19 
17 
     | 
    
         
             
                alias :distance :distance_to
         
     | 
| 
         @@ -26,4 +24,15 @@ module Wx 
     | 
|
| 
       26 
24 
     | 
    
         | 
| 
       27 
25 
     | 
    
         
             
              end
         
     | 
| 
       28 
26 
     | 
    
         | 
| 
      
 27 
     | 
    
         
            +
              class Size
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                # Returns this size as a Wx::RealPoint.
         
     | 
| 
      
 30 
     | 
    
         
            +
                # @return [Wx::RealPoint]
         
     | 
| 
      
 31 
     | 
    
         
            +
                def to_real_point
         
     | 
| 
      
 32 
     | 
    
         
            +
                  Wx::RealPoint.new(self.width.to_f, self.height.to_f)
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
                alias :to_real :to_real_point
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       29 
38 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"rbklass":"Array","data":[{"rbklass":"Wx::SF::ShapeCanvas::Version","data":{"version_info":{"rbklass":"Wx::SF::ShapeCanvas::Version::VersionInfo","v":[0,9,0]}}},{"rbklass":"Wx::SF::ShapeCanvas::Settings","data":{"scale":1.0,"min_scale":0.1,"max_scale":2.0,"background_color":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[240,240,240,255]}}},"common_hover_color":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[120,120,255,255]}},"&id":3597080},"common_border_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","data":{"value":100},"&id":3526760}},"&id":3600900},"common_fill_brush":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","data":{"value":100},"&id":3526840}},"&id":3600960},"common_line_pen":{"rbklass":"Wx::Pen","*id":3600900},"common_arrow_fill":{"rbklass":"Wx::Brush","*id":3600960},"common_text_color":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"common_text_fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"style":{"rbklass":"Wx::BrushStyle","data":{"value":106},"&id":8740}}},"common_text_border":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","data":{"value":106},"&id":7640}}},"common_text_font":{"rbklass":"Wx::Font","data":{"font_info":"Sans 12"}},"common_control_fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":8740}}},"common_control_border":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":7640}}},"common_control_mod_fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","data":{"value":111}}}},"common_control_mod_border":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,255,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"grid_line_mult":10,"grid_color":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[200,200,200,255]}}},"grid_style":{"rbklass":"Wx::PenStyle","data":{"value":103}},"gradient_from":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[240,240,240,255]}}},"gradient_to":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[200,200,255,255]}}},"style":{"rbklass":"Wx::SF::ShapeCanvas::STYLE","data":{"value":3071}},"shadow_offset":{"rbklass":"Wx::RealPoint","data":{"x":4.0,"y":4.0}},"shadow_fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[150,150,150,128]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"print_h_align":{"rbklass":"Wx::SF::ShapeCanvas::HALIGN","data":{"value":2}},"print_v_align":{"rbklass":"Wx::SF::ShapeCanvas::VALIGN","data":{"value":2}},"print_mode":{"rbklass":"Wx::SF::ShapeCanvas::PRINTMODE","data":{"value":2}},"grid_size":10}},{"rbklass":"Wx::SF::Diagram","data":{"shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[{"rbklass":"Wx::SF::SquareShape","data":{"rect_size":{"rbklass":"Wx::RealPoint","data":{"x":100.0,"y":100.0}},"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"border":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","data":{"value":319}},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":110.0,"y":230.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","data":{"value":0},"&id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","data":{"value":0},"&id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}},"&id":3596520},{"rbklass":"Wx::SF::EllipseShape","data":{"rect_size":{"rbklass":"Wx::RealPoint","data":{"x":100.0,"y":50.0}},"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"border":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","data":{"value":319}},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":830.0,"y":250.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}},"&id":3596540},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::ProngArrow","data":{"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::CrossBarArrow","data":{"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","data":{"value":319},"&id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::DiamondArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::DoubleCrossBarArrow","data":{"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":310.0,"y":380.0}},{"rbklass":"Wx::RealPoint","data":{"x":770.0,"y":380.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","*id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::SquareArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::CrossBarCircleArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":260.0,"y":460.0}},{"rbklass":"Wx::RealPoint","data":{"x":780.0,"y":460.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","*id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::CrossBarProngArrow","data":{"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::CircleProngArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":230.0,"y":550.0}},{"rbklass":"Wx::RealPoint","data":{"x":810.0,"y":540.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","*id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::CupArrow","data":{"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::OpenArrow","data":{"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":300.0,"y":150.0}},{"rbklass":"Wx::RealPoint","data":{"x":770.0,"y":150.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","*id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::CircleArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::SolidArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":280.0,"y":90.0}},{"rbklass":"Wx::RealPoint","data":{"x":790.0,"y":90.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","*id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::CrossedCircleArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"trg_arrow":null,"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":220.0,"y":60.0}},{"rbklass":"Wx::RealPoint","data":{"x":830.0,"y":60.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","data":{"value":319}},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","data":{"value":0}},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","data":{"value":0}},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}}]}}},"accepted_shapes":{"rbklass":"Set","a":["NilClass"]},"accepted_top_shapes":{"rbklass":"Set","a":["NilClass"]}}}]}
         
     |