Граф коммитов

156 Коммитов

Автор SHA1 Сообщение Дата
panthernet 486d3c8be4 + Many improvements, tuned attachables handling 2015-12-11 04:08:11 +03:00
panthernet 89fd138212 + Improvements and fixes 2015-12-07 12:55:37 +03:00
panthernet 15cd295b83 + fixed edge labels visibility control when directly change EdgeControl.Visibility 2015-12-03 22:46:34 +03:00
panthernet 4a3ef6eb08 Merge branch 'PCL' of https://github.com/panthernet/GraphX.git 2015-11-15 12:01:45 +03:00
panthernet 17886a3533 + Added MouseEventArgs for VertexDoubleClick event to be able to correctly block click event when you're dragging vertex and open dialog window at once 2015-11-15 12:01:38 +03:00
perturbare 55eb26ca1e Call ApplyTemplate to ensure visual tree is created for each vertex before creating edges. 2015-11-11 09:58:35 -08:00
panthernet c6aba33ed4 + Fix for METRO sources 2015-11-09 19:49:34 +03:00
panthernet 5408235641 + Added label factories and some fixes 2015-11-08 02:54:23 +03:00
panthernet 2c0c07cf1b + Fixed edge update in vertex size dynamic change, made some props overridable 2015-11-05 20:05:18 +03:00
panthernet 11f44c04d7 Fixed id autoresolve issue when calling GraphArea::GenerateAllEdges() after manual edge data compilation (thanks to Hannes Hasenauer) 2015-11-03 19:22:32 +03:00
panthernet 609e374e20 + Merged EdgeControl and VertexControl code for WPF & METRO into the shared files 2015-11-03 15:29:52 +03:00
panthernet 28591c4458 + GraphArea PCL merge, METRO fixes 2015-11-03 03:26:03 +03:00
panthernet 62829149c9 + Added grouped graph showcase feature 2015-11-02 20:30:05 +03:00
panthernet 7bb042a868 Merge branch 'PCL' of https://github.com/panthernet/GraphX.git 2015-11-02 18:04:28 +03:00
panthernet 271ca09de3 + AttachedLabels and stuff 2015-11-02 18:03:43 +03:00
perturbare 5b11b65529 Resolved some problems with interaction between DragBehavior and VertexControl mouse event handling. Reverts some earlier changes to DragBehavior that were making vertex controls drag even if a child control should have been getting the mouse move (such as a TextBox that should get mouse based text selection instead of the vertex moving). The mouse capture in DragBehavior appears to trigger a MouseMove event without a mouse position change, so mouse location checking is added to VertexControl to deal with that. 2015-10-26 11:47:54 -07:00
perturbare f8e882e91e Modified drag and click handling and implemented a Click event on VertexControl. The Click event should have similar behavior to that of Button controls, which do not fire the Click event until the button is released. Here, the Click event is only wanted if the user doesn't drag the control.
Several changes are made to DragBehavior, mainly to reduce conflicts between VertexControl and DragBehavior trying to handle the same events and conflicting with each other. For example, prior to these changes, the VertexControl was not getting the MouseUp events it was expecting.

