示例#1
0
        static NodeState SaveStateRec(ExtensibleTreeView pad, ITreeNavigator nav)
        {
            List <NodeState> childrenState = null;

            if (nav.Filled && nav.MoveToFirstChild())
            {
                do
                {
                    NodeState cs = SaveStateRec(pad, nav);
                    if (cs != null)
                    {
                        cs.NodeName = nav.NodeName;
                        if (childrenState == null)
                        {
                            childrenState = new List <NodeState> ();
                        }
                        childrenState.Add(cs);
                    }
                } while (nav.MoveNext());
                nav.MoveToParent();
            }

            if (nav.Expanded || childrenState != null || nav.Selected)
            {
                NodeState es = new NodeState();
                es.Expanded      = nav.Expanded;
                es.Selected      = nav.Selected;
                es.ChildrenState = childrenState;
                return(es);
            }
            else
            {
                return(null);
            }
        }
        public void SelectAssembly(string fileName)
        {
            DomCecilCompilationUnit cu = null;

            foreach (DomCecilCompilationUnit unit in definitions)
            {
                if (unit.FileName == fileName)
                {
                    cu = unit;
                }
            }
            if (cu == null)
            {
                return;
            }

            ITreeNavigator nav = TreeView.GetRootNode();

            do
            {
                if (nav.DataItem == cu.AssemblyDefinition)
                {
                    nav.ExpandToNode();
                    nav.Selected = true;
                    return;
                }
            } while (nav.MoveNext());
        }
 private void embedFolder(ITreeNavigator node, Set <SolutionItem> projects, ref int allFiles, ref int filesEmbedded)
 {
     node.MoveToFirstChild();
     do
     {
         if (node.DataItem is ProjectFolder)
         {
             embedFolder(node.Clone(), projects, ref allFiles, ref filesEmbedded);
             continue;
         }
         ProjectFile file = node.DataItem as ProjectFile;
         if (file == null)
         {
             continue;
         }
         allFiles++;
         const string EMBEDDED_RESOURCE = "EmbeddedResource";
         if (file.BuildAction != EMBEDDED_RESOURCE)
         {
             file.BuildAction = EMBEDDED_RESOURCE;
             filesEmbedded++;
             projects.Add(file.Project);
         }
     }while (node.MoveNext());
 }
        public static void ExpandOnlyCSharpProjects(ITreeNavigator node)
        {
            if (node == null)
            {
                return;
            }

            var typename = node.DataItem.GetType().Name;

            if (typename == "Solution")
            {
                node.ExpandToNode();
            }

            if (node.HasChildren())
            {
                var continueLoop = node.MoveToFirstChild();
                while (continueLoop)
                {
                    if (node.DataItem is Project proj)
                    {
                        var filter = EssentialProperties.ExpandFilterArray;
                        if (filter.Length == 0)
                        {
                            node.MoveToFirstChild();
                            node.ExpandToNode();
                            node.MoveToParent();
                        }
                        else
                        {
                            foreach (var item in filter)
                            {
                                if (proj.Name.ToLower().Contains(item))
                                {
                                    node.MoveToFirstChild();
                                    node.ExpandToNode();
                                    node.MoveToParent();
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        ExpandOnlyCSharpProjects(node);
                    }
                    continueLoop = node.MoveNext();
                }
                node.MoveToParent();
            }
        }
        public static void ExpandAll(ITreeNavigator node)
        {
            if (node == null)
            {
                return;
            }

            var typename = node.DataItem.GetType().Name;

            if (typename == "Solution")
            {
                node.ExpandToNode();
            }

            if (node.HasChildren())
            {
                var continueLoop = node.MoveToFirstChild();
                while (continueLoop)
                {
                    var wso = node.DataItem as WorkspaceObject;

                    if (node.DataItem is Project)
                    {
                        if (!string.IsNullOrWhiteSpace(EssentialProperties.ExpandFilter))
                        {
                            foreach (var item in EssentialProperties.ExpandFilterArray)
                            {
                                if (wso.Name.ToLower().Contains(item))
                                {
                                    ExpandProjectFiles(node);
                                    break;
                                }
                            }
                        }
                        else
                        {
                            ExpandProjectFiles(node);
                        }
                    }
                    else
                    {
                        ExpandAll(node);
                    }

                    continueLoop = node.MoveNext();
                }
                node.MoveToParent();
            }
        }
		private void GetFiles (ITreeNavigator nav, List<SystemFile> filesToAdd)
		{
			nav.MoveToFirstChild ();
			do {
				if (nav.HasChildren ()) {
					ProjectFolder pf = nav.DataItem as ProjectFolder;
					if (pf != null && (File.GetAttributes (pf.Path) & FileAttributes.Hidden) == 0) {
						ITreeNavigator newNav = nav.Clone ();
						GetFiles (newNav, filesToAdd);
					}
				} else if (nav.DataItem is SystemFile) {
					filesToAdd.Add ((SystemFile) nav.DataItem);
				}
			} while (nav.MoveNext ());
			nav.MoveToParent ();
		}
        private static void ExpandProjectFiles(ITreeNavigator node)
        {
            if (node == null)
            {
                return;
            }
#if DEBUG
            if (node.DataItem is ProjectFile f)
            {
                if (f.Name.ToLower().Contains("appstart.cs"))
                {
                    Debug.WriteLine("BINGO !!");
                }
            }

            if (node.DataItem is ProjectFolder folder)
            {
                if (folder.Name.ToLower().Contains("views"))
                {
                    Debug.WriteLine("BINGO !!");
                }
            }
#endif
            if (FilteredProjectCache.IsProjectItemExpanded(node.DataItem))
            {
                node.ExpandToNode();
                node.Expanded = true;
            }

            if (node.HasChildren())
            {
                var continueLoop = node.MoveToFirstChild();
                while (continueLoop)
                {
                    if (!(node.DataItem is ProjectFile pf) || string.IsNullOrEmpty(pf.DependsOn))
                    {
                        ExpandProjectFiles(node);
                    }
                    continueLoop = node.MoveNext();
                }
                node.MoveToParent();

                return;
            }
        }
        ITreeNavigator SearchMember(ITreeNavigator nav, string helpUrl)
        {
            do
            {
                if (IsMatch(nav, helpUrl))
                {
                    return(nav);
                }
                if (!SkipChildren(nav, helpUrl) && nav.HasChildren())
                {
                    DispatchService.RunPendingEvents();
                    nav.MoveToFirstChild();
                    ITreeNavigator result = SearchMember(nav, helpUrl);
                    if (result != null)
                    {
                        return(result);
                    }

                    if (!nav.MoveToParent())
                    {
                        return(null);
                    }
                    try {
                        if (nav.DataItem is DomCecilType && nav.Options["PublicApiOnly"])
                        {
                            nav.Options["PublicApiOnly"] = false;
                            nav.MoveToFirstChild();
                            result = SearchMember(nav, helpUrl);
                            if (result != null)
                            {
                                return(result);
                            }
                            nav.MoveToParent();
                        }
                    } catch (Exception) {
                        return(null);
                    }
                }
            } while (nav.MoveNext());
            return(null);
        }
        void Dispose(ITreeNavigator nav)
        {
            if (nav == null)
            {
                return;
            }
            IDisposable d = nav.DataItem as IDisposable;

            if (d != null)
            {
                d.Dispose();
            }
            if (nav.HasChildren())
            {
                nav.MoveToFirstChild();
                do
                {
                    Dispose(nav);
                } while (nav.MoveNext());
                nav.MoveToParent();
            }
        }
示例#10
0
		ITreeNavigator SearchMember (ITreeNavigator nav, string helpUrl)
		{
			bool searchType = helpUrl.StartsWith ("T:");
			do {
				if (IsMatch (nav, helpUrl, searchType)) {
					nav.ExpandToNode ();
					nav.Selected = nav.Expanded = true;
					return nav;
				}
				if (!SkipChildren (nav, helpUrl, searchType) && nav.HasChildren ()) {
					nav.MoveToFirstChild ();
					ITreeNavigator result = SearchMember (nav, helpUrl);
					if (result != null)
						return result;
					
					if (!nav.MoveToParent ()) {
						return null;
					}
					try {
						if (nav.DataItem is TypeDefinition && nav.Options ["PublicApiOnly"]) {
							nav.Options ["PublicApiOnly"] = PublicApiOnly;
							nav.MoveToFirstChild ();
							result = SearchMember (nav, helpUrl);
							if (result != null)
								return result;
							nav.MoveToParent ();
						}
					} catch (Exception) {
					}
				}
			} while (nav.MoveNext());
			return null;
		}
示例#11
0
		ITreeNavigator SearchMember (ITreeNavigator nav, string helpUrl)
		{
			if (nav == null)
				return null;
			bool searchType = helpUrl.StartsWith ("T:", StringComparison.Ordinal);
			do {
				if (IsMatch (nav, helpUrl, searchType)) {
					inspectEditor.ClearSelection ();
					nav.ExpandToNode ();
					nav.Selected = nav.Expanded = true;
					nav.ScrollToNode ();
					return nav;
				}
				if (!SkipChildren (nav, helpUrl, searchType) && nav.HasChildren ()) {
					nav.MoveToFirstChild ();
					ITreeNavigator result = SearchMember (nav, helpUrl);
					if (result != null)
						return result;
					
					if (!nav.MoveToParent ()) {
						return null;
					}
					try {
						if (nav.DataItem is TypeDefinition && PublicApiOnly) {
							nav.MoveToFirstChild ();
							result = SearchMember (nav, helpUrl);
							if (result != null)
								return result;
							nav.MoveToParent ();
						}
					} catch (Exception) {
					}
				}
			} while (nav.MoveNext());
			return null;
		}
示例#12
0
		void Dispose (ITreeNavigator nav)
		{
			if (nav == null)
				return;
			IDisposable d = nav.DataItem as IDisposable;
			if (d != null) 
				d.Dispose ();
			if (nav.HasChildren ()) {
				nav.MoveToFirstChild ();
				do {
					Dispose (nav);
				} while (nav.MoveNext ());
				nav.MoveToParent ();
			}
		}
示例#13
0
        static NodeState SaveStateRec(TreeViewPad pad, ITreeNavigator nav)
        {
            Gtk.TreeIter it = nav.CurrentPosition._iter;

            ArrayList childrenState = null;

            if (nav.Filled && nav.MoveToFirstChild ()) {
                do {
                    NodeState cs = SaveStateRec (pad, nav);
                    if (cs != null) {
                        cs.NodeName = nav.NodeName;
                        if (childrenState == null) childrenState = new ArrayList ();
                        childrenState.Add (cs);
                    }
                } while (nav.MoveNext ());
                nav.MoveToParent ();
            }

            TreeViewPad.TreeOptions ops = pad.GetIterOptions (it);

            if (ops != null || nav.Expanded || childrenState != null || nav.Selected) {
                NodeState es = new NodeState ();
                es.Expanded = nav.Expanded;
                es.Selected = nav.Selected;
                es.Options = ops;
                es.ChildrenState = childrenState;
                return es;
            } else
                return null;
        }
示例#14
0
		ITreeNavigator SearchMember (ITreeNavigator nav, string helpUrl, bool expandNode = true)
		{
			if (nav == null)
				return null;
			bool searchType = helpUrl.StartsWith ("T:", StringComparison.Ordinal);
			do {
				if (IsMatch (nav, helpUrl, searchType)) {
					inspectEditor.ClearSelection ();
					nav.ExpandToNode ();
					if (expandNode) {
						nav.Selected = nav.Expanded = true;
						nav.ScrollToNode ();
					} else {
						nav.Selected = true;
						nav.ScrollToNode ();
					}
					return nav;
				}
				if (!SkipChildren (nav, helpUrl, searchType) && nav.HasChildren ()) {
					nav.MoveToFirstChild ();
					ITreeNavigator result = SearchMember (nav, helpUrl, expandNode);
					if (result != null)
						return result;
					
					if (!nav.MoveToParent ()) {
						return null;
					}
				}
			} while (nav.MoveNext());
			return null;
		}
 private void GetFiles(ITreeNavigator nav, List<SystemFile> filesToAdd)
 {
     nav.MoveToFirstChild ();
     do {
         if (nav.HasChildren ()) {
             ProjectFolder pf = nav.DataItem as ProjectFolder;
             if (pf != null && (File.GetAttributes (pf.Path) & FileAttributes.Hidden) == 0) {
                 ITreeNavigator newNav = nav.Clone ();
                 GetFiles (newNav, filesToAdd);
             }
         } else if (nav.DataItem is SystemFile) {
             filesToAdd.Add ((SystemFile) nav.DataItem);
         }
     } while (nav.MoveNext ());
     nav.MoveToParent ();
 }
		ITreeNavigator SearchMember (ITreeNavigator nav, string helpUrl)
		{
			do {
				if (IsMatch (nav, helpUrl))
					return nav;
				if (!SkipChildren (nav, helpUrl) && nav.HasChildren ()) {
					DispatchService.RunPendingEvents ();
					nav.MoveToFirstChild ();
					ITreeNavigator result = SearchMember (nav, helpUrl);
					if (result != null)
						return result;
					
					if (!nav.MoveToParent ())
						return null;
					try {
						if (nav.DataItem is DomCecilType && nav.Options["PublicApiOnly"]) {
							nav.Options["PublicApiOnly"] = false;
							nav.MoveToFirstChild ();
							result = SearchMember (nav, helpUrl);
							if (result != null)
								return result;
							nav.MoveToParent ();
						}
					} catch (Exception) {
						return null;
					}
				}
			} while (nav.MoveNext());
			return null;
		}
		static NodeState SaveStateRec (ExtensibleTreeView pad, ITreeNavigator nav)
		{
			List<NodeState> childrenState = null;

			if (nav.Filled && nav.MoveToFirstChild ()) {
				do {
					NodeState cs = SaveStateRec (pad, nav);
					if (cs != null) {
						cs.NodeName = nav.NodeName;
						if (childrenState == null) 
							childrenState = new List<NodeState> ();
						childrenState.Add (cs);
					}
				} while (nav.MoveNext ());
				nav.MoveToParent ();
			}
			
			ExtensibleTreeView.TreeOptions ops = pad.GetNodeOptions (nav);
			
			if (ops != null || nav.Expanded || childrenState != null || nav.Selected) {
				NodeState es = new NodeState ();
				es.Expanded = nav.Expanded;
				es.Selected = nav.Selected;
				es.Options = ops;
				es.ChildrenState = childrenState;
				return es;
			} else
				return null;
		}