protected virtual int SortTreeStore(TreeModel model, Gtk.TreeIter iter1, Gtk.TreeIter iter2) { var server1 = (ServerModel)model.GetValue(iter1, 0); var server2 = (ServerModel)model.GetValue(iter2, 0); // protocol nodes don't have a ServerModel if (server1 == null && server2 == null) { return(0); } if (server2 == null) { return(1); } if (server1 == null) { return(-1); } var s1 = String.Format("{0}/{1}:{2} ({3})", server1.Protocol, server1.Hostname, server1.Port, server1.ServerID); var s2 = String.Format("{0}/{1}:{2} ({3})", server2.Protocol, server2.Hostname, server2.Port, server2.ServerID); return(s1.CompareTo(s2)); }
static void RenderFilterColumnTextFromBibtexRecords(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.ITreeModel model, Gtk.TreeIter iter) { Debug.WriteLine(10, "Rendering cell"); string val = (string)model.GetValue(iter, 0); Debug.WriteLine(10, "Value = " + val); (cell as Gtk.CellRendererText).Text = StringOps.TeXToUnicode(val); }
static void RenderColumnTextFromBibtexRecord(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.ITreeModel model, Gtk.TreeIter iter) { // See here for an example of how you can highlight cells // based on something todo with the entry // // TODO: extend this feature to highlight entries that // are missing required fields if ((model != null) && (column != null) && (column.Title != null)) { var record = (BibtexRecord)model.GetValue(iter, 0); if (record != null) { if (record.HasField(column.Title) && column.Title != "Author") { (cell as Gtk.CellRendererText).Text = StringOps.TeXToUnicode(record.GetField(column.Title)); (cell as Gtk.CellRendererText).Background = "white"; (cell as Gtk.CellRendererText).Ellipsize = Pango.EllipsizeMode.End; } else if (record.HasField(column.Title) && column.Title == "Author") { StringArrayList authors = record.GetAuthors(); string author_string = ""; foreach (string author in authors) { if (author_string == "") { author_string = author; } else { author_string = String.Concat(author_string, "; ", author); } } (cell as Gtk.CellRendererText).Text = StringOps.TeXToUnicode(author_string); (cell as Gtk.CellRendererText).Background = "white"; (cell as Gtk.CellRendererText).Ellipsize = Pango.EllipsizeMode.End; } else { (cell as Gtk.CellRendererText).Text = ""; // could highlight important fields that are missing data too, // for e.g. the line below: //(cell as Gtk.CellRendererText).Background = "green"; } if (!BibtexRecordTypeLibrary.Contains(record.RecordType)) { (cell as Gtk.CellRendererText).Foreground = "red"; } else { (cell as Gtk.CellRendererText).Foreground = "black"; } } } }
public int StringCompareAuthor(Gtk.ITreeModel model, Gtk.TreeIter tia, Gtk.TreeIter tib) { var a = (BibtexRecord)model.GetValue(tia, 0); var b = (BibtexRecord)model.GetValue(tib, 0); string A, B; if (a != null) { if (a.GetAuthors().Count > 0) { A = a.GetAuthors()[0]; } else { A = ""; } } else { A = ""; } if (b != null) { if (b.GetAuthors().Count > 0) { B = b.GetAuthors()[0]; } else { B = ""; } } else { B = ""; } Debug.WriteLine(10, "Comparing {1} and {2}", A, B); return(String.Compare(A.ToLower(), B.ToLower())); }
static void RenderColumnPixbufFromBibtexRecord(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.ITreeModel model, Gtk.TreeIter iter) { if (model != null) { var record = (BibtexRecord)model.GetValue(iter, 0); var pixbuf = (Gdk.Pixbuf)record.GetCustomDataField("smallThumbnail"); if ((cell != null) && (record != null)) { (cell as Gtk.CellRendererPixbuf).Pixbuf = pixbuf; } } }
public int StringCompare(Gtk.ITreeModel model, Gtk.TreeIter tia, Gtk.TreeIter tib) { var a = (BibtexRecord)model.GetValue(tia, 0); var b = (BibtexRecord)model.GetValue(tib, 0); string A, B; string sortString = ""; int sortColumn; Gtk.SortType sortType; sorter.GetSortColumnId(out sortColumn, out sortType); switch (sortColumn) { case 1: sortString = "Author"; break; case 2: sortString = "Title"; break; case 3: sortString = "Year"; break; case 4: sortString = "Journal"; break; case 5: sortString = "Bibtex Key"; break; case 6: sortString = "Volume"; break; case 7: sortString = "Pages"; break; } if (a != null) { if (a.HasField(sortString)) { A = a.GetField(sortString); } else { A = ""; } } else { A = ""; } if (b != null) { if (b.HasField(sortString)) { B = b.GetField(sortString); } else { B = ""; } } else { B = ""; } Debug.WriteLine(10, "sortString: {0} Comparing {1} and {2}", sortString, A, B); return(String.Compare(A.ToLower(), B.ToLower())); }