]> Pileus Git - ~andy/gtk/blobdiff - tests/testtreesort.c
perf/widgets.h tests/print-editor.c tests/prop-editor.h
[~andy/gtk] / tests / testtreesort.c
index 0dba6d29c64d7b04dd04cd019b629a9158bd2aee..a58b1b40bf6baa14864f23fd17b7666e5301f87a 100644 (file)
@@ -1,5 +1,28 @@
+/* testtreesort.c
+ * Copyright (C) 2001 Red Hat, Inc
+ * Author: Jonathan Blandford
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
 #include <gtk/gtk.h>
 
+#include "gtk/gtktreedatalist.h"
+
 
 typedef struct _ListSort ListSort;
 struct _ListSort
@@ -8,32 +31,33 @@ struct _ListSort
   const gchar *word_2;
   const gchar *word_3;
   const gchar *word_4;
+  gint number_1;
 };
 
 static ListSort data[] =
 {
-  { "Apples", "Transmogrify long word to demonstrate weirdness", "Exculpatory", "Gesundheit"},
-  { "Oranges", "Wicker", "Adamantine", "Convivial" },
-  { "Bovine Spongiform Encephilopathy", "Sleazebucket", "Mountaineer", "Pander" },
-  { "Foot and Mouth", "Lampshade", "Skim Milk\nFull Milk", "Viewless" },
-  { "Blood,\nsweat,\ntears", "The Man", "Horses", "Muckety-Muck" },
-  { "Rare Steak", "Siam", "Watchdog", "Xantippe" },
-  { "SIGINT", "Rabbit Breath", "Alligator", "Bloodstained" },
-  { "Google", "Chrysanthemums", "Hobnob", "Leapfrog"},
-  { "Technology fibre optic", "Turtle", "Academe", "Lonely"  },
-  { "Freon", "Harpes", "Quidditch", "Reagan" },
-  { "Transposition", "Fruit Basket", "Monkey Wort", "Glogg" },
-  { "Fern", "Glasnost and Perestroika", "Latitude", "Bomberman!!!" },
+  { "Apples", "Transmogrify long word to demonstrate weirdness", "Exculpatory", "Gesundheit", 30 },
+  { "Oranges", "Wicker", "Adamantine", "Convivial", 10 },
+  { "Bovine Spongiform Encephilopathy", "Sleazebucket", "Mountaineer", "Pander", 40 },
+  { "Foot and Mouth", "Lampshade", "Skim Milk\nFull Milk", "Viewless", 20 },
+  { "Blood,\nsweat,\ntears", "The Man", "Horses", "Muckety-Muck", 435 },
+  { "Rare Steak", "Siam", "Watchdog", "Xantippe" , 99999 },
+  { "SIGINT", "Rabbit Breath", "Alligator", "Bloodstained", 4123 },
+  { "Google", "Chrysanthemums", "Hobnob", "Leapfrog", 1 },
+  { "Technology fibre optic", "Turtle", "Academe", "Lonely", 3 },
+  { "Freon", "Harpes", "Quidditch", "Reagan", 6},
+  { "Transposition", "Fruit Basket", "Monkey Wort", "Glogg", 54 },
+  { "Fern", "Glasnost and Perestroika", "Latitude", "Bomberman!!!", 2 },
   {NULL, }
 };
 
 static ListSort childdata[] =
 {
-  { "Heineken", "Nederland", "Wanda de vis", "Electronische post"},
-  { "Hottentottententententoonstelling", "Rotterdam", "Ionentransport", "Palm"},
-  { "Fruitvlieg", "Eigenfrequentie", "Supernoodles", "Ramen"},
-  { "Gereedschapskist", "Stelsel van lineaire vergelijkingen", "Tulpen", "Badlaken"},
-  { "Stereoinstallatie", "Rood tapijt", "Het periodieke systeem der elementen", "Laaste woord"},
+  { "Heineken", "Nederland", "Wanda de vis", "Electronische post", 2},
+  { "Hottentottententententoonstelling", "Rotterdam", "Ionentransport", "Palm", 45},
+  { "Fruitvlieg", "Eigenfrequentie", "Supernoodles", "Ramen", 2002},
+  { "Gereedschapskist", "Stelsel van lineaire vergelijkingen", "Tulpen", "Badlaken", 1311},
+  { "Stereoinstallatie", "Rood tapijt", "Het periodieke systeem der elementen", "Laaste woord", 200},
   {NULL, }
 };
   
@@ -44,9 +68,35 @@ enum
   WORD_COLUMN_2,
   WORD_COLUMN_3,
   WORD_COLUMN_4,
+  NUMBER_COLUMN_1,
   NUM_COLUMNS
 };
 
+gboolean
+select_func (GtkTreeSelection  *selection,
+            GtkTreeModel      *model,
+            GtkTreePath       *path,
+            gboolean           path_currently_selected,
+            gpointer           data)
+{
+  if (gtk_tree_path_get_depth (path) > 1)
+    return TRUE;
+  return FALSE;
+}
+
+static void
+switch_search_method (GtkWidget *button,
+                     gpointer   tree_view)
+{
+  if (!gtk_tree_view_get_search_entry (GTK_TREE_VIEW (tree_view)))
+    {
+      gpointer data = g_object_get_data (tree_view, "my-search-entry");
+      gtk_tree_view_set_search_entry (GTK_TREE_VIEW (tree_view), GTK_ENTRY (data));
+    }
+  else
+    gtk_tree_view_set_search_entry (GTK_TREE_VIEW (tree_view), NULL);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -55,13 +105,14 @@ main (int argc, char *argv[])
   GtkWidget *scrolled_window;
   GtkWidget *tree_view;
   GtkTreeStore *model;
-  GtkTreeModel *smodel;
+  GtkTreeModel *smodel = NULL;
   GtkTreeModel *ssmodel = NULL;
   GtkCellRenderer *renderer;
   GtkTreeViewColumn *column;
   GtkTreeIter iter;
-  gint i, j;
+  gint i;
 
+  GtkWidget *entry, *button;
   GtkWidget *window2, *vbox2, *scrolled_window2, *tree_view2;
   GtkWidget *window3, *vbox3, *scrolled_window3, *tree_view3;
 
@@ -73,54 +124,82 @@ main (int argc, char *argv[])
 
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title (GTK_WINDOW (window), "Words, words, words - Window 1");
-  gtk_signal_connect (GTK_OBJECT (window), "destroy", gtk_main_quit, NULL);
+  g_signal_connect (window, "destroy", gtk_main_quit, NULL);
   vbox = gtk_vbox_new (FALSE, 8);
   gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
-  gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new ("Jonathan and Kristian's list of cool words.\n\nThis is just a GtkTreeStore"), FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new ("Jonathan and Kristian's list of cool words. (And Anders' cool list of numbers) \n\nThis is just a GtkTreeStore"), FALSE, FALSE, 0);
   gtk_container_add (GTK_CONTAINER (window), vbox);
 
+  entry = gtk_entry_new ();
+  gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0);
+
+  button = gtk_button_new_with_label ("Switch search method");
+  gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
+
   scrolled_window = gtk_scrolled_window_new (NULL, NULL);
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);
 
-  model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+  model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT);
 
+/*
   smodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (model));
   ssmodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (smodel));
-
+*/
   tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