VertexControl MouseDoubleClick handler no longer marks the event handled because it prevents parent controls from receiving the bubbling event. Marking the other mouse events handled might be undesirable as well because notifying the RootArea of the events doesn't necessarily mean other elements of the visual tree shouldn't get a chance at the event. The corresponding RootArea events are fine, but they are different events and bypass the rest of the bubbling that the events on the VertexControl would continue through. In my opinion, the event handlers of the VertexControl should not mark the events handled, but I have only changed that for MouseDoubleClick at this time.
2015-10-07 16:38:43 -07:00
Alexander Smirnov 199b9c299c Merge pull request #36 from perturbare/patch-EdgeControlBase-type-fixes
Fix types that should be EdgeControlBase
2015-10-07 00:28:56 +03:00
Alexander Smirnov 398b2be2bf Merge pull request #37 from perturbare/patch-Zoom-apply-template
Zoom not always wanted when applying template
2015-10-07 00:28:48 +03:00
Alexander Smirnov e4fbf40a18 Merge pull request #38 from perturbare/patch-Visibility-style-compatibility
Modifications to allow visibility control from styles
2015-10-07 00:09:04 +03:00
perturbare 648556d0ea Fixed overly aggressive zoom when applying template
When applying a template, it should respect the Mode setting and only
zoom to fill if Mode set to is Fill.
2015-10-05 21:33:25 -07:00
perturbare ddff9d9ee8 Modifications to allow visibility control from styles
There were several places in the code where the Visibility property was
being set as a local value. That interferes with the use of styles to
control visibility. I modified each place where Visibility was set as a
local value to use SetCurrentValue instead.

