Beispiel #1
0
        private void ActionService_ActionSave(object sender, ActionSaveEventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(_html))
            {
                _synchronizationContext.Send(new SendOrPostCallback(o =>
                {
                    try
                    {
                        using (var dialog = new SaveFileDialog())
                        {
                            dialog.Filter = "Html files (.html)|*.html";
                            if (dialog.ShowDialog() == DialogResult.OK)
                            {
                                var fileName = dialog.FileName;

                                if (!string.IsNullOrWhiteSpace(fileName))
                                {
                                    if (File.Exists(fileName))
                                    {
                                        File.Delete(fileName);
                                    }

                                    _fileUtilities.CreateFile(fileName, (string)o);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }), _html);
            }
        }
        private async Task <string> Render(RenderProperties renderProperties, SolutionList solutionList, string titleText, string headerText, string outputPath = null, string indexFileName = null)
        {
            var createFile = !string.IsNullOrWhiteSpace(outputPath) && !string.IsNullOrWhiteSpace(indexFileName);

            var packageReferences = solutionList.GetPackageReferences(!renderProperties.IncludeDuplicates, !renderProperties.IncludePackageDependencies, "<br>");

            if (packageReferences.Any())
            {
                if (createFile && !Directory.Exists(outputPath))
                {
                    Directory.CreateDirectory(outputPath);
                }

                var tabPos = 0;

                string txt = string.Empty;
                RenderLine(ref txt, tabPos, "<html>");
                RenderLine(ref txt, ++tabPos, "<head>");
                RenderLine(ref txt, ++tabPos, $"<title>{titleText}</title>");

                if (renderProperties.PageAutomaticRefresh)
                {
                    RenderLine(ref txt, tabPos, "<meta http-equiv=\"refresh\" content=\"5\">");
                }

                RenderLine(ref txt, --tabPos, "</head>");
                RenderLine(ref txt, tabPos, "<body style=\"font-family: Verdana, Helvetica, sans-serif;font-size:8pt;\">");
                RenderLine(ref txt, ++tabPos, $"<h1>{headerText}</h1>");

                if (renderProperties.IncludeSolutionInformation)
                {
                    solutionList.ForEach(s =>
                    {
                        RenderLine(ref txt, tabPos, $"<b>{s.Name}</b><br>");
                        RenderLine(ref txt, tabPos, $"<ul>");

                        s.Projects.ForEach(p =>
                        {
                            RenderLine(ref txt, ++tabPos, $"<li>{p.Name}<br></li>");
                        });

                        RenderLine(ref txt, --tabPos, $"</ul>");
                        RenderLine(ref txt, tabPos, $"<br>");
                    });

                    RenderLine(ref txt, tabPos, $"<br>");
                }

                if (createFile)
                {
                    RenderLine(ref txt, tabPos, "<button onclick=\"createMarkdown();\">Markdown to clipboard</button>");
                }

                RenderLine(ref txt, tabPos, $"<table id=\"mainTable\" cellspacing=\"1\" cellpadding=\"3\" style=\"font-size:8pt;\">");

                txt += RenderTableHeaderRow(tabPos, renderProperties);
                txt += await RenderTableRows(tabPos, renderProperties, packageReferences, outputPath, createFile);

                RenderLine(ref txt, tabPos--, "</table>");

                if (createFile)
                {
                    txt += AddMarkdownScript(tabPos);
                    txt += "<textarea type=\"text\" id=\"hiddenInput\" style=\"position:absolute;left:-100px;top:-100px;width:10px;height:10px;\"></textarea>";
                }

                RenderLine(ref txt, tabPos--, "</body>");
                RenderLine(ref txt, tabPos, "</html>");

                if (createFile)
                {
                    var file = Path.Combine(outputPath, indexFileName);
                    await _fileUtilities.CreateFile(file, txt);
                }

                return(txt);
            }

            return(null);
        }