-  for (j = 0; j < 2; j++)
-    for (i = 0; data[i].word_1 != NULL; i++)
-      {
-       gint k;
-
-       gtk_tree_store_prepend (GTK_TREE_STORE (model), &iter, NULL);
-       gtk_tree_store_set (GTK_TREE_STORE (model), &iter,
-                           WORD_COLUMN_1, data[i].word_1,
-                           WORD_COLUMN_2, data[i].word_2,
-                           WORD_COLUMN_3, data[i].word_3,
-                           WORD_COLUMN_4, data[i].word_4,
-                           -1);
-
-       for (k = 0; childdata[k].word_1 != NULL; k++)
-         {
-           GtkTreeIter child_iter;
-
-           gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
-           gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter,
-                               WORD_COLUMN_1, childdata[k].word_1,
-                               WORD_COLUMN_2, childdata[k].word_2,
-                               WORD_COLUMN_3, childdata[k].word_3,
-                               WORD_COLUMN_4, childdata[k].word_4,
-                               -1);
-         }
-      }
-/*
+
+  gtk_tree_view_set_search_entry (GTK_TREE_VIEW (tree_view), GTK_ENTRY (entry));
+  g_object_set_data (G_OBJECT (tree_view), "my-search-entry", entry);
+  g_signal_connect (button, "clicked",
+                   G_CALLBACK (switch_search_method), tree_view);
+
+ /* gtk_tree_selection_set_select_function (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), select_func, NULL, NULL);*/
+
+  /* 12 iters now, 12 later... */
+  for (i = 0; data[i].word_1 != NULL; i++)
+    {
+      gint k;
+      GtkTreeIter child_iter;
+
+
+      gtk_tree_store_prepend (GTK_TREE_STORE (model), &iter, NULL);
+      gtk_tree_store_set (GTK_TREE_STORE (model), &iter,
+                         WORD_COLUMN_1, data[i].word_1,
+                         WORD_COLUMN_2, data[i].word_2,
+                         WORD_COLUMN_3, data[i].word_3,
+                         WORD_COLUMN_4, data[i].word_4,
+                         NUMBER_COLUMN_1, data[i].number_1,
+                         -1);
+
+      gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
+      gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter,
+                         WORD_COLUMN_1, data[i].word_1,
+                         WORD_COLUMN_2, data[i].word_2,
+                         WORD_COLUMN_3, data[i].word_3,
+                         WORD_COLUMN_4, data[i].word_4,
+                         NUMBER_COLUMN_1, data[i].number_1,
+                         -1);
+
+      for (k = 0; childdata[k].word_1 != NULL; k++)
+       {
+         gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
+         gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter,
+                             WORD_COLUMN_1, childdata[k].word_1,
+                             WORD_COLUMN_2, childdata[k].word_2,
+                             WORD_COLUMN_3, childdata[k].word_3,
+                             WORD_COLUMN_4, childdata[k].word_4,
+                             NUMBER_COLUMN_1, childdata[k].number_1,
+                             -1);
+
+       }
+
+    }
+  
   smodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (model));
   ssmodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (smodel));