In the case of VertexControl, a bit more was needed. The sequence of
events to hide and show VertexControl during the layout process was
still calling SetCurrentValue after my style triggers. So, I created the
GraphAreaBase.PositioningComplete attached property and manipulate that
instead. When the layout is in progress and the controls should be
hidden, the attached property is set false and a VertexControl style
trigger can set the property to Hidden. When the layout is complete and
the controls are positioned, the property is set to true and the style
trigger is no longer in effect. Then my style triggers can take over and
properly control the visibility.
2015-10-05 21:31:22 -07:00
perturbare a22e61b08f Fixed memory leak that was due to use of DependencyPropertyDescriptor.AddValueChanged
The VertexControl class uses
DependencyPropertyDescriptor.AddValueChanged to receive change
notifications on GraphAreaBase.X and GraphAreaBase.Y attached
properties. It was not removing the value change monitoring and had a
memory leak as a result. Modified the control position change handling
to use bindings instead of DependencyPropertyDescriptor.AddValueChanged.
This eliminates strong references from the property descriptor to the
vertex controls.
2015-10-05 21:29:52 -07:00
perturbare 8797aa8a20 Fix types that should be EdgeControlBase
When EdgeControlBase was created from content formerly in EdgeControl, a
few uses of EdgeControl that needed to change to EdgeControlBase were
missed.
2015-10-05 21:26:59 -07:00
panthernet 31485b4b61 Fixed an exception in ZoomControl caused by Ctrl + Alt + DblClick combination (thanks to persalmi) 2015-09-04 03:14:33 +03:00
panthernet c6d6bd58aa + Preparations for grouping algorithm
+ Quick fix for graph printing
2015-09-02 11:23:43 +03:00
bleibold 7b44cb90f8 Update EdgeControlBase.cs to support new ReversePath property
Added support for reversing the geometry.  This is required for animating shapes along a path where the direction needs to be reversed without using the Storyboard.AutoReverse property.
2015-08-28 11:08:17 -06:00
panthernet 52a16bf27e + Small fix to cleaning 2015-08-27 16:34:22 +03:00
panthernet 5aa846de17 + Improved overall graph cleaning in different areas allowing to easily clean graph data and fix potentional memory leaks 2015-08-27 16:30:03 +03:00
panthernet 4768e85539 + Fixed vertex sizes supply to algorithms with different settings 2015-08-18 14:30:41 +03:00
panthernet 6b87828059 + Some compatibility changes for VCP 2015-07-21 17:26:11 +03:00
panthernet 5dae64a3ca + Added two methods to EdgeControl: GetEdgePointerForSource() and GetEdgePointerForTarget() which allows to get to edge pointer objects manualy
+ Fixed bindings to DefaultEdgePointer::Visibility property
+ Implemented edge cut logic for EdgePointer placed at edge 'source' to gain better visual quality like its 'target' counterpart
2015-07-08 19:04:30 +03:00
panthernet 771aab248a + Enhanced parallel edges mini showcase
+ Further fixes to parallel edges logic related to labels and performance
2015-06-28 13:13:20 +03:00
panthernet 1a444ca640 + Fixed parallel edge calculation to better accomodate with edge labels
+ Added mini showcase: parallel edges
2015-06-28 12:49:36 +03:00
panthernet fcfaf9c829 + Added EdgeLabelControl::FlipOnRotation
+ Fixed edge routing when graph state has been loaded
+ Interfaces documentation
+ Fixed METRO showcase app work
2015-06-28 12:21:16 +03:00
panthernet e6f3524099 + Fixed zoom control zoom out value
+ Switched off METRO debug mode before upload
2015-06-25 21:28:32 +03:00
panthernet 9d1ee550ef + Fixes for manual graph handling methods
+ Fix for ZoomControl::Zoom property changed notifications
+ Added mini showcase for Parallel Edges
2015-06-23 04:13:49 +03:00
panthernet 1a2a0d9588 + Added syntax highlight to ShowcaseApp
+ Made more EdgeControl methods virtual for greater flexibility
2015-06-20 16:04:47 +03:00
panthernet cefd02bb2e + Made EdgeControlBase::UpdateEdge() method public. It can be used now to fully update edge visual on custom edge-related modifications [WPF, METRO]
+ Some code for lib debug & test improvement
+ VCP tweaks
2015-06-16 23:23:41 +03:00
panthernet 6db1d624c8 + Moved visual SLE props from LogicCore to EdgeControl 2015-06-11 16:55:28 +03:00
panthernet 01489d5461 + Fixed SLE object causing normal edges to become invisible
+ Added StateStorage::SaveOrUpdate() method
+ Misc design and code tweaks
2015-06-10 03:42:48 +03:00
panthernet 70c5e8f257 + added self looped edge custom indicator 2015-06-10 00:02:58 +03:00
panthernet a15fc060fc + Fixed first time solution rebuild problems by referencing new QuickGraphPCL nuget [ALL]
+ Cleaned up solution
+ Renewed METRO app certificate
2015-06-08 20:06:18 +03:00
panthernet ef0414e51e + Major refactoring pt.5
+ Various performance improvements
+ New showcase framework enchancements
+ Many other tweaks
2015-06-08 14:48:39 +03:00
panthernet 9bdde20fff + Fix for layouting problems
+ Used new xmlns name in all showcase tenplates
2015-06-02 03:52:09 +03:00
panthernet 7eb5e91f57 + Huge refactoring pass pt. 4
+ Optimized edge label and VCP templates
2015-06-02 03:19:42 +03:00
Alexander Smirnov 5b7b676b91 + Code merge pt.3 2015-05-28 23:49:45 +03:00
Alexander Smirnov 488b9f69cd + Edge pointer controls modifications 2015-05-28 22:12:12 +03:00
Alexander Smirnov edcfeaf1a2 + Major code unification and refactoring pt.2 2015-05-28 12:58:55 +03:00
Alexander Smirnov aaaab97065 + Heavy crossplatform code refactoring
+ Fixed Fade Move animation logic to report OnCompleted event correctly [WPF]
2015-05-28 00:23:06 +03:00
Alexander Smirnov 70fa600fb4 + Massive namespace changes to GraphX.Control
+ Fixed ZoomControl zoom sometimes not firing from code call after control is loaded [WPF]
+ Fixed VB sample project dependencies and refactored code a bit
+ GraphArea::PreloadVertexes() now accepts graph param as optional
+ Added GraphArea::PreloadGraph() method
2015-05-26 13:24:38 +03:00
Alexander Smirnov 1c2880cf2c + Added new property GrphArea::ControlsDrawOrder which defines vertex or edges should be drawn topmost [WPF, METRO] 2015-05-24 00:54:28 +03:00
perturbare 8a53619129 AutoresolveIds consistency
The GraphArea AutoresolveIds method was clearing _dataIdsCollection and
resetting _dataIdCounter between vertex and edge processing. This often
resulted in GetNextUniqueId returning IDs that were already in use.

