Ejemplo n.º 1
0
        private int RemoveItemsFromTreeStore(Gtk.TreeStore treeStore, IList <FileNodeViewModel> itemsToRemove, int startingIndex, int indexForInsert)
        {
            Gtk.TreeIter treeIter;
            var          gotSelfIter = GetIterForItem(out treeIter, treeStore);

            for (int i = 0; i < itemsToRemove.Count; ++i)
            {
                var          item = itemsToRemove[i];
                Gtk.TreeIter itemIter;

                // TODO: This seems wrong w.r.t. using the index here - probably cause trouble w/ multiselect
                if (GetTreeIterForItem(out itemIter, treeIter, treeStore, item, startingIndex + i))
                {
                    if (item.Parent == Model)
                    {
                        // Moving something under the same parent, so adjust indexForInsert if needed.
                        // If the item is to be moved to an index after its current index, decrement the
                        // new location, because the item before it in the list will be removed.
                        if ((indexForInsert > startingIndex) && (indexForInsert < (this.Items.Count - 1)))
                        {
                            --indexForInsert;
                        }
                    }
                    var treePath = treeStore.GetPath(itemIter);
                    treeStore.Remove(ref itemIter);
                }
            }
            return(indexForInsert);
        }
Ejemplo n.º 2
0
        public ChatTreeView()
        {
            ThemeSettings = new ThemeSettings();
            TreeStore = new Gtk.TreeStore(typeof(ChatView));
            TreeStore.SetSortColumnId(0, Gtk.SortType.Ascending);
            TreeStore.SetSortFunc(0, SortTreeStore);

            Model = TreeStore;
            HeadersVisible = false;
            BorderWidth = 0;
            Selection.Mode = Gtk.SelectionMode.Browse;
            Selection.Changed += (sender, e) => {
                Gtk.TreeIter iter;
                if (!Selection.GetSelected(out iter)) {
                    return;
                }
                var path = TreeStore.GetPath(iter);
                f_CurrentChatNumber = GetRowNumber(path);
            };

            var iconRenderer = new Gtk.CellRendererPixbuf();
            var column = new Gtk.TreeViewColumn(null, iconRenderer);
            column.Spacing = 0;
            column.Sizing = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(iconRenderer, new Gtk.TreeCellDataFunc(RenderChatViewIcon));
            AppendColumn(column);

            var cellRenderer = new Gtk.CellRendererText();
            column = new Gtk.TreeViewColumn(null, cellRenderer);
            column.Spacing = 0;
            column.Sizing = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewName));
            AppendColumn(column);
        }
Ejemplo n.º 3
0
        protected void attachSubTree(Gtk.TreeModel model, Gtk.TreeIter parent, params object[] elements)
        {
            Gtk.TreeStore store = model as Gtk.TreeStore;

            // remove the values if they were added before.
            Gtk.TreePath path = store.GetPath(parent);
            path.Down();
            Gtk.TreeIter iter;
            while (store.GetIter(out iter, path))
            {
                store.Remove(ref iter);
            }

            // Add the elements to the tree view.
            DirectoryInfo[] di = elements[0] as DirectoryInfo[];
            FileInfo[]      fi = elements[1] as FileInfo[];

            for (uint i = 0; i < di.Length; ++i)
            {
                store.AppendValues(parent, di[i].ToString());
            }

            for (uint i = 0; i < fi.Length; ++i)
            {
                store.AppendValues(parent, fi[i].ToString());
            }
        }
Ejemplo n.º 4
0
        public ChatTreeView()
        {
            ThemeSettings = new ThemeSettings();
            TreeStore     = new Gtk.TreeStore(typeof(ChatView));
            TreeStore.SetSortColumnId(0, Gtk.SortType.Ascending);
            TreeStore.SetSortFunc(0, SortTreeStore);

            Model              = TreeStore;
            HeadersVisible     = false;
            BorderWidth        = 0;
            ShowExpanders      = false;
            LevelIndentation   = 12;
            Selection.Mode     = Gtk.SelectionMode.Browse;
            Selection.Changed += (sender, e) => {
                Gtk.TreeIter iter;
                if (!Selection.GetSelected(out iter) &&
                    TreeStore.GetIterFirst(out iter))
                {
                    Selection.SelectIter(iter);
                    return;
                }
                if (Gtk.TreeIter.Zero.Equals(iter))
                {
                    // no chat views available; this happens during shutdown
                    return;
                }
                var path = TreeStore.GetPath(iter);
                f_CurrentChatNumber = GetRowNumber(path);
            };

            var iconRenderer = new Gtk.CellRendererPixbuf();
            var column       = new Gtk.TreeViewColumn(null, iconRenderer);

            column.Spacing = 0;
            column.Sizing  = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(iconRenderer, new Gtk.TreeCellDataFunc(RenderChatViewIcon));
            AppendColumn(column);

            var cellRenderer = new Gtk.CellRendererText()
            {
                Ellipsize = Pango.EllipsizeMode.End
            };

            column         = new Gtk.TreeViewColumn(null, cellRenderer);
            column.Spacing = 0;
            column.Expand  = true;
            column.Sizing  = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewName));
            AppendColumn(column);

            cellRenderer     = new Gtk.CellRendererText();
            column           = new Gtk.TreeViewColumn(null, cellRenderer);
            column.Spacing   = 0;
            column.Alignment = 1;
            column.Sizing    = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewActivity));
            AppendColumn(column);
            ActivityColumn = column;
        }
 public static void SelectGameElement(GameElement gameElement)
 {
     if (_gameElementsPaths.ContainsKey(gameElement))
     {
         var path = _treeStore.GetPath(_gameElementsPaths[gameElement]);
         _treeView.ActivateRow(path, _treeView.Columns[0]);
     }
 }
 public void ExpandToNode()
 {
     Gtk.TreeIter it;
     AssertIsValid();
     if (store.IterParent(out it, currentIter))
     {
         Gtk.TreePath path = store.GetPath(it);
         tree.ExpandToPath(path);
     }
 }
