[Gnucash-changes] r12193 - gnucash/trunk - Improve tooltip display for almost all option types. Add tooltips for

Christian Stimming cstim at cvs.gnucash.org
Wed Dec 28 17:05:50 EST 2005


Author: cstim
Date: 2005-12-28 17:05:49 -0500 (Wed, 28 Dec 2005)
New Revision: 12193
Trac: http://svn.gnucash.org/trac/changeset/12193

Modified:
   gnucash/trunk/ChangeLog
   gnucash/trunk/src/gnome-utils/dialog-options.c
Log:
Improve tooltip display for almost all option types. Add tooltips for
buttons where they were missing. Pack option widgets into GtkEventBox
so that tooltips are really shown. Fix various string i18n bugs.



Modified: gnucash/trunk/ChangeLog
===================================================================
--- gnucash/trunk/ChangeLog	2005-12-28 22:05:11 UTC (rev 12192)
+++ gnucash/trunk/ChangeLog	2005-12-28 22:05:49 UTC (rev 12193)
@@ -1,3 +1,10 @@
+2005-12-28  Christian Stimming  <stimming at tuhh.de>
+
+	* src/gnome-utils/dialog-options.c: Improve tooltip display for
+	almost all option types. Add tooltips for buttons where they were
+	missing. Pack option widgets into GtkEventBox so that tooltips are
+	really shown. Fix various string i18n bugs.
+
 2005-12-27  Christian Stimming  <stimming at tuhh.de>
 
 	* src/register/register-core/quickfillcell.c (utf8_caseequal_len):

Modified: gnucash/trunk/src/gnome-utils/dialog-options.c
===================================================================
--- gnucash/trunk/src/gnome-utils/dialog-options.c	2005-12-28 22:05:11 UTC (rev 12192)
+++ gnucash/trunk/src/gnome-utils/dialog-options.c	2005-12-28 22:05:49 UTC (rev 12193)
@@ -529,7 +529,7 @@
 }
 
 static GtkWidget *
-gnc_option_create_multichoice_widget(GNCOption *option)
+gnc_option_create_multichoice_widget(GNCOption *option, GtkTooltips *tooltips)
 {
   GtkWidget *widget;
   int num_values;
@@ -549,6 +549,20 @@
     } else {
       gtk_combo_box_append_text(GTK_COMBO_BOX(widget), "");
     }
+
+    /* FIXME: tooltip texts for each option are available but cannot
+       be set currently. See
+       https://lists.gnucash.org/pipermail/gnucash-devel/2005-December/015139.html 
+    */
+    /* Old 1-8-branch code:
+    string = gnc_option_permissible_value_description(option, i);
+    gnc_gtk_combo_box_set_tooltip(GTK_COMBO_BOX(widget), string ? _(string) : "");
+    if (string)
+      g_free(string);
+    */
+    /* New code needs to do something like this:
+       gtk_tooltips_set_tip(tooltips, widget, string ? _(string) : "", NULL);
+     */
   }
   g_signal_connect(G_OBJECT(widget), "changed",
         	   G_CALLBACK(gnc_option_multichoice_cb), option);
@@ -661,7 +675,7 @@
 
 
 static GtkWidget *
