diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-02-25 08:08:49 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-02-25 08:08:49 +0000 |
commit | 19a51bbe411d98970bcebcec1e559d60b02899b0 (patch) | |
tree | b5bf6838fa018a4bf6029c9bc0816769fc765f0e | |
parent | 3bc07b606590d43c4e84cc0182941d30f8c54e67 (diff) |
replaced GtkFileSelection with GtkFileChooserDialog.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@128 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | ChangeLog.ja | 12 | ||||
-rw-r--r-- | src/compose.c | 14 | ||||
-rw-r--r-- | src/export.c | 7 | ||||
-rw-r--r-- | src/filesel.c | 159 | ||||
-rw-r--r-- | src/filesel.h | 9 | ||||
-rw-r--r-- | src/import.c | 7 | ||||
-rw-r--r-- | src/messageview.c | 13 | ||||
-rw-r--r-- | src/mimeview.c | 12 | ||||
-rw-r--r-- | src/summaryview.c | 13 |
10 files changed, 124 insertions, 134 deletions
@@ -1,3 +1,15 @@ +2005-02-25 + + * src/compose.c + src/messageview.c + src/mimeview.c + src/export.c + src/summaryview.c + src/import.c + src/filesel.[ch]: replaced GtkFileSelection with + GtkFileChooserDialog. + Added filesel_save_as(). + 2005-02-24 * src/alertpanel.c: modified its design to fit other GTK2 apps. diff --git a/ChangeLog.ja b/ChangeLog.ja index 74e9f30b..8ea7471e 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,3 +1,15 @@ +2005-02-25 + + * src/compose.c + src/messageview.c + src/mimeview.c + src/export.c + src/summaryview.c + src/import.c + src/filesel.[ch]: GtkFileSelection を GtkFileChooserDialog で + 置き換えた。 + filesel_save_as() を追加。 + 2005-02-24 * src/alertpanel.c: 他の GTK2 アプリに合うようにデザインを修正。 diff --git a/src/compose.c b/src/compose.c index 15dca3ad..2e160099 100644 --- a/src/compose.c +++ b/src/compose.c @@ -5246,28 +5246,34 @@ static void compose_draft_cb(gpointer data, guint action, GtkWidget *widget) static void compose_attach_cb(gpointer data, guint action, GtkWidget *widget) { Compose *compose = (Compose *)data; - const gchar *file; + gchar *file; gchar *utf8_filename; - file = filesel_select_file(_("Select file"), NULL); + file = filesel_select_file(_("Select file"), NULL, + GTK_FILE_CHOOSER_ACTION_OPEN); if (file && *file) { utf8_filename = conv_filename_to_utf8(file); compose_attach_append(compose, file, utf8_filename, NULL); g_free(utf8_filename); } + + g_free(file); } static void compose_insert_file_cb(gpointer data, guint action, GtkWidget *widget) { Compose *compose = (Compose *)data; - const gchar *file; + gchar *file; - file = filesel_select_file(_("Select file"), NULL); + file = filesel_select_file(_("Select file"), NULL, + GTK_FILE_CHOOSER_ACTION_OPEN); if (file && *file) compose_insert_file(compose, file); + + g_free(file); } static void compose_insert_sig_cb(gpointer data, guint action, diff --git a/src/export.c b/src/export.c index ee5d06b8..f1de66a9 100644 --- a/src/export.c +++ b/src/export.c @@ -225,10 +225,11 @@ static void export_cancel_cb(GtkWidget *widget, gpointer data) static void export_filesel_cb(GtkWidget *widget, gpointer data) { - const gchar *filename; + gchar *filename; gchar *utf8_filename; - filename = filesel_select_file(_("Select exporting file"), NULL); + filename = filesel_select_file(_("Select exporting file"), NULL, + GTK_FILE_CHOOSER_ACTION_SAVE); if (!filename) return; utf8_filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); @@ -238,6 +239,8 @@ static void export_filesel_cb(GtkWidget *widget, gpointer data) } gtk_entry_set_text(GTK_ENTRY(file_entry), utf8_filename); g_free(utf8_filename); + + g_free(filename); } static void export_srcsel_cb(GtkWidget *widget, gpointer data) diff --git a/src/filesel.c b/src/filesel.c index f885eac2..eb11a12e 100644 --- a/src/filesel.c +++ b/src/filesel.c @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2003 Hiroyuki Yamamoto + * Copyright (C) 1999-2005 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,133 +18,98 @@ */ #include <glib.h> +#include <glib/gi18n.h> #include <gdk/gdkkeysyms.h> -#include <gtk/gtkwidget.h> -#include <gtk/gtkfilesel.h> -#include <gtk/gtkentry.h> -#include <gtk/gtkmain.h> -#include <gtk/gtksignal.h> +#include <gtk/gtkfilechooserdialog.h> +#include <gtk/gtkstock.h> #include "main.h" #include "filesel.h" #include "manage_window.h" -#include "gtkutils.h" -#include "codeconv.h" +#include "alertpanel.h" +#include "utils.h" -static GtkWidget *filesel; -static gboolean filesel_ack; -static gboolean filesel_fin; +static GtkWidget *filesel_create(const gchar *title, + GtkFileChooserAction action); -static void filesel_create(const gchar *title); -static void filesel_ok_cb(GtkWidget *widget, gpointer data); -static void filesel_cancel_cb(GtkWidget *widget, gpointer data); -static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data); -static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data); - -gchar *filesel_select_file(const gchar *title, const gchar *file) +gchar *filesel_select_file(const gchar *title, const gchar *file, + GtkFileChooserAction action) { - static gchar *filename = NULL; static gchar *cwd = NULL; + GtkWidget *dialog; + gchar *filename = NULL; - filesel_create(title); - - manage_window_set_transient(GTK_WINDOW(filesel)); + dialog = filesel_create(title, action); - if (filename) { - g_free(filename); - filename = NULL; - } + manage_window_set_transient(GTK_WINDOW(dialog)); if (!cwd) - cwd = g_strconcat(startup_dir, G_DIR_SEPARATOR_S, NULL); - - gtk_file_selection_set_filename(GTK_FILE_SELECTION(filesel), cwd); - - if (file) { - gchar *fs_filename; - - fs_filename = conv_filename_from_utf8(file); - gtk_file_selection_set_filename(GTK_FILE_SELECTION(filesel), - fs_filename); - gtk_editable_select_region - (GTK_EDITABLE(GTK_FILE_SELECTION(filesel)->selection_entry), - 0, -1); - g_free(fs_filename); - } + cwd = g_strdup(startup_dir); - gtk_widget_show(filesel); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), cwd); + if (file) + gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), + file); - filesel_ack = filesel_fin = FALSE; + gtk_widget_show(dialog); - while (filesel_fin == FALSE) - gtk_main_iteration(); - - if (filesel_ack) { - const gchar *str; - - str = gtk_file_selection_get_filename - (GTK_FILE_SELECTION(filesel)); - if (str && str[0] != '\0') { + if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { + filename = gtk_file_chooser_get_filename + (GTK_FILE_CHOOSER(dialog)); + if (filename) { gchar *dir; - filename = g_strdup(str); - dir = g_dirname(str); + dir = g_dirname(filename); g_free(cwd); - cwd = g_strconcat(dir, G_DIR_SEPARATOR_S, NULL); - g_free(dir); + cwd = dir; } } - manage_window_focus_out(filesel, NULL, NULL); - gtk_widget_destroy(filesel); - GTK_EVENTS_FLUSH(); + manage_window_focus_out(dialog, NULL, NULL); + gtk_widget_destroy(dialog); return filename; } -static void filesel_create(const gchar *title) +gchar *filesel_save_as(const gchar *file) { - filesel = gtk_file_selection_new(title); - gtk_window_set_position(GTK_WINDOW(filesel), GTK_WIN_POS_CENTER); - gtk_window_set_modal(GTK_WINDOW(filesel), TRUE); - gtk_window_set_wmclass - (GTK_WINDOW(filesel), "file_selection", "Sylpheed"); - - g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), - "clicked", G_CALLBACK(filesel_ok_cb), - NULL); - g_signal_connect - (G_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button), - "clicked", G_CALLBACK(filesel_cancel_cb), - NULL); - g_signal_connect(G_OBJECT(filesel), "delete_event", - G_CALLBACK(delete_event), NULL); - g_signal_connect(G_OBJECT(filesel), "key_press_event", - G_CALLBACK(key_pressed), NULL); - MANAGE_WINDOW_SIGNALS_CONNECT(filesel); -} + gchar *filename; -static void filesel_ok_cb(GtkWidget *widget, gpointer data) -{ - filesel_ack = TRUE; - filesel_fin = TRUE; -} + filename = filesel_select_file(_("Save as"), file, + GTK_FILE_CHOOSER_ACTION_SAVE); -static void filesel_cancel_cb(GtkWidget *widget, gpointer data) -{ - filesel_ack = FALSE; - filesel_fin = TRUE; -} + if (filename && is_file_exist(filename)) { + AlertValue aval; -static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data) -{ - filesel_cancel_cb(NULL, NULL); - return TRUE; + aval = alertpanel(_("Overwrite"), + _("Overwrite existing file?"), + GTK_STOCK_OK, GTK_STOCK_CANCEL, NULL); + if (G_ALERTDEFAULT != aval) { + g_free(filename); + filename = NULL; + } + } + + return filename; } -static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data) +static GtkWidget *filesel_create(const gchar *title, + GtkFileChooserAction action) { - if (event && event->keyval == GDK_Escape) - filesel_cancel_cb(NULL, NULL); - return FALSE; + GtkWidget *dialog; + + dialog = gtk_file_chooser_dialog_new + (title, NULL, action, + action == GTK_FILE_CHOOSER_ACTION_SAVE ? GTK_STOCK_SAVE + : GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + NULL); + gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); + gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); + gtk_window_set_wmclass + (GTK_WINDOW(dialog), "file_selection", "Sylpheed"); + + MANAGE_WINDOW_SIGNALS_CONNECT(dialog); + + return dialog; } diff --git a/src/filesel.h b/src/filesel.h index e4018585..098e31c1 100644 --- a/src/filesel.h +++ b/src/filesel.h @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999,2000 Hiroyuki Yamamoto + * Copyright (C) 1999-2005 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,7 +21,12 @@ #define __FILESEL_H__ #include <glib.h> +#include <gtk/gtkfilechooser.h> -gchar *filesel_select_file(const gchar *title, const gchar *file); +gchar *filesel_select_file (const gchar *title, + const gchar *file, + GtkFileChooserAction action); + +gchar *filesel_save_as (const gchar *file); #endif /* __FILESEL_H__ */ diff --git a/src/import.c b/src/import.c index c11ef21c..378847e0 100644 --- a/src/import.c +++ b/src/import.c @@ -230,10 +230,11 @@ static void import_cancel_cb(GtkWidget *widget, gpointer data) static void import_filesel_cb(GtkWidget *widget, gpointer data) { - const gchar *filename; + gchar *filename; gchar *utf8_filename; - filename = filesel_select_file(_("Select importing file"), NULL); + filename = filesel_select_file(_("Select importing file"), NULL, + GTK_FILE_CHOOSER_ACTION_OPEN); if (!filename) return; utf8_filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); @@ -243,6 +244,8 @@ static void import_filesel_cb(GtkWidget *widget, gpointer data) } gtk_entry_set_text(GTK_ENTRY(file_entry), utf8_filename); g_free(utf8_filename); + + g_free(filename); } static void import_destsel_cb(GtkWidget *widget, gpointer data) diff --git a/src/messageview.c b/src/messageview.c index dd0b3788..02fd543a 100644 --- a/src/messageview.c +++ b/src/messageview.c @@ -613,16 +613,9 @@ void messageview_save_as(MessageView *messageview) Xstrdup_a(filename, msginfo->subject, return); subst_for_filename(filename); } - dest = filesel_select_file(_("Save as"), filename); - if (!dest) return; - if (is_file_exist(dest)) { - AlertValue aval; - aval = alertpanel(_("Overwrite"), - _("Overwrite existing file?"), - GTK_STOCK_OK, GTK_STOCK_CANCEL, NULL); - if (G_ALERTDEFAULT != aval) return; - } + dest = filesel_save_as(filename); + if (!dest) return; src = procmsg_get_message_file(msginfo); if (copy_file(src, dest, TRUE) < 0) { @@ -630,6 +623,8 @@ void messageview_save_as(MessageView *messageview) g_basename(dest)); } g_free(src); + + g_free(dest); } static void messageview_destroy_cb(GtkWidget *widget, MessageView *messageview) diff --git a/src/mimeview.c b/src/mimeview.c index 517778dc..8f1178dd 100644 --- a/src/mimeview.c +++ b/src/mimeview.c @@ -801,20 +801,14 @@ static void mimeview_save_as(MimeView *mimeview) subst_for_filename(defname); } - filename = filesel_select_file(_("Save as"), defname); + filename = filesel_save_as(defname); if (!filename) return; - if (is_file_exist(filename)) { - AlertValue aval; - - aval = alertpanel(_("Overwrite"), - _("Overwrite existing file?"), - GTK_STOCK_OK, GTK_STOCK_CANCEL, NULL); - if (G_ALERTDEFAULT != aval) return; - } if (procmime_get_part(filename, mimeview->file, partinfo) < 0) alertpanel_error (_("Can't save the part of multipart message.")); + + g_free(filename); } static void mimeview_launch(MimeView *mimeview) diff --git a/src/summaryview.c b/src/summaryview.c index aac3bf61..92a75593 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -2709,16 +2709,9 @@ void summary_save_as(SummaryView *summaryview) Xstrdup_a(filename, msginfo->subject, return); subst_for_filename(filename); } - dest = filesel_select_file(_("Save as"), filename); - if (!dest) return; - if (is_file_exist(dest)) { - AlertValue aval; - aval = alertpanel(_("Overwrite"), - _("Overwrite existing file?"), - GTK_STOCK_OK, GTK_STOCK_CANCEL, NULL); - if (G_ALERTDEFAULT != aval) return; - } + dest = filesel_save_as(filename); + if (!dest) return; src = procmsg_get_message_file(msginfo); if (copy_file(src, dest, TRUE) < 0) { @@ -2730,6 +2723,8 @@ void summary_save_as(SummaryView *summaryview) g_free(utf8_dest); } g_free(src); + + g_free(dest); } void summary_print(SummaryView *summaryview) |