Additionally, if the graph was populated by deserialization,
_dataIdsCollection was not populated with the IDs pulled in during
deserialization. So, the next generated ID could be a duplicate. Calling
AutoresolveIds() takes care of that.
2015-05-21 20:23:12 -07:00
Alexander Smirnov 74a878388b + Fixed EdgeControl.ShowArrows to implement DependencyProperty [WPF, METRO] thanks to perturbare
+ Fixed minor performance problems in ZoomControl [METRO]
+ Decoupled serialization logic from GraphX completely [ALL]  thanks to perturbare
2015-05-21 12:03:20 +03:00
Alexander Smirnov 94c9edcddf Merge pull request #15 from perturbare/Serialization-decoupling
Further serialization decoupling
2015-05-21 11:42:48 +03:00
perturbare 1469034e17 EdgeControl.ShowArrows to DependencyProperty
Converted EdgeControl.ShowArrows into a DependencyProperty.
2015-05-20 19:34:09 -07:00
perturbare 1f08a3cfd9 Refactored file handling
Refactored file handling, removing IFileServiceProvider and changing
GraphArea so that it simply provides the data for serialization and
accepts data for deserialization. This makes it easier to handle
serialization with other storage types. (Still need mods for METRO)
2015-05-20 13:31:07 -07:00
perturbare 545687e90f Use ControlFactory for edge deserialization
The deserialization code was using ControlFactory for vertexes, but not
edges. Code is modified to use ControlFactory for edges also.
2015-05-19 18:31:14 -07:00
Alexander Smirnov 64163c710a Many changes. See changelog.txt 2015-05-20 02:16:12 +03:00
Alexander Smirnov a2f01b968b + Massive refactoring
+ Fixes to previous changes
See CHANGELOG.txt for details
2015-05-15 03:04:51 +03:00
Alexander Smirnov ef4e8498cb + Added selective vertex and edge support to METRO version [METRO]
+ Added selective vertex and edge support for following algorithms: Circular [ALL]
+ Fixed layout algorithm calculations to always receive actual vertex positions as input parameter
 This will fix selective VaE support for default algorithms. [WPF, METRO]
2015-05-13 01:27:57 +03:00
jorgensigvardsson a191732a53 + Store app API is now async - LogicCore.AsyncAlgorithmCompute is disregarded.
+ DispatcherHelper bug fix: grab a safe handle to the UI thread dispatcher.
+ WPF control bug fix: cancellation token source was not disposed.
2015-04-13 23:39:55 +02:00
Jörgen Sigvardsson ccde871076 * Algorithms may now be canceled by means of CancellationToken objects
* Asynchronous layout is now executed in a Task rather than a BackgroundWorker (Tasks go hand in hand with CancellationToken)
* UI synchronization is now done through the task scheduler of the dispatcher object, which means that any exception that may occur on the UI/dispatcher thread is marshaled back to the task starter, and will not automatically terminate the process with an unhandled exception
2015-04-09 22:52:16 +02:00
Alexander Smirnov 23a54806ad + Fixed calculation of label control position and angle [WPF, METRO] thanks to jorgensigvardsson
+ Made EdgeControl::LabelVerticalOffset property dependecy [WPF, METRO]
+ Updated default control templstes to include some new properties setup by default [WPF, METRO]
2015-04-08 11:51:14 +03:00
Jörgen Sigvardsson c12b453029 Proper calculation of label control position and angle. 2015-04-07 22:58:13 +02:00
Alexander Smirnov 866525e8db + Fixed edge labels display for self looped edges [WPF, METRO]
+ Added new property EdgeLabelControl::DisplayForSelfLoopedEdges which is self explaining [WPF, METRO]
2015-03-31 16:56:15 +03:00
Alexander Smirnov ffbb199e28 + EP virtuality enchance also 2015-03-20 10:16:30 +03:00
Alexander Smirnov 723c1804bb + Improved extensibility by making some methods virtual for EdgeLabelControl, VertexLabelControl, EdgeControl
Uploaded sources for metro with latest buggy features
2015-03-20 10:12:18 +03:00
Alexander Smirnov 9e19a4f48b + Fixed some issues in ShowcaseApp.WPF
+ Added extensibility to corresponding controls by inheriting from IVertexLabelControl [WPF]
2015-03-08 11:16:40 +03:00
Alexander Smirnov 9e38cc9854 refactoring 2015-03-08 08:35:49 +03:00
Alexander Smirnov 5f2c360f4c + Added rotation support for image based edge pointers
+ Added extensibility to corresponding controls by inheriting from IEdgeLabelControl and IEdgePointer [WPF]
2015-03-08 08:33:34 +03:00
Alexander Smirnov eed5eb5fca + Added basic support for Image based edge pointers. Introduced new object for EdgeControl template: [WPF]
1. EdgePointerImage class with name "PART_EdgePointerImageForSource" - marks edge source pointer (new!)
 2. EdgePointerImage class with name "PART_EdgePointerImageForTarget" - marks edge target pointer
 Look in GeneralTemplate.xaml of ShowcaseApp.WPF project.
