コード例 #1
0
        private void ExecuteRenderAndDownloadDependenciesAsImage(string fileType)
        {
            var graph = GraphVizHelper.CreateDependencyGraph(this.currentConnectorViewModel.DependenciesService.DependenciesModel, Properties.Settings.Default.maxLineLength);

            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            //saveFileDialog1.Filter = "Png Image|*.png|Svg Image|*.svg";
            saveFileDialog1.Filter = (fileType == "png" ? "Png Image|*.png" : "Svg Image|*.svg");
            saveFileDialog1.Title  = "Save dependencies as... (image)";
            bool?result = saveFileDialog1.ShowDialog();

            if (result == true && !string.IsNullOrWhiteSpace(saveFileDialog1.FileName))
            {
                IRenderer renderer = new Renderer(Properties.Settings.Default.graphvizPath);

                using (Stream fileStream = File.Create(saveFileDialog1.FileName))
                {
                    Task.Run(async() =>
                    {
                        await renderer.RunAsync(graph,
                                                fileStream,
                                                RendererLayouts.Dot,
                                                (fileType == "png" ? RendererFormats.Png : RendererFormats.Svg),
                                                CancellationToken.None);
                    }).Wait();
                }
            }
        }
コード例 #2
0
ファイル: ConsoleApp.cs プロジェクト: roberlamerma/depviz
        private void DependenciesModelChangedHandler(object sender, EventArgs e)
        {
            try
            {
                var graph = GraphVizHelper.CreateDependencyGraph(this.DependenciesService.DependenciesModel, Properties.Settings.Default.maxLineLength);

                IRenderer renderer = new Renderer(Properties.Settings.Default.graphvizPath);

                using (Stream fileStream = File.Create(this.ImagePath))
                {
                    Task.Run(async() =>
                    {
                        await renderer.RunAsync(graph,
                                                fileStream,
                                                RendererLayouts.Dot,
                                                RendererFormats.Png,
                                                CancellationToken.None);
                    }).Wait();
                }
            }
            catch (Exception ex)
            {
                this.Logger.Error(string.Format(@"Got an error while trying to generate the image '{0}'", this.ImagePath));
                this.Logger.Debug(ex.StackTrace);
            }
        }
コード例 #3
0
        public MainWindow(IKernel ioc)
        {
            this.Logger = ioc.Get <ILog>();
            Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;

            //if (!Directory.Exists(ConfigurationManager.AppSettings["graphvizPath"]))
            //{
            //    var error = string.Format("Could not find the given GraphViz directory: '{0}'", ConfigurationManager.AppSettings["graphvizPath"]);
            //    this.Logger.Fatal(error);

            //    var messageError = string.Format("{0}.{1}{2} Check the path on this config file: '{3}.conf'", error, Environment.NewLine, Environment.NewLine, Assembly.GetEntryAssembly().Location);
            //    MessageBox.Show(messageError, "Fatal Error", MessageBoxButton.OK, MessageBoxImage.Error);
            //    Application.Current.Shutdown();
            //}

            //GraphVizPathSelector graphVizPathSelectorUserControl = null;

            if (string.IsNullOrWhiteSpace(Properties.Settings.Default.graphvizPath) || !Directory.Exists(Properties.Settings.Default.graphvizPath))
            {
                this.ShowGraphVizPathSelector();
            }
            else
            {
                try
                {
                    GraphVizHelper.TryGraphvizPath(Properties.Settings.Default.graphvizPath);
                } catch (Exception)
                {
                    this.ShowGraphVizPathSelector();
                }
            }

            if (this.GraphVizPathSelectorUserControl != null && ((GraphVizPathSelectorViewModel)this.GraphVizPathSelectorUserControl.DataContext).CloseApplication)
            {
                Application.Current.Shutdown();
            }

            this.DataContext = new MainWindowViewModel(ioc);
            this.InitializeComponent();
        }
コード例 #4
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != null && value is Dictionary <int, DependencyItem> )
            {
                var graph = GraphVizHelper.CreateDependencyGraph((Dictionary <int, DependencyItem>)value, Properties.Settings.Default.maxLineLength);

                using (MemoryStream memStream = new MemoryStream())
                {
                    IRenderer renderer = new Renderer(Properties.Settings.Default.graphvizPath);

                    // We wait synchronously for the memStream to be filled up
                    Task.Run(async() => { await renderer.RunAsync(graph, memStream, RendererLayouts.Dot, RendererFormats.Png, CancellationToken.None); }).Wait();

                    BitmapImage img = new BitmapImage();
                    img.BeginInit();
                    img.CacheOption  = BitmapCacheOption.OnLoad;
                    img.StreamSource = memStream;
                    img.EndInit();
                    return(img);
                }
            }
            return(null);
        }
コード例 #5
0
        private void ExecuteSetPath(object obj)
        {
            using (var fbd = new FolderBrowserDialog())
            {
                fbd.ShowNewFolderButton = false;
                DialogResult result = fbd.ShowDialog();

                if (result == DialogResult.OK && Directory.Exists(fbd.SelectedPath))
                {
                    try
                    {
                        GraphVizHelper.TryGraphvizPath(fbd.SelectedPath);

                        this.GraphVizPath = fbd.SelectedPath;

                        ((Window)obj).Close();
                    }
                    catch (Exception)
                    {
                        this.ErrorMessage = string.Format(@"The path '{0}' is not a valid Graphviz path. Remember to select the 'bin' directory (i.g. 'C:\Program Files (x86)\Graphviz2.38\bin')", fbd.SelectedPath);
                    }
                }
            }
        }