/// <summary> /// Use a list of modifications to update Gtk.TreeStore /// </summary> public static void Update(RemoteTreeStore remoteStore, Gtk.TreeStore gtkStore) { RemoteTreeModification[] modifications = remoteStore.GetModifications(); if (modifications.Length > 0) { Console.WriteLine(String.Format("Received {0} modifications from {1}", modifications.Length, remoteStore)); } foreach(RemoteTreeModification mod in modifications) { Console.WriteLine(mod); if (mod is RemoteTreeModification.InsertNode) { RemoteTreeModification.InsertNode insertMod = (RemoteTreeModification.InsertNode)mod; if (insertMod.ParentNodePath.Indices.Length == 0) { // Insert to the top level gtkStore.InsertNode(insertMod.NodeIndex); } else { TreeIter it; gtkStore.GetIter(out it, new TreePath(insertMod.ParentNodePath.Indices)); gtkStore.InsertNode(it, insertMod.NodeIndex); } } if (mod is RemoteTreeModification.RemoveNode) { RemoteTreeModification.RemoveNode removeMod = (RemoteTreeModification.RemoveNode)mod; TreeIter it; gtkStore.GetIter(out it, new TreePath(removeMod.NodePath.Indices)); gtkStore.Remove(ref it); } if (mod is RemoteTreeModification.UpdateNode) { RemoteTreeModification.UpdateNode updateMod = (RemoteTreeModification.UpdateNode)mod; // Igonre the root node if (updateMod.NodePath.IsRoot) { continue; } TreeIter it; gtkStore.GetIter(out it, new TreePath(updateMod.NodePath.Indices)); object value = updateMod.Value; // If it is image, dereference it if (value is PixmapRef) { value = ((PixmapRef)value).GetPixbuf(); } gtkStore.SetValue(it, updateMod.ColumnIndex, value); } } }
public static void LoadCertificateTree(Gtk.TreeStore certStore) { foreach (EveCertGroup group in m_CertGroups.Values) { Gtk.TreeIter groupIter = certStore.AppendValues(group.Name, -1, group.ID, true); group.TreeReference = new Gtk.TreeRowReference(certStore, certStore.GetPath(groupIter)); } foreach (EveCertificate cert in m_Certificates.Values) { EveCertGroup group = m_CertGroups[cert.GroupID]; Gtk.TreeIter groupIter; Gtk.TreeIter certIter; if (certStore.GetIter(out groupIter, group.TreeReference.Path)) { certIter = certStore.AppendValues(groupIter, cert.Name, cert.Grade, cert.ID, false); cert.TreeReference = new Gtk.TreeRowReference(certStore, certStore.GetPath(certIter)); } } }
private bool FilterTree(Gtk.TreeModel model, Gtk.TreeIter iter) { lock (inventory) { try { if (this.entry_search.Text == "") return true; if (filtered.Contains(iter))//*sigh* return true; object obj = model.GetValue(iter, 1); if (obj == null) return false; string Name = (string)obj; if (Name.Contains(this.entry_search.Text)) { filtered.Add(iter);//*sigh* TreePath path = model.GetPath(iter); while (path.Depth > 1) { path.Up(); TreeIter iter2; model.GetIter(out iter2, path); filtered.Add(iter2);//*sigh* } return true; } return false; } catch { return false; } } }
/** * Gets both iters from the provided ListStore obj based on the passed TreePath object(the selected row) */ private bool getPrevIterFromSelection(out Gtk.TreeIter selectedIter, out Gtk.TreeIter prevIter, Gtk.TreePath selectedRow, Gtk.ListStore listModel) { listModel.GetIter(out selectedIter, selectedRow); selectedRow.Prev(); listModel.GetIter(out prevIter, selectedRow); return (prevIter.Stamp!=0 && !prevIter.Equals(selectedIter)); }
/** * Gets both iters from the provided ListStore obj based on the passed TreePath object(the selected row) */ private bool getNextIterFromSelection(out Gtk.TreeIter selectedIter, out Gtk.TreeIter nextIter, Gtk.TreePath selectedRow, Gtk.ListStore listModel) { listModel.GetIter(out selectedIter, selectedRow); selectedRow.Next(); listModel.GetIter(out nextIter, selectedRow); return (nextIter.Stamp!=0 && !nextIter.Equals(selectedIter)); }
/* * Returns the value of the removed element, or null- if no element removed */ private String removeSelectedElementInTreeview(Gtk.TreeView target, Gtk.ListStore model) { Gtk.TreeIter iter; Gtk.TreePath[] selectedRows= target.Selection.GetSelectedRows(); if(selectedRows.Length >0 ) { model.GetIter(out iter, selectedRows[0]); string value = (string)model.GetValue(iter, 0); if(model.Remove(ref iter)) return value; else return null; } return null; }
public static void LoadMarket(Gtk.TreeStore marketStore, Gtk.ListStore itemStore) { LoadMarket(); foreach(EveMarketGroup group in m_MarketGroups.Values) { Gtk.TreeIter groupIter; Gtk.TreeIter parentIter; if (group.ParentID > -1 && marketStore.GetIter(out parentIter, m_MarketGroups[group.ParentID].TreeReference.Path)) { groupIter = marketStore.AppendNode(parentIter); } else { groupIter = marketStore.AppendNode(); } group.TreeReference = new Gtk.TreeRowReference(marketStore, marketStore.GetPath(groupIter)); marketStore.SetValues(groupIter, new Gdk.Pixbuf(ItemDatabase.GetMarketIconStream(group.IconString)), group.Name, group.ID, group.HasItems, true); } foreach (EveItem item in m_Items.Values) { if (item.MarketGroupID > -1) { Gtk.TreeIter parentIter; if (marketStore.GetIter(out parentIter, m_MarketGroups[item.MarketGroupID].TreeReference.Path)) { Gtk.TreeIter childIter = marketStore.AppendValues(parentIter, null, item.Name, item.ID, false, false); itemStore.AppendValues(item.Name, item.ID); item.TreeReference = new Gtk.TreeRowReference(marketStore, marketStore.GetPath(childIter)); } } } }