Ejemplo n.º 1
0
        private static bool GetTreeIterForItem(out Gtk.TreeIter itemIter, Gtk.TreeIter parentIter, Gtk.TreeStore treeStore, FileNodeViewModel item, int index)
        {
            // if item is null, just get iterator at index
            itemIter = Gtk.TreeIter.Zero;
            var validIter  = false;
            var putAtFront = (index < 0) && (item == null);

            if (parentIter.Equals(Gtk.TreeIter.Zero))
            {
                if (putAtFront)
                {
                    validIter = treeStore.IterChildren(out itemIter);
                }
                else
                {
                    validIter = (treeStore.IterNChildren() > index) && treeStore.IterNthChild(out itemIter, index);
                }
            }
            else
            {
                if (putAtFront)
                {
                    validIter = treeStore.IterChildren(out itemIter, parentIter);
                }
                else
                {
                    validIter = (treeStore.IterNChildren(parentIter) > index) && treeStore.IterNthChild(out itemIter, parentIter, index);
                }
            }
            var node    = validIter ? treeStore.GetValue(itemIter, 0) as FileNodeViewModel : null;
            var foundIt = (node == null) || (item == null) || object.ReferenceEquals(node, item);

            return(foundIt && !itemIter.Equals(Gtk.TreeIter.Zero));
        }
Ejemplo n.º 2
0
        public int GetChildrenCount(TreePosition pos)
        {
            if (pos == null)
            {
                return(Tree.IterNChildren());
            }

            IterPos tpos = GetIterPos(pos);

            if (tpos.ChildrenCount != -1)
            {
                return(tpos.ChildrenCount);
            }

            return(tpos.ChildrenCount = Tree.IterNChildren(tpos.Iter));
        }
Ejemplo n.º 3
0
        protected virtual void OnCompleteRadiobuttonToggled(object sender, System.EventArgs e)
        {
            if (completeRadiobutton.Active)
            {
                Gtk.TreeIter iter;

                if (group_store.IterNChildren() > 0)
                {
                    group_store.GetIterFirst(out iter);
                    group_store.SetValue(iter, 0, true);

                    while (group_store.IterNext(ref iter))
                    {
                        group_store.SetValue(iter, 0, true);
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public int GetChildrenCount(TreePosition pos)
        {
            IterPos tpos = (IterPos)pos;

            if (tpos.ChildrenCount != -1)
            {
                return(tpos.ChildrenCount);
            }
            if (pos == null)
            {
                tpos.ChildrenCount = Tree.IterNChildren();
            }
            else
            {
                tpos.ChildrenCount = Tree.IterNChildren(tpos.Iter);
            }
            return(tpos.ChildrenCount);
        }
Ejemplo n.º 5
0
        void AddHandler(Gtk.TreeIter iter, string name)
        {
            internalChange = true;

            Gtk.TreeIter piter = iter;
            while (store.IterDepth(piter) != 0)
            {
                store.IterParent(out piter, piter);
            }

            Signal signal = GetSignal(iter);

            if (signal == null)
            {
                if (name != "")
                {
                    SignalDescriptor sd = (SignalDescriptor)store.GetValue(iter, ColDescriptorObject);
                    signal         = new Signal(sd);
                    signal.Handler = name;
                    selection.Signals.Add(signal);
                    SetSignalData(iter, signal);
                    store.SetValue(iter, ColSignalTextWeight, (int)Pango.Weight.Bold);
                    if (store.IterDepth(iter) == 1)
                    {
                        SetEmptySingalRow(store.AppendNode(iter), signal.SignalDescriptor, false);
                    }
                    else
                    {
                        store.IterParent(out iter, iter);
                        SetEmptySingalRow(store.AppendNode(iter), signal.SignalDescriptor, false);
                    }
                }
            }
            else
            {
                if (name != "")
                {
                    signal.Handler = name;
                    store.SetValue(iter, ColHandler, signal.Handler);
                }
                else
                {
                    selection.Signals.Remove(signal);
                    if (store.IterDepth(iter) == 1)
                    {
                        if (store.IterNChildren(iter) == 1)
                        {
                            SetEmptySingalRow(iter, signal.SignalDescriptor, true);
                            // Remove the empty row
                            store.IterChildren(out iter, iter);
                            store.Remove(ref iter);
                        }
                        else
                        {
                            Gtk.TreeIter citer;
                            store.IterChildren(out citer, iter);
                            Signal csignal = GetSignal(citer);
                            store.Remove(ref citer);
                            SetSignalData(iter, csignal);
                            if (store.IterNChildren(iter) == 1)
                            {
                                tree.CollapseRow(store.GetPath(iter));
                            }
                        }
                    }
                    else
                    {
                        store.Remove(ref iter);
                    }
                }
            }
            UpdateGroupStatus(piter);
            internalChange = false;
        }