-*/
-  g_object_unref (G_OBJECT (model));
+  g_object_unref (model);
+
   gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
 
   renderer = gtk_cell_renderer_text_new ();
@@ -149,178 +228,190 @@ main (int argc, char *argv[])
                                                     "text", WORD_COLUMN_4,
                                                     NULL);
   gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4);
-
+  gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+  
+  renderer = gtk_cell_renderer_text_new ();
+  column = gtk_tree_view_column_new_with_attributes ("First Number", renderer,
+                                                    "text", NUMBER_COLUMN_1,
+                                                    NULL);
+  gtk_tree_view_column_set_sort_column_id (column, NUMBER_COLUMN_1);
   gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
 
-  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel),
+  /*  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel),
                                        WORD_COLUMN_1,
-                                       GTK_SORT_ASCENDING);
-  
+                                       GTK_SORT_ASCENDING);*/
+
   gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
   gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);
   gtk_widget_show_all (window);
 
-
   /**
    * Second window - GtkTreeModelSort wrapping the GtkTreeStore
    */
 
-  window2 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_window_set_title (GTK_WINDOW (window2), 
-                       "Words, words, words - window 2");
-  gtk_signal_connect (GTK_OBJECT (window2), "destroy", gtk_main_quit, NULL);
-  vbox2 = gtk_vbox_new (FALSE, 8);
-  gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
-  gtk_box_pack_start (GTK_BOX (vbox2), 
-                     gtk_label_new ("Jonathan and Kristian's list of words.\n\nA GtkTreeModelSort wrapping the GtkTreeStore of window 1"),
-                      FALSE, FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (window2), vbox2);
-
-  scrolled_window2 = gtk_scrolled_window_new (NULL, NULL);
-  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window2),
-                                       GTK_SHADOW_ETCHED_IN);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window2),
-                                  GTK_POLICY_AUTOMATIC,
-                                  GTK_POLICY_AUTOMATIC);
-  gtk_box_pack_start (GTK_BOX (vbox2), scrolled_window2, TRUE, TRUE, 0);
-
-
-  tree_view2 = gtk_tree_view_new_with_model (smodel);
-  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view2), TRUE);
-
-
-  renderer = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes ("First Word", renderer,
-                                                     "text", WORD_COLUMN_1,
-                                                     NULL);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
-  gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1);
-
-  renderer = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer,
-                                                     "text", WORD_COLUMN_2,
-                                                     NULL);
-  gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
-
-  renderer = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer,
-                                                     "text", WORD_COLUMN_3,
-                                                     NULL);
-  gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
-
-  renderer = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer,
-                                                     "text", WORD_COLUMN_4,
-                                                     NULL);
-  gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
-
-  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel),
-                                        WORD_COLUMN_1,
-                                        GTK_SORT_DESCENDING);
-
-  gtk_container_add (GTK_CONTAINER (scrolled_window2), tree_view2);
-  gtk_window_set_default_size (GTK_WINDOW (window2), 400, 400);
-  gtk_widget_show_all (window2);
-
+  if (smodel)
+    {
+      window2 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+      gtk_window_set_title (GTK_WINDOW (window2), 
+                           "Words, words, words - window 2");
+      g_signal_connect (window2, "destroy", gtk_main_quit, NULL);
+      vbox2 = gtk_vbox_new (FALSE, 8);
+      gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
+      gtk_box_pack_start (GTK_BOX (vbox2), 
+                         gtk_label_new ("Jonathan and Kristian's list of words.\n\nA GtkTreeModelSort wrapping the GtkTreeStore of window 1"),
+                         FALSE, FALSE, 0);
+      gtk_container_add (GTK_CONTAINER (window2), vbox2);
+      
+      scrolled_window2 = gtk_scrolled_window_new (NULL, NULL);
+      gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window2),
+                                          GTK_SHADOW_ETCHED_IN);
+      gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window2),
+                                     GTK_POLICY_AUTOMATIC,
+                                     GTK_POLICY_AUTOMATIC);
+      gtk_box_pack_start (GTK_BOX (vbox2), scrolled_window2, TRUE, TRUE, 0);
+      
+      
+      tree_view2 = gtk_tree_view_new_with_model (smodel);
+      gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view2), TRUE);
+      
+      
+      renderer = gtk_cell_renderer_text_new ();
+      column = gtk_tree_view_column_new_with_attributes ("First Word", renderer,
+                                                        "text", WORD_COLUMN_1,
+                                                        NULL);
+      gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
+      gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1);
+      
+      renderer = gtk_cell_renderer_text_new ();
+      column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer,
+                                                        "text", WORD_COLUMN_2,
+                                                        NULL);
+      gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2);
+      gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
+      
+      renderer = gtk_cell_renderer_text_new ();
+      column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer,
+                                                        "text", WORD_COLUMN_3,
+                                                        NULL);
+      gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3);
+      gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
+      
+      renderer = gtk_cell_renderer_text_new ();
+      column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer,
+                                                        "text", WORD_COLUMN_4,
+                                                        NULL);
+      gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4);
+      gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
+      
+      /*      gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (smodel),
+                                              (GtkTreeIterCompareFunc)gtk_tree_data_list_compare_func,
+                                              NULL, NULL);
+      gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel),
+                                           WORD_COLUMN_1,
+                                           GTK_SORT_DESCENDING);*/
+      
+      
+      gtk_container_add (GTK_CONTAINER (scrolled_window2), tree_view2);
+      gtk_window_set_default_size (GTK_WINDOW (window2), 400, 400);
+      gtk_widget_show_all (window2);
+    }
+  
   /**
    * Third window - GtkTreeModelSort wrapping the GtkTreeModelSort which
    * is wrapping the GtkTreeStore.
    */
