public static RibbonPanelSource AddRibbonPanel(string tabAlias, string panelAlias, string panelText) { var fileName = Application.GetSystemVariable("MENUNAME") as string; var custSect = new CustomizationSection(fileName); RibbonRoot ribbonRoot = custSect.MenuGroup.RibbonRoot; RibbonPanelSource ribbonPanel = ribbonRoot.FindPanelWithAlias(panelAlias); if (ribbonPanel != null) { return(null); } ribbonPanel = new RibbonPanelSource(ribbonRoot); ribbonPanel.Aliases.Add(panelAlias); ribbonPanel.Name = panelAlias; ribbonPanel.Text = panelText; ribbonPanel.Items.Clear(); ribbonRoot.RibbonPanelSources.Add(ribbonPanel); RibbonTabSource tab = ribbonRoot.FindTabWithAlias(tabAlias); var panelRef = new RibbonPanelSourceReference(tab); panelRef.PanelId = ribbonPanel.ElementID; tab.Items.Add(panelRef); return(ribbonPanel); }
public static bool RemoveRibbonPanel(string tabAlias, string panelAlias, PluginCommandButton[] buttons) { var fileName = Application.GetSystemVariable("MENUNAME") as string; var custSection = new CustomizationSection(fileName); RibbonRoot ribbonRoot = custSection.MenuGroup.RibbonRoot; RibbonPanelSource ribbonPanel = ribbonRoot.FindPanelWithAlias(panelAlias); if (ribbonPanel == null) { return(false); } // Remove command and split buttons, and panel row var row = ribbonPanel.Items[0] as RibbonRow; var splitButton = row.Items[0] as RibbonSplitButton; splitButton.Items.Clear(); splitButton.SetIsModified(); row.Items.Clear(); row.SetIsModified(); ribbonPanel.Items.Clear(); ribbonPanel.SetIsModified(); // Remove the reference to panel from Add-ins tab RibbonTabSource tab = ribbonRoot.FindTabWithAlias(tabAlias); RemoveRibbonPanelSourceReference(tab, ribbonPanel.ElementID); RemoveMacrosOfCommandButtons(custSection, buttons); ribbonRoot.RibbonPanelSources.Remove(ribbonPanel); ribbonRoot.SetIsModified(); custSection.Save(); return(true); }