diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 6 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 6 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 6 | ||||
-rw-r--r-- | gtk/gtkfilechooserdefault.c | 94 |
5 files changed, 110 insertions, 8 deletions
@@ -1,9 +1,13 @@ +2004-09-23 Matthias Clasen <mclasen@redhat.com> + + * gtk/gtkfilechooserdefault.c: Add some tooltips. + 2004-09-22 Matthias Clasen <mclasen@redhat.com> * gtk/gtkrange.c (gtk_range_map, gtk_range_unmap): * gtk/gtkbutton.c (gtk_button_map, gtk_button_unmap): Remove unnecessary g_return_if_fail()s from virtual functions. (#153469, - (Tristan Van Berkom) + (Tristan Van Berkom) * gtk/gtkaboutdialog.c (gtk_about_dialog_finalize): Don't leak cursors. (#153468, Christian Persch) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 6af83c1a59..2a1c27f8dd 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,9 +1,13 @@ +2004-09-23 Matthias Clasen <mclasen@redhat.com> + + * gtk/gtkfilechooserdefault.c: Add some tooltips. + 2004-09-22 Matthias Clasen <mclasen@redhat.com> * gtk/gtkrange.c (gtk_range_map, gtk_range_unmap): * gtk/gtkbutton.c (gtk_button_map, gtk_button_unmap): Remove unnecessary g_return_if_fail()s from virtual functions. (#153469, - (Tristan Van Berkom) + (Tristan Van Berkom) * gtk/gtkaboutdialog.c (gtk_about_dialog_finalize): Don't leak cursors. (#153468, Christian Persch) diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 6af83c1a59..2a1c27f8dd 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,9 +1,13 @@ +2004-09-23 Matthias Clasen <mclasen@redhat.com> + + * gtk/gtkfilechooserdefault.c: Add some tooltips. + 2004-09-22 Matthias Clasen <mclasen@redhat.com> * gtk/gtkrange.c (gtk_range_map, gtk_range_unmap): * gtk/gtkbutton.c (gtk_button_map, gtk_button_unmap): Remove unnecessary g_return_if_fail()s from virtual functions. (#153469, - (Tristan Van Berkom) + (Tristan Van Berkom) * gtk/gtkaboutdialog.c (gtk_about_dialog_finalize): Don't leak cursors. (#153468, Christian Persch) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 6af83c1a59..2a1c27f8dd 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,9 +1,13 @@ +2004-09-23 Matthias Clasen <mclasen@redhat.com> + + * gtk/gtkfilechooserdefault.c: Add some tooltips. + 2004-09-22 Matthias Clasen <mclasen@redhat.com> * gtk/gtkrange.c (gtk_range_map, gtk_range_unmap): * gtk/gtkbutton.c (gtk_button_map, gtk_button_unmap): Remove unnecessary g_return_if_fail()s from virtual functions. (#153469, - (Tristan Van Berkom) + (Tristan Van Berkom) * gtk/gtkaboutdialog.c (gtk_about_dialog_finalize): Don't leak cursors. (#153468, Christian Persch) diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index 6f8b905a0f..370a42a123 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -63,6 +63,7 @@ #include "gtktreemodelsort.h" #include "gtktreeselection.h" #include "gtktreestore.h" +#include "gtktooltips.h" #include "gtktypebuiltins.h" #include "gtkvbox.h" @@ -135,6 +136,8 @@ struct _GtkFileChooserDefault GtkFileFilter *current_filter; GSList *filters; + GtkTooltips *tooltips; + gboolean has_home; gboolean has_desktop; @@ -628,6 +631,10 @@ gtk_file_chooser_default_init (GtkFileChooserDefault *impl) gtk_widget_set_redraw_on_allocate (GTK_WIDGET (impl), TRUE); gtk_box_set_spacing (GTK_BOX (impl), 12); + + impl->tooltips = gtk_tooltips_new (); + g_object_ref (impl->tooltips); + gtk_object_sink (GTK_OBJECT (impl->tooltips)); } /* Frees the data columns for the specified iter in the shortcuts model*/ @@ -1920,7 +1927,7 @@ selection_check_foreach_cb (GtkTreeModel *model, /* Checks whether the selected items in the file list are all files or all folders */ static void selection_check (GtkFileChooserDefault *impl, - int *num_selected, + gint *num_selected, gboolean *all_files, gboolean *all_folders) { @@ -1987,6 +1994,34 @@ get_selected_path (GtkFileChooserDefault *impl) return closure.path; } +typedef struct { + GtkFileChooserDefault *impl; + gchar *tip; +} UpdateTooltipData; + +static void +update_tooltip (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data) +{ + UpdateTooltipData *udata = data; + GtkTreeIter child_iter; + const GtkFileInfo *info; + + if (udata->tip == NULL) + { + gtk_tree_model_sort_convert_iter_to_child_iter (udata->impl->sort_model, + &child_iter, + iter); + + info = _gtk_file_system_model_get_info (udata->impl->browse_files_model, &child_iter); + udata->tip = g_strdup_printf (_("Add the folder '%s' to the bookmarks"), + gtk_file_info_get_display_name (info)); + } +} + + /* Sensitize the "add bookmark" button if all the selected items are folders, or * if there are no selected items *and* the current folder is not in the * bookmarks list. De-sensitize the button otherwise. @@ -1994,9 +2029,10 @@ get_selected_path (GtkFileChooserDefault *impl) static void bookmarks_check_add_sensitivity (GtkFileChooserDefault *impl) { - int num_selected; + gint num_selected; gboolean all_folders; gboolean active; + gchar *tip; selection_check (impl, &num_selected, NULL, &all_folders); @@ -2017,6 +2053,28 @@ bookmarks_check_add_sensitivity (GtkFileChooserDefault *impl) if (impl->browse_files_popup_menu_add_shortcut_item) gtk_widget_set_sensitive (impl->browse_files_popup_menu_add_shortcut_item, (num_selected == 0) ? FALSE : active); + + if (active) + { + if (num_selected == 0) + tip = g_strdup_printf (_("Add the current folder to the bookmarks")); + else if (num_selected > 1) + tip = g_strdup_printf (_("Add the selected folders to the bookmarks")); + else + { + GtkTreeSelection *selection; + UpdateTooltipData data; + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view)); + data.impl = impl; + data.tip = NULL; + gtk_tree_selection_selected_foreach (selection, update_tooltip, &data); + tip = data.tip; + + } + gtk_tooltips_set_tip (impl->tooltips, impl->browse_shortcuts_add_button, tip, NULL); + g_free (tip); + } } /* Sets the sensitivity of the "remove bookmark" button depending on whether a @@ -2027,13 +2085,27 @@ bookmarks_check_remove_sensitivity (GtkFileChooserDefault *impl) { GtkTreeIter iter; gboolean removable = FALSE; - + gchar *name; + if (shortcuts_get_selected (impl, &iter)) gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter, SHORTCUTS_COL_REMOVABLE, &removable, + SHORTCUTS_COL_NAME, &name, -1); gtk_widget_set_sensitive (impl->browse_shortcuts_remove_button, removable); + + if (removable) + { + gchar *tip; + + tip = g_strdup_printf (_("Remove the bookmark '%s'"), name); + gtk_tooltips_set_tip (impl->tooltips, impl->browse_shortcuts_remove_button, + tip, NULL); + g_free (tip); + } + + g_free (name); } /* GtkWidget::drag-begin handler for the shortcuts list. */ @@ -2771,6 +2843,8 @@ shortcuts_pane_create (GtkFileChooserDefault *impl, TRUE, G_CALLBACK (add_bookmark_button_clicked_cb)); gtk_box_pack_start (GTK_BOX (hbox), impl->browse_shortcuts_add_button, TRUE, TRUE, 0); + gtk_tooltips_set_tip (impl->tooltips, impl->browse_shortcuts_add_button, + _("Add the selected folder to the bookmarks"), NULL); /* Remove bookmark button */ @@ -2781,6 +2855,8 @@ shortcuts_pane_create (GtkFileChooserDefault *impl, TRUE, G_CALLBACK (remove_bookmark_button_clicked_cb)); gtk_box_pack_start (GTK_BOX (hbox), impl->browse_shortcuts_remove_button, TRUE, TRUE, 0); + gtk_tooltips_set_tip (impl->tooltips, impl->browse_shortcuts_remove_button, + _("Remove the selected bookmark"), NULL); return vbox; } @@ -3108,6 +3184,7 @@ file_pane_create (GtkFileChooserDefault *impl, { GtkWidget *vbox; GtkWidget *hbox; + GtkWidget *ebox; GtkWidget *widget; vbox = gtk_vbox_new (FALSE, 6); @@ -3150,8 +3227,17 @@ file_pane_create (GtkFileChooserDefault *impl, impl->filter_combo_hbox = gtk_hbox_new (FALSE, 12); widget = filter_create (impl); + ebox = gtk_event_box_new (); + gtk_container_add (GTK_CONTAINER (ebox), widget); + gtk_widget_show (ebox); + /* We need enter/leave to do tooltips */ + gtk_widget_add_events (ebox, GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); + gtk_tooltips_set_tip (impl->tooltips, ebox, + _("Select which types of files are shown"), NULL); + + gtk_widget_show (widget); - gtk_box_pack_end (GTK_BOX (impl->filter_combo_hbox), widget, FALSE, FALSE, 0); + gtk_box_pack_end (GTK_BOX (impl->filter_combo_hbox), ebox, FALSE, FALSE, 0); gtk_size_group_add_widget (size_group, impl->filter_combo_hbox); gtk_box_pack_end (GTK_BOX (vbox), impl->filter_combo_hbox, FALSE, FALSE, 0); |