+  
+  if (ssmodel)
+    {
+      window3 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+      gtk_window_set_title (GTK_WINDOW (window3), 
+                           "Words, words, words - Window 3");
+      g_signal_connect (window3, "destroy", gtk_main_quit, NULL);
+      vbox3 = gtk_vbox_new (FALSE, 8);
+      gtk_container_set_border_width (GTK_CONTAINER (vbox3), 8);
+      gtk_box_pack_start (GTK_BOX (vbox3), 
+                         gtk_label_new ("Jonathan and Kristian's list of words.\n\nA GtkTreeModelSort wrapping the GtkTreeModelSort of window 2"),
+                         FALSE, FALSE, 0);
+      gtk_container_add (GTK_CONTAINER (window3), vbox3);
+      
+      scrolled_window3 = gtk_scrolled_window_new (NULL, NULL);
+      gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window3),
+                                          GTK_SHADOW_ETCHED_IN);
+      gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window3),
+                                     GTK_POLICY_AUTOMATIC,
+                                     GTK_POLICY_AUTOMATIC);
+      gtk_box_pack_start (GTK_BOX (vbox3), scrolled_window3, TRUE, TRUE, 0);
+      
+      
+      tree_view3 = gtk_tree_view_new_with_model (ssmodel);
+      gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view3), TRUE);
+      
+      renderer = gtk_cell_renderer_text_new ();
+      column = gtk_tree_view_column_new_with_attributes ("First Word", renderer,
+                                                        "text", WORD_COLUMN_1,
+                                                        NULL);
+      gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
+      gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1);
+      
+      renderer = gtk_cell_renderer_text_new ();
+      column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer,
+                                                        "text", WORD_COLUMN_2,
+                                                        NULL);
+      gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2);
+      gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
+      
+      renderer = gtk_cell_renderer_text_new ();
+      column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer,
+                                                        "text", WORD_COLUMN_3,
+                                                        NULL);
+      gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3);
+      gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
+      
+      renderer = gtk_cell_renderer_text_new ();
+      column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer,
+                                                        "text", WORD_COLUMN_4,
+                                                        NULL);
+      gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4);
+      gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
+      
+      /*      gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (ssmodel),
+                                              (GtkTreeIterCompareFunc)gtk_tree_data_list_compare_func,
+                                              NULL, NULL);
+      gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (ssmodel),
+                                           WORD_COLUMN_1,
+                                           GTK_SORT_ASCENDING);*/
+      
+      gtk_container_add (GTK_CONTAINER (scrolled_window3), tree_view3);
+      gtk_window_set_default_size (GTK_WINDOW (window3), 400, 400);
+      gtk_widget_show_all (window3);
+    }
+
+  for (i = 0; data[i].word_1 != NULL; i++)
+    {
+      gint k;
+      
+      gtk_tree_store_prepend (GTK_TREE_STORE (model), &iter, NULL);
+      gtk_tree_store_set (GTK_TREE_STORE (model), &iter,
+                         WORD_COLUMN_1, data[i].word_1,
+                         WORD_COLUMN_2, data[i].word_2,
+                         WORD_COLUMN_3, data[i].word_3,
+                         WORD_COLUMN_4, data[i].word_4,
+                         -1);
+      for (k = 0; childdata[k].word_1 != NULL; k++)
+       {
+         GtkTreeIter child_iter;
+         
+         gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
+         gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter,
+                             WORD_COLUMN_1, childdata[k].word_1,
+                             WORD_COLUMN_2, childdata[k].word_2,
+                             WORD_COLUMN_3, childdata[k].word_3,
+                             WORD_COLUMN_4, childdata[k].word_4,
+                             -1);
+       }
+    }
 
