-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathchanges.txt
668 lines (599 loc) · 46.5 KB
/
changes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
Changes in version 1.15.1 beta (2015-11-24):
--------------------------------------------
- Fixed build on 64-bit OS with GCC 5.1.
- Fixed build warnings dealing with usage of deprecated pen/brush style names.
Changes in version 1.15.0 beta (2014-08-29):
--------------------------------------------
- Holding CTRL key during the interactive connection creation allows users to place control points
even "onto" an underlying shape without finishing the connection process.
- Fixed export of diagrams with disabled background to image files.
- Fixed several warning messages which appeared when the wxSF was built by using clang compiler (patch by iwbnwif).
- Connection lines bounded to the dropped shape are not accidentaly reparented anymore.
Changes in version 1.14.0 beta (2014-04-04):
--------------------------------------------
- Added two shape events wxEVT_SF_LINE_HANDLE_ADD and wxEVT_SF_LINE_HANDLE_REMOVE emited
when a line shape's handle is added or removed.
- More intelligent orthogonal line's drawing when connected to the shapes' connection points.
- Added ability to set preferred direction of the orthogonal connection line assigned to the connection points
(see wxSFConnectionPoint::SetOrthoDirection(...) function).
- Functions related to the connection points' creation now returns pointer to the newly
created connection point.
- Add ability to propagate hovering and highlighting (patch by Marius).
- Extend multi-selection to support incremental adding/removing from the selection list.
Hold the shift key to keep adding to the selection and ctrl+shift to remove from it (patch by Marius).
- Add ability to continue line editing if pre-connection handler vetoes. Returning false from a pre-connection
check right now cancels the operation completely. It would be more helpful if the user could pick a 3'rd option
where he doesn't have to abort and be allowed to stay inside the connection mode until he find an appropriate place to connect to (patch by Marius).
- Expose ability to update shape under cursor cache. If we want to remove the first shape under the cursor and continue work after,
we find that there is no way to update the cached "m_pUnselectedShapeUnderCursor/etc..". A function UpdateShapeUnderCursorCache witch
exposes this functionality withouth having to wait for a new mouse event has been added (patch by Marius).
- Add ability to start a interactive connection from a specified connection point. The user might already have a wxSFConnectionPoint where he wants
to start the interactive connection from so a simplified StartInteractiveConnection function was added (patch by Marius).
- Fix multiselection rectangle drawing when using GC On Windows 8 if we set: shapeCanvas->EnableGC(true) then there is a issues with drawing the multiple
selection rectangle on negative selections. Basically when dragging from right to left would lead the selection rectangle to have a negative width/height
witch GC can't draw (patch by Marius).
- Updated sample projects to reflect new features.
Changes in version 1.13.0 beta (2013-10-25):
--------------------------------------------
- Fixed #6 'void' function returning a value.
- Fixed #7 error C2374: 'i' : redefinition.
- Fixed #8 Memory leak when wxGraphicsContext is enabled.
- Added functions wxSFDiagramManager::IsModified() and wxSFDiagramManager::SetModified(...).
- Added functions wxSFDiagramManager::AcceptTopShape(...) and wxSFDiagramManager::ClearAcceptedTopShapes()
suitable for specification of shapes that can be inserted to diagram manager as top shapes (i.e.
shapes without any parent).
- Diagram manager now accepts all shape types by default (also, all the shapes are accepted
as top shapes by default).
- Added new shape style sfsPROPAGATE_INTERACTIVE_CONNECTION allowing the shape to propagate interactive connection
request to its parent.
- Added new shape style sfsNO_FIT_TO_CHILDREN which avoids the shape to be resized to fit its children automatically.
- Fixed incorrect refresh of scaled canvas if wxGraphicsContext is used for drawing.
- Function wxSFShapeCanvas::DrawContent(...) is virtual now.
- Added virtual function wxSFShapeCanvas::DrawBackground(...) called before wxSFShapeCanvas::DrawContent(...)
responsible for drawing of the canvas background and grid.
- Added virtual function wxSFShapeCanvas::DrawForeground(...) called after wxSFShapeCanvas::DrawContent(...)
responsible for drawing onto the top of the diagram.
- Updated sample projects to reflect new features.
Changes in version 1.12.4 beta (2013-02-14):
--------------------------------------------
- Fixed build error with wxWidgets 2.9.5.
Changes in version 1.12.3 beta (2012-12-14):
--------------------------------------------
- wxAutoBufferedPaintDC is used in shape canvas insted wxBufferedPaintDC which should
improve drawing speed under Linux and Mac OS X.
- Switched to use wxXmlSerializer 1.3.7.
Changes in version 1.12.2 beta (2012-11-25):
--------------------------------------------
- Shape events are processed immediatelly (which returns former behaviour and fixes at least
incorrect shape handles delta value published via wxSF events).
- Handle movement delta is set to 0,0 at the begining of the handle dragging.
Changes in version 1.12.1 beta (2011-01-06):
--------------------------------------------
- Added function wxSFShapeCanvas::SaveCanvasToImage(...) providing better diagram export to an image.
- Added function wxSFShapeCanvas::InvalidateVisibleRect() which marks whole visible canvas rectangle
as an invalidated one.
- Updated wxSFDemo project to reflect new features.
- Fixed drawing issues when multiple selected shapes were handled.
- Fixed compilation under MacOS.
- Fixed compilation for wxWidgets with --enable-stl option.
- Fixed propagation of shape selection to all its parents recursively if sfsPROPAGATE_SELECTION flag is set.
Changes in version 1.12.0 beta (2011-10-25):
--------------------------------------------
- Optimized canvas refresh.
- Added function wxSFShapeCanvas::InvalidateRect(const wxRect& rct) which marks given
rectangle as "invalidated", i.e. requesting refresh.
- Added function wxSFShapeCanvas::RefreshInvalidatedRect() which refreshes all previously
invalidated canvas areas (rectangles).
- Functions wxSFShapeBase::Refresh(...) now takes an argument which can make the shape canvas
refresh delayed (it can be refreshed later by using wxSFShapeCanvas::RefreshInvalidatedRect() function).
Changes in version 1.11.2 beta (2011-08-24):
--------------------------------------------
- Switched to use wxXmlSerializer 1.3.6:
- The source code is now compatible with wxWidgets 2.9 and higher.
- The source code is now compatible with wxWidgets 2.9 and higher.
Changes in version 1.11.1 beta (2011-06-10):
--------------------------------------------
- Switched to use wxXmlSerializer 1.3.5:
- Data types defined in wxXmlSerializer are wrapped by wxXS namespace (e.g. IntArray -> wxXS::IntArray ).
- Fixed diagram print.
- Fixed crash occured when diagram was loaded into shape manager by using wxSFDiagramManager::DeserializeFromXml()
function without assigned shape canvas.
- Functions wxSFDiagramManager::SerializeToXml() allows serialization of root item's properties in the same
way like original wxXmlSerializer::SerializeToXml() function prototypes do.
Changes in version 1.11.0 beta (2011-03-04):
--------------------------------------------
- Switched to use wxXmlSerializer 1.3.4:
- Added functions xsSerializable::RemoveChild(xsSerializable *child) and xsSerializable::RemoveChildren().
- Added shape style sfsPROPAGATE_DRAGGING which propagates shape dragging event to the parent shape (if any) even
if sfsPOSITION_CHANGE style is not present.
- Added shape style sfsPROPAGATE_SELECTION which propagates selection to the parent shape (if any).
- Added new shape wxSFRoundOrthoLineShape encapsulating connection line orthogonal to base axis with rounded corners.
- Added sfdvLINESHAPE_DOCKPOINT_CENTER pre-defined value for wxSFLineShape::SetDockPoint() and wxSFShapeBase::SetCustomDockPoint()
function (for more details see the documentation).
- Shape canvas can process wxEVT_MOUSEWHEEL event if sfsPROCESS_MOUSEWHEEL style is in use. In this case a new virtual function
wxSFShapeCanvas::OnMouseWheel() is called which adjusts the canvas scale.
- Added functions wxSFShapeCanvas::Set/GetMinScale() and wxSFShapeCanvas::Set/GetMaxScale() for definition of mouse wheel scale boundaries.
- Fixed and unified wxSFLineShape::SetDockPoint() and wxSFShapeBase::SetCustomDockPoint() functionality.
- Fixed Horizontal/Vertical tree layout algorithm.
- Improved detection of ellipse shape vs. connection line intersection.
- Canvas state is not saved if OnPreConnectionFinished() exists with false.
- Update wxSFDemo and wxSFSample3 project to reflect new features.
Changes in version 1.10.0 beta (2010-12-22):
--------------------------------------------
- Switched to use wxXmlSerializer 1.3.3:
- SerializableList content can be directly serialized via XS_SERIALIZE macro.
- Added abbility to define fixed connection points for line connections. See wxSFShapeBase::AddConnectionPoint() functions
and related.
- Implemented simple auto layout algorithms. For more details see wxSFAutoLayout class and wxSFDemo sample project.
Currently supported layouting algorithms are "Circle", "Mesh", "Horizontal Tree" and "Vertical Tree".
- Added function wxSFDiagramManager::IsEmpty() which informs user whether the diagram manager contains any shapes.
- Added function wxSFShapeCanvas::CenterShapes() which centers whole diagram in accordance to the shape canvas extent.
- Update wxSFDemo project to reflect new features.
Changes in version 1.9.3 beta (2010-12-08):
--------------------------------------------
- Editation of wxSFEditTextShape can be disabled by putting editDISABLED value to wxSFEditTextShape::SetEditType(EDITTYPE type) function.
- Added functions void wxSFShapeCanvas::SetGridLineMult(int multiple) and int wxSFShapeCanvas::GetGridLineMult(). If used then grid lines
will be drawn in a distance calculated as grid size multiplicated by this value. Default value is 1.
- Added functions void wxSFShapeCanvas::SetGridStyle(int style) and int wxSFShapeCanvas::GetGridStyle() allowing user
to define grid line style.
- Update wxSFDemo project to reflect new features.
- Added new virtual event handler void wxSFShapeCanvas::OnUpdateVirtualSize(wxRect &virtrct) called during canvas' virtual size update. The function
allows user to modify calculated virtual canvas size.
Changes in version 1.9.2 beta (2010-06-24):
--------------------------------------------
- Switched to use wxXmlSerializer 1.3.2:
- Error states/messages aren't displayed by using messageboxes no more. Use wxXmlSerializer::GetErrMessage()
instead if needed.
- Serialized data members can be converted to wxVariant (if data type is supported) via xsProperty::ToVariant()
member function.
- Added new macro XS_IMPLEMENT_CLONABLE_CLASS2 suitable for classes with two ancestors.
- Fixed possible crash occured during loading of projects containing shape classes which are not currently known (declared) in the application.
- Added missing include in ScaledDC.h file preventing wxSF from build if precompiled header were used.
- Added new helper macro SF_ADD_COMPONENT(comp, name) usefull when a shape's component should be added to its parent
by the parent itself and not by serializer/diagram manager (typically in constructor of so called composite shape).
- Fixed build error occured during compilation of wxSFDemo sample project on wxWidgets without defined wxOPEN and wxSAVE symbols.
- Fixed drawing of non-transparent text shapes in Windows (shape border wasn't visible).
- Added new virtual function wxSFShapeCanvas::OnPreConnectionFinished() and event wxEVT_SF_LINE_BEFORE_DONE suitable for
canceling/vetoing creation of line shape if needed (patch by foldink).
- Added new function wxSFShapeCanvas::StartInteractiveConnection(wxSFLineShape* shape, const wxPoint& pos, wxSF::ERRCODE *err = NULL)
which can create an interactive connection from existing line shape object.
- Added new function wxSFShapeCanvas::CreateConnection(long srcId, long trgId, wxSFLineShape *line, bool saveState = true, wxSF::ERRCODE *err = NULL)
which can create a connection from existing line shape object.
- All prototypes of AddShape(), CreateConnection() and StartInteractiveConnection() functions now take one additional argument (pointer to variable)
which can return an operation result type defined if wxSF::ERRCODE enumeration. Note that this new argument can be NULL (which is its default value).
- Fixed update of grid shapes.
- Fixed incorrect update of grid cell IDs at deserialization.
- Added new function wxSFGridShape::RemoveFromGrid(long id).
Changes in version 1.9.1 beta (2010-01-15):
--------------------------------------------
- Switched to use wxXmlSerializer 1.3.1:
- IDs of child items which aren't created directly by the serializer are now properly set by xsSerializable::AddChild() function.
- Fixed function wxXmlSerializer::GetNewId().
- Minor code clean-up.
- Fixed mismatch in allocation and deallocation in wxSFScaledDC::DoDrawLines() function (patch by ettlmartin a.k.a orbitcowboy).
- Implemented new events used in shapes (emited from shapes and redirected to shape canvas). The new events are: wxEVT_SF_SHAPE_LEFT_DOWN,
wxEVT_SF_SHAPE_LEFT_DCLICK, wxEVT_SF_SHAPE_RIGHT_DOWN, wxEVT_SF_SHAPE_RIGHT_DCLICK, wxEVT_SF_SHAPE_MOUSE_ENTER, wxEVT_SF_SHAPE_MOUSE_OVER,
wxEVT_SF_SHAPE_MOUSE_LEAVE, wxEVT_SF_SHAPE_HANDLE_BEGIN, wxEVT_SF_SHAPE_HANDLE, wxEVT_SF_SHAPE_HANDLE_END, wxEVT_SF_SHAPE_DRAG_BEGIN,
wxEVT_SF_SHAPE_DRAG, wxEVT_SF_SHAPE_DRAG_END, wxEVT_SF_SHAPE_KEYDOWN, wxEVT_SF_SHAPE_CHILD_DROP. Also new event classes are available:
wxSFShapeMouseEvent, wxSFShapeHandleEvent, wxSFShapeKeyEvent and wxSFShapeChildDropEvent.
- Added new shape style sfsEMIT_EVENTS which enables emitting of shape events.
- Added new function wxSFDiagramManager::CreateConnection(long srcId, long trgId, wxClassInfo *lineInfo, bool saveState = true) which
allows user to define also connection type (instead of hardcoded "wxSFLineShape" in its first version). The original function is
still available.
- Updated wxSFSample1 and wxSFSample2 sample projects to demonstrate new library's functionality.
- Slightly tuned sensivity for searching of a line under the cursor.
- Fixed function wxSFDiagramManager::GetAssignedConnections(); shapes with ID equal to -1 will not be examined.
Changes in version 1.9.0 beta (2009-11-1):
--------------------------------------------
- Switched to use wxXmlSerializer 1.3.0:
- Added function xsSerializable::RemoveProperty(xsProperty *property).
- Added function xsSerializable::InsertChild(size_t pos, xsSerializable *child).
- Added function bool wxXmlSerializer::Contains(wxClassInfo *type) which returns TRUE if object of given type is included
in the serializer.
- Improved performance of wxXmlSerializer::GetNewId(), wxXmlSerializer::IsIdUsed(), wxXmlSerializer::GetItem(long id) functions.
- Functions wxXmlSerializer::SerializeToXML() and wxXmlSerializer::DeserializeFromXml() now returns bool value informing about the
operation success/fail.
- Changed visibility of xsSerializable::m_nId data member from protected to private.
- Significantly improved compatibility with wxMAC.
- Improved wxSFDiagramManager::FindShape(long id) function's performance.
- Improved diagram's loading performance.
- Implemented stand-alone lines. Use wxSFLineShape::SetStandAlone(), wxSFLineShape::SetSrcPoint() and wxSFLineShape::SetTrgPoint() functions.
Note that lines can be still top-most shapes only (it means they cannot have a parent shape).
- Added new shape style sfsLOCK_CHILDREN which prevents child shapes' relative position from change if the parent shape is resized.
- Added function bool wxSFShapeBase::IsDescendant(wxSFShapeBase *parent);
- Added function bool wxSFShapeBase::IsAncestor(wxSFShapeBase *child);
- Updated premake build files to work properly also on Mac OS.
- The thumbnail control (wxSFThumbnail) is refreshed when NULL shape canvas is set.
- More accurate size change of text shapes.
- Fixed possible problem dealing with diagram's loading in a case where IDs' resolving leads to their circular update (patch by basique).
- Fixed possible crash after Cut/Undo/Redo/Delete operations.
- Fixed displaying of bitmap shapes in the canvas thumbnail.
- Fixed addition of new shapes to the canvas if canvas i scrolled (in some cases the new shapes were assigned as a children to inproper parents).
- Fixed size of scaled texts (now it cannot be smaller than 1pt).
- Fixed possible crash in shape canvas's destructor caused by improper deinitialization of multi-edit control.
- Functions wxSFDiagramManager::SerializeToXML() and wxSFDiagramManager::DeserializeFromXml() now returns bool value informing about the
operation success/fail.
- Changed visibility of wxSFLineShape::m_nSrcOffset and wxSFLineShape::m_nTrgOffset data members from private to protected.
- Updated wxSFDemo sample to reflect the latest changes.
Changes in version 1.8.0 beta (2009-06-10):
--------------------------------------------
- Switched to use wxXmlSerializer 1.2.0:
- Added functions void xsProperty::ToString() which returns textual representation of current property value and
xsProperty::FromString(const wxString& val) which sets the property value from its textual representation. The functions
can be used for indirect manipulating with serialized data members encapsulated by properties (see xsSerializable::GetProperty()).
- Added set of type cast functions with data type assertion for indirect manipulation with serialized data members encapsulated
by properties. See functions xsProperty::AsInt(), xsProperty::AsDouble(), etc.
- Function xsSerializable::AddChild(xsSerializable* child) correctly initializes all children recursively.
- Function wxXmlSerializer::SetRootItem(xsSerializable* root) correctly initializes all root's children recursively.
- Renamed function xsSerializable::IsCloned() to xsSerializable::IsCloningEnabled().
- Declaration of function void wxXmlSerializer::CopyItems(const wxXmlSerializer *src) changed to void wxXmlSerializer::CopyItems(const wxXmlSerializer &src).
- Copy contructor of xsSerializable class now clones serialized child items as well recursively.
- Implemented diagram thumbnail (wxSFThumbnail) usefull for previewing and navigating of associated shape canvas.
- Added orthogonal line shape (wxSFOrthoLineShape). This line consists of subsegments orthogonal to base axis.
- Added new arrow styles "diamond arrow" (wxSFDiamondArrow) and "circle arrow" (wxSFCircleArrow).
- Added abbility to set arrows' fill and border style.
- Added abbility to set line's docking point to its starting (value 'sfdvLINESHAPE_DOCKPOINT_START') or ending
(value 'sfdvLINESHAPE_DOCKPOINT_END') point.
- Added abbility to define custom dock point for each shape used if the shape is assigned as a child to a line shape.
See wxSFShapeBase::SetCustomDockPoint(int dp) and wxSFShapeBase::GetCustomDockPoint() fucntions.
- Added new alignment styles valignLINE_START, valignLINE_END, halignLINE_START and halignLINE_END.
- Added function void wxSFShapeBase::GetAssignedConnections(wxClassInfo* shapeInfo, wxSFShapeBase::CONNECTMODE mode, ShapeList& lines).
- Added function void wxSFShapeCanvas::ScrollToShape(wxSFshapeBase *shape) which scrolls the shape canvas so the given
shape will be located in its center.
calling its equivalent in a diagram manager class.
- Renamed function wxSFShapeBase::IsInside(const wxPoint& pos) to wxSFShapeBase::Contains(const wxPoint& pos) due to
its previous misleading name.
- Renamed function wxSFShapeHandle::IsInside(const wxPoint& pos) to wxSFShapeHandle::Contains(const wxPoint& pos) due to
its previous misleading name.
- Scale factor of shape canvas containing control shapes can be only "1".
- Fixed positioning of control shapes (wxSFControlShape) during dragging of their parent shapes.
- Fixed crash occured when undo/redo operations were used on a shape canvas containing control shapes (wxSFControlShape).
- Fixed crash occured when NULL pointer was passed to "shapeInfo" parameter of wxSFDiagramManager::AddShape(wxClassInfo* shapeInfo,
const wxPoint& pos, bool saveState) function.
- Fixed scaling of multiple shapes using multi-edit mode.
Changes in version 1.7.2 beta (2009-03-16):
--------------------------------------------
- Switched to use wxXmlSerializer 1.1.10:
- Added two new simple samples (console applications) for demonstration how to use wxXmlSerializer for serialization of user-defined class instances
using new defined operators.
- Added function bool xsSerializable::HasChildren().
- Added static function xsPropertyIO* wxXmlSerializer::GetPropertyIOHandler(const wxString& datatype) returning pointer to I/O handler suitable for given
data type if exists, otherwise NULL.
- Added new data type and I/O handler for string hash map ('StringMap' data type).
- Defined operator "<<" in the wxXmlSerializer class which adds a serializable object on the right side to a static instance of wxXmlSerializer on the left
side of the operator as a child object of serializer's root.
- Defined operator "<<" in the xsSerializable class which adds a serializable object on the right side to a static instace of xsSerializable on the left
side of the operator as its child object.
- Optimized xsPropertyIO::Write() function of array data types for speed.
- Declaration of xsProperyIO::ToString(T value) changed to xsProperyIO::ToString(const T& value).
- Functions wxXmlSerializer::AddItem() return pointer to added item.
- If a font creation based on a native info stored in XML fails then a default (wxSWISS_FONT) font is used.
- Improved "const correctness" of member functions.
- Code clean-up.
- Updated premake build scripts to support CodeLite IDE.
- Added function wxSFShapeBase* wxSFGridShape::GetManagedShape(size_t index) returning pointer to managed shape specified by lexicographic
index of relevat grid cell.
- Added function wxSFShapeBase* wxSFGridShape::GetManagedShape(int row, int col) returning pointer to managed shape specified row and column
indexes of parent grid cell.
- Added function wxSFDiagramManager::UpdateAll() which updates all shapes in the diagram manager.
- Added function wxSFShapeDropEvent::GetDropTarget() which returns pointer to shape canvas where shapes have been dropped to.
- Added function wxSFShapePasteEvent::GetDropTarget() which returns pointer to shape canvas where shapes have been pasted to.
- Functions declared in CommonFcn header file are now encapsulated by namespace wxSFCommonFcn.
- Virtual function wxSFShapeBase::OnChildDropped() is now called even for child shapes dropped via Drag&Drop operation.
- Added ability to choose type of editable text shape's control. Use functions wxSFEditTextShape::SetEditType() and
wxSFEditTextShape::GetEditType() along with style wxSFEditTextShape::EDITTYPE (values editINPLACE and editDIALOG are available
for now).
- Pressing of the ENTER key when editable text (wxSFEditTextShape) is modified causes termination of editing process.
Pressing of the ENTER key together with the SHIFT key will add a newline to the edited text (all applicable only in in-place edit mode).
- Temporarily(?) disabled ability to print using wxGraphicsCanvas (due to crash) on Linux. For now only standard drawing functions are used instead.
- Improved "const correctness" of member functions.
- Fixed calculation of multiline text extent if wxGraphicsContext is used.
- Fixed crash in wxSFEditTextShape occured when the ENTER key was pressed without any changes made in editted text.
- Code clean-up.
- Updated premake build scripts to support CodeLite IDE.
Changes in version 1.7.1 beta (2008-12-20):
--------------------------------------------
- Switched to use wxXmlSerializer 1.1.9:
- Added functions xsSerializable::GetFirstChild(wxClassInfo *type), xsSerializable::GetLastChild(wxClassInfo *type), xsSerializable::GetSibbling(wxClassInfo *type).
- Changed declaration of xsSerializable::GetChildrenRecursively(wxClassInfo *type, SerializableList& list) function to
xsSerializable::GetChildrenRecursively(wxClassInfo *type, SerializableList& list, SEARCHMODE mode), where 'mode' parameter can be 'searchDFS' for Depth-First-Search
or 'searchBFS' for Breadth-First-Search algorithm. The 'searchBFS' is default.
- Changed declaration of wxXmlSerializer::GetItems(wxClassInfo* type, SerializableList& list) function to wxXmlSerializer::GetItems(wxClassInfo* type, SerializableList& list,
xsSerializable::SEARCHMODE mode = xsSerializable::searchBFS).
- Significant speed improvements and optimizations in shape canvas and diagram manager. These improvements required some small
API changes; see the lines bellow for more information.
- Changed declaration of wxSFDiagramManager::GetShapes(ShapeList& shapes) function to wxSFDiagramManager::GetShapes(wxClassInfo* shapeInfo, ShapeList& shapes
xsSerializable::SEARCHMODE mode = xsSerializable::searchBFS).
- Changed declaration of wxSFShapeBase::GetChildShapes(ShapeList& children, bool recursive = false) to wxSFShapeBase::GetChildShapes(wxClassInfo *type, ShapeList& children,
bool recursive = false, xsSerializable::SEARCHMODE mode = xsSerializable::searchBFS).
- Functions wxSFDiagramManager::GetAssignedConnections, wxSFDiagramManager::GetShapes, wxSFDiagramManager::GetShapesAtPosition,
wxSFDiagramManager::GetShapesInside and wxSFShapeCanvas::GetSelectedShapes don't return number of found elements anymore
( user can call wxList::GetCount() function later if neccessary ).
- Line shapes connected to child shapes are moved together with their parent if dragged or moved by keys.
- Fixed propagation of some key events to shapes (arrow keys on lines weren't processed correctly).
- Fixed possible crash if parent shape was dropped (in some special cases) to its child shape.
Changes in version 1.7.0 beta (2008-12-05):
--------------------------------------------
- Switched to use wxXmlSerializer 1.1.8:
- Improved detection of locales (decimal point).
- Alpha channel of wxColour data structure is serialized now.
- Improved deserialization speed of wxPoint and wxColour data structures.
- Added experimental support for wxGraphicsContext. The feature can be activated via static function wxSFShapeCanvas::EnableGC().
If enabled then new wxWidgets renderer class is used by wxSFScaledDC class so the shapes are antialiazed, support semitransparency via
colour aplha channel and support alpha channel in images. This feature can be used only if both wxSF and wxWidgets
libraries are compiler with wxUSE_GRAPHICS_CONTEXT=1. Note that only subset of drawing functions declared in wxDC class are
currently redirected to use wxGraphicsContext (rectangle, rounded rectangle, ellipse, line, point, polygon, polypolygon, text and bitmap).
- wxSFScaledPaintDC class was replaced by wxSFScaledDC class derived directly from wxDC class which is used as a wrapper for any other DC.
This modification allowed the library to use wxGraphicsContext together with all other DCs (paint, memory, print, ...).
- Added shape's alignment flags valignEXPAND and halignEXPAND.
- Shapes assigned to a grid shape are now aligned inside the grid cells in accordance to the shapes' current alignment flags.
- Improved line and curve shapes' drawing speed.
- New shapes created by wxSFDiagramManager::AddShape(wxClassInfo* shapeInfo, const wxPoint& pos, bool saveState) function
are assigned to an underlying shape (if exists) as its child automatically.
- Added function wxSFShapeBase::IsInside(const wxRect& rct) returning TRUE if a shape is completely inside given rectangle.
- Functions GetShapeAtPosition(), GetShapesAtPosition() and GetShapesInside() are now members of wxSFDiagramManager class. Their
previous implementation in wxSFShapeCanvas class now calls these new originals. This modification allows user to call the functions
even if no canvas exists yet.
- Fixed mixed multiple selection of child and top-most shapes (all shapes had been assigned to the last clicked shape's parent).
- Fixed potentional assertion fault in wxSFLineShape::OnLeftDoubleClick(const wxPoint& pos) event handler.
- Fixed grid shapes in such way they do not accept line shapes as managed shapes anymore.
- Update and fixed wxSFDemo sample project.
- Code clean-up.
Changes in version 1.6.2 beta (2008-09-27):
--------------------------------------------
- Switched to use wxXmlSerializer 1.1.7:
- Function xsPropertyIO::AddPropertyNode() is now static and takes information about xml node type.
- Function xsSerializable::GetChild() now allows recursive search.
- IDs of managed serialized items are now serialized automatically by default (in previous library version this task had to be
done explicitelly by a user).
- Fixed bug dealing with reading of float and double values on platforms which use ',' decimal character (fix no.2).
- Added wxSFFlexGridShape with a behaviour similar to classic wxFlexGridSizer (each grid's column and row can have different size).
- wxSFShapeBitmap::CreateFromFile() function now takes also bitmap type parameter (use bitmap types supported by wxBitmap class). Previously
only BMP files were supported.
- wxSFDiagramManager::AddShape(wxClassInfo* shapeInfo, const wxPoint& pos, bool saveState) function doesn't Refresh() new shape anymore
(the wxSFShapeBase::wxRefresh() must be called explicitelly if neccessary).
- Fixed wxSFGridShape's RTTI information
- Fixed grid shapes minimal size. Even empty grid shape with zero cell space has non-zero size now.
Changes in version 1.6.1 beta (2008-09-24):
--------------------------------------------
- Switched to use wxXmlSerializer 1.1.6:
- Added support for new (exported) dynamic data containers (CharArray, IntArray, FloatArray, DoubleArray).
- Fixed bug dealing with reading of float and double values on platforms which use ',' decimal character.
- Added a posibility to interactivelly change ending line points connected to shapes (it means that the connection lines
do not point to the shape center only anymore). The ending points can be changed by simple placing of the ending line handles somewhere
over the shape.
- Added new wxSFGridShape which has the same behaviour like classic wxGridSizer known from wxWidgets (it means that its child shapes
are layouted into a grid defined by number of rows and columns).
- Added virtual function wxSFShapeBase::OnChildDropped(const wxRealPoint& pos, wxSFShapeBase *child) called when other
dragged shape(s) are dropped above target shape (the dropped shapes must be accepted by the target).
- Changed declaration of GetBorderPoint() function. Now it takes two parameters (starting and ending point of a virtual
line intersecting the shape's border).
- Fixed control shape to proper set its size in accordance to managed GUI control (virtual function wxSFShapeBase::Update () should works now).
- Fixed wxSFDiagramManager::GetNewId() function to respect also ID used in the diagram root item.
- Updated wxSFDemo sample projekt to demonstrate the wxSFGridShape.
- Updated wxSFSample4 (added possibility to create a gui control consisting of wxPanel and wxButton used for the real-time panel resizing).
Changes in version 1.6.0 beta (2008-06-02):
--------------------------------------------
- Switched to use wxXmlSerializer 1.1.5:
- Function xsSerializable::AddChild() returns pointer to the added child item. It also sets
new unique ID to the added object if its previous ID was undefined (in the previous library
version the ID was assigned by wxXmlSerializer::AddItem() function only).
- Added support for NaN and INF values for double and float data types (proposed by fantaz).
- Modified Sample1 code to demonstrate the ability to handle NaN and INF values.
- Name of function xsSerializable::GetChildren() changed to xsSerializable::GetChildrenList().
- Added function xsSerializable::GetChildren(wxClassInfo *type, SerializableList& list) returning
the child objects of given type (or all children if type is NULL).
- Added function xsSerializable::GetChildrenRecursively(wxClassInfo *type, SerializableList& list) returning
all child objects of given type recursively (or all children recursively if type is NULL).
- Function wxXmlSerializer::GetItems(wxClassInfo* type, SerializableList& list) doesn't return
the number of found items anymore.
- Implemented shadows under shapes. Class wxSFShapeBase has a new style sfsSHOW_SHADOW which causes
appearance of a shadow under this shape. Shadows can be collectively set by wxSFShapeCanvas::ShowShadows()
function and the shadow style can be modified by functions SetShadowOffset(), SetShadowFill() and SetShadowTextColour()
which are member functions of wxSFShapeCanvas class. Also analogical GetXXX() functions are available there.
- Enhanced wxSFDemo sample to show the new shadowing feature.
- Implemented printing support.
- Enhanced wxSFDemo sample to demonstrate this new feature.
- Added new shape (wxSFControlShape) able to manage GUI controls (widgets). Assigned GUI controls can be resized and
positioned via parent control shape. For more details see the library reference.
- Added new sample project (wxSFSample4) demostrating a usage of wxSFControlShape.
- Added default constructor for wxSFShapeCanvas class. Note that the user must call
wxSFShapeCanvas::SetDiagramManager() function later to complete the canvas' initilization.
- Implemented virtual bool wxScrolledWindow::Create() function for two-step canvas window construction.
- Function name wxSFShapeBase::GetChildren(ShapeList& children, bool recursive) changed to
wxSFShapeBase::GetChildShapes(ShapeList& children, bool recursive)
- All drawing (virtual) functions now use reference to wxDC instead of wxSFScaledPaintDC which leads
to more universal drawing approach. In addition new global conversion functions called Conv2Point(), Conv2Size()
and Conv2RealPoint() have been added for easy conversion between wxPoint, wxSize and wxRealPoint() objects
(these functions are usefull especialy in user-defined drawing routines).
- Fixed compilation problem which occured in wxSFDemo and wxSFSample3 if the wx2.6.x compatibility is switched off
(due to unknown wxSAVE and wxOPEN defines previously declared in the wxFileDialog).
- Fixed segmentation fault in wxSFDemo3 occured when the DEL key was pressed together with a star title selected.
Changes in version 1.5.2 beta (2008-02-22):
--------------------------------------------
- Switched to use wxXmlSerializer 1.1.4
- Decimal point in stored real values is always converted to character "." (locale settings are
ignored). This change may cause some previously saved project unreadable (if your default decimal
point character is set to ",").
- Enhanced wxSFSample3 project to show some usefull features (some of new shape events, shapes' behaviour
customizations, etc...).
- Fixed function wxSFShapeCanvas::SetScaleToViewAll()
- Suppressed compiler warnings dealing with unused function arguments (patch from fantaz).
- Added bakefiles-based build system. Also prebuilt makefiles for several platforms have beed
included into the release package.
- Source object references in the copy constructors are constant now.
Changes in version 1.5.1 beta (2008-01-22):
--------------------------------------------
- Switched to use wxXmlSerializer (wxXS) 1.1.3
- Updated code to use wxList::compatibility_iterator instead of pointers to wxNode class (so the
STL lists are supported now).
- Multiedit control now disappears after usage of the undo/redo commands.
- Improved drawing of curve shapes (lines consisting of only one segment are drawn as a simple lines).
- Improved finding of shapes under a mouse cursor.
- Implemented wxEVT_SF_ON_PASTE event (macro EVT_SF_ON_PASTE) encapsulated by wxSFShapePasteEvent class
generated when shapes are pasted from the clipboard to a canvas.
- Added function wxSFShapeCanvas::SetScaleToViewAll() which adjusts the diagram scale so all
elements are visible.
- Improved testing whether the interactive line shape creation process can be started.
Changes in version 1.5.0 beta (2007-12-27):
--------------------------------------------
- Switched to use wxXmlSerializer (wxXS) 1.1.2
- Implemented drag & drop. The D&D operation starts in two cases: if any shape is dragged out of
the canvas and if any shape is dragged with CTRL key pressed down (in this case the dragged shapes
are copied to the new location). User can handle dropped shapes via wxSFShapeCanvas::OnDrop() virtual
function. The function emits new wxEVT_SF_ON_DROP event (encapsulated by new wxSFShapeDropEvent class)
in its default implementation.
- Significantly improved library performance/drawing speed (also new function wxSFShapeCanvas::GetShapeUnderCursor()
is provided.)
- Significantly improved Undo/Redo speed. The canvas history manager (wxSFCanvasHistory) now can
work in two modes: using standard serialization (default, no extra code needed) or using canvas clonning
(fast, small extra code overhead is needed). See the documentation and samples for more details.
- Added shape style sfsPROCESS_DEL. If used then the DEL key is processed by the shape, otherwise
the shape is deleted by the shape canvas.
- Added shape style sfsSHOW_HANDLES. If used then the shape's handles are shown if the shape is
selected (even if the sfsSIZE_CHANGE style is not present).
- The shape canvas background can be filled with a gradient brush (use canvas style sfsGRADIENT_BACKGROUND and functions
wxSFShapeCanvas::SetGradientFrom() and wxSFShapeCanvas::SetGradientTo()).
- Updated samples to reflect new features.
- Fixed function wxSFShapeCanvas::GetShapeUnderCursor() (now it omits inactive or invisible shapes).
- Fixed double generation of the wxEVT_SF_TEXT_CHANGE event.
- Fixed code so it doesn't generate assertion messages on Linux platform with debug version of wxWidgets anymore.
- Fixed some issues in shapes' and shape manager's copy constructors (all diagram manager's content can be now
copied via its copy constructor or function wxXmlSerializer::CopyItems() - please, for more information
see the library documentation).
Changes in version 1.4.1 beta (2007-12-07):
--------------------------------------------
- Improved (accelerated) function wxSFShapeCanvas::GetTopmostHandleAtPosition().
- Improved wxXmlSerializer (XS_DECLARE_IO_HANDLER and XS_DEFINE_IO_HANDLER macros are
now available for easy implementation of custom data types I/O handlers)
- Fixed wxShapeCanvas::Copy() and wxShapeCanvas::Cut() functions. Lines connected to
the copied shapes are copied as well.
- Fixed potential crash in wxDiagramManager::RemoveShapes() occured when double-linked shapes
were removed.
- Improved canvas draving
- Removed accessor functions for partial canvas flags (UseGrid(), ShowGrid(), EnableMultiselection(), EnableMultiSizeChange()).
These and some new canvas's flags can be now managed via universal canvas member functions SetStyle(), AddStyle(), RemoveStyle()
and ContainsStyle(). See the canvas class's STYLE enumeration for all available flags.
Changes in version 1.4.0 beta (2007-11-22):
--------------------------------------------
- New (more flexible) version of wxXmlSerializer (saved files are compatible with the previous version).
- Project's directory structure fulfills requirements for integration into wxWidgets/wxAdditions
distribution (all headers are now located in '../wx/wxsf' and 'wx/wxxmlserializer' subdirs).
- Line shapes connecting child shapes with their parents starts/end at the parent's border, not the center.
- Fixed crash occuring when a parent shape connected with his child shape is removed
- Added "premake" build system
Changes in version 1.3.2 beta (2007-10-26):
--------------------------------------------
- Functions GetAssignedConnections() and GetNeighbours() now allow definition of the connection line type.
- Added function wxSFEditTextShape::EditLabel() which starts label's editation process.
- F2 key now starts the editable shape's label editation mode.
- wxXmlSerializer now allows serialization of its root node properties. Requested behaviour can be set by agrument 'withroot'
of wxXmlSerializer::SerializeToXml() functions.
Changes in version 1.3.1 beta (2007-09-26):
--------------------------------------------
- Fixed wxSFShapeBase::GetCompleteBoundingBox() function to respect non-zero horizontal
and verical shape borders.
- Fixed drawing of multiline text shapes during scaling of the whole shape canvas.
- wxSFShapeBase::Update() function is now called recursively for all parents.
- Implemented wxEVT_SF_TEXT_CHANGE event (macro EVT_SF_TEXT_CHANGE).
- Added wxSFShapeCanvas::OnTextChange() event handler called by the franework if any ediatble text shape
is changed (default implementation generates the wxEVT_SF_TEXT_CHANGE event).
- Fixed initialization of text shapes after the deserialization if the shape canvas doesn't exist yet.
- Fixed shape resizing problems occured if the shape has one or more children aligned to
the right or bottom.
- Function wxSFBitmapShape::CreateFromXPM() is now public.
- Partial shape flags (m_fParentChange, m_fSizeChange, m_fPositionChange, m_fAlwaysInside,
m_fHovering and m_fHighlighting) with relevant accessors have been replaced with
one common style property (see STYLE enumeration and wxSFShapeBase::SetStyle(),
wxSFShapeBase::GetStyle(), AddStyle(), RemoveStyle(), ContainsStyle() functions). This modification makes
the wxSF much more flexible and reduces size of the project XML files (only one property (style) is now
serialized instead of many partial flags).
- Optimized drawing.
- Associated user data now knows its parent shape (via xsSerializable::GetParent() function).
- Unvisible shapes aren't drawn anymore...
- Non-active shapes can't be selected by multiedit control
- Fixed crash during removing of shape whose children are connected via lines with another shapes.
- Code clean-up.
Changes in version 1.3.0 beta (2007-09-07):
--------------------------------------------
- wxSF ported to use wxXmlSerialization (new mini-library suitable for automated serialization/
deserialization of class objects (arranged into a list or a tree) and their properties
(attributes) to/from XML files). The wxXmlSerialization library is shipped together with the wxSF
and can be used free and separately in other projects.
- Implemented a container for user-defined data (objects derived from xsSerializable class) which can be
assigned to the shape and serialized with it (wxSFShapeBase::SetUserData(), wxSFShapeBase::
GetUserData(), wxSFShapeBase::DeleteUserDataOnDestroy()).
- Implemented wxEVT_SF_LINE_DONE event (macro EVT_SF_LINE_DONE) and related event class
wxSFShapeEvent.
- Applied compiler symbol WXMAKINGDLL_SF which allows compile the dynamic library with defined
WXDLLEXPORT flags.
- Added support for so called 'composed shapes' (for more details see wxSFSample3).
- Added three new sample projects to the library sources distribution.
- Improved C::B and MS Visual Studio project and solution files on Windows.
- Added C::B project files for Linux.
- Fixed shape handles' drawing on Linux.
- Fixed wxSFShapeCanvas::Paste() on Linux.
- Unified look&feel on both Windows and Linux target platforms.
- Succesfully tested with wxWidgets 2.8.4 on Windows XP SP2 (both 32-
and 64-bit versions), Windows Vista and Linux (Ubuntu 7.04).
- Changed the development status from 'aplha' to 'beta'.
- Several minor bug fixes.
NOTE: wxSF project file format is not comapatible with previous versions.
Changes in version 1.2.4 alpha (2007-08-10):
--------------------------------------------
- Removed assertion of valid pointer to diagram manager in a shape's destructor.
- Shapes acceptance list in diagram manager is tested for record duplicity
Changes in version 1.2.3 alpha (2007-08-03):
--------------------------------------------
- Fixed function wxSFShapeBase::GetCompleteBoundingBox().
- Fixed update of shapes assigned as children to line shapes (alignment of those
child shapes is ignored).
Changes in version 1.2.2 alpha (2007-08-02):
--------------------------------------------
- Improved testing of invalid pointers among main framework's components (shape base,
shape canvas and diagram manager) and thus whole library stability.
Changes in version 1.2.1 alpha (2007-07-30):
--------------------------------------------
- Fixed ability to work with shapes without need of existing shape canvas.
Changes in version 1.2.0 alpha (2007-07-27):
--------------------------------------------
- Separated data and presentation layer (see wxSFDiagramManager and wxSFShapeCanvas classes)
- Updated example code to demonstrate this feature (v1.5)
- Added function wxSFShapeBase::AssignChild()
- Added functions wxSFShapeBase::SetAlwaysInsideParent() and wxSFShapeBase::IsAlwaysInsideParent().
If the property is set to TRUE then shape's parent is always resized to fit this shape, otherwise
a size change of child shape doesn't involve parent shape's size.
Changes in version 1.1.6 alpha (2007-07-25):
--------------------------------------------
- Added ability to define shape types accepted by shape canvas instance (functions
wxSFShapeCanvas::AcceptShape(), wxSFShapeCanvas::IsShapeAccepted(), wxSFShapeCanvas::ClearAcceptedShapes())
- Updated example code to demonstrate this feature (v1.4)
- Fixed wxSFShapeBase::DoAlignment() function
Changes in version 1.1.5 alpha (2007-07-24):
--------------------------------------------
- Fixed function FitToChildren in diamond shape (wxSFDiamondShape)
- Fixed canvas refresh during shape handle dragging
- Added function for alignment of selected shapes in the shape canvas (wxSFShapeCanvas::AlignSelected())
- Updated example code to demonstrate AlignSelected() function
Changes in version 1.1.4 alpha (2007-07-21):
--------------------------------------------
- Various bug fixes, improvements and code clean up
- Function wxSFShapeBase::Scale() can now scale also child shapes
Changes in version 1.1.3 alpha (2007-07-17):
--------------------------------------------
- Added ability to define shape's alignment (child shape can be aligned
inside its parent with given direction and offset)
Changes in version 1.1.2 alpha (2007-07-12):
--------------------------------------------
- Fixed functions wxSFShapeBase::GetNeighbours() and wxSFShapeCanvas::GetNeighbours()
Changes in version 1.1.1 alpha (2007-07-12):
--------------------------------------------
- Added ability to find neighbour shapes (functions wxSFShapeBase::GetNeighbours() and wxSFShapeCanvas::GetNeighbours())
Changes in version 1.1.0 alpha (2007-07-12):
--------------------------------------------
- Enhanced shapes policy (definitions which shape type can be connected to which one, what can be source or what can be target, etc.).
- Ability to get wxSF number from canvas class.
- Several bug fixes.
Changes in version 1.0.0 alpha (2007-07-07):
--------------------------------------------
- Initial release.