diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2013-05-23 07:09:52 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2013-05-23 07:09:52 +0000 |
commit | d5912ac77825a72104950402c55ec1e9d003e09a (patch) | |
tree | 7059a7b7877163b17c26567b15d9294b50b2aa5c /src | |
parent | a3484d5c29988bd7af037fc59a9950ffebf8a053 (diff) |
filesel: save selected file type.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@3259 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r-- | src/filesel.c | 49 | ||||
-rw-r--r-- | src/messageview.c | 4 | ||||
-rw-r--r-- | src/summaryview.c | 4 |
3 files changed, 43 insertions, 14 deletions
diff --git a/src/filesel.c b/src/filesel.c index 12a93cb4..362c9fae 100644 --- a/src/filesel.c +++ b/src/filesel.c @@ -58,6 +58,9 @@ static void filesel_save_expander_set_expanded (GtkWidget *dialog, gboolean expanded); static gboolean filesel_save_expander_get_expanded (GtkWidget *dialog); +static gchar *filesel_get_filename_with_ext (const gchar *filename, + const gchar *ext); + static void filesel_combo_changed_cb (GtkComboBox *combo_box, gpointer data); @@ -221,11 +224,22 @@ static GSList *filesel_select_file_full(const gchar *title, const gchar *file, gtk_widget_show_all(hbox); gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER(dialog), hbox); + if (default_type < 0 || default_type >= i) + default_type = 0; gtk_combo_box_set_active(GTK_COMBO_BOX(combo), default_type); - g_object_set_data(G_OBJECT(combo), "types", types); g_signal_connect(GTK_COMBO_BOX(combo), "changed", G_CALLBACK(filesel_combo_changed_cb), dialog); + + if (file) { + gchar *newfile; + + newfile = filesel_get_filename_with_ext + (file, types[default_type].ext); + gtk_file_chooser_set_current_name + (GTK_FILE_CHOOSER(dialog), newfile); + g_free(newfile); + } } gtk_widget_show(dialog); @@ -423,30 +437,41 @@ static gboolean filesel_save_expander_get_expanded(GtkWidget *dialog) return FALSE; } +static gchar *filesel_get_filename_with_ext(const gchar *filename, const gchar *ext) +{ + gchar *base; + gchar *new_filename; + gchar *p; + + base = g_path_get_basename(filename); + p = strrchr(base, '.'); + if (p) + *p = '\0'; + new_filename = g_strconcat(base, ".", ext, NULL); + debug_print("new_filename: %s\n", new_filename); + g_free(base); + + return new_filename; +} + static void filesel_combo_changed_cb(GtkComboBox *combo_box, gpointer data) { GtkFileChooser *chooser = data; gint active; gchar *filename; - gchar *base; gchar *new_filename; - gchar *p; FileselFileType *types; active = gtk_combo_box_get_active(combo_box); filename = gtk_file_chooser_get_filename(chooser); + if (!filename) + return; types = g_object_get_data(G_OBJECT(combo_box), "types"); - g_print("active: %d filename: %s\n", active, filename); - g_print("type ext: %s\n", types[active].ext); - base = g_path_get_basename(filename); - p = strrchr(base, '.'); - if (p) - *p = '\0'; - new_filename = g_strconcat(base, ".", types[active].ext, NULL); - g_print("new_filename: %s\n", new_filename); + debug_print("active: %d filename: %s\n", active, filename); + debug_print("type ext: %s\n", types[active].ext); + new_filename = filesel_get_filename_with_ext(filename, types[active].ext); gtk_file_chooser_set_current_name(chooser, new_filename); g_free(new_filename); - g_free(base); g_free(filename); } diff --git a/src/messageview.c b/src/messageview.c index d5428d94..782bc809 100644 --- a/src/messageview.c +++ b/src/messageview.c @@ -934,7 +934,7 @@ void messageview_save_as(MessageView *messageview) types[1].ext = "txt"; types[2].type = _("Text (UTF-8)"); types[2].ext = "txt"; - dest = filesel_save_as_type(filename, types, 0, &selected_type); + dest = filesel_save_as_type(filename, types, prefs_common.save_file_type, &selected_type); g_free(filename); if (!dest) @@ -962,6 +962,8 @@ void messageview_save_as(MessageView *messageview) } g_free(dest); + + prefs_common.save_file_type = selected_type; } static gint messageview_delete_cb(GtkWidget *widget, GdkEventAny *event, diff --git a/src/summaryview.c b/src/summaryview.c index d9c93019..dc2fb50b 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -3919,7 +3919,7 @@ void summary_save_as(SummaryView *summaryview) types[2].type = _("Text (UTF-8)"); types[2].ext = "txt"; - dest = filesel_save_as_type(filename, types, 0, &selected_type); + dest = filesel_save_as_type(filename, types, prefs_common.save_file_type, &selected_type); g_free(filename); if (!dest) @@ -3949,6 +3949,8 @@ void summary_save_as(SummaryView *summaryview) } g_free(dest); + + prefs_common.save_file_type = selected_type; } void summary_print(SummaryView *summaryview) |