示例#1
0
        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;
                }
            }
        }
示例#2
0
        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;
        }
示例#3
0
        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);
        }