-  if (ssmodel) {
-  window3 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_window_set_title (GTK_WINDOW (window3), 
-                       "Words, words, words - Window 3");
-  gtk_signal_connect (GTK_OBJECT (window3), "destroy", gtk_main_quit, NULL);
-  vbox3 = gtk_vbox_new (FALSE, 8);
-  gtk_container_set_border_width (GTK_CONTAINER (vbox3), 8);
-  gtk_box_pack_start (GTK_BOX (vbox3), 
-                     gtk_label_new ("Jonathan and Kristian's list of words.\n\nA GtkTreeModelSort wrapping the GtkTreeModelSort of window 2"),
-                      FALSE, FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (window3), vbox3);
-
-  scrolled_window3 = gtk_scrolled_window_new (NULL, NULL);
-  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window3),
-                                       GTK_SHADOW_ETCHED_IN);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window3),
-                                  GTK_POLICY_AUTOMATIC,
-                                  GTK_POLICY_AUTOMATIC);
-  gtk_box_pack_start (GTK_BOX (vbox3), scrolled_window3, TRUE, TRUE, 0);
-
-
-  tree_view3 = gtk_tree_view_new_with_model (ssmodel);
-  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view3), TRUE);
-
-
-  renderer = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes ("First Word", renderer,
-                                                     "text", WORD_COLUMN_1,
-                                                     NULL);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
-  gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1);
-
-  renderer = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer,
-                                                     "text", WORD_COLUMN_2,
-                                                     NULL);
-  gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
-
-  renderer = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer,
-                                                     "text", WORD_COLUMN_3,
-                                                     NULL);
-  gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
-
-  renderer = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer,
-                                                     "text", WORD_COLUMN_4,
-                                                     NULL);
-  gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
-
-  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (ssmodel),
-                                        WORD_COLUMN_1,
-                                        GTK_SORT_DESCENDING);
-
-  gtk_container_add (GTK_CONTAINER (scrolled_window3), tree_view3);
-  gtk_window_set_default_size (GTK_WINDOW (window3), 400, 400);
-  gtk_widget_show_all (window3);
-  }
-
-/*
-  for (j = 0; j < 2; j++)
-    for (i = 0; data[i].word_1 != NULL; i++)
-      {
-       gint k;
-
-        gtk_tree_store_prepend (GTK_TREE_STORE (model), &iter, NULL);
-        gtk_tree_store_set (GTK_TREE_STORE (model), &iter,
-                            WORD_COLUMN_1, data[i].word_1,
-                            WORD_COLUMN_2, data[i].word_2,
-                            WORD_COLUMN_3, data[i].word_3,
-                            WORD_COLUMN_4, data[i].word_4,
-                            -1);
-
-       for (k = 0; childdata[k].word_1 != NULL; k++)
-         {
-           GtkTreeIter child_iter;
-
-           gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
-           gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter,
-                               WORD_COLUMN_1, childdata[k].word_1,
-                               WORD_COLUMN_2, childdata[k].word_2,
-                               WORD_COLUMN_3, childdata[k].word_3,
-                               WORD_COLUMN_4, childdata[k].word_4,
-                               -1);
-         }
-      }
-*/
   gtk_main ();
-
+  
   return 0;
 }