From 70d2492071a3b80dc50693fb8b27d374619645b5 Mon Sep 17 00:00:00 2001 From: John Luke Date: Wed, 20 Jul 2005 03:15:51 +0000 Subject: [PATCH] add a TreeModelFilter example svn path=/trunk/gtk-sharp/; revision=47458 --- doc/ChangeLog | 4 ++ doc/en/Gtk/TreeModelFilter.xml | 72 ++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index c9af3d609..22b118dbf 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,7 @@ +2005-07-19 John Luke + + * en/Gtk/TreeModelFilter.xml: add an example + 2005-06-22 Mike Kestner * gen-vm-docs.cs : some monodocer formatting changes and attr lookup diff --git a/doc/en/Gtk/TreeModelFilter.xml b/doc/en/Gtk/TreeModelFilter.xml index c5e9da057..62fff4074 100644 --- a/doc/en/Gtk/TreeModelFilter.xml +++ b/doc/en/Gtk/TreeModelFilter.xml @@ -10,6 +10,78 @@ An object designed to filter the contents of a column or columns in a for display. + + +using System; +using Gtk; + +public class MyWindow : Window +{ + TreeView view; + TreeModelFilter filter; + Entry search; + + static void Main () + { + Application.Init (); + new MyWindow (); + Application.Run (); + } + + public MyWindow () : base ("MyWindow") + { + this.SetDefaultSize (400, 300); + this.DeleteEvent += new DeleteEventHandler (OnMyWindowDelete); + + view = new TreeView (); + view.AppendColumn ("test", new CellRendererText (), "text", 0); + + TreeStore store = new TreeStore (typeof (string)); + string[] names = new string[] {"bob", "joe", "joseph", "frank"}; + foreach (string name in names) + store.AppendValues (name); + view.Model = store; + + filter = new TreeModelFilter (store, null); + filter.VisibleFunc = SearchFilterFunc; + + VBox vbox = new VBox (false, 6); + search = new Entry (); + search.Activated += OnSearch; + Label l = new Label ("Search:"); + l.Xalign = 0.0f; + vbox.PackStart (l, false, true, 0); + vbox.PackStart (search, false, true, 0); + vbox.PackStart (view, true, true, 0); + this.Add (vbox); + + this.ShowAll (); + } + + bool SearchFilterFunc (TreeModel model, TreeIter iter) + { + // no search term, show all + if (search.Text.Trim ().Length < 1) + return true; + + string t = (string) model.GetValue (iter, 0); + return t.StartsWith (search.Text.Trim ()); + } + + void OnSearch (object sender, EventArgs a) + { + view.Model = filter; + filter.Refilter (); + } + + void OnMyWindowDelete (object sender, DeleteEventArgs a) + { + Application.Quit (); + a.RetVal = true; + } +} + +