public static T get_CommandBarControl <T>(this DTE2 dte2, string menuName) where T : CommandBarControl { var menuBarCommandBar = dte2.get_CommandBar("MenuBar"); var menu = menuBarCommandBar.Controls[menuName]; if (menu is T) { return((T)menu); } return(default(T)); }
public static T get_CommandBarMenu <T>(this DTE2 dte2, string menuName) where T : CommandBarControl { var menuBarCommandBar = dte2.get_CommandBar("MenuBar"); //if (menuBarCommandBar.Controls.ContainsKey(menuName)) try { var menu = menuBarCommandBar.Controls[menuName]; if (menu is T) { return((T)menu); } } catch { } return(default(T)); }
public static CommandBarPopup add_TopMenu(this DTE2 dte, string text = "New Top Menu", string addAfterMenu = "Help") { var o2Timer = new O2Timer("Adding TopMenu").start(); if (dte.isNull()) { "[VS_Menus_ExtensionMethods][add_TopMenu] DTE object is null, so can't create Top Menu".error(); return(null); } var existingMenu = dte.get_Menu(text); if (existingMenu.notNull()) { "[VS_Menus_ExtensionMethods] add_TopMenu: there was already a menu called '{0}' so returning it".debug(text); return(existingMenu); } "[VS_Menus_ExtensionMethods] Creating new Top Menu called: {0}".info(text); //dynamic commandBars = dte.CommandBars; //var menuCommandBar = commandBars["MenuBar"]; //get_CommandBarMenu //var position = (commandBars[addAfterMenu].Parent as CommandBarControl).Index; //The two lines above (using dynamic) has much worse performace then the ones below (from 1.8 sec to .1 sec) var menuCommandBar = dte.get_CommandBar("MenuBar"); var position = dte.get_CommandBarMenu(addAfterMenu).Index; var newMenu = (CommandBarPopup)menuCommandBar.Controls.Add(MsoControlType.msoControlPopup, System.Type.Missing, System.Type.Missing, ++position, true); newMenu.Caption = text; newMenu.Enabled = true; o2Timer.stop(); return(newMenu); }