Ejemplo n.º 1
0
        /// <summary>
        /// Find a specific node with the node path.
        /// NodePath format: .Parent.Child.SubChild
        /// </summary>
        /// <param name="namePath">The name path.</param>
        /// <returns></returns>
        /// <exception cref="System.Exception">Invalid name path ' + namePath + '</exception>
        private TreeIter FindNode(string namePath)
        {
            if (!namePath.StartsWith(".", StringComparison.CurrentCulture))
            {
                throw new Exception("Invalid name path '" + namePath + "'");
            }

            namePath = namePath.Remove(0, 1); // Remove the leading '.'

            string[] namePathBits = namePath.Split(".".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

            TreeIter result = TreeIter.Zero;
            TreeIter iter;

            treemodel.GetIterFirst(out iter);

            foreach (string pathBit in namePathBits)
            {
                string nodeName = (string)treemodel.GetValue(iter, 0);
                while (nodeName != pathBit && treemodel.IterNext(ref iter))
                {
                    nodeName = (string)treemodel.GetValue(iter, 0);
                }

                if (nodeName == pathBit)
                {
                    result = iter;
                    TreePath path = treemodel.GetPath(iter);
                    if (!treeview1.GetRowExpanded(path))
                    {
                        treeview1.ExpandRow(path, false);
                    }

                    treemodel.IterChildren(out iter, iter);
                }
                else
                {
                    return(TreeIter.Zero);
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
 void SaveStatus(ArrayList list, TreeIter iter)
 {
     Gtk.TreePath path = treeStore.GetPath(iter);
     if (treeView.GetRowExpanded(path))
     {
         list.Add(path);
     }
     if (treeStore.IterChildren(out iter, iter))
     {
         do
         {
             SaveStatus(list, iter);
         } while (treeStore.IterNext(ref iter));
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// A row in the tree view has been activated
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnRowActivated(object sender, RowActivatedArgs e)
        {
            try
            {
                timer.Stop();
                if (treeview1.GetRowExpanded(e.Path))
                {
                    treeview1.CollapseRow(e.Path);
                }
                else
                {
                    treeview1.ExpandRow(e.Path, false);
                }
                e.RetVal = true;

                DoubleClicked?.Invoke(this, new EventArgs());
            }
            catch (Exception err)
            {
                ShowError(err);
            }
        }