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); }
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); }
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()); } }
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); } }
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; }
/// <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]); } }
public void ScrollToNode() { tree.ScrollToCell(store.GetPath(currentIter), pad.CompleteColumn, true, 0, 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; }