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