2015-03-06 00:54:50 +03:00
Alexander Smirnov d982bc4857 + Fixed GraphArea::DeserializeFromFile() logic and filestorage logic to properly restore internal data for loaded graphs 2015-03-05 01:04:58 +03:00
Alexander Smirnov db14387a04 Made'em as dependencies 2015-02-25 19:53:19 +03:00
Alexander Smirnov 6d76ede310 + Added new option GraphArea::LogicCoreChangeAction which defines what action will be taken on LogicCore property change. You can rebuild graph now. [WPF, METRO] 2015-02-25 19:46:11 +03:00
Alexander Smirnov ec4418e43f + Fixed ZoomControl::Zoom property bug on empty content window resize [WPF, METRO]
+ Added new showcase example: Templates/Graph editor [WPF]
+ Optimized showcase app media files
2015-01-26 23:07:50 +03:00
Alexander Smirnov 911a38c57a + Added VertexControl::GetCenterPosition() method to get vertex center position instead the default top-left
+ Fixed dynamic graph showcase example first vertex auto zooming onto
2015-01-26 20:05:14 +03:00
Alexander Smirnov bd2813d1fa + Added support method GraphArea::GetVertexControlAt(Point position) to get VC by coordinates [METRO, WPF]
+ Fixed annoying data binding error in ZoomControl slider binding [METRO, WPF]
+ Fixed ZoomControl unresponsivness after startup (prev needed to change zoom/translation first to work fine) [WPF,METRO]

!Breaking changes
+ Renamed and changed to Enum - ZoomControl::UseAbsoluteZoomOnMouseWheel to MouseWheelZoomingMode [METRO, WPF]
2015-01-26 16:54:34 +03:00
Alexander Smirnov 6e7fee3f1c RELEASE 2.1.7
+ Added new ShowcaseApp.WPF with mostly the same functionality as before but in a new nutshell and with refactored code. Expect new showcases soon.

+ Added some new exceptions for GraphArea on invalid or insufficient data [WPF,METRO]
+ Addded automatic default params generation for GXLogicCore if default algorithm was changed and default params property is null
+ Fixed async calc not being aborted on invalid data (can cause crash) [WPF,METRO]
+ Implemented VertexControl::ShowLabel property as dependecy for templating purpose [WPF]
+ Fixed vertex label display [WPF]
+ Implemented IOverlapRemovalParameters properties setters to be able to change params easily[ALL]
+ Made EdgeBase::RoutingPoints property virtual in case you want to override it and add custom serialization attributes (as was the issue with YAXLib)[ALL]

