[Gnucash-changes] r14388 - gnucash/branches/deprecated-cleanup/src/gnome-utils - Another GtkCList -> GtkTreeView/GtkListStore conversion.

David Hampton hampton at cvs.gnucash.org
Sun Jun 18 21:43:41 EDT 2006


Author: hampton
Date: 2006-06-18 21:43:41 -0400 (Sun, 18 Jun 2006)
New Revision: 14388
Trac: http://svn.gnucash.org/trac/changeset/14388

Modified:
   gnucash/branches/deprecated-cleanup/src/gnome-utils/dialog-options.c
Log:
Another GtkCList -> GtkTreeView/GtkListStore conversion.

Modified: gnucash/branches/deprecated-cleanup/src/gnome-utils/dialog-options.c
===================================================================
--- gnucash/branches/deprecated-cleanup/src/gnome-utils/dialog-options.c	2006-06-19 00:34:09 UTC (rev 14387)
+++ gnucash/branches/deprecated-cleanup/src/gnome-utils/dialog-options.c	2006-06-19 01:43:41 UTC (rev 14388)
@@ -908,100 +908,90 @@
 }
 
 static void
-gnc_option_list_select_cb(GtkCList *clist, gint row, gint column,
-                          GdkEventButton *event, gpointer data)
+gnc_option_list_changed_cb(GtkTreeSelection *selection,
+			   GNCOption *option)
 {
-  GNCOption *option = data;
+  GtkTreeView *view;
 
-  gtk_clist_set_row_data(clist, row, GINT_TO_POINTER(TRUE));
-  gnc_option_changed_widget_cb(GTK_WIDGET(clist), option);
+  view = gtk_tree_selection_get_tree_view(selection);
+  gnc_option_changed_widget_cb(GTK_WIDGET(view), option);
 }
 
 static void
-gnc_option_list_unselect_cb(GtkCList *clist, gint row, gint column,
-                            GdkEventButton *event, gpointer data)
-{
-  GNCOption *option = data;
-
-  gtk_clist_set_row_data(clist, row, GINT_TO_POINTER(FALSE));
-  gnc_option_changed_widget_cb(GTK_WIDGET(clist), option);
-}
-
-static void
 gnc_option_list_select_all_cb(GtkWidget *widget, gpointer data)
 {
   GNCOption *option = data;
+  GtkTreeView *view;
+  GtkTreeSelection *selection;
 
-  gtk_clist_select_all(GTK_CLIST(gnc_option_get_widget (option)));
-  gnc_option_changed_widget_cb(widget, option);
+  view = GTK_TREE_VIEW(gnc_option_get_widget (option));
+  selection = gtk_tree_view_get_selection(view);
+  gtk_tree_selection_select_all(selection);
+  gnc_option_changed_widget_cb(GTK_WIDGET(view), option);
 }
 
 static void
 gnc_option_list_clear_all_cb(GtkWidget *widget, gpointer data)
 {
   GNCOption *option = data;
+  GtkTreeView *view;
+  GtkTreeSelection *selection;
 
-  gtk_clist_unselect_all(GTK_CLIST(gnc_option_get_widget (option)));
-  gnc_option_changed_widget_cb(widget, option);
+  view = GTK_TREE_VIEW(gnc_option_get_widget (option));
+  selection = gtk_tree_view_get_selection(view);
+  gtk_tree_selection_unselect_all(selection);
+  gnc_option_changed_widget_cb(GTK_WIDGET(view), option);
 }
 
 static GtkWidget *
 gnc_option_create_list_widget(GNCOption *option, char *name, GtkTooltips *tooltips)
 {
-  GtkWidget *scroll_win;
-  GtkWidget *top_hbox;
+  GtkListStore *store;
+  GtkTreeView *view;
+  GtkTreeIter iter;
+  GtkTreeViewColumn *column;
+  GtkCellRenderer *renderer;
+  GtkTreeSelection *selection;
+
   GtkWidget *button;
   GtkWidget *frame;
-  GtkWidget *clist;
   GtkWidget *hbox;
   GtkWidget *bbox;
   gint num_values;
-  gint width;
   gint i;
 
-  top_hbox = gtk_hbox_new(FALSE, 0);
-
   frame = gtk_frame_new(name);
-  gtk_box_pack_start(GTK_BOX(top_hbox), frame, FALSE, FALSE, 0);
-
   hbox = gtk_hbox_new(FALSE, 0);
   gtk_container_add(GTK_CONTAINER(frame), hbox);
 
-  clist = gtk_clist_new(1);
-  gtk_clist_column_titles_hide(GTK_CLIST(clist));
-  gtk_clist_set_selection_mode(GTK_CLIST(clist), GTK_SELECTION_MULTIPLE);
+  store = gtk_list_store_new(1, G_TYPE_STRING);
+  view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)));
+  renderer = gtk_cell_renderer_text_new();
+  column = gtk_tree_view_column_new_with_attributes("", renderer,
+						    "text", 0,
+						    NULL);
+  gtk_tree_view_append_column(view, column);
+  gtk_tree_view_set_headers_visible(view, FALSE);
 
   num_values = gnc_option_num_permissible_values(option);
   for (i = 0; i < num_values; i++)
   {
-    gchar *text[1];
     gchar *string;
 
     string = gnc_option_permissible_value_name(option, i);
-    if (string != NULL)
-    {
-      text[0] = *string ? _(string) : "";
-      gtk_clist_append(GTK_CLIST(clist), text);
-      gtk_clist_set_row_data(GTK_CLIST(clist), i, GINT_TO_POINTER(FALSE));
-      free(string);
-    }
-    else
-    {
-      PERR("bad value name\n");
-    }
+    gtk_list_store_append(store, &iter);
+    gtk_list_store_set(store, &iter,
+		       0, string ? string : "",
+		       -1);
   }
 