-gnc_option_create_account_widget(GNCOption *option, char *name)
+gnc_option_create_account_widget(GNCOption *option, char *name, GtkTooltips *tooltips)
 {
   gboolean multiple_selection;
   GtkWidget *scroll_win;
@@ -725,12 +739,14 @@
   {
     button = gtk_button_new_with_label(_("Select All"));
     gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+    gtk_tooltips_set_tip(tooltips, button, _("Select all accounts."), NULL);
 
     g_signal_connect(G_OBJECT(button), "clicked",
 		     G_CALLBACK(gnc_option_account_select_all_cb), option);
 
     button = gtk_button_new_with_label(_("Clear All"));
     gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+    gtk_tooltips_set_tip(tooltips, button, _("Clear the selection and unselect all accounts."), NULL);
 
     g_signal_connect(G_OBJECT(button), "clicked",
 		     G_CALLBACK(gnc_option_account_clear_all_cb), option);
@@ -738,6 +754,7 @@
 
   button = gtk_button_new_with_label(_("Select Default"));
   gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+  gtk_tooltips_set_tip(tooltips, button, _("Select the default account selection."), NULL);
 
   g_signal_connect(G_OBJECT(button), "clicked",
 		   G_CALLBACK(gnc_option_default_cb), option);
@@ -786,7 +803,7 @@
 }
 
 static GtkWidget *
-gnc_option_create_list_widget(GNCOption *option, char *name)
+gnc_option_create_list_widget(GNCOption *option, char *name, GtkTooltips *tooltips)
 {
   GtkWidget *scroll_win;
   GtkWidget *top_hbox;
@@ -849,18 +866,21 @@
 
   button = gtk_button_new_with_label(_("Select All"));
   gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+  gtk_tooltips_set_tip(tooltips, button, _("Select all entries."), NULL);
 
   g_signal_connect(G_OBJECT(button), "clicked",
 		   G_CALLBACK(gnc_option_list_select_all_cb), option);
 
   button = gtk_button_new_with_label(_("Clear All"));
   gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+  gtk_tooltips_set_tip(tooltips, button, _("Clear the selection and unselect all entries."), NULL);
 
   g_signal_connect(G_OBJECT(button), "clicked",
 		   G_CALLBACK(gnc_option_list_clear_all_cb), option);
 
   button = gtk_button_new_with_label(_("Select Default"));
   gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+  gtk_tooltips_set_tip(tooltips, button, _("Select the default selection."), NULL);
 
   g_signal_connect(G_OBJECT(button), "clicked",
 		   G_CALLBACK(gnc_option_default_cb), option);
@@ -925,12 +945,20 @@
   }
   else
   {
-    PERR("Unknown type. Ignoring.\n");
+    PERR("Unknown option type. Ignoring option \"%s\".\n", name);
   }
 
-  if (!packed && (enclosing != NULL))
-    gtk_box_pack_start(page_box, enclosing, FALSE, FALSE, 0);
+  if (!packed && (enclosing != NULL)) {
+    /* Pack option widget into an extra eventbox because otherwise the
+       "documentation" tooltip is not displayed. */
+    GtkWidget *eventbox = gtk_event_box_new();
 
+    gtk_container_add (GTK_CONTAINER (eventbox), enclosing);
+    gtk_box_pack_start (page_box, eventbox, FALSE, FALSE, 0);
+
+    gtk_tooltips_set_tip (tooltips, eventbox, documentation, NULL);
+  }
+
   if (value != NULL)
     gtk_tooltips_set_tip(tooltips, value, documentation, NULL);
 
@@ -952,7 +980,8 @@
 
 static gint
 gnc_options_dialog_append_page(GNCOptionWin * propertybox,
-                               GNCOptionSection *section)
+                               GNCOptionSection *section,
+			       GtkTooltips *tooltips)
 {
   GNCOption *option;
   GtkWidget *page_label;
@@ -975,7 +1004,7 @@
     return -1;
   advanced = (strncmp(name, "_+", 2) == 0);
   name_offset = (advanced) ? 2 : 0;
-  page_label = gtk_label_new(_(name) + name_offset);
+  page_label = gtk_label_new(_(name + name_offset));
   gtk_widget_show(page_label);
 
   /* Build this options page */
@@ -1002,8 +1031,11 @@
   gtk_container_set_border_width(GTK_CONTAINER (buttonbox), 5);
   gtk_box_pack_end(GTK_BOX(page_content_box), buttonbox, FALSE, FALSE, 0);
 
-  /* Install the lone reset button */
+  /* The reset button on each option page */
   reset_button = gtk_button_new_with_label (_("Defaults"));
+  gtk_tooltips_set_tip(tooltips, reset_button, 
+		       _("Reset all values to their defaults."), NULL);
+
   g_signal_connect(G_OBJECT(reset_button), "clicked",
 		   G_CALLBACK(gnc_options_dialog_reset_cb), propertybox);
   g_object_set_data(G_OBJECT(reset_button), "section", section);
@@ -1018,7 +1050,7 @@
 
   if (propertybox->page_list) {
     /* Build the matching list item for selecting from large page sets */
-    listitem = gtk_list_item_new_with_label(_(name) + name_offset);
+    listitem = gtk_list_item_new_with_label(_(name + name_offset));
     gtk_widget_show(listitem);
     gtk_container_add(GTK_CONTAINER(propertybox->page_list), listitem);
 
@@ -1087,7 +1119,7 @@
     const char *section_name;
 
     section = gnc_option_db_get_section(odb, i);
-    page = gnc_options_dialog_append_page(propertybox, section);
+    page = gnc_options_dialog_append_page(propertybox, section, propertybox->tips);
 
     section_name = gnc_option_section_name(section);
     if (safe_strcmp(section_name, default_section_name) == 0)
@@ -1472,10 +1504,6 @@
   gnc_option_set_widget (option, value);
   gnc_option_set_ui_value(option, FALSE);
 
-  if (documentation != NULL)
-    gtk_tooltips_set_tip(tooltips, value,
-			 documentation, NULL);
-
   g_signal_connect(G_OBJECT(value), "changed",
 		   G_CALLBACK(gnc_option_changed_widget_cb), option);
 
@@ -1541,7 +1569,7 @@
 
   *enclosing = gtk_hbox_new(FALSE, 5);
 
-  value = gnc_option_create_multichoice_widget(option);
+  value = gnc_option_create_multichoice_widget(option, tooltips);
   gnc_option_set_widget (option, value);
 
   gnc_option_set_ui_value(option, FALSE);
@@ -1561,6 +1589,7 @@
   GtkWidget *value;
   GtkWidget *label;
   gchar *colon_name;
+  GtkWidget *eventbox;
 
   colon_name = g_strconcat(name, ":", NULL);
   label= gtk_label_new(colon_name);
@@ -1576,8 +1605,15 @@
   gtk_box_pack_start(GTK_BOX(*enclosing), label, FALSE, FALSE, 0);
   gtk_box_pack_start(GTK_BOX(*enclosing), value, FALSE, FALSE, 0);
 
-  gtk_box_pack_start(page_box, *enclosing, FALSE, FALSE, 5);
+  /* Pack option widget into an extra eventbox because otherwise the
+     "documentation" tooltip is not displayed. */
+  eventbox = gtk_event_box_new();
+  gtk_container_add (GTK_CONTAINER (eventbox), *enclosing);
+  gtk_box_pack_start(page_box, eventbox, FALSE, FALSE, 5);
   *packed = TRUE;  
+
+  gtk_tooltips_set_tip (tooltips, eventbox, documentation, NULL);
+
   gnc_option_set_ui_value(option, FALSE);
   gtk_widget_show_all(*enclosing);
   return value;
@@ -1593,7 +1629,7 @@
   GtkWidget *value;
   GtkTreeSelection *selection;
 
-  *enclosing = gnc_option_create_account_widget(option, name);
+  *enclosing = gnc_option_create_account_widget(option, name, tooltips);
   value = gnc_option_get_widget (option);
 
   gtk_tooltips_set_tip(tooltips, *enclosing, documentation, NULL);
@@ -1660,16 +1696,21 @@
 				  GtkWidget **enclosing, gboolean *packed)
 {
   GtkWidget *value;
+  GtkWidget *eventbox;
   gint num_lines;
 
-  *enclosing = gnc_option_create_list_widget(option, name);
+  *enclosing = gnc_option_create_list_widget(option, name, tooltips);
   value = gnc_option_get_widget (option);
 
-  gtk_tooltips_set_tip(tooltips, *enclosing, documentation, NULL);
-
-  gtk_box_pack_start(page_box, *enclosing, FALSE, FALSE, 5);
+  /* Pack option widget into an extra eventbox because otherwise the
+     "documentation" tooltip is not displayed. */
+  eventbox = gtk_event_box_new();
+  gtk_container_add (GTK_CONTAINER (eventbox), *enclosing);
+  gtk_box_pack_start(page_box, eventbox, FALSE, FALSE, 5);
   *packed = TRUE;
 
+  gtk_tooltips_set_tip(tooltips, eventbox, documentation, NULL);
+
   //gtk_widget_realize(value);
 
   gnc_option_set_ui_value(option, FALSE);
@@ -1870,6 +1911,7 @@
 #ifdef HAVE_GLIB26
   value = gtk_file_chooser_button_new(_("Select image"),
 				      GTK_FILE_CHOOSER_ACTION_OPEN);
+  gtk_tooltips_set_tip(tooltips, value, _("Select an image file."), NULL);
   g_object_set(G_OBJECT(value),
 	       "width-chars", 30,
 	       "preview-widget", gtk_image_new(),
@@ -1883,6 +1925,7 @@
 #else
   value = gnome_pixmap_entry_new(NULL, _("Select pixmap"),
 				 FALSE);
+  gtk_tooltips_set_tip(tooltips, value, _("Select an image file."), NULL);
   gnome_pixmap_entry_set_preview(GNOME_PIXMAP_ENTRY(value), FALSE);
 
   entry = gnome_pixmap_entry_gtk_entry (GNOME_PIXMAP_ENTRY(value));



More information about the gnucash-changes mailing list