private static EnvDTE80.CodeClass2 GetCodeClass(EnvDTE.CodeElements codeElements, string className) { if (codeElements != null) { foreach (EnvDTE.CodeElement item in codeElements) { if (item.Kind == EnvDTE.vsCMElement.vsCMElementClass) { EnvDTE80.CodeClass2 codeClass = item as EnvDTE80.CodeClass2; if (codeClass != null && codeClass.Name == className) { return(codeClass); } } else if (item.Kind == EnvDTE.vsCMElement.vsCMElementNamespace) { EnvDTE80.CodeClass2 codeClass = GetCodeClass(((EnvDTE.CodeNamespace)item).Members, className); if (codeClass != null && codeClass.Name == className) { return(codeClass); } } } } return(null); }
protected virtual void OnRemoveAttributes(object sender, EventArgs args) { EnvDTE._DTE dte = GetService(typeof(EnvDTE._DTE)) as EnvDTE._DTE; EnvDTE80.CodeClass2 codeClass = GetCodeClass(dte.ActiveDocument.ProjectItem.FileCodeModel.CodeElements, "MyForm"); while (codeClass.Attributes.Count > 0) { ((EnvDTE80.CodeAttribute2)codeClass.Attributes.Item(1)).Delete(); // Attributes array starts from 1 not 0 } }
protected virtual void OnEditText(object sender, EventArgs args) { EnvDTE._DTE dte = GetService(typeof(EnvDTE._DTE)) as EnvDTE._DTE; EnvDTE80.CodeClass2 codeClass = GetCodeClass(dte.ActiveDocument.ProjectItem.FileCodeModel.CodeElements, "MyForm"); EnvDTE80.CodeAttribute2 codeAttribute = GetCodeAttribute(codeClass, "MyCustom"); if (codeAttribute != null) { string newValue = Microsoft.VisualBasic.Interaction.InputBox("Current Text", "Edit MyCustomAttribute text", RemoveQuote(codeAttribute.Value), -1, -1); codeAttribute.Value = (!string.IsNullOrWhiteSpace(newValue) ? "\"" + newValue + "\"" : ""); } }
private static EnvDTE80.CodeAttribute2 GetCodeAttribute(EnvDTE80.CodeClass2 codeClass, string attributeName) { if (codeClass != null) { foreach (EnvDTE80.CodeAttribute2 attr in codeClass.Attributes) { if (attr.Name == attributeName) { return(attr); } } return(codeClass.AddAttribute(attributeName, "") as EnvDTE80.CodeAttribute2); } return(null); }
private static EnvDTE80.CodeClass2 GetCodeClass(EnvDTE.CodeElements codeElements, string name) { EnvDTE80.CodeClass2 codeClass = null; foreach (EnvDTE.CodeElement item in codeElements) { if (item.Kind == EnvDTE.vsCMElement.vsCMElementClass) { codeClass = item as EnvDTE80.CodeClass2; } else if (item.Kind == EnvDTE.vsCMElement.vsCMElementNamespace) { codeClass = GetCodeClass(((EnvDTE.CodeNamespace)item).Members, name); } if (codeClass != null && codeClass.Name == name) { break; } } return(codeClass); }