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
@@ -4,9 +4,9 @@
|
|
4
4
|
module Wx::SF
|
5
5
|
|
6
6
|
# Class encapsulating data object used during clipboard operations with shapes.
|
7
|
-
class ShapeDataObject < Wx::
|
7
|
+
class ShapeDataObject < Wx::DataObject
|
8
8
|
|
9
|
-
DataFormatID = 'ShapeFrameWorkDataFormat1_0'
|
9
|
+
DataFormatID = Wx::DataFormat.new('ShapeFrameWorkDataFormat1_0')
|
10
10
|
|
11
11
|
# @overload initialize()
|
12
12
|
# Default constructor
|
@@ -14,30 +14,111 @@ module Wx::SF
|
|
14
14
|
# User constructor
|
15
15
|
# @param [Array<Wx::SF::Shape>] selection List of shapes which should be stored in the data object
|
16
16
|
def initialize(selection = nil)
|
17
|
-
|
18
|
-
|
17
|
+
unless selection.nil? || (selection.is_a?(Array) && selection.all? { |e| e.is_a?(Shape) })
|
18
|
+
raise SFException, 'Expected nil or Array<Wx::SF::Shape>'
|
19
|
+
end
|
20
|
+
super()
|
21
|
+
@shapes = selection
|
22
|
+
@data = nil
|
23
|
+
@format = DataFormatID.get_type
|
19
24
|
end
|
20
25
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
26
|
+
def get_as_text
|
27
|
+
if @format == DataFormatID.get_type
|
28
|
+
@data ||= (@shapes ? @shapes.serialize(format: :yaml) : nil)
|
29
|
+
end
|
30
|
+
@data || ''
|
25
31
|
end
|
26
32
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
33
|
+
def get_as_shapes
|
34
|
+
if @format == Wx::DataFormatId::DF_TEXT || @format == Wx::DataFormatId::DF_UNICODETEXT
|
35
|
+
@shapes ||= (@data && @data.size>0 ? FIRM.deserialize(@data, format: :yaml) : nil)
|
36
|
+
end
|
37
|
+
@shapes || []
|
31
38
|
end
|
32
39
|
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
36
|
-
def
|
37
|
-
|
38
|
-
true
|
40
|
+
# List all the formats that we support. By default, the first is
|
41
|
+
# treated as the 'preferred' format; this can be overridden by
|
42
|
+
# providing a get_preferred format.
|
43
|
+
def get_all_formats(direction)
|
44
|
+
[ DataFormatID, Wx::DF_TEXT, Wx::DF_UNICODETEXT ]
|
39
45
|
end
|
40
46
|
|
47
|
+
# Do setting the data
|
48
|
+
def set_data(format, the_data)
|
49
|
+
case format.get_type
|
50
|
+
when DataFormatID.get_type
|
51
|
+
@shapes = if the_data.size > 0
|
52
|
+
begin
|
53
|
+
FIRM.deserialize(the_data, format: :yaml)
|
54
|
+
rescue Exception
|
55
|
+
$stderr.puts "#{$!}\n#{$!.backtrace.join("\n")}"
|
56
|
+
return false
|
57
|
+
end
|
58
|
+
else
|
59
|
+
nil
|
60
|
+
end
|
61
|
+
@data = nil
|
62
|
+
@format = format.get_type
|
63
|
+
true
|
64
|
+
when Wx::DataFormatId::DF_TEXT, Wx::DataFormatId::DF_UNICODETEXT
|
65
|
+
@data = the_data
|
66
|
+
@shapes = nil
|
67
|
+
@format = format.get_type
|
68
|
+
true
|
69
|
+
else
|
70
|
+
false
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def get_data_size(format)
|
75
|
+
case format.get_type
|
76
|
+
when Wx::DataFormatId::DF_TEXT, Wx::DataFormatId::DF_UNICODETEXT
|
77
|
+
@data ? @data.size : 0
|
78
|
+
when DataFormatID.get_type
|
79
|
+
get_as_text.bytesize
|
80
|
+
else
|
81
|
+
0
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
# Do getting the data
|
86
|
+
def get_data_here(format)
|
87
|
+
case format.get_type
|
88
|
+
when Wx::DataFormatId::DF_TEXT, Wx::DataFormatId::DF_UNICODETEXT
|
89
|
+
@data
|
90
|
+
when DataFormatID.get_type
|
91
|
+
begin
|
92
|
+
get_as_text
|
93
|
+
rescue Exception
|
94
|
+
$stderr.puts "#{$!}\n#{$!.backtrace.join("\n")}"
|
95
|
+
nil
|
96
|
+
end
|
97
|
+
else
|
98
|
+
nil
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# # Returns size of the data object
|
103
|
+
# # @return [Integer]
|
104
|
+
# def _get_data_size
|
105
|
+
# @data.bytesize
|
106
|
+
# end
|
107
|
+
#
|
108
|
+
# # Exports data from data object.
|
109
|
+
# # @return [Boolean] true on success, otherwise false
|
110
|
+
# def _get_data
|
111
|
+
# @data
|
112
|
+
# end
|
113
|
+
#
|
114
|
+
# # Function should inport data from data object from given buffer.
|
115
|
+
# # @param [String] buf External input data buffer
|
116
|
+
# # @return [Boolean] true on success, otherwise false
|
117
|
+
# def _set_data(buf)
|
118
|
+
# @data = buf ? buf : ''
|
119
|
+
# true
|
120
|
+
# end
|
121
|
+
|
41
122
|
end
|
42
123
|
|
43
124
|
end
|
@@ -26,6 +26,16 @@ module Wx::SF
|
|
26
26
|
UNDEF = self.new(11)
|
27
27
|
end
|
28
28
|
|
29
|
+
class << self
|
30
|
+
def handle_brush
|
31
|
+
if ShapeCanvas.gc_enabled?
|
32
|
+
@gc_brush ||= Wx::Brush.new(Wx::Colour.new(0, 0, 0, 128))
|
33
|
+
else
|
34
|
+
@dc_brush ||= Wx::BLACK_BRUSH.dup
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
29
39
|
# Constructor
|
30
40
|
# @param [Wx::Shape] parent Parent shape
|
31
41
|
# @param [TYPE] type Handle type
|
@@ -131,17 +141,14 @@ module Wx::SF
|
|
131
141
|
# @param [Wx::DC] dc Device context where the handle will be drawn
|
132
142
|
def draw_normal(dc)
|
133
143
|
dc.with_pen(Wx::PLATFORM == 'WXGTK' ? Wx::TRANSPARENT_PEN : Wx::BLACK_PEN) do
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
# dc.logical_function = Wx::RasterOperationMode::INVERT
|
139
|
-
end
|
144
|
+
dc.with_brush(Handle.handle_brush) do
|
145
|
+
# unless ShapeCanvas::gc_enabled?
|
146
|
+
# dc.logical_function = Wx::RasterOperationMode::INVERT
|
147
|
+
# end
|
140
148
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
dc.brush = Wx::NULL_BRUSH
|
149
|
+
dc.draw_rectangle(handle_rect)
|
150
|
+
# dc.logical_function = Wx::RasterOperationMode::COPY
|
151
|
+
end
|
145
152
|
end
|
146
153
|
end
|
147
154
|
|
@@ -161,7 +168,7 @@ module Wx::SF
|
|
161
168
|
|
162
169
|
# Set parent shape.
|
163
170
|
# @param [Wx::Shape] parent parent shape to set
|
164
|
-
def
|
171
|
+
def set_parent_shape(parent)
|
165
172
|
@parent_shape = parent
|
166
173
|
end
|
167
174
|
|
data/lib/wx/shapes/shape_list.rb
CHANGED
@@ -2,13 +2,14 @@
|
|
2
2
|
# Copyright (c) M.J.N. Corino, The Netherlands
|
3
3
|
|
4
4
|
require 'wx/shapes/serializable'
|
5
|
+
require 'set'
|
5
6
|
|
6
7
|
module Wx::SF
|
7
8
|
|
8
9
|
# This class implements an indexed container for unique, non-nil, shapes (no duplicates).
|
9
10
|
class ShapeList
|
10
11
|
|
11
|
-
include Serializable
|
12
|
+
include FIRM::Serializable
|
12
13
|
include ::Enumerable
|
13
14
|
|
14
15
|
property :list
|
@@ -19,19 +20,15 @@ module Wx::SF
|
|
19
20
|
if enum
|
20
21
|
if enum.is_a?(ShapeList)
|
21
22
|
@list = enum.instance_variable_get('@list').dup
|
22
|
-
@index = enum.instance_variable_get('@index').dup
|
23
23
|
elsif enum.is_a?(::Enumerable)
|
24
|
-
@list =
|
25
|
-
@index = {}
|
24
|
+
@list = ::Set.new
|
26
25
|
enum.each { |elem| self << elem }
|
27
26
|
else
|
28
|
-
@list =
|
29
|
-
@index = {}
|
27
|
+
@list = ::Set.new
|
30
28
|
self << enum
|
31
29
|
end
|
32
30
|
else
|
33
|
-
@list =
|
34
|
-
@index = {}
|
31
|
+
@list = ::Set.new
|
35
32
|
end
|
36
33
|
end
|
37
34
|
|
@@ -42,17 +39,21 @@ module Wx::SF
|
|
42
39
|
# @yieldparam [Shape] shape
|
43
40
|
# @return [self]
|
44
41
|
def each(&block)
|
45
|
-
|
46
|
-
|
42
|
+
if block_given?
|
43
|
+
@list.each(&block)
|
44
|
+
self
|
45
|
+
else
|
46
|
+
@list.each
|
47
|
+
end
|
47
48
|
end
|
48
49
|
|
49
50
|
# Recursively collects shapes and returns collection.
|
50
51
|
# @param [Array<Shape>] collection container to return collected shapes in
|
51
52
|
def all(collection = [])
|
52
|
-
@list.inject(collection) { |list, shape| shape.instance_variable_get('@child_shapes').all(list
|
53
|
+
@list.inject(collection.concat(@list.to_a)) { |list, shape| shape.instance_variable_get('@child_shapes').all(list) }
|
53
54
|
end
|
54
55
|
|
55
|
-
# Returns true if
|
56
|
+
# Returns true if no shapes are contained, false otherwise.
|
56
57
|
# @return [Boolean]
|
57
58
|
def empty?
|
58
59
|
@list.empty?
|
@@ -62,97 +63,63 @@ module Wx::SF
|
|
62
63
|
# @return [self]
|
63
64
|
def clear
|
64
65
|
@list.clear
|
65
|
-
@index.clear
|
66
66
|
self
|
67
67
|
end
|
68
68
|
|
69
69
|
# Appends a new shape to the list if not yet in list.
|
70
|
+
# Does *not* perform a recursive check.
|
70
71
|
# @param [Shape] shape shape to add
|
71
72
|
# @return [self]
|
72
73
|
def append(shape)
|
73
|
-
unless @
|
74
|
+
unless @list.include?(check_elem(shape))
|
74
75
|
@list << shape
|
75
|
-
@index[shape.id] = shape
|
76
76
|
end
|
77
77
|
self
|
78
78
|
end
|
79
79
|
alias :push :append
|
80
80
|
alias :<< :append
|
81
81
|
|
82
|
-
# Removes the
|
83
|
-
# @
|
84
|
-
def shift
|
85
|
-
return nil if @list.empty?
|
86
|
-
@index.delete(@list.shift.id)
|
87
|
-
end
|
88
|
-
|
89
|
-
# Removes the last shape from the list (if any) and returns that.
|
90
|
-
# @return [Shape,nil] removed shape or nil if list empty
|
91
|
-
def pop
|
92
|
-
return nil if @list.empty?
|
93
|
-
@index.delete(@list.pop.id)
|
94
|
-
end
|
95
|
-
|
96
|
-
# Removes a shape matching the key given from the list and returns that.
|
97
|
-
# @param [Shape,Serializable::ID] key shape or shape ID to match
|
82
|
+
# Removes the given shape from the list and returns that.
|
83
|
+
# @param [Shape] shape shape to match
|
98
84
|
# @return [Shape,nil] removed shape or nil if none matched
|
99
|
-
def delete(
|
100
|
-
if
|
101
|
-
|
102
|
-
|
103
|
-
|
85
|
+
def delete(shape)
|
86
|
+
if @list.include?(check_elem(shape))
|
87
|
+
@list.delete(shape)
|
88
|
+
shape
|
89
|
+
else
|
90
|
+
nil
|
104
91
|
end
|
105
|
-
nil
|
106
92
|
end
|
107
93
|
|
108
|
-
# Returns true if
|
109
|
-
#
|
94
|
+
# Returns true if the given shape is included in the list.
|
95
|
+
# Performs a recursive search in case :recursive is true.
|
96
|
+
# @param [Shape] shape shape to match
|
110
97
|
# @param [Boolean] recursive pass true to search recursively, false for non-recursive
|
111
98
|
# @return [Boolean]
|
112
|
-
def include?(
|
113
|
-
found =
|
114
|
-
|
115
|
-
else
|
116
|
-
@list.include?(key)
|
117
|
-
end
|
118
|
-
found || (recursive && @list.any? { |child| child.instance_variable_get('@child_shapes').include?(key, recursive) })
|
119
|
-
end
|
120
|
-
|
121
|
-
# Returns the shape matching the given key or nil if no shape matches.
|
122
|
-
# Does not modify the list.
|
123
|
-
# @param [Integer,Serializable::ID] key shape list index or shape ID to match
|
124
|
-
# @param [Boolean] recursive pass true to search recursively, false for non-recursive
|
125
|
-
# @return [Shape,nil] matched shape or nil if none matched
|
126
|
-
def get(key, recursive = false)
|
127
|
-
shape = if key.is_a?(Serializable::ID)
|
128
|
-
@index[key]
|
129
|
-
else
|
130
|
-
@list.at(key.to_i)
|
131
|
-
end
|
132
|
-
shape || (recursive && @list.find { |child| child.get(key, recursive) })
|
99
|
+
def include?(shape, recursive = false)
|
100
|
+
found = @list.include?(check_elem(shape))
|
101
|
+
found || (recursive && @list.any? { |child| child.include_child_shape?(shape, recursive) })
|
133
102
|
end
|
134
|
-
alias :[] :get
|
135
103
|
|
136
104
|
private
|
137
105
|
|
138
|
-
# Get shape
|
139
|
-
# @return [
|
106
|
+
# Get shape set. Serialization only.
|
107
|
+
# @return [Set<Shape>]
|
140
108
|
def get_list
|
141
109
|
@list
|
142
110
|
end
|
143
111
|
|
144
|
-
# Set shape
|
145
|
-
# @param [
|
112
|
+
# Set shape set from deserialization.
|
113
|
+
# @param [Set<Shape>] list
|
146
114
|
def set_list(list)
|
147
115
|
@list = list
|
148
|
-
@list.each { |shape| @index[shape.id] = shape }
|
149
116
|
end
|
150
117
|
|
151
118
|
# Check intended list item
|
152
119
|
# @param [Shape] shape intended list item
|
153
120
|
# @return [Shape] checked shape
|
154
121
|
def check_elem(shape)
|
155
|
-
::Kernel.raise TypeError,
|
122
|
+
::Kernel.raise TypeError, "Expected a Wx::SF::Shape, got #{shape}" unless shape.is_a?(Wx::SF::Shape)
|
156
123
|
shape
|
157
124
|
end
|
158
125
|
|
@@ -13,32 +13,22 @@ module Wx::SF
|
|
13
13
|
|
14
14
|
property :can_scale, :bitmap
|
15
15
|
|
16
|
-
#
|
17
|
-
#
|
18
|
-
# @
|
19
|
-
#
|
20
|
-
|
21
|
-
|
22
|
-
# @param [Wx::SF::Diagram] diagram parent diagram
|
23
|
-
def initialize(*args)
|
16
|
+
# Constructor.
|
17
|
+
# @param [Wx::RealPoint,Wx::Point] pos Initial position
|
18
|
+
# @param [String] bmp_path Bitmap path
|
19
|
+
# @param [Wx::SF::Diagram] diagram parent diagram
|
20
|
+
def initialize(pos = Shape::DEFAULT::POSITION, bmp_path = nil, diagram: nil)
|
21
|
+
super(pos, diagram: diagram)
|
24
22
|
@bitmap = Wx::NULL_BITMAP
|
25
23
|
@art_path = @art_section = nil
|
26
|
-
|
27
|
-
|
28
|
-
@bitmap_path = nil
|
29
|
-
@original_bitmap = @bitmap = nil
|
30
|
-
@bitmap_type = nil
|
31
|
-
else
|
32
|
-
pos, bmp_path, diagram = args
|
33
|
-
super(pos, RectShape::DEFAULT::SIZE.dup, diagram)
|
34
|
-
create_from_file(bmp_path)
|
35
|
-
end
|
24
|
+
@bitmap_path = bmp_path
|
25
|
+
create_from_file(bmp_path) if bmp_path
|
36
26
|
@rescale_in_progress = false
|
37
27
|
@can_scale = true
|
38
28
|
end
|
39
29
|
|
40
|
-
# Get full name of a source BMP file.
|
41
|
-
# @return [String] String containing full file name
|
30
|
+
# Get full name of a source BMP file (if set).
|
31
|
+
# @return [String,nil] String containing full file name
|
42
32
|
def get_bitmap_path
|
43
33
|
@bitmap_path
|
44
34
|
end
|
@@ -80,7 +70,16 @@ module Wx::SF
|
|
80
70
|
success = @bitmap.load_file(path, type ? type : Wx::BITMAP_TYPE_ANY)
|
81
71
|
if success
|
82
72
|
p = Pathname.new(art_path)
|
83
|
-
|
73
|
+
if Wx::PLATFORM == 'WXMSW'
|
74
|
+
# take possibility of different drive into account
|
75
|
+
@art_path = if p.relative? || art_path[0] != Dir.getwd[0]
|
76
|
+
art_path
|
77
|
+
else
|
78
|
+
p.relative_path_from(Dir.getwd).to_s
|
79
|
+
end
|
80
|
+
else
|
81
|
+
@art_path = p.relative? ? art_path : p.relative_path_from(Dir.getwd).to_s
|
82
|
+
end
|
84
83
|
@art_section = art_section
|
85
84
|
end
|
86
85
|
else
|
@@ -143,7 +142,7 @@ module Wx::SF
|
|
143
142
|
def do_begin_handle
|
144
143
|
if @can_scale
|
145
144
|
@rescale_in_progress = true
|
146
|
-
@prev_pos = get_absolute_position
|
145
|
+
@prev_pos = get_absolute_position.dup
|
147
146
|
end
|
148
147
|
end
|
149
148
|
|
@@ -197,7 +196,7 @@ module Wx::SF
|
|
197
196
|
_draw_bitmap(dc, get_absolute_position.to_point)
|
198
197
|
|
199
198
|
dc.with_brush(Wx::TRANSPARENT_BRUSH) do
|
200
|
-
dc.with_pen(Wx::Pen.new(
|
199
|
+
dc.with_pen(Wx::Pen.new(hover_colour, 1)) do
|
201
200
|
dc.draw_rectangle(get_absolute_position.to_point, @rect_size.to_size)
|
202
201
|
end
|
203
202
|
end
|
@@ -210,7 +209,7 @@ module Wx::SF
|
|
210
209
|
_draw_bitmap(dc, get_absolute_position.to_point)
|
211
210
|
|
212
211
|
dc.with_brush(Wx::TRANSPARENT_BRUSH) do
|
213
|
-
dc.with_pen(Wx::Pen.new(
|
212
|
+
dc.with_pen(Wx::Pen.new(hover_colour, 2)) do
|
214
213
|
dc.draw_rectangle(get_absolute_position.to_point, @rect_size.to_size)
|
215
214
|
end
|
216
215
|
end
|