wxruby3-shapes 0.9.0.pre.beta.3
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 +7 -0
- data/.yardopts +12 -0
- data/CREDITS.md +18 -0
- data/INSTALL.md +39 -0
- data/LICENSE +21 -0
- data/README.md +118 -0
- data/assets/screenshot.png +0 -0
- data/bin/wx-shapes +9 -0
- data/lib/wx/shapes/arrow_base.rb +86 -0
- data/lib/wx/shapes/arrows/circle_arrow.rb +39 -0
- data/lib/wx/shapes/arrows/diamond_arrow.rb +33 -0
- data/lib/wx/shapes/arrows/open_arrow.rb +56 -0
- data/lib/wx/shapes/arrows/solid_arrow.rb +69 -0
- data/lib/wx/shapes/art/shape_canvas/page.xpm +73 -0
- data/lib/wx/shapes/auto_layout.rb +358 -0
- data/lib/wx/shapes/base.rb +33 -0
- data/lib/wx/shapes/canvas_history.rb +84 -0
- data/lib/wx/shapes/connection_point.rb +238 -0
- data/lib/wx/shapes/core.rb +19 -0
- data/lib/wx/shapes/diagram.rb +659 -0
- data/lib/wx/shapes/events.rb +389 -0
- data/lib/wx/shapes/printout.rb +136 -0
- data/lib/wx/shapes/serializable.rb +440 -0
- data/lib/wx/shapes/serialize/core.rb +40 -0
- data/lib/wx/shapes/serialize/id.rb +82 -0
- data/lib/wx/shapes/serialize/wx.rb +104 -0
- data/lib/wx/shapes/serializer/json.rb +258 -0
- data/lib/wx/shapes/serializer/yaml.rb +125 -0
- data/lib/wx/shapes/shape.rb +2129 -0
- data/lib/wx/shapes/shape_canvas.rb +3285 -0
- data/lib/wx/shapes/shape_data_object.rb +43 -0
- data/lib/wx/shapes/shape_handle.rb +287 -0
- data/lib/wx/shapes/shape_list.rb +161 -0
- data/lib/wx/shapes/shapes/bitmap_shape.rb +257 -0
- data/lib/wx/shapes/shapes/circle_shape.rb +136 -0
- data/lib/wx/shapes/shapes/control_shape.rb +483 -0
- data/lib/wx/shapes/shapes/curve_shape.rb +231 -0
- data/lib/wx/shapes/shapes/diamond_shape.rb +62 -0
- data/lib/wx/shapes/shapes/edit_text_shape.rb +317 -0
- data/lib/wx/shapes/shapes/ellipse_shape.rb +106 -0
- data/lib/wx/shapes/shapes/flex_grid_shape.rb +78 -0
- data/lib/wx/shapes/shapes/grid_shape.rb +404 -0
- data/lib/wx/shapes/shapes/line_shape.rb +907 -0
- data/lib/wx/shapes/shapes/multi_sel_rect.rb +214 -0
- data/lib/wx/shapes/shapes/ortho_shape.rb +357 -0
- data/lib/wx/shapes/shapes/polygon_shape.rb +294 -0
- data/lib/wx/shapes/shapes/rect_shape.rb +378 -0
- data/lib/wx/shapes/shapes/round_ortho_shape.rb +131 -0
- data/lib/wx/shapes/shapes/round_rect_shape.rb +142 -0
- data/lib/wx/shapes/shapes/square_shape.rb +119 -0
- data/lib/wx/shapes/shapes/text_shape.rb +324 -0
- data/lib/wx/shapes/thumbnail.rb +234 -0
- data/lib/wx/shapes/version.rb +12 -0
- data/lib/wx/shapes/wx.rb +29 -0
- data/lib/wx/shapes.rb +18 -0
- data/lib/wx/wx-shapes/base.rb +87 -0
- data/lib/wx/wx-shapes/cmd/sampler.rb +58 -0
- data/lib/wx/wx-shapes/cmd/test.rb +27 -0
- data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +7 -0
- data/rakelib/yard/templates/default/layout/html/setup.rb +5 -0
- data/rakelib/yard/yard/relative_markdown_links/version.rb +8 -0
- data/rakelib/yard/yard/relative_markdown_links.rb +39 -0
- data/rakelib/yard/yard-custom-templates.rb +2 -0
- data/rakelib/yard/yard-relative_markdown_links.rb +4 -0
- data/samples/demo/art/AlignBottom.xpm +35 -0
- data/samples/demo/art/AlignCenter.xpm +35 -0
- data/samples/demo/art/AlignLeft.xpm +35 -0
- data/samples/demo/art/AlignMiddle.xpm +35 -0
- data/samples/demo/art/AlignRight.xpm +35 -0
- data/samples/demo/art/AlignTop.xpm +35 -0
- data/samples/demo/art/Bitmap.xpm +25 -0
- data/samples/demo/art/Circle.xpm +22 -0
- data/samples/demo/art/Curve.xpm +21 -0
- data/samples/demo/art/Diamond.xpm +22 -0
- data/samples/demo/art/EditText.xpm +21 -0
- data/samples/demo/art/Ellipse.xpm +22 -0
- data/samples/demo/art/FixedRect.xpm +22 -0
- data/samples/demo/art/FlexGrid.xpm +22 -0
- data/samples/demo/art/GC.xpm +23 -0
- data/samples/demo/art/Grid.xpm +22 -0
- data/samples/demo/art/Line.xpm +21 -0
- data/samples/demo/art/NoSource.xpm +69 -0
- data/samples/demo/art/OrthoLine.xpm +21 -0
- data/samples/demo/art/Rect.xpm +22 -0
- data/samples/demo/art/RoundOrthoLine.xpm +21 -0
- data/samples/demo/art/RoundRect.xpm +22 -0
- data/samples/demo/art/Shadow.xpm +23 -0
- data/samples/demo/art/StandAloneLine.xpm +22 -0
- data/samples/demo/art/Text.xpm +21 -0
- data/samples/demo/art/Tool.xpm +23 -0
- data/samples/demo/art/sample.xpm +251 -0
- data/samples/demo/demo.rb +658 -0
- data/samples/demo/frame_canvas.rb +422 -0
- data/samples/demo/images/motyl.bmp +0 -0
- data/samples/demo/images/motyl2.bmp +0 -0
- data/samples/sample1/art/sample.xpm +251 -0
- data/samples/sample1/sample.rb +263 -0
- data/samples/sample2/art/sample.xpm +251 -0
- data/samples/sample2/sample.rb +133 -0
- data/samples/sample2/sample_canvas.rb +35 -0
- data/samples/sample2/sample_shape.rb +108 -0
- data/samples/sample3/art/sample.xpm +251 -0
- data/samples/sample3/sample.rb +281 -0
- data/samples/sample4/art/sample.xpm +251 -0
- data/samples/sample4/sample.rb +180 -0
- data/tests/art/motyl.bmp +0 -0
- data/tests/lib/wxapp_runner.rb +64 -0
- data/tests/serializer_tests.rb +521 -0
- data/tests/test_grid_shapes.rb +42 -0
- data/tests/test_serialize.rb +7 -0
- data/tests/test_serialize_yaml.rb +17 -0
- metadata +242 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/* XPM */
|
|
2
|
+
static char * sample_xpm[] = {
|
|
3
|
+
"32 32 216 2",
|
|
4
|
+
" c None",
|
|
5
|
+
". c #872C2C",
|
|
6
|
+
"+ c #A52827",
|
|
7
|
+
"@ c #A42828",
|
|
8
|
+
"# c #553131",
|
|
9
|
+
"$ c #7D2D2D",
|
|
10
|
+
"% c #3D3232",
|
|
11
|
+
"& c #535331",
|
|
12
|
+
"* c #AEAE26",
|
|
13
|
+
"= c #85852C",
|
|
14
|
+
"- c #ACAC26",
|
|
15
|
+
"; c #88882C",
|
|
16
|
+
"> c #9B2929",
|
|
17
|
+
", c #A92626",
|
|
18
|
+
"' c #F10D0C",
|
|
19
|
+
") c #B32424",
|
|
20
|
+
"! c #D91919",
|
|
21
|
+
"~ c #A52727",
|
|
22
|
+
"{ c #E51414",
|
|
23
|
+
"] c #DC1817",
|
|
24
|
+
"^ c #9F2828",
|
|
25
|
+
"/ c #A5A527",
|
|
26
|
+
"( c #F2F20B",
|
|
27
|
+
"_ c #FFFF00",
|
|
28
|
+
": c #F1F10C",
|
|
29
|
+
"< c #AEAE25",
|
|
30
|
+
"[ c #E7E712",
|
|
31
|
+
"} c #BEBE22",
|
|
32
|
+
"| c #999929",
|
|
33
|
+
"1 c #DE1716",
|
|
34
|
+
"2 c #A82626",
|
|
35
|
+
"3 c #EF0E0D",
|
|
36
|
+
"4 c #CA1E1E",
|
|
37
|
+
"5 c #C42020",
|
|
38
|
+
"6 c #EC1010",
|
|
39
|
+
"7 c #9E2828",
|
|
40
|
+
"8 c #B12525",
|
|
41
|
+
"9 c #E91211",
|
|
42
|
+
"0 c #922A2A",
|
|
43
|
+
"a c #A8A827",
|
|
44
|
+
"b c #EFEF0D",
|
|
45
|
+
"c c #C5C520",
|
|
46
|
+
"d c #FBFB03",
|
|
47
|
+
"e c #A6A627",
|
|
48
|
+
"f c #FAFA04",
|
|
49
|
+
"g c #CACA1E",
|
|
50
|
+
"h c #DDDD18",
|
|
51
|
+
"i c #F8F806",
|
|
52
|
+
"j c #B8B823",
|
|
53
|
+
"k c #E3E315",
|
|
54
|
+
"l c #9E2929",
|
|
55
|
+
"m c #D01D1D",
|
|
56
|
+
"n c #B72423",
|
|
57
|
+
"o c #AD2625",
|
|
58
|
+
"p c #DD1817",
|
|
59
|
+
"q c #B22525",
|
|
60
|
+
"r c #D71A1A",
|
|
61
|
+
"s c #EBEB10",
|
|
62
|
+
"t c #B0B025",
|
|
63
|
+
"u c #C0C021",
|
|
64
|
+
"v c #E6E613",
|
|
65
|
+
"w c #97972A",
|
|
66
|
+
"x c #A22828",
|
|
67
|
+
"y c #BB2323",
|
|
68
|
+
"z c #B82424",
|
|
69
|
+
"A c #4A3232",
|
|
70
|
+
"B c #842D2D",
|
|
71
|
+
"C c #912B2B",
|
|
72
|
+
"D c #5B3131",
|
|
73
|
+
"E c #70702F",
|
|
74
|
+
"F c #C6C620",
|
|
75
|
+
"G c #8E8E2B",
|
|
76
|
+
"H c #9A9A29",
|
|
77
|
+
"I c #484832",
|
|
78
|
+
"J c #A4A428",
|
|
79
|
+
"K c #9D2828",
|
|
80
|
+
"L c #E61211",
|
|
81
|
+
"M c #E51212",
|
|
82
|
+
"N c #DF1615",
|
|
83
|
+
"O c #D21B1A",
|
|
84
|
+
"P c #423232",
|
|
85
|
+
"Q c #515131",
|
|
86
|
+
"R c #E4E412",
|
|
87
|
+
"S c #F3F307",
|
|
88
|
+
"T c #E2E213",
|
|
89
|
+
"U c #BEBE20",
|
|
90
|
+
"V c #ECEC0C",
|
|
91
|
+
"W c #B1B124",
|
|
92
|
+
"X c #999928",
|
|
93
|
+
"Y c #CF1D1D",
|
|
94
|
+
"Z c #CD1E1D",
|
|
95
|
+
"` c #D21C1C",
|
|
96
|
+
" . c #A42727",
|
|
97
|
+
".. c #ED0F0F",
|
|
98
|
+
"+. c #7E2D2D",
|
|
99
|
+
"@. c #92922B",
|
|
100
|
+
"#. c #FDFD01",
|
|
101
|
+
"$. c #D1D11C",
|
|
102
|
+
"%. c #E5E513",
|
|
103
|
+
"&. c #643030",
|
|
104
|
+
"*. c #E61313",
|
|
105
|
+
"=. c #EE0F0E",
|
|
106
|
+
"-. c #A92726",
|
|
107
|
+
";. c #C1C121",
|
|
108
|
+
">. c #ADAD25",
|
|
109
|
+
",. c #EEEE0E",
|
|
110
|
+
"'. c #5C5C31",
|
|
111
|
+
"). c #F00D0C",
|
|
112
|
+
"!. c #AA2726",
|
|
113
|
+
"~. c #AF2525",
|
|
114
|
+
"{. c #EA1110",
|
|
115
|
+
"]. c #32365A",
|
|
116
|
+
"^. c #333440",
|
|
117
|
+
"/. c #E2E215",
|
|
118
|
+
"(. c #F0F00D",
|
|
119
|
+
"_. c #C4C420",
|
|
120
|
+
":. c #F5F508",
|
|
121
|
+
"<. c #BCBC22",
|
|
122
|
+
"[. c #FCFC02",
|
|
123
|
+
"}. c #8C8C2B",
|
|
124
|
+
"|. c #B92323",
|
|
125
|
+
"1. c #E51413",
|
|
126
|
+
"2. c #633030",
|
|
127
|
+
"3. c #313A74",
|
|
128
|
+
"4. c #2D43AE",
|
|
129
|
+
"5. c #2E40A2",
|
|
130
|
+
"6. c #313975",
|
|
131
|
+
"7. c #77772E",
|
|
132
|
+
"8. c #F7F706",
|
|
133
|
+
"9. c #CBCB1E",
|
|
134
|
+
"0. c #BABA23",
|
|
135
|
+
"a. c #D81919",
|
|
136
|
+
"b. c #A62727",
|
|
137
|
+
"c. c #D41B1B",
|
|
138
|
+
"d. c #C91F1E",
|
|
139
|
+
"e. c #8F2B2B",
|
|
140
|
+
"f. c #323553",
|
|
141
|
+
"g. c #2C45BA",
|
|
142
|
+
"h. c #284CE0",
|
|
143
|
+
"i. c #2A4AD5",
|
|
144
|
+
"j. c #2C46C0",
|
|
145
|
+
"k. c #A3A328",
|
|
146
|
+
"l. c #DEDE17",
|
|
147
|
+
"m. c #772E2E",
|
|
148
|
+
"n. c #EC100F",
|
|
149
|
+
"o. c #AB2626",
|
|
150
|
+
"p. c #B12524",
|
|
151
|
+
"q. c #2B47C8",
|
|
152
|
+
"r. c #2D43AF",
|
|
153
|
+
"s. c #2453FF",
|
|
154
|
+
"t. c #2552FA",
|
|
155
|
+
"u. c #2D44B6",
|
|
156
|
+
"v. c #2C45BE",
|
|
157
|
+
"w. c #BEBE21",
|
|
158
|
+
"x. c #BFBF22",
|
|
159
|
+
"y. c #B2B224",
|
|
160
|
+
"z. c #6B2F2F",
|
|
161
|
+
"A. c #C6201F",
|
|
162
|
+
"B. c #2F409F",
|
|
163
|
+
"C. c #2551F8",
|
|
164
|
+
"D. c #2C44B9",
|
|
165
|
+
"E. c #2452FC",
|
|
166
|
+
"F. c #2F3E92",
|
|
167
|
+
"G. c #585831",
|
|
168
|
+
"H. c #8E8E2A",
|
|
169
|
+
"I. c #79792D",
|
|
170
|
+
"J. c #5C3030",
|
|
171
|
+
"K. c #333333",
|
|
172
|
+
"L. c #313971",
|
|
173
|
+
"M. c #2551F5",
|
|
174
|
+
"N. c #2A49D0",
|
|
175
|
+
"O. c #284EE6",
|
|
176
|
+
"P. c #294BD9",
|
|
177
|
+
"Q. c #294CDD",
|
|
178
|
+
"R. c #2650F1",
|
|
179
|
+
"S. c #323761",
|
|
180
|
+
"T. c #606030",
|
|
181
|
+
"U. c #294CDE",
|
|
182
|
+
"V. c #2D42AD",
|
|
183
|
+
"W. c #2D43B3",
|
|
184
|
+
"X. c #2A4AD6",
|
|
185
|
+
"Y. c #2C45BD",
|
|
186
|
+
"Z. c #303B7C",
|
|
187
|
+
"`. c #2650F0",
|
|
188
|
+
" + c #2650F3",
|
|
189
|
+
".+ c #2B46C3",
|
|
190
|
+
"++ c #284CDE",
|
|
191
|
+
"@+ c #2A49D1",
|
|
192
|
+
"#+ c #264FED",
|
|
193
|
+
"$+ c #31396F",
|
|
194
|
+
"%+ c #303D90",
|
|
195
|
+
"&+ c #2B47C6",
|
|
196
|
+
"*+ c #31386B",
|
|
197
|
+
"=+ c #2E41A7",
|
|
198
|
+
"-+ c #313A77",
|
|
199
|
+
";+ c #303C86",
|
|
200
|
+
">+ c #2551F7",
|
|
201
|
+
",+ c #2D43B1",
|
|
202
|
+
"'+ c #2E41A6",
|
|
203
|
+
")+ c #2552FB",
|
|
204
|
+
"!+ c #2552F9",
|
|
205
|
+
"~+ c #2552F8",
|
|
206
|
+
"{+ c #323765",
|
|
207
|
+
"]+ c #2B48CB",
|
|
208
|
+
"^+ c #2A49CF",
|
|
209
|
+
"/+ c #274EE7",
|
|
210
|
+
"(+ c #264FEE",
|
|
211
|
+
"_+ c #2D42AE",
|
|
212
|
+
":+ c #2650F2",
|
|
213
|
+
"<+ c #294BDA",
|
|
214
|
+
"[+ c #2C46C1",
|
|
215
|
+
"}+ c #313A78",
|
|
216
|
+
"|+ c #2D42AA",
|
|
217
|
+
"1+ c #294BDC",
|
|
218
|
+
"2+ c #2B48CA",
|
|
219
|
+
"3+ c #2453FD",
|
|
220
|
+
" ",
|
|
221
|
+
" ",
|
|
222
|
+
" ",
|
|
223
|
+
" ",
|
|
224
|
+
" ",
|
|
225
|
+
" . + + @ # $ + + + % & * * * = & - * * ; ",
|
|
226
|
+
" > , ' ' ) ! ~ { ' ] ^ / ( _ : < [ } _ _ < | ",
|
|
227
|
+
" 1 2 3 4 5 ' 6 7 3 8 9 0 a b c d e f _ g h i j k ",
|
|
228
|
+
" l ' m n o ' ' ' p q ~ ' r s _ < t b _ _ _ < u v _ w ",
|
|
229
|
+
" x y z A z y y y y B C y y D E F F G H F F F F } I c F J ",
|
|
230
|
+
" K L L ^ M L L L L , N L O P Q R S T U S S S S V W S S X ",
|
|
231
|
+
" Y ' Z ` ' ' ' ' .' ..+. @.#._ < _ _ _ _ $.%._ $. ",
|
|
232
|
+
" &.*.=., ' ' ' ! 5 ' -. } _ ;.( _ _ _ >._ ,.'. ",
|
|
233
|
+
" C ).!.=.' ' ~.{.Z ].^. /.(._._ _ :.<.[.}. ",
|
|
234
|
+
" |.` Z ' ' ~ 1.2. 3.4.5.6. 7.8.>._ _ 9.s 0. ",
|
|
235
|
+
" a.b.' c.d.e. f.g.h.i.j. k.F ,._ < l. ",
|
|
236
|
+
" m. .n.o.p. q.r.s.t.u.v. w.x.( y.E ",
|
|
237
|
+
" z.A.$ B.C.D.s.s.r.E.F. G.H._.I. ",
|
|
238
|
+
" J.K. L.M.N.O.s.s.P.Q.R.S. K.T. ",
|
|
239
|
+
" K. U.s.V.s.s.s.E.W.s.X. ",
|
|
240
|
+
" g.s.M.Y.s.s.s.s.W.E.s.V. ",
|
|
241
|
+
" Z.`. +.+++ + + + +@+N. +#+$+ ",
|
|
242
|
+
" %+&+&+*+W.&+&+&+&+=+-+&+&+;+ ",
|
|
243
|
+
" 6.E.>+,+'+)+s.s.!+=+r.E.~+{+ ",
|
|
244
|
+
" ]+^+/+(+,+s.s._+:+Q.<+[+ ",
|
|
245
|
+
" }+|+s.s.1+q.2+Q.s.3+=+{+ ",
|
|
246
|
+
" 6._+_+_+$+$+_+_+_+*+ ",
|
|
247
|
+
" ",
|
|
248
|
+
" ",
|
|
249
|
+
" ",
|
|
250
|
+
" ",
|
|
251
|
+
" "};
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Wx::SF - Sample4
|
|
2
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
|
3
|
+
|
|
4
|
+
require 'wx/shapes'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TestPanel < Wx::Panel
|
|
8
|
+
|
|
9
|
+
ID_RESIZE = Wx::ID_HIGHEST+1
|
|
10
|
+
|
|
11
|
+
def initialize(parent)
|
|
12
|
+
super(parent, size: [150, 100])
|
|
13
|
+
@big = false
|
|
14
|
+
btn_resize = Wx::Button.new(self, ID_RESIZE, 'Resize me!!!', [10, 10])
|
|
15
|
+
|
|
16
|
+
evt_button ID_RESIZE, :on_btn_resize
|
|
17
|
+
|
|
18
|
+
set_background_colour(Wx::Colour.new(100, 100, 200))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
protected
|
|
22
|
+
|
|
23
|
+
def on_btn_resize(event)
|
|
24
|
+
if !@big
|
|
25
|
+
set_client_size(get_client_size + Wx::Size.new(50, 50))
|
|
26
|
+
else
|
|
27
|
+
set_client_size(get_client_size - Wx::Size.new(50, 50))
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
@big = !@big
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
class SFSample4Frame < Wx::Frame
|
|
35
|
+
|
|
36
|
+
module ID
|
|
37
|
+
MenuQuit = 1000
|
|
38
|
+
MenuAbout = 1001
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def initialize(title)
|
|
42
|
+
super(nil, Wx::StandardID::ID_ANY, title, size: [800,600])
|
|
43
|
+
|
|
44
|
+
self.icon = Wx::Icon(:sample)
|
|
45
|
+
|
|
46
|
+
if Wx.has_feature?(:USE_MENUS)
|
|
47
|
+
# create a menu bar
|
|
48
|
+
mbar = Wx::MenuBar.new
|
|
49
|
+
file_menu = Wx::Menu.new
|
|
50
|
+
file_menu.append(ID::MenuQuit, "&Quit\tAlt-F4", "Quit the application")
|
|
51
|
+
mbar.append(file_menu, "&File")
|
|
52
|
+
|
|
53
|
+
help_menu = Wx::Menu.new
|
|
54
|
+
help_menu.append(ID::MenuAbout, "&About\tF1", "Show info about this application")
|
|
55
|
+
mbar.append(help_menu, "&Help")
|
|
56
|
+
|
|
57
|
+
self.menu_bar = mbar
|
|
58
|
+
|
|
59
|
+
evt_menu(ID::MenuQuit, :on_quit)
|
|
60
|
+
evt_menu(ID::MenuAbout, :on_about)
|
|
61
|
+
end # wxUSE_MENUS
|
|
62
|
+
|
|
63
|
+
@control_type = 0
|
|
64
|
+
|
|
65
|
+
@diagram = Wx::SF::Diagram.new
|
|
66
|
+
# set some diagram manager properties if necessary...
|
|
67
|
+
# set accepted shapes (accept only Wx::SF::RectShape)
|
|
68
|
+
@diagram.clear_accepted_shapes
|
|
69
|
+
@diagram.accept_shape(Wx::SF::ControlShape)
|
|
70
|
+
|
|
71
|
+
# create shape canvas and associate it with shape manager
|
|
72
|
+
@canvas = Wx::SF::ShapeCanvas.new(@diagram, self)
|
|
73
|
+
# set some shape canvas properties if necessary...
|
|
74
|
+
@canvas.add_style(Wx::SF::ShapeCanvas::STYLE::GRID_USE)
|
|
75
|
+
|
|
76
|
+
evt_close :on_close
|
|
77
|
+
|
|
78
|
+
# connect (some) shape canvas events
|
|
79
|
+
@canvas.evt_left_down { |evt| self.on_left_click_canvas(evt) }
|
|
80
|
+
@canvas.evt_right_down { |evt| self.on_right_click_canvas(evt) }
|
|
81
|
+
|
|
82
|
+
if Wx.has_feature?(:USE_STATUSBAR)
|
|
83
|
+
# create a status bar with some information about the used wxWidgets version
|
|
84
|
+
create_status_bar(2)
|
|
85
|
+
set_status_text('Hello wxRuby ShapeFramework user!',0)
|
|
86
|
+
set_status_text("wxRuby #{Wx::WXRUBY_VERSION} #{Wx::PLATFORM} (wxWidgets #{Wx::WXWIDGETS_VERSION})", 1)
|
|
87
|
+
end # wxUSE_STATUSBAR
|
|
88
|
+
|
|
89
|
+
center
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def create_gui_control
|
|
93
|
+
@control_type = (@control_type + 1 ) % 5
|
|
94
|
+
|
|
95
|
+
case @control_type
|
|
96
|
+
when 0
|
|
97
|
+
Wx::Button.new(@canvas, label: 'Hello World!', size: [100, 50])
|
|
98
|
+
when 1
|
|
99
|
+
Wx::TextCtrl.new(@canvas, value: 'Hello World!', size: [150, 100], style: Wx::TE_MULTILINE)
|
|
100
|
+
when 2
|
|
101
|
+
Wx::Slider.new(@canvas, value: 50, min_value: 0, max_value: 100, size: [150, -1])
|
|
102
|
+
when 3
|
|
103
|
+
ctrl = Wx::Gauge.new(@canvas, range: 50, size: [100, -1])
|
|
104
|
+
ctrl.set_value(25)
|
|
105
|
+
ctrl
|
|
106
|
+
when 4
|
|
107
|
+
TestPanel.new(@canvas)
|
|
108
|
+
else
|
|
109
|
+
nil
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# Window event handlers
|
|
114
|
+
|
|
115
|
+
def on_close(_event)
|
|
116
|
+
destroy
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def on_quit(_event)
|
|
120
|
+
destroy
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def on_about(_event)
|
|
124
|
+
msg = "wxRuby ShapeFramework #{Wx::SF::VERSION}\n(wxRuby #{Wx::WXRUBY_VERSION} #{Wx::PLATFORM}; #{Wx::WXWIDGETS_VERSION})\n\n"
|
|
125
|
+
|
|
126
|
+
msg += "Welcome to wxRuby ShapeFramework Sample3 (c) Martin Corino, 2023\n"
|
|
127
|
+
msg += "(ported from wxSFShapeFramework original (c) Michal Bliznak, 2007 - 2013)\n\n"
|
|
128
|
+
msg += "Sample demonstrates possibility to manage GUI controls (widgets) by the wxSFControlShape.\n"
|
|
129
|
+
msg += "Usage:\n"
|
|
130
|
+
msg += " - Left mouse click operates with inserted GUI controls\n"
|
|
131
|
+
msg += " - Right mouse click inserts a GUI control to the canvas\n"
|
|
132
|
+
msg += " - DEL key removes selected shape\n"
|
|
133
|
+
|
|
134
|
+
Wx.message_box(msg, "wxRuby ShapeFramework Sample 4")
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# event handlers for shape canvas
|
|
138
|
+
|
|
139
|
+
def on_left_click_canvas(event)
|
|
140
|
+
# HINT: perform your user actions here...
|
|
141
|
+
|
|
142
|
+
# ... and then process standard canvas operations
|
|
143
|
+
event.skip
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def on_right_click_canvas(event)
|
|
147
|
+
# add new rectangular shape to the diagram ...
|
|
148
|
+
_, shape = @diagram.create_shape(Wx::SF::ControlShape, event.get_position)
|
|
149
|
+
# set some shape's properties...
|
|
150
|
+
if shape
|
|
151
|
+
# set accepted child shapes for the new shape
|
|
152
|
+
shape.clear_accepted_childs
|
|
153
|
+
|
|
154
|
+
# Some visual aspects can be set here:
|
|
155
|
+
shape.set_control_offset(5)
|
|
156
|
+
#shape.set_mod_border(Wx::TRANSPARENT_PEN)
|
|
157
|
+
#shape.set_mod_fill(Wx::Brush(Wx::RED, Wx::CROSSDIAG_HATCH))
|
|
158
|
+
|
|
159
|
+
# Assign managed GUI control to the canvas. Remember the control shape now owns the GUI control and it is
|
|
160
|
+
# deleted by the shape control in its destructor. If you want to remove the GUI control from the parent shape
|
|
161
|
+
# just assign a new control or nil value to it. You can also specify whether managed GUI control
|
|
162
|
+
# is resized in accordance to dimensions of its parent control shape or vice versa.
|
|
163
|
+
shape.set_control(create_gui_control, Wx::SF::FIT_SHAPE_TO_CONTROL)
|
|
164
|
+
|
|
165
|
+
# You can specify whether events generated by the managed control are processed by the shape canvas
|
|
166
|
+
# or/and the widget as well. Note that GUI controls differ in a way how they process events
|
|
167
|
+
# so the behaviour can be different for various widgets.
|
|
168
|
+
shape.set_event_processing(Wx::SF::ControlShape::EVTPROCESSING::MOUSE2CANVAS | Wx::SF::ControlShape::EVTPROCESSING::KEY2CANVAS)
|
|
169
|
+
#shape.set_event_processing(Wx::SF::ControlShape::EVTPROCESSING::MOUSE2GUI | Wx::SF::ControlShape::EVTPROCESSING::KEY2GUI)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# ... and process standard canvas operations
|
|
173
|
+
event.skip
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
Wx::App.run do
|
|
179
|
+
SFSample4Frame.new('wxShapeFramework Sample 4').show
|
|
180
|
+
end
|
data/tests/art/motyl.bmp
ADDED
|
Binary file
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
|
|
2
|
+
require 'test/unit'
|
|
3
|
+
require 'test/unit/ui/console/testrunner'
|
|
4
|
+
require 'wx/core'
|
|
5
|
+
|
|
6
|
+
module Wx::SF
|
|
7
|
+
|
|
8
|
+
module Test
|
|
9
|
+
|
|
10
|
+
class App < Wx::App
|
|
11
|
+
def initialize(test_runner, start_mtd)
|
|
12
|
+
super()
|
|
13
|
+
@test_runner = test_runner
|
|
14
|
+
@start_mtd = start_mtd
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def on_init
|
|
18
|
+
@result = @start_mtd.bind(@test_runner).call
|
|
19
|
+
false
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attr_reader :result
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
if defined? ::IntelliJ
|
|
26
|
+
require 'test/unit/ui/teamcity/testrunner'
|
|
27
|
+
BaseRunner = ::Test::Unit::UI::TeamCity::TestRunner
|
|
28
|
+
else
|
|
29
|
+
BaseRunner = ::Test::Unit::UI::Console::TestRunner
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class Runner < BaseRunner
|
|
33
|
+
|
|
34
|
+
org_start_mtd = instance_method :start
|
|
35
|
+
define_method :start do
|
|
36
|
+
(app = Wx::SF::Test::App.new(self, org_start_mtd)).run
|
|
37
|
+
app.result
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
module Test
|
|
47
|
+
module Unit
|
|
48
|
+
AutoRunner.register_runner(:wxapp) do |auto_runner|
|
|
49
|
+
Wx::SF::Test::Runner
|
|
50
|
+
end
|
|
51
|
+
AutoRunner.default_runner = :wxapp
|
|
52
|
+
if defined? ::IntelliJ
|
|
53
|
+
class AutoRunner
|
|
54
|
+
alias :wx_initialize :initialize
|
|
55
|
+
private :wx_initialize
|
|
56
|
+
|
|
57
|
+
def initialize(*args)
|
|
58
|
+
wx_initialize(*args)
|
|
59
|
+
@runner = AutoRunner.default_runner
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|