aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2013-05-23 07:09:52 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2013-05-23 07:09:52 +0000
commitd5912ac77825a72104950402c55ec1e9d003e09a (patch)
tree7059a7b7877163b17c26567b15d9294b50b2aa5c
parenta3484d5c29988bd7af037fc59a9950ffebf8a053 (diff)
filesel: save selected file type.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@3259 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r--ChangeLog8
-rw-r--r--libsylph/prefs_common.c1
-rw-r--r--libsylph/prefs_common.h2
-rw-r--r--src/filesel.c49
-rw-r--r--src/messageview.c4
-rw-r--r--src/summaryview.c4
6 files changed, 54 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index dd578203..520aeb7e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-05-23
+
+ * libsylph/prefs_common.[ch]
+ src/messageview.c
+ src/filesel.c
+ src/summaryview.c: save selected file type.
+
+
2013-05-21
* src/filesel.[ch]
diff --git a/libsylph/prefs_common.c b/libsylph/prefs_common.c
index 532d1c6d..d1917818 100644
--- a/libsylph/prefs_common.c
+++ b/libsylph/prefs_common.c
@@ -515,6 +515,7 @@ static PrefParam param[] = {
{"filesel_prev_open_dir", NULL, &prefs_common.prev_open_dir, P_STRING},
{"filesel_prev_save_dir", NULL, &prefs_common.prev_save_dir, P_STRING},
{"filesel_prev_folder_dir", NULL, &prefs_common.prev_folder_dir, P_STRING},
+ {"filesel_save_file_type", "0", &prefs_common.save_file_type, P_INT},
{NULL, NULL, NULL, P_OTHER}
};
diff --git a/libsylph/prefs_common.h b/libsylph/prefs_common.h
index e94bc540..3fafae52 100644
--- a/libsylph/prefs_common.h
+++ b/libsylph/prefs_common.h
@@ -347,6 +347,8 @@ struct _PrefsCommon
gboolean nofilter_junk_sender_in_book; /* Junk Mail */
gboolean alt_prefer_html; /* Message */
+
+ gint save_file_type;
};
extern PrefsCommon prefs_common;
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)