Example #1
0
            public bool MoveToFirstChild()
            {
                EnsureFilled();
                if (node != null && node.Children != null && node.Children.Count > 0)
                {
                    node = node.Children [0];
                    return(true);
                }

                if (node != null && (node.Reset || !node.HasIter))
                {
                    return(false);
                }

                NodePosition oldPos = CurrentPosition;

                InitNavigator();
                if (!navigator.MoveToFirstChild())
                {
                    MoveToPosition(oldPos);
                    return(false);
                }
                if (CheckNode())
                {
                    return(true);
                }
                if (MoveNext())
                {
                    return(true);
                }
                MoveToPosition(oldPos);
                return(false);
            }
        internal bool GetIterFromNamePath(string path, out Gtk.TreeIter iter)
        {
            if (!store.GetIterFirst (out iter))
                return false;

            TreeNodeNavigator nav = new TreeNodeNavigator (this, iter);
            string[] names = path.Split ('/');

            int n = 0;
            bool more;
            do {
                string name = names [n].Replace ("_%_","/");
                name = name.Replace ("%%","%");

                if (nav.NodeName == name) {
                    iter = nav.CurrentPosition._iter;
                    if (++n == names.Length) return true;
                    more = nav.MoveToFirstChild ();
                } else
                    more = nav.MoveNext ();
            } while (more);

            return false;
        }