private void ActivateDemo(IGraphDemo demo) { if (demo != null) { var stopWatch = new Stopwatch(); stopWatch.Start(); try { string dot; pictureBox.Image = demo.DrawGraph(out dot); tbDot.Text = dot; } catch (Exception ex) { MessageBox.Show( "Error on generating graph : " + ex.Message + " Please ensure that graphviz is installed, and that the configured location is correct.", "FluentDot.Samples", MessageBoxButtons.OK, MessageBoxIcon.Warning); } finally { stopWatch.Stop(); TimeSpan elapsedTime = stopWatch.Elapsed; timeStatusLabel.Text = String.Format("Time taken : {0}ms ({1} seconds)", elapsedTime.TotalMilliseconds, elapsedTime.TotalSeconds); timeStatusLabel.Visible = true; } } }
private bool ExportDemo(IGraphDemo demo, string exportDirectory) { bool updated = false; Console.WriteLine("Exporting demo : {0}.", demo.GetType().Name); var graphExpression = demo.GetGraph(); if (!Directory.Exists(exportDirectory)) { Directory.CreateDirectory(exportDirectory); } string imageDirectory = Path.Combine(exportDirectory, "Images"); if (!Directory.Exists(imageDirectory)) { Directory.CreateDirectory(imageDirectory); } string exportImageFile = Path.Combine(imageDirectory, "Demo" + demo.GetType().Name + ".png"); string exportTemplateFile = Path.Combine(exportDirectory, "Demo" + demo.GetType().Name + ".wiki"); var dotFile = Path.GetTempFileName(); var imageFile = Path.GetTempFileName(); var templateFile = Path.GetTempFileName(); try { string dot = graphExpression.GenerateDot(); string codeFile = Path.GetFullPath(string.Format(@"..\..\..\FluentDot.Samples.Core\Demos\{0}\{1}.cs", demo.Type, demo.GetType().Name)); graphExpression.Save(x => x.ToFile(imageFile).UsingFormat(OutputFormat.PNG)); WriteTemplate(templateFile, exportImageFile, demo, dot, GetCode(codeFile)); if ((ReplaceImage(imageFile, exportImageFile) | (ReplaceFile(templateFile, exportTemplateFile)))) { updated = true; } } finally { SafeDelete(dotFile); SafeDelete(imageFile); SafeDelete(templateFile); } return updated; }
private void WriteTemplate(string templateFile, string imagePath, IGraphDemo demo, string dot, string code) { // Start with our template string template = File.ReadAllText("Template.md"); template = template.Replace("${DemoName}", demo.FriendlyName); template = template.Replace("${DemoDescription}", demo.Description); template = template.Replace("${Dot}", dot); template = template.Replace("${ImageFileName}", Path.GetFileName(imagePath)); template = template.Replace("${Code}", code); File.WriteAllText(templateFile, template); }