-  scroll_win = gtk_scrolled_window_new(NULL, NULL);
-  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_win),
-                                 GTK_POLICY_NEVER, 
-                                 GTK_POLICY_AUTOMATIC);
+  gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(view), FALSE, FALSE, 0);
 
-  width = gtk_clist_columns_autosize(GTK_CLIST(clist));
-  gtk_widget_set_size_request(scroll_win, width + 50, -1);
+  selection = gtk_tree_view_get_selection(view);
+  gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
+  g_signal_connect(selection, "changed",
+		   G_CALLBACK(gnc_option_list_changed_cb), option);
 
-  gtk_box_pack_start(GTK_BOX(hbox), scroll_win, FALSE, FALSE, 0);
-  gtk_container_set_border_width(GTK_CONTAINER(scroll_win), 5);
-  gtk_container_add(GTK_CONTAINER(scroll_win), clist);
 
   bbox = gtk_vbutton_box_new();
   gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_SPREAD);
@@ -1028,9 +1018,9 @@
   g_signal_connect(G_OBJECT(button), "clicked",
 		   G_CALLBACK(gnc_option_default_cb), option);
 
-  gnc_option_set_widget (option, clist);
+  gnc_option_set_widget (option, GTK_WIDGET(view));
 
-  return top_hbox;
+  return frame;
 }
 
 static void
@@ -1839,7 +1829,6 @@
 {
   GtkWidget *value;
   GtkWidget *eventbox;
-  gint num_lines;
 
   *enclosing = gnc_option_create_list_widget(option, name, tooltips);
   value = gnc_option_get_widget (option);
@@ -1853,21 +1842,8 @@
 
   gtk_tooltips_set_tip(tooltips, eventbox, documentation, NULL);
 
-  //gtk_widget_realize(value);
-
   gnc_option_set_ui_value(option, FALSE);
-
-  g_signal_connect(G_OBJECT(value), "select_row",
-		   G_CALLBACK(gnc_option_list_select_cb), option);
-  g_signal_connect(G_OBJECT(value), "unselect_row",
-		   G_CALLBACK(gnc_option_list_unselect_cb), option);
-
-  num_lines = gnc_option_num_permissible_values(option);
-  num_lines = MIN(num_lines, 9) + 1;
-
-  gtk_clist_set_row_height(GTK_CLIST(value), 0);
-  gtk_widget_set_size_request(value, -1, GTK_CLIST(value)->row_height * num_lines);
-  gtk_widget_show_all(*enclosing);
+  gtk_widget_show(*enclosing);
   return value;
 }
 
@@ -2406,14 +2382,13 @@
 gnc_option_set_ui_value_list (GNCOption *option, gboolean use_default,
 				 GtkWidget *widget, SCM value)
 {
-  gint num_rows, row;
+  GtkTreeSelection *selection;
+  GtkTreePath *path;
+  gint row;
 
-  gtk_clist_unselect_all(GTK_CLIST(widget));
+  selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
+  gtk_tree_selection_unselect_all(selection);
 
-  num_rows = gnc_option_num_permissible_values(option);
-  for (row = 0; row < num_rows; row++)
-    gtk_clist_set_row_data(GTK_CLIST(widget), row, GINT_TO_POINTER(FALSE));
-
   while (SCM_LISTP(value) && !SCM_NULLP(value))
   {
     SCM item;
@@ -2427,8 +2402,9 @@
       return TRUE;
     }
 
-    gtk_clist_select_row(GTK_CLIST(widget), row, 0);
-    gtk_clist_set_row_data(GTK_CLIST(widget), row, GINT_TO_POINTER(TRUE));
+    path = gtk_tree_path_new_from_indices(row, -1);
+    gtk_tree_selection_select_path(selection, path);
+    gtk_tree_path_free(path);
   }
 
   if (!SCM_LISTP(value) || !SCM_NULLP(value))
@@ -2824,20 +2800,23 @@
 static SCM
 gnc_option_get_ui_value_list (GNCOption *option, GtkWidget *widget)
 {
+  GtkTreeSelection *selection;
+  GtkTreePath *path;
   SCM result;
   gboolean selected;
-  GtkCList *clist;
   gint num_rows;
   gint row;
 
-  clist = GTK_CLIST(widget);
+  selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
   num_rows = gnc_option_num_permissible_values(option);
   result = scm_c_eval_string("'()");
 
   for (row = 0; row < num_rows; row++)
   {
-    selected = GPOINTER_TO_INT(gtk_clist_get_row_data(clist, row));
-    if (selected)
+   path = gtk_tree_path_new_from_indices(row, -1);
+   selected = gtk_tree_selection_path_is_selected(selection, path);
+   gtk_tree_path_free(path);
+   if (selected)
       result = scm_cons(gnc_option_permissible_value(option, row), result);
   }
 



More information about the gnucash-changes mailing list