├── .gitignore
├── Backlog.md
├── ChangeLog.md
├── LICENSE
├── Plainion.GraphViz.gc
├── Plainion.GraphViz.sln
├── README.md
├── build
├── Packaging.xaml
└── Targets.fsx
├── docs
├── Acknowledgements.md
├── Basics.md
├── Bookmarks.md
├── Clusters.md
├── Development.md
├── Filters.md
├── HowTos
│ ├── Create graphs with DOT language.md
│ ├── Discover a call tree.md
│ ├── Explore indirect assembly dependencies.md
│ ├── Save my work.md
│ ├── Trace paths between nodes.md
│ └── Visualize code dependencies.md
├── Properties
│ └── AssemblyInfo.cs
├── ReadMe.md
├── Screenshots
│ ├── AddToCluster.png
│ ├── BookmarksEditor.png
│ ├── CallTree.Tree.png
│ ├── CallTree.png
│ ├── ClusterEditor.png
│ ├── Deselect-all.png
│ ├── FilterFromAlgos.png
│ ├── FilterFromNodes.png
│ ├── FilterWithPattern.png
│ ├── FiltersEditor.png
│ ├── Flow.png
│ ├── Fold.png
│ ├── Galaxies.png
│ ├── Galaxy.1.png
│ ├── Galaxy.2.png
│ ├── GenerateGraphFromPackageSpec.png
│ ├── Goto-target.png
│ ├── Home.png
│ ├── Overview.2.png
│ ├── Overview.png
│ ├── PackageDependencies.png
│ ├── PackageSpecEditor.png
│ ├── PathFinder.Indirect.png
│ ├── PathFinder.Tree.png
│ ├── PathFinder.Tree2.png
│ ├── PathFinder.png
│ ├── RayCasting.png
│ ├── RayCasting.xml
│ ├── Search.png
│ ├── SubGraphs.png
│ ├── TraceResult.png
│ ├── TraceTargetSelection.png
│ ├── TraceTo.png
│ └── Trees.png
├── SupportedFormats.md
├── Viewer.Samples
│ ├── Blade.GraphViz.Viewer.xaml
│ ├── CallTree.Sample.json
│ ├── Clusters.dot
│ ├── Cycles.dot
│ ├── Graph.1.dgml
│ ├── Graph.1.dot
│ ├── Graph.1.tips
│ ├── Graph.2.plain
│ ├── Packaging.xaml
│ ├── PathFinder.Sample.json
│ └── wikipedia.sample.graphml
├── _config.yml
├── _layouts
│ └── default.html
├── docs.csproj
└── docs.csproj.user
├── etc
├── DepCop2PackageSpec.fsx
├── DepCopRules.xml
├── NsDepCop2PackageSpec.fsx
├── config.nsdepcop
├── depsjson2dot.fsx
└── npm-list-json2dot.js
├── extern
├── GraphViz
│ ├── Pathplan.dll
│ ├── acyclic.exe
│ ├── ann.dll
│ ├── bcomps.exe
│ ├── brotlicommon.dll
│ ├── brotlidec.dll
│ ├── bz2.dll
│ ├── cairo-2.dll
│ ├── ccomps.exe
│ ├── cdt.dll
│ ├── cgraph++.dll
│ ├── cgraph.dll
│ ├── circo.exe
│ ├── cluster.exe
│ ├── concrt140.dll
│ ├── config6
│ ├── diffimg.exe
│ ├── dijkstra.exe
│ ├── dot.exe
│ ├── dot2gxl.exe
│ ├── dot_builtins.exe
│ ├── dot_sandbox
│ ├── edgepaint.exe
│ ├── fdp.exe
│ ├── ffi-8.dll
│ ├── fontconfig-1.dll
│ ├── freetype.dll
│ ├── fribidi-0.dll
│ ├── gc.exe
│ ├── gdtclft.dll
│ ├── getopt.dll
│ ├── gio-2.0-0.dll
│ ├── glib-2.0-0.dll
│ ├── gml2gv.exe
│ ├── gmodule-2.0-0.dll
│ ├── gobject-2.0-0.dll
│ ├── graphml2gv.exe
│ ├── gts.dll
│ ├── gv2gml.exe
│ ├── gv2gxl.exe
│ ├── gvc++.dll
│ ├── gvc.dll
│ ├── gvcolor.exe
│ ├── gvgen.exe
│ ├── gvmap.exe
│ ├── gvmap.sh
│ ├── gvpack.exe
│ ├── gvplugin_core.dll
│ ├── gvplugin_dot_layout.dll
│ ├── gvplugin_gd.dll
│ ├── gvplugin_gdiplus.dll
│ ├── gvplugin_kitty.dll
│ ├── gvplugin_neato_layout.dll
│ ├── gvplugin_pango.dll
│ ├── gvplugin_vt.dll
│ ├── gvplugin_webp.dll
│ ├── gvpr.exe
│ ├── gxl2dot.exe
│ ├── gxl2gv.exe
│ ├── harfbuzz.dll
│ ├── iconv-2.dll
│ ├── intl-8.dll
│ ├── jpeg62.dll
│ ├── libexpat.dll
│ ├── libgd.dll
│ ├── liblzma.dll
│ ├── libpng16.dll
│ ├── libsharpyuv.dll
│ ├── libwebp.dll
│ ├── mingle.exe
│ ├── mm2gv.exe
│ ├── msvcp140.dll
│ ├── msvcp140_1.dll
│ ├── msvcp140_2.dll
│ ├── msvcp140_atomic_wait.dll
│ ├── msvcp140_codecvt_ids.dll
│ ├── neato.exe
│ ├── nop.exe
│ ├── osage.exe
│ ├── pango-1.0-0.dll
│ ├── pangocairo-1.0-0.dll
│ ├── pangoft2-1.0-0.dll
│ ├── pangowin32-1.0-0.dll
│ ├── patchwork.exe
│ ├── pcre2-8.dll
│ ├── pixman-1-0.dll
│ ├── prune.exe
│ ├── sccmap.exe
│ ├── sfdp.exe
│ ├── tcl86t.dll
│ ├── tcldot.dll
│ ├── tcldot_builtin.dll
│ ├── tclplan.dll
│ ├── tiff.dll
│ ├── tred.exe
│ ├── twopi.exe
│ ├── unflatten.exe
│ ├── vcruntime140.dll
│ ├── vcruntime140_1.dll
│ ├── xdot.dll
│ └── zlib1.dll
└── REAMDE.md
├── src
├── Directory.Build.props
├── Plainion.GraphViz.Actors.Client
│ ├── ActorClientBase.cs
│ ├── ActorsBase.cs
│ ├── DocumentSerializer.cs
│ ├── Messages.cs
│ ├── Plainion.GraphViz.Actors.Client.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ └── TupleStringConverter.cs
├── Plainion.GraphViz.Actors.Host
│ ├── Plainion.GraphViz.Actors.Host.csproj
│ ├── Program.cs
│ └── Properties
│ │ └── AssemblyInfo.cs
├── Plainion.GraphViz.CodeInspection.Tests
│ ├── Inspect_CalledMethods_Tests.cs
│ ├── Inspect_HardcodedStrings_Tests.cs
│ ├── Inspect_TypeUsage_Tests.cs
│ ├── MethodCallTests.cs
│ ├── MethodTests.cs
│ ├── Plainion.GraphViz.CodeInspection.Tests.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ └── ReferenceTests.cs
├── Plainion.GraphViz.CodeInspection
│ ├── AssemblyDependencyAnalyzer.cs
│ ├── AssemblyLoader
│ │ ├── AbstractAssemblyResolver.cs
│ │ ├── AssemblyLoaderFactory.cs
│ │ ├── AssemblyResolutionResult.cs
│ │ ├── CustomMetadataAssemblyResolver.cs
│ │ ├── DotNetFrameworkVersion.cs
│ │ ├── DotNetFrameworkVersionExtensions.cs
│ │ ├── GacResolver.cs
│ │ ├── IAssemblyLoader.cs
│ │ ├── MscorlibResolutionResult.cs
│ │ ├── MscorlibResolver.cs
│ │ ├── NugetAssemblyResolutionResult.cs
│ │ ├── NugetResolver.cs
│ │ ├── ReflectionOnlyAssemblyLoader.cs
│ │ ├── RelativePathResolver.cs
│ │ ├── SemanticVersion.cs
│ │ ├── VersionExtensions.cs
│ │ └── VersionMatchingStrategy.cs
│ ├── Contracts.cs
│ ├── Inspector.cs
│ ├── Method.cs
│ ├── MethodCall.cs
│ ├── MonoLoader.cs
│ ├── Plainion.GraphViz.CodeInspection.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── R.cs
│ ├── Reference.cs
│ ├── ReferenceType.cs
│ └── Wildcard.cs
├── Plainion.GraphViz.Modules.Analysis
│ ├── AnalysisModule.cs
│ ├── Bookmarks
│ │ ├── BookmarksView.xaml
│ │ ├── BookmarksView.xaml.cs
│ │ ├── BookmarksViewModel.cs
│ │ ├── OpenBookmarksView.xaml
│ │ ├── OpenBookmarksView.xaml.cs
│ │ └── OpenBookmarksViewModel.cs
│ ├── Clusters
│ │ ├── ClusterEditor.xaml
│ │ ├── ClusterEditor.xaml.cs
│ │ ├── ClusterEditorViewModel.cs
│ │ ├── ExtendedTreeView.cs
│ │ ├── NodeDropRequest.cs
│ │ ├── NodeView.cs
│ │ ├── NodeViewModel.cs
│ │ ├── OpenClustersView.xaml
│ │ ├── OpenClustersView.xaml.cs
│ │ ├── OpenClustersViewModel.cs
│ │ ├── PreviewViewModel.cs
│ │ ├── TreeEditor.xaml
│ │ ├── TreeEditor.xaml.cs
│ │ ├── TreeEditorViewModel.cs
│ │ └── VisualTreeUtils.cs
│ ├── NodeMasks
│ │ ├── NodeMasksEditor.xaml
│ │ ├── NodeMasksEditor.xaml.cs
│ │ ├── NodeMasksEditorModel.cs
│ │ ├── NodeMasksView.xaml
│ │ ├── NodeMasksView.xaml.cs
│ │ ├── NodeMasksViewModel.cs
│ │ ├── OpenNodeMasksView.xaml
│ │ ├── OpenNodeMasksView.xaml.cs
│ │ └── OpenNodeMasksViewModel.cs
│ ├── Plainion.GraphViz.Modules.Analysis.csproj
│ ├── Plainion.GraphViz.Modules.Analysis.csproj.user
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── RegionNames.cs
│ ├── Resources
│ │ ├── Bookmarks.png
│ │ ├── Clusters.png
│ │ └── Filter.png
│ └── Search
│ │ ├── ExtendedAutoCompleteBox.cs
│ │ ├── SearchBox.xaml
│ │ ├── SearchBox.xaml.cs
│ │ └── SearchBoxModel.cs
├── Plainion.GraphViz.Modules.CodeInspection.CallTree.Tests
│ ├── Plainion.GraphViz.Modules.CodeInspection.CallTree.Tests.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ └── SmokeTest.cs
├── Plainion.GraphViz.Modules.CodeInspection.CallTree
│ ├── Actors
│ │ ├── CallTreeActor.cs
│ │ ├── CallTreeClient.cs
│ │ └── Messages.cs
│ ├── Analyzers
│ │ ├── CallTreeAnalyzer.cs
│ │ └── InterfaceImplementationsMap.cs
│ ├── CallTreeMenuItem.xaml
│ ├── CallTreeMenuItem.xaml.cs
│ ├── CallTreeMenuItemModel.cs
│ ├── CallTreeModule.cs
│ ├── CallTreeView.xaml
│ ├── CallTreeView.xaml.cs
│ ├── CallTreeViewModel.cs
│ ├── Plainion.GraphViz.Modules.CodeInspection.CallTree.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ └── RegionNames.cs
├── Plainion.GraphViz.Modules.CodeInspection.Inheritance.Tests
│ ├── Plainion.GraphViz.Modules.CodeInspection.Inheritance.Tests.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ └── SmokeTest.cs
├── Plainion.GraphViz.Modules.CodeInspection.Inheritance
│ ├── Actors
│ │ ├── AllTypesActor.cs
│ │ ├── InheritanceActor.cs
│ │ ├── InheritanceClient.cs
│ │ └── Messages.cs
│ ├── Analyzers
│ │ ├── AssemblyUtils.cs
│ │ ├── InheritanceAnalyzer.cs
│ │ ├── TypeDescriptor.cs
│ │ └── TypeRelationshipDocument.cs
│ ├── InheritanceGraphBuilderView.xaml
│ ├── InheritanceGraphBuilderView.xaml.cs
│ ├── InheritanceGraphBuilderViewModel.cs
│ ├── InheritanceGraphMenuItem.xaml
│ ├── InheritanceGraphMenuItem.xaml.cs
│ ├── InheritanceGraphMenuItemModel.cs
│ ├── InheritanceModule.cs
│ ├── Plainion.GraphViz.Modules.CodeInspection.Inheritance.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ └── RegionNames.cs
├── Plainion.GraphViz.Modules.CodeInspection.Packaging.Tests
│ ├── Plainion.GraphViz.Modules.CodeInspection.Packaging.Tests.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── SmokeTest.cs
│ └── Spec
│ │ ├── ClusterMatchingTests.cs
│ │ └── SerializationTests.cs
├── Plainion.GraphViz.Modules.CodeInspection.Packaging
│ ├── Actors
│ │ ├── Messages.cs
│ │ ├── PackageAnalysisActor.cs
│ │ └── PackageAnalysisClient.cs
│ ├── Analyzers
│ │ ├── AnalysisDocument.cs
│ │ ├── GraphUtils.cs
│ │ ├── PackageAnalyzer.cs
│ │ └── TypesLoader.cs
│ ├── EnumToBoolExtension.cs
│ ├── GraphToSpecSynchronizer.cs
│ ├── PackagingGraphBuilderView.xaml
│ ├── PackagingGraphBuilderView.xaml.cs
│ ├── PackagingGraphBuilderViewModel.cs
│ ├── PackagingGraphMenuItem.xaml
│ ├── PackagingGraphMenuItem.xaml.cs
│ ├── PackagingGraphMenuItemModel.cs
│ ├── PackagingModule.cs
│ ├── Plainion.GraphViz.Modules.CodeInspection.Packaging.csproj
│ ├── Plainion.GraphViz.Modules.CodeInspection.Packaging.csproj.user
│ ├── PrivateSettersContractResolver.cs
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── RegionNames.cs
│ ├── Resources
│ │ └── SystemPackagingTemplate.xaml
│ ├── Spec
│ │ ├── Cluster.cs
│ │ ├── Exclude.cs
│ │ ├── Include.cs
│ │ ├── Package.cs
│ │ ├── PackageBase.cs
│ │ ├── SpecUtils.cs
│ │ ├── SystemPackaging.cs
│ │ └── Wildcard.cs
│ └── XmlEditor
│ │ ├── AbstractCompletionData.cs
│ │ ├── AttributeCompletionData.cs
│ │ ├── ElementCompletionData.cs
│ │ ├── PropertyElementCompletionData.cs
│ │ ├── XmlEditor.xaml
│ │ └── XmlEditor.xaml.cs
├── Plainion.GraphViz.Modules.CodeInspection.PathFinder.Tests
│ ├── Plainion.GraphViz.Modules.CodeInspection.PathFinder.Tests.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ └── SmokeTest.cs
├── Plainion.GraphViz.Modules.CodeInspection.PathFinder
│ ├── Actors
│ │ ├── Messages.cs
│ │ ├── PathFinderActor.cs
│ │ └── PathFinderClient.cs
│ ├── Analyzers
│ │ └── PathFinderAnalyzer.cs
│ ├── PathFinderMenuItem.xaml
│ ├── PathFinderMenuItem.xaml.cs
│ ├── PathFinderMenuItemModel.cs
│ ├── PathFinderModule.cs
│ ├── PathFinderView.xaml
│ ├── PathFinderView.xaml.cs
│ ├── PathFinderViewModel.cs
│ ├── Plainion.GraphViz.Modules.CodeInspection.PathFinder.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ └── RegionNames.cs
├── Plainion.GraphViz.Modules.CodeInspection
│ ├── Plainion.GraphViz.Modules.CodeInspection.csproj
│ └── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
├── Plainion.GraphViz.Modules.Documents.Tests
│ ├── DotLangPureDocumentTests.cs
│ ├── Plainion.GraphViz.Modules.Documents.Tests.csproj
│ └── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
├── Plainion.GraphViz.Modules.Documents
│ ├── AbstractGraphDocument.cs
│ ├── BasicDocumentProcessor.cs
│ ├── DgmlDocument.cs
│ ├── DocumentsModule.cs
│ ├── DotLang
│ │ ├── IMatcher.cs
│ │ ├── Iterator.cs
│ │ ├── Lexer.cs
│ │ ├── MatchKeyword.cs
│ │ ├── MatchNewLine.cs
│ │ ├── MatchNumber.cs
│ │ ├── MatchString.cs
│ │ ├── MatchWhiteSpace.cs
│ │ ├── MatchWord.cs
│ │ ├── MatcherBase.cs
│ │ ├── Parser.cs
│ │ ├── Token.cs
│ │ └── Tokenizer.cs
│ ├── DotLangDocument.cs
│ ├── DotPlainDocument.cs
│ ├── GraphMLDocument.cs
│ ├── GraphToDotLangSynchronizer.cs
│ ├── ICaptionDocument.cs
│ ├── IDocument.cs
│ ├── IGraphDocument.cs
│ ├── ILayoutDocument.cs
│ ├── IStyleDocument.cs
│ ├── OpenDocumentsView.xaml
│ ├── OpenDocumentsView.xaml.cs
│ ├── OpenDocumentsViewModel.cs
│ ├── Plainion.GraphViz.Modules.Documents.csproj
│ ├── Plainion.GraphViz.Modules.Documents.csproj.user
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── Resources
│ │ ├── Open.png
│ │ └── Save.png
│ ├── SaveDocumentsView.xaml
│ ├── SaveDocumentsView.xaml.cs
│ ├── SaveDocumentsViewModel.cs
│ └── ToolTipsDocument.cs
├── Plainion.GraphViz.Modules.Markdown.Tests
│ ├── AnalyzerTests.cs
│ ├── ParserTests.cs
│ ├── Plainion.GraphViz.Modules.Markdown.Tests.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── ResolverTests.cs
│ └── VerifierTests.cs
├── Plainion.GraphViz.Modules.Markdown
│ ├── Analyzer
│ │ ├── AnalysisDocument.cs
│ │ ├── FailedFile.cs
│ │ ├── LinkResolverExtension.cs
│ │ ├── LinkVerifierExtensions.cs
│ │ ├── MDFile.cs
│ │ ├── Markdown
│ │ │ ├── DocLink.cs
│ │ │ ├── ImageLink.cs
│ │ │ ├── Link.cs
│ │ │ └── MDDocument.cs
│ │ ├── MarkdownAnalyzer.cs
│ │ ├── Parser
│ │ │ ├── AbstractParser.cs
│ │ │ ├── IMarkdownParser.cs
│ │ │ └── MarkdigParser.cs
│ │ ├── Resolver
│ │ │ ├── ExternalLink.cs
│ │ │ ├── ILinkResolver.cs
│ │ │ ├── InternalLink.cs
│ │ │ ├── LinkResolver.cs
│ │ │ └── ResolvedLink.cs
│ │ └── Verifier
│ │ │ ├── ILinkVerifier.cs
│ │ │ ├── InvalidLink.cs
│ │ │ ├── LinkVerifier.cs
│ │ │ ├── ValidLink.cs
│ │ │ └── VerifiedLink.cs
│ ├── ConfigurationView.xaml
│ ├── ConfigurationView.xaml.cs
│ ├── ConfigurationViewModel.cs
│ ├── Contract.cs
│ ├── MdFilesModule.cs
│ ├── Plainion.GraphViz.Modules.Markdown.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── RegionNames.cs
│ ├── ToolsMenuItem.xaml
│ ├── ToolsMenuItem.xaml.cs
│ └── ToolsMenuItemModel.cs
├── Plainion.GraphViz.Modules.Metrics.Tests
│ ├── CycleDetectionAlgorithmTests.cs
│ ├── GraphMetricsTests.cs
│ ├── Plainion.GraphViz.Modules.Metrics.Tests.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── ShortestPathsFinderTests.cs
│ ├── UndirectedGraphMetricsTests.cs
│ ├── UndirectedGraphTests.cs
│ └── UndirectedShortestPathFinderTests.cs
├── Plainion.GraphViz.Modules.Metrics
│ ├── Algorithms
│ │ ├── Cycle.cs
│ │ ├── CycleFinder.cs
│ │ ├── GraphItemMeasurement.cs
│ │ ├── GraphMetrics.cs
│ │ ├── Path.cs
│ │ ├── ShortestPathFinder.cs
│ │ ├── ShortestPaths.cs
│ │ ├── ShortestUndirectedPaths.cs
│ │ ├── UndirectedGraphMetrics.cs
│ │ ├── UndirectedPath.cs
│ │ └── UndirectedShortestPathFinder.cs
│ ├── CycleVM.cs
│ ├── GraphDensityVM.cs
│ ├── GraphItemMeasurementVM.cs
│ ├── HighlightViewModel.cs
│ ├── MetricsComputationViewModel.cs
│ ├── MetricsModule.cs
│ ├── MetricsView.xaml
│ ├── MetricsView.xaml.cs
│ ├── MetricsViewModel.cs
│ ├── NodeDegreesVM.cs
│ ├── Plainion.GraphViz.Modules.Metrics.csproj
│ ├── Plainion.GraphViz.Modules.Metrics.csproj.user
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── RegionNames.cs
│ ├── ToolsMenuItem.xaml
│ ├── ToolsMenuItem.xaml.cs
│ └── ToolsMenuItemModel.cs
├── Plainion.GraphViz.Modules.Obfuscate
│ ├── IObfuscator.cs
│ ├── ObfuscateModule.cs
│ ├── Plainion.GraphViz.Modules.Obfuscate.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── SimpleObfuscator.cs
│ ├── StructureAwareObfuscator.cs
│ ├── ToolsMenuItem.xaml
│ ├── ToolsMenuItem.xaml.cs
│ └── ToolsMenuItemModel.cs
├── Plainion.GraphViz.Modules.Properties
│ ├── OpenPropertiesView.xaml
│ ├── OpenPropertiesView.xaml.cs
│ ├── OpenPropertiesViewModel.cs
│ ├── Plainion.GraphViz.Modules.Properties.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── PropertiesModule.cs
│ ├── PropertiesView.xaml
│ ├── PropertiesView.xaml.cs
│ ├── PropertiesViewModel.cs
│ ├── RegionNames.cs
│ └── Resources
│ │ └── Properties.png
├── Plainion.GraphViz.Modules.SDK
│ ├── Analysis1
│ │ ├── AnalysisDocument.cs
│ │ ├── Analyzer.cs
│ │ ├── ConfigurationView.xaml
│ │ ├── ConfigurationView.xaml.cs
│ │ ├── ConfigurationViewModel.cs
│ │ ├── ToolsMenuItem.xaml
│ │ ├── ToolsMenuItem.xaml.cs
│ │ └── ToolsMenuItemModel.cs
│ ├── Plainion.GraphViz.Modules.SDK.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── ReadMe.md
│ ├── RegionNames.cs
│ └── SdkModule.cs
├── Plainion.GraphViz.Modules.VsProjects
│ ├── AnalysisDocument.cs
│ ├── Analyzer.cs
│ ├── ConfigurationView.xaml
│ ├── ConfigurationView.xaml.cs
│ ├── ConfigurationViewModel.cs
│ ├── FailedProject.cs
│ ├── Plainion.GraphViz.Modules.VsProjects.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── RegionNames.cs
│ ├── ToolsMenuItem.xaml
│ ├── ToolsMenuItem.xaml.cs
│ ├── ToolsMenuItemModel.cs
│ ├── VsProject.cs
│ └── VsProjectsModule.cs
├── Plainion.GraphViz.Tests
│ ├── BinaryPresentationSerializationTests.cs
│ ├── BookmarkBuilderTests.cs
│ ├── DotPlainReaderTests.cs
│ ├── Plainion.GraphViz.Tests.csproj
│ └── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
├── Plainion.GraphViz.Viewer.Abstractions
│ ├── FailedItem.cs
│ ├── NodeFocusedEvent.cs
│ ├── Plainion.GraphViz.Viewer.Abstractions.csproj
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── RegionNames.cs
│ ├── Services
│ │ ├── IDocumentLoader.cs
│ │ ├── IPresentationCreationService.cs
│ │ ├── IStatusMessageService.cs
│ │ └── StatusMessage.cs
│ └── ViewModel
│ │ ├── DefaultDomainModel.cs
│ │ ├── IDomainModel.cs
│ │ ├── NodeWithCaption.cs
│ │ └── ViewModelBase.cs
├── Plainion.GraphViz.Viewer
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── CoreModule.cs
│ ├── GraphIcon.ico
│ ├── Plainion.GraphViz.Viewer.csproj
│ ├── Plainion.GraphViz.Viewer.csproj.user
│ ├── Plainion.GraphViz.Viewer.xaml
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── RegionNames.cs
│ ├── Resources
│ │ ├── Export.png
│ │ ├── GraphIcon.png
│ │ ├── Print.png
│ │ ├── Refresh.png
│ │ ├── Settings.png
│ │ └── StatusMessages.png
│ ├── Services
│ │ ├── Config.cs
│ │ ├── ConfigurationService.cs
│ │ ├── PresentationCreationService.cs
│ │ ├── RegexConversion.cs
│ │ └── StatusMessageService.cs
│ ├── Shell.xaml
│ ├── Shell.xaml.cs
│ ├── ShellViewModel.cs
│ ├── ViewModels
│ │ ├── ClusterWithCaption.cs
│ │ ├── GraphViewerModel.cs
│ │ ├── LabelViewModel.cs
│ │ ├── SettingsEditorModel.cs
│ │ └── StatusMessagesViewModel.cs
│ └── Views
│ │ ├── GraphViewer.xaml
│ │ ├── GraphViewer.xaml.cs
│ │ ├── LayoutAlgorithmsConverter.cs
│ │ ├── SettingsEditor.xaml
│ │ ├── SettingsEditor.xaml.cs
│ │ ├── StatusMessagesView.xaml
│ │ └── StatusMessagesView.xaml.cs
├── Plainion.GraphViz
│ ├── Dot
│ │ ├── DotGraphHeader.cs
│ │ ├── DotPlainParser.cs
│ │ ├── DotPlainReader.cs
│ │ ├── DotToDotPlainConverter.cs
│ │ ├── DotToolLayoutEngine.cs
│ │ ├── DotWriter.cs
│ │ ├── LayoutAlgorithm.cs
│ │ └── StyleConverter.cs
│ ├── GraphPaginator.cs
│ ├── GraphView.xaml
│ ├── GraphView.xaml.cs
│ ├── HelpLink.xaml
│ ├── HelpLink.xaml.cs
│ ├── IGraphViewExport.cs
│ ├── IGraphViewNavigation.cs
│ ├── ILayoutEngine.cs
│ ├── Plainion.GraphViz.csproj
│ ├── Presentation
│ │ ├── AbstractModule.cs
│ │ ├── AbstractModuleChangedObserver.cs
│ │ ├── AbstractPropertySet.cs
│ │ ├── AbstractStyle.cs
│ │ ├── BinaryPresentationReader.cs
│ │ ├── BinaryPresentationWriter.cs
│ │ ├── Bookmark.cs
│ │ ├── BookmarkBuilder.cs
│ │ ├── Caption.cs
│ │ ├── CaptionModule.cs
│ │ ├── ClusterFoldingTransformation.cs
│ │ ├── DynamicClusterTransformation.cs
│ │ ├── EdgeLayout.cs
│ │ ├── EdgeStyle.cs
│ │ ├── GenericLabelConverter.cs
│ │ ├── GenericModuleChangedJournal.cs
│ │ ├── GenericModuleChangedObserver.cs
│ │ ├── GraphAttribute.cs
│ │ ├── GraphAttributesModule.cs
│ │ ├── GraphLayoutModule.cs
│ │ ├── GraphPicking.cs
│ │ ├── GraphPresentation.cs
│ │ ├── GraphPresentationExtensions.cs
│ │ ├── ICaptionModule.cs
│ │ ├── IGraphAttributesModule.cs
│ │ ├── IGraphLayoutModule.cs
│ │ ├── IGraphPresentation.cs
│ │ ├── IGraphTransformation.cs
│ │ ├── ILabelConversionStep.cs
│ │ ├── ILabelConverter.cs
│ │ ├── IModule.cs
│ │ ├── IModuleChangedJournal.cs
│ │ ├── IModuleChangedObserver.cs
│ │ ├── IModuleRepository.cs
│ │ ├── INodeMaskModule.cs
│ │ ├── IPropertySetModule.cs
│ │ ├── ITransformationModule.cs
│ │ ├── NodeLayout.cs
│ │ ├── NodeMaskModule.cs
│ │ ├── NodeStyle.cs
│ │ ├── PickingCache.cs
│ │ ├── PropertySetComparer.cs
│ │ ├── PropertySetModule.cs
│ │ ├── Selection.cs
│ │ ├── ToolTipContent.cs
│ │ └── TransformationModule.cs
│ ├── Profile.cs
│ ├── Properties
│ │ ├── AssemblyDefs.cs
│ │ └── AssemblyInfo.cs
│ ├── RubberbandAdorner.cs
│ ├── Themes.cs
│ ├── TipsPopup.xaml
│ ├── TipsPopup.xaml.cs
│ ├── ToolTipAdorner.cs
│ ├── ToolTipController.cs
│ └── Visuals
│ │ ├── AbstractElementVisual.cs
│ │ ├── ClusterVisual.cs
│ │ ├── EdgeVisual.cs
│ │ ├── GraphVisual.cs
│ │ ├── IVisualPicking.cs
│ │ └── NodeVisual.cs
├── Plainion.Graphs.Algorithms.Tests
│ ├── ModelExtensions.cs
│ ├── Plainion.Graphs.Algorithms.Tests.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── RemoveNodesNotConnectedOutsideClusterTests.cs
├── Plainion.Graphs.Algorithms
│ ├── AbstractAlgorithm.cs
│ ├── AddRemoveNodes.cs
│ ├── AddRemoveTransitiveHull.cs
│ ├── CreateGraphOfReachables.cs
│ ├── GetNodesOutsideCluster.cs
│ ├── ICaptionProvider.cs
│ ├── NullCaptionProvider.cs
│ ├── Plainion.Graphs.Algorithms.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── RemoveClusters.cs
│ ├── RemoveNodesNotConnectedOutsideCluster.cs
│ ├── RemoveNodesWithoutSiblings.cs
│ ├── ShowCycles.cs
│ ├── ShowPath.cs
│ └── Traverse.cs
└── Plainion.Graphs
│ ├── Cluster.cs
│ ├── Contracts.cs
│ ├── Edge.cs
│ ├── Graph.cs
│ ├── IGraph.cs
│ ├── IGraphItem.cs
│ ├── Node.cs
│ ├── NotifyPropertyChangedBase.cs
│ ├── Plainion.Graphs.csproj
│ ├── Projections
│ ├── AbstractNodeMask.cs
│ ├── ClusterFolding.cs
│ ├── IClusterFolding.cs
│ ├── IGraphPicking.cs
│ ├── IGraphProjections.cs
│ ├── INodeMask.cs
│ ├── NodeMask.cs
│ ├── NullGraphPicking.cs
│ └── NullGraphProjections.cs
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── RelaxedGraphBuilder.cs
│ ├── SiblingsType.cs
│ └── Undirected
│ ├── Graph.cs
│ ├── Node.cs
│ └── RelaxedGraphBuilder.cs
└── testData
├── DummyProject.Lib
├── AbstractBuilder.cs
├── DummyProject.Lib.csproj
└── IBuilder.cs
├── DummyProject.sln
└── DummyProject
├── Builder.cs
├── Component.cs
└── DummyProject.csproj
/.gitignore:
--------------------------------------------------------------------------------
1 | **/bin/**
2 | .vs/**
3 | **/obj/**
4 | /*.suo
5 | /packages/**
6 | /TestResult.xml
7 | /Plainion.GraphViz.gc.*
8 | /build/.fake
9 | *.suo
10 | /.ionide
11 | /.vscode
12 |
--------------------------------------------------------------------------------
/Backlog.md:
--------------------------------------------------------------------------------
1 |
2 | # Tests for CodeInspection
3 |
4 | we need tests to load
5 | - .netfw
6 | - .netcore
7 | - .net6
8 |
9 | with following analyzers
10 | - packages
11 | - inheritance
12 | - calltree
13 | - pathfinder
14 |
15 |
16 | test setup:
17 | - 2 assemblies depending on each other
18 | - API usage as well as inheritance
19 | - require nuget dependency
20 |
21 |
22 | Once tests available consider using AssemblyLoader everywhere
23 |
24 | # Unsorted
25 |
26 | - ensure that actor host is closed on main app close
27 | - dispose of unity
28 |
29 | - change design to make it easier to add new algorithms to the UI
30 | - consider splitting "model + presentation + algo" and "visualization"
31 |
32 | - take over Rajeev's Inspector implementation
33 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Plainion.GraphViz: Graph browser
3 |
4 | [Plainion.GraphViz](http://plainionist.github.io/Plainion.GraphViz/) is a browser for huge and complex graphs.
5 | Plainion.GraphViz provides techniques like filtering and folding of graphs and various algorithms to explore the
6 | parts of the graph you are interested in.
7 |
8 | Graphs can be impored from various formats, e.g.:
9 |
10 | - GraphML
11 | - DGML
12 | - DOT
13 |
14 | or generated some from source code, e.g:
15 |
16 | - inheritance hierarchies (.Net only)
17 | - class and package dependencies (.Net only)
18 |
19 | 
20 |
21 | 
22 |
23 |
--------------------------------------------------------------------------------
/build/Packaging.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/docs/Acknowledgements.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Acknowledgements
3 | section: References
4 | navigation_weight: 500
5 | ---
6 |
7 | # Acknowledgements
8 |
9 | For rendering Plainion.GraphViz uses the great [graphviz](http://graphviz.org) library.
10 |
11 | The WPF UI around the graphviz library was initially inspired by [Dot2WPF - a WPF control for viewing Dot graphs](http://www.codeproject.com/Articles/18870/Dot2WPF-a-WPF-control-for-viewing-Dot-graphs)
12 |
13 |
--------------------------------------------------------------------------------
/docs/Bookmarks.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Bookmarks
3 | navigation_weight: 40
4 | ---
5 |
6 | # Bookmarks
7 |
8 | Bookmarks can be used to jump between different views on the graph
9 |
10 | 
11 |
12 | Bookmarks remember filters and cluster foldings.
13 |
14 | Use double-click to apply a bookmark. Use the context menu to delete a bookmark.
--------------------------------------------------------------------------------
/docs/HowTos/Save my work.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Save my work
3 | navigation_weight: 130
4 | ---
5 |
6 | Sometimes quite some work on the graph is needed to finally be able to see what you were looking for.
7 | You may need to create several filters and you may need to apply quite some clustering.
8 |
9 | If you want to save your work for later just
10 | - Click on the "Save" button in the toolbar
11 | - Select "Plainion.GraphViz files (*.pgv)"
12 | - Click "Save"
13 |
14 | If you later want to resume your work you can
15 | - Either use the "Open" button from the toolbar and select again "Plainion.GraphViz files (*.pgv)"
16 | - Or just drop the saved ".pgv" file onto the canvas
17 |
18 |
19 |
--------------------------------------------------------------------------------
/docs/HowTos/Trace paths between nodes.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Trace paths between nodes
3 | navigation_weight: 110
4 | ---
5 |
6 | # Trace paths between nodes
7 |
8 | You can visualize all paths between nodes by first selecting the target node with Ctrl-LMB click
9 |
10 | 
11 |
12 | Then use the context menu entry "Trace" on the source node to start the tracing.
13 |
14 | 
15 |
16 | As a trace result a filter will be created which only shows all paths from this source node to
17 | the selected target node.
18 |
19 | 
20 |
--------------------------------------------------------------------------------
/docs/Screenshots/AddToCluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/AddToCluster.png
--------------------------------------------------------------------------------
/docs/Screenshots/BookmarksEditor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/BookmarksEditor.png
--------------------------------------------------------------------------------
/docs/Screenshots/CallTree.Tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/CallTree.Tree.png
--------------------------------------------------------------------------------
/docs/Screenshots/CallTree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/CallTree.png
--------------------------------------------------------------------------------
/docs/Screenshots/ClusterEditor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/ClusterEditor.png
--------------------------------------------------------------------------------
/docs/Screenshots/Deselect-all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Deselect-all.png
--------------------------------------------------------------------------------
/docs/Screenshots/FilterFromAlgos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/FilterFromAlgos.png
--------------------------------------------------------------------------------
/docs/Screenshots/FilterFromNodes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/FilterFromNodes.png
--------------------------------------------------------------------------------
/docs/Screenshots/FilterWithPattern.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/FilterWithPattern.png
--------------------------------------------------------------------------------
/docs/Screenshots/FiltersEditor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/FiltersEditor.png
--------------------------------------------------------------------------------
/docs/Screenshots/Flow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Flow.png
--------------------------------------------------------------------------------
/docs/Screenshots/Fold.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Fold.png
--------------------------------------------------------------------------------
/docs/Screenshots/Galaxies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Galaxies.png
--------------------------------------------------------------------------------
/docs/Screenshots/Galaxy.1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Galaxy.1.png
--------------------------------------------------------------------------------
/docs/Screenshots/Galaxy.2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Galaxy.2.png
--------------------------------------------------------------------------------
/docs/Screenshots/GenerateGraphFromPackageSpec.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/GenerateGraphFromPackageSpec.png
--------------------------------------------------------------------------------
/docs/Screenshots/Goto-target.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Goto-target.png
--------------------------------------------------------------------------------
/docs/Screenshots/Home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Home.png
--------------------------------------------------------------------------------
/docs/Screenshots/Overview.2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Overview.2.png
--------------------------------------------------------------------------------
/docs/Screenshots/Overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Overview.png
--------------------------------------------------------------------------------
/docs/Screenshots/PackageDependencies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/PackageDependencies.png
--------------------------------------------------------------------------------
/docs/Screenshots/PackageSpecEditor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/PackageSpecEditor.png
--------------------------------------------------------------------------------
/docs/Screenshots/PathFinder.Indirect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/PathFinder.Indirect.png
--------------------------------------------------------------------------------
/docs/Screenshots/PathFinder.Tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/PathFinder.Tree.png
--------------------------------------------------------------------------------
/docs/Screenshots/PathFinder.Tree2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/PathFinder.Tree2.png
--------------------------------------------------------------------------------
/docs/Screenshots/PathFinder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/PathFinder.png
--------------------------------------------------------------------------------
/docs/Screenshots/RayCasting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/RayCasting.png
--------------------------------------------------------------------------------
/docs/Screenshots/Search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Search.png
--------------------------------------------------------------------------------
/docs/Screenshots/SubGraphs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/SubGraphs.png
--------------------------------------------------------------------------------
/docs/Screenshots/TraceResult.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/TraceResult.png
--------------------------------------------------------------------------------
/docs/Screenshots/TraceTargetSelection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/TraceTargetSelection.png
--------------------------------------------------------------------------------
/docs/Screenshots/TraceTo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/TraceTo.png
--------------------------------------------------------------------------------
/docs/Screenshots/Trees.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Screenshots/Trees.png
--------------------------------------------------------------------------------
/docs/Viewer.Samples/Blade.GraphViz.Viewer.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/docs/Viewer.Samples/CallTree.Sample.json:
--------------------------------------------------------------------------------
1 | {
2 | "binFolder": "C:/Workspace/Plainion/Plainion.GraphViz/bin/Debug",
3 | "sources": [ "Plainion.GraphViz.dll" ],
4 | "targets": [
5 | {
6 | "assembly": "Plainion.Core.dll",
7 | "type": "Plainion.Objects",
8 | "method": "Clone"
9 | }
10 | ],
11 | "relevantAssemblies": [ "Plainion.*" ]
12 | }
13 |
--------------------------------------------------------------------------------
/docs/Viewer.Samples/Cycles.dot:
--------------------------------------------------------------------------------
1 | digraph {
2 | ratio="compress"
3 | rankdir=BT
4 | ranksep="2.0 equally"
5 |
6 | A -> B
7 | B -> C
8 | C -> D
9 | D -> E
10 | E -> F
11 | F -> G
12 |
13 | D -> A
14 | G -> D
15 |
16 | B -> X
17 | X -> Y
18 | X -> Z
19 |
20 | F -> 42
21 | 42 -> 21
22 | }
23 |
--------------------------------------------------------------------------------
/docs/Viewer.Samples/Graph.1.tips:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/docs/Viewer.Samples/Graph.1.tips
--------------------------------------------------------------------------------
/docs/Viewer.Samples/PathFinder.Sample.json:
--------------------------------------------------------------------------------
1 | {
2 | "binFolder": "C:/Workspace/Plainion/Plainion.GraphViz/bin/Debug",
3 | "keepInnerAssemblyDependencies": false,
4 | "keepSourceAssemblyClusters": false,
5 | "keepTargetAssemblyClusters": false,
6 | "sources": [ "Plainion.GraphViz.Modules.CodeInspection.*.dll" ],
7 | "targets": [ "Plainion.Core.dll" ],
8 | "relevantAssemblies": [ "Plainion.*" ]
9 | }
--------------------------------------------------------------------------------
/docs/Viewer.Samples/wikipedia.sample.graphml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/docs/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-architect
2 |
3 | # Enter your Google Analytics web tracking code (e.g. UA-2110908-2) to activate tracking
4 | google_analytics:
5 |
6 | plugins:
7 | - jekyll-sitemap
8 | - jekyll-seo-tag
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/docs.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | 4
6 | true
7 | 618,672,1030
8 | 1591,8032
9 | 9.0
10 | false
11 | false
12 |
13 |
14 |
--------------------------------------------------------------------------------
/docs/docs.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ProjectFiles
5 | false
6 |
7 |
--------------------------------------------------------------------------------
/etc/DepCopRules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/etc/config.nsdepcop:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/etc/npm-list-json2dot.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs')
2 |
3 | //
4 | // usage:
5 | // run "npm list --json > deps.json" in your web project home
6 | // run "node deps.json > deps.dot"
7 | // load "deps.dot" into Plainion.GraphViz
8 | //
9 |
10 | const file = process.argv[2]
11 | const json = JSON.parse(fs.readFileSync(file, 'utf8'))
12 |
13 | function visit(source, deps) {
14 | Object.getOwnPropertyNames(deps).forEach( key => {
15 | console.log(` "${source}" -> "${key}"`)
16 |
17 | if (deps[key].dependencies) {
18 | visit(key, deps[key].dependencies)
19 | }
20 | })
21 | }
22 |
23 |
24 | console.log('digraph {')
25 |
26 | visit('PROJECT', json.dependencies)
27 |
28 | console.log('}')
29 |
30 |
31 |
--------------------------------------------------------------------------------
/extern/GraphViz/Pathplan.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/Pathplan.dll
--------------------------------------------------------------------------------
/extern/GraphViz/acyclic.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/acyclic.exe
--------------------------------------------------------------------------------
/extern/GraphViz/ann.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/ann.dll
--------------------------------------------------------------------------------
/extern/GraphViz/bcomps.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/bcomps.exe
--------------------------------------------------------------------------------
/extern/GraphViz/brotlicommon.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/brotlicommon.dll
--------------------------------------------------------------------------------
/extern/GraphViz/brotlidec.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/brotlidec.dll
--------------------------------------------------------------------------------
/extern/GraphViz/bz2.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/bz2.dll
--------------------------------------------------------------------------------
/extern/GraphViz/cairo-2.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/cairo-2.dll
--------------------------------------------------------------------------------
/extern/GraphViz/ccomps.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/ccomps.exe
--------------------------------------------------------------------------------
/extern/GraphViz/cdt.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/cdt.dll
--------------------------------------------------------------------------------
/extern/GraphViz/cgraph++.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/cgraph++.dll
--------------------------------------------------------------------------------
/extern/GraphViz/cgraph.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/cgraph.dll
--------------------------------------------------------------------------------
/extern/GraphViz/circo.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/circo.exe
--------------------------------------------------------------------------------
/extern/GraphViz/cluster.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/cluster.exe
--------------------------------------------------------------------------------
/extern/GraphViz/concrt140.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/concrt140.dll
--------------------------------------------------------------------------------
/extern/GraphViz/diffimg.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/diffimg.exe
--------------------------------------------------------------------------------
/extern/GraphViz/dijkstra.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/dijkstra.exe
--------------------------------------------------------------------------------
/extern/GraphViz/dot.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/dot.exe
--------------------------------------------------------------------------------
/extern/GraphViz/dot2gxl.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/dot2gxl.exe
--------------------------------------------------------------------------------
/extern/GraphViz/dot_builtins.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/dot_builtins.exe
--------------------------------------------------------------------------------
/extern/GraphViz/edgepaint.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/edgepaint.exe
--------------------------------------------------------------------------------
/extern/GraphViz/fdp.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/fdp.exe
--------------------------------------------------------------------------------
/extern/GraphViz/ffi-8.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/ffi-8.dll
--------------------------------------------------------------------------------
/extern/GraphViz/fontconfig-1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/fontconfig-1.dll
--------------------------------------------------------------------------------
/extern/GraphViz/freetype.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/freetype.dll
--------------------------------------------------------------------------------
/extern/GraphViz/fribidi-0.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/fribidi-0.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gc.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gc.exe
--------------------------------------------------------------------------------
/extern/GraphViz/gdtclft.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gdtclft.dll
--------------------------------------------------------------------------------
/extern/GraphViz/getopt.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/getopt.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gio-2.0-0.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gio-2.0-0.dll
--------------------------------------------------------------------------------
/extern/GraphViz/glib-2.0-0.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/glib-2.0-0.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gml2gv.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gml2gv.exe
--------------------------------------------------------------------------------
/extern/GraphViz/gmodule-2.0-0.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gmodule-2.0-0.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gobject-2.0-0.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gobject-2.0-0.dll
--------------------------------------------------------------------------------
/extern/GraphViz/graphml2gv.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/graphml2gv.exe
--------------------------------------------------------------------------------
/extern/GraphViz/gts.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gts.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gv2gml.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gv2gml.exe
--------------------------------------------------------------------------------
/extern/GraphViz/gv2gxl.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gv2gxl.exe
--------------------------------------------------------------------------------
/extern/GraphViz/gvc++.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvc++.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gvc.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvc.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gvcolor.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvcolor.exe
--------------------------------------------------------------------------------
/extern/GraphViz/gvgen.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvgen.exe
--------------------------------------------------------------------------------
/extern/GraphViz/gvmap.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvmap.exe
--------------------------------------------------------------------------------
/extern/GraphViz/gvpack.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvpack.exe
--------------------------------------------------------------------------------
/extern/GraphViz/gvplugin_core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvplugin_core.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gvplugin_dot_layout.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvplugin_dot_layout.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gvplugin_gd.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvplugin_gd.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gvplugin_gdiplus.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvplugin_gdiplus.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gvplugin_kitty.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvplugin_kitty.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gvplugin_neato_layout.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvplugin_neato_layout.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gvplugin_pango.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvplugin_pango.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gvplugin_vt.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvplugin_vt.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gvplugin_webp.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvplugin_webp.dll
--------------------------------------------------------------------------------
/extern/GraphViz/gvpr.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gvpr.exe
--------------------------------------------------------------------------------
/extern/GraphViz/gxl2dot.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gxl2dot.exe
--------------------------------------------------------------------------------
/extern/GraphViz/gxl2gv.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/gxl2gv.exe
--------------------------------------------------------------------------------
/extern/GraphViz/harfbuzz.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/harfbuzz.dll
--------------------------------------------------------------------------------
/extern/GraphViz/iconv-2.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/iconv-2.dll
--------------------------------------------------------------------------------
/extern/GraphViz/intl-8.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/intl-8.dll
--------------------------------------------------------------------------------
/extern/GraphViz/jpeg62.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/jpeg62.dll
--------------------------------------------------------------------------------
/extern/GraphViz/libexpat.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/libexpat.dll
--------------------------------------------------------------------------------
/extern/GraphViz/libgd.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/libgd.dll
--------------------------------------------------------------------------------
/extern/GraphViz/liblzma.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/liblzma.dll
--------------------------------------------------------------------------------
/extern/GraphViz/libpng16.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/libpng16.dll
--------------------------------------------------------------------------------
/extern/GraphViz/libsharpyuv.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/libsharpyuv.dll
--------------------------------------------------------------------------------
/extern/GraphViz/libwebp.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/libwebp.dll
--------------------------------------------------------------------------------
/extern/GraphViz/mingle.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/mingle.exe
--------------------------------------------------------------------------------
/extern/GraphViz/mm2gv.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/mm2gv.exe
--------------------------------------------------------------------------------
/extern/GraphViz/msvcp140.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/msvcp140.dll
--------------------------------------------------------------------------------
/extern/GraphViz/msvcp140_1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/msvcp140_1.dll
--------------------------------------------------------------------------------
/extern/GraphViz/msvcp140_2.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/msvcp140_2.dll
--------------------------------------------------------------------------------
/extern/GraphViz/msvcp140_atomic_wait.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/msvcp140_atomic_wait.dll
--------------------------------------------------------------------------------
/extern/GraphViz/msvcp140_codecvt_ids.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/msvcp140_codecvt_ids.dll
--------------------------------------------------------------------------------
/extern/GraphViz/neato.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/neato.exe
--------------------------------------------------------------------------------
/extern/GraphViz/nop.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/nop.exe
--------------------------------------------------------------------------------
/extern/GraphViz/osage.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/osage.exe
--------------------------------------------------------------------------------
/extern/GraphViz/pango-1.0-0.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/pango-1.0-0.dll
--------------------------------------------------------------------------------
/extern/GraphViz/pangocairo-1.0-0.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/pangocairo-1.0-0.dll
--------------------------------------------------------------------------------
/extern/GraphViz/pangoft2-1.0-0.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/pangoft2-1.0-0.dll
--------------------------------------------------------------------------------
/extern/GraphViz/pangowin32-1.0-0.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/pangowin32-1.0-0.dll
--------------------------------------------------------------------------------
/extern/GraphViz/patchwork.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/patchwork.exe
--------------------------------------------------------------------------------
/extern/GraphViz/pcre2-8.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/pcre2-8.dll
--------------------------------------------------------------------------------
/extern/GraphViz/pixman-1-0.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/pixman-1-0.dll
--------------------------------------------------------------------------------
/extern/GraphViz/prune.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/prune.exe
--------------------------------------------------------------------------------
/extern/GraphViz/sccmap.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/sccmap.exe
--------------------------------------------------------------------------------
/extern/GraphViz/sfdp.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/sfdp.exe
--------------------------------------------------------------------------------
/extern/GraphViz/tcl86t.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/tcl86t.dll
--------------------------------------------------------------------------------
/extern/GraphViz/tcldot.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/tcldot.dll
--------------------------------------------------------------------------------
/extern/GraphViz/tcldot_builtin.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/tcldot_builtin.dll
--------------------------------------------------------------------------------
/extern/GraphViz/tclplan.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/tclplan.dll
--------------------------------------------------------------------------------
/extern/GraphViz/tiff.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/tiff.dll
--------------------------------------------------------------------------------
/extern/GraphViz/tred.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/tred.exe
--------------------------------------------------------------------------------
/extern/GraphViz/twopi.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/twopi.exe
--------------------------------------------------------------------------------
/extern/GraphViz/unflatten.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/unflatten.exe
--------------------------------------------------------------------------------
/extern/GraphViz/vcruntime140.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/vcruntime140.dll
--------------------------------------------------------------------------------
/extern/GraphViz/vcruntime140_1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/vcruntime140_1.dll
--------------------------------------------------------------------------------
/extern/GraphViz/xdot.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/xdot.dll
--------------------------------------------------------------------------------
/extern/GraphViz/zlib1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/extern/GraphViz/zlib1.dll
--------------------------------------------------------------------------------
/extern/REAMDE.md:
--------------------------------------------------------------------------------
1 |
2 | ## GraphViz
3 |
4 | - https://graphviz.org/download/
5 | - version 12.2.1 64bit
6 |
7 |
--------------------------------------------------------------------------------
/src/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | true
5 | 4
6 | 618,672,1030
7 | 1591,8032
8 | Latest
9 | false
10 | false
11 | ..\..\bin\$(Configuration)\
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Actors.Client/Messages.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Actors.Client;
2 |
3 | public class CancelMessage { }
4 |
5 | public class CanceledMessage { }
6 |
7 | public class FailedMessage
8 | {
9 | // https://github.com/akkadotnet/akka.net/issues/1409
10 | // -> exceptions are currently not serializable in raw version
11 | public string Error { get; set; }
12 | }
13 |
14 | public class FinishedMessage { }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Actors.Client/Plainion.GraphViz.Actors.Client.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Actors.Client/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
5 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Actors.Client/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // Auto-Generated by FAKE; do not edit
2 | //
3 | using System.Reflection;
4 |
5 | [assembly: AssemblyTitle("Plainion.GraphViz.Actors.Client")]
6 | [assembly: AssemblyProduct("Plainion.GraphViz")]
7 | [assembly: AssemblyDescription("Plainion.GraphViz")]
8 | [assembly: AssemblyCopyright("Copyright @ 2025")]
9 | [assembly: AssemblyVersion("8.3")]
10 | [assembly: AssemblyFileVersion("8.3")]
11 | namespace System {
12 | internal static class AssemblyVersionInformation {
13 | internal const System.String AssemblyTitle = "Plainion.GraphViz.Actors.Client";
14 | internal const System.String AssemblyProduct = "Plainion.GraphViz";
15 | internal const System.String AssemblyDescription = "Plainion.GraphViz";
16 | internal const System.String AssemblyCopyright = "Copyright @ 2025";
17 | internal const System.String AssemblyVersion = "8.3";
18 | internal const System.String AssemblyFileVersion = "8.3";
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Actors.Host/Plainion.GraphViz.Actors.Host.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 |
6 | true
7 | Exe
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Actors.Host/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // Auto-Generated by FAKE; do not edit
2 | //
3 | using System.Reflection;
4 |
5 | [assembly: AssemblyTitle("Plainion.GraphViz.Actors.Host")]
6 | [assembly: AssemblyProduct("Plainion.GraphViz")]
7 | [assembly: AssemblyDescription("Plainion.GraphViz")]
8 | [assembly: AssemblyCopyright("Copyright @ 2025")]
9 | [assembly: AssemblyVersion("8.3")]
10 | [assembly: AssemblyFileVersion("8.3")]
11 | namespace System {
12 | internal static class AssemblyVersionInformation {
13 | internal const System.String AssemblyTitle = "Plainion.GraphViz.Actors.Host";
14 | internal const System.String AssemblyProduct = "Plainion.GraphViz";
15 | internal const System.String AssemblyDescription = "Plainion.GraphViz";
16 | internal const System.String AssemblyCopyright = "Copyright @ 2025";
17 | internal const System.String AssemblyVersion = "8.3";
18 | internal const System.String AssemblyFileVersion = "8.3";
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.CodeInspection.Tests/Plainion.GraphViz.CodeInspection.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.CodeInspection.Tests/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.CodeInspection/AssemblyLoader/AssemblyLoaderFactory.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Extensions.Logging;
2 |
3 | namespace Plainion.GraphViz.CodeInspection.AssemblyLoader;
4 |
5 | public enum DotNetRuntime
6 | {
7 | Core,
8 | Framework
9 | }
10 |
11 | public class AssemblyLoaderFactory
12 | {
13 | public static IAssemblyLoader Create(ILoggerFactory loggerFactory, DotNetRuntime runtime) =>
14 | new ReflectionOnlyAssemblyLoader(loggerFactory, runtime);
15 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.CodeInspection/AssemblyLoader/AssemblyResolutionResult.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.IO;
4 | using System.Reflection;
5 |
6 | namespace Plainion.GraphViz.CodeInspection.AssemblyLoader;
7 |
8 | [DebuggerDisplay("{AssemblyName}")]
9 | class AssemblyResolutionResult
10 | {
11 | public AssemblyResolutionResult(FileInfo file)
12 | {
13 | Contract.RequiresNotNull(file, nameof(file));
14 |
15 | File = file;
16 | AssemblyName = AssemblyName.GetAssemblyName(file.FullName);
17 | }
18 |
19 | public FileInfo File { get; }
20 | public AssemblyName AssemblyName { get; private set; }
21 | }
22 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.CodeInspection/AssemblyLoader/IAssemblyLoader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 |
4 | namespace Plainion.GraphViz.CodeInspection.AssemblyLoader;
5 |
6 | public interface IAssemblyLoader : IDisposable
7 | {
8 | Assembly TryLoadAssembly(string path);
9 | Assembly TryLoadDependency(Assembly requestingAssembly, AssemblyName dependency);
10 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.CodeInspection/AssemblyLoader/MscorlibResolutionResult.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.IO;
3 | using System.Linq;
4 |
5 | namespace Plainion.GraphViz.CodeInspection.AssemblyLoader;
6 |
7 | class MscorlibResolutionResult : AssemblyResolutionResult
8 | {
9 | public MscorlibResolutionResult(FileInfo file, params string[] referenceAssemblies)
10 | : base(file)
11 | {
12 | ReferenceAssemblies = referenceAssemblies
13 | .Select(x => new DirectoryInfo(x))
14 | .ToList();
15 | }
16 |
17 | public IReadOnlyCollection ReferenceAssemblies { get; }
18 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.CodeInspection/AssemblyLoader/VersionExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plainion.GraphViz.CodeInspection.AssemblyLoader;
4 |
5 | static class VersionExtensions
6 | {
7 | internal static bool Matches(this Version lhs, Version rhs, VersionMatchingStrategy strategy) =>
8 | lhs != null && rhs != null && strategy switch
9 | {
10 | VersionMatchingStrategy.Exact => lhs.Major == rhs.Major && lhs.Minor == rhs.Minor && lhs.Build == rhs.Build,
11 | VersionMatchingStrategy.SemanticVersion => lhs.Major == rhs.Major && lhs.Minor <= rhs.Minor,
12 | _ => false,
13 | };
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.CodeInspection/AssemblyLoader/VersionMatchingStrategy.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.CodeInspection.AssemblyLoader;
2 |
3 | enum VersionMatchingStrategy
4 | {
5 | Exact = 0,
6 | SemanticVersion = 1,
7 | }
8 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.CodeInspection/Plainion.GraphViz.CodeInspection.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.CodeInspection/R.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 |
4 | namespace Plainion.GraphViz.CodeInspection;
5 |
6 | public class R
7 | {
8 | public static string AssemblyName(Assembly asm)
9 | {
10 | return asm.GetName().Name;
11 | }
12 |
13 | public static string TypeFullName(Type t)
14 | {
15 | return t.FullName ?? $"{t.Namespace}.{t.Name}";
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.CodeInspection/ReferenceType.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.CodeInspection
3 | {
4 | public enum ReferenceType
5 | {
6 | Undefined,
7 | DerivesFrom,
8 | Implements,
9 | Calls
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Bookmarks/BookmarksView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.Analysis.Bookmarks
4 | {
5 | partial class BookmarksView : UserControl
6 | {
7 | public BookmarksView(BookmarksViewModel model )
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Bookmarks/OpenBookmarksView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.Analysis.Bookmarks;
5 |
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.SecondaryToolBox + ".0040")]
7 | partial class OpenBookmarksView : UserControl
8 | {
9 | public OpenBookmarksView(OpenBookmarksViewModel model)
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Clusters/ClusterEditor.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.Analysis.Clusters
4 | {
5 | partial class ClusterEditor : UserControl
6 | {
7 | public ClusterEditor(ClusterEditorViewModel model)
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Clusters/NodeDropRequest.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Analysis.Clusters;
2 |
3 | class NodeDropRequest
4 | {
5 | public NodeDropRequest(NodeViewModel droppedNode, NodeViewModel dropTarget)
6 | {
7 | System.Contract.RequiresNotNull(droppedNode);
8 | System.Contract.RequiresNotNull(dropTarget);
9 |
10 | DroppedNode = droppedNode;
11 | DropTarget = dropTarget;
12 | }
13 |
14 | public NodeViewModel DroppedNode { get; }
15 | public NodeViewModel DropTarget { get; }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Clusters/OpenClustersView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.Analysis.Clusters;
5 |
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.SecondaryToolBox + ".0030")]
7 | partial class OpenClustersView : UserControl
8 | {
9 | public OpenClustersView(OpenClustersViewModel model)
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Clusters/TreeEditor.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.Analysis.Clusters;
4 |
5 | partial class TreeEditor : UserControl
6 | {
7 | public TreeEditor()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Clusters/VisualTreeUtils.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Media;
3 |
4 | namespace Plainion.GraphViz.Modules.Analysis.Clusters;
5 |
6 | static class VisualTreeUtils
7 | {
8 | public static T FindParentOfType(this DependencyObject self) where T : DependencyObject
9 | {
10 | while (self != null && self is not T)
11 | {
12 | self = VisualTreeHelper.GetParent(self);
13 | }
14 | return (T)self;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/NodeMasks/NodeMasksEditor.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.Analysis.Filters
4 | {
5 | partial class NodeMasksEditor : UserControl
6 | {
7 | public NodeMasksEditor( NodeMasksEditorModel model )
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/NodeMasks/NodeMasksView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Plainion.GraphViz.Viewer.Abstractions.ViewModel;
3 |
4 | namespace Plainion.GraphViz.Modules.Analysis.Filters
5 | {
6 | partial class NodeMasksView : UserControl
7 | {
8 | // designer only
9 | public NodeMasksView()
10 | : this(new NodeMasksViewModel(new DefaultDomainModel()))
11 | {
12 | }
13 |
14 | public NodeMasksView(NodeMasksViewModel model)
15 | {
16 | InitializeComponent();
17 |
18 | DataContext = model;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/NodeMasks/OpenNodeMasksView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.Analysis.NodeMasks;
5 |
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.SecondaryToolBox + ".0020")]
7 | partial class OpenNodeMasksView : UserControl
8 | {
9 | public OpenNodeMasksView(OpenNodeMasksViewModel model)
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Plainion.GraphViz.Modules.Analysis.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Designer
7 |
8 |
9 | Designer
10 |
11 |
12 | Designer
13 |
14 |
15 | Designer
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/RegionNames.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Modules.Analysis;
3 |
4 | public static class RegionNames
5 | {
6 | public static readonly string NodeMasksView = "Region.Analysis.NodeMasks.View";
7 | public static readonly string NodeMasksEditor = "Region.Analysis.NodeMasks.Editor";
8 | public static readonly string ClusterEditor = "Region.Analysis.ClusterEditor";
9 | public static readonly string Bookmarks = "Region.Analysis.Bookmarks";
10 | }
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Resources/Bookmarks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Modules.Analysis/Resources/Bookmarks.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Resources/Clusters.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Modules.Analysis/Resources/Clusters.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Resources/Filter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Modules.Analysis/Resources/Filter.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Analysis/Search/SearchBox.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.Analysis.Search
5 | {
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.SecondaryToolBox + ".0010")]
7 | partial class SearchBox : UserControl
8 | {
9 | public SearchBox( SearchBoxModel model )
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.CallTree.Tests/Plainion.GraphViz.Modules.CodeInspection.CallTree.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.CallTree.Tests/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.CallTree/Actors/CallTreeClient.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 | using System.Threading.Tasks;
3 | using Plainion.GraphViz.Actors.Client;
4 |
5 | namespace Plainion.GraphViz.Modules.CodeInspection.CallTree.Actors
6 | {
7 | class CallTreeClient : ActorClientBase
8 | {
9 | public async Task AnalyzeAsync(CallTreeRequest request, CancellationToken cancellationToken = default)
10 | {
11 | var response = await this.ProcessAsync(typeof(CallTreeActor), request, cancellationToken);
12 |
13 | if (response is CallTreeResponse m)
14 | {
15 | return m.DotFile;
16 | }
17 | else
18 | {
19 | return null;
20 | }
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.CallTree/Actors/Messages.cs:
--------------------------------------------------------------------------------
1 | using Plainion.GraphViz.Actors.Client;
2 |
3 | namespace Plainion.GraphViz.Modules.CodeInspection.CallTree.Actors
4 | {
5 | class CallTreeRequest
6 | {
7 | public string ConfigFile { get; set; }
8 | public bool AssemblyReferencesOnly { get; set; }
9 | public bool StrictCallsOnly { get; set; }
10 | }
11 |
12 | class CallTreeResponse : FinishedMessage
13 | {
14 | public string DotFile { get; set; }
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.CallTree/CallTreeMenuItem.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.CodeInspection.CallTree
5 | {
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.AddIns + ".0010")]
7 | partial class CallTreeMenuItem : MenuItem
8 | {
9 | public CallTreeMenuItem(CallTreeMenuItemModel model)
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.CallTree/CallTreeMenuItemModel.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 | using Plainion.Prism.Interactivity.InteractionRequest;
3 | using Prism.Commands;
4 | using Prism.Mvvm;
5 |
6 | namespace Plainion.GraphViz.Modules.CodeInspection.CallTree
7 | {
8 | class CallTreeMenuItemModel : BindableBase
9 | {
10 | public CallTreeMenuItemModel()
11 | {
12 | OpenCallTreeCommand = new DelegateCommand(OnOpenCallTree);
13 | CallTreeRequest = new InteractionRequest();
14 | }
15 |
16 | private void OnOpenCallTree()
17 | {
18 | var notification = new Notification();
19 | notification.Title = "CallTree";
20 |
21 | CallTreeRequest.Raise(notification, c => { });
22 | }
23 |
24 | public ICommand OpenCallTreeCommand { get; private set; }
25 |
26 | public InteractionRequest CallTreeRequest { get; private set; }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.CallTree/CallTreeView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.CodeInspection.CallTree
4 | {
5 | partial class CallTreeView : UserControl
6 | {
7 | public CallTreeView( CallTreeViewModel model )
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.CallTree/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 | using System.Runtime.Versioning;
3 |
4 | [assembly: SupportedOSPlatform("windows7.0")]
5 |
6 | [assembly: InternalsVisibleTo("Plainion.GraphViz.Modules.CodeInspection.CallTree.Tests")]
7 |
8 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.CallTree/RegionNames.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Modules.CodeInspection
3 | {
4 | static class RegionNames
5 | {
6 | public static readonly string CallTree = "Region.CallTree";
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Inheritance.Tests/Plainion.GraphViz.Modules.CodeInspection.Inheritance.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Inheritance.Tests/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Inheritance/Actors/Messages.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Plainion.GraphViz.Actors.Client;
3 | using Plainion.GraphViz.Modules.CodeInspection.Inheritance.Analyzers;
4 |
5 | namespace Plainion.GraphViz.Modules.CodeInspection.Inheritance.Actors
6 | {
7 | class GetAllTypesMessage
8 | {
9 | public string AssemblyLocation { get; set; }
10 | }
11 |
12 | class AllTypesMessage : FinishedMessage
13 | {
14 | public IEnumerable Types { get; set; }
15 | }
16 |
17 | class GetInheritanceGraphMessage
18 | {
19 | public bool IgnoreDotNetTypes { get; set; }
20 | public string AssemblyLocation { get; set; }
21 | public TypeDescriptor TypeToAnalyze { get; set; }
22 | }
23 |
24 | class InheritanceGraphMessage : FinishedMessage
25 | {
26 | public byte[] Document { get; set; }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Inheritance/InheritanceGraphBuilderView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.CodeInspection.Inheritance
4 | {
5 | partial class InheritanceGraphBuilderView : UserControl
6 | {
7 | public InheritanceGraphBuilderView( InheritanceGraphBuilderViewModel model )
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Inheritance/InheritanceGraphMenuItem.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.CodeInspection.Inheritance
5 | {
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.AddIns + ".0020")]
7 | partial class InheritanceGraphMenuItem : MenuItem
8 | {
9 | public InheritanceGraphMenuItem( InheritanceGraphMenuItemModel model )
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Inheritance/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 | using System.Runtime.Versioning;
3 |
4 | [assembly: SupportedOSPlatform("windows7.0")]
5 |
6 | [assembly: InternalsVisibleTo("Plainion.GraphViz.Modules.CodeInspection.Inheritance.Tests")]
7 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Inheritance/RegionNames.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Modules.CodeInspection
3 | {
4 | static class RegionNames
5 | {
6 | public static readonly string InheritanceGraphBuilder = "Region.InheritanceGraphBuilder";
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging.Tests/Plainion.GraphViz.Modules.CodeInspection.Packaging.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging.Tests/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/Actors/Messages.cs:
--------------------------------------------------------------------------------
1 | using Plainion.GraphViz.Actors.Client;
2 |
3 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging.Actors
4 | {
5 | class AnalysisRequest
6 | {
7 | public string Spec { get; set; }
8 |
9 | public string[] PackagesToAnalyze { get; set; }
10 | }
11 |
12 | class AnalysisMessage : AnalysisRequest
13 | {
14 | public string OutputFile { get; set; }
15 | }
16 |
17 | class AnalysisResponse : FinishedMessage
18 | {
19 | public string File { get; set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/Analyzers/GraphUtils.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Plainion.GraphViz.CodeInspection;
3 |
4 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging.Analyzers
5 | {
6 | static class GraphUtils
7 | {
8 | public static Reference Edge(Reference edge)
9 | {
10 | return Edge(edge.From, edge.To, edge.ReferenceType);
11 | }
12 |
13 | public static Reference Edge(Type source, Type target)
14 | {
15 | return Edge(source, target, ReferenceType.Undefined);
16 | }
17 |
18 | public static Reference Edge(Type source, Type target, ReferenceType edgeType)
19 | {
20 | return new Reference(source, target, edgeType);
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/PackagingGraphBuilderView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using System.Windows.Controls;
3 |
4 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging
5 | {
6 | partial class PackagingGraphBuilderView : UserControl
7 | {
8 | public PackagingGraphBuilderView( PackagingGraphBuilderViewModel model )
9 | {
10 | InitializeComponent();
11 |
12 | DataContext = model;
13 |
14 | myPackagesFilter.SelectionChanged += myPackagesFilter_SelectionChanged;
15 | }
16 |
17 | private void myPackagesFilter_SelectionChanged( object sender, SelectionChangedEventArgs e )
18 | {
19 | ( ( PackagingGraphBuilderViewModel )DataContext ).PackagesToAnalyze = myPackagesFilter.SelectedItems
20 | .OfType()
21 | .ToList();
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/PackagingGraphMenuItem.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging
5 | {
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.AddIns + ".0030")]
7 | partial class PackagingGraphMenuItem : MenuItem
8 | {
9 | public PackagingGraphMenuItem( PackagingGraphMenuItemModel model )
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/Plainion.GraphViz.Modules.CodeInspection.Packaging.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Designer
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/PrivateSettersContractResolver.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Reflection;
5 | using Newtonsoft.Json;
6 | using Newtonsoft.Json.Serialization;
7 |
8 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging
9 | {
10 | class PrivateSettersContractResolver : DefaultContractResolver
11 | {
12 | protected override IList CreateProperties( Type type, MemberSerialization memberSerialization )
13 | {
14 | var props = type.GetProperties( BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance )
15 | .Select( p => base.CreateProperty( p, memberSerialization ) )
16 | .ToList();
17 |
18 | props.ForEach( p => { p.Writable = true; p.Readable = true; } );
19 |
20 | return props;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 | using System.Runtime.Versioning;
3 | using System.Windows.Markup;
4 |
5 | [assembly: XmlnsDefinition( "http://github.com/ronin4net/plainion/GraphViz/Packaging/Spec", "Plainion.GraphViz.Modules.CodeInspection.Packaging.Spec" )]
6 |
7 | [assembly: SupportedOSPlatform("windows7.0")]
8 |
9 | [assembly: InternalsVisibleTo( "Plainion.GraphViz.Modules.CodeInspection.Packaging.Tests" )]
10 |
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/RegionNames.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Modules.CodeInspection
3 | {
4 | static class RegionNames
5 | {
6 | public static readonly string PackagingGraphBuilder = "Region.PackagingGraphBuilder";
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/Resources/SystemPackagingTemplate.xaml:
--------------------------------------------------------------------------------
1 |
2 | true
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/Spec/Cluster.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using System.Windows.Markup;
3 |
4 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging.Spec
5 | {
6 | [ContentProperty("Patterns")]
7 | public class Cluster : PackageBase
8 | {
9 | public string Id { get; set; }
10 |
11 | internal bool Matches(string str)
12 | {
13 | Contract.RequiresNotNull(str, nameof(str));
14 |
15 | return Includes.Any(i => i.Matches(str)) && !Excludes.Any(e => e.Matches(str));
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/Spec/Exclude.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging.Spec
2 | {
3 | public class Exclude : Wildcard
4 | {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/Spec/Include.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging.Spec
2 | {
3 | public class Include : Wildcard
4 | {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/Spec/Package.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.ComponentModel;
3 | using System.Windows.Markup;
4 |
5 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging.Spec
6 | {
7 | [ContentProperty( "Patterns" )]
8 | public class Package : PackageBase
9 | {
10 | public Package()
11 | {
12 | Clusters = new List();
13 | }
14 |
15 | [DefaultValue(null)]
16 | public string AutoClusters { get; set; }
17 |
18 | [DesignerSerializationVisibility( DesignerSerializationVisibility.Content )]
19 | public List Clusters { get; private set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/Spec/SystemPackaging.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.ComponentModel;
3 | using System.Windows.Markup;
4 |
5 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging.Spec
6 | {
7 | [ContentProperty("Packages")]
8 | public class SystemPackaging
9 | {
10 | public SystemPackaging()
11 | {
12 | Packages = new List();
13 | }
14 |
15 | public bool NetFramework { get; set; }
16 |
17 | public bool UsedTypesOnly { get; set; }
18 |
19 | public string AssemblyRoot { get; set; }
20 |
21 | [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
22 | public List Packages { get; private set; }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/XmlEditor/AttributeCompletionData.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 | using ICSharpCode.AvalonEdit.Document;
4 | using ICSharpCode.AvalonEdit.Editing;
5 |
6 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging.XmlEditor;
7 |
8 | class AttributeCompletionData : AbstractCompletionData
9 | {
10 | public AttributeCompletionData(PropertyInfo property)
11 | : base(property.Name, property.PropertyType.Name)
12 | {
13 | }
14 |
15 | public override void Complete(TextArea textArea, ISegment completionSegment, EventArgs insertionRequestEventArgs)
16 | {
17 | textArea.Document.Replace(completionSegment, Text + "=\"\"");
18 | textArea.Caret.Offset -= 1;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/XmlEditor/ElementCompletionData.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging.XmlEditor;
4 |
5 | public class ElementCompletionData : AbstractCompletionData
6 | {
7 | public ElementCompletionData(Type type)
8 | : base(type.Name, type.Name)
9 | {
10 | Type = type;
11 | }
12 |
13 | public Type Type { get; private set; }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/XmlEditor/PropertyElementCompletionData.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 |
3 | namespace Plainion.GraphViz.Modules.CodeInspection.Packaging.XmlEditor;
4 |
5 | class PropertyElementCompletionData : AbstractCompletionData
6 | {
7 | public PropertyElementCompletionData(PropertyInfo property)
8 | : base(property.Name, property.PropertyType.Name)
9 | {
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.Packaging/XmlEditor/XmlEditor.xaml:
--------------------------------------------------------------------------------
1 |
10 |
17 |
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.PathFinder.Tests/Plainion.GraphViz.Modules.CodeInspection.PathFinder.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.PathFinder.Tests/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.PathFinder/Actors/Messages.cs:
--------------------------------------------------------------------------------
1 | using Plainion.GraphViz.Actors.Client;
2 |
3 | namespace Plainion.GraphViz.Modules.CodeInspection.PathFinder.Actors
4 | {
5 | class PathFinderRequest
6 | {
7 | public string ConfigFile { get; set; }
8 | public bool AssemblyReferencesOnly { get; set; }
9 | }
10 |
11 | class PathFinderResponse : FinishedMessage
12 | {
13 | public string DotFile { get; set; }
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.PathFinder/Actors/PathFinderClient.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 | using System.Threading.Tasks;
3 | using Plainion.GraphViz.Actors.Client;
4 |
5 | namespace Plainion.GraphViz.Modules.CodeInspection.PathFinder.Actors
6 | {
7 | class PathFinderClient : ActorClientBase
8 | {
9 | public async Task AnalyzeAsync(PathFinderRequest request, CancellationToken cancellationToken = default)
10 | {
11 | var response = await this.ProcessAsync(typeof(PathFinderActor), request, cancellationToken);
12 |
13 | if (response is PathFinderResponse m)
14 | {
15 | return m.DotFile;
16 | }
17 | else
18 | {
19 | return null;
20 | }
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.PathFinder/PathFinderMenuItem.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.CodeInspection.PathFinder
5 | {
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.AddIns + ".0040")]
7 | partial class PathFinderMenuItem : MenuItem
8 | {
9 | public PathFinderMenuItem(PathFinderMenuItemModel model )
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.PathFinder/PathFinderMenuItemModel.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 | using Plainion.Prism.Interactivity.InteractionRequest;
3 | using Prism.Commands;
4 | using Prism.Mvvm;
5 |
6 | namespace Plainion.GraphViz.Modules.CodeInspection.PathFinder
7 | {
8 | class PathFinderMenuItemModel : BindableBase
9 | {
10 | public PathFinderMenuItemModel()
11 | {
12 | OpenPathFinderCommand = new DelegateCommand(OnOpenPathFinder);
13 | PathFinderRequest = new InteractionRequest();
14 | }
15 |
16 | private void OnOpenPathFinder()
17 | {
18 | var notification = new Notification();
19 | notification.Title = "PathFinder";
20 |
21 | PathFinderRequest.Raise(notification, c => { });
22 | }
23 |
24 | public ICommand OpenPathFinderCommand { get; private set; }
25 |
26 | public InteractionRequest PathFinderRequest { get; private set; }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.PathFinder/PathFinderView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.CodeInspection.PathFinder
4 | {
5 | partial class PathFinderView : UserControl
6 | {
7 | public PathFinderView( PathFinderViewModel model )
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.PathFinder/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 | using System.Runtime.Versioning;
3 | using System.Windows.Markup;
4 |
5 | [assembly: SupportedOSPlatform("windows7.0")]
6 |
7 | [assembly: InternalsVisibleTo( "Plainion.GraphViz.Modules.CodeInspection.PathFinder.Tests" )]
8 |
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection.PathFinder/RegionNames.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Modules.CodeInspection
3 | {
4 | static class RegionNames
5 | {
6 | public static readonly string PathFinder = "Region.PathFinder";
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.CodeInspection/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 | using System.Runtime.Versioning;
3 | using System.Windows.Markup;
4 |
5 | [assembly: XmlnsDefinition( "http://github.com/ronin4net/plainion/GraphViz/Packaging/Spec", "Plainion.GraphViz.Modules.CodeInspection.Packaging.Spec" )]
6 |
7 | [assembly: SupportedOSPlatform("windows7.0")]
8 |
9 | [assembly: InternalsVisibleTo( "Plainion.GraphViz.Modules.CodeInspection.Tests" )]
10 |
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents.Tests/Plainion.GraphViz.Modules.Documents.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents.Tests/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/DotLang/IMatcher.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Modules.Documents.DotLang
3 | {
4 | interface IMatcher
5 | {
6 | Token IsMatch( Tokenizer tokenizer );
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/DotLang/MatchNewLine.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 |
4 | namespace Plainion.GraphViz.Modules.Documents.DotLang
5 | {
6 | class MatchNewLine : MatcherBase
7 | {
8 | protected override Token IsMatchImpl( Tokenizer tokenizer )
9 | {
10 | var str = new StringBuilder();
11 |
12 | while( tokenizer.Current == '\r' || tokenizer.Current == '\n' )
13 | {
14 | str.Append( tokenizer.Current );
15 |
16 | tokenizer.Consume();
17 | }
18 |
19 | if( str.ToString() == Environment.NewLine )
20 | {
21 | return new Token( TokenType.NewLine );
22 | }
23 |
24 | return null;
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/DotLang/MatchWhiteSpace.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 |
4 | namespace Plainion.GraphViz.Modules.Documents.DotLang
5 | {
6 | class MatchWhiteSpace : MatcherBase
7 | {
8 | protected override Token IsMatchImpl( Tokenizer tokenizer )
9 | {
10 | var str = new StringBuilder();
11 |
12 | while( char.IsWhiteSpace( tokenizer.Current ) )
13 | {
14 | str.Append( tokenizer.Current );
15 |
16 | tokenizer.Consume();
17 | }
18 |
19 | if( str.Length > 0 )
20 | {
21 | return new Token( TokenType.WhiteSpace, str.ToString() );
22 | }
23 |
24 | return null;
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/DotLang/MatcherBase.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Modules.Documents.DotLang
3 | {
4 | abstract class MatcherBase : IMatcher
5 | {
6 | public Token IsMatch( Tokenizer tokenizer )
7 | {
8 | if( tokenizer.EndOfStream )
9 | {
10 | return new Token( TokenType.EndOfStream );
11 | }
12 |
13 | tokenizer.TakeSnapshot();
14 |
15 | var match = IsMatchImpl( tokenizer );
16 |
17 | if( match == null )
18 | {
19 | tokenizer.RollbackSnapshot();
20 | }
21 | else
22 | {
23 | tokenizer.CommitSnapshot();
24 | }
25 |
26 | return match;
27 | }
28 |
29 | protected abstract Token IsMatchImpl( Tokenizer tokenizer );
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/GraphMLDocument.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using System.Xml.Linq;
3 |
4 | namespace Plainion.GraphViz.Modules.Documents
5 | {
6 | class GraphMLDocument : AbstractGraphDocument
7 | {
8 | protected override void Load()
9 | {
10 | var root = XElement.Load( Filename ).Elements( XN( "graph" ) ).First();
11 |
12 | foreach( var xmlNode in root.Elements( XN( "node" ) ) )
13 | {
14 | TryAddNode( xmlNode.Attribute( "id" ).Value );
15 | }
16 |
17 | foreach( var xmlLink in root.Elements( XN( "edge" ) ) )
18 | {
19 | TryAddEdge( xmlLink.Attribute( "source" ).Value, xmlLink.Attribute( "target" ).Value );
20 | }
21 | }
22 |
23 | private static XName XN( string localName )
24 | {
25 | return XName.Get( localName, "http://graphml.graphdrawing.org/xmlns" );
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/ICaptionDocument.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Plainion.GraphViz.Presentation;
3 |
4 | namespace Plainion.GraphViz.Modules.Documents
5 | {
6 | public interface ICaptionDocument
7 | {
8 | IEnumerable Captions { get; }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/IDocument.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Documents
2 | {
3 | public interface IDocument
4 | {
5 | string Filename { get; }
6 |
7 | void Load( string path );
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/IGraphDocument.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Plainion.GraphViz.Viewer.Abstractions;
3 | using Plainion.Graphs;
4 |
5 | namespace Plainion.GraphViz.Modules.Documents
6 | {
7 | public interface IGraphDocument : IDocument
8 | {
9 | IGraph Graph { get; }
10 |
11 | ///
12 | /// Allows a document to read its content more tolerant and report failures additionally but without exceptions.
13 | ///
14 | IEnumerable FailedItems { get; }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/ILayoutDocument.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Plainion.GraphViz.Presentation;
3 |
4 | namespace Plainion.GraphViz.Modules.Documents
5 | {
6 | public interface ILayoutDocument
7 | {
8 | IEnumerable NodeLayouts { get; }
9 | IEnumerable EdgeLayouts { get; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/IStyleDocument.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Plainion.GraphViz.Presentation;
3 |
4 | namespace Plainion.GraphViz.Modules.Documents
5 | {
6 | public interface IStyleDocument
7 | {
8 | IEnumerable NodeStyles { get; }
9 | IEnumerable EdgeStyles { get; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/OpenDocumentsView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.Documents
5 | {
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.PrimaryToolBox + ".0010")]
7 | partial class OpenDocumentsView : UserControl
8 | {
9 | public OpenDocumentsView(OpenDocumentsViewModel model)
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/Plainion.GraphViz.Modules.Documents.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/Plainion.GraphViz.Modules.Documents.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ProjectFiles
5 |
6 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 | using System.Runtime.Versioning;
3 |
4 | [assembly: SupportedOSPlatform("windows7.0")]
5 |
6 | [assembly: InternalsVisibleTo( "Plainion.GraphViz.Modules.Documents.Tests" )]
7 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/Resources/Open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Modules.Documents/Resources/Open.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/Resources/Save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Modules.Documents/Resources/Save.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Documents/SaveDocumentsView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.Documents
5 | {
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.PrimaryToolBox + ".0020")]
7 | partial class SaveDocumentsView : UserControl
8 | {
9 | public SaveDocumentsView(SaveDocumentsViewModel model)
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown.Tests/Plainion.GraphViz.Modules.Markdown.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown.Tests/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/AnalysisDocument.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer
4 | {
5 | internal class AnalysisDocument
6 | {
7 | public IList Files { get; } = new List();
8 | public IList FailedItems { get; } = new List();
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/FailedFile.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer
4 | {
5 | internal class FailedFile
6 | {
7 | public string FullPath { get; init; }
8 | public Exception Exception { get; init; }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/LinkResolverExtension.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using Plainion.GraphViz.Modules.Markdown.Analyzer.Markdown;
4 | using Plainion.GraphViz.Modules.Markdown.Analyzer.Resolver;
5 |
6 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer
7 | {
8 | internal static class LinkResolverExtension
9 | {
10 | public static IReadOnlyCollection ResolveLinks(this ILinkResolver self, IEnumerable links,
11 | string file, string root)
12 | {
13 | return links.Select(l => self.ResolveLink(l.Url, file, root)).ToList();
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Markdown/DocLink.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Markdown
2 | {
3 | internal record DocLink : Link
4 | {
5 | public DocLink(string url, string label) : base(url, label)
6 | {
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Markdown/ImageLink.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Markdown
2 | {
3 | internal record ImageLink : Link
4 | {
5 | public ImageLink(string url, string label) : base(url, label)
6 | {
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Markdown/Link.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Markdown
2 | {
3 | internal abstract record Link
4 | {
5 | protected Link(string url, string label)
6 | {
7 | Contract.RequiresNotNullNotEmpty(url);
8 |
9 | Url = url;
10 | Label = label;
11 | }
12 |
13 | public string Url { get; }
14 | public string Label { get; }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Markdown/MDDocument.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Markdown
4 | {
5 | internal class MDDocument
6 | {
7 | public MDDocument(IReadOnlyCollection links)
8 | {
9 | Contract.RequiresNotNull(links);
10 |
11 | Links = links;
12 | }
13 |
14 | public IReadOnlyCollection Links { get; }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Parser/AbstractParser.cs:
--------------------------------------------------------------------------------
1 | using System.IO.Abstractions;
2 | using Plainion.GraphViz.Modules.Markdown.Analyzer.Markdown;
3 |
4 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Parser
5 | {
6 | internal abstract class AbstractParser : IMarkdownParser
7 | {
8 | private readonly IFileSystem myFileSystem;
9 |
10 | protected AbstractParser(IFileSystem fileSystem)
11 | {
12 | myFileSystem = fileSystem;
13 | }
14 |
15 | public MDDocument LoadFile(string file)
16 | {
17 | var markdown = myFileSystem.File.ReadAllText(file);
18 |
19 | return ParseMarkdown(markdown);
20 | }
21 |
22 | public MDDocument LoadMarkdown(string markdown)
23 | {
24 | return ParseMarkdown(markdown);
25 | }
26 |
27 | protected abstract MDDocument ParseMarkdown(string markdown);
28 | }
29 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Parser/IMarkdownParser.cs:
--------------------------------------------------------------------------------
1 | using Plainion.GraphViz.Modules.Markdown.Analyzer.Markdown;
2 |
3 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Parser
4 | {
5 | internal interface IMarkdownParser
6 | {
7 | MDDocument LoadFile(string file);
8 |
9 | MDDocument LoadMarkdown(string markdown);
10 | }
11 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Resolver/ExternalLink.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Resolver
2 | {
3 | internal record ExternalLink : ResolvedLink
4 | {
5 | public ExternalLink(string url) : base(url)
6 | {
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Resolver/ILinkResolver.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Resolver
2 | {
3 | internal interface ILinkResolver
4 | {
5 | ///
6 | /// Resolves if the passed url is an external link (website, network share or just outside the analyzed folder)
7 | /// or an internal link. in case of an internal link the absolute path will be resolved.
8 | ///
9 | /// Absolute or relative url.
10 | /// The current processed file.
11 | /// Origin folder to be analyzed.
12 | /// The resolved link which is an absolute path.
13 | ResolvedLink ResolveLink(string url, string file, string root);
14 | }
15 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Resolver/InternalLink.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Resolver
2 | {
3 | ///
4 | /// Contains the absolute path to an internal link.
5 | ///
6 | internal record InternalLink : ResolvedLink
7 | {
8 | public InternalLink(string url) : base(url)
9 | {
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Resolver/ResolvedLink.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Resolver
4 | {
5 | internal abstract record ResolvedLink
6 | {
7 | protected ResolvedLink(string url)
8 | {
9 | Contract.RequiresNotNullNotEmpty(url);
10 |
11 | if (!Uri.TryCreate(url, UriKind.Absolute, out var uri))
12 | {
13 | throw new ArgumentException($"Url '{url}' is not an absolute uri.");
14 | }
15 |
16 | Uri = uri;
17 | }
18 |
19 | public Uri Uri { get; }
20 | }
21 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Verifier/ILinkVerifier.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Verifier
2 | {
3 | internal interface ILinkVerifier
4 | {
5 | public VerifiedLink VerifyLink(string link);
6 | }
7 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Verifier/InvalidLink.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Verifier
4 | {
5 | internal record InvalidLink : VerifiedLink
6 | {
7 | public InvalidLink(string path, Exception exception) : base(path)
8 | {
9 | Exception = exception;
10 | }
11 |
12 | public Exception Exception { get; }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Verifier/ValidLink.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Verifier
2 | {
3 | internal record ValidLink : VerifiedLink
4 | {
5 | public ValidLink(string path) : base(path)
6 | {
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Analyzer/Verifier/VerifiedLink.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Markdown.Analyzer.Verifier
2 | {
3 | internal abstract record VerifiedLink
4 | {
5 | protected VerifiedLink(string path)
6 | {
7 | Contract.RequiresNotNullNotEmpty(path);
8 |
9 | Path = path;
10 | }
11 |
12 | public string Path { get; }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/ConfigurationView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.Markdown
4 | {
5 | internal partial class ConfigurationView : UserControl
6 | {
7 | public ConfigurationView(ConfigurationViewModel model)
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Plainion.GraphViz.Modules.Markdown.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | true
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 | using System.Runtime.Versioning;
3 |
4 | [assembly: SupportedOSPlatform("windows7.0")]
5 | [assembly: InternalsVisibleTo("Plainion.GraphViz.Modules.Markdown.Tests")]
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/RegionNames.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Markdown
2 | {
3 | internal static class RegionNames
4 | {
5 | public static readonly string MarkdownDependencies = "Region.MarkdownDependencies";
6 | }
7 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/ToolsMenuItem.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.Markdown
5 | {
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.AddIns + ".0100")]
7 | internal partial class ToolsMenuItem : MenuItem
8 | {
9 | public ToolsMenuItem(ToolsMenuItemModel model)
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Markdown/ToolsMenuItemModel.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 | using Plainion.Prism.Interactivity.InteractionRequest;
3 | using Prism.Commands;
4 | using Prism.Mvvm;
5 |
6 | namespace Plainion.GraphViz.Modules.Markdown
7 | {
8 | internal class ToolsMenuItemModel : BindableBase
9 | {
10 | public ToolsMenuItemModel()
11 | {
12 | StartAnalysisCommand = new DelegateCommand(OnStartAnalysis);
13 | StartAnalysisRequest = new InteractionRequest();
14 | }
15 |
16 | private void OnStartAnalysis()
17 | {
18 | var notification = new Notification
19 | {
20 | Title = "Markdown Files Dependencies"
21 | };
22 |
23 | StartAnalysisRequest.Raise(notification, c => { });
24 | }
25 |
26 | public ICommand StartAnalysisCommand { get; }
27 |
28 | public InteractionRequest StartAnalysisRequest { get; private set; }
29 | }
30 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics.Tests/Plainion.GraphViz.Modules.Metrics.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics.Tests/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/Algorithms/Cycle.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using Plainion.Graphs;
4 |
5 | namespace Plainion.GraphViz.Modules.Metrics.Algorithms;
6 |
7 | public class Cycle
8 | {
9 | public required Node Start { get; init; }
10 | public required IReadOnlyCollection Edges { get; init; }
11 |
12 | // Start node is not repeated and only occurs once
13 | public IEnumerable Path => Edges.Select(x => x.Target);
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/Algorithms/GraphItemMeasurement.cs:
--------------------------------------------------------------------------------
1 | using Plainion.Graphs;
2 |
3 | namespace Plainion.GraphViz.Modules.Metrics.Algorithms;
4 |
5 | class GraphItemMeasurement where T : IGraphItem
6 | {
7 | public required T Owner { get; init; }
8 | public required double Absolute { get; init; }
9 | public required double Normalized { get; init; }
10 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/Algorithms/ShortestPaths.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 |
4 | namespace Plainion.GraphViz.Modules.Metrics.Algorithms;
5 |
6 | class ShortestPaths(IReadOnlyCollection paths)
7 | {
8 | public IReadOnlyCollection Paths { get; } = paths;
9 |
10 | public IReadOnlyCollection Get(string sourceId, string targetId) =>
11 | Paths.Where(p => p.Start.Id == sourceId && p.End.Id == targetId).ToList();
12 |
13 | public override string ToString() => string.Join("\n", Paths);
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/Algorithms/ShortestUndirectedPaths.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 |
4 | namespace Plainion.GraphViz.Modules.Metrics.Algorithms;
5 |
6 | class ShortestUndirectedPaths
7 | {
8 | public IReadOnlyCollection Paths { get; }
9 |
10 | public ShortestUndirectedPaths(IReadOnlyCollection paths)
11 | {
12 | Paths = paths.Distinct().ToList(); // Remove duplicates
13 | }
14 |
15 | public IReadOnlyCollection Get(string sourceId, string targetId) =>
16 | Paths.Where(p => p.Start.Id == sourceId && p.End.Id == targetId).ToList();
17 |
18 | public override string ToString() => string.Join("\n", Paths);
19 | }
20 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/CycleVM.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Plainion.GraphViz.Modules.Metrics.Algorithms;
3 |
4 | namespace Plainion.GraphViz.Modules.Metrics;
5 |
6 | internal class CycleVM
7 | {
8 | public required Cycle Model { get; init; }
9 | public required string Start { get; init; }
10 | public required IReadOnlyCollection Path { get; init; }
11 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/GraphDensityVM.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Metrics;
2 |
3 | internal class GraphDensityVM
4 | {
5 | public required int NodeCount { get; init; }
6 | public required int EdgeCount { get; init; }
7 | public required double Density { get; init; }
8 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/GraphItemMeasurementVM.cs:
--------------------------------------------------------------------------------
1 | using Plainion.Graphs;
2 |
3 | namespace Plainion.GraphViz.Modules.Metrics;
4 |
5 | class GraphItemMeasurementVM
6 | {
7 | public required IGraphItem Model { get; init; }
8 | public required string Caption { get; init; }
9 | public required double Absolute { get; init; }
10 | public required double Normalized { get; init; }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/MetricsModule.cs:
--------------------------------------------------------------------------------
1 | using Prism.Ioc;
2 | using Prism.Modularity;
3 | using Prism.Navigation.Regions;
4 |
5 | namespace Plainion.GraphViz.Modules.Metrics;
6 |
7 | public class MetricsModule(IRegionManager regionManager) : IModule
8 | {
9 | public void RegisterTypes(IContainerRegistry containerRegistry)
10 | {
11 | regionManager.RegisterViewWithRegion(Viewer.Abstractions.RegionNames.AddIns, typeof(ToolsMenuItem));
12 | regionManager.RegisterViewWithRegion(RegionNames.Metrics, typeof(MetricsView));
13 |
14 | // workaround to get notified when the window closes
15 | containerRegistry.RegisterSingleton();
16 | }
17 |
18 | public void OnInitialized(IContainerProvider containerProvider) { }
19 | }
20 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/MetricsView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.Metrics
4 | {
5 | partial class MetricsView : UserControl
6 | {
7 | public MetricsView(MetricsViewModel model)
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/NodeDegreesVM.cs:
--------------------------------------------------------------------------------
1 | using Plainion.Graphs;
2 |
3 | namespace Plainion.GraphViz.Modules.Metrics;
4 |
5 | internal class NodeDegreesVM
6 | {
7 | public required Node Model { get; init; }
8 | public required string Caption { get; init; }
9 |
10 | public required int In { get; init; }
11 | public required int Out { get; init; }
12 | public required int Total { get; init; }
13 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/Plainion.GraphViz.Modules.Metrics.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | true
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/Plainion.GraphViz.Modules.Metrics.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Designer
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 | using System.Runtime.Versioning;
3 |
4 | [assembly: SupportedOSPlatform("windows7.0")]
5 |
6 | [assembly: InternalsVisibleTo("Plainion.GraphViz.Modules.Metrics.Tests")]
7 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/RegionNames.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Modules.Metrics
3 | {
4 | public static class RegionNames
5 | {
6 | public static readonly string Metrics = "Region.Metrics";
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Metrics/ToolsMenuItem.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.Metrics
5 | {
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.AddIns + ".2000")]
7 | internal partial class ToolsMenuItem : MenuItem
8 | {
9 | public ToolsMenuItem(ToolsMenuItemModel model)
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Obfuscate/IObfuscator.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Obfuscate;
2 |
3 | internal interface IObfuscator
4 | {
5 | string Obfuscate(string value);
6 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Obfuscate/ObfuscateModule.cs:
--------------------------------------------------------------------------------
1 | using Prism.Ioc;
2 | using Prism.Modularity;
3 | using Prism.Navigation.Regions;
4 |
5 | namespace Plainion.GraphViz.Modules.Obfuscate;
6 |
7 | public class ObfuscateModule(IRegionManager regionManager) : IModule
8 | {
9 | public void RegisterTypes(IContainerRegistry containerRegistry)
10 | {
11 | regionManager.RegisterViewWithRegion(Viewer.Abstractions.RegionNames.AddIns, typeof(ToolsMenuItem));
12 | }
13 |
14 | public void OnInitialized(IContainerProvider containerProvider) { }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Obfuscate/Plainion.GraphViz.Modules.Obfuscate.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | true
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Obfuscate/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
5 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Obfuscate/SimpleObfuscator.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Modules.Obfuscate;
2 |
3 | using System.Collections.Generic;
4 |
5 | internal class SimpleObfuscator : IObfuscator
6 | {
7 | private readonly Dictionary myMap = [];
8 | private int myCounter = 0;
9 |
10 | public string Obfuscate(string value)
11 | {
12 | if (myMap.TryGetValue(value, out var obfuscated))
13 | {
14 | return obfuscated;
15 | }
16 |
17 | obfuscated = GetNextObfuscation();
18 | myMap[value] = obfuscated;
19 |
20 | return obfuscated;
21 | }
22 |
23 | private string GetNextObfuscation()
24 | {
25 | int value = myCounter++;
26 | string result = "";
27 |
28 | while (true)
29 | {
30 | result = (char)('A' + (value % 26)) + result;
31 | value = value / 26 - 1;
32 |
33 | if (value < 0) break;
34 | }
35 |
36 | return result;
37 | }
38 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Obfuscate/ToolsMenuItem.xaml:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Obfuscate/ToolsMenuItem.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.Obfuscate;
5 |
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.AddIns + ".1000")]
7 | partial class ToolsMenuItem : MenuItem
8 | {
9 | public ToolsMenuItem(ToolsMenuItemModel model)
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Properties/OpenPropertiesView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.Properties;
4 |
5 | partial class OpenPropertiesView : UserControl
6 | {
7 | public OpenPropertiesView(OpenPropertiesViewModel model)
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Properties/Plainion.GraphViz.Modules.Properties.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | true
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Properties/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
5 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Properties/PropertiesModule.cs:
--------------------------------------------------------------------------------
1 | using Prism.Ioc;
2 | using Prism.Modularity;
3 | using Prism.Navigation.Regions;
4 |
5 | namespace Plainion.GraphViz.Modules.Properties;
6 |
7 | public class PropertiesModule(IRegionManager regionManager) : IModule
8 | {
9 | public void RegisterTypes(IContainerRegistry containerRegistry)
10 | {
11 | regionManager.RegisterViewWithRegion(Viewer.Abstractions.RegionNames.SecondaryToolBox, typeof(OpenPropertiesView));
12 | regionManager.RegisterViewWithRegion(RegionNames.Properties, typeof(PropertiesView));
13 | }
14 |
15 | public void OnInitialized(IContainerProvider containerProvider) { }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Properties/PropertiesView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.Properties
4 | {
5 | partial class PropertiesView : UserControl
6 | {
7 | public PropertiesView(PropertiesViewModel model)
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Properties/RegionNames.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Modules.Properties
3 | {
4 | public static class RegionNames
5 | {
6 | public static readonly string Properties = "Region.Properties";
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.Properties/Resources/Properties.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Modules.Properties/Resources/Properties.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.SDK/Analysis1/AnalysisDocument.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Plainion.GraphViz.Modules.SDK.Analysis1
4 | {
5 | class AnalysisDocument
6 | {
7 | }
8 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.SDK/Analysis1/Analyzer.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 | using System.Threading.Tasks;
3 |
4 | namespace Plainion.GraphViz.Modules.SDK.Analysis1
5 | {
6 | class Analyzer
7 | {
8 | public Task AnalyzeAsync(string folderToAnalyze, CancellationToken token)
9 | {
10 | return Task.FromResult(new AnalysisDocument());
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.SDK/Analysis1/ConfigurationView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.SDK.Analysis1
4 | {
5 | partial class ConfigurationView : UserControl
6 | {
7 | public ConfigurationView(ConfigurationViewModel model)
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.SDK/Analysis1/ToolsMenuItem.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.SDK.Analysis1
4 | {
5 | partial class ToolsMenuItem : MenuItem
6 | {
7 | public ToolsMenuItem(ToolsMenuItemModel model)
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.SDK/Analysis1/ToolsMenuItemModel.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 | using Plainion.Prism.Interactivity.InteractionRequest;
3 | using Prism.Commands;
4 | using Prism.Mvvm;
5 |
6 | namespace Plainion.GraphViz.Modules.SDK.Analysis1
7 | {
8 | class ToolsMenuItemModel : BindableBase
9 | {
10 | public ToolsMenuItemModel()
11 | {
12 | StartAnalysisCommand = new DelegateCommand(OnStartAnalysis);
13 | StartAnalysisRequest = new InteractionRequest();
14 | }
15 |
16 | private void OnStartAnalysis()
17 | {
18 | var notification = new Notification();
19 | notification.Title = "Analysis SDK";
20 |
21 | StartAnalysisRequest.Raise(notification, c => { });
22 | }
23 |
24 | public ICommand StartAnalysisCommand { get; }
25 |
26 | public InteractionRequest StartAnalysisRequest { get; private set; }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.SDK/Plainion.GraphViz.Modules.SDK.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | true
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.SDK/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
5 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.SDK/ReadMe.md:
--------------------------------------------------------------------------------
1 |
2 | This project serves as a template for analysis modules added to Plainion.GraphViz.
3 |
4 | Assuming that multiple specific analysis will be hosted by a single module we
5 | suggest to use a separate folder for each analyis.
6 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.SDK/RegionNames.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Modules.SDK
3 | {
4 | static class RegionNames
5 | {
6 | public static readonly string SDKAnalysis1 = "Region.SDKAnalysis1";
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.VsProjects/AnalysisDocument.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Plainion.GraphViz.Modules.VsProjects
4 | {
5 | class AnalysisDocument
6 | {
7 | public IList Projects { get; } = new List();
8 | public IList FailedItems { get; } = new List();
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.VsProjects/ConfigurationView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Plainion.GraphViz.Modules.VsProjects
4 | {
5 | partial class ConfigurationView : UserControl
6 | {
7 | public ConfigurationView(ConfigurationViewModel model)
8 | {
9 | InitializeComponent();
10 |
11 | DataContext = model;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.VsProjects/FailedProject.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plainion.GraphViz.Modules.VsProjects
4 | {
5 | class FailedProject
6 | {
7 | public string FullPath { get; init; }
8 | public Exception Exception { get; init; }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.VsProjects/Plainion.GraphViz.Modules.VsProjects.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | true
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.VsProjects/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
5 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.VsProjects/RegionNames.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Modules.VsProjects
3 | {
4 | static class RegionNames
5 | {
6 | public static readonly string VsProjectDependencies = "Region.VsProjectDependencies";
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.VsProjects/ToolsMenuItem.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Prism.Navigation.Regions;
3 |
4 | namespace Plainion.GraphViz.Modules.VsProjects
5 | {
6 | [ViewSortHint(Viewer.Abstractions.RegionNames.AddIns + ".0050")]
7 | partial class ToolsMenuItem : MenuItem
8 | {
9 | public ToolsMenuItem(ToolsMenuItemModel model)
10 | {
11 | InitializeComponent();
12 |
13 | DataContext = model;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Modules.VsProjects/ToolsMenuItemModel.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 | using Plainion.Prism.Interactivity.InteractionRequest;
3 | using Prism.Commands;
4 | using Prism.Mvvm;
5 |
6 | namespace Plainion.GraphViz.Modules.VsProjects
7 | {
8 | class ToolsMenuItemModel : BindableBase
9 | {
10 | public ToolsMenuItemModel()
11 | {
12 | StartAnalysisCommand = new DelegateCommand(OnStartAnalysis);
13 | StartAnalysisRequest = new InteractionRequest();
14 | }
15 |
16 | private void OnStartAnalysis()
17 | {
18 | var notification = new Notification();
19 | notification.Title = "Visual Studio Project Dependencies";
20 |
21 | StartAnalysisRequest.Raise(notification, c => { });
22 | }
23 |
24 | public ICommand StartAnalysisCommand { get; }
25 |
26 | public InteractionRequest StartAnalysisRequest { get; private set; }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Tests/Plainion.GraphViz.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | true
6 | false
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Tests/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/FailedItem.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plainion.GraphViz.Viewer.Abstractions
4 | {
5 | [Serializable]
6 | public class FailedItem
7 | {
8 | public FailedItem( string item, string reason )
9 | {
10 | Item = item;
11 | FailureReason = reason;
12 | }
13 |
14 | public string Item { get; private set; }
15 |
16 | public string FailureReason { get; private set; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/NodeFocusedEvent.cs:
--------------------------------------------------------------------------------
1 | using Plainion.Graphs;
2 | using Prism.Events;
3 |
4 | namespace Plainion.GraphViz.Viewer.Abstractions
5 | {
6 | ///
7 | /// Raised when a node has been put into user focus.
8 | ///
9 | public class NodeFocusedEvent : PubSubEvent
10 | {
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/Plainion.GraphViz.Viewer.Abstractions.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/RegionNames.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Viewer.Abstractions;
3 |
4 | public static class RegionNames
5 | {
6 | public const string AddIns = "Region.AddIns";
7 |
8 | public const string PrimaryToolBox = "Region.ToolBox.Primary";
9 | public const string SecondaryToolBox = "Region.ToolBox.Secondary";
10 | }
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/Services/IDocumentLoader.cs:
--------------------------------------------------------------------------------
1 |
2 | using Plainion.GraphViz.Presentation;
3 |
4 | namespace Plainion.GraphViz.Viewer.Abstractions.Services
5 | {
6 | public interface IDocumentLoader
7 | {
8 | bool CanLoad(string filename);
9 |
10 | void Load(string filename);
11 |
12 | IGraphPresentation Read(string filename);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/Services/IPresentationCreationService.cs:
--------------------------------------------------------------------------------
1 | using Plainion.GraphViz.Presentation;
2 |
3 | namespace Plainion.GraphViz.Viewer.Abstractions.Services
4 | {
5 | public interface IPresentationCreationService
6 | {
7 | IGraphPresentation CreatePresentation(string dataRoot);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/Services/IStatusMessageService.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.ObjectModel;
2 |
3 | namespace Plainion.GraphViz.Viewer.Abstractions.Services
4 | {
5 | public interface IStatusMessageService
6 | {
7 | void Publish( StatusMessage message );
8 | ObservableCollection Messages { get; }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/Services/StatusMessage.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Viewer.Abstractions.Services
3 | {
4 | public class StatusMessage
5 | {
6 | public StatusMessage( string message )
7 | {
8 | Message = message;
9 | }
10 |
11 | public string Message { get; private set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/ViewModel/DefaultDomainModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Plainion.GraphViz.Presentation;
3 |
4 | namespace Plainion.GraphViz.Viewer.Abstractions.ViewModel
5 | {
6 | public class DefaultDomainModel : IDomainModel
7 | {
8 | private IGraphPresentation myPresentation;
9 |
10 | public IGraphPresentation Presentation
11 | {
12 | get { return myPresentation; }
13 | set
14 | {
15 | if (myPresentation != value)
16 | {
17 | myPresentation = value;
18 | PresentationChanged?.Invoke(null, EventArgs.Empty);
19 | }
20 | }
21 | }
22 |
23 | public event EventHandler PresentationChanged;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/ViewModel/IDomainModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using Plainion.GraphViz.Presentation;
4 |
5 | namespace Plainion.GraphViz.Viewer.Abstractions.ViewModel
6 | {
7 | ///
8 | /// Acts as major model and contains all relevant sub-models for the currently visualized graph
9 | ///
10 | public interface IDomainModel
11 | {
12 | IGraphPresentation Presentation { get; set; }
13 | event EventHandler PresentationChanged;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/ViewModel/NodeWithCaption.cs:
--------------------------------------------------------------------------------
1 | using Plainion.Graphs;
2 |
3 | namespace Plainion.GraphViz.Viewer.Abstractions.ViewModel
4 | {
5 | public class NodeWithCaption
6 | {
7 | public NodeWithCaption(Node node, string displayText)
8 | {
9 | Node = node;
10 | DisplayText = displayText;
11 | }
12 |
13 | public Node Node { get; private set; }
14 | public string DisplayText { get; private set; }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer.Abstractions/ViewModel/ViewModelBase.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Plainion.Prism.Mvvm;
3 |
4 | namespace Plainion.GraphViz.Viewer.Abstractions.ViewModel
5 | {
6 | public abstract class ViewModelBase : ValidatableBindableBase
7 | {
8 | protected ViewModelBase(IDomainModel model)
9 | {
10 | Contract.RequiresNotNull(model, nameof(model));
11 |
12 | Model = model;
13 | Model.PresentationChanged += OnPresentationChanged;
14 | }
15 |
16 | public IDomainModel Model { get; private set; }
17 |
18 | private void OnPresentationChanged(object sender, EventArgs e)
19 | {
20 | OnPresentationChanged();
21 | }
22 |
23 | protected virtual void OnPresentationChanged() { }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/GraphIcon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Viewer/GraphIcon.ico
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Plainion.GraphViz.Viewer.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ProjectFiles
5 |
6 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Plainion.GraphViz.Viewer.xaml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 |
3 | [assembly: SupportedOSPlatform("windows7.0")]
4 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/RegionNames.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Viewer
3 | {
4 | static class RegionNames
5 | {
6 | public static readonly string GraphViewer = "Region.GraphViewer";
7 | public static readonly string SettingsEditor = "Region.Settings.Editor";
8 | public static readonly string StatusMessagesViewer = "Region.StatusMessagesViewer";
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Resources/Export.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Viewer/Resources/Export.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Resources/GraphIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Viewer/Resources/GraphIcon.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Resources/Print.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Viewer/Resources/Print.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Resources/Refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Viewer/Resources/Refresh.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Resources/Settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Viewer/Resources/Settings.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Resources/StatusMessages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plainionist/Plainion.GraphViz/f288f91748f71731ee5dcd61b89f33ad714a93d6/src/Plainion.GraphViz.Viewer/Resources/StatusMessages.png
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Services/ConfigurationService.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Plainion.GraphViz.Viewer.Configuration;
3 |
4 | namespace Plainion.GraphViz.Viewer.Services
5 | {
6 | class ConfigurationService
7 | {
8 | public Config Config { get; private set; }
9 |
10 | public ConfigurationService()
11 | {
12 | Config = Config.LoadDefaults();
13 | }
14 |
15 | public void Update( string dataRoot )
16 | {
17 | Config = Config.Load( dataRoot );
18 |
19 | if( ConfigChanged != null )
20 | {
21 | ConfigChanged( this, EventArgs.Empty );
22 | }
23 | }
24 |
25 | public event EventHandler ConfigChanged;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Services/StatusMessageService.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.ObjectModel;
2 | using Plainion.GraphViz.Viewer.Abstractions.Services;
3 |
4 | namespace Plainion.GraphViz.Viewer.Services
5 | {
6 | class StatusMessageService : IStatusMessageService
7 | {
8 | public StatusMessageService()
9 | {
10 | Messages = new ObservableCollection();
11 | }
12 |
13 | public void Publish( StatusMessage message )
14 | {
15 | Messages.Add( message );
16 | }
17 |
18 | public ObservableCollection Messages
19 | {
20 | get;
21 | private set;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/ViewModels/ClusterWithCaption.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Viewer.ViewModels
3 | {
4 | class ClusterWithCaption
5 | {
6 | public string Id { get; set; }
7 | public string Caption { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/ViewModels/StatusMessagesViewModel.cs:
--------------------------------------------------------------------------------
1 | using Plainion.GraphViz.Viewer.Abstractions.Services;
2 | using Prism.Mvvm;
3 |
4 | namespace Plainion.GraphViz.Viewer.ViewModels
5 | {
6 | class StatusMessagesViewModel : BindableBase
7 | {
8 | public StatusMessagesViewModel(IStatusMessageService statusMessageService)
9 | {
10 | StatusMessageService = statusMessageService;
11 | }
12 |
13 | public IStatusMessageService StatusMessageService { get; private set; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Views/GraphViewer.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Plainion.GraphViz.Viewer.ViewModels;
3 |
4 | namespace Plainion.GraphViz.Viewer.Views
5 | {
6 | partial class GraphViewer : UserControl
7 | {
8 | public GraphViewer( GraphViewerModel model )
9 | {
10 | InitializeComponent();
11 |
12 | DataContext = model;
13 | }
14 |
15 | public GraphView GraphView { get { return myGraphView; } }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Views/SettingsEditor.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Plainion.GraphViz.Viewer.ViewModels;
3 |
4 | namespace Plainion.GraphViz.Viewer.Views
5 | {
6 | partial class SettingsEditor : UserControl
7 | {
8 | public SettingsEditor( SettingsEditorModel model )
9 | {
10 | InitializeComponent();
11 |
12 | DataContext = model;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Views/StatusMessagesView.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz.Viewer/Views/StatusMessagesView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Plainion.GraphViz.Viewer.ViewModels;
3 |
4 | namespace Plainion.GraphViz.Viewer.Views
5 | {
6 | partial class StatusMessagesView : UserControl
7 | {
8 | public StatusMessagesView( StatusMessagesViewModel model )
9 | {
10 | InitializeComponent();
11 |
12 | DataContext = model;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Dot/DotGraphHeader.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Dot
3 | {
4 | public class DotGraphHeader
5 | {
6 | public double Height { get; set; }
7 |
8 | public double Width { get; set; }
9 |
10 | public int Scale { get; set; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Dot/LayoutAlgorithm.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Dot
3 | {
4 | public enum LayoutAlgorithm
5 | {
6 | Hierarchy,
7 | Flow,
8 | ScalableForceDirectedPlancement,
9 | ForceDirectedPlacement,
10 | NeatSpring
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/HelpLink.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 | Help
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/HelpLink.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using System.Windows;
3 | using System.Windows.Controls;
4 |
5 | namespace Plainion.GraphViz
6 | {
7 | public partial class HelpLink : UserControl
8 | {
9 | public HelpLink()
10 | {
11 | InitializeComponent();
12 | }
13 |
14 | public static readonly DependencyProperty PageProperty = DependencyProperty.Register("Page", typeof(string), typeof(HelpLink));
15 |
16 | public string Page
17 | {
18 | get { return (string)GetValue(PageProperty); }
19 | set { SetValue(PageProperty, value); }
20 | }
21 |
22 | private void OnTipsClick(object sender, RoutedEventArgs e)
23 | {
24 | Process.Start(new ProcessStartInfo
25 | {
26 | FileName = "https://plainionist.github.io/Plainion.GraphViz/",
27 | UseShellExecute = true
28 | });
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/IGraphViewExport.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 |
3 | namespace Plainion.GraphViz
4 | {
5 | public interface IGraphViewExport
6 | {
7 | void ExportAsPng(Stream stream);
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/IGraphViewNavigation.cs:
--------------------------------------------------------------------------------
1 | using Plainion.Graphs;
2 |
3 | namespace Plainion.GraphViz
4 | {
5 | public interface IGraphViewNavigation
6 | {
7 | void NavigateTo(IGraphItem item);
8 | void HomeZoomPan();
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/ILayoutEngine.cs:
--------------------------------------------------------------------------------
1 | using Plainion.GraphViz.Presentation;
2 |
3 | namespace Plainion.GraphViz
4 | {
5 | public interface ILayoutEngine
6 | {
7 | void Relayout( IGraphPresentation presentation );
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Plainion.GraphViz.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | true
6 | latest
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/AbstractPropertySet.cs:
--------------------------------------------------------------------------------
1 | using Plainion.Graphs;
2 |
3 | namespace Plainion.GraphViz.Presentation
4 | {
5 | public abstract class AbstractPropertySet : NotifyPropertyChangedBase
6 | {
7 | protected AbstractPropertySet(string ownerId)
8 | {
9 | System.Contract.RequiresNotNull(ownerId);
10 |
11 | OwnerId = ownerId;
12 | }
13 |
14 | public string OwnerId { get; private set; }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/AbstractStyle.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Presentation
3 | {
4 | public abstract class AbstractStyle : AbstractPropertySet
5 | {
6 | private string myStyle;
7 |
8 | public AbstractStyle( string ownerId )
9 | : base( ownerId )
10 | {
11 | }
12 |
13 | // e.g. "solid"
14 | public string Style
15 | {
16 | get { return myStyle; }
17 | set { SetProperty( ref myStyle, value ); }
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/Bookmark.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Presentation
2 | {
3 | public class Bookmark
4 | {
5 | public Bookmark(string caption, byte[] state)
6 | {
7 | Contract.RequiresNotNullNotEmpty(caption, nameof(caption));
8 | Contract.RequiresNotNull(state, nameof(state));
9 |
10 | Caption = caption;
11 | State = state;
12 | }
13 |
14 | public string Caption { get; private set; }
15 | internal byte[] State { get; private set; }
16 | }
17 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/Caption.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Presentation
2 | {
3 | public class Caption : AbstractPropertySet
4 | {
5 | private string myDisplayText;
6 |
7 | public Caption(string ownerId, string label)
8 | : base(ownerId)
9 | {
10 | Label = string.IsNullOrEmpty(label) ? ownerId : label;
11 | DisplayText = Label;
12 | }
13 |
14 | public string Label { get; private set; }
15 |
16 | public string DisplayText
17 | {
18 | get { return myDisplayText; }
19 | set { SetProperty(ref myDisplayText, value); }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/CaptionModule.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plainion.GraphViz.Presentation
4 | {
5 | public class CaptionModule : PropertySetModule, ICaptionModule
6 | {
7 | public CaptionModule(Func defaultProvider)
8 | : base(defaultProvider)
9 | {
10 | }
11 |
12 | public ILabelConverter LabelConverter { get; set; }
13 |
14 | protected override void OnAdding(Caption item)
15 | {
16 | if (LabelConverter != null)
17 | {
18 | item.DisplayText = LabelConverter.Convert(item.Label);
19 | }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/EdgeLayout.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using System.Windows;
4 |
5 | namespace Plainion.GraphViz.Presentation
6 | {
7 | public class EdgeLayout : AbstractPropertySet
8 | {
9 | private IEnumerable myPoints;
10 | private Point myLabelPosition;
11 |
12 | public EdgeLayout( string ownerId )
13 | : base( ownerId )
14 | {
15 | Points = null;
16 | }
17 |
18 | public IEnumerable Points
19 | {
20 | get { return myPoints; }
21 | set { SetProperty( ref myPoints, value != null ? value.ToList() : Enumerable.Empty(), "Points" ); }
22 | }
23 |
24 | public Point LabelPosition
25 | {
26 | get { return myLabelPosition; }
27 | set { SetProperty( ref myLabelPosition, value, "LabelPosition" ); }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/EdgeStyle.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Media;
2 |
3 | namespace Plainion.GraphViz.Presentation
4 | {
5 | public class EdgeStyle : AbstractStyle
6 | {
7 | private Brush myColor;
8 |
9 | public EdgeStyle(string ownerId)
10 | : base(ownerId)
11 | {
12 | Color = Brushes.Black;
13 | Style = "solid";
14 | }
15 |
16 | public Brush Color
17 | {
18 | get { return myColor; }
19 | set { SetProperty(ref myColor, value); }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/GenericLabelConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 |
4 | namespace Plainion.GraphViz.Presentation
5 | {
6 | ///
7 | /// provides generic multi-pass label conversion
8 | ///
9 | public class GenericLabelConverter : ILabelConverter
10 | {
11 | private IEnumerable myConversionSteps;
12 |
13 | public GenericLabelConverter( IEnumerable steps )
14 | {
15 | myConversionSteps = steps.ToList();
16 | }
17 |
18 | public string Convert( string originalLabel )
19 | {
20 | var label = originalLabel;
21 |
22 | foreach( var step in myConversionSteps )
23 | {
24 | label = step.Convert( label );
25 | }
26 |
27 | return label;
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/GraphAttribute.cs:
--------------------------------------------------------------------------------
1 | using Plainion.Graphs;
2 | using Plainion.GraphViz.Dot;
3 |
4 | namespace Plainion.GraphViz.Presentation;
5 |
6 | public class GraphAttribute : NotifyPropertyChangedBase
7 | {
8 | private string myValue;
9 |
10 | ///
11 | /// Value can be null or empty string
12 | ///
13 | public GraphAttribute(LayoutAlgorithm algorithm, string name, string value)
14 | {
15 | System.Contract.RequiresNotNullNotEmpty(name);
16 |
17 | Algorithm = algorithm;
18 | Name = name;
19 | Value = value;
20 | }
21 |
22 | public LayoutAlgorithm Algorithm { get; }
23 | public string Name { get; }
24 | public string Value
25 | {
26 | get { return myValue; }
27 | set
28 | {
29 | var normalizedValue = string.IsNullOrWhiteSpace(value) ? null : value.Trim();
30 | SetProperty(ref myValue, normalizedValue);
31 | }
32 | }
33 | }
34 |
35 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/ICaptionModule.cs:
--------------------------------------------------------------------------------
1 |
2 | using Plainion.Graphs.Projections;
3 |
4 | namespace Plainion.GraphViz.Presentation
5 | {
6 | public interface ICaptionModule : IPropertySetModule
7 | {
8 | ILabelConverter LabelConverter { get; set; }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/IGraphAttributesModule.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Plainion.GraphViz.Dot;
3 |
4 | namespace Plainion.GraphViz.Presentation;
5 |
6 | public interface IGraphAttributesModule : IModule
7 | {
8 | ///
9 | /// Empty values are considered as "not set" and are filtered out.
10 | ///
11 | IEnumerable ItemsFor(LayoutAlgorithm algo);
12 | }
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/IGraphLayoutModule.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Plainion.Graphs;
3 | using Plainion.GraphViz.Dot;
4 |
5 | namespace Plainion.GraphViz.Presentation
6 | {
7 | public interface IGraphLayoutModule : IModule
8 | {
9 | LayoutAlgorithm Algorithm { get; set; }
10 |
11 | void Add(NodeLayout layout);
12 | void Add(EdgeLayout layout);
13 | void Clear();
14 |
15 | NodeLayout GetLayout(Node node);
16 | EdgeLayout GetLayout(Edge edge);
17 |
18 | void Set(IEnumerable nodeLayouts, IEnumerable edgeLayouts);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/IGraphPresentation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Plainion.Graphs;
3 | using Plainion.Graphs.Algorithms;
4 | using Plainion.Graphs.Projections;
5 |
6 | namespace Plainion.GraphViz.Presentation;
7 |
8 | public interface IGraphPresentation : IModuleRepository, IDisposable, IGraphProjections, ICaptionProvider
9 | {
10 | new IGraph Graph { get; set; }
11 |
12 | void InvalidateLayout();
13 |
14 | event EventHandler GraphVisibilityChanged;
15 |
16 | IGraphPresentation UnionWith(IGraphPresentation other, Func presentationCreator);
17 | }
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/IGraphTransformation.cs:
--------------------------------------------------------------------------------
1 | using Plainion.Graphs;
2 |
3 | namespace Plainion.GraphViz.Presentation;
4 |
5 | public interface IGraphTransformation
6 | {
7 | IGraph Transform(IGraph graph);
8 | }
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/ILabelConversionStep.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Presentation
3 | {
4 | public interface ILabelConversionStep
5 | {
6 | string Convert( string originalLabel );
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/ILabelConverter.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Presentation
3 | {
4 | ///
5 | /// Provides posibility for the application to do convertions on the label of a graph item.
6 | ///
7 | public interface ILabelConverter
8 | {
9 | string Convert( string originalLabel );
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/IModule.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Collections.Specialized;
3 |
4 | namespace Plainion.GraphViz.Presentation;
5 |
6 | public interface IModule : INotifyCollectionChanged
7 | {
8 | IEnumerable Items { get; }
9 |
10 | IModuleChangedObserver CreateObserver();
11 | IModuleChangedJournal CreateJournal();
12 | }
13 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/IModuleChangedJournal.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Plainion.GraphViz.Presentation
4 | {
5 | public interface IModuleChangedJournal : IModuleChangedObserver
6 | {
7 | IEnumerable Entries { get; }
8 |
9 | bool IsEmpty { get; }
10 |
11 | void Clear();
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/IModuleChangedObserver.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plainion.GraphViz.Presentation
4 | {
5 | public interface IModuleChangedObserver : IDisposable
6 | {
7 | event EventHandler ModuleChanged;
8 | IDisposable Mute();
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/IModuleRepository.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Presentation
3 | {
4 | public interface IModuleRepository
5 | {
6 | T GetModule();
7 |
8 | IPropertySetModule GetPropertySetFor() where T : AbstractPropertySet;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/INodeMaskModule.cs:
--------------------------------------------------------------------------------
1 |
2 | using Plainion.Graphs.Projections;
3 |
4 | namespace Plainion.GraphViz.Presentation;
5 |
6 | public interface INodeMaskModule : IModule
7 | {
8 | void Push(INodeMask mask);
9 |
10 | void Insert(int pos, INodeMask mask);
11 |
12 | void MoveDown(INodeMask item);
13 |
14 | void MoveUp(INodeMask item);
15 |
16 | void Remove(INodeMask item);
17 | }
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/IPropertySetModule.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.GraphViz.Presentation;
2 |
3 | public interface IPropertySetModule : IModule
4 | {
5 | bool Contains(string id);
6 | T TryGet(string id);
7 | T Get(string id);
8 |
9 | void Add(T item);
10 | void Remove(string id);
11 | void Clear();
12 | }
13 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/ITransformationModule.cs:
--------------------------------------------------------------------------------
1 | using Plainion.Graphs;
2 |
3 | namespace Plainion.GraphViz.Presentation
4 | {
5 | ///
6 | /// Allows transformation of the graph (e.g. folding of nodes)
7 | ///
8 | public interface ITransformationModule : IModule
9 | {
10 | void Add(IGraphTransformation transformation);
11 |
12 | void Clear();
13 |
14 | IGraph Graph { get; }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/PropertySetComparer.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Plainion.GraphViz.Presentation
4 | {
5 | class PropertySetComparer : IEqualityComparer
6 | {
7 | public bool Equals( AbstractPropertySet x, AbstractPropertySet y )
8 | {
9 | return x.OwnerId == y.OwnerId;
10 | }
11 |
12 | public int GetHashCode( AbstractPropertySet obj )
13 | {
14 | return obj.OwnerId.GetHashCode();
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/Selection.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 |
3 | namespace Plainion.GraphViz.Presentation
4 | {
5 | public class Selection : AbstractPropertySet
6 | {
7 | private bool myIsSelected;
8 |
9 | public Selection( string ownerId )
10 | : base( ownerId )
11 | {
12 | IsSelected = false;
13 | }
14 |
15 | public bool IsSelected
16 | {
17 | get { return myIsSelected; }
18 | set { SetProperty( ref myIsSelected, value, "IsSelected" ); }
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Presentation/ToolTipContent.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Plainion.GraphViz.Presentation
3 | {
4 | public class ToolTipContent : AbstractPropertySet
5 | {
6 | private object myContent;
7 |
8 | public ToolTipContent( string ownerId, object content )
9 | : base( ownerId )
10 | {
11 | Content = content;
12 | }
13 |
14 | public object Content
15 | {
16 | get { return myContent; }
17 | set { SetProperty( ref myContent, value, "Content" ); }
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Profile.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 |
4 | namespace Plainion.GraphViz
5 | {
6 | public class Profile : IDisposable
7 | {
8 | private readonly string myMessage;
9 | private readonly DateTime myStart;
10 |
11 | public Profile(string msg)
12 | {
13 | myMessage = msg;
14 | myStart = DateTime.UtcNow;
15 | }
16 |
17 | public void Dispose()
18 | {
19 | Debug.WriteLine(myMessage + ": " + (DateTime.UtcNow - myStart));
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Properties/AssemblyDefs.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 | using System.Runtime.Versioning;
3 |
4 | [assembly: InternalsVisibleTo("Plainion.GraphViz.Tests")]
5 | [assembly: SupportedOSPlatform("windows7.0")]
6 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // Auto-Generated by FAKE; do not edit
2 | //
3 | using System.Reflection;
4 |
5 | [assembly: AssemblyTitle("Plainion.GraphViz")]
6 | [assembly: AssemblyProduct("Plainion.GraphViz")]
7 | [assembly: AssemblyDescription("Plainion.GraphViz")]
8 | [assembly: AssemblyCopyright("Copyright @ 2025")]
9 | [assembly: AssemblyVersion("8.3")]
10 | [assembly: AssemblyFileVersion("8.3")]
11 | namespace System {
12 | internal static class AssemblyVersionInformation {
13 | internal const System.String AssemblyTitle = "Plainion.GraphViz";
14 | internal const System.String AssemblyProduct = "Plainion.GraphViz";
15 | internal const System.String AssemblyDescription = "Plainion.GraphViz";
16 | internal const System.String AssemblyCopyright = "Copyright @ 2025";
17 | internal const System.String AssemblyVersion = "8.3";
18 | internal const System.String AssemblyFileVersion = "8.3";
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/TipsPopup.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Windows;
3 | using System.Windows.Controls;
4 | using System.Windows.Documents;
5 |
6 | namespace Plainion.GraphViz
7 | {
8 | public partial class TipsPopup : UserControl
9 | {
10 | public TipsPopup()
11 | {
12 | InitializeComponent();
13 | }
14 |
15 | public IEnumerable Bullets
16 | {
17 | get { return ( IEnumerable )GetValue( BulletsProperty ); }
18 | set { SetValue( BulletsProperty, value ); }
19 | }
20 |
21 | public static readonly DependencyProperty BulletsProperty = DependencyProperty.Register( "Bullets", typeof( IEnumerable ), typeof( TipsPopup ) );
22 |
23 | private void OnTipsClick( object sender, RoutedEventArgs e )
24 | {
25 | var tooltip = ( ( ToolTip )( ( Hyperlink )sender ).ToolTip );
26 | tooltip.IsOpen = !tooltip.IsOpen;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/Plainion.GraphViz/Visuals/IVisualPicking.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using Plainion.Graphs;
3 |
4 | namespace Plainion.GraphViz.Visuals
5 | {
6 | public interface IVisualPicking
7 | {
8 | IGraphItem PickMousePosition();
9 | IGraphItem Pick( Point position );
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs.Algorithms.Tests/ModelExtensions.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using Plainion.Graphs.Projections;
3 |
4 | namespace Plainion.Graphs.Algorithms.Tests;
5 |
6 | public static class ModelExtensions
7 | {
8 | public static Node GetNode(this IGraphProjections self, string id) =>
9 | self.Graph.Nodes.Single(x => x.Id == id);
10 |
11 | public static Cluster GetCluster(this IGraphProjections self, string id) =>
12 | self.Graph.Clusters.Single(x => x.Id == id);
13 | }
14 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs.Algorithms.Tests/Plainion.Graphs.Algorithms.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs.Algorithms/AbstractAlgorithm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Plainion.Graphs.Projections;
3 |
4 | namespace Plainion.Graphs.Algorithms;
5 |
6 | public class AbstractAlgorithm
7 | {
8 | public AbstractAlgorithm(IGraphProjections projections)
9 | {
10 | Contract.RequiresNotNull(projections);
11 |
12 | Projections = projections;
13 | }
14 |
15 | protected IGraphProjections Projections { get; }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs.Algorithms/GetNodesOutsideCluster.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using Plainion.Graphs.Projections;
4 |
5 | namespace Plainion.Graphs.Algorithms;
6 |
7 | ///
8 | /// Returns all nodes which are not part of the given cluster.
9 | ///
10 | public class GetNodesOutsideCluster : AbstractAlgorithm
11 | {
12 | public GetNodesOutsideCluster(IGraphProjections projections)
13 | : base(projections)
14 | {
15 | }
16 |
17 | public IReadOnlyCollection Compute(string clusterId)
18 | {
19 | var graph = Projections.TransformedGraph;
20 |
21 | return graph.Nodes
22 | .Where(node => Projections.Picking.Pick(node))
23 | .Where(node => !graph.Clusters.Any(c => c.Nodes.Any(n => n.Id == node.Id)))
24 | .Select(node => node.Id)
25 | .ToList();
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs.Algorithms/ICaptionProvider.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.Graphs.Algorithms;
2 |
3 | public interface ICaptionProvider
4 | {
5 | string GetCaption(string id);
6 | }
7 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs.Algorithms/NullCaptionProvider.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.Graphs.Algorithms;
2 |
3 | public class NullCaptionProvider : ICaptionProvider
4 | {
5 | public string GetCaption(string id) => id;
6 | }
--------------------------------------------------------------------------------
/src/Plainion.Graphs.Algorithms/Plainion.Graphs.Algorithms.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 | latest
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs.Algorithms/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // Auto-Generated by FAKE; do not edit
2 | //
3 | using System.Reflection;
4 |
5 | [assembly: AssemblyTitle("Plainion.Graphs.Algorithms")]
6 | [assembly: AssemblyProduct("Plainion.GraphViz")]
7 | [assembly: AssemblyDescription("Plainion.GraphViz")]
8 | [assembly: AssemblyCopyright("Copyright @ 2025")]
9 | [assembly: AssemblyVersion("8.3")]
10 | [assembly: AssemblyFileVersion("8.3")]
11 | namespace System {
12 | internal static class AssemblyVersionInformation {
13 | internal const System.String AssemblyTitle = "Plainion.Graphs.Algorithms";
14 | internal const System.String AssemblyProduct = "Plainion.GraphViz";
15 | internal const System.String AssemblyDescription = "Plainion.GraphViz";
16 | internal const System.String AssemblyCopyright = "Copyright @ 2025";
17 | internal const System.String AssemblyVersion = "8.3";
18 | internal const System.String AssemblyFileVersion = "8.3";
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs.Algorithms/RemoveClusters.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using Plainion.Graphs.Projections;
3 |
4 | namespace Plainion.Graphs.Algorithms;
5 |
6 | ///
7 | /// Generates "hide mask" removing all visible clusters and their nodes.
8 | ///
9 | public class RemoveClusters : AbstractAlgorithm
10 | {
11 | public RemoveClusters(IGraphProjections projections)
12 | : base(projections)
13 | {
14 | }
15 |
16 | public INodeMask Compute()
17 | {
18 | var graph = Projections.TransformedGraph;
19 |
20 | var clusterNodes = graph.Nodes
21 | // do not process hidden nodes
22 | .Where(Projections.Picking.Pick)
23 | .Where(node => !graph.Clusters.Any(c => c.Nodes.Any(n => n.Id == node.Id)));
24 |
25 | var mask = new NodeMask();
26 | mask.IsShowMask = false;
27 | mask.Set(clusterNodes);
28 | mask.Label = "Nodes of clusters";
29 |
30 | return mask;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/Cluster.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Linq;
5 |
6 | namespace Plainion.Graphs;
7 |
8 | [Serializable]
9 | [DebuggerDisplay("{Id}")]
10 | public class Cluster : IGraphItem, IEquatable
11 | {
12 | public Cluster(string id, IEnumerable nodes)
13 | {
14 | Contract.RequiresNotNullNotEmpty(id, nameof(id));
15 |
16 | Id = id;
17 |
18 | Nodes = nodes.ToList();
19 | }
20 |
21 | public string Id { get; }
22 |
23 | public IReadOnlyCollection Nodes { get; }
24 |
25 | public bool Equals(Cluster other) => other != null && Id == other.Id;
26 | public override bool Equals(object obj) => Equals(obj as Cluster);
27 | public override int GetHashCode() => Id.GetHashCode();
28 | }
29 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/IGraph.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Plainion.Graphs;
4 |
5 | public interface IGraph
6 | {
7 | IReadOnlyCollection Nodes { get; }
8 | IReadOnlyCollection Edges { get; }
9 | IReadOnlyCollection Clusters { get; }
10 |
11 | Node FindNode(string nodeId);
12 | }
13 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/IGraphItem.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.Graphs;
2 |
3 | ///
4 | /// GraphItem are NOT equal just because the ID is equal. Examples: folding and handling only visible edges in folding
5 | /// -> do NOT implement IEquatable
6 | ///
7 | public interface IGraphItem
8 | {
9 | string Id { get; }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/Node.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 |
5 | namespace Plainion.Graphs;
6 |
7 | [Serializable]
8 | [DebuggerDisplay("{Id}")]
9 | public class Node : IGraphItem, IEquatable
10 | {
11 | public Node(string id)
12 | {
13 | Contract.RequiresNotNullNotEmpty(id, nameof(id));
14 |
15 | Id = id;
16 |
17 | In = [];
18 | Out = [];
19 | }
20 |
21 | public string Id { get; }
22 |
23 | public IList In { get; }
24 | public IList Out { get; }
25 |
26 | public bool Equals(Node other) => other != null && Id == other.Id;
27 | public override bool Equals(object obj) => Equals(obj as Node);
28 | public override int GetHashCode() => Id.GetHashCode();
29 | }
30 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/NotifyPropertyChangedBase.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.CompilerServices;
3 |
4 | namespace Plainion.Graphs;
5 |
6 | public class NotifyPropertyChangedBase : INotifyPropertyChanged
7 | {
8 | public event PropertyChangedEventHandler PropertyChanged;
9 |
10 | protected bool SetProperty(ref T storage, T value, [CallerMemberName] string propertyName = null)
11 | {
12 | if (Equals(storage, value))
13 | {
14 | return false;
15 | }
16 |
17 | storage = value;
18 |
19 | OnPropertyChanged(propertyName);
20 |
21 | return true;
22 | }
23 |
24 | protected virtual void OnPropertyChanged(string propertyName)
25 | {
26 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/Plainion.Graphs.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 | latest
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/Projections/IClusterFolding.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Plainion.Graphs.Projections;
4 |
5 | public interface IClusterFolding
6 | {
7 | IReadOnlyCollection Clusters { get; }
8 |
9 | IReadOnlyCollection GetNodes(string clusterId);
10 |
11 | void Add(string clusterId);
12 | void Add(IEnumerable clusterIds);
13 | void Remove(string clusterId);
14 | void Remove(IEnumerable clusterIds);
15 |
16 | void Toggle(string clusterId);
17 |
18 | string GetClusterNodeId(string clusterId);
19 | }
20 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/Projections/IGraphPicking.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.Graphs.Projections;
2 |
3 | ///
4 | /// Returns true if the given element is visible according to the masks.
5 | ///
6 | public interface IGraphPicking
7 | {
8 | bool Pick(Node node);
9 | bool Pick(Edge edge);
10 | bool Pick(Cluster cluster);
11 | }
12 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/Projections/IGraphProjections.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.Graphs.Projections;
2 |
3 | public interface IGraphProjections
4 | {
5 | IGraph Graph { get; }
6 | IGraph TransformedGraph { get; }
7 |
8 | IGraphPicking Picking { get; }
9 | IClusterFolding ClusterFolding { get; }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/Projections/INodeMask.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.Serialization;
3 |
4 | namespace Plainion.Graphs.Projections;
5 |
6 | public interface INodeMask : INotifyPropertyChanged, ISerializable
7 | {
8 | string Label { get; set; }
9 |
10 | ///
11 | /// Indicates whether the mask defines the nodes to show or to hide
12 | /// Default: true
13 | ///
14 | bool IsShowMask { get; set; }
15 |
16 | ///
17 | /// Defines whether mask is considered when rendering the scene or not.
18 | /// this approach avoid having two models (all masks, rendered masks) in sync.
19 | /// Default: true
20 | ///
21 | bool IsApplied { get; set; }
22 |
23 | bool? IsSet(Node node);
24 |
25 | void Invert(IGraph graph, IGraphPicking picking);
26 | }
27 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/Projections/NullGraphPicking.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.Graphs.Projections;
2 |
3 | ///
4 | /// Null-object pattern for .
5 | ///
6 | public class NullGraphPicking : IGraphPicking
7 | {
8 | public bool Pick(Node node) => true;
9 | public bool Pick(Edge edge) => true;
10 | public bool Pick(Cluster cluster) => true;
11 | }
12 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/Projections/NullGraphProjections.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plainion.Graphs.Projections;
4 |
5 | public class NullGraphProjections : IGraphProjections
6 | {
7 | public NullGraphProjections(IGraph graph)
8 | {
9 | Contract.RequiresNotNull(graph);
10 |
11 | Graph = graph;
12 | TransformedGraph = graph;
13 |
14 | Picking = new NullGraphPicking();
15 | ClusterFolding = new ClusterFolding(this);
16 | }
17 |
18 | public IGraph Graph { get; }
19 |
20 | public IGraph TransformedGraph { get; }
21 |
22 | public IGraphPicking Picking { get; }
23 |
24 | public IClusterFolding ClusterFolding { get; }
25 | }
--------------------------------------------------------------------------------
/src/Plainion.Graphs/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // Auto-Generated by FAKE; do not edit
2 | //
3 | using System.Reflection;
4 |
5 | [assembly: AssemblyTitle("Plainion.Graphs")]
6 | [assembly: AssemblyProduct("Plainion.GraphViz")]
7 | [assembly: AssemblyDescription("Plainion.GraphViz")]
8 | [assembly: AssemblyCopyright("Copyright @ 2025")]
9 | [assembly: AssemblyVersion("8.3")]
10 | [assembly: AssemblyFileVersion("8.3")]
11 | namespace System {
12 | internal static class AssemblyVersionInformation {
13 | internal const System.String AssemblyTitle = "Plainion.Graphs";
14 | internal const System.String AssemblyProduct = "Plainion.GraphViz";
15 | internal const System.String AssemblyDescription = "Plainion.GraphViz";
16 | internal const System.String AssemblyCopyright = "Copyright @ 2025";
17 | internal const System.String AssemblyVersion = "8.3";
18 | internal const System.String AssemblyFileVersion = "8.3";
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/SiblingsType.cs:
--------------------------------------------------------------------------------
1 | namespace Plainion.Graphs;
2 |
3 | public enum SiblingsType
4 | {
5 | None,
6 | Sources,
7 | Targets,
8 | Any
9 | }
10 |
--------------------------------------------------------------------------------
/src/Plainion.Graphs/Undirected/Node.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 |
5 | namespace Plainion.Graphs.Undirected;
6 |
7 | [DebuggerDisplay("{Id}")]
8 | public class Node : IGraphItem, IEquatable
9 | {
10 | public Node(string id)
11 | {
12 | System.Contract.RequiresNotNullNotEmpty(id);
13 |
14 | Id = id;
15 |
16 | Neighbors = [];
17 | }
18 |
19 | public string Id { get; }
20 |
21 | public IList Neighbors { get; }
22 |
23 | public bool Equals(Node other) => other != null && Id == other.Id;
24 | public override bool Equals(object obj) => Equals(obj as Node);
25 | public override int GetHashCode() => Id.GetHashCode();
26 | }
27 |
--------------------------------------------------------------------------------
/testData/DummyProject.Lib/AbstractBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace DummyProject.Lib
2 | {
3 | public abstract class AbstractBuilder : IBuilder
4 | {
5 | public abstract void Build();
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/testData/DummyProject.Lib/DummyProject.Lib.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0;net48
5 | 9.0
6 |
7 |
8 |
--------------------------------------------------------------------------------
/testData/DummyProject.Lib/IBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace DummyProject.Lib
2 | {
3 | public interface IBuilder
4 | {
5 | void Build();
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/testData/DummyProject/Builder.cs:
--------------------------------------------------------------------------------
1 | using DummyProject.Lib;
2 |
3 | namespace DummyProject
4 | {
5 | class Builder : AbstractBuilder
6 | {
7 | public override void Build()
8 | {
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/testData/DummyProject/Component.cs:
--------------------------------------------------------------------------------
1 | using DummyProject.Lib;
2 |
3 | namespace DummyProject
4 | {
5 | class Component
6 | {
7 | private readonly IBuilder myBuilder;
8 |
9 | public Component(IBuilder builder)
10 | {
11 | myBuilder = builder;
12 | }
13 |
14 | public void Init()
15 | {
16 | myBuilder.Build();
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/testData/DummyProject/DummyProject.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0;net48
5 | 9.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------