Add some tooltips.

2004-09-23  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkfilechooserdefault.c: Add some tooltips.
This commit is contained in:
Matthias Clasen 2004-09-23 19:39:39 +00:00 committed by Matthias Clasen
parent ecc1ceee3c
commit c09081f84c
5 changed files with 110 additions and 8 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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);