static IEnumerable <MonoDevelop.Projects.Dom.IEvent> GetAllEvents( MonoDevelop.Projects.Dom.Parser.ProjectDom projectDatabase, MonoDevelop.Projects.Dom.IType cls) { foreach (MonoDevelop.Projects.Dom.IType type in projectDatabase.GetInheritanceTree(cls)) { foreach (MonoDevelop.Projects.Dom.IEvent ev in type.Events) { yield return(ev); } } }
protected override CompletionDataList GetAttributeValueCompletions(IAttributedXObject attributedOb, XAttribute att) { var list = base.GetAttributeValueCompletions(attributedOb, att) ?? new CompletionDataList(); GetType(attributedOb, delegate(IType type, ProjectDom dom) { foreach (IProperty prop in GetAllProperties(dom, type)) { if (prop.Name != att.Name.FullName) { continue; } //boolean completion if (prop.ReturnType.FullName == "System.Boolean") { list.Add("true", "md-literal"); list.Add("false", "md-literal"); return; } //color completion if (prop.ReturnType.FullName == "System.Windows.Media.Color") { System.Drawing.ColorConverter conv = new System.Drawing.ColorConverter(); foreach (System.Drawing.Color c in conv.GetStandardValues(null)) { if (c.IsSystemColor) { continue; } string hexcol = string.Format("#{0:x2}{1:x2}{2:x2}", c.R, c.G, c.B); list.Add(c.Name, hexcol); } return; } //enum completion MonoDevelop.Projects.Dom.IType retCls = dom.GetType(prop.ReturnType); if (retCls != null && retCls.ClassType == MonoDevelop.Projects.Dom.ClassType.Enum) { foreach (MonoDevelop.Projects.Dom.IField enumVal in retCls.Fields) { if (enumVal.IsPublic && enumVal.IsStatic) { list.Add(enumVal.Name, "md-literal", enumVal.Documentation); } } return; } } }); return(list.Count > 0? list : null); }
static IEnumerable <MonoDevelop.Projects.Dom.IProperty> GetAllProperties( MonoDevelop.Projects.Dom.Parser.ProjectDom projectDatabase, MonoDevelop.Projects.Dom.IType cls) { foreach (MonoDevelop.Projects.Dom.IType type in projectDatabase.GetInheritanceTree(cls)) { foreach (MonoDevelop.Projects.Dom.IProperty prop in type.Properties) { yield return(prop); } } }
static string GetCorrectFileName(MonoDevelop.Projects.Dom.IType type) { if (type == null || type.CompilationUnit == null || type.SourceProject == null || string.IsNullOrEmpty(type.CompilationUnit.FileName)) { return(null); } if (type is InstantiatedType) { type = ((InstantiatedType)type).UninstantiatedType; } return(Path.Combine(Path.GetDirectoryName(type.CompilationUnit.FileName), type.Name + Path.GetExtension(type.CompilationUnit.FileName))); }