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(); } } }
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); } }
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(); }
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); }
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); } } } }