Makes the contact image selector use GtkFileChooser if available.
2004-08-19 Hans Petter Jansson <hpj@ximian.com> Makes the contact image selector use GtkFileChooser if available. * gui/contact-editor/e-contact-editor.c (image_selected_cb): Take just the editor as an argument, so we can call from other places without having to supply dummy args. Rename to image_selected, since it's no longer strictly a callback. Include optional code to use the new GtkFileChooser. (image_cleared_cb): Ditto. Rename to image_cleared. (file_chooser_response): Optional response handling for GtkFileChooser. (image_clicked): Include optional code to use the new GtkFileChooser. Move common strings to variables. For GtkFileSelection, swap callback parameters for the modified image_selected () and image_cleared (). svn path=/trunk/; revision=26979
This commit is contained in:
committed by
Hans Petter
parent
c4b88ab629
commit
3f62ea5c85
@ -1,3 +1,18 @@
|
||||
2004-08-19 Hans Petter Jansson <hpj@ximian.com>
|
||||
|
||||
Makes the contact image selector use GtkFileChooser if available.
|
||||
|
||||
* gui/contact-editor/e-contact-editor.c (image_selected_cb): Take just
|
||||
the editor as an argument, so we can call from other places without
|
||||
having to supply dummy args. Rename to image_selected, since it's no
|
||||
longer strictly a callback. Include optional code to use the new
|
||||
GtkFileChooser.
|
||||
(image_cleared_cb): Ditto. Rename to image_cleared.
|
||||
(file_chooser_response): Optional response handling for GtkFileChooser.
|
||||
(image_clicked): Include optional code to use the new GtkFileChooser.
|
||||
Move common strings to variables. For GtkFileSelection, swap callback
|
||||
parameters for the modified image_selected () and image_cleared ().
|
||||
|
||||
2004-08-19 Chris Toshok <toshok@ximian.com>
|
||||
|
||||
[ likely fixes #61500 ]
|
||||
|
||||
@ -2447,12 +2447,17 @@ categories_clicked (GtkWidget *button, EContactEditor *editor)
|
||||
}
|
||||
|
||||
static void
|
||||
image_selected_cb (GtkWidget *widget, EContactEditor *editor)
|
||||
image_selected (EContactEditor *editor)
|
||||
{
|
||||
const gchar *file_name;
|
||||
GtkWidget *image_chooser;
|
||||
gchar *file_name;
|
||||
GtkWidget *image_chooser;
|
||||
|
||||
#ifdef USE_GTKFILECHOOSER
|
||||
file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (editor->file_selector));
|
||||
#else
|
||||
file_name = (gchar *) gtk_file_selection_get_filename (GTK_FILE_SELECTION (editor->file_selector));
|
||||
#endif
|
||||
|
||||
file_name = gtk_file_selection_get_filename (GTK_FILE_SELECTION (editor->file_selector));
|
||||
if (!file_name)
|
||||
return;
|
||||
|
||||
@ -2467,7 +2472,7 @@ image_selected_cb (GtkWidget *widget, EContactEditor *editor)
|
||||
}
|
||||
|
||||
static void
|
||||
image_cleared_cb (GtkWidget *widget, EContactEditor *editor)
|
||||
image_cleared (EContactEditor *editor)
|
||||
{
|
||||
GtkWidget *image_chooser;
|
||||
gchar *file_name;
|
||||
@ -2486,6 +2491,21 @@ image_cleared_cb (GtkWidget *widget, EContactEditor *editor)
|
||||
object_changed (G_OBJECT (image_chooser), editor);
|
||||
}
|
||||
|
||||
#ifdef USE_GTKFILECHOOSER
|
||||
|
||||
static void
|
||||
file_chooser_response (GtkWidget *widget, gint response, EContactEditor *editor)
|
||||
{
|
||||
if (response == GTK_RESPONSE_ACCEPT)
|
||||
image_selected (editor);
|
||||
else if (response == GTK_RESPONSE_NO)
|
||||
image_cleared (editor);
|
||||
|
||||
gtk_widget_hide (editor->file_selector);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static gboolean
|
||||
file_selector_deleted (GtkWidget *widget)
|
||||
{
|
||||
@ -2498,23 +2518,40 @@ image_clicked (GtkWidget *button, EContactEditor *editor)
|
||||
{
|
||||
GtkWidget *clear_button;
|
||||
GtkWidget *dialog;
|
||||
const gchar *title = _("Please select an image for this contact");
|
||||
const gchar *no_image = _("No image");
|
||||
|
||||
if (!editor->file_selector) {
|
||||
#ifdef USE_GTKFILECHOOSER
|
||||
editor->file_selector = gtk_file_chooser_dialog_new (title,
|
||||
GTK_WINDOW (editor->app),
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
|
||||
no_image, GTK_RESPONSE_NO,
|
||||
NULL);
|
||||
gtk_dialog_set_default_response (GTK_DIALOG (editor->file_selector), GTK_RESPONSE_ACCEPT);
|
||||
|
||||
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (editor->file_selector), g_get_home_dir ());
|
||||
|
||||
g_signal_connect (editor->file_selector, "response",
|
||||
G_CALLBACK (file_chooser_response), editor);
|
||||
#else
|
||||
/* Create the selector */
|
||||
|
||||
editor->file_selector = gtk_file_selection_new (_("Please select an image for this contact"));
|
||||
editor->file_selector = gtk_file_selection_new (title);
|
||||
|
||||
dialog = GTK_FILE_SELECTION (editor->file_selector)->fileop_dialog;
|
||||
|
||||
clear_button = gtk_dialog_add_button (GTK_DIALOG (editor->file_selector), _("No image"), 0);
|
||||
clear_button = gtk_dialog_add_button (GTK_DIALOG (editor->file_selector), no_image, 0);
|
||||
|
||||
g_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (editor->file_selector)->ok_button),
|
||||
"clicked", G_CALLBACK (image_selected_cb), editor);
|
||||
g_signal_connect_swapped (GTK_OBJECT (GTK_FILE_SELECTION (editor->file_selector)->ok_button),
|
||||
"clicked", G_CALLBACK (image_selected), editor);
|
||||
|
||||
g_signal_connect (clear_button,
|
||||
"clicked", G_CALLBACK (image_cleared_cb), editor);
|
||||
g_signal_connect_swapped (clear_button,
|
||||
"clicked", G_CALLBACK (image_cleared), editor);
|
||||
|
||||
/* Ensure that the dialog box is hidden when the user clicks a button */
|
||||
/* Ensure that the dialog box gets hidden when the user clicks a button */
|
||||
|
||||
g_signal_connect_swapped (GTK_OBJECT (GTK_FILE_SELECTION (editor->file_selector)->ok_button),
|
||||
"clicked", G_CALLBACK (gtk_widget_hide), editor->file_selector);
|
||||
@ -2524,6 +2561,7 @@ image_clicked (GtkWidget *button, EContactEditor *editor)
|
||||
|
||||
g_signal_connect_swapped (clear_button,
|
||||
"clicked", G_CALLBACK (gtk_widget_hide), editor->file_selector);
|
||||
#endif
|
||||
|
||||
g_signal_connect_after (editor->file_selector,
|
||||
"delete-event", G_CALLBACK (file_selector_deleted),
|
||||
|
||||
Reference in New Issue
Block a user