!Breaking changes
+ Renamed VertexControl::MathShape property to VertexShape for template bindings to work [WPF, METRO]
+ Removed YAXLib project from solution and its dependencies from GraphX projects except showcase project. This will make GraphX independent from this 3rd party lib. [WPF]
  The cost is that there is no built in FileServiceProvider anymore but you can easily create your own using provided interface or use YAXLib example from showcase app.
  One less additional dll file :)
2015-01-20 15:38:35 +03:00
Alexander Smirnov 5fc871478c + 2.1.7 fixes 2015-01-19 14:14:50 +03:00
Alexander Smirnov 191d1e2bc0 Version 2.1.6 see Documents/changelog.txt 2015-01-15 11:52:13 +03:00
Alexander Smirnov 04127f8a69 + Modified SkipProcessing feature to support new Freeze logic. See changelog.txt for details
+ Code refactoring
2014-12-25 01:23:11 +03:00
Alexander Smirnov dc7bc11ddb + Fixed major memory leak when regenerating visual edges 2014-12-24 19:04:18 +03:00
Alexander Smirnov 98768c62cc RELEASE 2.1.5 WIP
+ Added selective vertex and edge support for calculations. Use SkipProcessing property on vertex or edge data object to include/exclude in calculations and visualization.
	Works only in WPF version.
+ Changed CopyToBidirectionalGraph() extension method
+ Fixed rectangular selection logic
+ Some code refactoring
2014-12-16 18:37:13 +03:00
Alexander Smirnov 164c7fa62d + Fixed EdgeControl data context bug after graph deserialization 2014-07-02 13:51:33 +04:00
Alexander Smirnov 67a3b014e4 Added default label templates 2014-07-01 12:09:20 +04:00
Alexander Smirnov 4cb9c52919 + Added MouseUp event global handling for VertexControl 2014-06-18 16:24:25 +04:00
Alexander Smirnov c49238c321 + Fixed edge labels positioning 2014-06-18 15:10:29 +04:00
Alexander Smirnov 6a5dd85dbe Set (0,0) coordinate by default for all custom objects newly added to GraphArea 2014-06-14 15:55:45 +04:00
Alexander Smirnov 54a5f0606b Added code comment for GraphArea.ControlFactory 2014-06-06 12:23:40 +04:00
Alexander Smirnov 2da89f391b Added method to GraphArea to show/hide vertex labels 2014-06-05 11:47:34 +04:00
Alexander Smirnov e4308e8b09 RELEASE 2.1.2 WIP
Look at changelog.txt for details
2014-05-17 02:44:04 +04:00
panthernet deaa67e8b3 + Implemented small tweaks 2014-05-16 18:12:19 +04:00
panthernet 997a1f3302 Version GraphX 2.1.1 PCL WIP
+ Solved file operations problem
+ Some tweaks implemented
+ Rebuilt all strong name files
+ Fixed incorrect references
2014-05-16 17:54:59 +04:00
panthernet bd0010c5c9 + Version 2.1.0 WIP. Look at changelog.txt for changes. 2014-05-16 15:29:12 +04:00
Alexander Smirnov 935ec0f0c2 + Fixed visual properties recovery terminating template values 2014-05-06 13:22:17 +04:00
Alexander Smirnov 65997deb9f + Fixed hidden edges update on vertex drag
+ Fixed some inconsistent interfaces update
2014-05-05 16:29:09 +04:00
Alexander Smirnov 335eb9c7b0 Merge with another branch
Many updates and fixes (See change log)
2014-05-01 22:53:40 +04:00
Alexander Smirnov 873fe84b50 Implemented EdgeControl::IsSelfLooped property as read-only dependency
property.
2014-05-01 18:20:15 +04:00
Alexander Smirnov 564931c9f6 Reworked
Reworked main objects hierarchy to use more interfaces for loosened
conditions
2014-05-01 15:44:09 +04:00