Ejemplo n.º 7
0
        public ChatTreeView()
        {
            ThemeSettings = new ThemeSettings();
            TreeStore = new Gtk.TreeStore(typeof(ChatView));
            TreeStore.SetSortColumnId(0, Gtk.SortType.Ascending);
            TreeStore.SetSortFunc(0, SortTreeStore);

            Model = TreeStore;
            HeadersVisible = false;
            BorderWidth = 0;
            ShowExpanders = false;
            LevelIndentation = 12;
            Selection.Mode = Gtk.SelectionMode.Browse;
            Selection.Changed += (sender, e) => {
                Gtk.TreeIter iter;
                if (!Selection.GetSelected(out iter) &&
                    TreeStore.GetIterFirst(out iter)) {
                    Selection.SelectIter(iter);
                    return;
                }
                var path = TreeStore.GetPath(iter);
                f_CurrentChatNumber = GetRowNumber(path);
            };

            var iconRenderer = new Gtk.CellRendererPixbuf();
            var column = new Gtk.TreeViewColumn(null, iconRenderer);
            column.Spacing = 0;
            column.Sizing = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(iconRenderer, new Gtk.TreeCellDataFunc(RenderChatViewIcon));
            AppendColumn(column);

            var cellRenderer = new Gtk.CellRendererText() {
                Ellipsize = Pango.EllipsizeMode.End
            };
            column = new Gtk.TreeViewColumn(null, cellRenderer);
            column.Spacing = 0;
            column.Expand = true;
            column.Sizing = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewName));
            AppendColumn(column);

            cellRenderer = new Gtk.CellRendererText();
            column = new Gtk.TreeViewColumn(null, cellRenderer);
            column.Spacing = 0;
            column.Alignment = 1;
            column.Sizing = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewActivity));
            AppendColumn(column);
            ActivityColumn = column;
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Attaches a submodel to the tree view's model.
        /// </summary>
        /// <param name='model'>
        /// The root model to be attached to.
        /// </param>
        /// <param name='parent'>[ref]
        /// The pointer where the elements to be attached to.
        /// </param>
        /// <param name='elements'>
        /// Elements.
        /// </param>
        protected void AttachSubTree(Gtk.TreeModel model, Gtk.TreeIter parent, object[] elements)
        {
            Debug.Assert(store != null, "TreeModel shouldn't be flat");

            // remove the values if they were added before.
            Gtk.TreePath path = store.GetPath(parent);
            path.Down();
            Gtk.TreeIter iter;
            while (store.GetIter(out iter, path))
            {
                store.Remove(ref iter);
            }

            // Add the elements to the tree view.
            for (uint i = 0; i < elements.Length; ++i)
            {
                store.AppendValues(parent, elements[i]);
            }
        }
Ejemplo n.º 9
0
        public ChatTreeView()
        {
            ThemeSettings = new ThemeSettings();
            TreeStore     = new Gtk.TreeStore(typeof(ChatView));
            TreeStore.SetSortColumnId(0, Gtk.SortType.Ascending);
            TreeStore.SetSortFunc(0, SortTreeStore);

            Model              = TreeStore;
            HeadersVisible     = false;
            BorderWidth        = 0;
            Selection.Mode     = Gtk.SelectionMode.Browse;
            Selection.Changed += (sender, e) => {
                Gtk.TreeIter iter;
                if (!Selection.GetSelected(out iter))
                {
                    return;
                }
                var path = TreeStore.GetPath(iter);
                f_CurrentChatNumber = GetRowNumber(path);
            };

            var iconRenderer = new Gtk.CellRendererPixbuf();
            var column       = new Gtk.TreeViewColumn(null, iconRenderer);

            column.Spacing = 0;
            column.Sizing  = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(iconRenderer, new Gtk.TreeCellDataFunc(RenderChatViewIcon));
            AppendColumn(column);

            var cellRenderer = new Gtk.CellRendererText();

            column         = new Gtk.TreeViewColumn(null, cellRenderer);
            column.Spacing = 0;
            column.Sizing  = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewName));
            AppendColumn(column);
        }
Ejemplo n.º 10
0
 public void ScrollToNode()
 {
     tree.ScrollToCell(store.GetPath(currentIter), pad.CompleteColumn, true, 0, 0);
 }
Ejemplo n.º 11
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;
        }