/// <summary> /// Initialize setting. Only call after Repository is known. /// <para/>- Tag ( /// <para/>- Model /// <para/>- Settings /// updated /// </summary> /// <returns></returns> bool InitializeSettings() { // default _addinType = AddinType.Sql; _addinTabName = TabulatorSql; if ((string)Tag != TabulatorSql) { _addinType = AddinType.Script; _addinTabName = TabulatorScript; } // set title lblTitle.Text = _addinTabName; // Tab Pages for *.sql queries update // Make sure the Container is initialized if (components == null) { components = new System.ComponentModel.Container(); } // the sql tabulators might already be available if (_sqlTabCntrls == null) { _sqlTabCntrls = new SqlTabPagesCntrl(Model, AddinSettings, components, tabControlSql, txtSearchTerm, _newTabFromRecentToolStripMenuItem, _loadTabFromRecentToolStripMenuItem, _addinTabName); } if (tabControlSql.TabPages.Count == 0) { // first tab with Element Template _sqlTabCntrls.AddTab(SqlTemplates.GetTemplateText(SqlTemplates.SqlTemplateId.ElementTemplate)); } // run for SQL / Query if (_addinType == AddinType.Sql) { // don't show Script container splitContainer.Panel2Collapsed = true; // don't show Menu item LoadScripts //loadStandardScriptsToolStripMenuItem.Visible = false; } else // run for Script (includes SQL / Query) { float distance = splitContainer.Height * (float)0.5; try { splitContainer.SplitterDistance = (int)distance; } catch // suppress any error, use default SplitterDistance { } // available script updates ReloadScripts(); } return(true); }
private static DataDestination GetMarkdownDestinationForType(AddinType type) { if (type == AddinType.Addin) { return(DataDestination.MarkdownForAddins); } else if (type == AddinType.Recipe) { return(DataDestination.MarkdownForRecipes); } else { throw new ArgumentException($"Unable to determine the DataDestination for type {type}"); } }
private int Install(AddinType type) { switch (type) { case AddinType.Excel16: return(VSTOInstall("https://dm-clickonce.prod.cu.edu/Excel2016/ExcelAddin2016DMOPRD.vsto")); case AddinType.Outlook16: return(VSTOInstall("https://dm-clickonce.prod.cu.edu/Outlook2016/OutlookIntegration2016DMOPRD.vsto")); case AddinType.Word16: return(VSTOInstall("https://dm-clickonce.prod.cu.edu/Word2016/WordAddin2016DMOPRD.vsto")); } return(991); }
private int Uninstall(AddinType type) { switch (type) { // I can always have the addin names as a static class down the road if i don't want them direct like this case AddinType.Excel16: return(VSTOUninstall(UninstallString("Hyland Excel"))); case AddinType.Outlook16: return(VSTOUninstall(UninstallString("OutlookIntegration"))); case AddinType.Word16: return(VSTOUninstall(UninstallString("ExcelAddin"))); } return(991); }
private IconAnalysisResult AnalyzeEmbeddedIcon(byte[] embeddedIcon, AddinType addinType, byte[] recommendedIcon, IEnumerable <KeyValuePair <AddinType, byte[]> > fancyIcons) { // Check if the icon matches the recommended Cake-Contrib icon if (Misc.ByteArrayCompare(embeddedIcon, recommendedIcon)) { return(IconAnalysisResult.EmbeddedCakeContrib); } // Check if the icon matches one of the "fancy" icons of the appropriate type foreach (var fancyIcon in fancyIcons) { if (fancyIcon.Key.IsFlagSet(addinType) && Misc.ByteArrayCompare(embeddedIcon, fancyIcon.Value)) { return(IconAnalysisResult.EmbeddedFancyCakeContrib); } } // The icon doesn't match any of the recommended icons return(IconAnalysisResult.EmbeddedCustom); }
private void GenerateExcelWorksheet(IEnumerable <AddinMetadata> addins, CakeVersion cakeVersion, AddinType type, string caption, ExcelPackage excel) { var filteredAddins = addins .Where(addin => addin.Type.IsFlagSet(type)) .ToArray(); var reportColumns = Constants.REPORT_COLUMNS .Where(column => column.Destination.HasFlag(DataDestination.Excel)) .Where(column => column.ApplicableTo.HasFlag(type)) .Select((data, index) => new { Index = index, Data = data }) .ToArray(); // Create the worksheet var worksheet = excel.Workbook.Worksheets.Add(caption); // Header row foreach (var column in reportColumns) { worksheet.Cells[1, column.Index + 1].Value = column.Data.Header; } // One row per addin var row = 1; foreach (var addin in filteredAddins.OrderBy(a => a.Name)) { row++; foreach (var column in reportColumns) { if (column.Data.ApplicableTo.HasFlag(addin.Type)) { var cell = worksheet.Cells[row, column.Index + 1]; cell.Value = column.Data.GetContent(addin); var color = column.Data.GetCellColor(addin, cakeVersion); if (color != Color.Empty) { cell.Style.Fill.PatternType = ExcelFillStyle.Solid; cell.Style.Fill.BackgroundColor.SetColor(color); } var hyperlink = column.Data.GetHyperLink(addin); if (hyperlink != null) { cell.Hyperlink = hyperlink; cell.StyleName = "HyperLink"; } } } } // Freeze the top row and first column worksheet.View.FreezePanes(2, 2); // Setup auto-filter worksheet.Cells[1, 1, 1, reportColumns.Length].AutoFilter = true; // Format the worksheet worksheet.Row(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; if (filteredAddins.Any()) { foreach (var column in reportColumns) { worksheet.Cells[2, column.Index + 1, row, column.Index + 1].Style.HorizontalAlignment = column.Data.Align; } } // Resize columns worksheet.Cells[1, 1, row, reportColumns.Length].AutoFitColumns(); // Make columns a little bit wider to account for the filter "drop-down arrow" button foreach (var column in reportColumns) { worksheet.Column(column.Index + 1).Width += 2.14; } }
private string GenerateMarkdown(DiscoveryContext context, IEnumerable <AddinMetadata> addins, CakeVersion cakeVersion, AddinType type) { var filteredAddins = addins .Where(addin => string.IsNullOrEmpty(addin.AnalysisResult.Notes)) .Where(addin => addin.Type == type) .ToArray(); var reportColumns = Constants.REPORT_COLUMNS .Where(column => column.Destination.HasFlag(GetMarkdownDestinationForType(type))) .Where(column => column.ApplicableTo.HasFlag(type)) .Select((data, index) => new { Index = index, Data = data }) .ToArray(); var now = DateTime.UtcNow; var markdown = new StringBuilder(); if (cakeVersion != null) { markdown.AppendLine($"# Audit Report for Cake {cakeVersion.Version}"); } else { markdown.AppendLine("# Audit Report"); } markdown.AppendLine(); markdown.AppendLine($"This report was generated by Cake.AddinDiscoverer {context.Version} on {now.ToLongDateString()} at {now.ToLongTimeString()} GMT"); markdown.AppendLine(); if (type == AddinType.Addin) { markdown.AppendLine("- The `Cake Core Version` and `Cake Common Version` columns show the version referenced by a given addin"); markdown.AppendLine($"- The `Cake Core IsPrivate` and `Cake Common IsPrivate` columns indicate whether the references are marked as private. In other words, we are looking for references with the `PrivateAssets=All` attribute like in this example: `<PackageReference Include=\"Cake.Common\" Version=\"{cakeVersion.Version}\" PrivateAssets=\"All\" />`"); markdown.AppendLine($"- The `Framework` column shows the .NET framework(s) targeted by a given addin. Addins should target {cakeVersion.RequiredFramework} at a minimum, and they can also optionally multi-target {string.Concat(" or ", cakeVersion.OptionalFrameworks)}"); } markdown.AppendLine(); if (type == AddinType.Addin) { markdown.AppendLine("## Statistics"); markdown.AppendLine(); var addinsReferencingCakeCore = filteredAddins.Where(addin => addin.Type == AddinType.Addin & addin.AnalysisResult.CakeCoreVersion != null); markdown.AppendLine($"- Of the {addinsReferencingCakeCore.Count()} audited addins that reference Cake.Core:"); markdown.AppendLine($" - {addinsReferencingCakeCore.Count(addin => addin.AnalysisResult.CakeCoreVersion.IsUpToDate(cakeVersion.Version))} are targeting the desired version of Cake.Core"); markdown.AppendLine($" - {addinsReferencingCakeCore.Count(addin => addin.AnalysisResult.CakeCoreIsPrivate)} have marked the reference to Cake.Core as private"); markdown.AppendLine(); var addinsReferencingCakeCommon = filteredAddins.Where(addin => addin.Type == AddinType.Addin & addin.AnalysisResult.CakeCommonVersion != null); markdown.AppendLine($"- Of the {addinsReferencingCakeCommon.Count()} audited addins that reference Cake.Common:"); markdown.AppendLine($" - {addinsReferencingCakeCommon.Count(addin => addin.AnalysisResult.CakeCommonVersion.IsUpToDate(cakeVersion.Version))} are targeting the desired version of Cake.Common"); markdown.AppendLine($" - {addinsReferencingCakeCommon.Count(addin => addin.AnalysisResult.CakeCommonIsPrivate)} have marked the reference to Cake.Common as private"); markdown.AppendLine(); } // Title markdown.AppendLine("## Addins"); markdown.AppendLine(); // Header row 1 foreach (var column in reportColumns) { markdown.Append($"| {column.Data.Header} "); } markdown.AppendLine("|"); // Header row 2 foreach (var column in reportColumns) { markdown.Append("| "); if (column.Data.Align == ExcelHorizontalAlignment.Center) { markdown.Append(":"); } markdown.Append("---"); if (column.Data.Align == ExcelHorizontalAlignment.Right || column.Data.Align == ExcelHorizontalAlignment.Center) { markdown.Append(":"); } markdown.Append(" "); } markdown.AppendLine("|"); // One row per addin foreach (var addin in filteredAddins.OrderBy(addin => addin.Name)) { foreach (var column in reportColumns) { if (column.Data.ApplicableTo.HasFlag(addin.Type)) { var content = column.Data.GetContent(addin); var hyperlink = column.Data.GetHyperLink(addin); var color = column.Data.GetCellColor(addin, cakeVersion); var emoji = string.Empty; if (color == Color.LightGreen) { emoji = Constants.GREEN_EMOJI; } else if (color == Color.Red) { emoji = Constants.RED_EMOJI; } else if (color == Color.Gold) { emoji = Constants.YELLOW_EMOJI; } if (hyperlink == null) { markdown.Append($"| {content} {emoji}"); } else { markdown.Append($"| [{content}]({hyperlink.AbsoluteUri}) {emoji}"); } } else { markdown.Append($"| "); } } markdown.AppendLine("|"); } return(markdown.ToString()); }
public ArrayList GetInstalledAddins(string domain, AddinType type) { if (type == AddinType.All) { if (allSetupInfos != null) return allSetupInfos; } else if (type == AddinType.Addin) { if (addinSetupInfos != null) return addinSetupInfos; } else { if (rootSetupInfos != null) return rootSetupInfos; } InternalCheck (domain); using (fileDatabase.LockRead ()) { return InternalGetInstalledAddins (domain, null, type); } }
ArrayList InternalGetInstalledAddins(string domain, string idFilter, AddinType type) { if (allSetupInfos == null) { ArrayList alist = new ArrayList (); // Global add-ins are valid for any private domain if (domain != AddinDatabase.GlobalDomain) FindInstalledAddins (alist, AddinDatabase.GlobalDomain, idFilter); FindInstalledAddins (alist, domain, idFilter); if (idFilter != null) return alist; allSetupInfos = alist; } if (type == AddinType.All) return FilterById (allSetupInfos, idFilter); if (type == AddinType.Addin) { if (addinSetupInfos == null) { addinSetupInfos = new ArrayList (); foreach (Addin adn in allSetupInfos) if (!adn.Description.IsRoot) addinSetupInfos.Add (adn); } return FilterById (addinSetupInfos, idFilter); } else { if (rootSetupInfos == null) { rootSetupInfos = new ArrayList (); foreach (Addin adn in allSetupInfos) if (adn.Description.IsRoot) rootSetupInfos.Add (adn); } return FilterById (rootSetupInfos, idFilter); } }
ArrayList InternalGetInstalledAddins(string domain, AddinType type) { return InternalGetInstalledAddins (domain, null, type); }
/// <summary> /// Initialize setting. Only call after /// <para/>- Tag ( /// <para/>- Model /// <para/>- Settings /// updated /// </summary> /// <returns></returns> bool InitializeSettings() { // default _addinType = AddinType.Sql; _addinTabName = TabulatorSql; if ((string) Tag != TabulatorSql) { _addinType = AddinType.Script; _addinTabName = TabulatorScript; } // set title lblTitle.Text = _addinTabName; // Tab Pages for *.sql queries update // Make sure the Container is initialized if (components == null) { components = new System.ComponentModel.Container(); } // the sql tabulators might already be available if (_sqlTabCntrls == null) { _sqlTabCntrls = new SqlTabPagesCntrl(Model, AddinSettings, components, tabControlSql, txtSearchTerm, _newTabFromRecentToolStripMenuItem, _loadTabFromRecentToolStripMenuItem, _addinTabName); } if (tabControlSql.TabPages.Count == 0) { // first tab with Element Template _sqlTabCntrls.AddTab(SqlTemplates.GetTemplateText(SqlTemplates.SqlTemplateId.ElementTemplate)); } // run for SQL / Query if (_addinType == AddinType.Sql) { // don't show Script container splitContainer.Panel2Collapsed = true; // don't show Menu item LoadScripts //loadStandardScriptsToolStripMenuItem.Visible = false; } else // run for Script (includes SQL / Query) { splitContainer.SplitterDistance = 330; // available script updates ReloadScripts(); } return true; }